亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

SSD驅(qū)動(dòng)器中的改進(jìn)的無(wú)用單元收集的制作方法

文檔序號(hào):12119160閱讀:261來(lái)源:國(guó)知局
SSD驅(qū)動(dòng)器中的改進(jìn)的無(wú)用單元收集的制作方法與工藝

發(fā)明領(lǐng)域

本發(fā)明涉及用于存儲(chǔ)和訪(fǎng)問(wèn)閃存系統(tǒng)中的數(shù)據(jù)的系統(tǒng)和方法。

發(fā)明背景

也被稱(chēng)為SSD的固態(tài)驅(qū)動(dòng)器是利用NAND閃存設(shè)備作為存儲(chǔ)元件的數(shù)據(jù)存儲(chǔ)設(shè)備。一般,它們具有在一端上接受主機(jī)命令并在另一端上傳遞主機(jī)命令到NAND閃存的SSD控制器。NAND閃存是當(dāng)被斷電時(shí)保留數(shù)據(jù)的一種類(lèi)型的非易失性存儲(chǔ)設(shè)備。SSD控制器通過(guò)NAND接口訪(fǎng)問(wèn)NAND閃存設(shè)備。

NAND閃存設(shè)備包括多個(gè)閃存塊或塊,每個(gè)塊分成多個(gè)頁(yè)面。NAND閃存具有對(duì)寫(xiě)操作的根本性限制:閃存頁(yè)面必須在寫(xiě)可發(fā)生之前被擦除,且擦除必須在閃存塊粒度中被完成。這個(gè)特征產(chǎn)生必要的無(wú)用單元收集(GC)——讀閃存塊,丟棄無(wú)效數(shù)據(jù)(無(wú)用單元),通過(guò)將有效數(shù)據(jù)寫(xiě)到另一閃存塊來(lái)保留它,并擦除第一塊以使它為新的即將開(kāi)始的寫(xiě)做準(zhǔn)備的操作。

無(wú)用單元收集可能消耗很多讀/寫(xiě)帶寬并引起寫(xiě)放大(WA),這減小NAND閃存壽命。在常規(guī)基于NAND的存儲(chǔ)器中,數(shù)據(jù)總是有效的,直到被明確地刪除為止。GC必須保留還沒(méi)有被刪除的所有數(shù)據(jù)。SSD賣(mài)方因此必須執(zhí)行超額供給(OP),其保留總存儲(chǔ)容量的一部分用于GC使用。OP可將WA減小到某個(gè)水平,但以對(duì)用戶(hù)的較少可用空間為代價(jià)。

本文公開(kāi)的裝置和方法提供用于在NAND閃存設(shè)備中執(zhí)行無(wú)用單元收集的改進(jìn)的方法。

附圖的簡(jiǎn)要說(shuō)明

為了使本發(fā)明的優(yōu)點(diǎn)被更容易理解,將通過(guò)參考在附圖中示出的特定實(shí)施方式來(lái)提供在上面簡(jiǎn)要描述的本發(fā)明的更具體的描述。理解了這些附圖只描繪本發(fā)明的一般實(shí)施方式且因此不應(yīng)被考慮為其范圍的限制后,將通過(guò)附圖的使用以額外的特殊性和細(xì)節(jié)來(lái)描述和解釋本發(fā)明,其中:

圖1是適合于實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施方式的方法的計(jì)算系統(tǒng)的示意性方框圖;

圖2是根據(jù)現(xiàn)有技術(shù)的存儲(chǔ)系統(tǒng)的部件的示意性方框圖;

圖3是根據(jù)本發(fā)明的實(shí)施方式的實(shí)現(xiàn)無(wú)用單元收集的部件的示意性方框圖;

圖4是根據(jù)本發(fā)明的實(shí)施方式的用于計(jì)算塊的溫度的方法的過(guò)程流程圖;以及

圖5是根據(jù)本發(fā)明的實(shí)施方式的用于執(zhí)行無(wú)用單元收集的方法的過(guò)程流程圖。

