欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于存儲(chǔ)器管理的硬件自動(dòng)化的制作方法

文檔序號(hào):12512575閱讀:308來(lái)源:國(guó)知局
用于存儲(chǔ)器管理的硬件自動(dòng)化的制作方法與工藝

存儲(chǔ)模塊可以響應(yīng)于從主機(jī)接收的主機(jī)命令來(lái)管理數(shù)據(jù)存儲(chǔ)。當(dāng)接收到主機(jī)讀取命令時(shí),所述存儲(chǔ)模塊可以進(jìn)行多個(gè)進(jìn)程來(lái)確定所述數(shù)據(jù)被存儲(chǔ)在哪里、檢索所述數(shù)據(jù)、并將所述數(shù)據(jù)發(fā)回到所述主機(jī)。存儲(chǔ)模塊可以配置有固件,所述存儲(chǔ)模塊的處理器可以執(zhí)行所述固件以便進(jìn)行執(zhí)行所述讀取命令所需要的所述進(jìn)程。用固件對(duì)所述存儲(chǔ)模塊進(jìn)行編程可以是有益的,因?yàn)檫@可以成功地處理讀取請(qǐng)求、甚至復(fù)雜的讀取,同時(shí)不消耗太多的空間。然而,許多讀取請(qǐng)求可能是相對(duì)直接的,并且使用固件可能不是處理這些讀取請(qǐng)求的最有效方式。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的實(shí)施例由權(quán)利要求書限定,并且不能將此部分的任何內(nèi)容作為對(duì)那些權(quán)利要求的限制。舉例而言,在本文件中描述的以及在附圖中展示的所述實(shí)施例總體上涉及一種存儲(chǔ)模塊以及控制器的相關(guān)方法,所述控制器在通信總線上根據(jù)緩存序列執(zhí)行上下文命令,而所述存儲(chǔ)器模塊進(jìn)行內(nèi)部存儲(chǔ)器操作。

在一個(gè)示例中,一種存儲(chǔ)模塊可以包括至少一個(gè)存儲(chǔ)器;以及控制器,所述控制器與所述至少一個(gè)存儲(chǔ)器通信。所述控制器可以包括:硬件路徑,所述硬件路徑包括被配置成用于進(jìn)行與執(zhí)行主機(jī)讀取請(qǐng)求相關(guān)聯(lián)的多個(gè)進(jìn)程的多個(gè)硬件模塊。所述控制器還可以包括固件模塊,所述固件模塊包括:固件,所述固件存儲(chǔ)在所述至少一個(gè)存儲(chǔ)器中;以及處理器,所述處理器被配置成用于執(zhí)行所述固件以便進(jìn)行與執(zhí)行主機(jī)讀取請(qǐng)求相關(guān)聯(lián)的所述多個(gè)進(jìn)程中的至少一些。所述控制器還可以包括前端模塊,所述前端模塊被配置成用于接收主機(jī)命令,并且響應(yīng)于接收到所述主機(jī)命令,判定是否開始沿著所述硬件路徑或使用所述固件模塊執(zhí)行所述主機(jī)命令。

總而言之,在存儲(chǔ)模塊的控制器中可以包括硬件路徑,所述硬件路徑包括被配置成用于執(zhí)行與執(zhí)行主機(jī)請(qǐng)求有關(guān)的至少一個(gè)進(jìn)程的至少一個(gè)硬件模塊。當(dāng)所述進(jìn)程至少部分地由所述至少一個(gè)硬件模塊進(jìn)行時(shí),可以加速主機(jī)請(qǐng)求的執(zhí)行。

從在此的說(shuō)明書、所附權(quán)利要求書、以及下文描述的附圖中將更好地理解本發(fā)明的這些以及其他的實(shí)施例、特征、方面和優(yōu)點(diǎn)。

附圖說(shuō)明

結(jié)合于此并且構(gòu)成本說(shuō)明書的一部分的附圖展示了本發(fā)明的多個(gè)不同方面、并且與說(shuō)明部分一起用于解釋本方面的原理。在方便時(shí),在所有附圖中將使用相同參考數(shù)字來(lái)指代相同或相似的要素。

圖1是示例存儲(chǔ)系統(tǒng)的框圖。

圖2是圖1的執(zhí)行主機(jī)讀取請(qǐng)求的控制器的部件的示例配置的框圖。

圖3是圖2的前端硬件模塊的示例配置的框圖。

圖4是圖2的地址轉(zhuǎn)換硬件模塊的示例配置的框圖。

圖5是圖2的數(shù)據(jù)檢索硬件模塊的示例配置的框圖。

圖6是圖2的后數(shù)據(jù)檢索硬件模塊的示例配置的框圖。

圖7是邏輯組與元塊之間的示例映射的示意圖。

圖8是示例的主要和次要地址數(shù)據(jù)結(jié)構(gòu)安排的示意圖。

圖9是圖1的執(zhí)行主機(jī)讀取請(qǐng)求的控制器的另一種示例配置的框圖。

圖10A是圖1的嵌入主機(jī)中的存儲(chǔ)模塊的框圖。

圖10B是圖1的與主機(jī)可移除地連接的存儲(chǔ)模塊的框圖。

圖11是引起通過(guò)前端模塊來(lái)執(zhí)行主機(jī)讀取請(qǐng)求的示例方法的流程圖。

圖12是響應(yīng)于開始在硬件路徑中執(zhí)行主機(jī)讀取請(qǐng)求而將邏輯地址轉(zhuǎn)換成物理地址的示例方法的流程圖。

圖13是用硬件路徑中的數(shù)據(jù)檢索硬件模塊、以及固件模塊來(lái)檢索被存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)的示例方法的流程圖。

圖14是用硬件路徑中的后數(shù)據(jù)檢索硬件模塊、以及固件模塊從存儲(chǔ)器中檢索了數(shù)據(jù)之后處理所述數(shù)據(jù)的示例方法的流程圖。

具體實(shí)施方式

對(duì)所描述和所示出的所述實(shí)施例的不同修改和其等效物是可能的,并且在此定義的不同的一般性原理可以應(yīng)用于這些以及其他的實(shí)施例。因此,將對(duì)要求保護(hù)的發(fā)明賦予符合在此公開的原理、特征和傳授內(nèi)容的最寬范圍。

圖1示出了示例系統(tǒng)100的框圖,所述系統(tǒng)包括主機(jī)系統(tǒng)101和存儲(chǔ)模塊102。所述主機(jī)系統(tǒng)101可以被配置成用于將數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)模塊102中以及從中檢索數(shù)據(jù)。所述存儲(chǔ)模塊102可以被配置成用于進(jìn)行控制和管理所述數(shù)據(jù)的存儲(chǔ)和檢索的存儲(chǔ)器管理功能。如圖1所示,所述存儲(chǔ)模塊102可以包括控制器電路110和存儲(chǔ)器模塊130。取決于所述存儲(chǔ)模塊102的配置,所述控制器110和所述存儲(chǔ)器模塊130可以位于相同或不同的基板所。

所述控制器110可以包括與存儲(chǔ)器模塊130相接的存儲(chǔ)器接口模塊114。所述控制器110還可以包括主機(jī)接口模塊116,所述主機(jī)接口模塊配置所述存儲(chǔ)模塊102與所述主機(jī)系統(tǒng)101操作性地通信。如在本文中所使用的,短語(yǔ)“操作性地通信”可以指通過(guò)一個(gè)或多個(gè)部件直接通信或間接通信,這可能在或沒(méi)有在本文中被示出或描述。所述控制器110通過(guò)或者使用所述主機(jī)接口模塊116可以從主機(jī)系統(tǒng)101接收主機(jī)請(qǐng)求、例如主機(jī)讀取和寫入請(qǐng)求,并且通過(guò)或使用主機(jī)接口116可以將對(duì)所述主機(jī)讀取和寫入請(qǐng)求的響應(yīng)發(fā)送至所述主機(jī)系統(tǒng)101。此外,主機(jī)接口116可以采用任何合適的形式,如但不限于eMMC主機(jī)接口、UFS接口和USB接口,舉幾個(gè)例子。

所述存儲(chǔ)器模塊130可以包括存儲(chǔ)器132,所述存儲(chǔ)器被配置成用于將數(shù)據(jù)或其他信息存儲(chǔ)在所述存儲(chǔ)模塊102中。所述存儲(chǔ)器132可以包括多個(gè)存儲(chǔ)器元件或單元,每個(gè)存儲(chǔ)器元件或單元被配置成用于存儲(chǔ)一個(gè)或多個(gè)位的數(shù)據(jù)。此外或者可替代地,所述存儲(chǔ)器132可以包括單個(gè)類型的存儲(chǔ)器(例如單個(gè)類型的易失性存儲(chǔ)器或單個(gè)類型的非易失性存儲(chǔ)器)或多種不同類型的存儲(chǔ)器(例如多種不同類型的易失性存儲(chǔ)器、多種不同類型的非易失性存儲(chǔ)器、或其組合)。

此外,所述存儲(chǔ)器132可以是這樣的單個(gè)物理控制(例如單個(gè)裸片或單個(gè)芯片):其中控制器110可以使用相同的總線或信道來(lái)訪問(wèn)所述單個(gè)物理控制。可替代地,所述存儲(chǔ)器132可以包括多個(gè)不同的物理空間(例如多個(gè)裸片或多個(gè)芯片),其中控制器110可以使用不同的總線或不同的信道來(lái)訪問(wèn)所述不同的物理空間。

存儲(chǔ)器132可以具有有組織的安排或?qū)哟谓Y(jié)構(gòu),其中存儲(chǔ)器132的存儲(chǔ)器元件元件或單元是有組織的。所述控制器110可以被配置成用于根據(jù)這種有組織的安排或?qū)哟谓Y(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù)和/或訪問(wèn)所存儲(chǔ)的數(shù)據(jù)。

對(duì)于一些示例配置的閃存,存儲(chǔ)器元件可以被劃分或整理為塊,其中每個(gè)塊包含可以一起被擦除的最小數(shù)量的存儲(chǔ)器元件。每個(gè)塊可以進(jìn)一步被劃分為多個(gè)頁(yè),其中每個(gè)頁(yè)是編程或讀取單位。每個(gè)單獨(dú)的頁(yè)可以進(jìn)一步被劃分為多個(gè)區(qū)段,其中每個(gè)區(qū)段包含可以作為基本編程操作一次被寫入的最小數(shù)量的存儲(chǔ)器元件。此外,對(duì)于一些示例配置,多個(gè)塊和頁(yè)可以跨多個(gè)平面分布、并且分別作為元塊和元頁(yè)一起被操作??商娲?,塊和頁(yè)的分別可以被限制于單個(gè)平面。進(jìn)一步,元塊可以分布的多個(gè)平面可以被分組為存儲(chǔ)體。每個(gè)存儲(chǔ)體可以是一個(gè)元塊或一個(gè)元頁(yè)寬。此外,每個(gè)存儲(chǔ)體可以由所述控制器110獨(dú)立地管理。

可以用多種不同的方式將數(shù)據(jù)存儲(chǔ)在塊和/或元塊中,包括不相連地(隨機(jī)地)或相連地。如在此使用的,并且除非另外指明,術(shù)語(yǔ)“塊”和“塊”以及術(shù)語(yǔ)“頁(yè)”和“元頁(yè)”可以互換地使用和/或分別統(tǒng)稱為“元塊”和“元頁(yè)”,而不關(guān)注這個(gè)塊/元塊以及頁(yè)/元頁(yè)是跨單個(gè)平面還是多個(gè)平面。

所述存儲(chǔ)器元件可以被配置成其中每個(gè)單元存儲(chǔ)單個(gè)數(shù)據(jù)位的單層單元(SLC)、其中每個(gè)單元存儲(chǔ)多個(gè)數(shù)據(jù)位的多層單元(MLC)(例如,每個(gè)單元兩個(gè)數(shù)據(jù)位)、其中每個(gè)單元存儲(chǔ)三個(gè)數(shù)據(jù)位的三層單元(TLC)、或者SLC、MLC和TLC的組合。相應(yīng)地,一塊或一頁(yè)存儲(chǔ)器元件可以分別存儲(chǔ)單個(gè)一塊或一頁(yè)的數(shù)據(jù)、或多塊或多頁(yè)的數(shù)據(jù),取決于所述存儲(chǔ)器元件是被配置成SLC、MLC和/或TLC。存儲(chǔ)器元件是SLC、MLC還是TLC可以取決于控制器110確定將編程到所述存儲(chǔ)器元件中的位數(shù)。例如,所述控制器110可以被配置成用于將單個(gè)數(shù)據(jù)位編程到存儲(chǔ)器元件中,在此情況下所述存儲(chǔ)器元件被配置成SLC。相應(yīng)地,所述存儲(chǔ)器元件中的每一個(gè)可以被配置成SLC模式、MLC模式、TLC模式,例如由控制器110如何對(duì)相應(yīng)存儲(chǔ)器元件編程來(lái)決定的。

此外,對(duì)于一些示例配置,存儲(chǔ)器132可以包括單個(gè)區(qū)域。對(duì)于其他示例配置,存儲(chǔ)器132可以被劃分或分離成多個(gè)區(qū)域或部分,包括主存儲(chǔ)器134和輔助存儲(chǔ)器136,如圖1所示。所述主存儲(chǔ)器134和輔助存儲(chǔ)器136的不同可以在于,它們可以是不同的存儲(chǔ)器類型、可以位于不同物理空間內(nèi)、具有不同的單元配置、或所述的組合。

對(duì)于一些示例的閃存應(yīng)用,所述輔助存儲(chǔ)器136可以是二進(jìn)制緩存136。所述主存儲(chǔ)器134具有比所述二進(jìn)制緩存136高的位/單元存儲(chǔ)密度。也就是,所述主存儲(chǔ)器134的存儲(chǔ)器元件可以被配置成MLC,而所述二進(jìn)制緩存136的存儲(chǔ)器元件可以被配置成SLC。在替代性的示例配置中,所述主存儲(chǔ)器134的存儲(chǔ)器元件也可以被配置成SLC。此外,所述二進(jìn)制緩存136可以被配置成與主存儲(chǔ)器134相比允許更細(xì)粒度的寫入。這種更細(xì)的粒度可以與來(lái)自主機(jī)寫入請(qǐng)求的邏輯數(shù)據(jù)單元的粒度更兼容。此外或者可替代地,所述主存儲(chǔ)器134可以被配置成用于依次地存儲(chǔ)邏輯數(shù)據(jù)單元,而所述二進(jìn)制緩存136可以依次地或者可以不依次地存儲(chǔ)邏輯數(shù)據(jù)單元。相應(yīng)地,數(shù)據(jù)片段(例如,小于數(shù)據(jù)元塊或邏輯組)可以存儲(chǔ)在所述二進(jìn)制緩存136中。對(duì)于一些情形,可以隨后在主存儲(chǔ)器134中將所述數(shù)據(jù)片段以依次的順序重組成塊。

