《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種可編程多路閃存控制器的設(shè)計(jì)與驗(yàn)證
一種可編程多路閃存控制器的設(shè)計(jì)與驗(yàn)證
2017年電子技術(shù)應(yīng)用第9期
張洪柳,張 春
清華大學(xué) 微電子學(xué)研究所,北京1000861
摘要: 介紹了一種可應(yīng)用于固態(tài)硬盤(Solid State Disk)主控芯片中的閃存控制器的設(shè)計(jì)實(shí)現(xiàn)方法。該閃存控制器最大支持4路閃存通路,4路閃存通路共用一個(gè)ECC糾錯(cuò)模塊,提出一種新型可編程控制方法,CPU可實(shí)現(xiàn)4路閃存數(shù)據(jù)的并發(fā)讀寫,并兼容多種品牌的閃存顆粒。主要介紹了該閃存控制器的硬件架構(gòu)及關(guān)鍵模塊的設(shè)計(jì)實(shí)現(xiàn)思路,并最終給出了閃存控制器的驗(yàn)證結(jié)果及綜合結(jié)果,在多種糾錯(cuò)格式及4路通路的配置下,閃存控制器的性能及成本均能滿足一般SSD主控芯片的使用需求。
關(guān)鍵詞: NAND閃存 多通道 可編程 SSD
中圖分類號: TP216
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.170744
中文引用格式: 張洪柳,張春. 一種可編程多路閃存控制器的設(shè)計(jì)與驗(yàn)證[J].電子技術(shù)應(yīng)用,2017,43(9):39-42.
英文引用格式: Zhang Hongliu,Zhang Chun. Design and verification method of one programmable multi-channel NAND Flash controller[J].Application of Electronic Technique,2017,43(9):39-42.
Design and verification method of one programmable multi-channel NAND Flash controller
Zhang Hongliu,Zhang Chun
Tsinghua University Microelectronics Institute,Beijing 1000861,China
Abstract: An effective design and implementation method of NAND flash memory host controller that implemented in Solid State Disk controller was analyzed in this paper. The NAND flash memory host controller supports up to 4 channels NAND flash ports, with 4 channels NAND flash port sharing one ECC error correction module. By using a new type of programmable control method, the CPU can realize 4 channels read and write flash memory data concurrent, and is compatible with a variety of brands of NAND flash. The design philosophy of hardware architecture and critical modules was introduced. The verification and synthesis results were demonstrated finally. Considering of performance and cost evaluation, general SSD controllers could be satisfied by this controller which configured with 4 flash channels and multiple ECC coding formats.
Key words : NAND flash;multi channel;programmable;SSD

0 引言

    固態(tài)硬盤相對于傳統(tǒng)機(jī)械硬盤,憑借其高讀寫性能、低功耗、低噪音、體積小、抗震性強(qiáng)等諸多優(yōu)點(diǎn),近年來在消費(fèi)類電子、軍工、航空航天等領(lǐng)域得到迅猛發(fā)展,并不斷搶占機(jī)械硬盤的原有市場份額。

    固態(tài)硬盤主要由主控芯片、閃存芯片和DRAM緩存芯片組成。主控芯片作為固態(tài)硬盤的核心器件,其好壞優(yōu)劣直接決定固態(tài)硬盤產(chǎn)品的性能和可靠性;閃存芯片目前主流應(yīng)用的是15/16 nm的MLC顆粒,雖然存儲(chǔ)容量單顆可達(dá)128 Gb,接口性能可達(dá)400 MB/s,但數(shù)據(jù)保存性能較差,需要主控芯片具有極強(qiáng)的數(shù)據(jù)糾錯(cuò)能力,同時(shí)配合主控芯片中的FTL(Flash Translation Layer)固件進(jìn)行磨損均衡調(diào)度,以保證固態(tài)硬盤的整體壽命。

    固態(tài)硬盤主控芯片早期主要以PATA為接口,經(jīng)過多年的市場發(fā)展已經(jīng)逐步升級為USB3.0(5 Gb/s)/SATAIII(6 Gb/s)接口,甚至在企業(yè)級已經(jīng)升級為PCIE3.0(8 Gb/s)接口,單盤容量最大可支持8 TB。而閃存單顆粒無論是接口速度還是容量,都無法滿足固態(tài)硬盤的整體需求,一般都是通過一顆主控加上多顆閃存陣列的方案實(shí)現(xiàn)。閃存控制器作為固態(tài)硬盤主控的關(guān)鍵模塊,其兼容性、糾錯(cuò)能力、吞吐量、閃存陣列組合方式等特性,往往決定了最終固態(tài)硬盤產(chǎn)品的成本、性能及穩(wěn)定性。本文所設(shè)計(jì)的閃存控制器可支持4路閃存通路,共支持4×8片閃存片選,最大容量可支持512 GB,支持更大容量可集成多個(gè)閃存控制器;在110 nm工藝下,閃存控制器接口速率可達(dá)4×200 MB/s,在55/40 nm工藝下,速率可達(dá)4×400 MB/s;在兼容性方面,本文閃存控制器提出了一種可編程的命令編碼方式,可有效保證對閃存各個(gè)廠商命令層的支持。