詳細(xì)描述

將容易理解,可在各種不同的配置中布置并設(shè)計(jì)如通常在本文的附圖中所述和所示的本發(fā)明的部件。因此,如在附圖中表示的本發(fā)明的實(shí)施方式的下面的更詳細(xì)描述并不意欲限制如所主張的本發(fā)明的范圍,而是僅僅代表根據(jù)本發(fā)明的目前設(shè)想的實(shí)施方式的某些例子。通過(guò)參考附圖將最好地理解目前描述的實(shí)施方式,其中相似的部件始終由相似的數(shù)字表示。

響應(yīng)于當(dāng)前技術(shù)水平且特別是響應(yīng)于在本領(lǐng)域中的還沒(méi)有通過(guò)當(dāng)前可用的裝置和方法完全解決的問(wèn)題和需要來(lái)發(fā)展本發(fā)明。

根據(jù)本發(fā)明的實(shí)施方式可被體現(xiàn)為裝置、方法或計(jì)算機(jī)程序產(chǎn)品。相應(yīng)地,本發(fā)明可采取完全硬件實(shí)施方式、完全軟件實(shí)施方式(包括固件、常駐軟件、微代碼等)或組合通常都可在本文被稱(chēng)為“模塊”或“系統(tǒng)”的軟件和硬件方面的實(shí)施方式的形式。此外,本發(fā)明可采取體現(xiàn)在任何有形表現(xiàn)介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,有形表現(xiàn)介質(zhì)具有體現(xiàn)在介質(zhì)中的計(jì)算機(jī)可用的程序代碼。

可利用一個(gè)或多個(gè)計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)的任何組合。例如,計(jì)算機(jī)可讀介質(zhì)可包括便攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)設(shè)備、只讀存儲(chǔ)器(ROM)設(shè)備、可擦除可編程只讀存儲(chǔ)器(EPROM或閃存)設(shè)備、便攜式光盤(pán)只讀存儲(chǔ)器(CDROM)、光學(xué)存儲(chǔ)設(shè)備和磁性存儲(chǔ)設(shè)備中的一種或多種。在所選擇的實(shí)施方式中,計(jì)算機(jī)可讀介質(zhì)可包括可包含、存儲(chǔ)、傳遞、傳播或傳送用于由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或結(jié)合指令執(zhí)行系統(tǒng)、裝置或設(shè)備來(lái)使用的程序的任何非臨時(shí)介質(zhì)。

可以用一種或多種編程語(yǔ)言——包括面向?qū)ο蟮木幊陶Z(yǔ)言例如Java、Smalltalk、C++等和常規(guī)過(guò)程編程語(yǔ)言例如“C”編程語(yǔ)言或類(lèi)似的編程語(yǔ)言——的任何組合來(lái)寫(xiě)用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī)程序代碼。程序代碼可完全在計(jì)算機(jī)系統(tǒng)上作為獨(dú)立軟件封裝、在獨(dú)立硬件單元上、部分地在與計(jì)算機(jī)間隔開(kāi)某個(gè)距離的遠(yuǎn)程計(jì)算機(jī)上、或完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一情形中,遠(yuǎn)程計(jì)算機(jī)可通過(guò)任何類(lèi)型的網(wǎng)絡(luò)——包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)——連接到計(jì)算機(jī),或到外部計(jì)算機(jī)的連接可被做出(例如使用互聯(lián)網(wǎng)服務(wù)提供商通過(guò)互聯(lián)網(wǎng))。

下面參考根據(jù)本發(fā)明的實(shí)施方式的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖圖示和/或方框圖來(lái)描述本發(fā)明。將理解,流程圖圖示和/或方框圖的每個(gè)框和在流程圖圖示和/或方框圖中的框的組合可由計(jì)算機(jī)程序指令或代碼實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可被提供到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)的處理器或其它可編程數(shù)據(jù)處理裝置以產(chǎn)生機(jī)器,使得經(jīng)由計(jì)算機(jī)的處理器或其它可編程數(shù)據(jù)處理裝置執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)在流程圖和/或一個(gè)或多個(gè)方框圖中規(guī)定的功能/行動(dòng)的工具。