所述存儲(chǔ)器模塊130可以進(jìn)一步包括邏輯電路142,所述邏輯電路被配置成用于控制和/或管理在所述存儲(chǔ)器中的數(shù)據(jù)存儲(chǔ)。所述邏輯電路142可以在控制器110與存儲(chǔ)器132之間提供接口。所述邏輯電路142可以響應(yīng)于和/或根據(jù)從所述控制器110接收的和/或由其生成的上下文指令或命令、例如讀出、編程和/或擦除命令來(lái)控制和/或管理在所述存儲(chǔ)器132中的數(shù)據(jù)存儲(chǔ)。所述邏輯電路142可以被配置成用于進(jìn)行用于控制和/或管理所述數(shù)據(jù)存儲(chǔ)的多個(gè)不同的存儲(chǔ)器管理功能,包括但不限于:尋址、數(shù)據(jù)傳送、讀出、行和列解碼、和/或柵極偏置。此外,所述存儲(chǔ)器控制器142可以在硬件中實(shí)施,包括一個(gè)或多個(gè)處理器、硬件邏輯、緩沖器、電壓發(fā)生器、和/或用于進(jìn)行所述存儲(chǔ)器控制器142的功能的其他電路。

所述存儲(chǔ)器模塊130可以進(jìn)一步包括讀出電路144,所述讀出電路可以包括被配置成用于讀出被存儲(chǔ)在存儲(chǔ)器132中的數(shù)據(jù)的多個(gè)讀出放大器、以及被配置成用于存儲(chǔ)所讀出的數(shù)據(jù)的多個(gè)鎖存器,所述數(shù)據(jù)接著被傳送至控制器110。

圖1示出了作為所述存儲(chǔ)模塊102的分開的部件的控制器110和邏輯電路142。然而,對(duì)于替代性的示例配置,所述邏輯電路142和/或由所述邏輯電路142進(jìn)行的功能可以被并入控制器110中,并且所述控制器110可以被配置成用于與存儲(chǔ)器132和/或讀出電路144之間通信。

所述存儲(chǔ)模塊102還可以包括通信總線146,所述通信總線在所述控制器110與所述存儲(chǔ)器模塊130之間提供了通信鏈路。所述通信總線146可以被所述控制器110和所述存儲(chǔ)器模塊130用于傳遞數(shù)據(jù)、命令、或其他信息或消息,以便執(zhí)行從主機(jī)系統(tǒng)101接收的主機(jī)請(qǐng)求或命令,例如主機(jī)讀取和寫入請(qǐng)求。

當(dāng)存儲(chǔ)模塊102從主機(jī)系統(tǒng)101接收到主機(jī)讀取請(qǐng)求時(shí),所述存儲(chǔ)模塊102可以被配置成用于進(jìn)行多個(gè)進(jìn)程來(lái)執(zhí)行或?qū)嵤┧鲋鳈C(jī)讀取請(qǐng)求。這樣的進(jìn)程可以包括:前端命令解析;地址轉(zhuǎn)換;數(shù)據(jù)檢索;后數(shù)據(jù)檢索;以及主機(jī)通信。

圖2示出了可以用于進(jìn)行所述多個(gè)用于執(zhí)行主機(jī)讀取請(qǐng)求的進(jìn)程的控制器110的部件的示例配置。如圖2所示,所述控制器110可以包括多個(gè)硬件模塊202-208、中央固件模塊210、緩沖池212、連同所述主機(jī)接口模塊(HIM)116和所述存儲(chǔ)器接口模塊(MIM)114。

所述多個(gè)硬件模塊202-208可以各自被配置成用于進(jìn)行一個(gè)或多個(gè)相關(guān)聯(lián)的用于執(zhí)行主機(jī)讀取請(qǐng)求的進(jìn)程。所述多個(gè)硬件模塊202-208可以用硬件部件和/或在不執(zhí)行軟件或固件的情況下進(jìn)行其相關(guān)聯(lián)的進(jìn)程。示例的硬件部件可以包括緩沖器、寄存器、鎖存器、觸發(fā)器、邊緣檢測(cè)器、計(jì)數(shù)器、邏輯電路(例如,AND門、OR門等等)、比較器、運(yùn)算放大器、無(wú)源部件(例如,晶體管、電容器等等)、多路復(fù)用器、多路分用器、掩蔽電路、以及運(yùn)算電路(例如,加法器、減法器、乘法器、觸發(fā)器等等),作為非限制性示例。

這些進(jìn)程中的全部或一些可以由中央固件模塊210進(jìn)行,所述中央固件模塊可以包括執(zhí)行固件(FM)216以便進(jìn)行所述進(jìn)程的處理器或處理器電路214。所述固件216總體上可以包括能夠被存儲(chǔ)在存儲(chǔ)介質(zhì)中且是處理器214可執(zhí)行的軟件和/或可執(zhí)行程序指令集。所述處理器214可以包括被配置成用于進(jìn)行多種不同類型的處理的單個(gè)處理器或多個(gè)處理器,例如協(xié)同處理、多重處理、多任務(wù)處理、并行處理、遠(yuǎn)程處理、分布式處理等等,以便進(jìn)行所述主機(jī)讀取請(qǐng)求進(jìn)程。所述處理器214可以是微處理器、專用集成電路(ASIC)、場(chǎng)可編程門陣列(FPGA)、或其他現(xiàn)在已知的或今后開發(fā)的被配置成用于執(zhí)行可能是固件216的一部分的程序指令的處理電路。

如圖2所示,固件216可以被存儲(chǔ)在本地或控制器存儲(chǔ)器218中的控制器110的內(nèi)部,所述控制器存儲(chǔ)器可以是與存儲(chǔ)器模塊130分開的或“芯片外的”、并且可以包括一種或多種不同類型的存儲(chǔ)器結(jié)構(gòu)或技術(shù)的易失性存儲(chǔ)器、非易失性存儲(chǔ)器、或其組合。所述處理器214可以適應(yīng)或訪問(wèn)所述控制器存儲(chǔ)器218以進(jìn)行主機(jī)讀取進(jìn)程。例如,包含程序指令的軟件和/或固件可以存儲(chǔ)在控制器存儲(chǔ)器218中,處理器214可以執(zhí)行所述軟件和/或固件來(lái)進(jìn)行主機(jī)讀取進(jìn)程。如下文進(jìn)一步描述的,所述控制器存儲(chǔ)器218可以存儲(chǔ)在控制器110內(nèi)部的其他信息和/或數(shù)據(jù)成,而非固件216。

硬件模塊202-208與中央固件模塊210的組合可以提供多個(gè)讀取進(jìn)程路徑或流程,包括硬件讀取進(jìn)程路徑和固件讀取進(jìn)程路徑。所述硬件和固件讀取處理路徑中的每一個(gè)可以彼此獨(dú)立地執(zhí)行主機(jī)讀取請(qǐng)求、或者可以彼此通信以便執(zhí)行主機(jī)讀取請(qǐng)求。在主機(jī)讀取請(qǐng)求沿著硬件讀取進(jìn)程路徑進(jìn)行時(shí),硬件模塊202-208可以進(jìn)行讀取進(jìn)程。在主機(jī)讀取請(qǐng)求沿著固件讀取進(jìn)程路徑進(jìn)行時(shí),中央固件模塊210可以進(jìn)行讀取進(jìn)程。

總體上,所述讀取進(jìn)程路徑中的所述多個(gè)硬件模塊202-208可以在控制器110中實(shí)施以便加速主機(jī)讀取請(qǐng)求的執(zhí)行。對(duì)于一些示例配置,所述多個(gè)硬件模塊202-208中的每一個(gè)可以被配置成用于在如果滿足一個(gè)或多個(gè)指標(biāo)時(shí),進(jìn)行與執(zhí)行主機(jī)讀取請(qǐng)求相關(guān)聯(lián)的一個(gè)或多個(gè)讀取進(jìn)程。如果沒(méi)有滿足所述一個(gè)或多個(gè)指標(biāo),則中央固件模塊210可以進(jìn)行讀取進(jìn)程。此外,如果滿足了所述一個(gè)或多個(gè)指標(biāo)但是進(jìn)行讀取進(jìn)程的所述硬件模塊卻不能進(jìn)行所述讀取進(jìn)程,則中央固件模塊210可以進(jìn)行所述讀取進(jìn)程。

相應(yīng)地,主機(jī)讀取請(qǐng)求的執(zhí)行可以由所述硬件讀取進(jìn)程路徑中的硬件模塊202-208處理,直到讀取進(jìn)程不能被硬件模塊202-208之一進(jìn)行,此時(shí)所述固件模塊210可以進(jìn)行所述讀取進(jìn)程。之后,所述固件模塊210可以判定是否沿著固件路徑處理所述主機(jī)讀取請(qǐng)求、或者將后續(xù)處理所述主機(jī)讀取請(qǐng)求的責(zé)任傳回至所述硬件路徑。如果滿足了進(jìn)行下一個(gè)讀取進(jìn)程的一個(gè)或多個(gè)指標(biāo),則所述固件模塊210可以將責(zé)任傳回至所述硬件路徑。否則,所述固件模塊210可以繼續(xù)處理所述主機(jī)讀取請(qǐng)求。這樣,硬件模塊202-208和固件模塊210可以彼此交互或者交結(jié)硬件與固件讀取進(jìn)程路徑,使得硬件模塊202-208在能夠時(shí)進(jìn)行主機(jī)讀取進(jìn)程,而固件模塊210在所述硬件模塊不能時(shí)接任。

一個(gè)指標(biāo)可以是和/或可以是關(guān)于復(fù)雜性。如果為了成功進(jìn)行讀取進(jìn)程而涉及的任務(wù)被確定是在一定的復(fù)雜性水平之下和/或之內(nèi),則所述讀取進(jìn)程可以由硬件模塊202-208中的相關(guān)聯(lián)的一個(gè)硬件模塊進(jìn)行??商娲兀绻麨榱顺晒M(jìn)行讀取進(jìn)程而涉及的任務(wù)被確定是在一定的復(fù)雜性水平之上,則所述讀取進(jìn)程可以由固件模塊210處理。

另一個(gè)指標(biāo)可以是和/或可以是關(guān)于通用性。硬件模塊202-208可以被配置成用于:在為了成功進(jìn)行讀取進(jìn)程而涉及的任務(wù)是常見的或經(jīng)常發(fā)生、或者所述主機(jī)讀取請(qǐng)求自身被識(shí)別為是經(jīng)常接收到的主機(jī)讀取請(qǐng)求類型時(shí),進(jìn)行相關(guān)聯(lián)的讀取進(jìn)程??商娲?,固件模塊210可以在為了成功進(jìn)行讀取進(jìn)程而涉及的任務(wù)被認(rèn)為不常見或很少發(fā)生、或者所述主機(jī)讀取請(qǐng)求自身被識(shí)別為是很少接收到的主機(jī)讀取請(qǐng)求類型時(shí)進(jìn)行讀取進(jìn)程。

對(duì)于一些讀取進(jìn)程,復(fù)雜性和通用性可以是相關(guān)的。讀取進(jìn)程越不復(fù)雜,就可以越經(jīng)常地進(jìn)行所述讀取進(jìn)程??商娲?,讀取進(jìn)程越復(fù)雜,就可以越不經(jīng)常地進(jìn)行所述讀取進(jìn)程。

此外,對(duì)于一些示例配置,所述一個(gè)或多個(gè)指標(biāo)(包括復(fù)雜性和通用性)可以與被請(qǐng)求讀取的數(shù)據(jù)的大小相關(guān)和/或相對(duì)應(yīng)。如下文更詳細(xì)描述的,硬件模塊202-208可以被配置成用于處理請(qǐng)求了具有的大小在預(yù)定量之內(nèi)的數(shù)據(jù)的讀取請(qǐng)求。所述預(yù)定量可以對(duì)應(yīng)于用于識(shí)別被請(qǐng)求讀取的數(shù)據(jù)的邏輯組號(hào)的數(shù)量、為了識(shí)別所請(qǐng)求的數(shù)據(jù)被存儲(chǔ)在的一個(gè)或多個(gè)物理位置而進(jìn)行的邏輯-到-物理地址轉(zhuǎn)換的次數(shù)、存儲(chǔ)器132中的可以連續(xù)存儲(chǔ)所述數(shù)據(jù)的區(qū)域的數(shù)量、為了減少所述數(shù)據(jù)而生成和發(fā)出的命令或命令集合的數(shù)量、或其組合。

進(jìn)一步,對(duì)于一些示例配置,硬件模塊202-208可以被配置成用于處理最簡(jiǎn)單的讀取請(qǐng)求,所述讀取請(qǐng)求可能要求進(jìn)行“短讀取”來(lái)執(zhí)行所述請(qǐng)求。這樣的讀取請(qǐng)求可以是對(duì)于通過(guò)單個(gè)邏輯組號(hào)可以識(shí)別的和/或?qū)?yīng)于單個(gè)邏輯組號(hào)的數(shù)據(jù)大小、為了識(shí)別所述數(shù)據(jù)的最新版本所在的物理地址而用所述單個(gè)邏輯組號(hào)對(duì)一個(gè)或多個(gè)地址數(shù)據(jù)結(jié)構(gòu)的單個(gè)查詢或單個(gè)查詢、可以連續(xù)存儲(chǔ)所述數(shù)據(jù)的單個(gè)區(qū)域(例如,頁(yè)或塊)、和/或?yàn)榱藱z索所述數(shù)據(jù)而要生成的單個(gè)讀出和數(shù)據(jù)傳送命令集。

進(jìn)一步,具體讀取進(jìn)程是否落入通過(guò)硬件模塊202-208之一或通過(guò)固件模塊210來(lái)處理的范圍內(nèi)可以獨(dú)立地由硬件模塊202-208中的每一個(gè)決定(即,基于每個(gè)模塊)。也就是,硬件模塊202-208之一是否可以進(jìn)行其關(guān)于具體主機(jī)讀取請(qǐng)求的相關(guān)聯(lián)讀取進(jìn)程可以或者不可以決定硬件模塊202-208中的不同的一個(gè)是否可以進(jìn)行其關(guān)于所述主機(jī)讀取請(qǐng)求的相關(guān)聯(lián)讀取進(jìn)程。

如圖2所示,用于進(jìn)行所述主機(jī)讀取請(qǐng)求的硬件部件可以被模塊化到硬件模塊202-208中,其中硬件模塊202-208中的每一個(gè)被配置成獨(dú)立地與中央固件模塊210通信。具體地,如圖2所示,硬件模塊202-208中的每一個(gè)可以包括被配置成用于與中央固件模塊210的固件接口(FM I/F)222通信的固件接口(FW I/F)220。

在硬件模塊202-208之一確定了它不能成功進(jìn)行其執(zhí)行主機(jī)讀取請(qǐng)求的一部分的事件中,所述硬件模塊可以通知中央固件模塊210其失敗、以及中央固件模塊210為了進(jìn)行所述進(jìn)程而可以使用的、與主機(jī)讀取請(qǐng)求相關(guān)聯(lián)的任何數(shù)據(jù)或其他信息。作為響應(yīng),中央固件模塊210可以進(jìn)行所述硬件模塊不能進(jìn)行的主機(jī)讀取請(qǐng)求進(jìn)程。

