專利名稱:用于減少存儲器陣列中的讀取等待時間的存儲器操作暫停的制作方法
技術(shù)領(lǐng)域:
背景技術(shù):
當前,用于外部及嵌入式快閃存儲器兩者的最常見接口為多媒體卡(MMC)及對應(yīng)的嵌入式MMC(e-MMC)。還正在研發(fā)例如通用快閃存儲(UFS)等新標準以允許內(nèi)部及外部快閃存儲器共享單個總線。這些標準還打算適于其它類型的存儲器,包含磁性存儲器、光學存儲器及相變存儲器。為簡化MMC或e-MMC接口,存儲器卡控制器使物理存儲器接口(例如,NAND接口) 適應(yīng)MMC總線接口且還管理特定于所述物理存儲器技術(shù)的任務(wù)。對于NAND存儲器,這些任務(wù)可包含碎片重組、壞塊管理、錯誤校正及檢測、損耗均衡算法、安全管理及邏輯/物理塊重新映射。此減少系統(tǒng)的其余部分的復雜性,但這些額外存儲器控制器任務(wù)全部需要一定的時間來執(zhí)行,此可使得所述存儲器暫時不可用??砂l(fā)生以下情況,舉例來說,存儲器卡控制器將由于當前運行數(shù)據(jù)管理例程(例如,數(shù)據(jù)碎片重組或無用單元收集)而花費數(shù)百毫秒以上來執(zhí)行主機命令。在此時間期間, 所述卡將處于繁忙狀態(tài)中且其可不管理其它主機命令直到先前主機命令結(jié)束為止。因此, 延遲對讀取命令的響應(yīng)。此增加的等待時間可干涉主機的適當操作。
發(fā)明內(nèi)容
本說明書的結(jié)論部分中已特別指出及清晰地主張了被視為本發(fā)明的標的物。然而,在結(jié)合附圖閱讀時參考以下詳細說明可最佳理解本發(fā)明的組織及操作方法兩者、以及其目的、特征及優(yōu)點。圖1展示適于圖解說明實施例的若干方面的e-MMC快閃存儲器卡控制器的狀態(tài)圖的一部分;圖2展示根據(jù)實施例的存儲器控制器的狀態(tài)圖的一部分;圖3是根據(jù)實施例暫停及重新開始寫入操作的時序圖;圖4是根據(jù)實施例中止寫入操作的時序圖;圖5是根據(jù)實施例暫停及重新開始寫入操作的過程流程圖;圖6是根據(jù)實施例中止寫入操作的過程流程圖;圖7是具有能夠?qū)嵤┰谄渌鼒D的上下文中所描述的過程及設(shè)備的主機接口的受管理存儲器的框圖;且圖8是能夠?qū)嵤┰谄渌鼒D的上下文中所描述的過程及設(shè)備的移動裝置的框圖。應(yīng)了解,為簡潔及清晰圖解說明起見,圖中所圖解說明的元件未必按比例繪制。舉例來說,為清晰起見,所述元件中的一些元件的尺寸可相對于其它元件放大。此外,在認為適當處,在圖中重復參考編號以指示對應(yīng)或類似元件。
具體實施例方式為實現(xiàn)PoD及許多其它需求策略及應(yīng)用,存儲器必須提供足夠快速讀取操作且所述讀取操作必須可在已寫入相同數(shù)據(jù)不久之后進行。因此,如下文所描述,主機可存取一受管理存儲器,而不管存儲器控制器的狀態(tài)如何。如果(舉例來說)寫入操作正在進行中,那么主機可暫停當前寫入操作、執(zhí)行讀取操作且接著重新開始經(jīng)暫停的寫入。舉例來說,當主機使其自身的固件存儲到受管理存儲器上且在運行時間其需要加載所述固件的若干片段而存儲器控制器正忙于存儲數(shù)據(jù)時,此暫停操作可為有用的。在一個實例中,新命令序列允許主機暫停及重新開始長寫入操作以執(zhí)行迅速讀取操作。甚至在最差條件下,隨后為寫入重新開始命令的寫入暫停命令也可用以給主機保證幾毫秒的讀取存取時間。此允許主機(舉例來說)通過簡單凍結(jié)寫入操作來實施頁按需策略。可以相同方式凍結(jié)任一其它長存儲器管理操作。在e-MMC 4. 4JEDEC (電子裝置工程聯(lián)合委員會)JESD84-A44標準規(guī)范(結(jié)合電子工業(yè)協(xié)會頒布)的上下文中呈現(xiàn)以下說明以簡化闡釋,但相同概念可轉(zhuǎn)移給其它存儲器管理協(xié)議及存儲器接口。NAND快閃存儲器(無論是嵌入式的還是單獨可拆卸卡)可容易滿足任一系統(tǒng)的典型讀取速度要求。然而,存儲器管理及寫入算法可引入較長等待時間。由e-MMC規(guī)范將存儲器管理指派給存儲器卡控制器,因此主機不知道是否正執(zhí)行任一特定過程。因此,為始終如一地提供高速存儲器性能,必須存在適應(yīng)存儲器管理任務(wù)的某一方式。當e-MMC為受管理NAND快閃存儲器卡時,內(nèi)部存儲器卡控制器負責執(zhí)行內(nèi)部NAND 存儲器管理操作中的全部操作。在這些操作中,碎片重組及無用單元收集往往是不可預(yù)測的且耗時的。這些算法通常是在寫入/擦除命令期間執(zhí)行,且其持續(xù)時間取決于NAND快閃塊的占用狀態(tài)及因此取決于外部主機應(yīng)用如何存取存儲器系統(tǒng)。對于其它類型的物理存儲器,存在可干涉迅速讀取循環(huán)的其它存儲器管理操作。任何管理算法的執(zhí)行均可以不可預(yù)測方式增加寫入命令的執(zhí)行時間。因此,后續(xù)高優(yōu)先級讀取操作可延遲得比本說明書所允許的長。此尤其可擾亂主機的操作。 在經(jīng)由e-MMC接口耦合到主機(例如,計算機、智能電話、媒體播放器或類似裝置) 的快閃存儲器卡的上下文中呈現(xiàn)本說明。然而,本發(fā)明不受如此限制。許多類型的存儲器需要背景管理任務(wù)。不管這些任務(wù)是類似于快閃存儲器所需的那些任務(wù)還是與其有極大不同,本發(fā)明均允許減少來自這些任務(wù)的等待時間。本發(fā)明不限于特定存儲器硬件配置。所述存儲器可在不同卡、不同芯片上,或其可嵌入于某一其它裝置中。在所述存儲器封裝為存儲器卡的情況下,可由存儲器卡控制器執(zhí)行所述存儲器管理操作,然而,負責存儲器管理的控制器可在其它類型的存儲器中具有不同名稱。因此,將在具有耦合于存儲器與主機之間的存儲器控制器的存儲器或受管理存儲器的上下文中描述本發(fā)明。
在簡單實例的上下文中可更容易理解本發(fā)明的實施例。在此實例中,主機系統(tǒng)已將寫入多個塊命令呈送到存儲器控制器。實例性受管理存儲器具有聚集成塊的存儲器單元陣列。所述存儲器控制器處于對經(jīng)耦合的受管理存儲器陣列或甚至僅所述存儲器的一部分的數(shù)據(jù)碎片重組操作當中。在常規(guī)快閃存儲器卡中,存儲器卡控制器將在緩沖器中接收數(shù)據(jù)且接著回到碎片重組操作上來。接著將在此操作后面寫入新數(shù)據(jù)。主機將不能夠發(fā)送任何其它數(shù)據(jù)或讀取任何數(shù)據(jù)直到完成這些操作為止。另外,將不可讀取剛剛發(fā)送的數(shù)據(jù)直到碎片重組過程結(jié)束之后為止。此處,碎片重組用作實例。存在由可使存儲器暫時不可用的存儲器控制器執(zhí)行的數(shù)個其它過程。在以標準規(guī)范提供的e-MMC的常規(guī)狀態(tài)圖的上下文中可更全面地理解此實例。此狀態(tài)圖已再現(xiàn)為圖1。已從所述標準圖移除與本文中所討論操作不相關(guān)的細節(jié)中的一些細節(jié)。如圖1中所展示,存儲器控制器具有數(shù)個狀態(tài)。這些狀態(tài)包含備用狀態(tài)(stby) 10、 傳送狀態(tài)(tran)12、發(fā)送數(shù)據(jù)狀態(tài)(data) 14、接收數(shù)據(jù)狀態(tài)(rev) 16、編程狀態(tài)(prg) 18及斷開狀態(tài)(dis)20。還定義其它狀態(tài)但未展示以簡化所述圖。對于快閃存儲器,寫入到用于非易失性存儲的存儲器單元稱為編程。對于其它類型的存儲器,編程狀態(tài)可具有不同名稱,例如寫入或存儲。此處所展示的特定狀態(tài)是直接從e-MMC標準選取且特定來說極適于 NAND快閃。然而,本發(fā)明可適于其它類型的存儲器及其它類型的狀態(tài)機??刂破饕罁?jù)接收或產(chǎn)生命令而從一個狀態(tài)轉(zhuǎn)變到另一狀態(tài),或在發(fā)生“操作完成” 事件之后的幾個情況下即可從一個狀態(tài)轉(zhuǎn)變到另一狀態(tài)。所述命令全部在數(shù)字上定義為 CMDxx,其中XX為編號。每一命令均具有數(shù)字定義及自變量。然而,對于許多命令,所述自變量為填充自變量,意指其不用以傳達任何信息。stby與tran之間的轉(zhuǎn)變由主機使用CMD7、選擇/取消選擇來控制。類似地,prg 與dis之間及從data到stby的轉(zhuǎn)變由CMD7控制。當接收命令時,所述命令的效應(yīng)取決于存儲器控制器的當前狀態(tài)。當操作完成時,發(fā)生從dis到stby的轉(zhuǎn)變。在上文的簡單實例中,主機已寫入多個塊命令呈送到存儲器卡。此命令為CMD25。 如圖1中所展示,CMD 25可以tran 12由主機控制器接收。在此實例中,所述控制器處于 tran中,且在于框22處接收寫入命令(CMD 25)之后,存儲器控制器狀態(tài)從tran移動到rev 以接收數(shù)據(jù)。在從主機接收所有所述數(shù)據(jù)以存儲(“傳送結(jié)束”)之后或在于框M處接收停止命令(CMD 1 之后,存儲器控制器狀態(tài)朝向prg移動。根據(jù)標準規(guī)范,只要先前寫入命令已完成(“操作完成”框沈),存儲器控制器就從prg回到tran。主機不可在存儲器控制器繁忙的情況下給其發(fā)送任一其它命令。如果所述控制器正執(zhí)行復雜操作(例如,碎片重組),那么所述控制器可保持處于“編程狀態(tài)”中達數(shù)毫米。依據(jù)標準描述各種各樣的不同讀取請求。這些請求在框觀處展示為CMD8、11、17、 18、30、56(r)。這些命令可僅在存儲器控制器處于傳送狀態(tài)中的情況下起作用。因此,為迅速服務(wù)于讀取請求,存儲器控制器必須迅速從其當前狀態(tài)移動到傳送狀態(tài)。從備用狀態(tài),此可容易借助CMD7來完成。從發(fā)送數(shù)據(jù)狀態(tài),一經(jīng)同意當前請求,存儲器控制器隨時可發(fā)送更多數(shù)據(jù)。從斷開狀態(tài),主機可等到在框36處完成操作為止且接著發(fā)布用于備用狀態(tài)的 CMD7或可借助CMD7命令所述存儲器控制器轉(zhuǎn)到編程狀態(tài)。編程狀態(tài)將隨著框沈處的操作完成轉(zhuǎn)變回到傳送狀態(tài)。為允許將讀取請求從接收數(shù)據(jù)狀態(tài)迅速服務(wù)到編程狀態(tài),可將快速“退出繁忙”方法提供給主機。此方法可給主機提供用以進行以下操作的途徑凍結(jié)當前碎片重組、無用單元收集或e-MMC上正進行的其它操作,從而使存儲器控制器自由以執(zhí)行更高優(yōu)先級讀取操作。稍后可接著重新開始經(jīng)凍結(jié)的操作。如上文所提及,通過寫入多個塊命令(CMD2Q頻繁地觸發(fā)存儲器管理操作。簡單地說,寫入暫停命令可用以暫停任一微型活動,從而釋放DATO線(繁忙信號)且使其可迅速從所述裝置讀取。寫入重新開始命令可接著將存儲器控制器移動到編程狀態(tài)中以完成先前暫停的寫入操作。可保存少量數(shù)據(jù)以允許所述微型活動稍后重新開始及完成所述寫入操作。在寫入暫停之后,可保存已從主機側(cè)進入到所述裝置中的所有那些數(shù)據(jù)塊以用于稍后重新開始。存在提供“退出繁忙”或“暫停及重新開始”方法的數(shù)個不同方式。在一個實例中,標準停止命令(CMDU)與唯一自變量(舉例來說,OxFOFOFOFO (按十六進制數(shù)字))一起使用。所述標準停止命令總是與填充自變量一起發(fā)送且命令標準停止傳輸(ST0P_TRANSMISSI0N)。通過將所述自變量改變成特定唯一自變量,可改變所述命令的操作及功能。此新命令可被認為是“寫入暫停”命令。根據(jù)此實例,在接收所述寫入暫停命令之后,控制器移動到prg 18中,且接著一經(jīng)可能立即移動到“操作完成”26中而不完成所有步驟。而是,暫停所有控制器背景寫入操作。所述控制器可經(jīng)配置以保持或保存其稍后重新開始及完成寫入操作所需的所有信息及數(shù)據(jù)。在“操作完成”之后,所有存儲器控制器回到tran 12中。從此狀態(tài),主機可將讀取命令觀發(fā)送到受管理存儲器且所述存儲器控制器將接著轉(zhuǎn)變到data 14且服務(wù)于所述命令。在data狀態(tài)14中發(fā)生讀取操作。在讀取操作達到框30處的“操作完成”之后,接著存儲器控制器返回到tran狀態(tài)12,所述存儲器控制器可通過經(jīng)由rev 16轉(zhuǎn)變到prg 18 而從tran狀態(tài)12重新開始先前寫入命令,。如果不重新開始先前寫入命令,那么將丟失以先前寫入命令發(fā)送到主機的所有數(shù)據(jù)。除重新開始序列以外的任一命令序列均可永久地停止先前寫入命令。為重新開始寫入操作且從tran轉(zhuǎn)變到prg,可使用各種各樣的不同方法。在一個實例中,可由主機發(fā)布以下命令序列-CMD 16(0x00000004)-CMD 56(0x00000000)-寫入4 字節(jié) OxFOFOFOFO框32處的設(shè)定塊長度命令CMD 16與自變量“0x00000004” 一起發(fā)送。所述自變量指示下一命令CMD 56的數(shù)據(jù)傳送長度。此后面是框22處的一般寫入命令(CMD56),所述一般寫入命令將存儲器控制器帶到rev狀態(tài)。除指示數(shù)據(jù)轉(zhuǎn)送的方向(在此情況下,朝向存儲器陣列)的第一位(位0)以外,自變量“0x00000000”為填充位。在接收數(shù)據(jù)之后, “傳送結(jié)束”將把存儲器控制器發(fā)送到prg狀態(tài)以寫入數(shù)據(jù)塊。一旦其已進入此狀態(tài),接著存儲器控制器就將完成先前暫停的寫入操作。在另一實例中,可使用新命令或可將額外目的給予現(xiàn)有命令以將存儲器控制器直接發(fā)送到“編程”狀態(tài)中。如框34處所展示,CMD6J8、29、38將存儲器控制器從tran直接帶到prg。這些命令可在考慮被給予其特殊目的的情況下使用。在任一情況下,所述命令均可用以將裝置直接發(fā)送到prg狀態(tài)中以完成先前暫停的寫入操作。在本實例中,使用CMD22。 此命令當前不具有e-MMC標準規(guī)范中的指派用途。任一其它經(jīng)保留或未經(jīng)使用的命令可用于替代CMD22或用以適應(yīng)所要過程的變化形式。關(guān)于上文所描述的寫入暫?;蛲顺龇泵Ψ椒ǎ诎l(fā)布暫停之后,如果主機發(fā)送讀取或重新開始命令,那么可重新開始維護操作。然而, 如果發(fā)布另一命令,那么存儲器控制器可消除重新開始信息中的所有信息。此寫入命令使經(jīng)中斷寫入命令不完整。另一風險為,如果暫停操作正在進行中且接著將另一讀取命令發(fā)布到經(jīng)暫停寫入中所涉及的地址,那么經(jīng)檢索數(shù)據(jù)可為未經(jīng)定義的。在第三實例中,可使用寫入中止命令序列。中止命令可用以致使突然中斷在寫入命令期間由e-MMC控制器起始的進行中存儲器維護操作中的所有操作。所述中斷使主機發(fā)布可快速執(zhí)行的高優(yōu)先級讀取命令。響應(yīng)于寫入中止命令,可摒棄存儲器中的所有數(shù)據(jù)再復制操作。如果如此,那么對于NAND存儲器,所涉及的物理塊將被認為無效。因此,所涉及的物理存儲器塊將在寫入至其中之前再次預(yù)擦除以用于新數(shù)據(jù)寫入操作。為避免丟失再復制操作中所涉及的數(shù)據(jù)中的所有數(shù)據(jù),通過寫入中止命令中斷的寫入命令可接著由主機再發(fā)布。此允許在高優(yōu)先級讀取之后完成以前寫入操作。當寫入操作在完成之前被中止是,存儲器控制器可發(fā)布用以指示未成功完成所述操作的錯誤信號。響應(yīng)于此,主機可接著在發(fā)布對應(yīng)寫入命令。如果如上文所描述的實例中由主機發(fā)布中止命令,那么主機可經(jīng)配置以自動重復最后寫入請求。在此情況下,不需要從存儲器控制器發(fā)送錯誤信號,這是因為主機知道曾停止寫入操作。作為替代方案,回應(yīng)于來自主機的高優(yōu)先級讀取請求,可由存儲器控制器發(fā)布寫入中止命令。為恢復經(jīng)中止寫入操作,存儲器控制器可在已服務(wù)于讀取請求時記起經(jīng)中止操作且自動重新開始。另一選擇為,存儲器控制器可簡單發(fā)布用于經(jīng)中止操作的錯誤信號。 所述錯誤信號可接著致使主機再發(fā)布最后寫入操作。所述中止命令可以各種各樣的不同方式實施。在一個實例中,如同第一實例,可使用通過使用新自變量格式(例如,“OxFOFOFOFO”)修改的停止命令(CMD12)。由于所述停止命令的自變量完全由填充位構(gòu)成,因此其它自變量可用以將額外功能添加到所述命令。上文所描述的方法可實施于存儲器控制器或主機中。如果主機涉及到寫入暫停或?qū)懭胫兄共僮?,那么存儲器控制器可將其是否能夠支持此類命令及如何支持指示給主機。 在e-MMC標準下,每一 MMC卡包含EXT_CSD (經(jīng)擴展卡特定數(shù)據(jù))寄存器。此寄存器含有關(guān)于卡的能力及選定模式的信息。所述信息包含開始地址、存儲器容量、分區(qū)、啟動代碼、經(jīng)啟用命令集、定時及速度規(guī)格、擦除保護模式等。當啟動卡時,由主機讀取卡上的寄存器。在一個實例中,經(jīng)擴展CSD寄存器的所有權(quán)區(qū)域中的專用字段可經(jīng)設(shè)定以向主機平臺傳遞 在所述裝置上,寫入暫停/重新開始命令或?qū)懭胫兄姑罨騼烧邽榭捎玫?。舉例來說,經(jīng)擴展CSD寄存器的分段區(qū)域可用以允許主機挑選是否啟用這些命令。在一個實例中,如由主機設(shè)定,字節(jié)可存在于分段區(qū)域中。當主機設(shè)定所述字節(jié)時,接著啟用中止及暫停/重新開始功能性。作為實例,分段區(qū)域中的字節(jié)可具有如表1中所展示的結(jié)構(gòu)。
權(quán)利要求
1.一種方法,其包括將第一數(shù)據(jù)集寫入到存儲器中;中斷(119)第二存儲器寫入操作;及在中斷所述第二存儲器寫入操作之后從所述存儲器讀取(121)所述第一數(shù)據(jù)集。
2.根據(jù)權(quán)利要求1所述的方法,其進一步包括在讀取所述第一數(shù)據(jù)集之后重新開始 (127)所述第二存儲器寫入操作。
3.根據(jù)權(quán)利要求1所述的方法,其進一步包括響應(yīng)于中斷所述第二存儲器寫入操作而發(fā)布錯誤信號。
4.根據(jù)權(quán)利要求1所述的方法,其進一步包括響應(yīng)于所述錯誤信號而接收重復所述經(jīng)中斷第二存儲器寫入操作的命令。
5.根據(jù)權(quán)利要求1所述的方法,其中寫入包括發(fā)布寫入命令,其中中斷包括發(fā)布中斷命令,且其中讀取包括發(fā)布讀取命令。
6.根據(jù)前述權(quán)利要求中任何一個或一個以上權(quán)利要求所述的方法,其中中斷包括發(fā)布 (139)停止命令。
7.根據(jù)前述權(quán)利要求中任何一個或一個以上權(quán)利要求所述的方法,其中中斷包括發(fā)布 (119)暫停命令。
8.根據(jù)權(quán)利要求1所述的方法,其中中斷包括接收中斷命令及從寫入狀態(tài)(18)轉(zhuǎn)變到發(fā)送狀態(tài)(12)。
9.根據(jù)前述權(quán)利要求中任何一個或一個以上權(quán)利要求所述的方法,其中第二存儲器寫入命令包括存儲器維護操作,例如碎片重組或無用單元收集。
10.根據(jù)前述權(quán)利要求中任何一個或一個以上權(quán)利要求所述的方法,其中讀取包括將數(shù)據(jù)頁提供到頁按需存儲器主機(205)。
11.根據(jù)前述權(quán)利要求中任何一個或一個以上權(quán)利要求所述的方法,其中所述存儲器為NAND快閃存儲器(201)。
12.—種設(shè)備,其包括電子數(shù)據(jù)存儲器O01);存儲器控制器O02),其耦合到所述存儲器;及主機接口 004),其耦合到所述存儲器控制器及主機Q05);其中所述存儲器控制器將第一數(shù)據(jù)集寫入到所述存儲器中且對所述存儲器執(zhí)行第二存儲器寫入操作,所述存儲器控制器經(jīng)由所述主機接口從所述主機接收存儲器讀取命令, 所述存儲器控制器接著中斷所述第二存儲器寫入操作以服務(wù)于所述讀取命令。
全文摘要
可通過暫停寫入操作來減少存儲器陣列中的讀取等待時間。在一個實例中,一種過程包含將第一數(shù)據(jù)集寫入到存儲器中、中斷第二存儲器寫入操作及在中斷所述第二存儲器寫入操作之后從所述存儲器讀取所述第一數(shù)據(jù)集。
文檔編號G11C16/10GK102598141SQ200980160847
公開日2012年7月18日 申請日期2009年6月10日 優(yōu)先權(quán)日2009年6月10日
發(fā)明者安東尼奧·毛羅, 安東尼諾·波利奧, 弗朗切斯科·法蘭加, 達尼洛·卡拉喬, 馬西莫·亞庫洛 申請人:美光科技公司