本發(fā)明涉及固態(tài)硬盤控制技術,特別涉及一種提高固態(tài)硬盤中只讀性能的方法及固態(tài)硬盤。
背景技術:
主機對sata固態(tài)硬盤(ssd)的操作包括讀和寫,因此在設計固態(tài)硬盤的固件(控制軟件)的時將系統(tǒng)分為三大模塊:接口sata(以sata接口為例說明)、ftl(flashtranslationlayer)閃存轉(zhuǎn)換層和nandflash控制器nfc,模塊之間通過fifo交互。圖1是常規(guī)固件拓補結(jié)構(gòu),主機發(fā)起的讀命令請求首先進入sata,轉(zhuǎn)譯之后進入ftl,計算出映射地址后進入nfc,讀出數(shù)據(jù)后返回ftl,再返回sata后完成。
當主機只存在只讀場景時主機只下發(fā)讀命令。在只讀場景下這種設計不是很高效,缺陷一:三大模塊運轉(zhuǎn)都需要占cpu資源;缺陷二:模塊間的請求傳遞采用fifo機制,因為互斥鎖的存在,操作fifo會有一定的延遲,延遲較高。因此常規(guī)固件拓撲結(jié)構(gòu)在只讀場景下的延時較大,性能具有較大的提升空間。
技術實現(xiàn)要素:
針對以上缺陷,本發(fā)明目的如何提升固態(tài)硬盤在只讀場景下的訪問速度。
為了解決以上問題本發(fā)明提出了一種提高固態(tài)硬盤中只讀性能的方法,其特征在固態(tài)硬盤中增加只讀操作通道,具體為在ftl中增設一個地址映射接口,所述地址映射接口實現(xiàn)將讀操作的地址映射為nfc的讀地址,sata接收到只讀操作指令時調(diào)用地址映射接口獲取只讀操作指令對應的nfc地址,再直接將讀取指令發(fā)送給nfc,nfc根據(jù)sata的讀取指令讀取存儲空間中的數(shù)據(jù),直接反饋給sata。
所述的提高固態(tài)硬盤中只讀性能的方法,其特征在于sata與nfc通過下行信號量和上行信號量進行同步。
所述的提高固態(tài)硬盤中只讀性能的方法,其特征在于sata調(diào)用地址映射接口前增加判斷ftl當前是否屬于暫停狀態(tài),如果是則直接調(diào)用,如果不是則向ftl發(fā)送暫停請求,ftl接收到暫停請求后,執(zhí)行完sata已經(jīng)下發(fā)的操作指令后將狀態(tài)設置為暫停狀態(tài),所述暫停狀態(tài)時ftl可以響應地址映射接口的調(diào)用。
所述的提高固態(tài)硬盤中只讀性能的方法,其特征在于固態(tài)硬盤或者主機中還包括只讀識別模塊,用于預估當前主機是否存在大量的只讀操作。
所述的提高固態(tài)硬盤中只讀性能的方法,其特征在于主機中設有專門只讀接口函數(shù),上層應用判斷當前存在大量只讀操作時,調(diào)用專門只讀接口函數(shù)訪問固態(tài)硬盤;固態(tài)硬盤的sata接收到只讀接口函數(shù)時,觸發(fā)并通過只讀操作通道讀取固態(tài)硬盤數(shù)據(jù)。
一種固態(tài)硬盤,其特在在于采用了權利要求1至5任意一項所述的提高固態(tài)硬盤中只讀性能的方法。
本發(fā)明通過識別只讀操作并針對只讀操作簡化硬盤數(shù)據(jù)讀取流程,減少ftl的處理時間,大大提升了只讀性能。
附圖說明
圖1是常規(guī)固件拓補結(jié)構(gòu);
圖2是改進后具體實施例一的固件拓撲結(jié)構(gòu)。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
通過分析現(xiàn)有的固態(tài)硬盤讀數(shù)據(jù)的處理流程,發(fā)現(xiàn)在只讀操作時ftl模塊此時只需提供地址映射功能,并不需要ftl提供額外的其它處理,為了這個單一的功能運行整個模塊比較浪費。針對該情況在固態(tài)硬盤中增加只讀操作通道,具體為通過改造ftl,在ftl中增設一個地址映射接口,地址映射接口只須實現(xiàn)將讀操作的地址映射為nfc的讀地址,sata接收到只讀操作指令時調(diào)用地址映射接口獲取只讀操作指令對應的nfc地址,再直接將讀取指令發(fā)送給nfc,nfc根據(jù)sata的讀取指令讀取存儲空間中的數(shù)據(jù),直接反饋給sata。
圖2是改進后具體實施例一的固件拓撲結(jié)構(gòu),在只讀模式通過只讀操作通道訪問固態(tài)硬盤。暫停ftl模塊的運行,以此來提升通道的運轉(zhuǎn)效率,最終提升只讀性能。通道中只有兩個fifo,而且ftl將不再占用cpu資源。還必須兼顧到暫停ftl不能影響用戶數(shù)據(jù)和內(nèi)部管理數(shù)據(jù),所以暫停ftl要滿足兩個條件:1).sata必須等到之前下發(fā)到ftl的請求都回到sata,這樣就不會影響用戶數(shù)據(jù)。2).sata必須等到ftl暫停內(nèi)部處理,這樣就不會影響內(nèi)部管理數(shù)據(jù)。因此在sata調(diào)用地址映射接口前增加判斷ftl當前是否屬于暫停狀態(tài),如果是則直接調(diào)用,如果不是則向ftl發(fā)送暫停請求,ftl接收到暫停請求后,執(zhí)行完sata已經(jīng)下發(fā)的操作指令后將狀態(tài)設置為暫停狀態(tài),所述暫停狀態(tài)時ftl可以響應地址映射接口的調(diào)用。
同時在固態(tài)硬盤或者主機中還增加設置只讀識別模塊,用于預估當前主機是否存在大量的只讀操作。
優(yōu)選在主機中設有專門只讀接口函數(shù),因為上層應用更清楚其應用場景,在存在大量只讀的場景中主動觸發(fā)和調(diào)用專門只讀接口函數(shù)訪問固態(tài)硬盤;固態(tài)硬盤的sata接收到只讀接口函數(shù)時,觸發(fā)并通過只讀操作通道讀取固態(tài)硬盤數(shù)據(jù)。減少固體硬盤內(nèi)部狀態(tài)的切換頻率,也更有針對性,效果更優(yōu)。
以上所揭露的僅為本發(fā)明一種實施例而已,當然不能以此來限定本之權利范圍,本領域普通技術人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權利要求所作的等同變化,仍屬于本發(fā)明所涵蓋的范圍。