潘旭明,劉嵩巖,齊可心,吳尚儒,陳 婷
(黑龍江大學(xué) 電子工程學(xué)院,黑龍江 哈爾濱 150080)
基于NAND Flash的存儲(chǔ)設(shè)備設(shè)計(jì)與實(shí)現(xiàn)
潘旭明,劉嵩巖,齊可心,吳尚儒,陳 婷
(黑龍江大學(xué) 電子工程學(xué)院,黑龍江 哈爾濱 150080)
Flash是目前最火的存儲(chǔ)介質(zhì),具有傳輸速度快、功耗小、無噪音等優(yōu)點(diǎn)。但用于存儲(chǔ)設(shè)備時(shí)常因片上總線的局限而性能低下。針對(duì)因總線限制Flash性能發(fā)揮的問題,設(shè)計(jì)了一種基于AXI總線的NAND Flash存儲(chǔ)設(shè)備,所設(shè)計(jì)的存儲(chǔ)設(shè)備具有多通道傳輸、流水線操作、ECC校驗(yàn),以及RAID5架構(gòu)存儲(chǔ)等功能。設(shè)計(jì)分析與測(cè)試結(jié)果表明,設(shè)計(jì)的基于NAND Flash存儲(chǔ)系統(tǒng)傳輸速度更快,系統(tǒng)更穩(wěn)定,同時(shí)增強(qiáng)了存儲(chǔ)數(shù)據(jù)的可靠性為NAND Flash存儲(chǔ)設(shè)備的研究提供了一個(gè)新的解決方案。
AXI總線;SSD存儲(chǔ);DMA;NAND Flash
隨著科技的快速發(fā)展,存儲(chǔ)行業(yè)也發(fā)生了很大的變化,固態(tài)硬盤(簡(jiǎn)稱固盤),因其傳輸速度快、無噪音、功耗小等優(yōu)點(diǎn),迅速占領(lǐng)了大量存儲(chǔ)設(shè)備的市場(chǎng),即將成為當(dāng)今主流存儲(chǔ)介質(zhì)的不二人選。固態(tài)硬盤通常具有很快的傳輸速度,但設(shè)計(jì)成存儲(chǔ)設(shè)備時(shí)常因?yàn)槠峡偩€的傳輸限制而發(fā)揮不出應(yīng)有的傳輸性能。搭配怎樣的片上總線能把SSD性能更好地發(fā)揮出來,這已成為設(shè)計(jì)SSD存儲(chǔ)設(shè)備應(yīng)考慮的重要問題。
基于這種情況,人們著手研究SSD的原理與特性以及各類總線的原理和特性,并且在不斷突破創(chuàng)新。目前,此項(xiàng)研究在國(guó)內(nèi)外已經(jīng)取得了很大的成果。文獻(xiàn)[1]中,作者根據(jù)PCIE總線和SSD的特點(diǎn),設(shè)計(jì)出一種基于PCIE的固態(tài)硬盤嵌入式存儲(chǔ)系統(tǒng);文獻(xiàn)[2]中作者將SSD與PCIE總線相結(jié)合,提出了基于PCIE總線的SSD標(biāo)準(zhǔn)化準(zhǔn)則;文獻(xiàn)[3]作者及其團(tuán)隊(duì)將SSD設(shè)備與AHB總線結(jié)合在了一起,并提出一種8通道傳輸機(jī)制來提高其傳輸速度。
設(shè)計(jì)了一款基于AXI總線的SSD存儲(chǔ)模塊,將AXI總線的性能與SSD更好地結(jié)合在了一起,模塊主要由產(chǎn)生并發(fā)送實(shí)驗(yàn)數(shù)據(jù)的下載板和接收數(shù)據(jù)的SSD電子盤2部分組成。
1.1 SSD(NAND Flash)技術(shù)
固態(tài)硬盤是用固態(tài)電子存儲(chǔ)芯片陣列而制成的硬盤。固態(tài)硬盤的存儲(chǔ)介質(zhì)可分為2種,一種是采用閃存(FLASH芯片)作為存儲(chǔ)介質(zhì)[4],另外一種是采用DRAM作為存儲(chǔ)介質(zhì)。基于閃存的固態(tài)硬盤是固態(tài)硬盤的主要類別,其內(nèi)部構(gòu)造十分簡(jiǎn)單,固態(tài)硬盤內(nèi)主體其實(shí)就是一塊有著控制芯片、緩存芯片和用于存儲(chǔ)數(shù)據(jù)閃存芯片的PCB板。SSD相較于傳統(tǒng)的機(jī)械硬盤擁有以下優(yōu)點(diǎn):
① 不用磁頭,快速隨機(jī)讀取,讀延遲極小;
② 無噪音。因?yàn)闆]有機(jī)械馬達(dá)和風(fēng)扇,工作時(shí)噪音值為0 dB;
③ 工作溫度范圍更大。典型的硬盤驅(qū)動(dòng)器只能在5~55℃范圍內(nèi)工作。而大多數(shù)固態(tài)硬盤可在-10~70℃工作,一些工業(yè)級(jí)的固態(tài)硬盤還可在-40~85℃,甚至更大的溫度范圍下工作;
④ 低容量的固態(tài)硬盤比同容量硬盤體積小、重量輕。
因此SSD目前以傳統(tǒng)硬盤無法比擬的優(yōu)勢(shì)逐步蠶食傳統(tǒng)硬盤的市場(chǎng),相信在不久的將來會(huì)代替?zhèn)鹘y(tǒng)硬盤,成為存儲(chǔ)的主流設(shè)備。
1.2 AXI片上總線協(xié)議
隨著多核、多級(jí)內(nèi)存及眾多外設(shè)復(fù)雜化的SOC設(shè)計(jì)需求增大,總線架構(gòu)日益成為系統(tǒng)性能的瓶頸,ARM公司適時(shí)推出了AMBA3.0系列規(guī)范,AXI作為這個(gè)系列新發(fā)布高性能協(xié)議,很快得到了整個(gè)半導(dǎo)體行業(yè)的廣泛認(rèn)可和采用,這是因?yàn)锳XI協(xié)議具備以下技術(shù)優(yōu)勢(shì):
① 單項(xiàng)通道體系;
② 結(jié)構(gòu)獨(dú)立的地址和數(shù)據(jù);
③ 通道支持多項(xiàng)數(shù)據(jù)交換,通過并行執(zhí)行的Burst碎發(fā)操作,極大地提高數(shù)據(jù)吞吐能力;
④ 很強(qiáng)的靈活性。
如圖1所示,AXI協(xié)議有以下幾大特點(diǎn):
① 在整個(gè)AXI單項(xiàng)通道體系中,分了讀寫2類通道,將這2個(gè)實(shí)現(xiàn)機(jī)制不同的操作分開實(shí)現(xiàn),這有利于協(xié)議根據(jù)讀和寫自身的特點(diǎn),來提高數(shù)據(jù)傳輸能力。
② 在讀和寫2個(gè)獨(dú)立的體系中,又細(xì)分了Address Channel、Data Channel和Response Channel。在一般的總線請(qǐng)求中,主設(shè)備要了解從設(shè)備的情況,需要增加讀寫B(tài)usy信號(hào),這種機(jī)制不僅增加了互連線,而且增加了讀寫操作所需要的時(shí)序開銷。在AXI協(xié)議中讀寫的主動(dòng)權(quán)由主機(jī)交給了從機(jī),從機(jī)完全可以根據(jù)自身硬件環(huán)境(例如總線帶寬和時(shí)序等),采取最合理的讀寫實(shí)現(xiàn)方案。
③ AXI協(xié)議能兼容以前的AMBA2、AHB總線協(xié)議,但相比AHB協(xié)議具有更高的數(shù)據(jù)總線帶寬、支持亂序訪問和非對(duì)齊操作等優(yōu)勢(shì)。
圖1 AXI總線讀寫體系結(jié)構(gòu)
本文設(shè)計(jì)的存儲(chǔ)設(shè)備可以分為SSD電子盤和下載板2部分組成。SSD電子盤通過FMC接口接收上位機(jī)發(fā)來的數(shù)據(jù)或命令,并將其存儲(chǔ)到NAND Flash 芯片[4]中,用戶可以通過下載板先將數(shù)據(jù)從Flash芯片中先下載到下載板上,再通過網(wǎng)口將數(shù)據(jù)還原到PC機(jī)中用以處理。系統(tǒng)的整體框圖如圖2所示。
圖2 系統(tǒng)的整體框圖
2.1 SSD電子盤
如圖3所示,SSD電子盤的硬件主要由FPGA形成的4個(gè)cortex-M1軟核及24塊NAND Flash芯片[5]組成,ARM Cortex-M1 處理器是第一個(gè)針對(duì)FPGA 而優(yōu)化的 ARM 處理器。處理系統(tǒng)為4個(gè)核形成的一控三處理架構(gòu),由一個(gè)cortex-M1軟核作為總控制器控制另外3個(gè)cortex-M1軟核形成3條數(shù)據(jù)傳輸通道,輪詢快速地處理由下載板發(fā)到上位機(jī)的數(shù)據(jù),將數(shù)據(jù)快速地通過3條通道,存儲(chǔ)到上位機(jī)上的24塊NAND Flash芯片中,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。
圖3 SSD電子盤實(shí)物圖
2.2 下載板
下載板的處理器為Z-7020芯片[6],Z-7020芯片是Xilinx公司生產(chǎn)的Zynq-7000系列中一款,Zynq-7000系列是首款將ARM cortex-A9硬核與FPGA相結(jié)合的芯片,屬于ARM+FPGA結(jié)構(gòu),如果暫時(shí)沒有用到FPGA的部分,ARM處理器子系統(tǒng)也可以獨(dú)立工作。處理器芯片連接著AXI總線和2片512 M的DDR3芯片,因?yàn)橛羞@2片DDR3的存在,操作系統(tǒng)才可以順暢地運(yùn)行。此外,下載板上還有一個(gè)網(wǎng)口用來接收PC機(jī)的命令和數(shù)據(jù),一個(gè)串口用來調(diào)試和測(cè)試程序,以及一個(gè)FMC接口用來與上位機(jī)相連,實(shí)物如圖4所示。
圖4 下載板實(shí)物圖
下載板運(yùn)行的系統(tǒng)為PetaLinux,PetaLinux操作系統(tǒng)[7]是PetaLogix公司發(fā)布的面向MicroBlaze軟核處理器的嵌入式Linux操作系統(tǒng),作為一種特殊的嵌入式微處理器系統(tǒng),PetaLinux融合了SOC和FPGA各自的優(yōu)點(diǎn),具備軟硬件在系統(tǒng)可編程、可裁剪、可升級(jí)等功能。它擁有專門針對(duì)FPGA片上系統(tǒng)的開發(fā)套件,可以在滿足工程應(yīng)用的同時(shí),極大地縮短產(chǎn)品的開發(fā)周期。
2.3 AXI DMA
AXI總線的DMA(AXI DMA)可分為直接模式和分散/聚合模式[8],本文使用分散/聚合模式的DMA傳輸數(shù)據(jù),分散/聚合模式就是可以把離散的內(nèi)存組成一個(gè)描述符用來傳輸。AXI DMA分為MM2S用來發(fā)送數(shù)據(jù)和S2MM用來接收數(shù)據(jù),以發(fā)送數(shù)據(jù)為例,將第一段內(nèi)存地址放在MM2S_CURDESC寄存器中,最后一段內(nèi)存地址放在MM2S_TAILDESC寄存器中,然后給MM2S_DMACR寄存器的最低位置1,啟動(dòng)DMA,傳輸數(shù)據(jù),接收數(shù)據(jù)時(shí)也是一樣。具體的寄存器描述如表1所示。
表1 AXI總線寄存器地址、名稱及描述
地址偏移量名稱描述00hMM2S_DMACRMM2SDMA控制寄存器04hMM2S_DMASRMM2SDMA狀態(tài)寄存器08hMM2S_CURDESCMM2S當(dāng)前描述符指針寄存器10hMM2S_TAILDESCMM2S結(jié)束描述符指針寄存器2ChSG_CTL分散/聚合模式30hS2MM_DMACRS2MMDMA控制寄存器34hS2MM_DMASRS2MMDMA狀態(tài)寄存器38hS2MM_CURDESCS2MM當(dāng)前描述符指針寄存器40hS2MM_TAILDESCS2MM結(jié)束描述符指針寄存器
基于AXI的SSD存儲(chǔ)設(shè)備軟件主要為:PC端窗口app程序、下載板的AXI DMA驅(qū)動(dòng)程序及上位機(jī)數(shù)據(jù)處理程序。其中AXI DMA驅(qū)動(dòng)最為重要,也是SSD存儲(chǔ)設(shè)備性能的主要程序,本文的研究重心也是下載板AXI DMA驅(qū)動(dòng),AXI DMA程序大體可分為5步,其流程圖如圖5所示。
① DMA通道申請(qǐng)
DMA數(shù)據(jù)的傳輸都是通過通道來完成的,所以驅(qū)動(dòng)的第一步是申請(qǐng)DMA通道[9]。本文使用dma_request_channel函數(shù)來申請(qǐng)DMA通道。通道申請(qǐng)完成后需要提交使用,提交申請(qǐng)的通道使用函數(shù)dmatest_add_slave_channels(chan,rx_chan),函數(shù)的參數(shù)為申請(qǐng)的通道。
② 申請(qǐng)數(shù)據(jù)內(nèi)存及數(shù)據(jù)初始化
當(dāng)申請(qǐng)和提交后,需要申請(qǐng)數(shù)據(jù)內(nèi)存以及初始化傳輸數(shù)據(jù)。申請(qǐng)數(shù)據(jù)空間時(shí)要注意cache一致性問題[10],因?yàn)镈MA傳輸需要的是內(nèi)存的物理地址而CPU給內(nèi)存賦值時(shí)操作的是緩存,CPU賦值后要想數(shù)據(jù)能DMA傳輸需要將cache中的數(shù)據(jù)刷到內(nèi)存中,所以申請(qǐng)的空間最好能是cache一致性空間。本文用dma_alloc_coherent()函數(shù)申請(qǐng)一致性空間[11],空間申請(qǐng)完,需要CPU給空間賦上要傳輸?shù)臄?shù)據(jù)(即數(shù)據(jù)的初始化使用函數(shù))dmatest_init_src()完成。
③ 數(shù)據(jù)描述符的封裝
數(shù)據(jù)初始化完成后,需要將數(shù)據(jù)封裝成用于DMA傳輸?shù)拿枋龇鸞12]。本文使用的是AXI DMA的S/G模式,所以使用device_prep_slave_sg(tx_chan,rx_sg,bd_cnt,DMA_MEM_TO_DEV,flags,NULL)完成描述符的封裝,參數(shù)分別為傳輸通道、傳輸?shù)姆稚?nèi)存、分散內(nèi)存的個(gè)數(shù)、傳輸方向和應(yīng)答標(biāo)志。
④ DMA傳輸
封裝完數(shù)據(jù)描述符后,需要將描述符掛載到通道上用于傳輸[13]。掛載完成后給控制寄存器最低位置1,啟動(dòng)DMA,用dma_async_issue_pending(chan)函數(shù)完成,當(dāng)一個(gè)描述符傳輸完成之后會(huì)產(chǎn)生一個(gè)中斷,并進(jìn)入中斷處理函數(shù),在中斷處理函數(shù)中判斷是否有下一個(gè)描述符需要傳輸,如果有則繼續(xù)傳輸,如果沒有,傳輸結(jié)束。具體流程如圖6所示。
圖6 數(shù)據(jù)傳輸流程圖
⑤ 傳輸完成釋放資源
數(shù)據(jù)傳輸完成后,需要將申請(qǐng)的數(shù)據(jù)空間和傳輸通道釋放掉,分別用kfree(thread->srcs)和dma_release_channel(chan)實(shí)現(xiàn)。
經(jīng)實(shí)驗(yàn)測(cè)試,基于NAND Flash存儲(chǔ)設(shè)備傳輸數(shù)據(jù)的速度最高可達(dá)到230 MB/s。其測(cè)試原理:傳輸?shù)臄?shù)據(jù)量÷傳輸所用的時(shí)間。所以只需要知道傳輸?shù)臄?shù)據(jù)量和傳輸這些數(shù)據(jù)所用的時(shí)間,即可求得設(shè)備的傳輸速度。
本文驅(qū)動(dòng)發(fā)送數(shù)據(jù)的方式是循環(huán)發(fā)送,一次循環(huán)發(fā)送64 KB的數(shù)據(jù),并且發(fā)送結(jié)束時(shí)會(huì)進(jìn)入回調(diào)函數(shù),在程序發(fā)送數(shù)據(jù)前獲取時(shí)間用do_gettimeofday(&tv_start)來實(shí)現(xiàn)[14],所得到的時(shí)間為tv_start。在回調(diào)函數(shù)中加入函數(shù)記錄驅(qū)動(dòng)進(jìn)入回調(diào)函數(shù)的次數(shù)n,隨即循環(huán)發(fā)送數(shù)據(jù),當(dāng)數(shù)據(jù)發(fā)送結(jié)束后,再調(diào)用do_gettimeofday(&tv_end)來獲取發(fā)送數(shù)據(jù)之后的時(shí)間,得到時(shí)間為tv_end,這樣傳輸速度就可用64 K*n/ (tv_end - tv_start)值得到。
將程序編輯成模塊并加載到內(nèi)核中,然后編輯內(nèi)核將生成的內(nèi)核文件image.ub[15]、引導(dǎo)文件boot.bin和系統(tǒng)文件system.dtb拷貝到下載板中。在串口助手的窗口種輸入命令insmod axidmatest.ko來加載驅(qū)動(dòng)模塊,會(huì)得到圖7所示的圖片。
圖7 試驗(yàn)測(cè)試結(jié)果圖
如圖7所示,發(fā)送的開始時(shí)間為356.659 980 s,發(fā)送的結(jié)束時(shí)間為365.974 488 s。Callback為進(jìn)入回調(diào)函數(shù)的次數(shù)為32 768次,如上文所說,循環(huán)發(fā)送數(shù)據(jù),循環(huán)一次發(fā)送64 KB數(shù)據(jù)同時(shí)調(diào)用一次Callback函數(shù),也就是說此次發(fā)送了64*1 024*32 768=2*1 024*1 024*1 024=2 G數(shù)據(jù),發(fā)送時(shí)間約為9 s,所以傳輸速率為2 G / 9 = 227.6 MB/s。
此次設(shè)計(jì)了一款基于NAND Flash的存儲(chǔ)設(shè)備,首先簡(jiǎn)述了基于AXI總線SSD設(shè)備的主要技術(shù),完成了SSD設(shè)備的硬件設(shè)計(jì)和軟件設(shè)計(jì),闡述了測(cè)試數(shù)據(jù)產(chǎn)生的原理以及實(shí)際操作步驟。設(shè)計(jì)原理和實(shí)驗(yàn)數(shù)據(jù)表明,本文設(shè)計(jì)的存儲(chǔ)設(shè)備可以和AXI片上總線完美結(jié)合,擁有很好的傳輸速度和很穩(wěn)定的系統(tǒng),無論是設(shè)備的硬件設(shè)計(jì),還是軟件模塊程序都可以為研究AXI總線、SSD存儲(chǔ)設(shè)備或AXI DMA驅(qū)動(dòng)提供一定的參考價(jià)值。未來的研究工作將進(jìn)一步提高設(shè)備的性能,并在數(shù)據(jù)傳輸安全上進(jìn)一步優(yōu)化和改進(jìn),使其能擁有更高的推廣性和普及性。
[1] 雷雨. 基于PCIE固態(tài)硬盤的嵌入式存儲(chǔ)技術(shù)[D].成都:中國(guó)科學(xué)院研究生院(光電技術(shù)研究所),2014.
[2] 彭振翼. 固態(tài)存儲(chǔ)系統(tǒng)PCIe接口的設(shè)計(jì)方法與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2013.
[3] Yu Z L,Hua J,Feng L. The Design and Implement of SSD Chip with Multi-Bus and 8 Channels[J]. Applied Mechanics & Materials,2011,58-60:2592-2596.
[4] 鄭文靜,李明強(qiáng),舒繼武. Flash存儲(chǔ)技術(shù)[J]. 計(jì)算機(jī)研究與發(fā)展,2010(4):716-726.
[5] 黃小勇. NAND Flash的存儲(chǔ)管理設(shè)計(jì)[D].北京:北京郵電大學(xué),2011.
[6] 倪峰. 基于Zynq7000嵌入式平臺(tái)的Flash驗(yàn)證系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].蘇州:蘇州大學(xué),2014.
[7] 薛慧敏,武傳華,路后兵. MicroBlaze處理器的PetaLinux操作系統(tǒng)移植[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(4):67-69.
[8] 張迪宇. 基于AHB總線的DMA控制器分析與驗(yàn)證[D].西安:西安電子科技大學(xué),2015.
[9] 梁科,李國(guó)峰,王錦,等.通用多通道高性能DMA控制器設(shè)計(jì)[J]. 天津大學(xué)學(xué)報(bào),2008(5):621-626.
[10]張駿,田澤,梅魁志,等. 基于節(jié)點(diǎn)預(yù)測(cè)的直接Cache一致性協(xié)議[J].計(jì)算機(jī)學(xué)報(bào),2014(3):700-720.
[11]曹彥榮,張 銳. DMA傳輸與Cache一致性分析[J]. 硅谷,2014(8):39-40.
[12]李超,邱柯妮,張偉功,等. 基于PCIE總線主模式DMA高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用,2015(9):142-145.
[13]楊立成,劉丹峰,史繼輝. 基于DMA的大批量數(shù)據(jù)快速傳輸模塊設(shè)計(jì)[J]. 電子科技,2012(12):49-51.
[14]孫亮亮,呂虹,劉德方,等. 嵌入式系統(tǒng)中實(shí)時(shí)時(shí)間的獲取[J]. 電子技術(shù),2009(2):63-66.
[15]舒志文. 嵌入式Linux操作系統(tǒng)實(shí)時(shí)性的研究與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2007.
Design and Implementation of Storage Device Based on NAND Flash
PAN Xu-ming,LIU Song-yan,QI Ke-xin ,WU Shang-ru,CHEN Ting
(School of Electronic Engineering,Heilongjiang University,Harbin Heilongjiang 150080,China)
Flash is the most popular storage medium,which has the advantages of high transmission speed,low power consumption,no noise and so on. However,when it is used for storage device,the performance is often limited by the limitations of on-chip buses. Aiming at the problem of Flash performance restricted by bus,a NAND Flash storage device based on AXI bus is designed. The designed storage device has the functions of multi-channel transmission,pipeline operation,ECC check,RAID5 architecture storage and so on. Design analysis and test results show that the designed storage system has faster transmission speed and is more stable,and the data reliability is enhanced at the same time. This provides a new solution for the research of NAND Flash storage devices.
AXI bus;SSD;DMA;NAND Flash
10. 3969/j.issn. 1003-3114. 2017.22
潘旭明,劉嵩巖,齊可心,等.基于NAND Flash的存儲(chǔ)設(shè)備設(shè)計(jì)與實(shí)現(xiàn)[J].無線電通信技術(shù),2017,43(4):91-95.
[PAN Xuming ,LIU Songyan ,QI Kexin,et al. Design and Implementation of Storage Device Based on NAND Flash [J]. Radio Communications Technology,2017,43(4):91-95. ]
2017-03-03
潘旭明(1990—),男,碩士研究生,主要研究方向:嵌入式系統(tǒng)與應(yīng)用。劉嵩巖(1969—),男,副教授,主要研究方向:嵌入式系統(tǒng)與應(yīng)用。
TP333.5
A
1003-3114(2017)04-91-5