本發(fā)明涉及固態(tài)硬盤數(shù)據(jù)讀取技術(shù)領(lǐng)域,特別是涉及一種固態(tài)硬盤數(shù)據(jù)傳輸方法及裝置。
背景技術(shù):
NAND FLASH訪問速度遠小于內(nèi)存訪問速度,而內(nèi)存訪問速度又比不上片上RAM的訪問速度。如果可以利用時間局部性和空間局部性的原理,在硬盤內(nèi)部增加CACHE機制,訪問片上RAM和內(nèi)存的概率遠遠大于訪問FLASH的概率(如90%以上),那么將大量的減少固態(tài)硬盤的FLASH訪問時間,從而增加它的I/O速度和帶寬,極大提升固態(tài)硬盤的性能。
鑒于此,如何在固態(tài)硬盤內(nèi)部加入緩存機制是本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種固態(tài)硬盤數(shù)據(jù)傳輸方法及裝置,目的在于提供一種在固態(tài)硬盤內(nèi)部加入緩存的機制。
為解決上述技術(shù)問題,本發(fā)明提供一種固態(tài)硬盤數(shù)據(jù)傳輸方法,包括:
接收數(shù)據(jù)訪問請求;
獲取FTL映射表緩存數(shù)據(jù),所述FTL映射表緩存數(shù)據(jù)為從FLASH將FTL映射表條目加載入緩存;
通過所述FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù);
如果有,則直接把緩存中對應(yīng)的所述待訪問數(shù)據(jù)傳輸至上位機。
可選地,所述FTL映射表緩存數(shù)據(jù)包括:狀態(tài)、掩碼、FLASH頁號、有效字段、臟頁字段、LRU字段、標記字段以及緩存頁號字段。
可選地,在通過所述FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù)之后還包括:
當所述緩存中沒有所述待訪問數(shù)據(jù)時,通過所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)是否存在空閑條目;
如果是,則將FTL映射條目加載入緩存,并將數(shù)據(jù)從FLASH加載入內(nèi)存,將待訪問數(shù)據(jù)傳輸至上位機。
可選地,所述通過所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)是否存在空閑條目之后還包括:
當所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)不存在空閑條目時,確定犧牲表項;
將FTL映射條目加載入緩存,從FLASH加載數(shù)據(jù)至內(nèi)存,將所述待訪問數(shù)據(jù)傳輸至上位機。
可選地,所述確定犧牲表項之后還包括:
判斷所述犧牲表項是否是臟頁;
如果是,則將所述犧牲表項寫入緩存,將對應(yīng)的數(shù)據(jù)寫入到FLASH。
本發(fā)明還提供了一種固態(tài)硬盤數(shù)據(jù)傳輸裝置,包括:
接收模塊,用于接收數(shù)據(jù)訪問請求;
獲取模塊,用于獲取FTL映射表緩存數(shù)據(jù),所述FTL映射表緩存數(shù)據(jù)為從FLASH將FTL映射表條目加載入緩存;
判斷模塊,用于通過所述FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù);
傳輸模塊,用于在判定緩存中有待訪問數(shù)據(jù)時,則直接把緩存中對應(yīng)的所述待訪問數(shù)據(jù)傳輸至上位機。
可選地,所述FTL映射表緩存數(shù)據(jù)包括:狀態(tài)、掩碼、FLASH頁號、有效字段、臟頁字段、LRU字段、標記字段以及緩存頁號字段。
可選地,所述傳輸模塊還用于:
在通過所述FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù)之后,當所述緩存中沒有所述待訪問數(shù)據(jù)時,通過所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)是否存在空閑條目;如果是,則將FTL映射條目加載入緩存,并將數(shù)據(jù)從FLASH加載入內(nèi)存,將待訪問數(shù)據(jù)傳輸至上位機。
可選地,所述傳輸模塊還用于:
當所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)不存在空閑條目時,確定犧牲表項;將FTL映射條目加載入緩存,從FLASH加載數(shù)據(jù)至內(nèi)存,將所述待訪問數(shù)據(jù)傳輸至上位機。
可選地,所述傳輸模塊還用于:
確定犧牲表項之后,判斷所述犧牲表項是否是臟頁;如果是,則將所述犧牲表項寫入緩存,將對應(yīng)的數(shù)據(jù)寫入到FLASH。
本發(fā)明所提供的固態(tài)硬盤數(shù)據(jù)傳輸方法及裝置,通過接收數(shù)據(jù)訪問請求;獲取FTL映射表緩存數(shù)據(jù),F(xiàn)TL映射表緩存數(shù)據(jù)為從FLASH將FTL映射表條目加載入緩存;通過FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù);如果有,則直接把緩存中對應(yīng)的待訪問數(shù)據(jù)傳輸至上位機。本發(fā)明所提供的固態(tài)硬盤數(shù)據(jù)傳輸方法及裝置,把CPU的CACHE原理應(yīng)用于固態(tài)硬盤,內(nèi)存的讀寫速度遠遠大于FLASH的讀寫速度,如果CACHE命中率高的話,上位機訪問磁盤的速度就接近于訪問內(nèi)存的速度。可見,本申請極大地加快了磁盤的訪問速度,簡化了FLASH控制器芯片的實現(xiàn)。
附圖說明
為了更清楚的說明本發(fā)明實施例或現(xiàn)有技術(shù)的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明所提供的固態(tài)硬盤數(shù)據(jù)傳輸方法的一種具體實施方式的流程圖;
圖2為FTL映射表在內(nèi)存的存儲格式;
圖3為FTL映射表在CACHE的格式示意圖;
圖4為NAND FLASH讀寫的CACHE機制示意圖;
圖5為本發(fā)明所提供的固體硬盤數(shù)據(jù)傳輸方法的另一種具體實施方式的流程圖;
圖6為本發(fā)明實施例提供的固態(tài)硬盤數(shù)據(jù)傳輸裝置的結(jié)構(gòu)框圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步的詳細說明。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明所提供的固態(tài)硬盤數(shù)據(jù)傳輸方法的一種具體實施方式的流程圖如圖1所示,該方法包括:
步驟S101:接收數(shù)據(jù)訪問請求;
步驟S102:獲取FTL映射表緩存數(shù)據(jù),所述FTL映射表緩存數(shù)據(jù)為從FLASH將FTL映射表條目加載入緩存;
步驟S103:通過所述FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù);
步驟S104:如果有,則直接把緩存中對應(yīng)的所述待訪問數(shù)據(jù)傳輸至上位機。
本發(fā)明所提供的固態(tài)硬盤數(shù)據(jù)傳輸方法,通過接收數(shù)據(jù)訪問請求;獲取FTL映射表緩存數(shù)據(jù),F(xiàn)TL映射表緩存數(shù)據(jù)為從FLASH將FTL映射表條目加載入緩存;通過FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù);如果有,則直接把緩存中對應(yīng)的待訪問數(shù)據(jù)傳輸至上位機。本發(fā)明所提供的固態(tài)硬盤數(shù)據(jù)傳輸方法,把CPU的CACHE原理應(yīng)用于固態(tài)硬盤,內(nèi)存的讀寫速度遠遠大于FLASH的讀寫速度,如果CACHE命中率高的話,上位機訪問磁盤的速度就接近于訪問內(nèi)存的速度??梢?,本申請極大地加快了磁盤的訪問速度,簡化了FLASH控制器芯片的實現(xiàn)。
在上述實施例中,F(xiàn)TL映射表緩存數(shù)據(jù)可以具體包括:狀態(tài)、掩碼、FLASH頁號、有效字段、臟頁字段、LRU字段、標記字段以及緩存頁號字段。
在上述實施例的基礎(chǔ)上,本申請實施例在通過所述FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù)之后還包括:
當所述緩存中沒有所述待訪問數(shù)據(jù)時,通過所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)是否存在空閑條目;
如果是,則將FTL映射條目加載入緩存,并將數(shù)據(jù)從FLASH加載入內(nèi)存,將待訪問數(shù)據(jù)傳輸至上位機。
進一步地,所述通過所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)是否存在空閑條目之后還包括:
當所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)不存在空閑條目時,確定犧牲表項;
將FTL映射條目加載入緩存,從FLASH加載數(shù)據(jù)至內(nèi)存,將待訪問數(shù)據(jù)傳輸至上位機。
上述在確定犧牲表項之后還包括:
判斷所述犧牲表項是否是臟頁;
如果是,則將所述犧牲表項寫入緩存,將對應(yīng)的數(shù)據(jù)寫入到FLASH。
下面通過一具體示例來闡述NAND FLASH讀寫的CACHE機制。
假定FLASH讀寫頁為16KB,邏輯塊大小為4KB,磁盤總?cè)萘繛?T。FTL映射表在內(nèi)存的存儲格式如圖2。FTL映射表在CACHE的格式示意圖如圖3。NAND FLASH讀寫的CACHE機制示意圖如圖4。
上層PC機讀寫硬盤是以邏輯塊為單位,由于NAND FLASH寫時必須先擦除(擦除以塊為單位,讀寫以頁為單位),所以磁盤邏輯頁和NAND FLASH的物理頁之間有一個映射關(guān)系,稱之為FTL映射表。
FTL映射表和數(shù)據(jù)分開緩存,F(xiàn)TL映射表保存在FLASH上,在磁盤設(shè)備上電時從FLASH加載入內(nèi)存,數(shù)據(jù)緩存初始狀態(tài)數(shù)據(jù)為空,磁盤讀寫時,先把FTL映射表條目加載入CACHE,對應(yīng)的頁數(shù)據(jù)加載入數(shù)據(jù)緩存所在內(nèi)存。
如圖2所示,F(xiàn)TL映射表有三個域:狀態(tài)、掩碼和FLASH頁號。狀態(tài)域通常只有1b,0表示該線性地址所指的頁為空白頁,1表示該頁有數(shù)據(jù),且數(shù)據(jù)在FLASH頁號所指的地址上;通常邏輯塊的大小與FLASH頁大小不一致(如FLASH頁大小為16KB,邏輯塊大小為4KB),所以有掩碼來確定FLASH頁內(nèi)數(shù)據(jù)是否有效,1為有效數(shù)據(jù),0為無效數(shù)據(jù)。
加載入片上RAM的FTL映射條目相比保存在內(nèi)存里的FTL映射表,增加了有效、臟頁、LRU、標記、緩存頁號五個字段。有效字段表示該映射條目有效與否,0代表無效,1代表有效;臟頁字段表示該條目代表的數(shù)據(jù)頁是否被修改;LRU字段記錄了該條目的換出優(yōu)先級;標記字段表示該條目在FTL映射表的偏移;緩存頁號代表該條目指向的緩存偏移地址。圖3示出了本發(fā)明所提供的FTL映射表CACHE條目示意圖。
CACHE保存的FTL映射條目里指向的緩存地址亂序的,為條目分配緩存地址依靠一個FIFO來實現(xiàn)。初始化的時會把空閑緩存地址全部入FIFO,加載新FTL映射條目時會從FIFO取出一個緩存地址。當把FTL映射表換出到內(nèi)存時,會把它釋放的緩存地址入FIFO。
CACHE不命中時,如果CACHE組內(nèi)沒有無效頁,就根據(jù)LRU字段確定犧牲條目,假定犧牲條目為臟頁,則需要先把該條目挪到寫緩存里,以待把條目所指的數(shù)據(jù)寫入到FLASH后才能換出到內(nèi)存。寫緩存遵循CAM(Content Addressed Memory)原理,所以條目數(shù)較少。
參照圖5本發(fā)明所提供的固體硬盤數(shù)據(jù)傳輸方法的另一種具體實施方式的流程圖,該過程具體包括:
上位機軟件訪問磁盤會給出邏輯塊地址,設(shè)備收到邏輯塊地址后會先把它轉(zhuǎn)換成FTL映射表的偏移及邏輯塊在FLASH頁內(nèi)的偏移,然后訪問FTL映射表CACHE檢查是否命中,如果命中直接把內(nèi)存的數(shù)據(jù)傳輸給上位機會從上位機取數(shù)到緩存。如果不命中,就先判斷組內(nèi)是否有空閑條目,有就把FTL映射條目加載入CACHE,并把數(shù)據(jù)從FLASH加載入內(nèi)存,再進行上位機與設(shè)備的數(shù)據(jù)傳輸。如果沒有空閑條目,就必須先確定犧牲條目,并確定犧牲條目是否為臟頁,如果是臟頁就把條目導入到寫緩存中,然后導入當前所需條目,從FLASH加載數(shù)據(jù)至內(nèi)存,然后與上位機進行數(shù)據(jù)傳輸。
下面對本發(fā)明實施例提供的固態(tài)硬盤數(shù)據(jù)傳輸裝置進行介紹,下文描述的固態(tài)硬盤數(shù)據(jù)傳輸裝置與上文描述的固態(tài)硬盤數(shù)據(jù)傳輸方法可相互對應(yīng)參照。
圖6為本發(fā)明實施例提供的固態(tài)硬盤數(shù)據(jù)傳輸裝置的結(jié)構(gòu)框圖,參照圖6固態(tài)硬盤數(shù)據(jù)傳輸裝置可以包括:
接收模塊100,用于接收數(shù)據(jù)訪問請求;
獲取模塊200,用于獲取FTL映射表緩存數(shù)據(jù),所述FTL映射表緩存數(shù)據(jù)為從FLASH將FTL映射表條目加載入緩存;
判斷模塊300,用于通過所述FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù);
傳輸模塊400,用于在判定緩存中有待訪問數(shù)據(jù)時,則直接把緩存中對應(yīng)的所述待訪問數(shù)據(jù)傳輸至上位機。
在上述實施例的基礎(chǔ)上,本發(fā)明所提供的固態(tài)硬盤數(shù)據(jù)傳輸裝置中,所述FTL映射表緩存數(shù)據(jù)包括:狀態(tài)、掩碼、FLASH頁號、有效字段、臟頁字段、LRU字段、標記字段以及緩存頁號字段。
作為一種具體實施方式,本發(fā)明所提供的固態(tài)硬盤數(shù)據(jù)傳輸裝置中,傳輸模塊還用于:
在通過所述FTL映射表緩存數(shù)據(jù)判斷緩存中是否有待訪問數(shù)據(jù)之后,當所述緩存中沒有所述待訪問數(shù)據(jù)時,通過所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)是否存在空閑條目;如果是,則將FTL映射條目加載入緩存,并將數(shù)據(jù)從FLASH加載入內(nèi)存,將待訪問數(shù)據(jù)傳輸至上位機。
進一步地,所述傳輸模塊還用于:
當所述FTL映射表緩存數(shù)據(jù)檢查組內(nèi)不存在空閑條目時,確定犧牲表項;將FTL映射條目加載入緩存,從FLASH加載數(shù)據(jù)至內(nèi)存,將待訪問數(shù)據(jù)傳輸至上位機。
確定犧牲表項之后,判斷所述犧牲表項是否是臟頁;如果是,則將所述犧牲表項寫入緩存,將對應(yīng)的數(shù)據(jù)寫入到FLASH。
由于內(nèi)存的讀寫速度遠遠大于FLASH的讀寫速度,如果CACHE命中率高的話,上位機訪問磁盤的速度就接近于訪問內(nèi)存的速度。本申請把CPU的CACHE原理應(yīng)用于固態(tài)硬盤,從而使訪問FLASH的速度不成為固態(tài)硬盤的瓶頸??梢?,本申請極大地加快了磁盤的訪問速度,讓用戶能體驗到像訪問內(nèi)存一樣訪問外部存儲設(shè)備,從而可以增加產(chǎn)品經(jīng)濟價值,如存儲服務(wù)器等;通過CACHE原理的使用,簡化了FLASH控制器芯片的實現(xiàn)。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上對本發(fā)明所提供的固態(tài)硬盤數(shù)據(jù)傳輸方法以及裝置進行了詳細介紹。本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。