對(duì)于一些示例配置,在進(jìn)行了硬件模塊不能進(jìn)行的具體讀取進(jìn)程之后,中央固件模塊210可以繼續(xù)進(jìn)行用于執(zhí)行主機(jī)讀取請(qǐng)求的剩余主機(jī)讀取請(qǐng)求進(jìn)程。對(duì)于其他示例配置,在中央固件模塊210進(jìn)行了具體讀取進(jìn)程之后,中央固件模塊210可以將所述進(jìn)程的結(jié)果發(fā)送至硬件模塊202-208之一來(lái)進(jìn)行下一個(gè)主機(jī)讀取請(qǐng)求進(jìn)程。之后,硬件模塊202-208可以繼續(xù)進(jìn)行所述主機(jī)讀取請(qǐng)求進(jìn)程直到執(zhí)行完成,或者另一個(gè)主機(jī)讀取請(qǐng)求進(jìn)程不能被所述硬件模塊202-208進(jìn)行,此時(shí)所述硬件模塊可以通知所述中央固件模塊210。硬件模塊202-208與固件模塊210之間的這樣的交互可以繼續(xù),直到所述主機(jī)讀取請(qǐng)求的執(zhí)行完成或另外被終止。

此外,如圖2所示,硬件模塊202-208可以具有硬件輸入接口(HW I/P I/F)224和硬件輸出接口(HW O/P I/F)226。如下文更詳細(xì)解釋的,第一硬件模塊202可以經(jīng)由其硬件輸入接口224從硬件接口模塊116接收主機(jī)命令。之后,硬件模塊202-208中的每一個(gè)可以被配置成使用其相應(yīng)硬件輸出接口226輸出“結(jié)果”輸出和“狀態(tài)”輸出。所輸出的結(jié)果和狀態(tài)輸出接著可以作為相應(yīng)的結(jié)果和狀態(tài)輸入被另一個(gè)硬件模塊的硬件輸入接口224接收。

硬件模塊所輸出的結(jié)果輸出可以包括由所述硬件模塊進(jìn)行的主機(jī)讀取請(qǐng)求進(jìn)程所得到的信息。所述狀態(tài)輸出可以包括對(duì)于所述硬件模塊進(jìn)行的主機(jī)讀取請(qǐng)求進(jìn)程是否成功的指示。對(duì)于一些示例配置,所述狀態(tài)輸出可以告訴和/或指示接收了所述狀態(tài)輸入的硬件模塊鎖存或以其他方式保持它正在從所述另一個(gè)硬件模塊接收的結(jié)果輸出??商娲兀绻布K接收到在不成功的水平上的狀態(tài)輸入,則所述硬件模塊可以忽略它正在其結(jié)果輸入上接收的任何信息。

可以用多種不同的方式來(lái)將硬件模塊202-208模塊化,這可以取決于所進(jìn)行的具體讀取進(jìn)程。在一種示例配置中,如圖2所示,硬件模塊202-208可以包括前端硬件模塊202、地址轉(zhuǎn)換硬件模塊204、數(shù)據(jù)檢索硬件模塊206、以及后數(shù)據(jù)檢索硬件模塊208。

所述前端硬件模塊202可以經(jīng)由所述主機(jī)接口模塊116接收由存儲(chǔ)模塊102接收到的主機(jī)命令。所述前端硬件模塊202可以被配置成用于解析所述主機(jī)命令以便識(shí)別所述主機(jī)命令的類型。如果所識(shí)別的主機(jī)命令是非主機(jī)讀取命令的命令,例如主機(jī)寫入命令,則前端硬件模塊202可以拒絕所述主機(jī)命令并且將所述主機(jī)命令發(fā)生至所述中央固件模塊210以進(jìn)行后續(xù)處理。可替代地,如果主機(jī)命令是主機(jī)讀取請(qǐng)求,則前端硬件模塊202可以確定在所述主機(jī)讀取請(qǐng)求中識(shí)別的邏輯地址信息并且將所述邏輯地址信息作為其結(jié)果輸出輸出至所述地址轉(zhuǎn)換硬件模塊204。然而,如果出于某種原因所述前端硬件模塊202不能確定所述邏輯地址信息,則所述前端硬件模塊202可以通知所述中央固件模塊210。此外,假定前端模塊202確定了所述邏輯地址信息,則前端硬件模塊202可以輸出其在指示所述前端模塊接收了主機(jī)讀取請(qǐng)求并且成功確定了所述主機(jī)讀取請(qǐng)求中的邏輯地址信息的水平上的狀態(tài)輸出。

對(duì)于替代性的示例配置,前端硬件模塊202可以被實(shí)施在固件中,所述固件可以是固件模塊210的一部分。在任一情況下,是實(shí)施為硬件模塊、還是實(shí)施為固件模塊210的一部分,所述前端模塊可以用作初始地判定主機(jī)命令初始地是沿著硬件路徑還是固件路徑被處理的判定器。

地址轉(zhuǎn)換硬件模塊204可以從前端硬件模塊202接收所述邏輯地址信息作為其結(jié)果輸入。此外,地址轉(zhuǎn)換模塊204可以接收所述狀態(tài)輸出作為其狀態(tài)輸入、鑒定所述狀態(tài)是成功、并且作為響應(yīng)而鎖存所述結(jié)果輸出以便保持所述邏輯地址信息。

進(jìn)一步,地址轉(zhuǎn)換硬件模塊204可以被配置成用于將所述邏輯地址信息轉(zhuǎn)換成所述物理地址信息,從而識(shí)別與所述主機(jī)讀取請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)被存儲(chǔ)在的物理位置。如果地址轉(zhuǎn)換模塊204不能將所述邏輯地址信息轉(zhuǎn)換成所述物理地址信息,則地址轉(zhuǎn)換模塊204可以通知所述中央固件模塊210,從而提供所述邏輯地址信息??商娲?,如果地址轉(zhuǎn)換硬件模塊204確定了物理地址信息,則地址轉(zhuǎn)換硬件模塊204可以將所述物理地址信息作為其結(jié)果輸出輸出至所述數(shù)據(jù)檢索硬件模塊206。此外,地址轉(zhuǎn)換模塊202可以輸出其在指示所述地址轉(zhuǎn)換模塊202成功地確定了與所述主機(jī)讀取請(qǐng)求相關(guān)聯(lián)的物理地址信息的水平上的狀態(tài)輸出。

數(shù)據(jù)檢索硬件模塊206可以從地址轉(zhuǎn)換硬件模塊204接收所述物理地址信息作為其結(jié)果輸入。此外,數(shù)據(jù)檢索硬件模塊206可以從地址轉(zhuǎn)換模塊204接收所述狀態(tài)輸出作為其狀態(tài)輸入、鑒定所述狀態(tài)是成功、并且作為響應(yīng)而鎖存所述結(jié)果輸出以便保持所述物理地址信息。

進(jìn)一步,數(shù)據(jù)檢索硬件模塊206可以被配置成用于生成關(guān)于檢索與所述物理地址信息相關(guān)聯(lián)的數(shù)據(jù)的一個(gè)或多個(gè)數(shù)據(jù)檢索命令的一個(gè)或多個(gè)集合。如下文更詳細(xì)解釋的,示例的集合可以包括讀出命令和數(shù)據(jù)傳送命令。所述讀出命令可以指示所述存儲(chǔ)器模塊130將數(shù)據(jù)讀出到所述讀出電路144的所述鎖存器中。相關(guān)聯(lián)的數(shù)據(jù)傳送命令可以指示所述存儲(chǔ)器模塊130將所讀出的數(shù)據(jù)發(fā)送至控制器110。

如果出于某種原因所述數(shù)據(jù)檢索硬件模塊206不能生成數(shù)據(jù)檢索命令,則數(shù)據(jù)檢索硬件模塊206可以通知中央固件模塊210,從而為其提供所述物理地址信息。假定數(shù)據(jù)檢索模塊206能夠生成數(shù)據(jù)檢索命令,數(shù)據(jù)檢索模塊206可以將所述數(shù)據(jù)檢索命令發(fā)送至存儲(chǔ)器接口模塊114,所述存儲(chǔ)器接口模塊進(jìn)而可以將所述數(shù)據(jù)檢索命令發(fā)送至存儲(chǔ)器模塊130。響應(yīng)于所述數(shù)據(jù)檢索命令,存儲(chǔ)器模塊130可以檢索所述存儲(chǔ)器132中存儲(chǔ)在與所述物理地址信息相關(guān)聯(lián)的位置的數(shù)據(jù)。

所述數(shù)據(jù)可以經(jīng)由存儲(chǔ)器接口模塊114被發(fā)送至后數(shù)據(jù)檢索硬件模塊208。此外,對(duì)于一些示例配置,存儲(chǔ)器接口模塊114還可以發(fā)送狀態(tài)輸出至后數(shù)據(jù)檢索硬件模塊208,所述后數(shù)據(jù)檢索硬件模塊可以指示后數(shù)據(jù)檢索硬件模塊208鎖存所述數(shù)據(jù)。在接收到所述數(shù)據(jù)之后,后數(shù)據(jù)檢索硬件模塊208可以進(jìn)行后數(shù)據(jù)檢索進(jìn)程。示例的進(jìn)程可以包括錯(cuò)誤校正和解碼。對(duì)于一些示例配置,如果錯(cuò)誤校正進(jìn)程鑒定了了太高的位錯(cuò)誤率和/或不能成功解碼所述數(shù)據(jù),則后數(shù)據(jù)檢索硬件模塊208可以通知中央固件模塊210,從而提供所述數(shù)據(jù)。

如果后數(shù)據(jù)檢索硬件模塊208能夠成功進(jìn)行所述后數(shù)據(jù)檢索進(jìn)程,后數(shù)據(jù)檢索硬件模塊208可以將所述數(shù)據(jù)作為其結(jié)果輸出發(fā)送至緩沖池212,所述數(shù)據(jù)在被發(fā)送至主機(jī)系統(tǒng)101來(lái)完成所述主機(jī)讀取請(qǐng)求之前可以被暫時(shí)存儲(chǔ)在所述緩沖池中。此外,對(duì)于一些示例配置,后數(shù)據(jù)檢索硬件模塊208可以發(fā)送狀態(tài)輸出至緩沖池212,這可以通知緩沖池鎖存所述數(shù)據(jù)。

此外或者可替代地,后數(shù)據(jù)檢索硬件模塊208可以發(fā)送狀態(tài)輸出至所述主機(jī)接口模塊116,這可以向所述主機(jī)接口模塊指示:數(shù)據(jù)被存儲(chǔ)在緩沖池212中并且準(zhǔn)備發(fā)送至主機(jī)系統(tǒng)101。作為響應(yīng),主機(jī)接口模塊116可以檢索被存儲(chǔ)在緩沖池212中的數(shù)據(jù)并且將所述數(shù)據(jù)發(fā)送至主機(jī)系統(tǒng)101。

圖3-6分別示出了前端硬件模塊202、地址轉(zhuǎn)換硬件模塊204、數(shù)據(jù)檢索硬件模塊206、和后數(shù)據(jù)檢索硬件模塊208的示例配置的框圖。

參見圖3,前端硬件模塊202的示例配置可以包括多個(gè)子模塊302、304、306,每個(gè)子模塊被配置成用于進(jìn)行所述前端命令解析進(jìn)程的子進(jìn)程。此外,所述多個(gè)子模塊302-306中的每一個(gè)可以被配置成用于發(fā)送結(jié)果輸出和狀態(tài)輸出至下一個(gè)或下游子模塊以進(jìn)行進(jìn)一步處理、并且在不能進(jìn)行其相關(guān)聯(lián)子進(jìn)程的事件中與固件接口模塊220通信。

所述多個(gè)子模塊可以包括命令類型識(shí)別(ID)子模塊302、大小確定子模塊304、以及邏輯地址確定子模塊306。如圖3所示,所述命令類型ID子模塊302可以被配置成用于從硬件輸入接口224接收主機(jī)命令、并且解析所述主機(jī)命令以便識(shí)別所述主機(jī)命令是主機(jī)讀取請(qǐng)求還是不同類型的主機(jī)命令,例如主機(jī)寫入請(qǐng)求。如之前描述的,如果所接收的主機(jī)命令是非主機(jī)讀取請(qǐng)求的命令,則命令類型ID子模塊302可以將所述主機(jī)命令經(jīng)由固件接口220發(fā)送至中央固件模塊210以進(jìn)行后續(xù)處理??商娲?,如果所述命令類型ID模塊確定所述主機(jī)命令是主機(jī)讀取請(qǐng)求,則命令類型ID子模塊302可以將所述主機(jī)讀取請(qǐng)求(或從所述主機(jī)讀取請(qǐng)求解析得到的信息)作為其結(jié)果輸出發(fā)送至所述大小確定子模塊304、并且作為其狀態(tài)輸出指示:它成功地接收到主機(jī)讀取命令。

作為響應(yīng),所述大小確定子模塊304可以鎖存從命令類型ID子模塊302接收的所述主機(jī)讀取請(qǐng)求信息、并且確定被請(qǐng)求讀取的數(shù)據(jù)的大小。如果所述數(shù)據(jù)的大小超過(guò)了預(yù)定閾值量,則所述大小確定子模塊可以確定:所述主機(jī)讀取請(qǐng)求在請(qǐng)求太大的待讀取數(shù)據(jù)量而硬件模塊202-208不能處理。作為響應(yīng),所述大小確定子模塊304可以將所述主機(jī)讀取請(qǐng)求信息發(fā)送至中央固件模塊210以進(jìn)行后續(xù)處理。

對(duì)于一些示例配置,閾值數(shù)據(jù)水平可以對(duì)應(yīng)于一次或每次嘗試可以從存儲(chǔ)器132讀出的扇區(qū)或最小數(shù)據(jù)單位。此外或者可替代地,所述閾值水平可以對(duì)應(yīng)于所述控制器110響應(yīng)于發(fā)送單個(gè)數(shù)據(jù)檢索命令集可以從存儲(chǔ)器模塊130接收的數(shù)據(jù)量。示例的閾值大小可以是4千字節(jié)(kB)或8kB,但其他大小可以是可能的。此外或者可替代地,對(duì)于閃存,最小數(shù)據(jù)單位對(duì)應(yīng)于一頁(yè)數(shù)據(jù)。執(zhí)行對(duì)于具有的大小小于或等于所述最小讀取數(shù)據(jù)單位的數(shù)據(jù)的讀取請(qǐng)求可以被稱為短讀取請(qǐng)求,并且執(zhí)行短讀取請(qǐng)求可以被稱為短讀取。對(duì)于一些示例,硬件模塊202-208可以被配置成用于僅處理短讀取請(qǐng)求,并且因此涉及比短讀取大的讀取的任何讀取請(qǐng)求可以被發(fā)送至中央固件模塊210以進(jìn)行進(jìn)一步處理。對(duì)于其他示例配置,硬件模塊202-208可能能夠處理非短讀取的主機(jī)讀取請(qǐng)求。

如果所述大小確定模塊304確定了被請(qǐng)求將被讀取的數(shù)據(jù)的大小沒(méi)有超過(guò)所述預(yù)定閾值水平,則所述大小確定模塊304可以將所述主機(jī)讀取請(qǐng)求信息作為其結(jié)果輸出發(fā)送至邏輯地址確定子模塊306。