這些計(jì)算機(jī)程序指令還可存儲(chǔ)在可指導(dǎo)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定的方式運(yùn)行的非臨時(shí)計(jì)算機(jī)可讀介質(zhì)中,使得存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生制造物品,制造物品包括實(shí)現(xiàn)在流程圖和/或一個(gè)或多個(gè)方框圖中規(guī)定的功能/行動(dòng)的指令工具。

計(jì)算機(jī)程序指令還可被裝到計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置上以使一系列操作步驟在計(jì)算機(jī)或其它可編程裝置上被執(zhí)行來(lái)產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖和/或一個(gè)或多個(gè)方框圖中規(guī)定的功能/行動(dòng)的過(guò)程。

圖1是示出示例計(jì)算設(shè)備100的方框圖。計(jì)算設(shè)備100可用于執(zhí)行各種過(guò)程,例如在本文討論的過(guò)程。計(jì)算設(shè)備100可以起服務(wù)器、客戶(hù)端或任何其它計(jì)算實(shí)體的作用。計(jì)算設(shè)備可執(zhí)行如本文討論的各種監(jiān)控功能,并可執(zhí)行一種或多種應(yīng)用程序,例如本文所述的應(yīng)用程序。計(jì)算設(shè)備100可以是各種計(jì)算設(shè)備例如桌上型計(jì)算機(jī)、筆記本計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持計(jì)算機(jī)、平板計(jì)算機(jī)等中的任一種。

計(jì)算設(shè)備100包括一個(gè)或多個(gè)處理器102、一個(gè)或多個(gè)存儲(chǔ)器設(shè)備104、一個(gè)或多個(gè)接口106、一個(gè)或多個(gè)大容量存儲(chǔ)設(shè)備108、一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備110和顯示設(shè)備130,所有這些設(shè)備都耦合到總線(xiàn)112。處理器102包括執(zhí)行存儲(chǔ)在存儲(chǔ)器設(shè)備104和/或大容量存儲(chǔ)設(shè)備108中的指令的一個(gè)或多個(gè)處理器或控制器。處理器102還可包括各種類(lèi)型的計(jì)算機(jī)可讀介質(zhì),例如高速緩存存儲(chǔ)器。

存儲(chǔ)器設(shè)備104包括各種計(jì)算機(jī)可讀介質(zhì),例如易失性存儲(chǔ)器(例如隨機(jī)存取存儲(chǔ)器(RAM)114)和/或非易失性存儲(chǔ)器(例如只讀存儲(chǔ)器(ROM)116)。存儲(chǔ)器設(shè)備104還可包括可寫(xiě)ROM,例如閃存。

大容量存儲(chǔ)設(shè)備108包括各種計(jì)算機(jī)可讀介質(zhì),例如磁帶、磁盤(pán)、光盤(pán)、固態(tài)存儲(chǔ)器(例如閃存)等。如圖1所示,特定的大容量存儲(chǔ)設(shè)備是硬盤(pán)驅(qū)動(dòng)器124。各種驅(qū)動(dòng)器也可被包括在大容量存儲(chǔ)設(shè)備108中以能夠從各種計(jì)算機(jī)可讀介質(zhì)讀取和/或?qū)懙礁鞣N計(jì)算機(jī)可讀介質(zhì)。大容量存儲(chǔ)設(shè)備108包括可移動(dòng)介質(zhì)126和/或不可移動(dòng)介質(zhì)。

I/O設(shè)備110包括允許數(shù)據(jù)和/或其它信息被輸入到計(jì)算設(shè)備100或從計(jì)算設(shè)備100取回的各種設(shè)備。示例I/O設(shè)備110包括光標(biāo)控制設(shè)備、鍵盤(pán)、袖珍鍵盤(pán)、麥克風(fēng)、監(jiān)視器或其它顯示設(shè)備、揚(yáng)聲器、打印機(jī)、網(wǎng)絡(luò)接口卡、調(diào)制解調(diào)器、鏡頭、CCD或其它圖像捕獲設(shè)備等。

