流程控制模塊的框圖如圖1所示,該模塊主要由寄存器、讀狀態(tài)機、寫狀態(tài)機和命令生成模塊組成。
圖1 流程控制模塊框圖
流程控制模塊的工作首先從配置模塊中的寄存器組開始,由于只需要配置四個寄存器,因此使用資源占用較小的AXI_Lite總線接口來實現(xiàn)。表1所示為流程控制模塊內寄存器的類型與功能描述等信息。
表1中的操作碼寄存器(OPCODE)用于表示命令類型,流程控制模塊通過操作碼寄存器不同的值來組裝相應的NVMe命令,本設計主要實現(xiàn)了NVMe協(xié)議中常用的識別、讀、寫、SMART、FLUSH以及關機命令。數據地址寄存器(ADDR)用于指定要讀取的數據塊的起始地址。數據塊大小寄存器(SIZE)用于指定要讀取的數據塊的大小。狀態(tài)寄存器(STATUS)為只讀狀態(tài),用來指示當前控制器的狀態(tài)信息。
為了提升系統(tǒng)性能,將讀寫劃分為兩個傳輸通道,每個通道可獨立工作。因此需要通過兩個狀態(tài)機來實現(xiàn)了讀寫控制。同時,采用乒乓操作的方式進行讀寫,通過A和B兩個緩存區(qū)之間的切換來使輸入輸出數據可以無間斷地進行傳輸,并減小NVMe命令執(zhí)行過程中產生的延遲。
讀狀態(tài)機跳轉圖如圖2所示。
圖2 狀態(tài)機跳轉圖
寫狀態(tài)機跳轉圖如圖3所示。
圖3 寫狀態(tài)機跳轉圖
各狀態(tài)說明如下:
IDLE:空閑狀態(tài),該狀態(tài)為該模塊上電后的初始化狀態(tài),在該狀態(tài)下等待接口轉換模塊輸入的empty信號為低電平時,表示有數據輸入,狀態(tài)跳轉至SW_A狀態(tài),否則維持在IDLE狀態(tài)。
SW_A:發(fā)送A區(qū)域寫命令狀態(tài),該狀態(tài)下等待緩存區(qū)域A存滿后,控制命令生成模塊組裝區(qū)域A的NVMe寫命令并通過AXI4_Stream接口發(fā)送給NVMe Host控制器。發(fā)送完成后若b_busy信號有效且empty信號為低電平時,狀態(tài)跳轉至WAIT,若b_busy信號為低電平且empty信號為低電平時,狀態(tài)跳轉至SC_B狀態(tài),此外,在設計中還添加了超時檢測機制,通過計數器實現(xiàn),當長時間無數據輸入時,則控制命令生成模塊組裝相應大小的NVMe寫命令,發(fā)送至NVMe Host控制器。
SW_B:發(fā)送B區(qū)域寫命令狀態(tài),該狀態(tài)下根據接口轉換模塊輸入的轉換數據量信息生成相應的NVMe寫命令并通過AXI4_Stream接口發(fā)送給NVMe Host控制器。發(fā)送完成后若a_busy信號有效且empty信號為低電平時,狀態(tài)跳轉至WAIT,若a_busy信號為低電平且empty信號為低電平時,狀態(tài)跳轉至SC_A狀態(tài),該狀態(tài)下同樣使用超時檢測。
WAIT:等待狀態(tài),在該狀態(tài)下等待NVMe Host控制器返回done信號,表示命令執(zhí)行完畢。若上一個狀態(tài)為SW_A,檢測到done信號有效后,且buf_cnt的值不為0,則狀態(tài)跳轉至SW_B。若上一個狀態(tài)為SW_B,檢測到done信號有效后,且buf_cnt的值不為0,則狀態(tài)跳轉至SW_A。否則狀態(tài)跳轉至IDLE。
對它感興趣,想看視頻搜B站用戶名: z專注與守望
審核編輯 黃宇
-
控制器
+關注
關注
114文章
17164瀏覽量
184830 -
SSD
+關注
關注
21文章
2993瀏覽量
119759 -
存儲系統(tǒng)
+關注
關注
2文章
423瀏覽量
41414
發(fā)布評論請先 登錄
NVME控制器之隊列管理模塊
如何選擇適合您的過程控制器?

27MHz HCSL 差分晶體振蕩器在數據中心網絡存儲系統(tǒng)中的應用方案
高速SSD存儲系統(tǒng)中數據緩存控制器整體頂層設計

評論