邏輯地址確定子模塊306可以被配置成用于確定在所述主機(jī)讀取請(qǐng)求中包含的邏輯地址信息,所述邏輯地址信息接著可以被地址轉(zhuǎn)換硬件模塊204(圖2)轉(zhuǎn)換成與所請(qǐng)求的數(shù)據(jù)被存儲(chǔ)在的位置相關(guān)聯(lián)的物理地址。更詳細(xì)地,對(duì)于一些存儲(chǔ)器技術(shù),例如閃存,主機(jī)系統(tǒng)101和存儲(chǔ)模塊102可以使用不同的尋址方案來(lái)管理數(shù)據(jù)的存儲(chǔ)。例如,當(dāng)主機(jī)系統(tǒng)101想要將數(shù)據(jù)寫入存儲(chǔ)模塊102中時(shí),主機(jī)系統(tǒng)101可以對(duì)所述數(shù)據(jù)分派邏輯地址(也稱為邏輯塊地址(LBA))。類似地,當(dāng)主機(jī)系統(tǒng)101想要從存儲(chǔ)模塊102讀取數(shù)據(jù)時(shí),主機(jī)系統(tǒng)101可以通過(guò)所述邏輯地址識(shí)別它想要讀取的數(shù)據(jù)。主機(jī)系統(tǒng)101可以利用邏輯尋址方案,其中主機(jī)文件系統(tǒng)維持被主機(jī)系統(tǒng)101分派或識(shí)別的所有LBA的邏輯地址范圍。此外,對(duì)于一些示例配置,主機(jī)系統(tǒng)101可以在邏輯扇區(qū)單位內(nèi)對(duì)數(shù)據(jù)尋址。相應(yīng)地,主機(jī)讀取和寫入請(qǐng)求可以請(qǐng)求將讀取和寫入包括具有相連地址的一串邏輯扇區(qū)數(shù)據(jù)的區(qū)段。

與所述主機(jī)系統(tǒng)的邏輯尋址方案形成對(duì)比,存儲(chǔ)模塊102可以根據(jù)物理尋址方案來(lái)存儲(chǔ)和訪問(wèn)數(shù)據(jù),所述據(jù)物理尋址方案使用與主機(jī)系統(tǒng)101分派的邏輯地址不同的物理地址來(lái)存儲(chǔ)和訪問(wèn)數(shù)據(jù)。為了協(xié)調(diào)所述主機(jī)系統(tǒng)的邏輯尋址方案與所述存儲(chǔ)模塊的物理尋址方案,存儲(chǔ)模塊102可以進(jìn)行地址轉(zhuǎn)換,其中存儲(chǔ)模塊102將主機(jī)請(qǐng)求中包含的邏輯地址轉(zhuǎn)換成物理地址來(lái)進(jìn)行數(shù)據(jù)的存儲(chǔ)或檢索。如之前描述的,存儲(chǔ)器132可以被組織或安排成元塊。相應(yīng)地,當(dāng)存儲(chǔ)器設(shè)備102進(jìn)行地址轉(zhuǎn)換時(shí),所述存儲(chǔ)器設(shè)備102所確定的物理地址可以識(shí)別所述數(shù)據(jù)被存儲(chǔ)在的所述元塊、所述多個(gè)元塊、和/或元塊內(nèi)的物理扇區(qū)。

對(duì)于一些示例配置,所述邏輯地址(LBA)可以被分組成通過(guò)邏輯組號(hào)表示的邏輯組(LG),并且所述邏輯組可以被映射至所述元塊。圖7示出了邏輯組(LG)與元塊(MB)之間的映射的示意圖。每個(gè)邏輯組可以映射至獨(dú)特元塊。相應(yīng)地,如圖7所示,元塊可以具有數(shù)量N的物理扇區(qū)以用于存儲(chǔ)與一個(gè)邏輯組相關(guān)聯(lián)的N個(gè)邏輯扇區(qū)的數(shù)據(jù)。對(duì)于一些示例配置,所述邏輯扇區(qū)的數(shù)據(jù)可以按相連的且依次的邏輯順序0、1、...、N-1被儲(chǔ)存在所述物理扇區(qū)中??商娲?,N個(gè)邏輯扇區(qū)的數(shù)據(jù)可以隨機(jī)地或不相連地存儲(chǔ)在一個(gè)元塊的N個(gè)物理扇區(qū)內(nèi)。

此外,對(duì)于相連地存儲(chǔ)數(shù)據(jù)的一些示例配置,在邏輯組的最小地址與它被映射至的元塊的最小地址之間可能存在偏差。在此情況下,邏輯扇區(qū)地址可以作為從所述元塊內(nèi)的邏輯組的底部回到頂部的環(huán)路進(jìn)行環(huán)繞。例如,如在圖2的底部圖中所示,元塊MBj可以存儲(chǔ)與其第一物理扇區(qū)0中的邏輯扇區(qū)k相關(guān)聯(lián)的數(shù)據(jù)。當(dāng)?shù)竭_(dá)最后一個(gè)邏輯扇區(qū)N-1時(shí),所述邏輯扇區(qū)可以環(huán)繞成使得,第一邏輯扇區(qū)0被相連地且依次地存儲(chǔ)在邏輯扇區(qū)0之后,并且邏輯扇區(qū)k-1被存儲(chǔ)在最后一個(gè)物理扇區(qū)N-1中。可以使用頁(yè)標(biāo)簽來(lái)標(biāo)識(shí)任何偏差,例如通過(guò)標(biāo)識(shí)被存儲(chǔ)在所述元塊的第一物理扇區(qū)中的數(shù)據(jù)的起始邏輯扇區(qū)地址。

返回參見圖3,當(dāng)邏輯地址確定子模塊306從大小確定子模塊304接收到主機(jī)讀取請(qǐng)求信息時(shí),邏輯地址確定子模塊306可以解析所述信息以便根據(jù)映射方案、例如圖7所示的映射來(lái)確定邏輯地址信息。示例的邏輯地址信息可以包括至少一個(gè)邏輯組號(hào)以及相關(guān)聯(lián)的偏差、相關(guān)聯(lián)的長(zhǎng)度(大小)、以及相關(guān)聯(lián)的存儲(chǔ)體號(hào)。邏輯地址確定子模塊306可以將所述邏輯地址信息作為其結(jié)果輸出輸出至地址轉(zhuǎn)換硬件模塊204,所述地址轉(zhuǎn)換硬件模塊接著可以使用所述邏輯地址信息來(lái)識(shí)別所述數(shù)據(jù)被存儲(chǔ)在的元塊和/或元塊內(nèi)的物理扇區(qū)。

對(duì)于一些示例配置,邏輯地址確定子模塊306可以被配置成用于確定是所述邏輯地址信息的一部分的一定數(shù)量的邏輯組號(hào)。此外,邏輯地址確定子模塊306可以將邏輯組號(hào)的數(shù)量與閾值數(shù)量進(jìn)行比較。如果邏輯組號(hào)的數(shù)量超過(guò)所述閾值,則邏輯地址確定子模塊306可以確定:主機(jī)讀取請(qǐng)求在請(qǐng)求太大的有待讀取的數(shù)據(jù)量而硬件模塊202-208不能處理。作為響應(yīng),邏輯地址確定子模塊306可以將所述主機(jī)讀取請(qǐng)求信息發(fā)送至中央固件模塊210以進(jìn)行后續(xù)處理。對(duì)于一些示例,所述閾值數(shù)量可以是一。也就是,請(qǐng)求與多個(gè)邏輯組號(hào)相關(guān)聯(lián)的數(shù)據(jù)的任何讀取請(qǐng)求都可以被識(shí)別為針對(duì)所述固件模塊210而不是硬件模塊202-208的主機(jī)讀取請(qǐng)求。不是一的閾值數(shù)量是可能的。

此外或者可替代地,對(duì)于一些示例配置,大小確定子模塊304可能不作為所述前端模塊202的子模塊被包含,所述前端模塊202可以判定主機(jī)讀取請(qǐng)求是否在請(qǐng)求對(duì)于硬件模塊202-208僅基于由邏輯地址確定子模塊306所確定的所述數(shù)量的邏輯組號(hào)而言太大的數(shù)據(jù)量。對(duì)于其他示例配置,邏輯地址確定子模塊306可以不考慮邏輯組號(hào)的數(shù)量,并且只要大小確定子模塊304確定所請(qǐng)求的數(shù)據(jù)的大小位于所述預(yù)定值之內(nèi),邏輯地址確定子模塊306就可以將所述邏輯地址信息傳遞至地址轉(zhuǎn)換硬件模塊204。

返回參見圖1,主存儲(chǔ)器134中的元塊可以包括或者證明是完好塊和更新塊。元塊在完全(且有時(shí)候依次地)存儲(chǔ)了一個(gè)邏輯組的數(shù)據(jù)而所述數(shù)據(jù)沒(méi)有任何廢棄(即,元頁(yè)的所有N個(gè)物理扇區(qū)存儲(chǔ)了N個(gè)邏輯扇區(qū)的數(shù)據(jù)并且所述數(shù)據(jù)扇區(qū)沒(méi)有任何廢棄)時(shí)是作為完好塊。元塊在存儲(chǔ)了一個(gè)或多個(gè)邏輯扇區(qū)的更新后數(shù)據(jù)時(shí)是更新塊。當(dāng)更新塊沒(méi)有完全被更新后數(shù)據(jù)填充時(shí),所述更新塊可以開放用于、或者可以用接收與相同邏輯組相關(guān)聯(lián)的其他邏輯扇區(qū)的更新后數(shù)據(jù)。當(dāng)更新塊被完全填充時(shí),它可以被關(guān)閉或者不再可用于接收其他邏輯扇區(qū)的更新后數(shù)據(jù),此時(shí)所述更新塊可以變成完好塊。

對(duì)于示例配置的包括主存儲(chǔ)器134和二進(jìn)制緩存136的存儲(chǔ)器132,數(shù)據(jù)可以存儲(chǔ)在二進(jìn)制緩存136的二進(jìn)制緩存塊中、而不是主存儲(chǔ)器134的元塊中。所述控制器110可以被配置成用于評(píng)估多個(gè)不同的因素或指標(biāo)來(lái)判定某些數(shù)據(jù)是被存儲(chǔ)在主存儲(chǔ)器134中還是二進(jìn)制緩存136中。一個(gè)因素可以包括有待存儲(chǔ)的數(shù)據(jù)是否是數(shù)據(jù)片段。數(shù)據(jù)片段可以是具有的大小小于元頁(yè)的大小從而使得所述數(shù)據(jù)的寫入將構(gòu)成部分頁(yè)寫入的數(shù)據(jù)。為了展示,假定元頁(yè)包括八個(gè)物理扇區(qū)。如果有待寫入的某些數(shù)據(jù)僅跨兩個(gè)扇區(qū),則所述數(shù)據(jù)可以被識(shí)別為用于存儲(chǔ)在二進(jìn)制緩存136中的數(shù)據(jù)片段??梢允褂貌煌诨蛘叱藬?shù)據(jù)大小之外的因素來(lái)判定數(shù)據(jù)是被存儲(chǔ)在主存儲(chǔ)器134中還是二進(jìn)制緩存136中。例如,如果當(dāng)前對(duì)于所述數(shù)據(jù)存在更新塊并且所述更新塊可以用存儲(chǔ)所述數(shù)據(jù),即使所述數(shù)據(jù)證明是數(shù)據(jù)片段,所述控制器110也可以確定將所述數(shù)據(jù)存儲(chǔ)在主存儲(chǔ)器134的所述可用更新塊中而不是二進(jìn)制緩存136中。

對(duì)于一些示例配置,數(shù)據(jù)標(biāo)題可以與相關(guān)聯(lián)的數(shù)據(jù)片段一起被存儲(chǔ)在二進(jìn)制緩存136。所述數(shù)據(jù)標(biāo)題可以包括:標(biāo)識(shí)相關(guān)聯(lián)的數(shù)據(jù)片段所屬的邏輯組的邏輯組號(hào)、標(biāo)識(shí)所述邏輯組內(nèi)的具體扇區(qū)的扇區(qū)偏差、標(biāo)識(shí)所述相關(guān)聯(lián)的數(shù)據(jù)片段的長(zhǎng)度的長(zhǎng)度標(biāo)識(shí)符、以及標(biāo)識(shí)相關(guān)聯(lián)的數(shù)據(jù)片段是否過(guò)度寫入了被存儲(chǔ)在更新塊中的對(duì)應(yīng)數(shù)據(jù)的一個(gè)或多個(gè)過(guò)度寫入指示符或標(biāo)記。

對(duì)于一些情形,響應(yīng)于將寫入數(shù)據(jù)的主機(jī)請(qǐng)求,所述控制器110可以將所述數(shù)據(jù)存儲(chǔ)在主存儲(chǔ)器134和二進(jìn)制緩存136二者中。例如,如果有待存儲(chǔ)的數(shù)據(jù)大于元頁(yè),則控制器110可以將具有元頁(yè)的大小的第一部分存儲(chǔ)在所述主存儲(chǔ)器134中的更新塊中、標(biāo)簽將所述數(shù)據(jù)的第二剩余部分存儲(chǔ)在所述二進(jìn)制緩存136中。為了展示,假定有待寫入的數(shù)據(jù)要求九個(gè)物理扇區(qū)。所述控制器110可以將所述數(shù)據(jù)的這九個(gè)扇區(qū)中的八個(gè)存儲(chǔ)在更新塊中、標(biāo)簽將所述數(shù)據(jù)的剩下一個(gè)扇區(qū)存儲(chǔ)在所述二進(jìn)制緩存136中。

此外或者可替代地,所述控制器110可以將重疊的數(shù)據(jù)存儲(chǔ)在主存儲(chǔ)器134和二進(jìn)制緩存136中。作為展示,假定所述控制器110響應(yīng)于第一主機(jī)寫入請(qǐng)求而將八個(gè)扇區(qū)的數(shù)據(jù)存儲(chǔ)在主存儲(chǔ)器134中的元塊中。進(jìn)一步假定所述控制器110接收用于更新這八個(gè)扇區(qū)中的兩個(gè)扇區(qū)的第二主機(jī)寫入請(qǐng)求。所述控制器110可以將更新后的數(shù)據(jù)作為數(shù)據(jù)片段存儲(chǔ)在二進(jìn)制緩存136中。作為另一種展示,所述控制器110可以接收第一主機(jī)寫入請(qǐng)求,其中將兩個(gè)扇區(qū)的數(shù)據(jù)作為數(shù)據(jù)片段存儲(chǔ)在二進(jìn)制緩存136中。所述控制器110接著可以接收用于存儲(chǔ)八個(gè)扇區(qū)的第二主機(jī)寫入請(qǐng)求,這八個(gè)扇區(qū)中的兩個(gè)可以用于被存儲(chǔ)在二進(jìn)制緩存136中的這兩個(gè)扇區(qū)的數(shù)據(jù)的更新。

替代于被存儲(chǔ)在存儲(chǔ)器132中,一些數(shù)據(jù)可以被存儲(chǔ)在控制器110中,例如緩沖池212或控制器存儲(chǔ)器218中(圖2)。這樣的數(shù)據(jù)可以包括在被發(fā)送到存儲(chǔ)器132或主機(jī)系統(tǒng)101之前被暫時(shí)存儲(chǔ)在所述控制器110內(nèi)的數(shù)據(jù)、或者旨在被永久存儲(chǔ)在所述控制器110中的數(shù)據(jù)。