顯示設(shè)備130包括能夠向計(jì)算設(shè)備100的一個(gè)或多個(gè)用戶(hù)顯示信息的任何類(lèi)型的設(shè)備。顯示設(shè)備130的例子包括監(jiān)視器、顯示終端、視頻投影設(shè)備等。

接口106包括允許計(jì)算設(shè)備100與其它系統(tǒng)、設(shè)備或計(jì)算環(huán)境交互作用的各種接口。示例接口106包括任何數(shù)量的不同網(wǎng)絡(luò)接口120,例如本地局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、無(wú)線(xiàn)網(wǎng)絡(luò)和互聯(lián)網(wǎng)的接口。其它接口包括用戶(hù)接口118和外圍設(shè)備接口122。接口106還可包括一個(gè)或多個(gè)用戶(hù)接口元件118。接口106還可包括一個(gè)或多個(gè)外圍接口,例如打印機(jī)、指示設(shè)備(鼠標(biāo)、跟蹤板等)、鍵盤(pán)等的接口。

總線(xiàn)112允許處理器102、存儲(chǔ)器設(shè)備104、接口106、大容量存儲(chǔ)設(shè)備108和I/O設(shè)備110與彼此以及耦合到總線(xiàn)112的其它設(shè)備或部件通信??偩€(xiàn)112代表幾種類(lèi)型的總線(xiàn)結(jié)構(gòu)中的一種或多種,例如系統(tǒng)總線(xiàn)、PCI總線(xiàn)、IEEE 1394總線(xiàn)、USB總線(xiàn)等。

為了說(shuō)明的目的,程序和其它可執(zhí)行程序部件在本文被示為分立的塊,但是應(yīng)理解,這樣的程序和部件可在各種時(shí)間存在于計(jì)算設(shè)備100的不同存儲(chǔ)部件中,并由處理器102執(zhí)行??蛇x地,本文所述的系統(tǒng)和過(guò)程可在硬件或硬件、軟件和/或固件的組合中實(shí)現(xiàn)。例如,一個(gè)或多個(gè)專(zhuān)用集成電路(ASIC)可被編程以執(zhí)行本文所述的一個(gè)或多個(gè)系統(tǒng)和過(guò)程。

參考圖2,在一些實(shí)施方式中,包括固態(tài)驅(qū)動(dòng)器(SSD)200的系統(tǒng)200可包括多個(gè)NAND閃存設(shè)備202。一個(gè)或多個(gè)NAND設(shè)備202可與NAND接口204交互作用,NAND接口204與SSD控制器206交互作用。SSD控制器206可從主機(jī)接口208接收讀和寫(xiě)指令,主機(jī)接口208在主機(jī)設(shè)備例如包括計(jì)算設(shè)備100的一些或所有屬性的設(shè)備上被實(shí)現(xiàn)或被實(shí)現(xiàn)用于主機(jī)設(shè)備。主機(jī)接口208可以是數(shù)據(jù)總線(xiàn)、存儲(chǔ)器控制器或計(jì)算設(shè)備例如圖1的計(jì)算設(shè)備100的輸入/輸出系統(tǒng)的其它部件。

本文公開(kāi)的系統(tǒng)和方法可由FTL(閃存轉(zhuǎn)換層)控制器210實(shí)現(xiàn)。FTL控制器可由SSD控制器206或由主機(jī)接口208或耦合到SSD控制器206的主機(jī)系統(tǒng)的其它部件或處理設(shè)備實(shí)現(xiàn)。

參考圖3,在所示實(shí)施方式中,F(xiàn)TL控制器210實(shí)現(xiàn)各種模塊和數(shù)據(jù)結(jié)構(gòu)。