1 閃存控制器總體架構(gòu)

1.1 總體架構(gòu)

    本文閃存控制器對外接口主要包括一個(gè)AHB[1]配置從端口、一個(gè)AHB數(shù)據(jù)從端口和4路閃存主機(jī)端口,每路閃存端口可外掛8片F(xiàn)lash片選[2]。如圖1所示。

wdz4-t1.gif

    閃存控制器只包含一個(gè)寄存器配置模塊,用于控制4路通路的數(shù)據(jù)傳輸并反映當(dāng)前狀態(tài)。4路通路模塊共用一個(gè)AHB數(shù)據(jù)從端口,AHB數(shù)據(jù)從端口通過地址譯碼產(chǎn)生選擇信號,分別對4路通路進(jìn)行數(shù)據(jù)讀寫,通過共用AHB數(shù)據(jù)端口,可降低芯片頂層集成的繁瑣程度,降低出錯(cuò)概率,便于驗(yàn)證,且不影響數(shù)據(jù)傳輸帶寬。4路通路模塊共用一個(gè)ECC解碼模塊,ECC解碼模塊數(shù)據(jù)輸入輸出位寬為32位,保證與4路閃存8位端口總位寬相一致,出于面積方面考慮,與4個(gè)8位寬的ECC解碼模塊相比,采用32 bit位寬可通過優(yōu)化算法和DC綜合等方法有效降低閃存控制器整體面積。

1.2 單通路模塊架構(gòu)

    單通路模塊是整個(gè)閃存控制器的核心模塊,包含3個(gè)時(shí)鐘:AHB_CLK,NFC_CLK,NAND_CLK。所以按時(shí)鐘域可分為總線時(shí)鐘域、模塊時(shí)鐘域和閃存時(shí)鐘域。按照邏輯劃分可分為控制通路和數(shù)據(jù)通路,控制通路包括流程控制模塊、初始化模塊、地址生成模塊和指令控制模塊;數(shù)據(jù)通路包括數(shù)據(jù)控制模塊、加解擾模塊、取反模塊和閃存接口模塊,閃存控制器單通路模塊架構(gòu)如圖2所示。

wdz4-t2.gif

2 設(shè)計(jì)實(shí)現(xiàn)

2.1 指令編碼

    由于閃存業(yè)界分為兩大陣營,各自支持ONFI[3]和Toggle兩種不同協(xié)議,如果通過硬件實(shí)現(xiàn)命令層的傳輸控制,一旦閃存廠商協(xié)議升級或者變更,則會(huì)存在命令層不兼容的風(fēng)險(xiǎn),只有通過重新設(shè)計(jì)流片才能解決,這樣無疑會(huì)增加固態(tài)硬盤主控廠商的成本。

    本文采用軟硬件結(jié)合的方式,提出了一種可編程的命令層實(shí)現(xiàn)方法,即CPU根據(jù)指令集格式進(jìn)行命令碼編程,寫入閃存控制器內(nèi)部指令SRAM中,閃存控制器根據(jù)指令SRAM中的指令進(jìn)行閃存顆粒的讀寫、擦除等操作,如果需要重復(fù)操作,CPU無需再次寫入,直接配置閃存控制器執(zhí)行上次操作即可。