為了保持跟蹤數(shù)據(jù)被存儲(chǔ)在所述存儲(chǔ)模塊102中的哪里,存儲(chǔ)模塊102可以維持目錄系統(tǒng),所述目錄系統(tǒng)映射了邏輯地址與物理地址之間的關(guān)系或關(guān)聯(lián)。所述目錄系統(tǒng)可以包括跟蹤和指明邏輯-物理地址關(guān)系的多個(gè)地址數(shù)據(jù)結(jié)構(gòu)(例如表格、列表、日志、或數(shù)據(jù)庫(kù)作為示例)。所述多個(gè)地址數(shù)據(jù)結(jié)構(gòu)可以包括主要地址數(shù)據(jù)結(jié)構(gòu)(也稱為主地址表(GAT))以及至少一個(gè)次要地址數(shù)據(jù)結(jié)構(gòu)。所述控制器110可以訪問(wèn)所述主要和次要數(shù)據(jù)結(jié)構(gòu)以便確定所述數(shù)據(jù)的最新版本被存儲(chǔ)在所述存儲(chǔ)模塊102中的哪里。

所述主要地址數(shù)據(jù)結(jié)構(gòu)(GAT)可以提供關(guān)于所述主機(jī)系統(tǒng)101所識(shí)別的邏輯地址范圍中所包含的邏輯地址的主要映射。關(guān)于GAT的多種不同配置的映射是可能的。在關(guān)于閃存技術(shù)的一種示例配置中,所述GAT保持跟蹤邏輯扇區(qū)的邏輯組與對(duì)應(yīng)元塊之間的關(guān)系。所述GAT包括關(guān)于每個(gè)邏輯組的錄入項(xiàng),所述錄入項(xiàng)是根據(jù)邏輯地址依次排序的。此外,所述GAT可以被組織成多個(gè)GAT頁(yè),其中每個(gè)GAT頁(yè)包含標(biāo)識(shí)每個(gè)邏輯組的元塊地址的錄入項(xiàng)。

所述至少一個(gè)次要地址數(shù)據(jù)結(jié)構(gòu)可以提供關(guān)于被存儲(chǔ)在二進(jìn)制緩存136中的數(shù)據(jù)的邏輯-物理地址映射、關(guān)于數(shù)據(jù)(例如被存儲(chǔ)在更新塊中的數(shù)據(jù))的變化的邏輯-物理地址映射和/或其某種組合。

一個(gè)示例的次要地址數(shù)據(jù)結(jié)構(gòu)(被稱為GAT Delta)可以跟蹤錄入項(xiàng)的變化和/或包括在所述GAT的映射中改變的錄入項(xiàng)的列表。如之前描述的,當(dāng)再寫入數(shù)據(jù)時(shí),可以將所述數(shù)據(jù)的新版本寫入所述主存儲(chǔ)器134的另一個(gè)部分中,例如更新塊中。GAT Delta可以將被存儲(chǔ)在所述更新塊中的數(shù)據(jù)與相關(guān)聯(lián)的邏輯組進(jìn)行映射。對(duì)于一些示例配置,GAT Delta可以是主索引頁(yè)(MIP)的一部分,除了GAT Delta之外,主索引頁(yè)還包括空閑塊列表(FBL)和/或所述GAT。所述空閑塊列表可以是標(biāo)識(shí)出可以用存儲(chǔ)數(shù)據(jù)(例如,用于作為更新塊分配)的并且之后可以映射至邏輯組的塊的列表。

另一個(gè)次要地址數(shù)據(jù)結(jié)構(gòu)可以是跟蹤二進(jìn)制緩存136中的數(shù)據(jù)的二進(jìn)制緩存索引(BCI)。所述二進(jìn)制緩存索引可以包括多個(gè)二進(jìn)制緩存索引,所述索引將數(shù)據(jù)片段所屬的邏輯組與所述數(shù)據(jù)片段在所述二進(jìn)制緩存136中被存儲(chǔ)中的物理位置或地址進(jìn)行關(guān)聯(lián)或映射。對(duì)于一些示例配置,所述控制器110可以查詢所述BCI的給定數(shù)據(jù)片段、并且作為響應(yīng)而接受表示二進(jìn)制緩存塊和扇區(qū)號(hào)以及所述數(shù)據(jù)片段的長(zhǎng)度的指示變量或其他標(biāo)識(shí)符。

其他次要地址數(shù)據(jù)結(jié)構(gòu)是可能的。例如,一個(gè)或多個(gè)其他次要地址數(shù)據(jù)結(jié)構(gòu)可以將被存儲(chǔ)在緩沖池212或控制器存儲(chǔ)器218中的數(shù)據(jù)的物理地址與相關(guān)聯(lián)的邏輯組進(jìn)行映射。

所述主要和次要地址數(shù)據(jù)結(jié)構(gòu)可以被存儲(chǔ)在存儲(chǔ)模塊102的任一個(gè)存儲(chǔ)器中,包括所述控制器存儲(chǔ)器218、主存儲(chǔ)器134、以及二進(jìn)制緩存136。此外或者可替代地,所述主要和次要地址數(shù)據(jù)結(jié)構(gòu)中的一些或全部可以存儲(chǔ)在存儲(chǔ)模塊102外部,例如在主機(jī)系統(tǒng)101中。此外,對(duì)于一些示例配置,在任何給定的時(shí)刻或?qū)τ谌魏纬掷m(xù)時(shí)間,可以生成所述地址數(shù)據(jù)結(jié)構(gòu)中的一個(gè)或多個(gè)、或者所述地址數(shù)據(jù)結(jié)構(gòu)的至少一部分的多個(gè)副本,從而使得對(duì)于給定的地址數(shù)據(jù)結(jié)構(gòu),在存儲(chǔ)模塊102中的兩個(gè)不同位置中存儲(chǔ)了兩個(gè)版本。為了展示,對(duì)于給定的地址數(shù)據(jù)結(jié)構(gòu),一個(gè)版本可以存儲(chǔ)在存儲(chǔ)器132中,要么主存儲(chǔ)器134中要么二進(jìn)制緩存136中,并且另一個(gè)可以存儲(chǔ)在控制器存儲(chǔ)器118中,例如控制器118的RAM部分中。作為另一種展示,對(duì)于給定的地址數(shù)據(jù)結(jié)構(gòu),一個(gè)版本可以存儲(chǔ)在存儲(chǔ)模塊102外部,并且另一個(gè)版本可以存儲(chǔ)在存儲(chǔ)模塊102內(nèi)部,例如在控制器存儲(chǔ)器218中或存儲(chǔ)器132中。對(duì)于一些示例配置,所述地址數(shù)據(jù)結(jié)構(gòu)的主或主要版本可以存儲(chǔ)在存儲(chǔ)器132中或主機(jī)系統(tǒng)101中,并且當(dāng)控制器110確定將查詢或更新所述地址數(shù)據(jù)結(jié)構(gòu)時(shí),所述控制器110可以在控制器存儲(chǔ)器218中創(chuàng)建副本或加載第二版本。如果對(duì)所述副本進(jìn)行了任何更新,則存儲(chǔ)在存儲(chǔ)器132中的版本可以類似地被更新。存儲(chǔ)所述主要和次要地址數(shù)據(jù)結(jié)構(gòu)的多種不同方式或位置是可能的。

圖8示出了用于閃存的示例的主要和次要地址數(shù)據(jù)結(jié)構(gòu)安排的示意圖。如圖8所示,用于所有邏輯塊地址(LBA)的邏輯地址范圍802可以被維持在主機(jī)系統(tǒng)101所利用的主機(jī)文件系統(tǒng)中。這些LBA可以被分組成邏輯組(LG)804。如之前描述的,某些與邏輯組804相關(guān)聯(lián)的數(shù)據(jù)片段808可以被寫入二進(jìn)制緩存136中而不是主存儲(chǔ)器134中。對(duì)于被存儲(chǔ)在二進(jìn)制緩存136中的數(shù)據(jù)片段808,二進(jìn)制緩存索引806可以將與所述數(shù)據(jù)片段808相關(guān)聯(lián)的邏輯組與所述數(shù)據(jù)片段808在所述二進(jìn)制緩存136中被存儲(chǔ)在的二進(jìn)制緩存塊810進(jìn)行映射。如圖8中所示,所述二進(jìn)制緩存索引806可以存儲(chǔ)在存儲(chǔ)器(MEM)132中,要么主存儲(chǔ)器134中要么二進(jìn)制緩存136中。此外,所述二進(jìn)制緩存索引的全部或一部分的副本(在圖8中被標(biāo)識(shí)為BCI緩存812)由于經(jīng)常使用或最近使用可以被維持(緩存)在控制器存儲(chǔ)器218的RAM部分824中。圖8示出了被維持在所述RAM部分824中的二進(jìn)制緩存索引812副本,指向被存儲(chǔ)在所述二進(jìn)制緩存塊810中的數(shù)據(jù)片段808。被存儲(chǔ)在二進(jìn)制存儲(chǔ)器132中的所述二進(jìn)制緩存索引806可以類似地指向被存儲(chǔ)在所述二進(jìn)制緩存塊810中的數(shù)據(jù)片段808。

所述主要地址數(shù)據(jù)結(jié)構(gòu)(GAT)包括GAT頁(yè)814、可以被存儲(chǔ)在存儲(chǔ)器132中。此外,所述GAT頁(yè)814的一些或全部的副本除了GAT Delta(一起在圖8中標(biāo)識(shí)為GAT頁(yè)緩存816)之外也可以被維持(緩存)在RAM 824中。而且,對(duì)于圖8中所示的示例安排,GAT Delta還可以被維持在RAM 824中,但對(duì)于其他示例安排,GAT Delta的全部或一部分此外或者可替代地可以被存儲(chǔ)在主存儲(chǔ)器134中。圖8示出了被維持在RAM 824中、指向被存儲(chǔ)在主存儲(chǔ)器134的更新塊和完好塊818中的數(shù)據(jù)的所述GAT頁(yè)和GAT Delta816。被存儲(chǔ)在存儲(chǔ)器132中的所述GAT頁(yè)814可以類似地指向被存儲(chǔ)在更新塊和/或完好塊818中的數(shù)據(jù)。

在任何給定的時(shí),所述主要地址數(shù)據(jù)結(jié)構(gòu)(GAT)中的錄入項(xiàng)可以不將邏輯組映射至屬于所述邏輯組的數(shù)據(jù)被存儲(chǔ)在的物理位置、和/或可以不將邏輯組映射至屬于所述邏輯組的數(shù)據(jù)的最新版本被存儲(chǔ)在的物理位置。在所述主要地址數(shù)據(jù)結(jié)構(gòu)具有的邏輯-到-物理映射過(guò)時(shí)的情況下,所述次要地址數(shù)據(jù)結(jié)構(gòu)中的至少一個(gè)可以提供最新的映射。此外,所述次要地址數(shù)據(jù)結(jié)構(gòu)可以提供一個(gè)或多個(gè)指示,例如通過(guò)指針變量或時(shí)間戳,以指示所述邏輯-物理映射是否映射于所述數(shù)據(jù)的最新版本。

如果所述主要地址數(shù)據(jù)結(jié)構(gòu)中的錄入項(xiàng)是盡可能新的,控制器110可以被配置成用于將所述主要地址數(shù)據(jù)結(jié)構(gòu)中的映射與所述次要地址數(shù)據(jù)結(jié)構(gòu)中的映射同步,使得所述主要地址數(shù)據(jù)結(jié)構(gòu)提供到所述數(shù)據(jù)的最新版本的映射。然而,在任何給定的時(shí)刻,在所述主要地址數(shù)據(jù)結(jié)構(gòu)還沒(méi)有與所述次要地址數(shù)據(jù)結(jié)構(gòu)同步時(shí),可能接收到主機(jī)讀取請(qǐng)求。

為了確保被發(fā)回至主機(jī)的數(shù)據(jù)是最新的版本,所述控制器110通過(guò)使用地址轉(zhuǎn)換硬件模塊204、中央固件模塊210、或二者的組合,可以被配置成用于查詢所述次要地址數(shù)據(jù)結(jié)構(gòu)中的至少一個(gè)、然后再?gòu)拇鎯?chǔ)器模塊132檢索數(shù)據(jù)和/或?qū)χ鳈C(jī)作出響應(yīng)。在查詢充足數(shù)量的主要和/或次要地址數(shù)據(jù)結(jié)構(gòu)時(shí),控制器110可以確定邏輯-物理映射和/或檢索標(biāo)識(shí)了所述數(shù)據(jù)的最新版本被存儲(chǔ)在何處的物理地址。這樣,通過(guò)查詢查詢充足數(shù)量的次要地址數(shù)據(jù)結(jié)構(gòu)和/或主要地址數(shù)據(jù)結(jié)構(gòu),控制器110可以確保將所述數(shù)據(jù)的最新版本發(fā)回至主機(jī)系統(tǒng)101。

參見圖4,地址轉(zhuǎn)換硬件模塊204可以包括被配置成用于查詢一個(gè)或多個(gè)次要地址數(shù)據(jù)結(jié)構(gòu)的次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402、以及被配置成用于查詢主要地址數(shù)據(jù)結(jié)構(gòu)的主要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊404。對(duì)于一些示例配置,在所述次要和主要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402、404進(jìn)行其相應(yīng)的子進(jìn)程之前,可以將所述子模塊402、404可能查詢的主要和次要地址數(shù)據(jù)結(jié)構(gòu)載入控制器存儲(chǔ)器218中,例如控制器存儲(chǔ)器218的RAM部分中,如果它們不是已經(jīng)存儲(chǔ)在哪里的話。

所述次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402可以經(jīng)由硬件輸入接口224接收所述邏輯地址信息作為其結(jié)果輸入、并且當(dāng)在其狀態(tài)輸入上檢測(cè)到成功狀態(tài)指示之時(shí)鎖存所述邏輯地址信息。通過(guò)使用所述邏輯地址信息,所述次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402可以被配置成用于查詢所述次要地址數(shù)據(jù)結(jié)構(gòu)的全部或至少一個(gè),以便判定對(duì)于它被配置成用于查詢的所述次要地址數(shù)據(jù)結(jié)構(gòu)中的邏輯地址信息是否存在邏輯-物理地址映射。示例的次要地址數(shù)據(jù)結(jié)構(gòu)可以包括跟蹤錄入項(xiàng)的變化和/或包括在所述主要數(shù)據(jù)結(jié)構(gòu)的映射中改變的錄入項(xiàng)的列表的數(shù)據(jù)結(jié)構(gòu),例如之前描述的GAT Delta或MIP。

如果在所查詢的次要地址數(shù)據(jù)結(jié)構(gòu)中存在邏輯-物理映射,則所述次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402可以標(biāo)識(shí)“擊中”、并且將它標(biāo)識(shí)的物理地址向下游發(fā)送至主要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊404以作為其結(jié)果輸出。由于所述次要地址數(shù)據(jù)結(jié)構(gòu)標(biāo)識(shí)錄入項(xiàng)變化的固有性質(zhì)、以及最新版本數(shù)據(jù)的邏輯-物理映射,可以不在主要地址數(shù)據(jù)結(jié)構(gòu)(如GAT)中進(jìn)行搜索,因?yàn)檫@樣的搜索可能返回過(guò)時(shí)的邏輯-物理映射。相應(yīng)地,對(duì)于一些示例配置,為了避免所述主要地址數(shù)據(jù)結(jié)構(gòu)404進(jìn)行的搜索,所述次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402輸出其在“繞行”水平上的狀態(tài)輸出,以便指示所述主要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊404放棄查詢所述主要地址數(shù)據(jù)結(jié)構(gòu)并將所述次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402所識(shí)別的物理地址傳遞至所述數(shù)據(jù)檢索硬件模塊206。