FTL控制器210可包括執(zhí)行來(lái)自主機(jī)接口208的讀和寫(xiě)指令的輸入/輸出(I/O)模塊300。I/O模塊300可以用本領(lǐng)域中已知的任何方式執(zhí)行這些指令。I/O模塊300可調(diào)用對(duì)來(lái)自NAND閃存202的讀請(qǐng)求中引用的數(shù)據(jù)的取回并將它返回到主機(jī)接口208。I/O模塊300可調(diào)用對(duì)被包括在寫(xiě)請(qǐng)求中的數(shù)據(jù)到NAND閃存202的寫(xiě)入。

讀請(qǐng)求可引用存儲(chǔ)在NAND閃存202中的數(shù)據(jù)對(duì)象。NAND閃存202可分成多個(gè)存儲(chǔ)器塊,每個(gè)塊代表NAND閃存202的不同芯片或芯片的部分。相應(yīng)地,讀請(qǐng)求可引用多個(gè)存儲(chǔ)器塊中的一個(gè)塊以及存儲(chǔ)在那個(gè)塊中的數(shù)據(jù)對(duì)象。數(shù)據(jù)對(duì)象可以是頁(yè)面或存儲(chǔ)器的某個(gè)其它單元,使得每個(gè)數(shù)據(jù)對(duì)象具有相同的大小。

FTL控制器210可實(shí)現(xiàn)無(wú)用單元收集模塊302,其執(zhí)行無(wú)用單元收集以釋放包括大量無(wú)效數(shù)據(jù)對(duì)象的存儲(chǔ)器塊。無(wú)用單元收集模塊302可包括根據(jù)本文公開(kāi)的方法來(lái)選擇用于無(wú)用單元收集的塊的塊選擇模塊304。例如,塊選擇模塊304可根據(jù)多個(gè)存儲(chǔ)器塊的“溫度”例如根據(jù)在下文中所述的圖5的方法500來(lái)選擇用于無(wú)用單元收集的塊。

無(wú)用單元收集模塊302可包括無(wú)效模塊306。無(wú)效模塊306在無(wú)用單元收集期間積極地使數(shù)據(jù)對(duì)象無(wú)效以空出存儲(chǔ)被重新寫(xiě)到新位置的有效對(duì)象所需的空間。在下文中也關(guān)于圖5的方法500描述在無(wú)用單元收集期間使對(duì)象無(wú)效的過(guò)程。相應(yīng)地,各種“無(wú)效標(biāo)準(zhǔn)”可用于使數(shù)據(jù)對(duì)象無(wú)效:它可由于被擦除或由無(wú)效模塊306積極地?zé)o效而被無(wú)效,如在本文詳細(xì)描述的。

無(wú)用單元收集模塊302還可包括基于在其中存儲(chǔ)的有效對(duì)象的數(shù)量和其中的數(shù)據(jù)對(duì)象被訪(fǎng)問(wèn)的新近性來(lái)確定塊的溫度的溫度更新模塊308。下面關(guān)于圖4的方法400描述塊的溫度被確定所用的方法。

可使用LRU列表310來(lái)計(jì)算塊的溫度。LRU列表310以當(dāng)數(shù)據(jù)對(duì)象被訪(fǎng)問(wèn)時(shí)的相反順序列出數(shù)據(jù)對(duì)象。特別是,響應(yīng)于每個(gè)讀請(qǐng)求,對(duì)象引用312a-312c可被添加到LRU列表310的最上面的條目,且現(xiàn)有的條目將接著在LRU列表310中向下移動(dòng)。相應(yīng)地,在所示例子中,最近執(zhí)行的讀請(qǐng)求引用對(duì)象引用312a。

