本發(fā)明涉及固態(tài)硬盤控制技術(shù),特別涉及一種提高固態(tài)硬盤中順序讀取流性能的方法及固態(tài)硬盤。
背景技術(shù):
固態(tài)硬盤的順序讀性能是固態(tài)硬盤的重要性能指標(biāo),對于器件固有響應(yīng)時(shí)間很難進(jìn)行改進(jìn),一般只能通過硬件設(shè)計(jì)更改進(jìn)行優(yōu)化,因此較為困難。固態(tài)硬盤內(nèi)設(shè)有內(nèi)部控制器,實(shí)現(xiàn)與主機(jī)host通訊,接受主機(jī)的控制指令,完成對固態(tài)硬盤存儲介質(zhì)的訪問。一般情況下內(nèi)部還設(shè)有dram緩存,用于緩存主機(jī)host下發(fā)的寫入數(shù)據(jù)的緩存和用于緩存主機(jī)從固態(tài)硬盤存儲介質(zhì)中讀取的用戶數(shù)據(jù)。一般都是根據(jù)主機(jī)host要求的地址進(jìn)行操作,屬于串行操作。圖1是常規(guī)數(shù)據(jù)讀取的流程示意圖,主機(jī)下發(fā)讀命令后,ssd才能啟動nandflash到dram,dram到host的數(shù)據(jù)傳輸。其中數(shù)據(jù)從nandflash到dram與數(shù)據(jù)從dram到host理論上是并行的,但是他們傳輸啟動點(diǎn)是不一致的,因?yàn)閿?shù)據(jù)從nandflash到dram之后,才能啟動dram到host的傳輸,所以dram到host的啟動點(diǎn)會稍晚一點(diǎn)。為方便描述,假設(shè)nandflash到dram數(shù)據(jù)傳輸速度等于dram到host的數(shù)據(jù)傳輸速度。假設(shè)主機(jī)下發(fā)多個(gè)順序讀命令1,2,3,4,5,6,7,……,每個(gè)命令的大小一樣,順讀命令實(shí)際執(zhí)行時(shí)從dram反饋給主機(jī)的數(shù)據(jù)都具有一定的延時(shí),因此整體的順序讀取的性能不佳。
技術(shù)實(shí)現(xiàn)要素:
針對以上缺陷,本發(fā)明目的如何提高固態(tài)硬盤讀操作的速度,提速固態(tài)硬盤性能。
為了解決以上問題本發(fā)明提出了一種提高固態(tài)硬盤中順序讀取流性能的方法,其特征在于固態(tài)硬盤控制器接收到主機(jī)讀數(shù)據(jù)指令后,先在硬盤緩存中查找是否存在所需讀取的數(shù)據(jù),如果有直接從硬盤緩存中將數(shù)據(jù)返回給主機(jī);如果固態(tài)緩存中不存在則觸發(fā)從固態(tài)硬盤讀取數(shù)據(jù)的操作;同時(shí)將讀數(shù)據(jù)指令訪問的邏輯地址相鄰特別是后續(xù)的數(shù)據(jù)預(yù)先讀取到硬盤緩存中,實(shí)現(xiàn)數(shù)據(jù)預(yù)緩存。
所述的提高固態(tài)硬盤中順序讀取流性能的方法,其特征在于所述固態(tài)硬盤的緩存中至少設(shè)置有一個(gè)緩存數(shù)據(jù)信息列表,固態(tài)硬盤接收到主機(jī)讀數(shù)據(jù)指令后通過檢索緩存數(shù)據(jù)信息列表快速判斷硬盤緩存中是否存在所需讀取的數(shù)據(jù);所有從固態(tài)硬盤中讀取到硬盤緩存的操作都包括將讀緩存數(shù)據(jù)信息更新到緩存數(shù)據(jù)信息列表中。
所述的提高固態(tài)硬盤中順序讀取流性能的方法,其特征在于將硬盤緩存的數(shù)據(jù)返回給主機(jī)后,立即將該數(shù)據(jù)所對應(yīng)的硬盤緩存空間進(jìn)行回收,并更新緩存數(shù)據(jù)信息列表。
所述的提高固態(tài)硬盤中順序讀取流性能的方法,其特征在于所述緩存數(shù)據(jù)信息列表中包括各個(gè)緩存數(shù)據(jù)的存入時(shí)間。
所述的提高固態(tài)硬盤中順序讀取流性能的方法,其特征在于所述固態(tài)硬盤控制器上還包括緩存回收程序,所述緩存回收程序根據(jù)緩存數(shù)據(jù)的存入時(shí)間,將緩存時(shí)間超過預(yù)先設(shè)定的時(shí)間的硬盤緩存空間進(jìn)行回收。
一種固態(tài)硬盤,其特征在于采用了權(quán)利要求1至5任意一項(xiàng)所述的提高固態(tài)硬盤中順序讀取流性能的方法提高固態(tài)硬盤的順序讀性能。
本發(fā)明通過分析主機(jī)應(yīng)用程序訪問數(shù)據(jù)的特點(diǎn),其存在大量的順序讀操作,將當(dāng)前讀指令順序相鄰的數(shù)據(jù)預(yù)緩存到固態(tài)緩存中,大概率減少后續(xù)指令數(shù)據(jù)讀取響應(yīng)時(shí)間,提升固態(tài)硬盤讀取的性能,尤其是在順序讀取中。
附圖說明
圖1是常規(guī)數(shù)據(jù)讀取的流程示意圖;
圖2是改進(jìn)后數(shù)據(jù)讀取的流程示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
經(jīng)過分析大比例的app應(yīng)用也就是主機(jī)對固態(tài)硬盤的數(shù)據(jù)訪問,大多存在順序邏輯地址lba數(shù)據(jù)的數(shù)據(jù)讀取,因此如果可以提升順序數(shù)據(jù)讀取的速度,將可以對固態(tài)硬盤的讀性能有較大提升。
因此提出了一種提高固態(tài)硬盤中順序讀取流性能的方法,在于所述固態(tài)硬盤的緩存中至少設(shè)置有一個(gè)緩存數(shù)據(jù)信息列表,固態(tài)硬盤接收到主機(jī)讀數(shù)據(jù)指令后通過檢索緩存數(shù)據(jù)信息列表快速判斷硬盤緩存中是否存在所需讀取的數(shù)據(jù);如果有直接從硬盤緩存中將數(shù)據(jù)返回給主機(jī);如果固態(tài)緩存中不存在則觸發(fā)從存儲介質(zhì)讀取數(shù)據(jù)的操作;同時(shí)將讀數(shù)據(jù)指令訪問的邏輯地址相鄰的邏輯地址上的多塊數(shù)據(jù)預(yù)先讀取到固態(tài)硬盤的硬盤緩存中,實(shí)現(xiàn)數(shù)據(jù)預(yù)緩存。所有從固態(tài)硬盤中讀取到硬盤緩存的操作都包括將讀緩存數(shù)據(jù)信息更新到緩存數(shù)據(jù)信息列表中。將硬盤緩存的數(shù)據(jù)返回給主機(jī)后,立即將該數(shù)據(jù)所對應(yīng)的硬盤緩存空間進(jìn)行回收,并更新緩存數(shù)據(jù)信息列表。
為了進(jìn)一步優(yōu)化固態(tài)硬盤緩存,如果預(yù)緩存的數(shù)據(jù)在一段時(shí)間內(nèi)都無訪問,則其近期被訪問的概率將降低,因此緩存數(shù)據(jù)信息列表中還包括了各個(gè)緩存數(shù)據(jù)的存入時(shí)間。緩存回收程序根據(jù)緩存數(shù)據(jù)的存入時(shí)間,將緩存時(shí)間超過預(yù)先設(shè)定的時(shí)間的硬盤緩存空間進(jìn)行回收。
圖2是改進(jìn)后數(shù)據(jù)讀取的流程示意圖;固態(tài)硬盤ssd預(yù)先把后面的數(shù)據(jù)從nandflash上讀到dram,待后續(xù)的順序讀命令下發(fā)到ssd后,直接進(jìn)行dram到host的數(shù)據(jù)傳輸。
依然假設(shè)主機(jī)下發(fā)多個(gè)順序讀命令1,2,3,4,5,6,7,8,9……,每個(gè)命令的大小一樣。ssd在接收到命令2時(shí)發(fā)現(xiàn)它和之前的命令1的lba區(qū)間是順序的,那么猜測之后的命令也是順序的,則ssd后臺啟動nandflash到dram的數(shù)據(jù)傳輸,把后續(xù)的數(shù)據(jù)預(yù)先讀到dram中,待后續(xù)的順序讀命令下發(fā)到ssd后,發(fā)現(xiàn)數(shù)據(jù)已在dram中準(zhǔn)備好了,則直接從dram中拿數(shù)據(jù),大大提升了順序讀性能。這些命令的執(zhí)行情況見圖2。從圖中可以看出這些命令的總體執(zhí)行時(shí)間具有較大的縮短。
以上所揭露的僅為本發(fā)明一種實(shí)施例而已,當(dāng)然不能以此來限定本之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于本發(fā)明所涵蓋的范圍。