本文要求2015年12月11日提交的未決的共同轉(zhuǎn)讓的美國臨時專利申請?zhí)?2/266,193的權(quán)益,其全部內(nèi)容通過引用合并于此。
技術(shù)領(lǐng)域
本公開的主題的實現(xiàn)通常屬于用于在NAND閃速控制器中將解碼任務(wù)根據(jù)其優(yōu)先級指派給不同隊列的方法和裝置,包括適用于針對不同優(yōu)先級的任務(wù)的不同解碼器。
背景技術(shù):
本文提供的背景技術(shù)描述是出于一般地呈現(xiàn)本公開的上下文的目的。本發(fā)明人的工作在該背景技術(shù)部分中描述工作的程度上以及在提交時可能沒有以其他方式限定為現(xiàn)有技術(shù)的描述的各方面,既不明示地不暗示地被承認是抵觸本公開的現(xiàn)有技術(shù)。
多電平單元(MLC)NAND閃速存儲器正變得普及,因為每單位數(shù)據(jù)存儲的成本相對于單電平單元(SLC)NAND閃速存儲器儲器的成本減小。然而,因為多于一比特的信息被存儲在每個單元中,所以MLC NAND閃速存儲器還經(jīng)歷比SLC NAND閃速存儲器更高的原始誤比特率。
為了滿足可靠性要求,與在SLC NAND閃速存儲器設(shè)備中相比,可以在MLC NAND閃速存儲器設(shè)備中使用更高級的糾錯方案。然而,諸如讀取重試解碼和軟判定解碼的高級糾錯方案的復(fù)雜性可以增加NAND閃速存儲器數(shù)據(jù)存取操作的時延。對于不同的應(yīng)用,數(shù)據(jù)存取時延的影響將不同。例如,諸如主機數(shù)據(jù)讀取的一些關(guān)鍵操作可能需要相對低的存儲器存取時延,而諸如一些后臺操作(例如,用于垃圾收集的數(shù)據(jù)存取)的其他操作可能對時延的程度較不敏感。
技術(shù)實現(xiàn)要素:
一種用于在NAND閃速存儲器控制器中執(zhí)行解碼任務(wù)的裝置,所述裝置包括:用于對第一優(yōu)先級的解碼任務(wù)進行排隊的第一任務(wù)隊列;用于對高于所述第一優(yōu)先級的第二優(yōu)先級的解碼任務(wù)進行排隊的第二任務(wù)隊列;以及控制電路,所述控制電路在接收到用于多個解碼任務(wù)的數(shù)據(jù)部分時,從所述第一任務(wù)隊列和所述第二任務(wù)隊列中釋放所述多個解碼任務(wù)中的相應(yīng)解碼任務(wù),以根據(jù)所述多個解碼任務(wù)中的相應(yīng)解碼任務(wù)的優(yōu)先級來對所述數(shù)據(jù)部分中的相應(yīng)部分進行操作。
在這種裝置中,其中,NAND閃速存儲器控制器包括多個存儲器通道,該裝置可以進一步包括用于所述多個通道中的每個相應(yīng)通道的相應(yīng)第一任務(wù)隊列、以及用于所述多個通道中的每個相應(yīng)通道的相應(yīng)第二任務(wù)隊列。至少一個第一解碼器在第一糾錯碼解碼方案下進行操作,并且至少一個第二解碼器在第二糾錯碼解碼方案下進行操作,該第二糾錯碼解碼方案在速度和復(fù)雜度中的一個或二者方面不同于第一糾錯碼解碼方案。輸入切換電路可控制地將每個數(shù)據(jù)通道連接到第一解碼器和第二解碼器中的一個??刂齐娐钒ㄡ槍γ總€相應(yīng)通道的相應(yīng)通道任務(wù)控制塊,以用于從針對該相應(yīng)通道的相應(yīng)第一任務(wù)隊列和第二任務(wù)隊列中釋放解碼任務(wù),以控制所述輸入切換電路將用于相應(yīng)通道的相應(yīng)數(shù)據(jù)引導(dǎo)到第一解碼器和第二解碼器中的一個。
在這樣的實現(xiàn)中,至少一個第一解碼器包括多個第一解碼器,至少一個第二解碼器包括多個第二解碼器,并且輸入切換電路包括針對每個相應(yīng)通道的相應(yīng)解復(fù)用器,用于將所述相應(yīng)通道上的數(shù)據(jù)可選擇地引導(dǎo)到多個第一解碼器和多個第二解碼器中的一個;第一開關(guān),用于將針對多個第一解碼器的解復(fù)用器輸出引導(dǎo)到多個第一解碼器中的可用第一解碼器;以及第二開關(guān),用于將針對多個第二解碼器的解復(fù)用器的輸出引導(dǎo)到多個第二解碼器中的可用解碼器。
這樣的實現(xiàn)還可以進一步包括針對每個相應(yīng)通道的相應(yīng)緩沖器,用于保持在該相應(yīng)通道上接收的數(shù)據(jù),直至與該數(shù)據(jù)相對應(yīng)的解碼任務(wù)從第一任務(wù)隊列和第二任務(wù)隊列中的一個釋放。
這樣的實現(xiàn)可以進一步包括輸出切換電路,該輸出切換電路用于輸出第一解碼器和第二解碼器中的一個的輸出。在這種實現(xiàn)中,控制電路包括解碼器完成控制電路,該解碼器完成控制電路在從第一解碼器和第二解碼器中的一個接收到解碼器完成信號時,選擇第一解碼器和第二解碼器中的一個的輸出。這樣的實現(xiàn)可以進一步包括用于對第一優(yōu)先級的已完成的解碼任務(wù)進行排隊的第一任務(wù)完成隊列,以及用于對所述第二優(yōu)先級的已完成的解碼任務(wù)進行排隊的第二任務(wù)完成隊列,其中解碼器完成控制電路將每個已完成的解碼任務(wù)加載到第一任務(wù)完成隊列和第二任務(wù)完成隊列中的一個中,并且控制電路進一步包括解碼器完成狀態(tài)控制電路,該解碼器完成狀態(tài)控制電路根據(jù)已完成的解碼任務(wù)的優(yōu)先級報告來自第一任務(wù)完成隊列和第二任務(wù)完成隊列中的已完成的解碼任務(wù)。
這樣的裝置可以進一步包括緩沖器,用于保持從NAND閃速存儲器接收的數(shù)據(jù),直至與數(shù)據(jù)相對應(yīng)的解碼任務(wù)從所述第一任務(wù)隊列和所述第二任務(wù)隊列中的一個中被釋放。
這樣的裝置可以進一步包括用于對第一優(yōu)先級的已完成的解碼任務(wù)進行排隊的第一任務(wù)完成隊列;以及用于對第二優(yōu)先級的已完成的解碼任務(wù)進行排隊的第二任務(wù)完成隊列,其中控制電路根據(jù)所述已完成的解碼任務(wù)的優(yōu)先級來報告來自所述第一任務(wù)完成隊列和所述第二任務(wù)完成隊列中的已完成的解碼任務(wù)。
一種用于在NAND閃速存儲器控制器中執(zhí)行解碼任務(wù)的方法,可以包括:在第一任務(wù)隊列中對第一優(yōu)先級的解碼任務(wù)進行排隊;在第二任務(wù)隊列中對高于所述第一優(yōu)先級的第二優(yōu)先級的解碼任務(wù)進行排隊;以及在接收到用于多個解碼任務(wù)的數(shù)據(jù)部分時,從第一任務(wù)隊列和第二任務(wù)隊列中釋放所述多個解碼任務(wù)中的相應(yīng)解碼任務(wù),以根據(jù)多個解碼任務(wù)中的相應(yīng)解碼任務(wù)的優(yōu)先級來對數(shù)據(jù)部分中的相應(yīng)部分進行操作。
在這種方法的一個實現(xiàn)中,其中在NAND閃速存儲器控制器包括多個存儲器通道時,對第一優(yōu)先級的解碼任務(wù)進行排隊可以包括:針對多個通道中的每個相應(yīng)通道來在相應(yīng)第一任務(wù)隊列中對解碼任務(wù)進行排隊;以及對第二優(yōu)先級的解碼任務(wù)進行排隊可以包括:針對多個通道中的每個相應(yīng)通道來在相應(yīng)第二任務(wù)隊列中對解碼任務(wù)進行排隊。該方法可以進一步包括將每個數(shù)據(jù)通道可控制地連接到第一解碼器和第二解碼器中的一個,第一解碼器在第一糾錯碼解碼方案下進行操作,第二解碼器在第二糾錯碼解碼方案下進行操作,第二糾錯碼解碼方案在速度和復(fù)雜度中的一個或二者方面不同于第一糾錯碼解碼方案。
在這樣的實現(xiàn)中,可控制地連接包括:將每個數(shù)據(jù)通道可控制地連接到多個第一解碼器和多個第二解碼器中的一個,多個第一解碼器在第一糾錯碼解碼方案下進行操作,多個第二解碼器在第二糾錯碼解碼方案下進行操作。
這樣的實現(xiàn)可以進一步包括:針對每個相應(yīng)通道,將在相應(yīng)通道上接收的數(shù)據(jù)保持在緩沖器中,直至與數(shù)據(jù)相對應(yīng)的解碼任務(wù)從第一任務(wù)隊列和第二任務(wù)隊列中釋放。
這樣的實現(xiàn)還可以進一步包括:在第一任務(wù)完成隊列中對第一優(yōu)先級的已完成的解碼任務(wù)進行排隊;以及在第二任務(wù)完成隊列中對第二優(yōu)先級的已完成的解碼任務(wù)進行排隊;以及根據(jù)已完成的解碼任務(wù)的優(yōu)先級來報告來自所述第一任務(wù)完成隊列和所述第二任務(wù)完成隊列的完成的解碼任務(wù)。
這樣的方法還可以進一步包括將從NAND閃速存儲器接收的數(shù)據(jù)保持在緩沖器中,直至與數(shù)據(jù)相對應(yīng)的解碼任務(wù)從第一任務(wù)隊列和第二任務(wù)隊列中的一個中被釋放。
這種方法的實現(xiàn)可以進一步包括:在第一任務(wù)完成隊列中對第一優(yōu)先級的完成的解碼任務(wù)進行排隊,在第二任務(wù)完成隊列中對第二優(yōu)先級的完成的解碼任務(wù)進行排隊,以及根據(jù)已完成的解碼任務(wù)的優(yōu)先級來報告來自第一任務(wù)完成隊列和第二任務(wù)完成隊列中的已完成的解碼任務(wù)。
在這樣的實現(xiàn)中,根據(jù)已完成的解碼任務(wù)的優(yōu)先級報告來自第一任務(wù)完成隊列和第二任務(wù)完成隊列中的已完成的解碼任務(wù)包括:在報告第一優(yōu)先級的任何已完成的解碼任務(wù)之前,報告第二優(yōu)先級的所有已完成的解碼任務(wù)。該實現(xiàn)可以進一步包括在第一任務(wù)完成隊列中的已完成的解碼任務(wù)的排隊之后的預(yù)定持續(xù)時間之后,將已完成的解碼任務(wù)的優(yōu)先級水平從第一優(yōu)先級改變?yōu)榈诙?yōu)先級。
在這樣的實現(xiàn)中,根據(jù)已完成的解碼任務(wù)的優(yōu)先級來報告第一任務(wù)完成隊列和第二任務(wù)完成隊列中的已完成的解碼任務(wù)可以包括:在報告來自所述第二任務(wù)完成隊列中的預(yù)定數(shù)目的任務(wù)之后,報告來自第一任務(wù)完成隊列的任務(wù)。
在這樣的方法的實現(xiàn)中,從第一任務(wù)隊列和第二任務(wù)隊列中釋放所述多個解碼任務(wù)中的相應(yīng)解碼任務(wù),以根據(jù)在所述多個解碼任務(wù)中的相應(yīng)解碼任務(wù)的優(yōu)先級來對數(shù)據(jù)部分中的相應(yīng)部分進行操作可以包括:在釋放所述第一優(yōu)先級的任何解碼任務(wù)之前,釋放第二優(yōu)先級的所有解碼任務(wù)。
這樣的實現(xiàn)可以進一步包括在所述第一任務(wù)隊列中的解碼任務(wù)的排隊之后的預(yù)定持續(xù)時間之后,將解碼任務(wù)的優(yōu)先級水平從第一優(yōu)先級改變?yōu)樗龅诙?yōu)先級。
在這樣的方法中,從第一任務(wù)隊列和第二任務(wù)隊列中釋放多個解碼任務(wù)中的相應(yīng)解碼任務(wù),以根據(jù)在多個解碼任務(wù)中的相應(yīng)解碼任務(wù)的優(yōu)先級來對數(shù)據(jù)部分中的相應(yīng)部分進行操作可以包括:在來自第二任務(wù)隊列中的預(yù)定數(shù)目的任務(wù)的釋放之后,釋放來自所述第一任務(wù)隊列的任務(wù)。
附圖說明
在結(jié)合附圖考慮以下詳細描述之后,本公開的其他特征、其性質(zhì)和各種優(yōu)點將是顯而易見的,在附圖中,相同的附圖標(biāo)記在全文中表示相同的部件,并且其中:
圖1示出可以使用本公開的實現(xiàn)的NAND閃速存儲器控制器的框圖;
圖2示出根據(jù)可以在NAND閃速控制器中使用的本公開的主題的實現(xiàn)的糾錯碼解碼器的結(jié)構(gòu)的框圖;
圖3是根據(jù)本公開的主題的實現(xiàn)的過程的流程圖,通過其可以填充圖2的解碼器中的針對每個數(shù)據(jù)通道的解碼任務(wù)隊列;
圖4是示出根據(jù)本公開的主題的實現(xiàn)的過程的流程圖,用于從正常優(yōu)先級任務(wù)隊列或高優(yōu)先級任務(wù)隊列中的一個選擇用于執(zhí)行的任務(wù);
圖5是示出根據(jù)本公開的主題的實現(xiàn)的用于在正常優(yōu)先級解碼任務(wù)和高優(yōu)先級解碼任務(wù)之間選擇規(guī)則集合的操作的流程圖;以及
圖6是示出根據(jù)本公開的主題的實現(xiàn)的用于報告解碼任務(wù)的完成的過程的流程圖。
具體實施方式
如上所述,MLC NAND閃速存儲器可能經(jīng)歷比SLC NAND閃速存儲器更高的原始誤比特率。因此,為了滿足可靠性要求,與在SLCNAND閃速存儲器設(shè)備中相比,更多高級糾錯方案可以在MLCNAND閃速存儲器設(shè)備中使用。然而,諸如讀取重試解碼和軟判定解碼的高級糾錯方案的復(fù)雜性可以增加NAND閃速存儲器數(shù)據(jù)存取操作的時延。
因為如上所述的數(shù)據(jù)存取時延的影響對于不同應(yīng)用而不同,所以根據(jù)本公開的實現(xiàn),可以不同地處理不同優(yōu)先級的存儲器存取操作。另外,可以在使用更復(fù)雜且耗時的解碼方案以及使用更簡單和更快速的解碼方案之間實現(xiàn)折衷,更復(fù)雜且耗時的解碼方案更可能在第一嘗試就成功,更簡單和更快速的解碼方案可能偶然失敗且需要多于一次的嘗試。
總而言之,即使可能發(fā)生需要重試操作的偶然故障,也可以通過對大多數(shù)存儲器存取操作使用更簡單和更快速的解碼方案,同時對更高優(yōu)先級的解碼任務(wù)使用更復(fù)雜和耗時的解碼方案,來最大化總體吞吐量。
此外,在“插隊”特征下,即使較高優(yōu)先級解碼任務(wù)稍后啟動,也可以在正常優(yōu)先級解碼任務(wù)之前執(zhí)行較高優(yōu)先級解碼任務(wù)。
可以參考圖1-6來理解本公開的主題的實現(xiàn)。
圖1示出了在一個或多個NAND閃速存儲器設(shè)備101和主機設(shè)備102之間的NAND閃速存儲器控制器100。NAND閃速控制器100包括“編程”或?qū)懭肼窂?10以及讀取路徑120,來自主機設(shè)備102的數(shù)據(jù)可以沿寫入路徑110被寫入到NAND閃速存儲器設(shè)備101,并且通過主機設(shè)備102沿讀取路徑120可以從NAND閃速存儲器設(shè)備101讀取數(shù)據(jù)。寫入路徑110包括將以主機格式接收數(shù)據(jù)的主機接口111、用于將由主機接口111以主機格式接收的數(shù)據(jù)轉(zhuǎn)換成由NAND閃速存儲器設(shè)備101使用的格式的編碼器112、以及用于將編碼數(shù)據(jù)傳送到NAND閃速存儲器設(shè)備101的NAND閃速存儲器接口113。類似地,讀取路徑120包括以NAND閃速存儲器設(shè)備101使用的格式從NAND閃速存儲器設(shè)備101接收數(shù)據(jù)的NAND閃速接口121、用于將NAND閃速存儲器接口121以NAND閃速存儲器設(shè)備101使用的格式接收的數(shù)據(jù)轉(zhuǎn)換成由主機設(shè)備102使用的格式的解碼器122、以及用于將解碼的數(shù)據(jù)傳送到主機設(shè)備102的主機接口123??梢允俏⑻幚砥鞯奶幚砥?30控制寫入路徑110和讀取路徑120的各種組件。
編碼器112和解碼器122是互補的,即,編碼器112和解碼器122使用相同方案的互補版本來對數(shù)據(jù)進行編碼和解碼,使得從主機設(shè)備102接收并且由編碼器112編碼以存儲在NAND閃速存儲器設(shè)備101上的數(shù)據(jù)可以在從NAND閃速存儲器設(shè)備101讀回之后由解碼器122來解碼。通常并且在本文論述的實現(xiàn)中,這樣的編碼/解碼方案是糾錯碼(ECC),使得即使在寫入或讀取過程中的錯誤之后也可以重建數(shù)據(jù)。
圖2示出了根據(jù)本公開的ECC解碼器122的實現(xiàn)200的細節(jié)。ECC解碼器200包括第一多個n解碼器電路201和第二多個m解碼器電路電路202。解碼器電路201中的每一個可以實現(xiàn)比由解碼器電路202中的每一個實現(xiàn)的糾錯解碼方案相對更簡單和更快速的糾錯解碼方案,而解碼器電路202中的每一個可以實現(xiàn)比由解碼器電路201中的每一個實現(xiàn)的糾錯解碼方案相對更復(fù)雜和耗時的糾錯解碼方案。通常,與實現(xiàn)相對更復(fù)雜和耗時的糾錯解碼方案的解碼器電路202相比,可能存在更多的實現(xiàn)相對更簡單和更快速的糾錯解碼方案的解碼器電路201——即,通??梢灶A(yù)期n>m,但是可以存在m>n的實現(xiàn)。相對更簡單和更快速的糾錯解碼方案可以被稱為“水平1”,而相對更復(fù)雜和耗時的糾錯解碼方案可以被稱為“水平2”。
在如下所述的處理器130的控制下,通過開關(guān)電路204將在通道203上從NAND閃速接口121接收的數(shù)據(jù)引導(dǎo)到解碼器電路201或解碼器電路202。類似地,來自解碼器電路201或解碼器電路202的解碼數(shù)據(jù)在208處通過n:1復(fù)用器205、m:1復(fù)用器206和2:1復(fù)用器207被傳送到主機接口123,如下面進一步討論的。
處理器130經(jīng)由解碼任務(wù)控制塊210來如上所述控制開關(guān)電路204,解碼任務(wù)控制塊210包括解碼任務(wù)開始部分220和解碼任務(wù)完成部分230。
解碼任務(wù)控制塊210的解碼任務(wù)開始部分220包括用于每個數(shù)據(jù)通道203的解碼任務(wù)隊列221、222的相應(yīng)對。在每對解碼任務(wù)隊列221、222內(nèi),一個解碼任務(wù)隊列(例如,解碼任務(wù)隊列221)是正常優(yōu)先級任務(wù)隊列,而另一解碼任務(wù)隊列(例如,解碼任務(wù)隊列222)是高優(yōu)先級任務(wù)隊列。解碼器開始控制223根據(jù)解碼任務(wù)211如基于例如任務(wù)ID字段確定的被應(yīng)用于的數(shù)據(jù)通道203,將來自處理器130的進入解碼任務(wù)211分發(fā)到適當(dāng)?shù)慕獯a任務(wù)隊列對221、222。每對解碼任務(wù)隊列221、222饋送相應(yīng)的通道任務(wù)控制塊224。每個通道任務(wù)控制塊224將任務(wù)(至少包括任務(wù)ID和關(guān)于優(yōu)先級的數(shù)據(jù))傳遞到水平1解碼器開關(guān)控制塊225和水平2解碼器開關(guān)控制塊226,并且還控制數(shù)據(jù)進入解復(fù)用器227,以能夠?qū)⑦M入數(shù)據(jù)在通道203上路由到水平1解碼器開關(guān)228或水平2解碼器開關(guān)229。
處理器130經(jīng)由NAND閃速接口121向NAND閃速存儲器設(shè)備101發(fā)送與每個解碼任務(wù)211相對應(yīng)的讀取請求。每個讀取請求具有與其對應(yīng)的解碼任務(wù)211相同的任務(wù)ID。當(dāng)NAND閃速接口121從NAND閃速存儲器設(shè)備101返回相應(yīng)的數(shù)據(jù)時,在231處通過NAND閃速接口121向通道任務(wù)控制塊224發(fā)送解碼數(shù)據(jù)就緒信號,通過任務(wù)ID識別返回的數(shù)據(jù)。
擁有由所接收的任務(wù)ID標(biāo)識的任務(wù)的通道任務(wù)控制塊224中的一個(即,與數(shù)據(jù)已經(jīng)在其上被返回的通道203中的一個相關(guān)聯(lián)的通道任務(wù)控制塊224中的一個)將從與通道2103中的一個相關(guān)聯(lián)的隊列221或222(根據(jù)任務(wù)的優(yōu)先級)選擇所識別的任務(wù)。然后,通道任務(wù)控制塊224中的一個將任務(wù)傳遞到水平1解碼器開關(guān)控制塊225或水平2解碼器開關(guān)控制塊226,以激活水平1解碼器開關(guān)228或水平2解碼器開關(guān)229,來根據(jù)任務(wù)的優(yōu)先級將來自進入通道203的要被解碼的數(shù)據(jù)分別路由到n個水平1解碼器電路201或m個水平2解碼器電路202中可用的一個。同時,通道任務(wù)控制塊224中的一個還將激活在適當(dāng)通道203上的數(shù)據(jù)進入解復(fù)用器227中的一個,以將數(shù)據(jù)路由到水平1解碼器開關(guān)228或水平2解碼器開關(guān)229中的一個。
在數(shù)據(jù)被路由到n個水平1解碼器電路201或m個水平2解碼器電路202中的一個之后,數(shù)據(jù)將由n個水平1解碼器電路201或m水平2解碼器電路202中的一個適當(dāng)?shù)亟獯a。在解碼完成之后,視情況而定,水平1解碼器電路201或水平2解碼器電路202將向解碼任務(wù)控制塊210的解碼任務(wù)完成部分230發(fā)送完成信號。完成信號將由解碼器完成控制塊232接收,這將使得復(fù)用器205(在n個水平1解碼器電路201中的一個的情況下)或復(fù)用器206(在m個水平2解碼器電路202中的一個的情況下)選擇解碼器電路201或202中的正確的一個,并且還將使得復(fù)用器207(在n個水平1解碼器電路201中的一個的情況下)選擇復(fù)用器205,或者復(fù)用器206(在m個水平2解碼器電路202中的一個的情況下),以用于在208處輸出到主機接口123。
除了在208處控制復(fù)用器205、206、207以選擇正確的輸出之外,解碼任務(wù)控制塊210的解碼任務(wù)完成部分230還在解碼任務(wù)完成時通知處理器130。例如,對于任何已完成的任務(wù),解碼器完成控制塊232可以根據(jù)已完成的任務(wù)的優(yōu)先級將已完成的任務(wù)的任務(wù)ID輸出到正常優(yōu)先級完成狀態(tài)隊列233或高優(yōu)先級完成狀態(tài)隊列234。在236處,解碼器完成狀態(tài)控制塊235將完成指示從正常優(yōu)先級完成狀態(tài)隊列233和高優(yōu)先級完成狀態(tài)隊列234發(fā)送到處理器130。
與高優(yōu)先級任務(wù)相關(guān)的高優(yōu)先級完成隊列234中的任何已完成指示可以在正常優(yōu)先級完成狀態(tài)隊列233中的任何完成指示之前被發(fā)送。替代地,可以以某些預(yù)定順序從正常優(yōu)先級完成狀態(tài)隊列233和高優(yōu)先級完成狀態(tài)隊列234中兩者提取完成指示。例如,即使其他完成指示保持在高優(yōu)先級完成狀態(tài)隊列234中,在從高優(yōu)先級完成狀態(tài)隊列234提取了特定數(shù)目的完成指示之后,也可以從正常優(yōu)先級完成狀態(tài)隊列233中提取一個完成指示。作為另一替代,與高優(yōu)先級任務(wù)相關(guān)的高優(yōu)先級完成狀態(tài)隊列234中的任何完成指示可以在正常優(yōu)先級完成狀態(tài)隊列233中的任何完成指示之前被發(fā)送,除非完成指示已經(jīng)駐留在正常優(yōu)先級完成狀態(tài)隊列233達長于預(yù)定持續(xù)時間(其可以被認為將該完成指示的優(yōu)先級改變?yōu)椤案摺?。
返回考慮解碼任務(wù)控制塊210的解碼任務(wù)開始部分220,由通道任務(wù)控制塊224中的一個從其相應(yīng)的低優(yōu)先級任務(wù)隊列221和高優(yōu)先級任務(wù)隊列222中選擇任務(wù)可能比從正常優(yōu)先級完成狀態(tài)隊列233和高優(yōu)先級權(quán)完成狀態(tài)隊列234選擇完成指示更復(fù)雜,因為如上所述,不論其狀態(tài)如何,解碼任務(wù)都無法被選擇,直至與已經(jīng)從NAND閃速存儲器設(shè)備101返回任務(wù)相關(guān)聯(lián)的數(shù)據(jù)。在美國專利9,092,156中描述了一種用于在NAND閃速存儲器儲器控制器中處理具有不同優(yōu)先級的數(shù)據(jù)存取的方案,其全部內(nèi)容通過引用合并于此。然而,可以使用其他方案來優(yōu)先數(shù)據(jù)的讀取。
當(dāng)已經(jīng)讀取并返回數(shù)據(jù)時,NAND閃速接口121可以包括用于指示與數(shù)據(jù)相關(guān)聯(lián)的優(yōu)先級水平。如果多于一個的解碼任務(wù)仍然要被處理,則指示優(yōu)先級的信號將在選擇解碼任務(wù)中使用,其中與在正常優(yōu)先級任務(wù)隊列221中的正常優(yōu)先級解碼任務(wù)相比,優(yōu)選選擇在高優(yōu)先級任務(wù)隊列222中的較高優(yōu)先級解碼任務(wù)。
選擇的一部分涉及將數(shù)據(jù)路由到正確的解碼器。如果正在執(zhí)行的解碼任務(wù)使用水平1解碼器,則它將以指派的優(yōu)先級被發(fā)送到水平1解碼器開關(guān)控制塊225;否則它將被發(fā)送到水平2解碼器開關(guān)控制塊226。水平1解碼器開關(guān)控制塊225和水平2解碼器開關(guān)控制塊226可以被認為是仲裁塊。例如,指派給水平1解碼器開關(guān)控制塊225和水平2解碼器開關(guān)控制塊226中的每一個的任務(wù)可以根據(jù)加權(quán)循環(huán)仲裁來分配。
如上所述,每個水平1解碼器201可以實現(xiàn)相對更簡單和更快速的解碼方案,而每個水平2解碼器202可以實現(xiàn)相對更復(fù)雜和耗時的解碼方案。作為一般情況,水平1解碼方案可以用于正常優(yōu)先級任務(wù),而水平2解碼方案可以用于更高優(yōu)先級的任務(wù)。然而,在一些實現(xiàn)中,可以存在水平1解碼方案用于較高優(yōu)先級任務(wù)的情況,正如可以存在水平2解碼方案用于正常優(yōu)先級任務(wù)的情況。
例如,如果任務(wù)具有較高優(yōu)先級,因為它是使用水平1解碼方案的用于失敗的正常優(yōu)先級任務(wù)的讀取重試任務(wù),則讀取重試嘗試可以再次使用水平1解碼方案,而不管其較高的優(yōu)先級。作為另一示例,如果任務(wù)具有正常優(yōu)先級,并且不存在可用的水平1解碼器,但是存在未使用的水平2解碼器,則可以使用水平2解碼器,而不管該任務(wù)的正常優(yōu)先級。一個這樣的示例可以涉及不是時延關(guān)鍵的數(shù)據(jù),諸如垃圾收集任務(wù),其中水平1解碼失??;對第二次嘗試使用較慢的水平2解碼將使得水平1解碼器可用于時延關(guān)鍵的數(shù)據(jù)。可以存在水平1解碼方案用于較高優(yōu)先級任務(wù)或水平2解碼方案用于正常優(yōu)先級任務(wù)的其他情況。
ECC解碼器200的操作可以更好地參考圖3-5中的流程圖來理解。
圖3是示出根據(jù)實施例的過程300的實現(xiàn)的流程圖,通過該過程300用于每個數(shù)據(jù)通道203的解碼任務(wù)隊列221、222被填充。針對所討論的通道的新的解碼任務(wù)在301處被接收。在302處,確定在301處接收的任務(wù)是否是高優(yōu)先級任務(wù)。如果在301處接收的任務(wù)在302處被確定為高優(yōu)先級任務(wù),則在303處,將任務(wù)置于針對該通道的高優(yōu)先級任務(wù)隊列222中。然而,如果在302處確定所接收的任務(wù)不是高優(yōu)先級任務(wù),則在304處,將該任務(wù)置于針對該通道的正常優(yōu)先級任務(wù)隊列221中。在305處,確定是否存在針對該通道的任何其他解碼任務(wù)。如果在305處確定了不存在針對該通道的其他解碼任務(wù),則過程300結(jié)束。但是如果在305處確定存在針對該通道的其他解碼任務(wù),則過程300返回到301以接收新的解碼任務(wù)。
圖4是示出用于從正常優(yōu)先級任務(wù)隊列221或高優(yōu)先級任務(wù)隊列222中的一個選擇用于執(zhí)行的任務(wù)的過程400的實現(xiàn)的流程圖。在401處,從NAND閃速存儲器設(shè)備101接收NAND數(shù)據(jù)就緒信號(例如,在通道203中的一個上)指示數(shù)據(jù)已經(jīng)被返回(例如,響應(yīng)于請求)。在402處,確定已經(jīng)返回的數(shù)據(jù)是否屬于高優(yōu)先級任務(wù)(如上所述,任務(wù)ID可以與數(shù)據(jù)一起返回)。如果是,則在403處,從相應(yīng)通道203的高優(yōu)先級任務(wù)隊列222釋放相關(guān)聯(lián)的任務(wù)。否則,如果在402處確定已經(jīng)返回的數(shù)據(jù)不屬于高優(yōu)先級任務(wù),則在404處,從相應(yīng)通道203的正常優(yōu)先級任務(wù)隊列221釋放相關(guān)聯(lián)的任務(wù)。
如上所述,解碼器的選擇不是必須由任務(wù)的優(yōu)先級來確定。雖然大多數(shù)高優(yōu)先級任務(wù)將是水平2解碼器任務(wù),并且大多數(shù)正常優(yōu)先級任務(wù)將是水平1解碼器任務(wù),但是可能存在例外。因此,一旦已經(jīng)釋放了要執(zhí)行的任務(wù),在405處確定該任務(wù)是否是水平1解碼任務(wù)。如果是,則在406處將任務(wù)引導(dǎo)到水平1解碼器(經(jīng)由適當(dāng)?shù)耐ǖ廊蝿?wù)控制塊和適當(dāng)?shù)慕獯a器開關(guān)控制塊),并且過程400結(jié)束。否則,如果在405處確定了任務(wù)不是水平1解碼任務(wù),則在407處將任務(wù)引導(dǎo)到水平2解碼器,并且過程400結(jié)束。
從隊列221、222釋放任務(wù)的實際順序可以根據(jù)預(yù)定規(guī)則來控制。因此,如果數(shù)據(jù)被返回,但是與具有比另一任務(wù)低的優(yōu)先級的任務(wù)(即,正常優(yōu)先級任務(wù))相關(guān)聯(lián),則數(shù)據(jù)可以被保存在緩沖器(未示出)中直至任務(wù)準(zhǔn)備被執(zhí)行,針對另一任務(wù)已經(jīng)返回了數(shù)據(jù)。
根據(jù)一個可能的規(guī)則集合,高優(yōu)先級任務(wù)將始終優(yōu)先于正常優(yōu)先級任務(wù)。根據(jù)規(guī)則集合的變體,正常優(yōu)先級隊列中的過多停留時間(超過預(yù)定限制)使得任務(wù)被移動到高優(yōu)先級隊列中。根據(jù)另一可能的規(guī)則集合,對所執(zhí)行的每p個高優(yōu)先級任務(wù)執(zhí)行一個正常優(yōu)先級任務(wù),這使得在正常優(yōu)先級隊列中的過多停留時間不太可能??梢允褂眠@些規(guī)則集的組合,其中對于所執(zhí)行的每p個高優(yōu)先級任務(wù)執(zhí)行一個正常優(yōu)先級任務(wù),但是在正常優(yōu)先級隊列中的過多停留時間(這應(yīng)該是罕見的)使得任務(wù)從正常優(yōu)先級隊列被移動到高優(yōu)先級隊列??梢蚤_發(fā)其他規(guī)則集合。
圖5中示出了一個可能的這種規(guī)則集合的示例500。在501處,確定已經(jīng)執(zhí)行的高優(yōu)先級任務(wù)的數(shù)目(從上次重置計數(shù)器開始)是否超過閾值。如果不是,則在502處確定是否存在任何高優(yōu)先級任務(wù)在高優(yōu)先級任務(wù)隊列中等待。如果是,則在503處選擇高優(yōu)先級任務(wù)并將其發(fā)送到適當(dāng)?shù)慕獯a器(例如,參見圖4),其中所選擇的任務(wù)在504處執(zhí)行。如果在502處確定了不存在高優(yōu)先級任務(wù)在高優(yōu)先級任務(wù)隊列中等待,或在501處確定了已經(jīng)執(zhí)行的高優(yōu)先級任務(wù)的數(shù)目(從上次重置計數(shù)器開始)沒有超過閾值,則在505處確定是否存在任何正常優(yōu)先級任務(wù)在正常優(yōu)先級任務(wù)隊列中等待。如果是,則在506處選擇正常優(yōu)先級任務(wù)并將其發(fā)送到適當(dāng)?shù)慕獯a器(例如,參見圖4),其中在504處執(zhí)行所選擇的任務(wù)。
在504處已經(jīng)執(zhí)行了所選擇的任務(wù)之后(無論其是高優(yōu)先級任務(wù)還是正常優(yōu)先級任務(wù)),在507處,結(jié)果被發(fā)送到完成狀態(tài)隊列233、234以用于例如如圖6所示進行報告。在已經(jīng)報告結(jié)果之后或者如果在505處確定了不存在正常優(yōu)先級任務(wù)在正常優(yōu)先級任務(wù)隊列中等待,則在508處確定是否存在任何任務(wù)要被執(zhí)行。如果是,則流程返回到501。如果在508處確定了沒有任何任務(wù)要執(zhí)行,則過程500結(jié)束。
圖6是示出用于報告解碼任務(wù)的完成的一個可能過程600的實現(xiàn)的流程圖。在601處,確定是否存在任何未報告的已完成的高優(yōu)先級解碼任務(wù)(例如,在高優(yōu)先級完成狀態(tài)隊列234中)。如果是,則在602處報告下一個已完成的高優(yōu)先級任務(wù)的通知,并且流程返回到601以尋找更多未被報告的已完成的解碼任務(wù)。如果在601處確定了不存在未報告的已完成的高優(yōu)先級解碼任務(wù),則在603處確定是否存在任何未報告的已完成的正常優(yōu)先級解碼任務(wù)(例如,在正常優(yōu)先級完成狀態(tài)隊列233中)。如果是,則在604處報告下一個已完成的正常優(yōu)先級任務(wù)的通知,并且流程返回到601以尋找更多未報告的已完成的高優(yōu)先級解碼任務(wù)。如果在603處確定了不存在未報告的已完成的正常優(yōu)先級解碼任務(wù),則過程600結(jié)束。然而,應(yīng)當(dāng)注意,類似于上述用于從隊列221、222釋放任務(wù)的各種可能的規(guī)則集合的其他報告規(guī)則集合也可以應(yīng)用于任務(wù)完成的報告。
因此,可以看出,提供了解碼裝置和相應(yīng)的方法,其中可以通過即使可能發(fā)生需要重試操作的偶然的失敗也對大多數(shù)存儲器存取操作使用更簡單和更快的解碼方案,同時對較高優(yōu)先級的解碼任務(wù)使用更復(fù)雜和耗時的解碼方案,來最大化總體吞吐量。還可以看出,在“插隊”特征下,較高優(yōu)先級解碼任務(wù)可以在正常優(yōu)先級解碼任務(wù)之前被執(zhí)行,即使較高優(yōu)先級解碼任務(wù)稍晚啟動,但是如上所述,如果正常優(yōu)先級任務(wù)由于稍晚到達的較高優(yōu)先級任務(wù)而必須等待過長,則正常優(yōu)先級任務(wù)本身也可以提高其優(yōu)先級。
本發(fā)明的其他方面涉及下述條款中的一個或多個:
條款1:一種用于在NAND閃速存儲器控制器中執(zhí)行解碼任務(wù)的裝置,所述裝置包括:
用于對第一優(yōu)先級的解碼任務(wù)進行排隊的第一任務(wù)隊列;
用于對高于第一優(yōu)先級的第二優(yōu)先級的解碼任務(wù)進行排隊的第二任務(wù)隊列;以及
控制電路,該控制電路在接收到用于多個解碼任務(wù)的數(shù)據(jù)部分時,從第一任務(wù)隊列和所述第二任務(wù)隊列中釋放所述多個解碼任務(wù)中的相應(yīng)解碼任務(wù),以根據(jù)多個解碼任務(wù)中的相應(yīng)解碼任務(wù)的優(yōu)先級來對數(shù)據(jù)部分中的相應(yīng)部分進行操。
條款2:根據(jù)條款1所述的裝置,其中,NAND閃速存儲器控制器包括多個存儲器通道,并且其中,所述裝置進一步包括:
針對多個通道中的每個相應(yīng)通道的相應(yīng)第一任務(wù)隊列、以及針對多個通道中的每個相應(yīng)通道的相應(yīng)第二任務(wù)隊列;
至少一個第一解碼器,在第一糾錯碼解碼方案下進行操作;
至少一個第二解碼器,在第二糾錯碼解碼方案下進行操作,第二糾錯碼解碼方案在速度和復(fù)雜度中的一個或二者方面不同于第一糾錯碼解碼方案;以及
輸入切換電路,可控制地將每個數(shù)據(jù)通道連接到所述第一解碼器和所述第二解碼器中的一個;
其中,控制電路包括針對每個相應(yīng)通道的相應(yīng)通道任務(wù)控制塊,以用于從針對該相應(yīng)通道的相應(yīng)第一任務(wù)隊列和第二任務(wù)隊列中釋放解碼任務(wù),以控制輸入切換電路將針對相應(yīng)通道的相應(yīng)數(shù)據(jù)引導(dǎo)到第一解碼器和第二解碼器中的一個。
條款3:根據(jù)條款2所述的裝置,其中:至少一個第一解碼器包括多個第一解碼器;
至少一個第二解碼器包括多個第二解碼器;以及
輸入切換電路包括:
針對每個相應(yīng)通道的相應(yīng)解復(fù)用器,用于將相應(yīng)通道上的數(shù)據(jù)可選擇地引導(dǎo)到多個第一解碼器和多個第二解碼器中的一個,
第一開關(guān),用于將針對多個第一解碼器的解復(fù)用器輸出引導(dǎo)到多個第一解碼器中的可用第一解碼器,以及
第二開關(guān),用于將針對所述多個第二解碼器的解復(fù)用器的輸出引導(dǎo)到所述多個第二解碼器中的可用第二解碼器。
條款4:根據(jù)條款2所述的裝置,進一步包括:針對每個相應(yīng)通道的相應(yīng)緩沖器,用于保持在該相應(yīng)通道上接收的數(shù)據(jù),直至與所述數(shù)據(jù)相對應(yīng)的解碼任務(wù)從所述第一任務(wù)隊列和第二任務(wù)隊列中的一個釋放。
條款5:根據(jù)條款2所述的裝置,進一步包括:輸出切換電路,該輸出切換電路用于輸出第一解碼器和第二解碼器中的一個的輸出;其中:
控制電路包括解碼器完成控制電路,解碼器完成控制電路在從所述第一解碼器和所述第二解碼器中的一個接收到解碼器完成信號時,選擇所述第一解碼器和所述第二解碼器中的一個的輸出。
條款6:根據(jù)條款5所述的裝置,進一步包括:
用于對第一優(yōu)先級的已完成的解碼任務(wù)進行排隊的第一任務(wù)完成隊列;以及
用于對第二優(yōu)先級的已完成的解碼任務(wù)進行排隊的第二任務(wù)完成隊列;其中:
解碼器完成控制電路將每個已完成的解碼任務(wù)加載到第一任務(wù)完成隊列和第二任務(wù)完成隊列中的一個中;并且
控制電路進一步包括解碼器完成狀態(tài)控制電路,該解碼器完成狀態(tài)控制電路根據(jù)已完成的解碼任務(wù)的優(yōu)先級報告來自第一任務(wù)完成隊列和第二任務(wù)完成隊列中的已完成的解碼任務(wù)。。
條款7:根據(jù)條款1所述的裝置,進一步包括:緩沖器,該緩沖器用于保持從NAND閃速存儲器接收的數(shù)據(jù),直至與數(shù)據(jù)相對應(yīng)的解碼任務(wù)從第一任務(wù)隊列和第二任務(wù)隊列中的一個中被釋放。
條款8:根據(jù)條款1所述的裝置,進一步包括:
用于對第一優(yōu)先級的已完成的解碼任務(wù)進行排隊的第一任務(wù)完成隊列;以及
用于對第二優(yōu)先級的已完成的解碼任務(wù)進行排隊的第二任務(wù)完成隊列;其中:
所述控制電路根據(jù)所述已完成的解碼任務(wù)的優(yōu)先級來報告來自第一任務(wù)完成隊列和第二任務(wù)完成隊列中的已完成的解碼任務(wù)。
條款9:一種用于在NAND閃速存儲器控制器中執(zhí)行解碼任務(wù)的方法,所述方法包括:
在第一任務(wù)隊列中對第一優(yōu)先級的解碼任務(wù)進行排隊;
在第二任務(wù)隊列中對高于所述第一優(yōu)先級的第二優(yōu)先級的解碼任務(wù)進行排隊;以及
在接收到用于多個解碼任務(wù)的數(shù)據(jù)部分時,從第一任務(wù)隊列和第二任務(wù)隊列中釋放所述多個解碼任務(wù)中的相應(yīng)解碼任務(wù),以根據(jù)多個解碼任務(wù)中的相應(yīng)解碼任務(wù)的優(yōu)先級來對所述數(shù)據(jù)部分中的相應(yīng)部分進行操作。
條款10:根據(jù)條款9所述的方法,其中,NAND閃速存儲器控制器包括多個存儲器通道,并且其中:
對第一優(yōu)先級的解碼任務(wù)進行排隊包括:針對所述多個通道中的每個相應(yīng)通道來在相應(yīng)第一任務(wù)隊列中對解碼任務(wù)進行排隊;以及
對第二優(yōu)先級的解碼任務(wù)進行排隊包括:針對所述多個通道中的每個相應(yīng)通道來在相應(yīng)第二任務(wù)隊列中對解碼任務(wù)進行排隊;所述方法進一步包括:
將每個數(shù)據(jù)通道可控制地連接到第一解碼器和第二解碼器中的一個,第一解碼器在第一糾錯碼解碼方案下進行操作,第二解碼器在第二糾錯碼解碼方案下進行操作,第二糾錯碼解碼方案在速度和復(fù)雜度中的一個或二者方面不同于第一糾錯碼解碼方案。
條款11:根據(jù)條款10所述的方法,其中,可控制地連接包括:將每個數(shù)據(jù)通道可控制地連接到多個第一解碼器和多個第二解碼器中的一個,多個第一解碼器在所述第一糾錯碼解碼方案下進行操作,多個第二解碼器在所述第二糾錯碼解碼方案下進行操作。
條款12:根據(jù)條款10的方法,進一步包括:針對每個相應(yīng)通道,將在所述相應(yīng)通道上接收的數(shù)據(jù)保持在緩沖器中,直至與所述數(shù)據(jù)相對應(yīng)的解碼任務(wù)從所述第一任務(wù)隊列和第二任務(wù)隊列中釋放。
條款13:根據(jù)條款10所述的方法,進一步包括:
在第一任務(wù)完成隊列中對所述第一優(yōu)先級的已完成的解碼任務(wù)進行排隊;以及
在第二任務(wù)完成隊列中對第二優(yōu)先級的已完成的解碼任務(wù)進行排隊;以及
根據(jù)所述已完成的解碼任務(wù)的優(yōu)先級來報告來自所述第一任務(wù)完成隊列和所述第二任務(wù)完成隊列的已完成的解碼任務(wù)。
條款14:根據(jù)條款9所述的方法,進一步包括將從NAND閃速存儲器接收的數(shù)據(jù)保持在緩沖器中,直至與所述數(shù)據(jù)相對應(yīng)的解碼任務(wù)從所述第一任務(wù)隊列和所述第二任務(wù)隊列中的一個中被釋放。
條款15:根據(jù)條款9所述的方法,進一步包括:
在第一任務(wù)完成隊列中對第一優(yōu)先級的已完成的解碼任務(wù)進行排隊;以及
在第二任務(wù)完成隊列中對第二優(yōu)先級的已完成的解碼任務(wù)進行排隊;以及
根據(jù)已完成的解碼任務(wù)的優(yōu)先級來報告來自第一任務(wù)完成隊列和第二任務(wù)完成隊列中的已完成的解碼任務(wù)。
條款16:根據(jù)條款15所述的方法,其中,根據(jù)已完成的解碼任務(wù)的優(yōu)先級報告來自所述第一任務(wù)完成隊列和所述第二任務(wù)完成隊列中的已完成的解碼任務(wù)包括:在報告所述第一優(yōu)先級的任何已完成的解碼任務(wù)之前,報告所述第二優(yōu)先級的所有已完成的解碼任務(wù)。
條款17:進一步包括:在第一任務(wù)完成隊列中的已完成的解碼任務(wù)的排隊之后的預(yù)定持續(xù)時間之后,將已完成的解碼任務(wù)的優(yōu)先級水平從第一優(yōu)先級改變?yōu)樗龅诙?yōu)先級。
條款18:根據(jù)條款15所述的方法,其中,根據(jù)已完成的解碼任務(wù)的優(yōu)先級來報告來自第一任務(wù)完成隊列和第二任務(wù)完成隊列中的已完成的解碼任務(wù)包括:在報告來自第二任務(wù)完成隊列中的預(yù)定數(shù)目的任務(wù)之后,報告來自第一任務(wù)完成隊列的任務(wù)。
條款19:根據(jù)條款9所述的方法,其中,從第一任務(wù)隊列和第二任務(wù)隊列中釋放多個解碼任務(wù)中的相應(yīng)解碼任務(wù),以根據(jù)在多個解碼任務(wù)中的相應(yīng)解碼任務(wù)的優(yōu)先級來對數(shù)據(jù)部分中的相應(yīng)部分進行操作包括:在釋放第一優(yōu)先級的任何解碼任務(wù)之前,釋放第二優(yōu)先級的所有解碼任務(wù)。
條款20:根據(jù)條款19所述的方法,進一步包括:在對第一任務(wù)隊列中的解碼任務(wù)的進行排隊之后的預(yù)定持續(xù)時間之后,將解碼任務(wù)的優(yōu)先級水平從第一優(yōu)先級改變?yōu)樗龅诙?yōu)先級。
條款21:根據(jù)條款9所述的方法,其中,從第一任務(wù)隊列和第二任務(wù)隊列中釋放多個解碼任務(wù)中的相應(yīng)解碼任務(wù),以根據(jù)在多個解碼任務(wù)中的相應(yīng)解碼任務(wù)的優(yōu)先級來對數(shù)據(jù)部分中的相應(yīng)部分進行操作包括:在釋放來自第二任務(wù)隊列中的預(yù)定數(shù)目的任務(wù)之后,釋放來自所述第一任務(wù)隊列的任務(wù)。
如本文和所附權(quán)利要求書中所使用的,結(jié)構(gòu)“A和B中的一個”將意指“A或B”。
應(yīng)當(dāng)理解,前述僅是說明本發(fā)明的原理,并且本發(fā)明可以通過除了所描述的實施例之外的其他實施例來實踐,所述實施例是為了說明而不是限制的目的而呈現(xiàn)的,并且本發(fā)明僅由所附權(quán)利要求限定。