LRU列表310可被實(shí)現(xiàn)為具有指示最近的條目的位置,即列表的頂部的指針的環(huán)形緩沖區(qū)。相應(yīng)地,將對(duì)象引用312a添加到列表的頂部可包括用對(duì)象引用312a蓋寫(xiě)在LRU列表310中的最老的條目,以及將指針更新以引用現(xiàn)在存儲(chǔ)對(duì)象引用312a的位置。LRU列表310可分成熱列表314和冷列表316,其中熱列表314包括包含最頂部條目的最新的條目。熱列表314和冷列表316中的每個(gè)可被實(shí)現(xiàn)為單獨(dú)的數(shù)據(jù)結(jié)構(gòu),例如環(huán)形緩沖區(qū)或類(lèi)似物。冷列表316包括最不新近的條目。在一些實(shí)施方式中,熱列表314是LRU 310的上半部分。然而,可使用其它劃分。熱列表314可具有等于可存儲(chǔ)在由FTL控制器控制的存儲(chǔ)器設(shè)備中的數(shù)據(jù)對(duì)象的數(shù)量的N%(例如30%、50%等)的數(shù)量的條目。冷列表316可具有等于可存儲(chǔ)在由FTL控制器控制的存儲(chǔ)器設(shè)備中的數(shù)據(jù)對(duì)象的數(shù)量的(100-N)%的數(shù)量的條目。例如,熱列表314可以是LRU列表310的頂部50到30%或某個(gè)其它值。

為塊計(jì)算的溫度值可存儲(chǔ)在溫度儲(chǔ)存器318中。溫度儲(chǔ)存器可存儲(chǔ)按照值排序的溫度值。在所示實(shí)施方式中,通過(guò)將塊分配到倉(cāng)(bin)320a-320c來(lái)減小將溫度值排序所需的處理的量,每個(gè)倉(cāng)代表值的范圍。例如,倉(cāng)320a可以比倉(cāng)320b包括更高的值范圍,以及依此類(lèi)推到最后一個(gè)倉(cāng)320c。可定義任何數(shù)量的倉(cāng)320a-320c。當(dāng)計(jì)算塊的溫度時(shí),塊可被分配到一個(gè)倉(cāng),該倉(cāng)在其值范圍內(nèi)包括該溫度。將塊分配到倉(cāng)320a-320c可包括將唯一地識(shí)別那個(gè)塊的塊引用322a-322e添加到那個(gè)倉(cāng)的鏈表。例如,塊引用322a、322b在與倉(cāng)320a相關(guān)的鏈表324a中,以及塊引用322a-322e被分配到與倉(cāng)320c相關(guān)的鏈表324c。如在圖3中明顯的,倉(cāng)320a-320c可具有分配到其的任何數(shù)量的塊或可以沒(méi)有分配到其的塊。

當(dāng)執(zhí)行無(wú)用單元收集時(shí),塊識(shí)別模塊304可從具有最低的溫度值范圍的倉(cāng)選擇塊,該倉(cāng)具有分配到其的至少一個(gè)塊。例如,在所示實(shí)施方式中,在相應(yīng)于塊引用322a-322b的塊之前,相應(yīng)于塊引用322c-322e的塊首先被選擇用于無(wú)用單元收集。

圖4示出可用于計(jì)算塊的溫度的示例方法400。方法400可由溫度更新模塊308執(zhí)行。方法400可包括檢測(cè)引用存儲(chǔ)在塊中的數(shù)據(jù)對(duì)象——在下文中分別是“所請(qǐng)求的數(shù)據(jù)對(duì)象”和“所請(qǐng)求的塊”——的讀操作402。響應(yīng)于讀請(qǐng)求,通過(guò)將對(duì)所請(qǐng)求的數(shù)據(jù)對(duì)象的引用添加到列表的頂部來(lái)對(duì)LRU列表310進(jìn)行更新404。

方法400還可包括評(píng)估熱列表314是否是滿(mǎn)的406。如果是,則可將熱列表314的最后一個(gè)對(duì)象移動(dòng)到冷列表316的頂部408。如果冷列表316是滿(mǎn)的,則在冷列表316中的最后一個(gè)條目可移除或在那里被來(lái)自熱列表314的最后一個(gè)對(duì)象蓋寫(xiě)。在一些實(shí)施方式中,冷列表316不是可填充的,即熱列表和冷列表314、316可具有等于可存儲(chǔ)在由FTL控制器210控制的存儲(chǔ)器設(shè)備中的對(duì)象的總數(shù)的條目的總數(shù)。

