本博文主要交流設(shè)計思路,在本博客已給出相關(guān)博文約110篇,希望對初學(xué)者有用。注意這里只是拋磚引玉,切莫認為參考這就可以完成商用IP設(shè)計。

(a)請求狀態(tài)機
當 RoCE v2 發(fā)送模塊檢測到發(fā)送隊列非空時,則從發(fā)送隊列中讀取一個發(fā)送隊列條目,并判斷請求類型。根據(jù)不同的請求類型和請求長度進入不同的包生成流程,這一過程由請求狀態(tài)機實現(xiàn)。請求狀態(tài)機的狀態(tài)轉(zhuǎn)移圖如圖 1 所示,對于各個狀態(tài)的詳細說明如下。

圖1 請求狀態(tài)機狀態(tài)轉(zhuǎn)移圖
IDLE:空閑狀態(tài),系統(tǒng)復(fù)位后請求狀態(tài)機將進入 IDLE 狀態(tài)。當檢測到發(fā)送隊列非空時,從發(fā)送隊列中讀取出一個發(fā)送隊列條目并分析其請求類型,并根據(jù)不同的請求類型跳轉(zhuǎn)到不同的后續(xù)狀態(tài)。對于 SEND 指令,跳轉(zhuǎn)至 SEND 狀態(tài);對于 READ指令,跳轉(zhuǎn)至 READ 狀態(tài);對于 WRITE 指令,跳轉(zhuǎn)至 WRITE_HEAD 狀態(tài)。如果請求類型不合規(guī),則保持在 IDLE 狀態(tài)并返回錯誤信息。如果發(fā)送隊列為空,則保持在IDLE 狀態(tài)等待指令。
SEND:SEND 指令發(fā)送狀態(tài)。在該狀態(tài)下將調(diào)用 SEND 單元根據(jù)系統(tǒng)中提前預(yù)設(shè)好的信息發(fā)送 SEND 數(shù)據(jù)包,數(shù)據(jù)包內(nèi)容包括本機 IP 地址、本機 MAC 地址、本機內(nèi)存起始地址、本機內(nèi)存大小和本機遠程訪問密鑰。發(fā)送完畢后跳轉(zhuǎn)至 DONE 狀態(tài)。
READ:READ 指令發(fā)送狀態(tài)。在該狀態(tài)下狀態(tài)機將調(diào)用 READ 單元根據(jù)用戶指令中的請求遠程地址、請求數(shù)據(jù)長度及遠程主機訪問密鑰來組裝 READ 包頭部,READ 請求包中并不攜帶數(shù)據(jù)信息。發(fā)送完畢后跳轉(zhuǎn)至 DONE 狀態(tài)。
WRITE_HEAD:WRITE 指令頭發(fā)送狀態(tài)。在該狀態(tài)下狀態(tài)機將調(diào)用 WRITE 單元根據(jù)用戶指令中的遠程請求地址、請求數(shù)據(jù)長度及遠程主機訪問密鑰來組裝WRITE 包頭部。同時將請求數(shù)據(jù)長度與以太網(wǎng)單數(shù)據(jù)幀最大長度進行比較,如果請求長度超過單數(shù)據(jù)幀最大程度,則 WRITE 包頭部中的操作類型被置為 FIRST/MIDDLE/LAST;反之 WRITE 包頭部中的操作類型被置 ONLY。同時將用戶指令中
的本地數(shù)據(jù)起始地址和請求數(shù)據(jù)長度通知給 DMA 控制器,而后跳轉(zhuǎn)至 WRITE_DATA狀態(tài)。
WRITE_DATA:WRITE 指令數(shù)據(jù)發(fā)送狀態(tài)。在該狀態(tài)下將持續(xù)等待 DMA 控制器返回用戶需要發(fā)送的數(shù)據(jù),在數(shù)據(jù)到來后,將數(shù)據(jù)組裝進 WRITE 數(shù)據(jù)包中,直到達到以太網(wǎng)單數(shù)據(jù)幀最大長度。而后對數(shù)據(jù)長度進行判斷。如果數(shù)據(jù)已發(fā)送完畢,則跳轉(zhuǎn)至 DONE 狀態(tài);如果仍有數(shù)據(jù)未發(fā)送完畢,則跳轉(zhuǎn)回 WRITE_HEAD 狀態(tài),重復(fù) WRITE 數(shù)據(jù)包發(fā)送流程。若請求數(shù)據(jù)超時,則返回 IDLE 狀態(tài)并返回異常完成條目。
DONE:請求完成狀態(tài)。該狀態(tài)下將發(fā)送寄存器中剩余的最后一幀數(shù)據(jù)并生成指令完成信號。在一個時鐘周期后回到 IDLE 狀態(tài)。
B站已給出相關(guān)性能的視頻,如想進一步了解,請搜索B站用戶:專注與守望
https://www.bilibili.com/video/BV1mPV5eCE8z/?spm_id_from=333.337.search-card.all.click&vd_source=c355545d27a44fe96188b7caefeda6e7
審核編輯 黃宇
-
CMAC
+關(guān)注
關(guān)注
0文章
11瀏覽量
11370 -
RDMA
+關(guān)注
關(guān)注
0文章
102瀏覽量
9669
發(fā)布評論請先 登錄
RDMA設(shè)計46:RoCE v2原語功能:單邊語義
RDMA設(shè)計44:RoCE v2原語功能驗證與分析
RDMA設(shè)計37:RoCE v2 子系統(tǒng)模型設(shè)計
RDMA設(shè)計33:RoCE v2 接收模塊
RDMA設(shè)計32:RoCE v2 發(fā)送模塊4
RDMA設(shè)計29:RoCE v2 發(fā)送及接收模塊設(shè)計2
RDMA設(shè)計28:RoCE v2 發(fā)送及接收模塊設(shè)計
RDMA設(shè)計20:RoCE v2 發(fā)送及接收模塊設(shè)計2
RDMA設(shè)計19:RoCE v2 發(fā)送及接收模塊設(shè)計
RDMA設(shè)計5:RoCE V2 IP架構(gòu)
RDMA over RoCE V2設(shè)計2:ip 整體設(shè)計考慮
RDMA over RoCE V2設(shè)計2:ip 整體框架設(shè)計考慮
RDMA over RoCE V2設(shè)計1:為什么要設(shè)計它?
RDMA設(shè)計30:RoCE v2 發(fā)送模塊2
評論