專利名稱:一種固態(tài)硬盤控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于硬盤存儲技術(shù)領(lǐng)域,特別涉及固態(tài)硬盤控制器。
背景技術(shù):
固態(tài)硬盤(Solid State Disk)簡稱SSD,采用Flash (閃存)芯片作為 存儲介質(zhì),由控制單元和存儲單元(Flash芯片)兩部分組成。控制單元主 要功能是讀取、寫入數(shù)據(jù),存儲單元主要功能是存儲數(shù)據(jù)。由于固態(tài)硬盤 沒有普通硬盤的機械結(jié)構(gòu),采用半導(dǎo)體材料作為存儲介質(zhì),和常規(guī)硬盤相 比,具有低功耗、無噪音、抗震動、低熱量、傳輸速度快等優(yōu)勢。
固態(tài)硬盤以NAND型閃存為存儲介質(zhì)。NAND型閃存基本操作有讀
取,編程,擦除。讀寫操作的基本單位是頁,擦除操作的基本單位是塊。 目前大容量閃存采用2KB頁時,每個塊包含256個頁,容量512KB。讀取
步驟分為發(fā)送命令和尋址信息,將數(shù)據(jù)傳向頁面寄存器(隨機讀穩(wěn)定時間), 數(shù)據(jù)傳出。寫步驟分為發(fā)送尋址信息,將數(shù)據(jù)傳向頁面寄存器,發(fā)送命 令信息,數(shù)據(jù)從寄存器寫入頁面。閃存的寫入操作必須在空白區(qū)域進行, 如果目標區(qū)域已經(jīng)有數(shù)據(jù),必須先擦除后寫入。NAND型閃存的讀寫速度 有較大差異,擦除操作的一個塊包含多個頁,每個塊的最大擦寫次數(shù)是約 一百萬次。另外,閃存可能出現(xiàn)壞塊。
在傳統(tǒng)硬盤的讀寫過程中,硬盤磁頭的尋址時間通常限制了整個硬盤 的性能,指令隊列技術(shù)的發(fā)展使得當硬盤設(shè)備執(zhí)行命令時,硬盤內(nèi)部的控 制器根據(jù)硬盤磁頭的物理位置,對隊列中的命令重新排序,優(yōu)先讀寫距離 當前硬盤磁頭的位置最近的扇區(qū)。由于固態(tài)硬盤的特殊性,在其設(shè)計中需 要對傳統(tǒng)硬盤的管理和數(shù)據(jù)傳輸方法進行改進,充分發(fā)揮閃存的優(yōu)勢,使固態(tài)硬盤更好地支持接口技術(shù)和提供更高的內(nèi)部數(shù)據(jù)傳輸率。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種固態(tài)硬盤控制器,使得固態(tài)硬盤具有較快 的存儲和讀取速度。
一種固態(tài)硬盤控制器,包括命令隊列模塊104和閃存并行存儲模塊105, 命令隊列優(yōu)化模塊104獲取命令地址隊列,將其分離為寫地址隊列和讀地 址隊列,依據(jù)寫地址隊列從硬盤緩沖區(qū)提取數(shù)據(jù)并寫入閃存并行存儲模塊 105,依據(jù)讀地址隊列從閃存并行存儲模塊105讀取數(shù)據(jù)并輸出給硬盤緩沖 區(qū);所述閃存并行存儲模塊105包括一個以上的閃存通道,閃存通道內(nèi)的 閃存芯片采用位擴展方式。
所述命令隊列優(yōu)化模塊104在分離命令地址隊列前,按照命令地址高 低對其排序。
所述命令隊列優(yōu)化模塊104包括隊列控制單元1041)、閃存轉(zhuǎn)譯層1043 和寫閃存轉(zhuǎn)譯層1045、寫入數(shù)據(jù)隊列1046和讀出數(shù)據(jù)隊列1047,
隊列控制單元1041獲取命令地址隊列,根據(jù)命令類型將命令地址隊列 分離為讀地址隊列1042和寫地址隊列1044;按照寫地址隊列1044中的當 前寫地址并以自定義頁大小提取硬盤緩沖區(qū)的待寫入數(shù)據(jù),將其添加到寫 入數(shù)據(jù)隊列1046;調(diào)用寫閃存轉(zhuǎn)譯層1045將當前寫地址轉(zhuǎn)換為當前寫物理 地址,將其和寫入數(shù)據(jù)隊列1046中的當前待寫入數(shù)據(jù)一起傳送給閃存并行 存儲模塊105;所述自定頁大小依據(jù)閃存通道內(nèi)的閃存芯片位擴展方式確 定;以及
隊列控制單元1041調(diào)用讀閃存轉(zhuǎn)譯層1043將讀地址隊列1042的當前 讀地址轉(zhuǎn)換為當前讀物理地址,將其傳送給閃存并行存儲模塊105;接收閃 存并行存儲模塊105的待讀出數(shù)據(jù),將其添加到讀出數(shù)據(jù)隊列1047;按照 當前讀地址并以扇區(qū)容量大小為單位將讀出數(shù)據(jù)隊列1047中的當前待讀出 數(shù)據(jù)向外輸出。
5所述閃存并行存儲模塊105包括閃存陣列控制器801、多端口數(shù)據(jù)分
配器802和一個以上的閃存通道,
閃存陣列控制器801接收隊列控制單元1041的當前寫物理地址,多端 口數(shù)據(jù)分配器802依據(jù)當前寫物理地址將來自隊列控制單元1041的當前待
寫入數(shù)據(jù)存入閃存通道;
閃存陣列控制器801還接收隊列控制單元1041的當前讀物理地址,端 口數(shù)據(jù)分配器802依據(jù)當前讀物理地址從閃存通道讀取當前待讀出數(shù)據(jù), 將其添加到所述讀出數(shù)據(jù)隊列1047。
本發(fā)明的技術(shù)效果體現(xiàn)在
(1) 本發(fā)明對命令隊列進行排序優(yōu)化,將一段地址區(qū)間內(nèi)的多次小塊 操作聚合,實現(xiàn)在一次閃存操作中完成多次小塊操作請求;對命令隊列進 行分離,分別對分離得到的寫操作隊列和讀操作隊列進行操作,提高了固 態(tài)硬盤讀寫效率。
(2) 本發(fā)明設(shè)計合理的閃存芯片陣列并行結(jié)構(gòu)和數(shù)據(jù)管理方法,實現(xiàn) 數(shù)據(jù)并行傳輸,提高固態(tài)硬盤內(nèi)部數(shù)據(jù)傳輸速度。
(3) 由于固態(tài)硬盤讀與寫操作的邏輯和物理地址轉(zhuǎn)換機制不同,本發(fā) 明將閃存轉(zhuǎn)譯層分離為讀閃存轉(zhuǎn)譯層和寫閃存轉(zhuǎn)譯層,分別對讀操作隊列 和寫操作隊列進行譯址,這樣的模塊設(shè)計使得寫讀操作均能實現(xiàn)流水線行 執(zhí)行,提高閃存轉(zhuǎn)移層的處理速度。
圖1為本發(fā)明的固態(tài)硬盤結(jié)構(gòu)示意圖。
圖2為本發(fā)明的命令隊列優(yōu)化結(jié)構(gòu)示意圖。
圖3為指令流水線執(zhí)行示意圖。
圖4為本發(fā)明的命令隊列優(yōu)化流程圖。
圖5為本發(fā)明的數(shù)據(jù)組織示意圖。圖6為本發(fā)明的閃存通道位擴展結(jié)構(gòu)示意圖。
圖7為本發(fā)明的數(shù)據(jù)并行傳輸示意圖。
圖8為本發(fā)明的數(shù)據(jù)并行存儲控制器結(jié)構(gòu)示意圖。
具體實施例方式
圖1為本發(fā)明的固態(tài)硬盤結(jié)構(gòu)示意圖,固態(tài)硬盤工作過程具體為隊
列控制器1041從接口 101獲取命令地址隊列102,按照命令地址高低對其 排序,按命令類型將排序后的命令隊列分離成讀地址隊列1042和寫地址隊 列1044。寫操作中,隊列控制器1041調(diào)用寫閃存轉(zhuǎn)譯層(WFTL) 1045對 寫地址隊列1044.進行壞塊管理和磨損平衡處理獲得寫地址隊列的物理地址 隊列,隊列控制器1041按照寫地址隊列1044依序通過接口 101獲得數(shù)據(jù) 緩沖區(qū)103中的數(shù)據(jù),并以自定義頁502為單位提取到寫入數(shù)據(jù)隊列1046 中,隊列控制器1041將物理地址隊列順序傳送給數(shù)據(jù)并行存儲控制器1051, 并行存儲控制器1051將從寫入數(shù)據(jù)隊列1046獲取的數(shù)據(jù)以自定義頁為數(shù) 據(jù)塊單位寫入到閃存陣列1052中。讀操作中,讀操作隊列1042經(jīng)過讀閃 存轉(zhuǎn)譯層(RFTL) 1043處理,獲得操作的物理地址,數(shù)據(jù)并行存儲控制器 1051根據(jù)由讀閃存轉(zhuǎn)譯層(RFTL) 1043發(fā)出的讀命令和物理地址,將數(shù) 據(jù)以自定義頁為單位從閃存陣列1052中讀出傳輸?shù)阶x出數(shù)據(jù)隊列1047中, 隊列控制器1041以扇區(qū)為單位將讀出數(shù)據(jù)隊列1047的數(shù)據(jù)傳輸?shù)綌?shù)據(jù)緩 沖區(qū)103。
如圖2所示,隊列優(yōu)化模塊104處理的對象是隊列命令202,核心是隊 列機制。主機適配器與固態(tài)硬盤控制器通過接口總線交換數(shù)據(jù),通過幀信 息結(jié)構(gòu)HS(Frame Information Stmcture)來交換邏輯塊地址LBA (Logical Block Addressing)、地址偏移、命令和狀態(tài)信息。其中,標記Tag是一個 重要的元素,在固態(tài)硬盤接口控制器中有一個含有Tag的命令隊列,在主 機適配器緩存中有與它對應(yīng)的Tag標志位表,其值域為[O, n],其中n是隊 列的深度,每一條命令都有唯一的標記值,應(yīng)用于隊列化命令的數(shù)據(jù)操作。 本發(fā)明的隊列控制器1041主要完成讀寫命令的分離、處理讀出/寫入數(shù)據(jù)隊列管理和與數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)交互、返回命令執(zhí)行狀態(tài)等功能。如果固態(tài) 硬盤在很短的時間內(nèi)完成多條命令(這在工作負荷繁重時經(jīng)常出現(xiàn)),隊 列控制器可以將多個中斷聚合起來,這樣主機控制器只需處理一次中斷就 可以了。本發(fā)明的隊列控制器采用第一方直接內(nèi)存訪問(DMA)技術(shù),使 硬盤能夠在沒有主機軟件干預(yù)的情況下,為數(shù)據(jù)傳輸設(shè)置直接內(nèi)存訪問
(DMA )操作。硬盤通過向主機控制器發(fā)送一個DMA配置幀信息結(jié)構(gòu) (DMA Setup FIS)來選擇DMA內(nèi)容。這一 FIS為被設(shè)置的DMA指定 了命令標記。主機控制器根據(jù)標記值,為該命令向DMA引擎內(nèi)裝載定時 器周期寄存器(PRD)表指針,然后,數(shù)據(jù)傳輸就可以在沒有主機干預(yù)情 況下進行,硬盤由于可以自己選擇所傳送數(shù)據(jù)的緩沖區(qū),就能夠更有效地 對命令重新排序。
如圖3和圖4所示,在建立讀/寫操作隊列后,由于每個隊列完成讀或 寫之中單一的功能,可將讀/寫操作過程細化為多個功能模塊,使指令隊列 能流水線301操作,這將大大加速指令隊列的執(zhí)行過程。
如圖5所示,硬盤接口以扇區(qū)(Sector) 501為數(shù)據(jù)傳輸單位,1個扇 區(qū)容量為51248bit。閃存芯片以頁(Page)為數(shù)據(jù)傳輸單位,目前大容量閃 存采用2KB頁,1個頁有效數(shù)據(jù)容量為2048*8bit。本發(fā)明的每個閃存通道 內(nèi)采取位擴展方式使通道內(nèi)多塊閃存芯片能并行操作,假設(shè)單個閃存芯片 頁(Page)容量為N字節(jié)(Byte), 一個閃存通道內(nèi)采取M個閃存芯片進 行位擴展,則為了適應(yīng)并行存儲應(yīng)該采取自定義頁為閃存通道數(shù)據(jù)傳輸單 位,每個自定義頁容量為N* (M*8 ) bit。本發(fā)明的閃存數(shù)據(jù)傳輸單位為 自定義頁502, 一個自定義頁容量為2048*16bit。因此在數(shù)據(jù)寫入時,需 要由隊列控制器1041將數(shù)據(jù)緩沖區(qū)103中八個連續(xù)扇區(qū)數(shù)據(jù)501組織為一 個自定義頁502放入寫入數(shù)據(jù)隊列1046。在數(shù)據(jù)讀出時,需要由隊列控制 器1041將讀出數(shù)據(jù)隊列1047中一個自定義頁502分離為八個連續(xù)扇區(qū)數(shù) 據(jù)501放入數(shù)據(jù)緩沖區(qū)103中。
如圖6和圖7所示,本發(fā)明的數(shù)據(jù)并行存儲方法包括兩層并行操作 將閃存陣列劃為多個閃存通道601,由數(shù)據(jù)并行存儲控制器1051控制各通 道實現(xiàn)并行操作;各通道內(nèi)的閃存芯片釆取位擴展方式,以自定義頁502為傳輸單位,低8位與高8位分別由不用芯片存儲,使通道內(nèi)多塊閃存芯 片能并行操作。在本發(fā)明實施過程中,以8個閃存芯片組成的存儲陣列來
舉例說明閃存陣列1052的8個閃存芯片組成4個通道, 一次I/O數(shù)據(jù)請 求701要寫入9個自定義頁502的數(shù)據(jù),這一個請求被轉(zhuǎn)化為9項操作, 其中的每一項操作都對應(yīng)于一個閃存通道602。原先順序的自定義頁數(shù)據(jù) 701寫操作被分散到所有的8塊閃存芯片中并行執(zhí)行。從理論上講,8塊閃 存芯片的并行操作使同一時間段內(nèi)硬盤讀寫速度提升了 8倍。但由于總線 帶寬等多種因素的影響,實際的提升速率會低于理論值,.但是大量數(shù)據(jù)并 行傳輸與串行傳輸相比能帶來顯著的提速效果。 -
如圖7和圖8所示,本發(fā)明的數(shù)據(jù)并行存儲控制器1051在收到寫數(shù)據(jù) 命令后,閃存陣列控制器801根據(jù)命令提供的數(shù)據(jù)信息和地址信息,產(chǎn)生 相應(yīng)通道的寫入命令,多端口數(shù)據(jù)分配器802將數(shù)據(jù)從寫入數(shù)據(jù)隊列1046 中取出,以自定義頁502為單位將數(shù)據(jù)分配到相應(yīng)通道的寫先進先出隊列 (寫FIFO) 804上,閃存陣列控制器801根據(jù)各通道601返回的狀態(tài)信息 控制后續(xù)操作,向上層返回該命執(zhí)行狀態(tài)信息。在收到讀數(shù)據(jù)命令時,閃 存陣列控制器801根據(jù)命令提供的數(shù)據(jù)信息和地址信息產(chǎn)生相應(yīng)通道601 的讀出命令,多端口數(shù)據(jù)分配器802以自定義頁502為單位將數(shù)據(jù)從相應(yīng) 通道601的讀先進先出隊列(讀FIFO)803讀出,寫入讀出數(shù)據(jù)隊列1047。 閃存陣列控制器801根據(jù)各通道601返回的狀態(tài)信息控制后續(xù)操作,向上 層返回該命令執(zhí)行狀態(tài)信息。
權(quán)利要求
1、一種固態(tài)硬盤控制器,其特征在于,包括命令隊列模塊(104)和閃存并行存儲模塊(105),命令隊列優(yōu)化模塊(104)獲取命令地址隊列,將其分離為寫地址隊列和讀地址隊列,依據(jù)寫地址隊列從硬盤緩沖區(qū)提取數(shù)據(jù)并寫入閃存并行存儲模塊(105),依據(jù)讀地址隊列從閃存并行存儲模塊(105)讀取數(shù)據(jù)并輸出給硬盤緩沖區(qū);所述閃存并行存儲模塊(105)包括一個以上的閃存通道,閃存通道內(nèi)的閃存芯片采用位擴展方式。
2、 根據(jù)權(quán)利要求1所述的一種固態(tài)硬盤控制器,其特征在于,所述命 令隊列優(yōu)化模塊(104)在分離命令地址隊列前,按照命令地址高低對其排 序。
3、 根據(jù)權(quán)利要求2所述的一種固態(tài)硬盤控制器,其特征在于,所述命 令隊列優(yōu)化模塊(104)包括隊列控制單元(1041)、閃存轉(zhuǎn)譯層(1043) 和寫閃存轉(zhuǎn)譯層(1045)、寫入數(shù)據(jù)隊列(1046)和讀出數(shù)據(jù)隊列(1047),隊列控制單元(1041)獲取命令地址隊列,根據(jù)命令類型將命令地址 隊列分離為讀地址隊列(1042)和寫地址隊列(1044);按照寫地址隊列(1044)中的當前寫地址并以自定義頁大小提取硬盤緩沖區(qū)的待寫入數(shù)據(jù), 將其添加到寫入數(shù)據(jù)隊列(1046);調(diào)用寫閃存轉(zhuǎn)譯層(1045)將當前寫 地址轉(zhuǎn)換為當前寫物理地址,將其和寫入數(shù)據(jù)隊列(1046)中的當前待寫 入數(shù)據(jù)一起傳送給閃存并行存儲模塊(105);所述自定頁大小由閃存通道 內(nèi)的閃存芯片位擴展方式確定;以及隊列控制單元(1041)調(diào)用讀閃存轉(zhuǎn)譯層(1043)將讀地址隊列(1042) 的當前讀地址轉(zhuǎn)換為當前讀物理地址,將其傳送給閃存并行存儲模塊(105);接收閃存并行存儲模塊(105)的待讀出數(shù)據(jù),將其添加到讀出 數(shù)據(jù)隊列(1047);按照當前讀地址并以扇區(qū)容量大小為單位將讀出數(shù)據(jù) 隊列(1047)中的當前待讀出數(shù)據(jù)向外輸出。
4、根據(jù)權(quán)利要求3所述的一種固態(tài)硬盤控制器,其特征在于,所述閃存并行存儲模塊(105)包括閃存陣列控制器(801)、多端口數(shù)據(jù)分配器 (802)和一個以上的閃存通道,閃存陣列控制器(801)接收隊列控制單元(1041)的當前寫物理地址, 多端口數(shù)據(jù)分配器(802)依據(jù)當前寫物理地址將來自隊列控制單元(1041)的當前待寫入數(shù)據(jù)存入閃存通道;閃存陣列控制器(801)還接收隊列控制單元(1041)的當前讀物理地 址,端口數(shù)據(jù)分配器(802)依據(jù)當前讀物理地址從閃存通道讀取當前待讀 出數(shù)據(jù),將其添加到所述讀出數(shù)據(jù)隊列(1047)。
全文摘要
一種固態(tài)硬盤控制器,屬于硬盤存儲技術(shù)領(lǐng)域。硬盤控制器包括命令隊列模塊和閃存并行存儲模塊,命令隊列優(yōu)化模塊獲取命令地址隊列,將其分離為寫地址隊列和讀地址隊列,依據(jù)寫地址隊列從硬盤緩沖區(qū)提取數(shù)據(jù)并寫入閃存并行存儲模塊,依據(jù)讀地址隊列從閃存并行存儲模塊讀取數(shù)據(jù)并輸出給硬盤緩沖區(qū)。所述閃存并行存儲模塊包括一個以上的閃存通道,閃存通道內(nèi)的閃存芯片采用位擴展方式。本發(fā)明對寫操作和讀操作分別進行處理,并通過閃存通道并行結(jié)構(gòu)實現(xiàn)數(shù)據(jù)并行傳輸,從而有效提高了固態(tài)硬盤讀寫效率。
文檔編號G06F3/06GK101498994SQ20091006077
公開日2009年8月5日 申請日期2009年2月16日 優(yōu)先權(quán)日2009年2月16日
發(fā)明者侯冰劍, 萍 盧, 周功業(yè), 濤 李, 陳進才 申請人:華中科技大學