2.1.1 指令集格式

    指令集共包含4條指令:控制指令、地址指令、命令指令和數(shù)據(jù)指令,如表1所示。

wdz4-b1.gif

    控制指令一般作為一個(gè)命令層操作的起始指令,指令標(biāo)志為0xf,ce_num代表當(dāng)前操作的閃存片選,i代表操作完成后是否報(bào)告中斷,byte2和byte1保留,byte0代表當(dāng)前命令層操作總的word個(gè)數(shù)。

    地址指令指令標(biāo)志為0x1,vn代表當(dāng)前指令有效地址個(gè)數(shù),byte0-2分別代表當(dāng)前操作的地址,比如閃存列地址為2個(gè)byte,則vn為2,byte0和byte1有效。

    命令指令包含閃存spec定義的標(biāo)準(zhǔn)命令和自定義用戶命令,指令標(biāo)志為0x2,su代表當(dāng)前是spec命令還是用戶命令,command_code當(dāng)su為1時(shí)由CPU寫入閃存標(biāo)準(zhǔn)命令,當(dāng)su為0時(shí),由CPU寫入用戶命令。用戶命令主要用于滿足閃存命令間的一些時(shí)序參數(shù)及狀態(tài)操作,定義如表2。

wdz4-b2.gif

    數(shù)據(jù)指令主要包含系統(tǒng)數(shù)據(jù)和空閑區(qū)數(shù)據(jù)的讀寫操作,指令標(biāo)志為0x4,ms表示當(dāng)前是系統(tǒng)數(shù)據(jù)(main data)還是空閑區(qū)數(shù)據(jù)(spare data),rw代表讀寫操作,sector_count表示當(dāng)前操作數(shù)據(jù)塊的個(gè)數(shù)。

2.1.2 命令層編碼

    軟件通過CPU將閃存控制器指令進(jìn)行編程后,形成一套閃存命令層編碼,可實(shí)現(xiàn)對閃存的讀寫擦除等各種操作。以閃存的擦除操作為例,如表3。

wdz4-b3.gif

2.2 流程控制

    流程控制模塊主要負(fù)責(zé)命令層編碼的取址、解析、執(zhí)行以及數(shù)據(jù)通路模塊的控制等操作。

    流程控制模塊的狀態(tài)機(jī)如圖3所示。

wdz4-t3.gif

    其中初始化狀態(tài)主要負(fù)責(zé)檢測當(dāng)前閃存控制器外掛閃存的數(shù)量,通過輪詢單個(gè)閃存片選,發(fā)送復(fù)位指令后檢查閃存RB_n引腳狀態(tài),如果發(fā)送指令后檢測到RB_n信號線下降沿,則表示閃存外掛有效。CMDREC狀態(tài)主要記錄當(dāng)前CPU配置的命令層編碼起始地址及命令層有效個(gè)數(shù),如果執(zhí)行完一個(gè)命令層編碼后,需要在此狀態(tài)檢查命令層編碼的有效個(gè)數(shù),如果有效個(gè)數(shù)為0才能跳轉(zhuǎn)至IDLE狀態(tài)。

2.3 加解擾

    由于MLC工藝越來越先進(jìn),閃存內(nèi)部單元間的干擾效應(yīng)(cell-cell-interference)越加明顯,如果一段數(shù)據(jù)全為0或者全為1,則會(huì)加劇該效應(yīng),以致超出ECC解碼模塊的糾錯(cuò)能力,所以需要將明文數(shù)據(jù)離散化后存入到閃存介質(zhì)中,最大化降低單元干擾效應(yīng)。

    本文采用線性反饋的方式實(shí)現(xiàn)數(shù)據(jù)的離散化,如圖4。

wdz4-t4.gif