可替代地,如果在所述次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402所請(qǐng)求的次要地址數(shù)據(jù)結(jié)構(gòu)中不存在邏輯-物理映射,則所述次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402可以將所述邏輯地址信息發(fā)送至所述主要數(shù)據(jù)結(jié)構(gòu)查詢子模塊404以作為其結(jié)果輸出。此外,所述次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402可以輸出其在以下水平上的狀態(tài)輸出:告訴或指示所述主要數(shù)據(jù)結(jié)構(gòu)查詢子模塊404鎖存在其結(jié)果輸入上所接收的邏輯地址信息、并且進(jìn)行對(duì)所述主要地址數(shù)據(jù)結(jié)構(gòu)、例如GAT的查詢,以便確定邏輯-物理映射。如果主要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊404不能確定邏輯-物理映射,則所述主要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊404可以通知所述中央固件模塊210:地址轉(zhuǎn)換模塊204不能確定它所接收的邏輯地址信息的物理地址。可替代地,如果主要地址數(shù)據(jù)結(jié)構(gòu)查詢模塊404確定了物理地址,則所述主要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊404可以將所述物理地址作為其結(jié)果輸出而輸出。

對(duì)于一些示例配置,所述次要地址數(shù)據(jù)結(jié)構(gòu)中的至少一個(gè)可以僅被中央固件模塊210查詢而不被地址轉(zhuǎn)換硬件模塊204查詢,例如BCI作為一個(gè)示例。可能不能以足夠的確定性來(lái)確定與所述數(shù)據(jù)的最新版本相關(guān)聯(lián)的最終物理地址,除非這個(gè)次要數(shù)據(jù)結(jié)構(gòu)是被中央固件模塊210查詢的。對(duì)于這些示例的配置,如果前端模塊202成功地確定了用于主機(jī)讀取請(qǐng)求的邏輯地址信息,則前端硬件模塊202可以將所述邏輯地址信息發(fā)送至中央固件模塊210,使得中央固件模塊210可以開始查詢將不會(huì)被地址轉(zhuǎn)換硬件模塊204查詢的次要地址數(shù)據(jù)結(jié)構(gòu)。

在查詢了所述次要地址數(shù)據(jù)結(jié)構(gòu)之后,如果所述固件模塊210沒(méi)有識(shí)別地址信息,則所述固件模塊210可以向所述數(shù)據(jù)檢索模塊206發(fā)送使能信號(hào),這可以告訴所述數(shù)據(jù)檢索模塊206鎖存從地址轉(zhuǎn)換硬件模塊204接收的物理地址信息??商娲兀绻龉碳K210識(shí)別了地址信息,則所述固件模塊210可以被配置成用于判定是否讓所述數(shù)據(jù)檢索硬件模塊206檢索在所述物理地址的數(shù)據(jù)、或者是否讓所述固件模塊210自身檢索所述數(shù)據(jù)。對(duì)于一些示例配置,這種判定可以基于:通過(guò)生成并發(fā)出單個(gè)數(shù)據(jù)檢索命令集,所述固件模塊210是否確定在所述物理地址的數(shù)據(jù)。如果可以,則所述固件模塊210可以將所述物理地址發(fā)送至數(shù)據(jù)檢索硬件模塊206。如果不能,則所述固件模塊210可以確定將自身檢索在所述物理地址的數(shù)據(jù)。

對(duì)于一些示例配置,所述數(shù)據(jù)檢索硬件模塊206在沒(méi)有接收到來(lái)自所述中央固件模塊210的通知并確認(rèn)與所述數(shù)據(jù)的最新版本相關(guān)聯(lián)的最終物理地址的情況下,可以不進(jìn)行任何將致使被存儲(chǔ)在存儲(chǔ)器132中的數(shù)據(jù)從存儲(chǔ)器模塊130傳送至所述控制器110的動(dòng)作。

參見圖5,一種示例配置的數(shù)據(jù)檢索模塊206可以包括實(shí)際物理地址確定子模塊502和上下文命令生成子模塊504。如果所述實(shí)際物理地址確定子模塊502或上下文命令生成子模塊504不能進(jìn)行其相應(yīng)子進(jìn)程,則它們可以被配置成用于通知所述中央固件模塊210、以及所述物理地址信息。

對(duì)于一些示例配置,所述地址轉(zhuǎn)換硬件模塊204所確定的物理地址是抽象物理地址,例如元塊號(hào)。所述實(shí)際物理地址確定子模塊502可以被配置成用于將所述抽象物理地址變換成標(biāo)識(shí)所述存儲(chǔ)器的物理方面的實(shí)際物理地址,并且所述實(shí)際物理地址可以處于所述存儲(chǔ)器模塊130的邏輯電路142為了讀出所述數(shù)據(jù)而可以使用的格式。對(duì)于一些示例配置,所述實(shí)際物理地址確定子模塊502可以包括多個(gè)寄存器來(lái)進(jìn)行寄存器屏蔽和移位以便確定實(shí)際物理地址。所述實(shí)際地址確定子模塊502可以將所述實(shí)際物理地址作為其結(jié)果輸出而輸出、并且還輸出其在成功水平上的狀態(tài)輸出。

所述上下文命令生成子模塊504可以鎖存在其結(jié)果輸入處接收的實(shí)際物理地址并且生成一個(gè)或多個(gè)數(shù)據(jù)檢索命令集合??傮w上,數(shù)據(jù)檢索命令可以是所述控制器110為了檢索主機(jī)系統(tǒng)101想要讀取的數(shù)據(jù)而執(zhí)行或向邏輯電路142發(fā)出的上下文命令。所述上下文命令可以按集合生成,其中每個(gè)集合包括讀出命令和數(shù)據(jù)傳送命令。所述讀出命令可以指示所述存儲(chǔ)器模塊130的邏輯電路142讀出被存儲(chǔ)在所述讀出命令中所標(biāo)識(shí)的實(shí)際物理地址的數(shù)據(jù)??梢陨伤鰯?shù)據(jù)傳送命令來(lái)使得所讀出的數(shù)據(jù)在總線146上被傳送至所述控制器110。取決于有待讀取的數(shù)據(jù)的大小和/或在存儲(chǔ)器132中如何或在哪里存儲(chǔ)所述數(shù)據(jù),可以生成和/或執(zhí)行單個(gè)一對(duì)或多對(duì)上下文命令。

對(duì)于一些示例配置,所述上下文命令生成子模塊504可以被配置成用于生成與所述主機(jī)讀取命令相關(guān)聯(lián)的單個(gè)讀出和數(shù)據(jù)傳送上下文命令集。換言之,如果所述邏輯和/或物理地址信息表明為了檢索所請(qǐng)求的數(shù)據(jù),需要多于單個(gè)的讀出和數(shù)據(jù)傳送命令集,則這樣的主機(jī)讀取請(qǐng)求可以由所述固件模塊210而不是所述數(shù)據(jù)檢索硬件模塊206來(lái)處理。

如之前描述的,對(duì)于一些示例配置,可能存在一個(gè)或多個(gè)次要地址數(shù)據(jù)結(jié)構(gòu)是中央固件模塊210被配置成用于查詢的,而不是首先嘗試被地址轉(zhuǎn)換模塊204查詢,例如查詢BCI。對(duì)于這些配置,所述上下文命令生成子模塊504可以被配置成用于:在從中央固件模塊210接收到關(guān)于所述固件模塊210對(duì)所述次要數(shù)據(jù)結(jié)構(gòu)的查詢是否得到了邏輯-物理映射的通知之前,不發(fā)出至少一個(gè)數(shù)據(jù)傳送命令。例如,所述上下文命令生成子模塊504可以發(fā)出讀出命令、但是可以等待從中央固件模塊210接收到了核準(zhǔn),然后再發(fā)出數(shù)據(jù)傳送命令。對(duì)于其他的配置,所述上下文命令生成子模塊504可以不發(fā)出讀出命令和數(shù)據(jù)傳送命令二者。如果中央固件模塊210沒(méi)有從所述查詢中識(shí)別邏輯-物理映射,則中央固件模塊210可以通知所述上下文命令生成子模塊504進(jìn)行數(shù)據(jù)傳送命令的發(fā)出。可替代地,如果中央固件模塊210識(shí)別了邏輯-物理地址映射,則中央固件模塊210可以向所述上下文命令生成子模塊504發(fā)送通知:所述通知阻止所述上下文命令生成子模塊504發(fā)出具有由所述實(shí)際物理地址確定子模塊502所確定的實(shí)際物理地址的數(shù)據(jù)傳送命令。

對(duì)于一些示例配置,中央固件模塊210可以將它從其查詢所確定的物理地址發(fā)送至數(shù)據(jù)檢索模塊206,其中實(shí)際物理地址確定子模塊502可以確定新的實(shí)際物理地址并且上下文命令生成子模塊502可以使用所述新的實(shí)際物理地址生成一個(gè)或多個(gè)新的讀出和數(shù)據(jù)傳送命令集??商娲?,所述中央固件模塊210可以自身進(jìn)行所述數(shù)據(jù)檢索動(dòng)作。

其他主機(jī)讀取請(qǐng)求進(jìn)程可以由中央固件模塊210和/或上下文命令生成子模塊504通過(guò)存儲(chǔ)器接口模塊114來(lái)進(jìn)行,例如定序、開關(guān)操作、芯片使能、裸片選擇,以便設(shè)置所述存儲(chǔ)器接口模塊114來(lái)將讀出和/或數(shù)據(jù)傳送命令發(fā)送至存儲(chǔ)器模塊130從而檢索在被實(shí)際物理地址確定子模塊502和/或中央固件模塊210確定的實(shí)際物理地址的數(shù)據(jù)。此外,在數(shù)據(jù)處理流程僅被配置成用于短讀取的情況下,中央固件模塊210可以具體地配置所述存儲(chǔ)器接口模塊114,使得它被配置成用于僅針對(duì)短讀取而發(fā)出上下文命令,這可以加速存儲(chǔ)器接口模塊114的設(shè)置時(shí)間。

響應(yīng)于被發(fā)出至存儲(chǔ)器模塊130的數(shù)據(jù)傳送命令,與所發(fā)送的命令相關(guān)聯(lián)的數(shù)據(jù)可以被傳送至所述后數(shù)據(jù)檢索硬件模塊208。參見圖6,一種示例配置的后數(shù)據(jù)檢索硬件模塊208可以包括錯(cuò)誤校正模塊602和解碼模塊604。

所述錯(cuò)誤校正模塊602可以被配置成用于對(duì)從存儲(chǔ)器132檢索的數(shù)據(jù)進(jìn)行錯(cuò)誤識(shí)別和糾正。例如,所述錯(cuò)誤校正模塊602可以鑒定所述數(shù)據(jù)的位錯(cuò)誤率(BER)。如果位錯(cuò)誤率低于閾值,則所述錯(cuò)誤校正模塊602可以確定錯(cuò)誤量是可糾正的、糾正所述錯(cuò)誤、并將所述數(shù)據(jù)傳遞至所述解碼模塊604。可替代地,如果所述錯(cuò)誤校正模塊602確定位錯(cuò)誤率高于閾值,則所述錯(cuò)誤校正模塊602可以確定它不能糾正所述錯(cuò)誤,并且可以進(jìn)行后續(xù)錯(cuò)誤恢復(fù)動(dòng)作以便恢復(fù)所述數(shù)據(jù)(例如,讀取具有的位錯(cuò)誤率低于所述閾值的數(shù)據(jù))。多個(gè)不同的示例錯(cuò)誤恢復(fù)動(dòng)作是可能的,包括操以更高功率模式運(yùn)行錯(cuò)誤校正引擎、增大軟比特的數(shù)量、以及調(diào)整被施加至存儲(chǔ)器以讀出所述數(shù)據(jù)的電壓水平,作為非限制性示例??傮w上,所述錯(cuò)誤校正模塊602可以被配置成用于在它確定了所讀出的數(shù)據(jù)具有高于閾值水平的位錯(cuò)誤率從而要求錯(cuò)誤恢復(fù)的事件中,通知所述中央固件模塊210。所述中央固件模塊210接著可以進(jìn)行后續(xù)錯(cuò)誤恢復(fù)和糾正進(jìn)程。

在所述錯(cuò)誤校正模塊602鑒定出低于所述閾值水平的位錯(cuò)誤率的事件中,所述錯(cuò)誤校正模塊602可以糾正所述錯(cuò)誤并接著將經(jīng)糾正的數(shù)據(jù)發(fā)送至所述解碼子模塊604。對(duì)于一些示例配置,解碼可能不是必須的,在此情況下所述錯(cuò)誤校正模塊602可以將其狀態(tài)輸出設(shè)定至以下水平:在接收到經(jīng)校正的數(shù)據(jù)時(shí)告訴所述解碼模塊604繞過(guò)解碼??商娲兀鲥e(cuò)誤校正模塊602可以將狀態(tài)輸入設(shè)定至以下水平:使所述解碼模塊604鎖存所述經(jīng)校正的數(shù)據(jù)。所述解碼子模塊604接著可以解碼所述數(shù)據(jù)并將經(jīng)解碼的數(shù)據(jù)輸出至緩沖池212,以便在其被發(fā)送至主機(jī)系統(tǒng)101之前暫時(shí)存儲(chǔ)它。所述解碼模塊604還可以向所述主機(jī)接口模塊116發(fā)送狀態(tài)輸出來(lái)通知所述主機(jī)接口模塊116:數(shù)據(jù)被存儲(chǔ)在緩沖池中并且準(zhǔn)備發(fā)送至主機(jī)。可替代地,如果所述解碼子模塊604確定它不能成功解碼所述數(shù)據(jù),則所述解碼子模塊可以通知所述中央固件模塊210。

返回參見圖2,在執(zhí)行主機(jī)讀取命令之前,例如在存儲(chǔ)模塊102的設(shè)置過(guò)程中,所述中央固件模塊210可以被配置成用于用任何預(yù)配置數(shù)據(jù)來(lái)設(shè)置或預(yù)配置所述模塊202-208及其相關(guān)聯(lián)的子模塊中的一個(gè)或多個(gè),所述預(yù)配置數(shù)據(jù)是例如邏輯組參數(shù)(例如,分隔邊界、存儲(chǔ)體拆分信息、邏輯組大小參數(shù))、并且訪問(wèn)例如主要和/或次要地址數(shù)據(jù)結(jié)構(gòu)中的任一個(gè)并將其載入控制器存儲(chǔ)器218中。

