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

27MHz HCSL 差分晶體振蕩器在數(shù)據(jù)中心網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中的應(yīng)用方案
高速SSD存儲(chǔ)+傳輸系統(tǒng)方案設(shè)計(jì)

高速SSD存儲(chǔ)系統(tǒng)中數(shù)據(jù)緩存控制器整體頂層設(shè)計(jì)

什么是MPU控制器及其應(yīng)用
如何配置 RAID 5 存儲(chǔ)系統(tǒng)
PLC可編程控制器的簡(jiǎn)介
緩存對(duì)大數(shù)據(jù)處理的影響分析
什么是緩存(Cache)及其作用
固態(tài)控制器忙狀態(tài)時(shí)間是什么意思
計(jì)算機(jī)存儲(chǔ)系統(tǒng)的構(gòu)成
SSD控制器的作用、構(gòu)成及功能

評(píng)論