3 驗(yàn)證方法

    前仿真主要分為模塊級前仿真芯片級前仿真及系統(tǒng)級前仿真,系統(tǒng)級前仿真涉及技術(shù)層面太多,仿真效果精準(zhǔn)但仿真速度慢,往往花費(fèi)大量時(shí)間和人力,目前階段可實(shí)用性不強(qiáng),本文主要進(jìn)行了模塊級前仿真及芯片級前仿真。

3.1 模塊級前仿真

    模塊級前仿真通過Verilog或者SystemVerilog[4]等硬件描述語言完成仿真平臺及閃存模型的實(shí)現(xiàn),主要針對閃存控制器的功能性及代碼覆蓋率進(jìn)行仿真,仿真速度快,覆蓋率高。如圖5所示。

wdz4-t5.gif

    ONFI接口讀取多個(gè)sector波形圖如圖6,Toggle接口讀取多個(gè)sector波形圖如圖7。

wdz4-t6.gif

wdz4-t7.gif

3.2 芯片級前仿真

    芯片級前仿真主要基于SoC最小化平臺[5],通過C語言編寫ARM CPU的驅(qū)動(dòng)程序,對閃存控制器進(jìn)行典型應(yīng)用的激勵(lì)仿真,主要驗(yàn)證閃存控制器集成適用性及軟硬件結(jié)合的效率。芯片級驗(yàn)證平臺如圖8。閃存控制器讀取閃存數(shù)據(jù)波形如圖9,閃存控制器寫入閃存數(shù)據(jù)波形如圖10。

wdz4-t8.gif

wdz4-t9.gif

wdz4-t10.gif

4 綜合結(jié)果

    由于不同主控對閃存控制器的需求不同,集成參數(shù)不相同,最終的綜合結(jié)果也各不相同。本文中針對一般SATA類SSD主控的需求,后端綜合采用110 nm工藝庫,閃存控制器典型配置參數(shù)如下:

    閃存通路數(shù):4

    AHB接口位寬:32

    閃存接口位寬:8

    AHB_CLK/NFC_CLK:200 MHz

    NAND_CLK:400 MHz

    ECC糾錯(cuò)格式:1/8/16/24/40/60/72

    線負(fù)載模型:enG1000K

    綜合結(jié)果總門數(shù)約為1 030 K邏輯門,其中ECC解碼模塊占用490 K邏輯門,單路控制器門數(shù)約為135 K邏輯門。功耗情況如下:

    單元內(nèi)部功耗:39.885 2 mW(89%)

    線開關(guān)電源:4.929 6 mW(11%)

    整體動(dòng)態(tài)功耗:44.814 9 mW(100%)

    單元漏電功耗:3.574 6 mW

5 結(jié)論

    本文根據(jù)固態(tài)硬盤主控芯片對閃存控制的操作需求,通過軟硬件結(jié)合可編程的方式,設(shè)計(jì)了一種高效且兼容性極強(qiáng)的專用固態(tài)硬盤閃存控制器。該控制器可覆蓋支持各類閃存廠商的操作命令,糾錯(cuò)能力能夠滿足不同工藝下閃存顆粒的需求,在支持容量、接口傳輸速率、電路面積、動(dòng)態(tài)功耗等方面也均可滿足固態(tài)硬盤主控芯片的要求,具有廣泛的應(yīng)用價(jià)值,并已成功應(yīng)用在固態(tài)硬盤設(shè)計(jì)中。

參考文獻(xiàn)

[1] ARM.AMBA@3 AHB-Lite Protocol V1.0 Specification.www.arm.com,2006.

[2] 陳宏銘,程玉華.針對固態(tài)硬盤應(yīng)用的多通路閃存控制器實(shí)現(xiàn)[J].中國集成電路,2012(1):37.

[3] Intel,Micron,Phison,et al.Open NAND Flash Interface Specification Revision 3.2.www.onfi.org,2013.

[4] Accellera,SystemVerilog 3.1a Language Reference Manual.www.accellera.org,2004.

[5] 張磊,李清江,聶洪山,等.基于SATA接口的固態(tài)硬盤設(shè)計(jì)[J].微處理機(jī),2011(4):77-78.



作者信息:

張洪柳,張  春

(清華大學(xué) 微電子學(xué)研究所,北京1000861)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。