專利名稱:包括固態(tài)存儲器設備的存儲系統(tǒng)中的邏輯到物理地址映射的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及包括諸如基于快閃的存儲器設備的固態(tài)存儲器設備的存儲系統(tǒng),并且涉及用于向存儲器在此類存儲器設備上的數(shù)據(jù)有效地提供讀和/或?qū)懺L問的技術(shù),尤其是重點在于邏輯到物理地址映射。
背景技術(shù):
固態(tài)存儲器設備包含可重寫的非易失性存儲器設備,其使用電子電路用于存儲數(shù)據(jù)。目前,在某些領(lǐng)域(諸如在用于膝上型計算機或者臺式計算機的海量存儲應用中),固態(tài)存儲器設備開始取代傳統(tǒng)的存儲設備(諸如硬盤驅(qū)動器和光盤驅(qū)動器)。在諸如企業(yè)存儲系統(tǒng)的其他領(lǐng)域中,也對固態(tài)存儲器設備進行研究用以取代傳統(tǒng)的存儲設備。這是因為固態(tài)存儲器設備提供超常的帶寬以及完美的隨機1/0(輸入/輸出)性能,并且由于不具有可移動部分而提供了受歡迎的魯棒性。然而,向快閃存儲器設備寫入數(shù)據(jù)需要注意快閃技術(shù)中的特性NAND快閃存儲器以頁面和塊為單位進行組織。多個頁面形成塊。讀和寫操作可以應用于作為此類操作的最小單位的頁面,而擦除操作僅可以應用于整個塊。而在其他存儲技術(shù)中,過期的數(shù)據(jù)可以僅僅被新數(shù)據(jù)覆蓋,快閃技術(shù)在向擦除的塊寫入新的數(shù)據(jù)之前需要進行擦除操作。由于在快閃技術(shù)中,擦除操作花費比讀或者寫操作多很多的時間,所以應用了稱為“錯位寫入(write out of place) ”的寫入技術(shù),其中,新的或者更新的數(shù)據(jù)被寫入由可用頁面分配器提供的某些可用頁面,而不是被寫入過期數(shù)據(jù)所駐留的某些頁面。包含過期數(shù)據(jù)的頁面被標記為無效頁面。在某些時刻,稱為“垃圾收集”的過程通過將塊的所有有效頁面的內(nèi)容移動至不同塊處的可用頁面,而將該塊釋放用于新的寫入。因此,所提及的塊最終僅包括無效頁面,并且可以被擦除。該過程需要一些過量的附加寫和讀操作,易見的是,通過此類方法,避免了立即的以及頻繁的擦除操作,這將比某些附加的寫和讀操作更加有助于較高的整體處理。然而,還易見的是,錯位寫入和垃圾收集過程需要來自管理結(jié)構(gòu)的支持,以便將數(shù)據(jù)存儲在快閃存儲器中的物理地址轉(zhuǎn)換為與當前存儲系統(tǒng)交互的高層系統(tǒng)所使用的邏輯地址,反之亦然。用于支持此類轉(zhuǎn)換的裝置可以是LBA到PBA映射表(邏輯塊地址到物理塊地址)或者LPN到PPN映射表(邏輯頁面編號到物理頁面編號),其服從映射的塊或者頁面解析度。包括此類地址映射裝置和相應的例程的管理結(jié)構(gòu)可以有益地在固態(tài)存儲器設備的控制器中實現(xiàn),并且特別地被稱為用于快閃應用的快閃轉(zhuǎn)換層(FTL)??扉W轉(zhuǎn)換層對主機隱藏任何地址轉(zhuǎn)換,以使得快閃轉(zhuǎn)換層可以被理解為管理結(jié)構(gòu),該管理結(jié)構(gòu)將快閃存儲器設備仿真為對主機的LBA可訪問存儲設備。存儲控制器的主存儲器可以是出于各種原因存放地址映射信息的優(yōu)選位置。當然,這對于小的快閃存儲器大小是靈活的。然而,隨著快閃存儲器容量的增加,地址映射信息也增加到如下水平,其中全部映射信息將使得主存儲器大小超出經(jīng)濟效率。提出了若干技術(shù)來緩解這一問題。具體地,在由A. Gupta等人2009年3月7-11日在美國華盛頓的 ASPLOS’ 09 上發(fā)表的 “DFTL :A Flash Translation Layer EmployingDemand-based Selective Caching of Page-level Address Mappings”(在 2010 年 7 月8 日,在互聯(lián)網(wǎng)地址 http://csl. cse. psu. ecu/publications/dftl-asplos09. pdf 訪問和獲取)中,提出了一種基于需求的快閃轉(zhuǎn)換層DFTL,其中,在閃存的某些邏輯上固定部分維護整個邏輯到物理地址轉(zhuǎn)換集合,并且稱為全局映射表。然而,這些映射中僅有少數(shù)存在于SRAM中。存在于SRAM中的這些活躍映射形成高速緩存映射表(CMT)。因為錯位更新在閃存上執(zhí)行,所以轉(zhuǎn)換頁面在物理上分散到整個快閃存儲器上。DFTL通過使用全局轉(zhuǎn)換目錄(GTD)來跟蹤閃存上的所有這些轉(zhuǎn)換頁面。當服務于請求時,使用以下的地址轉(zhuǎn)換過程如果給定讀/寫請求所需要的映射信息存在于(CMT中的)SRAM中,則其通過使用該映射信息讀取/寫入閃存上的數(shù)據(jù)頁面而被直接服務。如果該信息不存在于SRAM中,則需要在讀取/寫入閃存上的數(shù)據(jù)頁面之前,將信息從閃存取回到CMT中。然而,取決于CMT的狀態(tài)以及所使用的替換算法,其可能需要從SRAM中去除條目。
發(fā)明內(nèi)容
根據(jù)第一方面,本發(fā)明實現(xiàn)為用于控制從固態(tài)存儲器設備讀取數(shù)據(jù)和向固態(tài)存儲器設備寫入數(shù)據(jù)的存儲控制器。該存儲控制器包括讀取高速緩存,用于緩存表示存儲在存儲器設備中的地址映射信息的子集的地址映射信息。此類地址映射信息包括用于標識請求主機中的數(shù)據(jù)的邏輯地址信息到用于標識存儲器設備中的數(shù)據(jù)的物理地址信息的映射。存儲控制器還包括寫入高速緩存,用于緩存將要被寫入存儲器設備的地址映射信息。在實施方式中,存儲控制器可以包括以下特征中的一個或多個-寫入高速緩存作為與讀取高速緩存分離的單元來維護,其中,在讀取高速緩存中緩存的內(nèi)容與在寫入高速緩存中緩存的內(nèi)容獨立地可搜索,反之亦然;-包括寫入高速緩存的非易失性存儲器和易失性故障保護存儲器中的一個,以及包括讀取高速緩存的易失性存儲器;-分配引擎,用于服從寫入工作負載和讀取工作負載中的一個或多個向讀取高速緩存和寫入高速緩存分配高速緩存存儲器空間;-寫入高速緩存中的地址映射條目包括物理地址信息、與物理地址信息相關(guān)聯(lián)的邏輯地址信息、以及用于對屬于共同地址映射區(qū)域的地址映射信息進行分組的參考;-參考與用于指向?qū)懭敫咚倬彺嬷械牧硪坏刂酚成錀l目的指針相對應,該另一地址映射條目被標識為存儲在存儲器設備的共同頁面中;-存儲在寫入高速緩存中的數(shù)據(jù)結(jié)構(gòu),包括頁面標識符、用于計數(shù)寫入高速緩存中與頁面標識符相關(guān)聯(lián)的條目的數(shù)目的計數(shù)器、以及指向與此類頁面標識符相關(guān)聯(lián)的寫入高速緩存條目的條目指針。根據(jù)另一方面,本發(fā)明實現(xiàn)為一種存儲系統(tǒng),包括根據(jù)存儲控制器的實施方式中的一個的存儲控制器,以及固態(tài)存儲器設備,用于存儲數(shù)據(jù)并且用于存儲地址映射信息,地址映射信息用于將用于標識訪問存儲系統(tǒng)的主機中的數(shù)據(jù)的邏輯地址信息映射到用于標識存儲設備中的數(shù)據(jù)的物理地址信息。根據(jù)另一方面,本發(fā)明實現(xiàn)為一種用于從固態(tài)存儲器設備讀取數(shù)據(jù)的方法,其中在存儲器設備中存儲了數(shù)據(jù)以及映射信息,所述映射信息用于將用于標識請求主機中的數(shù)據(jù)的邏輯地址映射到用于標識存儲器設備中的數(shù)據(jù)的物理地址信息、映射到用于標識請求主機中的數(shù)據(jù)的邏輯地址信息。接收與要被讀取的數(shù)據(jù)相關(guān)聯(lián)的邏輯地址信息。在寫入高速緩存和讀取高速緩存中的一個中搜索邏輯地址信息,寫入高速緩存用于緩存要被寫入到存儲器設備中的地址映射信息,讀取高速緩存用于緩存存儲在存儲器設備中的地址映射信息的子集。如果在搜索的高速緩存(即,在寫入高速緩存和讀取高速緩存中的任一項)中沒有找到所述邏輯地址信息,則分別在另一高速緩存(即,讀取高速緩存或者寫入高速緩存)中搜索所述邏輯地址信息。如果在寫入高速緩存和讀取高速緩存的任一項中都沒有找到所述邏輯地址信息,則通過存儲在存儲器設備中的映射信息來標識和讀取與所述邏輯地址信息相關(guān)聯(lián)的物理地址信息,并且發(fā)布針對所標識的所述物理地址信息的數(shù)據(jù)讀取操作。在實施方式中,讀取方法可以包括以下特征中的一個或多個-如果在寫入高速緩存中找到邏輯地址信息,則基于寫入高速緩存中的相應條目標識與邏輯地址信息相關(guān)聯(lián)的物理地址信息,并且發(fā)布針對所標識的物理地址信息的數(shù)據(jù)讀取操作;-如果在讀取高速緩存中找到邏輯地址信息,則基于與讀取高速緩存中的相應條目標識與邏輯地址信息相關(guān)聯(lián)的物理地址信息,并且發(fā)布針對所標識的所述物理地址信息的數(shù)據(jù)讀取操作;-所讀取的物理地址信息用于更新讀取高速緩存中的條目。根據(jù)另一方面,本發(fā)明實現(xiàn)為一種用于向固態(tài)存儲器設備寫入數(shù)據(jù)的方法,其中,在存儲器設備中存儲了數(shù)據(jù)和映射信息,映射信息用于將標識請求中的數(shù)據(jù)的邏輯地址信息映射到用于標識存儲器設備中的數(shù)據(jù)的物理地址信息。接收數(shù)據(jù)以及與數(shù)據(jù)相關(guān)聯(lián)的邏輯地址信息。將數(shù)據(jù)寫入由某些物理地址信息標識的存儲器設備的位置。在寫入高速緩存中搜索邏輯地址信息,寫入高速緩存專用于緩存要被寫入到存儲器設備中的地址映射信息。如果在寫入高速緩存中沒有找到邏輯地址信息,則將地址映射條目添加到寫入高速緩存中,以包括邏輯地址信息到數(shù)據(jù)現(xiàn)在存儲所位于的物理地址信息的映射。在實施方式中,寫入方法可以包括以下特征中的一個或多個-如果在寫入高速緩存中找到邏輯地址信息,則利用與數(shù)據(jù)新近關(guān)聯(lián)的物理地址信息來更新寫入高速緩存中的相應地址映射條目;-在讀取高速緩存中搜索邏輯地址信息,讀取高速緩存用于緩存表示存儲在存儲器設備中的地址映射信息的子集的地址映射信息。如果在讀取高速緩存中找到邏輯地址信息,則利用與數(shù)據(jù)新近關(guān)聯(lián)的物理地址信息來更新讀取高速緩存中的相應地址映射條目;-在更新寫入高速緩存時,在讀取高速緩存中搜索邏輯地址信息。根據(jù)另一方面,本發(fā)明實現(xiàn)為一種包括計算機可讀介質(zhì)的計算機程序產(chǎn)品,該計算機可讀介質(zhì)具有利用其實現(xiàn)的計算機可讀程序代碼,計算機可讀程序代碼包括配置用于執(zhí)行根據(jù)讀取或者寫入方法的實施方式中的任一種讀取或者寫入方法的計算機可讀程序代碼。可以理解,可以按照與方法權(quán)利要求中列出的不同的順序來執(zhí)行方法步驟。此類不同的順序應當與當前列出的步驟順序同樣也包括在此類權(quán)利要求的范圍中。
通過結(jié)合附圖,參考根據(jù)本發(fā)明的目前優(yōu)選的但是為示意性的實施方式的一下詳細描述,可以更加全面地理解本發(fā)明及其實施方式。附圖示出了 圖1是示出了根據(jù)本發(fā)明的實施方式的存儲系統(tǒng)的框圖;圖2是示出了圖1的存儲系統(tǒng)的另一表示;圖3是示出了根據(jù)本發(fā)明的實施方式的讀取過程的圖;圖4是示出了根據(jù)本發(fā)明的實施方式的讀取過程的流程圖;圖5是示出了根據(jù)本發(fā)明的實施方式的寫入過程的圖;圖6是示出了根據(jù)本發(fā)明的實施方式的寫入過程的流程圖;以及圖7a)是示出了用于在寫入高速緩存清除例程中使用的根據(jù)本發(fā)明的實施方式的寫入高速緩存條目的實施方式,以及圖b)是數(shù)據(jù)結(jié)構(gòu)。
具體實施例方式作為對以下描述的簡介,首先指出的是本發(fā)明的大體方面涉及用于控制從/向固態(tài)存儲器設備讀取和寫入數(shù)據(jù)的存儲控制器。提供了一種用于緩存地址映射信息的讀取高速緩存,該地址映射信息表示存儲器設備中存儲的地址映射信息的子集。地址映射信息包括用于標識請求主機中的數(shù)據(jù)的邏輯地址信息到用于標識存儲器設備中的數(shù)據(jù)的物理地址信息的映射。除了讀取高速緩存,提供了專用寫入高速緩存,以用于緩存將要被寫入存儲器設備中的地址映射信息。換言之,本發(fā)明的構(gòu)思甚至可應用于具有巨大容量的固態(tài)存儲器設備中,因為完整的地址映射信息將被存儲在固態(tài)存儲器設備本身中。僅地址映射信息的一部分(該部分統(tǒng)一表示為地址映射信息的子集)在控制器中的讀取高速緩存中被緩存。讀取高速緩存可以臨時緩存地址映射信息,例如,被標識為比其他地址映射信息使用得更加頻繁的地址映射信息,以使得主機發(fā)出的讀取請求可以快速地被服務,因為當可以在讀取高速緩存中找到所查找的地址映射時,可以將其從讀取高速緩存中去除。需要注意,在優(yōu)選實施方式中,存儲在存儲器設備中的數(shù)據(jù)的子集可以在獨立的數(shù)據(jù)高速緩存中進行緩存,以便提供對此類數(shù)據(jù)的快速訪問。可以有這樣的實施方式,其中,為了支持數(shù)據(jù)的讀取和/或?qū)懭攵嬖诘拇祟悢?shù)據(jù)高速緩存可以在與用于緩存地址映射信息的讀取和寫入高速緩存相同的物理高速緩存存儲器中實現(xiàn),然而,地址映射讀取高速緩存繼而可以在邏輯上與這樣的數(shù)據(jù)高速緩存分離,地址映射讀取高速緩存中緩存的內(nèi)容獨立于該數(shù)據(jù)高速緩存中緩存的內(nèi)容而可檢索,反之亦然。第一種情況下的讀取高速緩存僅保持用于服務讀取請求的地址映射信息。在此類場景中,讀取高速緩存優(yōu)選地不包含先前已經(jīng)改變的地址映射信息或者已經(jīng)添加并且仍然需要寫入到存儲器設備中以用于永久存儲的地址映射信息。此類地址映射在不同的高速緩存(即,寫入高速緩存)中緩存。第一種情況下的寫入高速緩存僅保持仍然需要寫入到存儲器設備中以用于永久存儲的地址映射信息。在這種上下文中,優(yōu)選地,寫入高速緩存在邏輯上與讀取高速緩存分離,其中,寫入高速緩存優(yōu)選地不包含僅用于加速讀取請求的存儲器設備的地址映射信息的子集??梢源嬖谶@樣的實施方式,其中,附加地提供分離的數(shù)據(jù)高速緩存,以用于臨時緩存仍然需要寫入存儲器設備中以用于永久存儲的數(shù)據(jù)。此類數(shù)據(jù)高速緩存可以在相同的物理高速緩存存儲器中實現(xiàn),然而,地址映射寫入高速緩存繼而可以在邏輯上與數(shù)據(jù)高速緩存分離,其中,地址映射寫入高速緩存中緩存的內(nèi)容與數(shù)據(jù)高速緩存中緩存的內(nèi)容相獨立地可檢索,反之亦然。讀取高速緩存和寫入高速緩存二者都可以按照例如最近最少使用(LRU)或者其他高速緩存替換策略維護并且彼此獨立地維護。需要注意,在每個讀取步驟和寫入步驟之間,可以執(zhí)行專用高速緩存維護操作(計數(shù)器)。由于這些取決于所使用的高速緩存策略,所以在此沒有進一步提及。寫入高速緩存和讀取高速緩存可以在控制器中的專用主存儲器區(qū)域中實現(xiàn)。這些高速緩存可以組織為表或者哈希圖或者另一形式的數(shù)據(jù)結(jié)構(gòu)。讀取高速緩存條目有益地按照元數(shù)據(jù)條目來組織,其每個條目包含邏輯地址和與邏輯地址相關(guān)聯(lián)的物理地址,其中條目可以是連續(xù)的或者可以是不連續(xù)的。寫入高速緩存條目可以是個體的邏輯到物理地址映射,其優(yōu)選地被組織為它們所屬的塊。在優(yōu)選實施方式中,寫入高速緩存也可以在物理上與讀取高速緩存分離,其中,兩個高速緩存都使用其基于的不同的存儲器技術(shù)。在一個實施方式中,寫入高速緩存可以在非易失性存儲器中實現(xiàn),而讀取高速緩存可以在易失性存儲器中實現(xiàn)。在該上下文中,優(yōu)選的易失性存儲器是SRAM或者DRAM,優(yōu)選的非易失性存儲器是相變存儲器(PCM)或者MRAM。在另一實施方式中,寫入高速緩存還可以在易失性存儲器中實現(xiàn),然而,寫入高速緩存在其中實現(xiàn)的此類存儲器或者存儲器的至少一部分可以是故障保護(fail-safe)存儲器,其可以被理解為這樣的存儲器,添加了故障保護元件,該故障保護元件防止在控制器斷電時丟失存儲在寫入高速緩存中的地址映射。此類元件可以包括電源備用系統(tǒng),諸如電池支持的SDRAM,或者用于在斷電之前將來自易失性寫入高速緩存中的地址映射緊急存儲到非易失性存儲器中的緊急例程。在另一實施方式中,可以根據(jù)寫入高速緩存的需要來實現(xiàn)整個主存儲器,諸如電池支持的SDRAM、PCM或者MRAM。固態(tài)存儲器設備優(yōu)選地是非易失性、電可重寫存儲器設備,諸如基于NAND快閃的存儲器設備。然而,也可以使用其他固態(tài)存儲器設備,諸如PCM??梢岳斫?,術(shù)語“設備”不限制于單個存儲器芯片。相反,優(yōu)選地,所述設備可以包括組合構(gòu)成存儲器設備的多個存儲器芯片。在下文中,將快閃存儲器設備作為優(yōu)選的實施方式,但是,可以理解,與快閃存儲器設備組合引入的所有特征應當與其他固態(tài)技術(shù)中實現(xiàn)的其他存儲器設備相結(jié)合地公開。在適當?shù)牟僮鳝h(huán)境中,包括存儲控制器和快閃存儲器設備的存儲系統(tǒng)耦接至主機數(shù)字系統(tǒng)——或者簡稱主機——諸如主機接收機系統(tǒng)、塊設備或者文件系統(tǒng)等??扉W存儲器設備提供非易失性大容量存儲以供主機使用。要被寫入到快閃存儲器設備中或者要從快閃存儲器設備讀取的數(shù)據(jù)由主機利用多個邏輯地址信息中的一個來尋址,諸如邏輯塊地址(LBA)。存儲系統(tǒng)將邏輯地址信息變換為多個物理地址信息中的一個,可以通過該一個物理地址信息來尋址存儲在快閃存儲器設備中的數(shù)據(jù)。由此,需要在主機處使用的邏輯地址與在存儲器設備中使用的物理地址之間的例如表格形式的映射,該地址映射信息優(yōu)選地存儲在快閃存儲器設備本身中。地址映射信息可以分散在整個快閃存儲器設備上,并且由此可以表示分散的地址映射表。對于容錯優(yōu)選的是,完整的地址映射信息的多個副本可以存儲在快閃存儲器設備的不同位置中。優(yōu)選地,由于性能原因,整個地址映射信息存儲在快閃存儲器設備中,而讀取和寫入高速緩存維護在控制器的主存儲器中。通過這樣的方法,具有大容量、高性能快閃存儲器設備的存儲系統(tǒng)可以在這樣的系統(tǒng)中實現(xiàn),其中,大的地址映射表存儲在快閃存儲器設備本身中,并且提供了控制器中的主存儲器的高速緩存以用于臨時存儲和快速訪問邏輯到物理地址映射信息。
存儲在快閃存儲器設備中的地址映射表中的條目將物理地址信息指派到邏輯地址信息。具體地,在快閃技術(shù)中,存儲器芯片(例如,典型的NAND快閃存儲器芯片)——作為具有用于二進制信息編碼的單層單元(SLC)的芯片,或者具有用于多層信息編碼的多層單元(MLC)的芯片——包括多個塊,一個塊包括例如64個頁面,每個頁面包含4KB的存儲器空間。這總共達到256KB的塊大小。通常,在一個實施方式中,可以通過使用編碼為32比特字的地址來尋址快閃頁面,以便將整個快閃存儲器設備的最大容量限制于2~32*4KB =16TB。地址映射表可以保持用于每個頁面的一個地址條目,地址條目通常包括物理(頁面)地址和邏輯(頁面)地址。由此,在其中唯一存儲地址信息快閃設備的塊一也稱為地址映射塊——可以保持例如最多65536個地址映射條目。為了均衡此類地址映射塊的磨損,也將這些塊錯位寫入,整個地址映射表因此不是連續(xù)地存儲在快閃存儲器設備中,而是分割為跨越快閃存儲器設備散布的單個塊大小的子表。然而,優(yōu)選地,包含地址映射信息的塊除了地址映射信息不保持用戶數(shù)據(jù)。由于地址映射塊在整個快閃存儲器設備上分散,所以優(yōu)選地,維護包含可以找到此類地址映射塊的物理地址的數(shù)據(jù)結(jié)構(gòu)。此類數(shù)據(jù)結(jié)構(gòu)還可以組織為表,也稱為塊映射表,其將頁面地址的范圍映射為地址映射塊的塊地址。該塊映射表在大小上顯著地小于跨快閃存儲器設備散布的完整地址映射表。例如,針對總?cè)萘?TB的快閃存儲器設備,完整的地址映射表消耗2GB的4字節(jié)映射條目,Ik的映射條目可以存儲在一個頁面中,并且64k的映射條目可以存儲在一個塊中,從而,需要8k的塊來存儲地址映射表。假設8k塊中的每一個可以通過4個字節(jié)來尋址,則塊映射表可以要求32kB,其僅與8個頁面相對應。類似地,在另一實施方式中,具有映射條目的每個頁面可以單獨尋址,而不是整個塊,從而512k頁面繼而使用用于塊映射表的2MB通過4個字節(jié)來尋址。在有益的解決方案中,塊映射表在駐留在快閃存儲器設備中的單個全局映射塊的最開始建立,并且在主存儲器中緩存以用于快速訪問。以上提到的控制器設計用于由快閃存儲器設備執(zhí)行的控制操作??刂破饕话愎芾砜扉W存儲器中的數(shù)據(jù),并且控制內(nèi)部管理操作。在一個實施方式中,控制器與快閃存儲器設備分離。在備選實施方式中,控制器是快閃存儲器設備本身的整體部分。在又一實施方式中,控制器可以在物理上分割為一個或多個子控制器,每個子控制器控制快閃存儲器設備的一部分和/或僅執(zhí)行特定快閃管理任務。在另一優(yōu)選實施方式中,在此使用的術(shù)語“控制器”是指專用集成電路(ASIC)或者現(xiàn)場可編程門陣列(FPGA)、電子電路、執(zhí)行一個或多個軟件或者固件程序/算法的一個或多個處理器(共享、專用或者組)和存儲器、組合邏輯電路和/或提供所描述的供能的其他適當組件。圖1示出了根據(jù)本發(fā)明的一個示例性實施方式的存儲系統(tǒng)I的基本元件。存儲系統(tǒng)I 一般包括與控制器3信號通信的快閃存儲器設備2。主機4連接至存儲系統(tǒng)1,并且特別地連接至存儲系統(tǒng)I的控制器3。具體地,主機4可以是請求從存儲系統(tǒng)I讀取數(shù)據(jù)以及向存儲系統(tǒng)I寫入數(shù)據(jù)的任何實體??刂破?控制快閃存儲器設備2的必要供能(例如,磨損均衡、使用地址映射表的邏輯到物理地址轉(zhuǎn)換、維護這些映射表、垃圾收集等)??刂破?包括主存儲器31 (其包括讀取高速緩存311、寫入高速緩存312和用于其他任務的主存儲器部分313)以及處理器32、以及沒有進一步示出的其他組件??扉W存儲器設備2包括一起分組到塊13中的多個頁面12 (例如,每個塊64個頁面)??扉W存儲器設備2的塊13物理上可以位于不同的快閃存儲器芯片上,并且快閃存儲器芯片可以分組到通道中,控制器3可以通過這些通道控制快閃存儲器芯片。因此,快閃存儲器設備2可以視作快閃存儲器設備2中存在的全部快閃存儲器芯片上的連續(xù)的虛擬存儲器空間。塊13的數(shù)目、每個塊13的頁面12的數(shù)目以及芯片和通道的數(shù)目可以根據(jù)應用而改變,并且不應當限制于此處示出的配置??扉W存儲器設備2包括元數(shù)據(jù)結(jié)構(gòu),該元數(shù)據(jù)結(jié)構(gòu)包括一個或多個關(guān)鍵信息,例如,地址映射表、壞塊列表、錯誤校正碼等。這些元數(shù)據(jù)結(jié)構(gòu)與標準數(shù)據(jù)一起保存在快閃存儲器設備2中,并且在啟動時重構(gòu)。在圖2中,示出了根據(jù)圖1的存儲系統(tǒng)I的實施方式的另一表示。圖2示出了所涉及的不同存儲器的視圖,并且通過各種存儲器元件之間的箭頭指示動作。在虛線以下的部分中,快閃存儲器設備2通過以彼此相鄰的柱形的形式所示的多個塊13來表示。每個塊13又包含以橫條紋指示的多個頁面。塊13根據(jù)其內(nèi)容來標記標號131表示包含用戶數(shù)據(jù)或者一般數(shù)據(jù)的塊。標號132表示包含地址映射信息尤其是連續(xù)LBA到PBA映射信息的塊。通常,地址映射塊132包括唯一地保持LBA到PBA映射信息的頁面。優(yōu)選地,此類地址映射塊132不包含用戶數(shù)據(jù)。并且標號133表示全局映射塊,該塊133可以唯一地包含快閃存儲器2的哪些塊實現(xiàn)為地址映射塊132的信息。全局映射塊133從而組合地存儲其中可以在快閃存儲器設備中找到地址映射塊的完整信息。全部全局映射塊133的組合也稱為塊映射表5。優(yōu)選地,地址映射塊132的地址偏移可以通過塊映射表5中的位置隱式地給出。因此,全局映射塊133將頁面地址的范圍映射到保持用于所述范圍的地址映射信息的物理塊地址,并且從而指示地址映射塊132在快閃存儲器設備中的哪個物理地址開始??傮w上,LBA到PBA映射信息可以與數(shù)據(jù)一起組織為快閃存儲器設備2中的日志結(jié)構(gòu)陣列,并且從而也錯位寫入。在虛線以上的部分中,主存儲器31的表示包括讀取高速緩存311、寫入高速緩存312和主存儲器部分313。讀取高速緩存311包括按照用于支持讀取請求的地址映射條目形式的地址映射信息。示意性地,圖中示出了地址映射信息的兩個塊132。寫入高速緩存312包括要被寫入到快閃存儲器設備2中的地址信息。示意性地,圖中示出了要被寫入的地址映射信息的三個塊134。主存儲器部分313保持稱為塊映射表5的數(shù)據(jù)結(jié)構(gòu)。塊映射表5包括與在快閃存儲器設備2中何處可以找到地址映射塊132有關(guān)的信息。在啟動時,全局映射塊133從存儲器設備2取回,并且將被復制在主存儲器31中,以便支持地址映射信息的查找。從快閃存儲器設備2的全局映射塊133到塊映射表5的箭頭應當示出存儲在快閃存儲器設備2中的這些個體全局映射塊133構(gòu)建塊映射表5。塊映射表5與快閃存儲器設備2中的地址映射塊132之間的箭頭應當指示塊映射表5的(塊和頁面)內(nèi)容指向地址映射塊132駐留在快閃存儲器設備中的位置。在此情況下,塊映射表5中的條目表示指向快閃存儲器設備2上的地址映射塊132的指針。在另一實施方式中,那些條目可以表示指向保持地址映射信息的頁面的指針??扉W存儲器設備2與讀取高速緩存311之間的箭頭指示從快閃存儲器設備2中的地址映射塊132獲取的地址映射信息一旦被認為在讀取高速緩存311中有用時,就被傳送至讀取高速緩存311。通常,可以選擇與此類地址映射相關(guān)聯(lián)的頻繁訪問的數(shù)據(jù)以傳送到讀取高速緩存311中。存在多種已知的算法,用于選擇要從存儲器設備2遞送至讀取高速緩存311的最適當?shù)臈l目、以及如何將這些條目從讀取高速緩存311移除,全部都是基于不同的策略。作為一個示例,可以實現(xiàn)LRU(最近最少使用)算法用于在讀取高速緩存311中維護地址映射條目。需要注意,不需要向讀取高速緩存311整體地傳送地址映射塊132 ;相反,由于對快閃的讀取操作包括最精細粒度的頁面,所以可以視作頁面?zhèn)魉汀H欢?,根?jù)優(yōu)選實施方式,完整的地址映射塊132可以從快閃存儲器設備2傳送到讀取高速緩存311中。讀取高速緩存311與快閃存儲器設備2之間的箭頭指示讀取高速緩存311中的LBA/PBA映射條目指向快閃存儲器設備2中的數(shù)據(jù)塊131,以使得一旦在讀取高速緩存311中找到相應的映射條目,就可以從快閃存儲器設備2中的相應物理地址立即取回數(shù)據(jù)。讀取高速緩存311中的條目可能變?yōu)檫^期。有時可以運行適當?shù)奶鎿Q機制。在讀取高速緩存311為滿、并且新的地址映射條目要被傳送到讀取高速緩存311中的情況下,可以再一次應用適當?shù)乃惴▉泶_定可以代替地從讀取高速緩存311移除哪個當前條目。需要注意,優(yōu)選地,系統(tǒng)性地,讀取高速緩存311中沒有條目要被寫入到快閃存儲器設備2中。仍然要被寫入到快閃存儲器設備2中的所有條目駐留在寫入高速緩存312中。寫入高速緩存312與快閃存儲器設備2之間的箭頭指示寫入高速緩存312中的時間條目的特定點可以被寫入到快閃存儲器設備2中。由于寫入高速緩存312中的條目是地址映射條目,所以這些條目將被寫入到僅為地址映射信息預留的地址映射塊312中。由于寫入快閃的最小粒度也是頁面,所以最小一個頁面從寫入高速緩存312寫入到存儲器設備2的地址映射塊312中,優(yōu)選地錯位寫入。然而,根據(jù)本發(fā)明的另一實施方式,寫入高速緩存312還可以保持被組織到其所屬于的塊中的個體地址映射條目。這支持向快閃存儲器設備2中的可用塊與入完整塊。圖3示出了基于類似于圖2中使用的讀取過程的示意,根據(jù)本發(fā)明的實施方式的讀取過程?,F(xiàn)在該圖包括了過程步驟,并且通過參考標號來表示。主機4向存儲系統(tǒng)I發(fā)布用于從快閃存儲器設備2讀取特定數(shù)據(jù)的請求10。為了在主機處標識數(shù)據(jù),主機與數(shù)據(jù)一起提供邏輯地址信息。響應于接收到邏輯地址信息,存儲系統(tǒng)的控制器在寫入高速緩存312中搜索包含此類邏輯地址信息的條目(步驟11)。如果在寫入高速緩存312中找到此類邏輯地址信息,則(步驟12)相應的條目包含與邏輯地址相關(guān)聯(lián)的物理地址,該物理地址指定所請求的數(shù)據(jù)位于快閃存儲器設備2中的何處。控制器繼而可以發(fā)布數(shù)據(jù)讀取操作(步驟13),以用于從該物理地址取回數(shù)據(jù),并且向主機提供該數(shù)據(jù)。數(shù)據(jù)讀取操作可以包括服從存儲系統(tǒng)的操作系統(tǒng)以及對主機的接口的一對獨立步驟。然而,如果在寫入高速緩存中沒有找到具有所請求的邏輯地址信息的條目,即,如果沒有找到邏輯地址并且因此無法標識相關(guān)聯(lián)的物理地址,則針對包含此類邏輯地址信息的條目而搜索讀取高速緩存311 (步驟14)。如果找到此類邏輯地址信息駐留在讀取高速緩存311中(步驟15),則此類條目包含相關(guān)聯(lián)的物理地址,該物理地址指定所請求的數(shù)據(jù)位于快閃存儲器設備2中何處。控制器繼而可以發(fā)布數(shù)據(jù)讀取操作(步驟13),以用于從該物理地址獲取數(shù)據(jù)并且向主機提供該數(shù)據(jù)。然而,如果在讀取高速緩存311中沒有找到具有所請求的邏輯地址信息的條目,即,如果沒有找到邏輯地址信息并且從而無法標識相關(guān)聯(lián)的物理地址信息,則控制器發(fā)起在主存儲器中搜索地址映射塊132 (步驟16),以便從快閃存儲器設備2獲取相應的地址映射塊132,并且標識來自那里的物理地址信息(步驟17)。因此,將由控制器發(fā)布數(shù)據(jù)讀取操作(步驟13),以便取回與所標識的物理地址相關(guān)聯(lián)的數(shù)據(jù)。在這種場景下,優(yōu)選地,據(jù)此更新讀取高速緩存311 (步驟18),因為讀取高速緩存311不提供與由主機所請求的數(shù)據(jù)相關(guān)聯(lián)的映射條目。服從應用于維護讀取高速緩存311的算法,控制器可以發(fā)起這樣的過程,其中,如果讀取高速緩存311尚不滿,則可以簡單地將與數(shù)據(jù)相關(guān)聯(lián)的地址映射條目(或者相應的頁面或者塊)添加到讀取高速緩存311中?;蛘?,在讀取高速緩存311已滿的情況下,標識條目(或者相應的頁面或者塊)以便將其從讀取高速緩存311移除,并且替換為以上地址映射條目。在圖4的流程圖中,示出了用于從固態(tài)存儲器設備讀取數(shù)據(jù)的方法。在步驟20中,根據(jù)本發(fā)明的實施方式的存儲系統(tǒng)的控制器從較高層接收讀取請求20。該請求包括用于標識要被讀取的數(shù)據(jù)的邏輯地址信息。在步驟21中,控制器在寫入高速緩存312中搜索邏輯地址信息,該寫入高速緩存312被設計用于緩存要被寫入到存儲系統(tǒng)的快閃存儲器設備的映射信息。確定在寫入高速緩存中是否找到邏輯地址信息(步驟22)。如果找到,則意味著標識了指示數(shù)據(jù)駐留在快閃存儲器設備中何處的物理地址信息,因為該物理地址信息被映射到寫入高速緩存中的相應條目中的邏輯地址信息。在這樣的情況(Y)下,在步驟23中,控制器發(fā)布數(shù)據(jù)讀取操作。如果在寫入高速緩存中沒有找到邏輯地址信息(N),則在讀取高速緩存中搜索由較高層提供的邏輯地址信息(步驟24)。確定在讀取高速緩存中是否找到邏輯地址信息(步驟25)。如果在讀取高速緩存中找到了所搜索的信息(Y),則控制器在步驟23中發(fā)布數(shù)據(jù)讀取操作,這是因為用以獲取數(shù)據(jù)的所有信息都存在。優(yōu)選地,數(shù)據(jù)讀取操作包括作為參數(shù)的物理地址信息,并且該操作的返回是數(shù)據(jù)。然而,如果在讀取高速緩存中沒有找到所搜索的信息(N),則控制器通過存儲在存儲器設備中的映射信息來標識與邏輯地址信息相關(guān)聯(lián)的物理地址信息(步驟26)。此類標識優(yōu)選地由結(jié)合圖3的實施方式提及的塊映射表5來實現(xiàn)。最后,控制器發(fā)布與所標識的物理地址信息相關(guān)的數(shù)據(jù)讀取操作(步驟23)??蛇x地,之后可以跟隨用于更新讀取高速緩存的過程(步驟27)。根據(jù)本發(fā)明的另一實施方式,并且如圖4中的步驟28所示,專用于讀取高速緩存和寫入高速緩存的主存儲器部分之間的比率可以動態(tài)地適于當前的讀取和/或?qū)懭牍ぷ髫撦d,以便優(yōu)化控制器的總體性能??梢栽诿總€讀取過程之后確定該比率,并且可以因此調(diào)節(jié)高速緩存大小。首先搜索寫入高速緩存或者讀取高速緩存可以取決于如何維護寫入高速緩存在以延遲方式在讀取高速緩存中更新對寫入高速緩存中的條目的更新時,在讀取操作中首先搜索寫入高速緩存可能是有益的,因為在這樣的實施方式中,寫入高速緩存可能是保持當前有效的地址映射信息的唯一位置。然而,在對寫入高速緩存中的條目的更新之后立即對讀取高速緩存進行相應更新時,則在讀取操作中,可以首先搜索讀取高速緩存,之后,在讀取高速緩存中無法找到所搜索的地址映射信息的情況下,在寫入高速緩存中進行搜索。一般,優(yōu)選地,首先搜索寫入高速緩存,因為其保持最新的地址映射信息。在存儲控制器包括數(shù)據(jù)高速緩存的情況下,在優(yōu)選實施方式中,在寫入高速緩存或者讀取高速緩存中搜索地址映射之前,可以在數(shù)據(jù)高速緩存中搜索數(shù)據(jù)本身。在讀取方法的另一優(yōu)選實施方式中,考慮工作負載的所在位置(locality)。工作負載的所在位置假設以實時方式訪問的地址映射條目可以以一定可能性在空間局部內(nèi)獲取。也就是說,在該實施方式中,研究了如果映射條目在讀取高速緩存和寫入高速緩存中都丟失的情況。當執(zhí)行讀取例程,并且所搜索的邏輯地址信息既沒有在讀取高速緩存也沒有在寫入高速緩存中找到時,自動收集該信息。因此,不僅利用丟失的地址信息所駐留的頁面或者塊來更新讀取高速緩存,還利用加載到讀取高速緩存中的相鄰地址映射頁面或者塊來更新,以便更好地服務于將來的讀取請求。這是因為由于工作負載的空間所在位置,相鄰的LBA到PBA映射也被假設為要在不久的將來被使用。圖5示出了基于與圖2中使用的寫入操作相似的示意根據(jù)本發(fā)明的實施方式的寫入過程。然而,現(xiàn)在該圖包括了過程步驟,并且通過參考標號表示。主機4向存儲系統(tǒng)發(fā)布用于向快閃存儲器設備2寫入數(shù)據(jù)的請求30。數(shù)據(jù)和邏輯地址信息通常與請求一起由主機提供。邏輯地址信息是主機已經(jīng)在其下歸檔此類數(shù)據(jù)的邏輯地址。響應于接收到此類請求,控制器向快閃存儲器設備2的下一可用頁面寫入數(shù)據(jù)(步驟31),或者備選地,向數(shù)據(jù)高速緩存寫入數(shù)據(jù)以用于高速緩存用戶數(shù)據(jù)。當數(shù)據(jù)被寫入到快閃存儲器設備中時,其通過根據(jù)可用頁面分配器返回的當前寫入位置而被寫入頁面。可用頁面分配器優(yōu)選地提供來自可用塊隊列的頁面。在任何情況下,數(shù)據(jù)目前被寫入到的存儲系統(tǒng)內(nèi)的位置由某些物理地址信息表示。控制器針對包含邏輯地址信息的條目而搜索寫入高速緩存312 (步驟32)。如果此類邏輯地址信息被標識為駐留在寫入高速緩存312中,則將利用標識數(shù)據(jù)新近駐留位置的物理地址信息來更新此類條目中的相關(guān)聯(lián)的物理地址信息。如果此類邏輯地址信息沒有被標識為駐留在寫入高速緩存312中,則可以將新條目與邏輯地址信息和新的物理地址信息插入到寫入高速緩存312中。在某些時刻,優(yōu)選地,作為后臺任務,整個寫入高速緩存或其至少一部分根據(jù)寫入高速緩存清除過程所遵循的策略被寫入到快閃存儲器設備中,該策略優(yōu)選地不同于讀取高速緩存維護算法(步驟33)。由于地址映射信息的這種寫入可能跟在錯位寫入過程之后,所以可能存在新的地址映射塊被分配、或者現(xiàn)有的地址映射塊被擦除并且被指派給可用塊分配器,以使得優(yōu)選地在步驟34中更新塊映射表5。由控制器發(fā)起的這種更新活動在某些時刻也可以作為后臺任務執(zhí)行。在圖6的流程圖中,示出了用于向固態(tài)存儲器設備寫入數(shù)據(jù)的方法。在步驟40中,根據(jù)本發(fā)明的實施方式的存儲系統(tǒng)的控制器從較高層接收寫入請求。該請求包括與要被寫入的數(shù)據(jù)相關(guān)聯(lián)的邏輯地址信息。在步驟41中,數(shù)據(jù)存儲在快閃存儲器的可用頁面中,或者,備選地或者附加地,存儲在專用作數(shù)據(jù)高速緩存的主存儲器部分中(步驟42)??刂破髟趯懭敫咚倬彺嬷兴阉饔芍鳈C提供的邏輯地址信息(步驟43),該寫入高速緩存被設計用于緩存將被寫入到存儲系統(tǒng)的快閃存儲器設備的映射信息。確定在寫入高速緩存中是否找到邏輯地地址信息(步驟44)。如果找到了(Y),則意味著僅需要利用新的物理地址信息來更新寫入高速緩存中的這種條目,新的物理地址信息指示數(shù)據(jù)現(xiàn)在駐留在何處(步驟450)。當在寫入高速緩存中沒有找到所搜索的邏輯地址信息時(N),在步驟451中,控制器添加用于數(shù)據(jù)的新的地址映射條目。遵循存儲系統(tǒng)的寫入策略,在稍后的時間,將寫入高速緩存寫入到快閃存儲器設備中(步驟46)。之后要被寫入到快閃存儲器設備的映射信息的粒度服從寫入高速緩存清除過程所遵循的策略。此類寫入高速緩存清除過程可以是后臺任務,該后臺任務根據(jù)給定的高速緩存策略將寫入高速緩存中的條目周期性地寫出到快閃存儲器設備中。在另一任務中,響應于以上寫入過程而更新塊地址表(步驟47)。根據(jù)本發(fā)明的另一實施方式,并且如圖6中的步驟48所示,專用于讀取高速緩存和寫入高速緩存的主存儲器部分之間的比率可以動態(tài)地適于當前的讀取和/或?qū)懭牍ぷ髫撦d,以便優(yōu)化控制器的總體性能。可以在每次寫入高速緩存清除過程之后確定該比率,并且可以相應地調(diào)整高速緩存大小??蛇x地,在步驟49中,根據(jù)主機的寫入請求,在讀取高速緩存中搜索與要被寫入的數(shù)據(jù)相關(guān)聯(lián)的邏輯地址信息。該任務的背景是指向過期物理數(shù)據(jù)的主題地址映射條目可能(無關(guān)于是否已經(jīng)駐留在寫入高速緩存中)也已經(jīng)在讀取高速緩存中進行高速緩存,以便支持讀取請求。為此,有益的是,如果與當前寫入例程同時,也可以在讀取高速緩存中搜索相應的邏輯地址信息,并且如果找到則將更新讀取高速緩存。當在讀取高速緩存中沒有找到此類條目的情況下,服從讀取高速緩存策略,由于非常近期的寫請求,可以將新的條目插入到讀取高速緩存中,以用于反映該條數(shù)據(jù)的增加的重要性。讀取高速緩存的這種更新可以優(yōu)選地與更新寫入高速緩存相結(jié)合地實現(xiàn),這被理解為“同時”實現(xiàn),或者備選地,在寫入高速緩存被清除時實現(xiàn)(步驟49虛線)。這未必具有缺點,因為為了向讀取請求理解提供該條數(shù)據(jù),首先搜索寫入高速緩存,以使得寫入高速緩存中的相應條目將已經(jīng)指向數(shù)據(jù)現(xiàn)在所駐留的新位置。然而,這允許數(shù)據(jù)從寫入高速緩存降級,而不需要檢查降級的映射條目是否駐留在讀取高速緩存中。如果存儲控制器提供數(shù)據(jù)高速緩存,并且在接收到寫入請求時,可以首先在寫入高速緩存中搜索指示此類數(shù)據(jù)可能已經(jīng)駐留在數(shù)據(jù)高速緩存中的條目。如果寫入高速緩存提供此類條目,則首先將新數(shù)據(jù)寫入到數(shù)據(jù)高速緩存中,以替換現(xiàn)在過期的相應數(shù)據(jù),并且可以相應地更新寫入高速緩存中的相應條目。有益地,可以在將新數(shù)據(jù)從數(shù)據(jù)高速緩存寫入到快閃存儲器設備之前執(zhí)行該過程。然而,一旦根據(jù)所應用的策略需要清除數(shù)據(jù)高速緩存,應用當前的寫入例程,其中,由地址映射引擎接收從數(shù)據(jù)高速緩存寫入到快閃存儲器設備中的數(shù)據(jù)以及相關(guān)聯(lián)的邏輯地址,將數(shù)據(jù)存儲在快閃存儲器設備中的物理地址處,并且搜索并更新寫入高速緩存中的相應條目。在以下的實施方式中,引入了用于支持寫入高速緩存清除過程的方式,這有助于加速此類清除過程。優(yōu)選地,如圖7a中示意性示出的寫入高速緩存312中的地址映射條目8不僅包括映射至邏輯地址信息82的物理地址信息81,還包括用于指向?qū)懭敫咚倬彺?12中的另一地址映射條目的指針83。此類其他地址映射條目被標識為存儲在存儲器設備2的公共頁面中,即,快閃存儲器設備中的公共地址映射頁面。借助于鏈接快閃存儲器設備2中的相同頁面中存儲的地址映射條目,可以在寫入高速緩存清除過程期間同時更新此類條目。指針可以概括為參考,以便將屬于相同地址映射區(qū)域的地址映射條目分組。此類地址映射區(qū)域可以看作以有效方式更新的單元。另外,可以有益地提供在寫入高速緩存312中存儲的數(shù)據(jù)結(jié)構(gòu)9 (如圖7b所示),該數(shù)據(jù)結(jié)構(gòu)9包括頁面標識符91、用于計數(shù)與該頁面標識符91相關(guān)聯(lián)的寫入高速緩存312中的條目的數(shù)目的計數(shù)器92、以及指向與該頁面標識符91相關(guān)聯(lián)的寫入高速緩存條目的條目指針93。該數(shù)據(jù)結(jié)構(gòu)9在寫入高速緩存清除過程中有助于標識快閃存儲器設備2中受到要被寫入到快閃存儲器設備2中的寫入高速緩存312中的映射條目影響最嚴重的頁面,并且這些頁面可以優(yōu)選地首先被更新。條目指針93優(yōu)選地指向與該共同頁面相關(guān)的寫入高速緩存312中的第一地址映射條目,由此,屬于寫入高速緩存312中的相同頁面的其他條目可以通過指針83彼此相繼鏈接。因此,在寫入高速緩存清除過程中,控制器可以首先標識計數(shù)器92中具有最高計數(shù)的頁面ID91,并且從這里開始地址映射條目的寫入,之后更新具有第二最高計數(shù)的頁面ID,以此類推。條目指針93分別提供與入聞速緩存312中的開始點。本發(fā)明的實施方式從/向固態(tài)存儲器設備提供較高讀寫性能。覆蓋整個存儲器設備的完整地址映射表沒有阻止控制器的主存儲器。相反,該表存儲在存儲器設備自身中,并且僅在讀取高速緩存和寫入高速緩存中的主存儲器中緩存所選擇的地址映射信息的部分。讀取高速緩存與寫入高速緩存的分離使得能夠從讀取高速緩存去除地址映射條目,而不需要更新快閃存儲器設備中存儲該條目的相關(guān)快閃存儲器頁面。通過該設計,有益地,即使在沒有斷電保護的情況下讀取高速緩存也可以在DRAM上存儲,而寫入高速緩存可以優(yōu)選地在非易失性或者其他故障保護存儲器中實現(xiàn)。這導致非易失性或者故障保護存儲器的總體供應的減少,并且比已知的方法具有改進的可擴展性和性能。本領(lǐng)域技術(shù)人員可以理解,本發(fā)明的方面可以實現(xiàn)為系統(tǒng)、方法或者計算機程序產(chǎn)品。因此,本發(fā)明的方面尤其是控制器形式,可以采取完全硬件實施方式、完全軟件實施方式(包括固件、駐留軟件、微代碼等)或者組合軟件和硬件方面的實施方式的形式,此處其可以統(tǒng)稱為“電路”、“模塊”或者“系統(tǒng)”。另外,本發(fā)明的方面(諸如讀取和寫入方法)可以采取實現(xiàn)在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)具有實現(xiàn)在其上的計算機可讀程序代碼。可以使用一個或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)可以是例如但不限于電子、磁、光、電磁、紅外或者半導體系統(tǒng)、裝置、設備或者以上的任意適當組合。計算機可讀存儲介質(zhì)的更具體示例(非窮舉列表)可以包括以下具有一條或者多條線路的電連接、便攜式計算機磁盤、硬盤、隨機訪問存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPR0M或者快閃存儲器)、光纖、便攜式光盤只讀存儲器(CD-ROM)、光學存儲設備、磁存儲設備或者以上的任意適當組合。在本文檔的上下文中,計算機可讀存儲介質(zhì)可以是任何有形介質(zhì),其可以包含或者存儲由指令執(zhí)行系統(tǒng)、裝置或者設備使用或者與其相結(jié)合的程序。計算機可讀信號介質(zhì)可以包括具有實現(xiàn)在其中的計算機可讀程序代碼的傳播的數(shù)據(jù)信號,例如,基帶或者載波的部分。此類傳播信號可以采用多種形式中的任何形式,包括但不限于電磁、光學或者其任意適當組合。計算機可讀信號介質(zhì)可以是任何計算機可讀介質(zhì),其不是計算機可讀存儲介質(zhì),并且可以通信、傳播或者傳送由指令執(zhí)行系統(tǒng)、裝置或者設備使用或者與其相結(jié)合的程序。實現(xiàn)在計算機可讀介質(zhì)上的程序代碼可以使用任何適當?shù)慕橘|(zhì)傳輸,包括但不限于無線、有線、光纖電纜、RF等,或者以上的任意適當組合。用于實現(xiàn)本發(fā)明的方面的操作的計算機程序代碼可以以一種或者多種編程語言的任意組合來編寫,編程語目包括面向?qū)ο蟮木幊陶Z目(諸如Java、Smalltalk、C++等)和傳統(tǒng)的過程編程語言(諸如“C”編程語言或者類似的編程語言)。程序代碼可以完全在用戶的計算機上執(zhí)行,或者部分地在用戶的計算機上執(zhí)行,作為獨立的軟件包執(zhí)行,部分在用戶的計算機上執(zhí)行并且部分在遠程計算機上執(zhí)行,或者完全在遠程計算機或者服務器上執(zhí)行。在后一種情景中,遠程計算機可以通過任何類型的網(wǎng)絡連接至用戶的計算機,網(wǎng)絡包括局域網(wǎng)(LAN)或者廣域網(wǎng)(WAN),或者連接至外部計算機(例如,通過使用因特網(wǎng)服務提供商的因特網(wǎng))。
以下參考根據(jù)本發(fā)明的實施方式的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖來描述本發(fā)明的方面??梢岳斫猓鞒虉D和/或框圖的每個框,以及流程圖和/或框圖中的框的組合可以通過計算機程序指令來實現(xiàn)。這些計算機程序指令可以提供至通用計算機、專用計算機或者其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生一種機器,以使得經(jīng)由計算機或者其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令可以創(chuàng)建用于實現(xiàn)流程圖和/或框圖的一個或多個框中指定的功能/動作。這些計算機程序指令還可以存儲在計算機可讀介質(zhì)中,計算機可讀介質(zhì)可以直接是計算機,或者其他可編程數(shù)據(jù)處理裝置,或者以特定方式運行的其他設備,以使得存儲在計算機可讀介質(zhì)中的指令產(chǎn)生一種制品,該制品包括實現(xiàn)流程圖和/或框圖的一個或多個框中指定的功能/動作。計算機程序指令還可以加載到計算機、其他可編程數(shù)據(jù)處理裝置或者其他設備上,以使得一系列操作步驟在計算機、其他可編程裝置或者其他設備上執(zhí)行,以產(chǎn)生計算機實現(xiàn)過程,使得在計算機或者其他可編程裝置上執(zhí)行的指令實現(xiàn)流程圖和/或框圖的一個或多個框中指定的功能/動作。附圖中的流程圖和框圖示出了根據(jù)本發(fā)明的各種實施方式的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的架構(gòu)、功能和操作。在這一方面,流程圖或者框圖中的每個框可以表示模塊、分段、或者代碼的一部分,其包括用于實現(xiàn)指定邏輯功能的一個或多個可執(zhí)行指令。應當注意,在一些備選實施方式中,框中標記的功能可以按照與附圖中不同的順序發(fā)生。例如,根據(jù)所涉及的功能,連續(xù)示出的兩個框可能實際上基本上并行地執(zhí)行,或者有時候這些框可以以相反的順序執(zhí)行。還應當注意,框圖和/或流程圖的每個框以及框圖和/或流程圖中的框的組合可以通過執(zhí)行指定的功能或者動作的專用的基于硬件的系統(tǒng)或者專用硬件和計算機指令的組合來實現(xiàn)。
權(quán)利要求
1.一種用于控制從固態(tài)存儲器設備讀取數(shù)據(jù)和向固態(tài)存儲器設備寫入數(shù)據(jù)的存儲控制器,包括-讀取高速緩存(311),用于緩存表示存儲在存儲器設備(2)中的地址映射信息的子集的地址映射信息,所述地址映射信息包括用于標識請求主機中的數(shù)據(jù)的邏輯地址信息到用于標識所述存儲器設備(2)中的數(shù)據(jù)的物理地址信息的映射,以及-寫入高速緩存(312),用于緩存將要被寫入所述存儲器設備(2)的地址映射信息。
2.根據(jù)權(quán)利要求1所述的存儲控制器,其中,所述寫入高速緩存(312)作為與所述讀取高速緩存(311)分離的單元來維護,其中,在所述讀取高速緩存(311)中緩存的內(nèi)容與在所述寫入高速緩存(312)中緩存的內(nèi)容獨立地可搜索,反之亦然。
3.根據(jù)權(quán)利要求1或者2所述的存儲控制器,包括包括所述寫入高速緩存(312)的非易失性存儲器和易失性故障保護存儲器中的一個,以及包括所述讀取高速緩存(311)的易失性存儲器。
4.根據(jù)前述權(quán)利要求中任一項所述的存儲控制器,包括分配引擎,用于服從寫入工作負載和讀取工作負載中的一個或多個來向所述讀取高速緩存(311)和所述寫入高速緩存(312)分配高速緩存存儲器空間。
5.根據(jù)前述權(quán)利要求中任一項所述的存儲控制器,其中,所述寫入高速緩存(312)中的地址映射條目包括物理地址信息、與所述物理地址信息相關(guān)聯(lián)的邏輯地址信息、以及用于對屬于共同地址映射區(qū)域的地址映射條目進行分組的參考。
6.根據(jù)權(quán)利要求5所述的存儲控制器,其中,所述參考與用于指向所述寫入高速緩存 (312)中的另一地址映射條目的指針(83)相對應,所述另一地址映射條目被標識為存儲在所述存儲器設備(2)的共同頁面中。
7.根據(jù)權(quán)利要求6所述的存儲控制器,包括存儲在所述寫入高速緩存(312)中的數(shù)據(jù)結(jié)構(gòu),包括頁面標識符(91)、用于計數(shù)所述寫入高速緩存(312)中與此類頁面標識符 (91)相關(guān)聯(lián)的條目的數(shù)目的計數(shù)器(92)、以及指向與所述頁面標識符(91)相關(guān)聯(lián)的寫入高速緩存(312)條目的條目指針(93)。
8.一種存儲系統(tǒng),包括-根據(jù)前述權(quán)利要求中任一項的存儲控制器(I),以及-固態(tài)存儲器設備(2),其用于存儲數(shù)據(jù),并且用于存儲地址映射信息,所述地址映射信息用于將用于標識訪問所述存儲系統(tǒng)的主機(4)中的數(shù)據(jù)的邏輯地址信息映射到用于標識所述存儲設備(2)中的數(shù)據(jù)的物理地址信息。
9.一種用于從固態(tài)存儲器設備讀取數(shù)據(jù)的方法,其中在存儲器設備(2)中,存儲了數(shù)據(jù)以及映射信息,所述映射信息用于將用于標識所述存儲器設備中的數(shù)據(jù)的物理地址信息映射到用于標識請求主機(4)中的數(shù)據(jù)的邏輯地址信息,所述方法包括-接收與要被讀取的數(shù)據(jù)相關(guān)聯(lián)的邏輯地址信息,-在寫入高速緩存(312)和讀取高速緩存(311)中的一個中搜索所述邏輯地址信息,所述寫入高速緩存(312)用于緩存要被寫入到所述存儲器設備(2)中的地址映射信息,所述讀取高速緩存(311)用于緩存存儲在所述存儲器設備(2)中的地址映射信息的子集,-如果在搜索的高速緩存(311,312)中沒有找到所述邏輯地址信息,則在另一高速緩存(312,311)中搜索所述邏輯地址信息,-如果在所述寫入高速緩存(312)和所述讀取高速緩存(311)的任意一個中都沒有找到所述邏輯地址信息,則通過存儲在所述存儲器設備(2)中的映射信息來標識和讀取與所述邏輯地址信息相關(guān)聯(lián)的所述物理地址信息,以及-發(fā)布針對所標識的所述物理地址信息的數(shù)據(jù)讀取操作。
10.根據(jù)權(quán)利要求9所述的方法,其中,所讀取的物理地址信息用于更新所述讀取高速緩存中的條目。
11.根據(jù)權(quán)利要求9或10所述的方法,包括-如果在所述寫入高速緩存中找到所述邏輯地址信息,則標識與來自所述寫入高速緩存中的相應條目的所述邏輯地址信息相關(guān)聯(lián)的所述物理地址信息,以及-發(fā)布針對所標識的所述物理地址信息的數(shù)據(jù)讀取操作。
12.根據(jù)權(quán)利要求9或10所述的方法,包括-如果在所述讀取高速緩存(311)中找到所述邏輯地址信息,則標識與來自所述讀取高速緩存(311)中的相應條目的所述邏輯地址信息相關(guān)聯(lián)的所述物理地址信息,以及-發(fā)布針對所標識的所述物理地址信息的數(shù)據(jù)讀取操作。
13.一種用于向固態(tài)存儲器設備寫入數(shù)據(jù)的方法,其中在存儲器設備(2)中,存儲了數(shù)據(jù)和映射信息,所述映射信息用于將標識請求中的數(shù)據(jù)的邏輯地址信息映射到用于標識所述存儲器設備(2)中的數(shù)據(jù)的物理地址信息,所述方法包括-接收所述數(shù)據(jù)以及與所述數(shù)據(jù)相關(guān)聯(lián)的邏輯地址信息,-將所述數(shù)據(jù)寫入所述存儲器設備(2)中由物理地址信息標識的位置,-在寫入高速緩存(312)中搜索所述邏輯地址信息,所述寫入高速緩存(312)專用于緩存要被寫入到所述存儲器設備(2)中的地址映射信息,以及-如果在所述寫入高速緩存中沒有找到所述邏輯地址信息,則將包括所述邏輯地址的映射的地址映射條目添加到所述寫入高速緩存(312)中。
14.根據(jù)權(quán)利要求13所述的方法,包括如果在所述寫入高速緩存(312)中找到所述邏輯地址信息,則利用與所述數(shù)據(jù)新近關(guān)聯(lián)的物理地址信息來更新所述寫入高速緩存 (312)中的相應地址映射條目。
15.根據(jù)權(quán)利要求13或14所述的方法,包括在讀取高速緩存(311)中搜索所述邏輯地址信息,所述讀取高速緩存(311)用于緩存表示存儲在所述存儲器設備(2)中的地址映射信息的子集的地址映射信息,并且如果在所述讀取高速緩存(311)中找到所述邏輯地址信息,則利用與所述數(shù)據(jù)新近關(guān)聯(lián)的所述物理地址信息來更新所述讀取高速緩存(311)中的相應地址映射條目。
16.根據(jù)權(quán)利要求15所述的方法,包括在更新所述寫入高速緩存(312)時,在所述讀取高速緩存(311)中搜索所述邏輯地址信息。
17.—種包括計算機可讀介質(zhì)的計算機程序產(chǎn)品,所述計算機可讀介質(zhì)具有利用其實現(xiàn)的計算機可讀程序代碼,所述計算機可讀程序代碼包括配置用于執(zhí)行根據(jù)前述權(quán)利要求 9到16中任一項所述的方法的計算機可讀程序代碼。
全文摘要
本發(fā)明提供了從固態(tài)存儲器設備讀取和向固態(tài)存儲器設備寫入的較高性能??刂破?1)的主存儲器(31)沒有被覆蓋整個存儲器設備(2)的完整地址映射表阻止。而是,該表存儲在存儲器設備(2)自身中,并且在讀取高速緩存(311)和寫入高速緩存(312)中的主存儲器(31)中僅緩存地址映射信息的所選擇的部分。讀取高速緩存(311)與寫入高速緩存(312)的分離使得能夠從讀取高速緩存(311)去除地址映射條目,而不需要更新在快閃存儲器設備(2)中存儲此類條目的相關(guān)快閃存儲器頁面。通過該設計,讀取高速緩存(311)甚至在沒有斷電保護的情況下也可以有益地存儲在DRAM上,而寫入高速緩存(312)可以優(yōu)選地在非易失性或者其他故障安全存儲器中實現(xiàn)。這使得非易失性或者故障保護存儲器的總體供應減少,并且改進了可擴展性和性能。
文檔編號G06F12/08GK103026346SQ201180036693
公開日2013年4月3日 申請日期2011年7月25日 優(yōu)先權(quán)日2010年7月27日
發(fā)明者W·巴克斯, R·哈斯, 胡曉宇, R·A·普勒卡 申請人:國際商業(yè)機器公司