可接著更新存儲(chǔ)熱列表314中的以前最后一個(gè)對(duì)象的塊的溫度410。如果在溫度中的變化意味著溫度相應(yīng)于不同的倉(cāng)320a-320c,則塊的倉(cāng)編號(hào)被更新412以引用具有包括存儲(chǔ)以前最后一個(gè)對(duì)象的塊的新溫度的范圍的倉(cāng)320a-320c。

在評(píng)估406的任一情況下,方法400可包括評(píng)估所請(qǐng)求的對(duì)象是否在冷列表316中414。如果不,則方法400可結(jié)束,因?yàn)閷⑺?qǐng)求的對(duì)象移動(dòng)到主機(jī)列表314的頂部將不改變它的溫度,如在下面更詳細(xì)描述的。如果是,則所請(qǐng)求的塊的溫度被更新416,且所請(qǐng)求的塊的倉(cāng)編號(hào)被更新418以引用具有包括所請(qǐng)求的塊的已更新416的溫度的相應(yīng)范圍的倉(cāng)320a-320c。

所請(qǐng)求的數(shù)據(jù)對(duì)象以前在LRU列表310的冷列表316中。如果否,則方法400結(jié)束。如果是,則所請(qǐng)求的塊的溫度被更新408。對(duì)所請(qǐng)求的塊的引用然后被添加到一個(gè)倉(cāng),該倉(cāng)在被分配到其的值范圍內(nèi)包括已更新的溫度值,410。在一些實(shí)施方式中,每個(gè)數(shù)據(jù)對(duì)象的元數(shù)據(jù)可將它的位置存儲(chǔ)在LRU列表310中,例如,標(biāo)記可被包括在每個(gè)數(shù)據(jù)對(duì)象的元數(shù)據(jù)中,當(dāng)對(duì)象在LRU列表310的冷列表中時(shí)該標(biāo)記被設(shè)置。

在一些實(shí)施方式中,根據(jù)隨著在塊中的有效對(duì)象的數(shù)量并隨著在塊中的數(shù)據(jù)對(duì)象被讀取的新近性而增加的函數(shù)來(lái)確定塊的溫度。

例如,塊的溫度T可被計(jì)算為T(mén)=V*R,其中V是存儲(chǔ)在塊中的有效數(shù)據(jù)對(duì)象的數(shù)量的度量,而R是存儲(chǔ)在塊中的數(shù)據(jù)對(duì)象被訪(fǎng)問(wèn)的新近性的度量。

在一些實(shí)施方式中,V和R被計(jì)算為:

V=(塊中的有效對(duì)象的數(shù)量)/(塊中的對(duì)象的總數(shù))

R=(存儲(chǔ)在塊中和在LRU列表的熱列表中的有效對(duì)象的數(shù)量)/(在塊中的有效對(duì)象的數(shù)量)

圖4示出響應(yīng)于對(duì)存儲(chǔ)在LRU列表310的冷列表316中的塊中的數(shù)據(jù)對(duì)象的讀請(qǐng)求而更新塊的溫度。在一些實(shí)施方式中,也響應(yīng)于由FTL控制器210接收到引用存儲(chǔ)在塊中的數(shù)據(jù)對(duì)象的刪除請(qǐng)求而更新塊的溫度。既然V和R都是在塊中的有效對(duì)象的數(shù)量的函數(shù),溫度將可能改變,作為數(shù)據(jù)對(duì)象被刪除、即被無(wú)效的結(jié)果。