此外,所述硬件模塊202-208及其相關(guān)聯(lián)的子模塊可以按不同于圖2-6示出的所述示例配置的任何數(shù)量的不同方式進(jìn)行模塊化。對(duì)于一些示例的實(shí)施方式,硬件模塊202-206及其相關(guān)聯(lián)的子模塊的全部或其中一些可以被認(rèn)為是控制路徑的一部分、或是所述主機(jī)讀取請(qǐng)求進(jìn)程流程的控制部分,這可以包括為了從存儲(chǔ)器中檢索數(shù)據(jù)而進(jìn)行的那些主機(jī)讀取請(qǐng)求進(jìn)程,而所述后數(shù)據(jù)檢索硬件模塊208及其相關(guān)聯(lián)的子模塊可以被認(rèn)為是數(shù)據(jù)路徑的一部分、或所述主機(jī)讀取請(qǐng)求進(jìn)程流程的數(shù)據(jù)部分,這可以包括在已經(jīng)從存儲(chǔ)器132檢索了數(shù)據(jù)之后并且為了確保所述數(shù)據(jù)處于傳輸?shù)街鳈C(jī)系統(tǒng)101的條件中而對(duì)所述數(shù)據(jù)進(jìn)行的那些主機(jī)讀取請(qǐng)求進(jìn)程。多種不同的模塊化安排可以對(duì)應(yīng)于所述主機(jī)讀取請(qǐng)求進(jìn)程流程的控制部分和數(shù)據(jù)部分。例如,所述控制器110的一些示例的配置可以包括用于所述控制路徑但不用于所述數(shù)據(jù)路徑的硬件模塊,反之亦然。其他用于將主機(jī)讀取請(qǐng)求的硬件進(jìn)程流程進(jìn)行模塊化的方式是可能的。

進(jìn)一步,雖然所述模塊化配置是關(guān)于執(zhí)行主機(jī)讀取請(qǐng)求而描述的,但類似的模塊化方案可以用于其他存儲(chǔ)器管理操作,例如主機(jī)寫入請(qǐng)求,作為一個(gè)示例。

圖9示出了用于執(zhí)行主機(jī)讀取請(qǐng)求的控制器的部件的另一種示例配置的框圖。類似于參照?qǐng)D2示出和描述的硬件模塊202-208,圖9所示的示例配置可以包括多個(gè)主機(jī)請(qǐng)求模塊,包括前端模塊902、地址轉(zhuǎn)換模塊904、數(shù)據(jù)檢索模塊906、以及后數(shù)據(jù)檢索模塊908。然而,與圖2所示的、具有中央固件模塊210與通信的多個(gè)硬件模塊202-208的這個(gè)示例配置形成對(duì)比,所述主機(jī)請(qǐng)求模塊902-908中的每一個(gè)可以包括硬件模塊和本地固件模塊910二者。

如圖9所示,所述主機(jī)請(qǐng)求模塊902-908中的每一個(gè)可以具有輸入接口(I/P I/F)924和輸出接口(O/P I/F)926以用于通過(guò)使用通信總線952與其他模塊902-908通信、以及高層級(jí)固件950、主機(jī)接口模塊116、和存儲(chǔ)器接口模塊114進(jìn)行通信。所述高層級(jí)固件模塊950可以控制和/或進(jìn)行其他存儲(chǔ)器管理功能,例如執(zhí)行主機(jī)讀取請(qǐng)求、對(duì)狀態(tài)請(qǐng)求作出響應(yīng)、進(jìn)行存儲(chǔ)器再安置(例如,垃圾收集)、以及管理地址目錄,作為非限制性示例。

前端模塊902被示出為包括硬件(HW)模塊930(1)、930(2)和930(3),所述模塊可以分別對(duì)應(yīng)于命令類型ID子模塊302、大小確定子模塊304、和邏輯地址確定子模塊306。地址轉(zhuǎn)換模塊904被示出為包括硬件模塊932(1)和932(2),所述硬件模塊可以分別對(duì)應(yīng)于次要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊402和主要地址數(shù)據(jù)結(jié)構(gòu)查詢子模塊404。數(shù)據(jù)檢索模塊906被示出為包括硬件模塊934(1)和934(2),所述硬件模塊可以分別對(duì)應(yīng)于實(shí)際物理地址確定子模塊502和上下文命令生成子模塊504。所述后數(shù)據(jù)檢索模塊908被示出為包括硬件模塊936(1)和936(2),所述硬件模塊可以分別對(duì)應(yīng)于錯(cuò)誤校正模塊602和解碼子模塊604。

當(dāng)接收到主機(jī)讀取請(qǐng)求時(shí),它可以從主機(jī)接口模塊116被發(fā)送至前端模塊902。前端模塊902可以使用硬件模塊930、本地固件模塊910、或其組合來(lái)處理所述主機(jī)讀取請(qǐng)求。當(dāng)所述前端模塊902完成處理所述主機(jī)讀取請(qǐng)求時(shí),它可以將邏輯地址信息發(fā)送至地址轉(zhuǎn)換模塊904,所述地址轉(zhuǎn)換模塊可以使用其硬件模塊932、其本地固件模塊910、或其組合來(lái)將所述邏輯地址信息轉(zhuǎn)換成物理地址信息。當(dāng)所述地址轉(zhuǎn)換模塊結(jié)束時(shí),地址轉(zhuǎn)換模塊904可以將所述物理地址信息輸出至數(shù)據(jù)檢索模塊906。所述數(shù)據(jù)檢索模塊906通過(guò)使用硬件模塊934、其本地固件模塊910、或其組合可以生成一個(gè)或多個(gè)上下文命令集以便檢索在所述存儲(chǔ)器中位于實(shí)際物理地址的數(shù)據(jù)。所述數(shù)據(jù)檢索模塊906可以將上下文命令傳送至存儲(chǔ)器接口模塊114,所述存儲(chǔ)器接口模塊可以將所述上下文命令發(fā)送至存儲(chǔ)器模塊130(圖1)。作為響應(yīng),存儲(chǔ)器模塊130可以將所述數(shù)據(jù)發(fā)回至控制器110(圖1)、經(jīng)存儲(chǔ)器接口114發(fā)送至所述后數(shù)據(jù)檢索模塊908。作為響應(yīng),所述數(shù)據(jù)檢索模塊908通過(guò)使用硬件模塊936、其本地固件模塊910、或其組合可以進(jìn)行后數(shù)據(jù)檢索進(jìn)程,例如錯(cuò)誤校正和/或解碼。對(duì)于一些示例配置,緩沖池212(圖2)可以位于所述后數(shù)據(jù)檢索模塊908內(nèi),并且主機(jī)接口模塊116可以與所述后數(shù)據(jù)檢索模塊908通信以便將所述數(shù)據(jù)傳送至主機(jī)系統(tǒng)101(圖1)。

對(duì)于一些示例配置,存儲(chǔ)模塊102可以通過(guò)作為主機(jī)系統(tǒng)101的嵌入式設(shè)備、或通過(guò)與主機(jī)系統(tǒng)101可移除地連接而與主機(jī)系統(tǒng)101一起實(shí)現(xiàn)。圖10A和10B示出了這些實(shí)現(xiàn)方式。如圖10A所示,存儲(chǔ)模塊102可以嵌入主機(jī)系統(tǒng)101中。除了包裹存儲(chǔ)模塊102之外,主機(jī)系統(tǒng)101還可以具有主機(jī)控制器1020。也就是,主機(jī)系統(tǒng)101可以包裹所述主機(jī)控制器1020和所述存儲(chǔ)模塊102,使得所述主機(jī)控制器1020與所述嵌入式存儲(chǔ)模塊102相接來(lái)管理其操作。例如,存儲(chǔ)模塊102可以采取閃迪公司(SanDisk Corporation)的iNANDTMeSD/eMMC嵌入式閃存驅(qū)動(dòng)器的形式。所述主機(jī)控制器1020可以通過(guò)使用主機(jī)接口116而與嵌入式存儲(chǔ)模塊102相接(圖1)。此外,當(dāng)存儲(chǔ)模塊102被嵌入主機(jī)系統(tǒng)101中時(shí),存儲(chǔ)模塊102中的控制器110所進(jìn)行的功能的一些或全部可以替代地由所述主機(jī)控制器1020進(jìn)行。

主機(jī)系統(tǒng)1010可以采取任何形式,例如但不限于固態(tài)驅(qū)動(dòng)器(SSD)、混合存儲(chǔ)模塊(具有硬盤驅(qū)動(dòng)器和固態(tài)驅(qū)動(dòng)器二者)、存儲(chǔ)器緩存系統(tǒng)、移動(dòng)電話、平板電路、數(shù)字媒體播放器、游戲設(shè)備、個(gè)人數(shù)字助理(PDA)、移動(dòng)(例如,筆記本、膝上型)個(gè)人計(jì)算機(jī)(PC)、或書閱讀器,作為幾個(gè)示例。如圖10A所示,主機(jī)系統(tǒng)101可以包括可選的其他功能模塊1030。例如,如果主機(jī)系統(tǒng)101是移動(dòng)電話,則其他功能模塊1030可以包括用于撥打和接聽電話的硬件和/或軟件部件。作為另一個(gè)示例,如果主機(jī)系統(tǒng)101具有網(wǎng)絡(luò)連接能力,則其他功能模塊1030可以包括網(wǎng)絡(luò)接口。這些僅僅是一些示例,并且可以使用其他實(shí)施方式。而且,主機(jī)系統(tǒng)101可以包括其他部件(例如,音頻輸出、輸入輸出端口等),為了簡(jiǎn)化附圖,所述部件在圖10A中未被示出。

在如圖10B所示的替代性配置中,存儲(chǔ)模塊102可以具有允許存儲(chǔ)模塊102經(jīng)由配合連接器可移除地連接至主機(jī)系統(tǒng)101(具有主機(jī)控制器1045)的物理的和電連接器,而非作為主機(jī)中的嵌入式設(shè)備。這樣,存儲(chǔ)模塊102可以是來(lái)自主機(jī)系統(tǒng)101的獨(dú)立設(shè)備(并且未嵌入在主機(jī)中)。例如,在此示例中,存儲(chǔ)模塊102可以是可拆卸存儲(chǔ)器設(shè)備(如安全數(shù)字(SD)存儲(chǔ)器卡、微型SD存儲(chǔ)器卡、緊湊型閃存(CF)存儲(chǔ)器卡、通用串行總線(USB)設(shè)備(具有連接至主機(jī)的USB接口)),并且主機(jī)系統(tǒng)102是獨(dú)立設(shè)備,如移動(dòng)電話、平板計(jì)算機(jī)、數(shù)字媒體播放器、游戲設(shè)備、個(gè)人數(shù)字助理(PDA)、移動(dòng)(例如筆記本電腦、膝上型計(jì)算機(jī))個(gè)人計(jì)算機(jī)(PC)或書閱讀器。

此外,參見圖1,存儲(chǔ)器132可以是半導(dǎo)體存儲(chǔ)器設(shè)備所述,半導(dǎo)體存儲(chǔ)器設(shè)備包括易失性存儲(chǔ)器設(shè)備(如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(“DRAM”)或靜態(tài)隨機(jī)存取存儲(chǔ)器(“SRAM”))、非易失性存儲(chǔ)器設(shè)備(如電阻式隨機(jī)存取存儲(chǔ)器(“ReRAM”)、電可擦除可編程只讀存儲(chǔ)器(“EEPROM”)、閃存(其還可以被考慮為EEPROM的子集)、鐵電隨機(jī)存取存儲(chǔ)器(“FRAM”)、和磁阻隨機(jī)存取存儲(chǔ)器(“MRAM”))、以及能夠存儲(chǔ)信息的其他半導(dǎo)體元件。每種類型的存儲(chǔ)器設(shè)備可以具有不同的配置。例如,閃存設(shè)備可以被配置成NAND或NOR配置。

存儲(chǔ)器設(shè)備可由無(wú)源和/或有源元件以任何組合來(lái)形成。通過(guò)非限制性示例的方式,無(wú)源半導(dǎo)體存儲(chǔ)器元件包括ReRAM設(shè)備元件,在一些實(shí)施例中,所述元件包括如反熔絲相變材料等電阻率切換存儲(chǔ)元件以及(可選地)如二極管等操控元件。進(jìn)一步通過(guò)非限制性示例的方式,有源半導(dǎo)體存儲(chǔ)器元件包括EEPROM和閃存設(shè)備元件,在一些實(shí)施例中,所述元件包括如浮柵、導(dǎo)電納米顆粒、或電荷存儲(chǔ)介電材料等包含了電荷存儲(chǔ)區(qū)域的元件。

多個(gè)存儲(chǔ)器元件可以被配置為使得它們串聯(lián)或使得每個(gè)元件是可單獨(dú)訪問(wèn)的。通過(guò)非限制性示例的方式,NAND配置(NAND存儲(chǔ)器)中的閃存設(shè)備通常包含串聯(lián)的存儲(chǔ)器元件。NAND存儲(chǔ)器陣列可以被配置為使得陣列包括多個(gè)存儲(chǔ)器串,其中,串包括共享單個(gè)位線并作為群組被訪問(wèn)的多個(gè)存儲(chǔ)器元件。替代性地,存儲(chǔ)器元件可以被配置為使得每一個(gè)元件是可單獨(dú)訪問(wèn)的(例如,NOR存儲(chǔ)器陣列)。NAND和NOR存儲(chǔ)器配置是示例性的,并且存儲(chǔ)器元件可以以其他方式配置。

位于基板內(nèi)和/或上方的半導(dǎo)體存儲(chǔ)器元件可以被安排在兩個(gè)或三個(gè)維度(如二維存儲(chǔ)器結(jié)構(gòu)或三維存儲(chǔ)器結(jié)構(gòu))中。

在二維存儲(chǔ)器結(jié)構(gòu)中,半導(dǎo)體存儲(chǔ)器元件被安排在單個(gè)平面或單個(gè)存儲(chǔ)器設(shè)備級(jí)中。通常,在二維存儲(chǔ)器結(jié)構(gòu)中,存儲(chǔ)器元件被安排在基本上平行于支撐存儲(chǔ)器元件的基板的主要表面而延伸的平面中(例如,在x-z方向平面中)。基板可以是在其上方或在其中形成存儲(chǔ)器元件層的晶片,或者其可以是在形成存儲(chǔ)器元件之后附接至其上的載體基板。作為非限制性示例,基板可以包括如硅等半導(dǎo)體。

可以在單個(gè)存儲(chǔ)器設(shè)備級(jí)中將存儲(chǔ)器元件安排成有序陣列,如在多個(gè)行和/或列中。然而,可以在非規(guī)則或非正交配置中排列存儲(chǔ)器元件。存儲(chǔ)器元件中的每個(gè)存儲(chǔ)器元件可以具有兩個(gè)或更多個(gè)電極或接觸線,如位線和字線。

三維存儲(chǔ)器陣列被安排成使得存儲(chǔ)器元件占據(jù)多個(gè)平面或多個(gè)存儲(chǔ)器設(shè)備級(jí),由此在三個(gè)維度(即,在x方向、y方向和z方向上,其中,y方向基本上垂直于并且x和z方向基本上平行于基板的主表面)中形成結(jié)構(gòu)。

作為非限制性示例,三維存儲(chǔ)器結(jié)構(gòu)可以被垂直地安排成多個(gè)二維存儲(chǔ)器設(shè)備級(jí)的堆疊。作為另一個(gè)非限制性示例,三維存儲(chǔ)器陣列可以被安排成多個(gè)垂直列(例如,基本上垂直于基板的主表面延伸的列,即,在y方向上),每列在每列中具有多個(gè)存儲(chǔ)器元件??梢栽诙S配置中(例如,在x-z平面中)安排所述列,導(dǎo)致存儲(chǔ)器元件的三維安排,元件位于多個(gè)垂直堆疊的存儲(chǔ)器平面上。存儲(chǔ)器元件在三個(gè)維度中的其他配置也可以構(gòu)成三維存儲(chǔ)器陣列。