在一些實(shí)施方式中,寫(xiě)操作被約束為等于整個(gè)塊的尺寸。相應(yīng)地,當(dāng)寫(xiě)到塊(“寫(xiě)塊(written block)”)完成時(shí),存儲(chǔ)在寫(xiě)塊中的所有數(shù)據(jù)對(duì)象都是有效的,所以V的值是1。同樣,緊接著在寫(xiě)操作之后,在寫(xiě)塊中的所有對(duì)象也將被添加在熱列表314的頂部處,因?yàn)樗鼈儎倓偸荌/O操作的對(duì)象。相應(yīng)地,寫(xiě)塊將具有為1或接近1的R值,因?yàn)樗袛?shù)據(jù)對(duì)象將在熱列表314中或熱列表314將完全被寫(xiě)塊的數(shù)據(jù)對(duì)象占據(jù)。當(dāng)將數(shù)據(jù)寫(xiě)到寫(xiě)塊時(shí),可接著更新塊的溫度。如上面提到的,溫度將為1或接近1,因?yàn)閂值是1且R值也為1或接近1。同樣,方法400可包括更新包含對(duì)象的塊的溫度,所述對(duì)象由于被寫(xiě)到寫(xiě)塊的數(shù)據(jù)對(duì)象的添加而如上面關(guān)于步驟408-412所述的從熱列表314移動(dòng)。

參考圖5,可根據(jù)所示方法500來(lái)執(zhí)行無(wú)用單元收集。方法500可由FTL控制器210執(zhí)行。方法500可包括選擇來(lái)自在溫度儲(chǔ)存器318中的最少填充的倉(cāng)320a-320c的塊。例如,在圖3的例子中,可選擇塊322c-322e中的任一個(gè)。方法500可包括選擇502最少填充的倉(cāng)320a-320c的鏈表中的最早的塊引用322e或最近添加的塊引用322c。

如上面提到的,實(shí)現(xiàn)倉(cāng)320a-320c并不需要嚴(yán)格的排序。然而在一些實(shí)施方式中,可按照溫度來(lái)將對(duì)象排序,使得具有最低溫度的塊被選擇。在所示實(shí)施方式中,在步驟502選擇的塊可以沒(méi)有最低溫度,但將具有比與其它倉(cāng)320a-320b相關(guān)的所有其它塊更低的溫度,因?yàn)樵诰哂蟹峙涞狡涞膲K引用322a-322e的所有倉(cāng)中它具有與其相關(guān)的最低的值范圍。

方法500還可包括識(shí)別在所存儲(chǔ)的塊中的“冷”數(shù)據(jù)對(duì)象。具體地,不在LRU列表310的熱列表314中的存儲(chǔ)在選定塊中的任何數(shù)據(jù)對(duì)象可被識(shí)別為冷的504和被無(wú)效506。在一些實(shí)施方式中,使用另一標(biāo)準(zhǔn)。例如,為了計(jì)算塊的溫度的目的,列表中的在其下面對(duì)象被考慮為冷的位置可不同于在熱列表314和冷列表316之間的分界線(xiàn),即它在LRU列表310中可以比冷列表316的頂部更低或更高。

選定塊中的在無(wú)效步驟506之后仍然有效的那些數(shù)據(jù)對(duì)象然后被寫(xiě)到新塊508,且選定塊被擦除510。因?yàn)橐恍┮郧坝行У臄?shù)據(jù)對(duì)象在步驟506被無(wú)效,接收有效數(shù)據(jù)對(duì)象所需的存儲(chǔ)器的數(shù)量減小,這減小寫(xiě)放大。因?yàn)樵诓襟E506無(wú)效的數(shù)據(jù)是冷的,使它們無(wú)效并不明顯影響用戶(hù)訪(fǎng)問(wèn)命中率。

本發(fā)明可體現(xiàn)在其它特定的形式中而不偏離它的精神或基本特征。所述實(shí)施方式應(yīng)在所有方面中被考慮為僅僅例證性的而不是限制性的。特別是,雖然關(guān)于NAND閃存SSD描述了方法,其它SSD設(shè)備或非易失性存儲(chǔ)設(shè)備例如硬盤(pán)驅(qū)動(dòng)器也可受益于本文公開(kāi)的方法。本發(fā)明的范圍因此由所附權(quán)利要求而不是由前述描述指示。出現(xiàn)在權(quán)利要求的等效形式的含義和范圍內(nèi)的所有變化應(yīng)被包括在它們的范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1