通過(guò)非限制性示例的方式,在三維NAND存儲(chǔ)器陣列中,存儲(chǔ)器元件可以被耦合在一起,以便在單個(gè)水平(例如,x-z)存儲(chǔ)器設(shè)備級(jí)內(nèi)形成NAND串??商娲?,存儲(chǔ)器元件可以被耦合在一起,以便形成橫跨多個(gè)水平存儲(chǔ)器設(shè)備級(jí)的垂直NAND串??梢栽O(shè)想其他三維配置,其中,一些NAND串包含單個(gè)存儲(chǔ)器級(jí)中的存儲(chǔ)器元件,而其他串包含跨越多個(gè)存儲(chǔ)器級(jí)的存儲(chǔ)器元件。還可以在NOR配置中和在ReRAM配置中設(shè)計(jì)三維存儲(chǔ)器陣列。

通常,在單片式三維存儲(chǔ)器陣列中,在單個(gè)基板上方形成一個(gè)或多個(gè)存儲(chǔ)器設(shè)備級(jí)??蛇x地,單片式三維存儲(chǔ)器陣列還可以具有至少部分地位于單個(gè)基板內(nèi)的一個(gè)或多個(gè)存儲(chǔ)器層。作為非限制性示例,基板可以包括如硅等半導(dǎo)體。在單片式三維陣列中,構(gòu)成陣列的每個(gè)存儲(chǔ)器設(shè)備級(jí)的層通常在陣列的基礎(chǔ)存儲(chǔ)器設(shè)備級(jí)的層上形成。然而,單片式三維存儲(chǔ)器陣列的鄰近存儲(chǔ)器設(shè)備級(jí)的層可以被共享或在存儲(chǔ)器設(shè)備級(jí)之間存在中間層。

然后,再次,二維陣列可以被單獨(dú)地形成并且然后被封裝在一起,以便形成具有多個(gè)存儲(chǔ)器層的非單片式存儲(chǔ)器設(shè)備。例如,非單片式堆疊存儲(chǔ)器可以通過(guò)在單獨(dú)地基板上形成存儲(chǔ)器級(jí)然后將存儲(chǔ)器級(jí)堆疊在彼此頂上來(lái)構(gòu)造??梢詼p薄基板或者可以在堆疊之前將其從存儲(chǔ)器設(shè)備級(jí)中移除,但是因?yàn)榇鎯?chǔ)器設(shè)備級(jí)最初地在單獨(dú)的基板上方形成,所以所產(chǎn)生的存儲(chǔ)器陣列不是單片式三位存儲(chǔ)器陣列。此外,多個(gè)二維存儲(chǔ)器陣列或三維存儲(chǔ)器陣列(單片式或非單片式)可以在單獨(dú)的芯片上形成然后被封裝在一起,以便形成堆疊芯片存儲(chǔ)器設(shè)備。

存儲(chǔ)器元件的操作以及與存儲(chǔ)器元件的通信通常需要相關(guān)聯(lián)的電路。作為非限制性示例,存儲(chǔ)器設(shè)備可以具有用于控制和驅(qū)動(dòng)存儲(chǔ)器元件完成如編程和讀取等功能的電路。此相關(guān)聯(lián)的電路可以位于與存儲(chǔ)器元件相同的基板上和/或位于單獨(dú)的基板上。例如,用于存儲(chǔ)器讀-寫操作的控制器可以位于單獨(dú)的控制器芯片上和/或位于與存儲(chǔ)器元件相同的基板上。

本領(lǐng)域的技術(shù)人員將意識(shí)到,本發(fā)明不限于所描述的二維和三維示例性結(jié)構(gòu),但涵蓋了如此處描述的本發(fā)明的精神和范圍內(nèi)的和如本領(lǐng)域的技術(shù)人員理解的所有相關(guān)存儲(chǔ)器結(jié)構(gòu)。

圖11是引起通過(guò)存儲(chǔ)模塊的控制器的前端(FE)模塊來(lái)執(zhí)行主機(jī)讀取請(qǐng)求的示例方法1100的流程圖。所述控制器可以包括在硬件路徑中的多個(gè)硬件模塊,所述硬件模塊被配置成用于進(jìn)行用于執(zhí)行主機(jī)讀取請(qǐng)求的多個(gè)進(jìn)程。所述控制器還可以包括固件模塊,所述固件模塊也被配置成用于進(jìn)行用于執(zhí)行主機(jī)讀取請(qǐng)求的多個(gè)進(jìn)程。在框1102中,所述控制器的主機(jī)接口模塊(HIM)可以接收主機(jī)命令并將所述主機(jī)命令發(fā)送至所述前端模塊。在框1104中,所述前端模塊可以解析所述主機(jī)命令以獲得被包含在主機(jī)命令中的信息。在框1106中,所述前端模塊可以鑒定所述主機(jī)命令是否是讀取請(qǐng)求。如果所述主機(jī)命令不是主機(jī)讀取請(qǐng)求,則在框1108中,所述前端模塊可以將所述主機(jī)請(qǐng)求發(fā)送至所述固件模塊以進(jìn)行后續(xù)處理。可替代地,在框1106中,如果所述主機(jī)命令是主機(jī)讀取請(qǐng)求,則在框1110中,所述前端模塊可以確定所述主機(jī)讀取請(qǐng)求是否是對(duì)于具有的大小沒(méi)有超過(guò)閾值或大小極限的數(shù)據(jù)的請(qǐng)求。如果是,則在框1112中,所述前端模塊可以將所述主機(jī)讀取請(qǐng)求發(fā)送至所述固件模塊以進(jìn)行后續(xù)處理??商娲?,如果所請(qǐng)求將被讀取的數(shù)據(jù)是在所述大小極限之內(nèi),則在框1114中,所述前端模塊可以確定開始用所述硬件路徑中的硬件模塊執(zhí)行所述主機(jī)讀取請(qǐng)求。

圖12是響應(yīng)于開始在硬件路徑中執(zhí)行主機(jī)讀取請(qǐng)求而將邏輯地址轉(zhuǎn)換成物理地址的示例方法1200的流程圖。在框1202中,前端模塊可以解析所述讀取請(qǐng)求以確定在所述主機(jī)讀取請(qǐng)求中標(biāo)識(shí)的邏輯地址信息。在框1204中,如果所述前端模塊不能成功確定所述邏輯地址信息,則在框1206中,所述前端模塊可以將所述主機(jī)讀取請(qǐng)求發(fā)送至所述固件模塊??商娲兀绻銮岸四K能夠成功確定所述邏輯地址信息,則在框1208中,所述前端模塊可以將所述邏輯地址信息發(fā)送至所述硬件路徑中的地址轉(zhuǎn)換硬件模塊(ATHM)。此外,在框1208中,如果存在專門用于供所述固件模塊查詢的次要地址數(shù)據(jù)結(jié)構(gòu),所述前端模塊可以將所述邏輯地址信息發(fā)送至所述固件模塊。

在框1210中,響應(yīng)于接收到所述邏輯地址信息,所述地址轉(zhuǎn)換硬件模塊可以查詢所述次要地址數(shù)據(jù)結(jié)構(gòu)以便確定關(guān)于所述邏輯地址信息的邏輯-物理映射。在框1212中,如果所述查詢是成功的并且所述地址轉(zhuǎn)換硬件模塊確定了邏輯-物理映射,則在框1214中,所述地址轉(zhuǎn)換硬件模塊可以確定放棄查詢主要地址數(shù)據(jù)結(jié)構(gòu)并且將與所述映射相關(guān)聯(lián)的物理地址發(fā)送至數(shù)據(jù)檢索硬件模塊(DRHM)以進(jìn)行后續(xù)處理。

可替代地,如果所述地址轉(zhuǎn)換硬件模塊沒(méi)有確定邏輯-物理映射,則在框1216中,所述地址轉(zhuǎn)換硬件模塊可以查詢主要地址數(shù)據(jù)結(jié)構(gòu)。在框1218中,如果所述地址轉(zhuǎn)換硬件模塊通過(guò)查詢所述主要地址數(shù)據(jù)結(jié)構(gòu)確定了邏輯-物理映射,在所述方法進(jìn)行至框1214,在這里所述地址轉(zhuǎn)換硬件模塊可以將與所述邏輯-物理映射相關(guān)聯(lián)的物理地址發(fā)送至所述數(shù)據(jù)檢索硬件模塊。可替代地,在框1218中,如果所述地址轉(zhuǎn)換硬件模塊通過(guò)查詢所述主要地址數(shù)據(jù)結(jié)構(gòu)沒(méi)有確定邏輯-物理映射,則在框1220中,所述地址轉(zhuǎn)換硬件模塊可以通知所述固件模塊它不能成功地進(jìn)行地址轉(zhuǎn)換、并且通過(guò)查詢所述次要和主要數(shù)據(jù)結(jié)構(gòu)來(lái)確定物理地址。

圖13是用硬件路徑中的數(shù)據(jù)檢索硬件模塊(DRHM)、以及固件模塊來(lái)檢索被存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)的示例方法1300的流程圖。在框1302中,所述數(shù)據(jù)檢索硬件模塊可以從地址轉(zhuǎn)換硬件模塊接收物理地址。在框1304中,所述數(shù)據(jù)檢索硬件模塊可以嘗試將從所述地址轉(zhuǎn)換硬件模塊接收的所述物理地址(可以是抽象地址)變換成實(shí)際物理地址。在框1306中,如果所述變換沒(méi)有成功,則在框1308中,所述數(shù)據(jù)檢索硬件模塊可以通知所述固件模塊它不能進(jìn)行所述變換??商娲兀绻鲎儞Q成功,則在框1310中,所述數(shù)據(jù)檢索硬件模塊可以被配置成用于生成關(guān)于所述實(shí)際物理地址的讀出和數(shù)據(jù)傳送上下文命令集。

在框1312中,所述數(shù)據(jù)檢索硬件模塊可以將所述讀出命令發(fā)出至所述存儲(chǔ)器,以用于讀出位于所述實(shí)際物理地址的數(shù)據(jù)。在框1314中,所述數(shù)據(jù)檢索硬件模塊可以確認(rèn)它基于從所述地址轉(zhuǎn)換硬件模塊的物理地址而判定的實(shí)際物理地址是否是最終實(shí)際物理地址。對(duì)于一些示例方法,所述數(shù)據(jù)檢索硬件模塊可以基于從所述固件模塊接收的信息進(jìn)行這種確認(rèn)。例如,返回參見圖12中的方法1200,在框1208中,所述前端模塊可以將邏輯地址信息發(fā)送至所述固件模塊,所述固件模塊可以使用所述邏輯地址信息來(lái)查詢僅可用于所述固件模塊的次要數(shù)據(jù)結(jié)構(gòu)。返回參見圖13的方法1300,如果所述固件模塊未能確定邏輯-物理映射,則在框1314中,所述數(shù)據(jù)檢索硬件模塊可以確定:它基于從所述地址轉(zhuǎn)換硬件模塊接收的物理地址而確定的實(shí)際物理地址是正確的。作為響應(yīng),在框1316中,所述數(shù)據(jù)檢索硬件模塊可以發(fā)出數(shù)據(jù)傳送命令以使得所讀出的數(shù)據(jù)被傳送至所述控制器??商娲?,如果所述固件模塊基于其查詢確定了邏輯-物理映射,則在框1318中,所述數(shù)據(jù)檢索硬件模塊可以從所述固件模塊接收新的物理地址、將所述新的物理地址變換成實(shí)際物理地址、并且重新生成具有所述新的實(shí)際物理地址的上下文命令。在框1320中,所述數(shù)據(jù)檢索硬件模塊可以發(fā)出新的上下文命令以便讀出和傳送所述數(shù)據(jù)。

圖14是用硬件路徑中的后數(shù)據(jù)檢索硬件模塊(PDRHM)、以及固件模塊從存儲(chǔ)器中檢索了數(shù)據(jù)之后處理所述數(shù)據(jù)的示例方法1400的流程圖。在框1402中,所述后數(shù)據(jù)檢索硬件模塊可以從所述存儲(chǔ)器接收數(shù)據(jù)。在框1404中,所述后數(shù)據(jù)檢索硬件模塊可以進(jìn)行初始錯(cuò)誤識(shí)別以便判定與所述讀取數(shù)據(jù)相關(guān)聯(lián)的位錯(cuò)誤率是否低于閾值。在框1406中,如果所述位錯(cuò)誤率不是低于所述閾值,則在框1408中,所述后數(shù)據(jù)檢索硬件模塊可以將所述數(shù)據(jù)發(fā)送至所述固件模塊以進(jìn)行錯(cuò)誤恢復(fù),從而恢復(fù)并讀取具有的位錯(cuò)誤率低于所述閾值的數(shù)據(jù)??商娲兀诳?406中,如果所述位錯(cuò)誤率低于所述閾值,則在框1410中,所述后數(shù)據(jù)檢索硬件模塊可以糾正所述數(shù)據(jù)中的錯(cuò)誤。在框1412中,所述后數(shù)據(jù)檢索硬件模塊可以進(jìn)行解碼。如果在框1414中所述后數(shù)據(jù)檢索硬件模塊能夠成功地解碼所述數(shù)據(jù),則在框1416中,所述后數(shù)據(jù)檢索硬件模塊可以將經(jīng)解碼的數(shù)據(jù)發(fā)送至緩沖池,以便在其被發(fā)送至主機(jī)之前暫時(shí)存儲(chǔ)它??商娲兀绻诳?414中所述后數(shù)據(jù)檢索硬件模塊不能成功地解碼所述數(shù)據(jù),則在框1418中,所述后數(shù)據(jù)檢索硬件模塊可以將所述數(shù)據(jù)發(fā)送至所述固件模塊來(lái)將所述數(shù)據(jù)解碼。

上述具體實(shí)施方式旨在被理解為所述實(shí)施例可以采用的所選擇的形式的展示,而不旨在限制以下權(quán)利要求。而且,以下權(quán)利要求中的一些可能敘述了:部件可操作來(lái)進(jìn)行某個(gè)功能或被配置成用于某個(gè)任務(wù)。應(yīng)注意的是,這些不是約束性的限制。還應(yīng)注意的是,在權(quán)利要求中敘述的動(dòng)作可以按任何順序、不一定按敘述它們的順序來(lái)進(jìn)行。此外,可以單獨(dú)地或彼此組合地使用在此描述的任何優(yōu)選實(shí)施例的任何方面??偟膩?lái)說(shuō),雖然關(guān)于本發(fā)明的某些實(shí)施例相當(dāng)詳細(xì)地描述了本發(fā)明,但其他版本是可能的。因此,所附權(quán)利要求書的精神和范圍不局限于對(duì)在此包含的實(shí)施例的說(shuō)明。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
扶余县| 江西省| 通州区| 永年县| 万全县| 民乐县| 新闻| 奉节县| 伊川县| 涟水县| 绩溪县| 万山特区| 新郑市| 左贡县| 白沙| 山东| 顺平县| 屯留县| 甘洛县| 仁化县| 林甸县| 泗阳县| 万安县| 慈溪市| 天门市| 青田县| 娱乐| 兴化市| 绍兴县| 新龙县| 莎车县| 靖边县| 通辽市| 木兰县| 信丰县| 贡山| 万山特区| 莲花县| 淮滨县| 聂拉木县| 晋宁县|