TW201729200A - 在nand閃速控制器中根據優先順序對解碼任務進行排隊 - Google Patents
在nand閃速控制器中根據優先順序對解碼任務進行排隊 Download PDFInfo
- Publication number
- TW201729200A TW201729200A TW105140915A TW105140915A TW201729200A TW 201729200 A TW201729200 A TW 201729200A TW 105140915 A TW105140915 A TW 105140915A TW 105140915 A TW105140915 A TW 105140915A TW 201729200 A TW201729200 A TW 201729200A
- Authority
- TW
- Taiwan
- Prior art keywords
- task
- decoding
- queue
- decoder
- tasks
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 51
- 238000012937 correction Methods 0.000 claims description 25
- 239000000463 material Substances 0.000 claims description 17
- 230000008685 targeting Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 7
- 238000012913 prioritisation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Abstract
根據NAND閃速控制器中的優先順序的解碼任務的排隊。一種用於在NAND5閃速記憶體控制器中執行解碼任務的裝置包括:用於對第一優先順序的解碼任務進行排隊的第一任務佇列;用於對高於第一優先順序的第二優先順序的解碼任務進行排隊的第二任務佇列;在接收到多個解碼任務的資料部分時,根據解碼任務的優先順序,從第一和第二任務佇列釋放相應的解碼任務以對資料的相應部分進行操作。
Description
本文要求2015年12月11日提交的未決的共同轉讓的美國臨時專利申請號61/266,193的權益,其全部內容通過引用合併於此。
本公開的主題的實現通常屬於用於在NAND閃速控制器中將解碼任務根據其優先順序指派給不同佇列的方法和裝置,包括適用於針對不同優先順序的任務的不同解碼器。
本文提供的背景技術描述是出於一般地呈現本公開的上下文的目的。本發明人的工作在該背景技術部分中描述工作的程度上以及在提交時可能沒有以其他方式限定為現有技術的描述的各方面,既不明示地不暗示地被承認是抵觸本公開的現有技術。
多電平單元(MLC)NAND閃速記憶體正變得普及,因為每單位資料存儲的成本相對于單電平單元(SLC)NAND閃速記憶體儲器的成本減小。然而,因為多於一比特的資訊被存儲在每個單元中,所以MLC NAND閃速記憶體還經歷比SLC NAND閃速記憶體更高的原始誤位元速率。
為了滿足可靠性要求,與在SLC NAND閃速記憶體設備中相
比,可以在MLC NAND閃速記憶體設備中使用更高級的糾錯方案。然而,諸如讀取重試解碼和軟判定解碼的高級糾錯方案的複雜性可以增加NAND閃速記憶體資料存取操作的時延。對於不同的應用,資料存取時延的影響將不同。例如,諸如主機資料讀取的一些關鍵操作可能需要相對低的記憶體存取時延,而諸如一些後臺操作(例如,用於垃圾收集的資料存取)的其他操作可能對時延的程度較不敏感。
一種用於在NAND閃速記憶體控制器中執行解碼任務的裝置,所述裝置包括:用於對第一優先順序的解碼任務進行排隊的第一任務佇列;用於對高於所述第一優先順序的第二優先順序的解碼任務進行排隊的第二任務佇列;以及控制電路,所述控制電路在接收到用於多個解碼任務的資料部分時,從所述第一任務佇列和所述第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據所述多個解碼任務中的相應解碼任務的優先順序來對所述資料部分中的相應部分進行操作。
在這種裝置中,其中,NAND閃速記憶體控制器包括多個記憶體通道,該裝置可以進一步包括用於所述多個通道中的每個相應通道的相應第一任務佇列、以及用於所述多個通道中的每個相應通道的相應第二任務佇列。至少一個第一解碼器在第一改錯碼解碼方案下進行操作,並且至少一個第二解碼器在第二改錯碼解碼方案下進行操作,該第二改錯碼解碼方案在速度和複雜度中的一個或二者方面不同於第一改錯碼解碼方案。輸入切換電路可控制地將每個資料通道連接到第一解碼器和第二解碼器中的一個。控制電路包括針對每個相應通道的相應通道任務控制塊,以用於
從針對該相應通道的相應第一任務佇列和第二任務佇列中釋放解碼任務,以控制所述輸入切換電路將用於相應通道的相應資料引導到第一解碼器和第二解碼器中的一個。
在這樣的實現中,至少一個第一解碼器包括多個第一解碼器,至少一個第二解碼器包括多個第二解碼器,並且輸入切換電路包括針對每個相應通道的相應解複用器,用於將所述相應通道上的資料可選擇地引導到多個第一解碼器和多個第二解碼器中的一個;第一開關,用於將針對多個第一解碼器的解複用器輸出引導到多個第一解碼器中的可用第一解碼器;以及第二開關,用於將針對多個第二解碼器的解複用器的輸出引導到多個第二解碼器中的可用解碼器。
這樣的實現還可以進一步包括針對每個相應通道的相應緩衝器,用於保持在該相應通道上接收的資料,直至與該資料相對應的解碼任務從第一任務佇列和第二任務佇列中的一個釋放。
這樣的實現可以進一步包括輸出切換電路,該輸出切換電路用於輸出第一解碼器和第二解碼器中的一個的輸出。在這種實現中,控制電路包括解碼器完成控制電路,該解碼器完成控制電路在從第一解碼器和第二解碼器中的一個接收到解碼器完成信號時,選擇第一解碼器和第二解碼器中的一個的輸出。這樣的實現可以進一步包括用於對第一優先順序的已完成的解碼任務進行排隊的第一任務完成佇列,以及用於對所述第二優先順序的已完成的解碼任務進行排隊的第二任務完成佇列,其中解碼器完成控制電路將每個已完成的解碼任務載入到第一任務完成佇列和第二任務完成佇列中的一個中,並且控制電路進一步包括解碼器完成狀態控制電
路,該解碼器完成狀態控制電路根據已完成的解碼任務的優先順序報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。
這樣的裝置可以進一步包括緩衝器,用於保持從NAND閃速記憶體接收的資料,直至與資料相對應的解碼任務從所述第一任務佇列和所述第二任務佇列中的一個中被釋放。
這樣的裝置可以進一步包括用於對第一優先順序的已完成的解碼任務進行排隊的第一任務完成佇列;以及用於對第二優先順序的已完成的解碼任務進行排隊的第二任務完成佇列,其中控制電路根據所述已完成的解碼任務的優先順序來報告來自所述第一任務完成佇列和所述第二任務完成佇列中的已完成的解碼任務。
一種用於在NAND閃速記憶體控制器中執行解碼任務的方法,可以包括:在第一任務佇列中對第一優先順序的解碼任務進行排隊;在第二任務佇列中對高於所述第一優先順序的第二優先順序的解碼任務進行排隊;以及在接收到用於多個解碼任務的資料部分時,從第一任務佇列和第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操作。
在這種方法的一個實現中,其中在NAND閃速記憶體控制器包括多個記憶體通道時,對第一優先順序的解碼任務進行排隊可以包括:針對多個通道中的每個相應通道來在相應第一任務佇列中對解碼任務進行排隊;以及對第二優先順序的解碼任務進行排隊可以包括:針對多個通道中的每個相應通道來在相應第二任務佇列中對解碼任務進行排隊。該方法
可以進一步包括將每個資料通道可控制地連接到第一解碼器和第二解碼器中的一個,第一解碼器在第一改錯碼解碼方案下進行操作,第二解碼器在第二改錯碼解碼方案下進行操作,第二改錯碼解碼方案在速度和複雜度中的一個或二者方面不同於第一改錯碼解碼方案。
在這樣的實現中,可控制地連接包括:將每個資料通道可控制地連接到多個第一解碼器和多個第二解碼器中的一個,多個第一解碼器在第一改錯碼解碼方案下進行操作,多個第二解碼器在第二改錯碼解碼方案下進行操作。
這樣的實現可以進一步包括:針對每個相應通道,將在相應通道上接收的資料保持在緩衝器中,直至與資料相對應的解碼任務從第一任務佇列和第二任務佇列中釋放。
這樣的實現還可以進一步包括:在第一任務完成佇列中對第一優先順序的已完成的解碼任務進行排隊;以及在第二任務完成佇列中對第二優先順序的已完成的解碼任務進行排隊;以及根據已完成的解碼任務的優先順序來報告來自所述第一任務完成佇列和所述第二任務完成佇列的完成的解碼任務。
這樣的方法還可以進一步包括將從NAND閃速記憶體接收的資料保持在緩衝器中,直至與資料相對應的解碼任務從第一任務佇列和第二任務佇列中的一個中被釋放。
這種方法的實現可以進一步包括:在第一任務完成佇列中對第一優先順序的完成的解碼任務進行排隊,在第二任務完成佇列中對第二優先順序的完成的解碼任務進行排隊,以及根據已完成的解碼任務的優先
順序來報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。
在這樣的實現中,根據已完成的解碼任務的優先順序報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務包括:在報告第一優先順序的任何已完成的解碼任務之前,報告第二優先順序的所有已完成的解碼任務。該實現可以進一步包括在第一任務完成佇列中的已完成的解碼任務的排隊之後的預定持續時間之後,將已完成的解碼任務的優先順序水準從第一優先順序改變為第二優先順序。
在這樣的實現中,根據已完成的解碼任務的優先順序來報告第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務可以包括:在報告來自所述第二任務完成佇列中的預定數目的任務之後,報告來自第一任務完成佇列的任務。
在這樣的方法的實現中,從第一任務佇列和第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據在所述多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操作可以包括:在釋放所述第一優先順序的任何解碼任務之前,釋放第二優先順序的所有解碼任務。
這樣的實現可以進一步包括在所述第一任務佇列中的解碼任務的排隊之後的預定持續時間之後,將解碼任務的優先順序水準從第一優先順序改變為所述第二優先順序。
在這樣的方法中,從第一任務佇列和第二任務佇列中釋放多個解碼任務中的相應解碼任務,以根據在多個解碼任務中的相應解碼任務
的優先順序來對資料部分中的相應部分進行操作可以包括:在來自第二任務佇列中的預定數目的任務的釋放之後,釋放來自所述第一任務佇列的任務。
130‧‧‧處理器
102‧‧‧主機
111‧‧‧主機介面
112‧‧‧ECC編碼器
113‧‧‧NAND閃速介面
123‧‧‧主機介面
122‧‧‧ECC解碼器
121‧‧‧NAND閃速介面
100‧‧‧NAND閃速控制器
101‧‧‧NAND閃速記憶體
235‧‧‧解碼器完成狀態控制
233‧‧‧正常優先順序完成狀態佇列
234‧‧‧高優先順序完成狀態佇列
232‧‧‧解碼器完成控制
223‧‧‧解碼器開始控制
224‧‧‧通道任務控制
225‧‧‧水準1解碼器開關控制
226‧‧‧水準2解碼器開關控制
201‧‧‧水準1解碼器
202‧‧‧水準2解碼器
在結合附圖考慮以下詳細描述之後,本公開的其他特徵、其性質和各種優點將是顯而易見的,在附圖中,相同的附圖標記在全文中表示相同的部件,並且其中:圖1示出可以使用本公開的實現的NAND閃速記憶體控制器的框圖;圖2示出根據可以在NAND閃速控制器中使用的本公開的主題的實現的改錯碼解碼器的結構的框圖;圖3是根據本公開的主題的實現的過程的流程圖,通過其可以填充圖2的解碼器中的針對每個資料通道的解碼任務佇列;圖4是示出根據本公開的主題的實現的過程的流程圖,用於從正常優先順序任務佇列或高優先順序任務佇列中的一個選擇用於執行的任務;圖5是示出根據本公開的主題的實現的用於在正常優先順序解碼任務和高優先順序解碼任務之間選擇規則集合的操作的流程圖;以及圖6是示出根據本公開的主題的實現的用於報告解碼任務的完成的過程的流程圖。
如上所述,MLC NAND閃速記憶體可能經歷比SLC NAND閃速記憶體更高的原始誤位元速率。因此,為了滿足可靠性要求,與在SLC NAND閃速記憶體設備中相比,更多高級糾錯方案可以在MLC NAND閃速
記憶體設備中使用。然而,諸如讀取重試解碼和軟判定解碼的高級糾錯方案的複雜性可以增加NAND閃速記憶體資料存取操作的時延。
因為如上所述的資料存取時延的影響對於不同應用而不同,所以根據本公開的實現,可以不同地處理不同優先順序的記憶體存取操作。另外,可以在使用更複雜且耗時的解碼方案以及使用更簡單和更快速的解碼方案之間實現折衷,更複雜且耗時的解碼方案更可能在第一嘗試就成功,更簡單和更快速的解碼方案可能偶然失敗且需要多於一次的嘗試。
總而言之,即使可能發生需要重試操作的偶然故障,也可以通過對大多數記憶體存取操作使用更簡單和更快速的解碼方案,同時對更高優先順序的解碼任務使用更複雜和耗時的解碼方案,來最大化總體輸送量。
此外,在“插隊”特徵下,即使較高優先順序解碼任務稍後啟動,也可以在正常優先順序解碼任務之前執行較高優先順序解碼任務。
可以參考圖1-6來理解本公開的主題的實現。
圖1示出了在一個或多個NAND閃速記憶體設備101和主機設備102之間的NAND閃速記憶體控制器100。NAND閃速控制器100包括“程式設計”或寫入路徑110以及讀取路徑120,來自主機設備102的資料可以沿寫入路徑110被寫入到NAND閃速記憶體設備101,並且通過主機設備102沿讀取路徑120可以從NAND閃速記憶體設備101讀取資料。寫入路徑110包括將以主機格式接收資料的主機介面111、用於將由主機介面111以主機格式接收的資料轉換成由NAND閃速記憶體設備101使用的格式的編碼器112、以及用於將編碼資料傳送到NAND閃速記憶體設備101的NAND閃速記
憶體介面113。類似地,讀取路徑120包括以NAND閃速記憶體設備101使用的格式從NAND閃速記憶體設備101接收資料的NAND閃速介面121、用於將NAND閃速記憶體介面121以NAND閃速記憶體設備101使用的格式接收的資料轉換成由主機設備102使用的格式的解碼器122、以及用於將解碼的資料傳送到主機設備102的主機介面123。可以是微處理器的處理器130控制寫入路徑110和讀取路徑120的各種元件。
編碼器112和解碼器122是互補的,即,編碼器112和解碼器122使用相同方案的互補版本來對資料進行編碼和解碼,使得從主機設備102接收並且由編碼器112編碼以存儲在NAND閃速記憶體設備101上的資料可以在從NAND閃速記憶體設備101讀回之後由解碼器122來解碼。通常並且在本文論述的實現中,這樣的編碼/解碼方案是改錯碼(ECC),使得即使在寫入或讀取過程中的錯誤之後也可以重建資料。
圖2示出了根據本公開的ECC解碼器122的實現200的細節。ECC解碼器200包括第一多個n解碼器電路201和第二多個m解碼器電路電路202。解碼器電路201中的每一個可以實現比由解碼器電路202中的每一個實現的糾錯解碼方案相對更簡單和更快速的糾錯解碼方案,而解碼器電路202中的每一個可以實現比由解碼器電路201中的每一個實現的糾錯解碼方案相對更複雜和耗時的糾錯解碼方案。通常,與實現相對更複雜和耗時的糾錯解碼方案的解碼器電路202相比,可能存在更多的實現相對更簡單和更快速的糾錯解碼方案的解碼器電路201──即,通常可以預期n>m,但是可以存在m>n的實現。相對更簡單和更快速的糾錯解碼方案可以被稱為“水準1”,而相對更複雜和耗時的糾錯解碼方案可以被稱為“水準2”。
在如下所述的處理器130的控制下,通過開關電路204將在通道203上從NAND閃速介面121接收的資料引導到解碼器電路201或解碼器電路202。類似地,來自解碼器電路201或解碼器電路202的解碼資料在208處通過n:1複用器205、m:1複用器206和2:1複用器207被傳送到主機介面123,如下面進一步討論的。
處理器130經由解碼任務控制塊210來如上所述控制開關電路204,解碼任務控制塊210包括解碼任務開始部分220和解碼任務完成部分230。
解碼任務控制塊210的解碼任務開始部分220包括用於每個資料通道203的解碼任務佇列221、222的相應對。在每對解碼任務佇列221、222內,一個解碼任務佇列(例如,解碼任務佇列221)是正常優先順序任務佇列,而另一解碼任務佇列(例如,解碼任務佇列222)是高優先順序任務佇列。解碼器開始控制223根據解碼任務211如基於例如任務ID欄位確定的被應用於的資料通道203,將來自處理器130的進入解碼任務211分發到適當的解碼任務佇列對221、222。每對解碼任務佇列221、222饋送相應的通道任務控制塊224。每個通道任務控制塊224將任務(至少包括任務ID和關於優先順序的資料)傳遞到水準1解碼器開關控制塊225和水準2解碼器開關控制塊226,並且還控制資料進入解複用器227,以能夠將進入資料在通道203上路由到水準1解碼器開關228或水準2解碼器開關229。
處理器130經由NAND閃速介面121向NAND閃速記憶體設備101發送與每個解碼任務211相對應的讀取請求。每個讀取請求具有與其對應的解碼任務211相同的任務ID。當NAND閃速介面121從NAND閃速記憶
體設備101返回相應的資料時,在231處通過NAND閃速介面121向通道任務控制塊224發送解碼資料就緒信號,通過任務ID識別返回的資料。
擁有由所接收的任務ID標識的任務的通道任務控制塊224中的一個(即,與資料已經在其上被返回的通道203中的一個相關聯的通道任務控制塊224中的一個)將從與通道2103中的一個相關聯的佇列221或222(根據任務的優先順序)選擇所識別的任務。然後,通道任務控制塊224中的一個將任務傳遞到水準1解碼器開關控制塊225或水準2解碼器開關控制塊226,以啟動水準1解碼器開關228或水準2解碼器開關229,來根據任務的優先順序將來自進入通道203的要被解碼的資料分別路由到n個水準1解碼器電路201或m個水準2解碼器電路202中可用的一個。同時,通道任務控制塊224中的一個還將啟動在適當通道203上的資料進入解複用器227中的一個,以將資料路由到水準1解碼器開關228或水準2解碼器開關229中的一個。
在資料被路由到n個水準1解碼器電路201或m個水準2解碼器電路202中的一個之後,資料將由n個水準1解碼器電路201或m水準2解碼器電路202中的一個適當地解碼。在解碼完成之後,視情況而定,水準1解碼器電路201或水準2解碼器電路202將向解碼任務控制塊210的解碼任務完成部分230發送完成信號。完成信號將由解碼器完成控制塊232接收,這將使得複用器205(在n個水準1解碼器電路201中的一個的情況下)或複用器206(在m個水準2解碼器電路202中的一個的情況下)選擇解碼器電路201或202中的正確的一個,並且還將使得複用器207(在n個水準1解碼器電路201中的一個的情況下)選擇複用器205,或者複用器206(在m個水準2解碼器電路202中的一個的情況下),以用於在208處輸出到主機介面123。
除了在208處控制複用器205、206、207以選擇正確的輸出之外,解碼任務控制塊210的解碼任務完成部分230還在解碼任務完成時通知處理器130。例如,對於任何已完成的任務,解碼器完成控制塊232可以根據已完成的任務的優先順序將已完成的任務的任務ID輸出到正常優先順序完成狀態佇列233或高優先順序完成狀態佇列234。在236處,解碼器完成狀態控制塊235將完成指示從正常優先順序完成狀態佇列233和高優先順序完成狀態佇列234發送到處理器130。
與高優先順序任務相關的高優先順序完成佇列234中的任何已完成指示可以在正常優先順序完成狀態佇列233中的任何完成指示之前被發送。替代地,可以以某些預定順序從正常優先順序完成狀態佇列233和高優先順序完成狀態佇列234中兩者提取完成指示。例如,即使其他完成指示保持在高優先順序完成狀態佇列234中,在從高優先順序完成狀態佇列234提取了特定數目的完成指示之後,也可以從正常優先順序完成狀態佇列233中提取一個完成指示。作為另一替代,與高優先順序任務相關的高優先順序完成狀態佇列234中的任何完成指示可以在正常優先順序完成狀態佇列233中的任何完成指示之前被發送,除非完成指示已經駐留在正常優先順序完成狀態佇列233達長於預定持續時間(其可以被認為將該完成指示的優先順序改變為“高”)。
返回考慮解碼任務控制塊210的解碼任務開始部分220,由通道任務控制塊224中的一個從其相應的低優先順序任務佇列221和高優先順序任務佇列222中選擇任務可能比從正常優先順序完成狀態佇列233和高優先順序權完成狀態佇列234選擇完成指示更複雜,因為如上所述,不論其狀
態如何,解碼任務都無法被選擇,直至與已經從NAND閃速記憶體設備101返回任務相關聯的資料。在美國專利9,092,156中描述了一種用於在NAND閃速記憶體儲器控制器中處理具有不同優先順序的資料存取的方案,其全部內容通過引用合併於此。然而,可以使用其他方案來優先資料的讀取。
當已經讀取並返回資料時,NAND閃速介面121可以包括用於指示與資料相關聯的優先順序水準。如果多於一個的解碼任務仍然要被處理,則指示優先順序的信號將在選擇解碼任務中使用,其中與在正常優先順序任務佇列221中的正常優先順序解碼任務相比,優選選擇在高優先順序任務佇列222中的較高優先順序解碼任務。
選擇的一部分涉及將資料路由到正確的解碼器。如果正在執行的解碼任務使用水準1解碼器,則它將以指派的優先順序被發送到水準1解碼器開關控制塊225;否則它將被發送到水準2解碼器開關控制塊226。水準1解碼器開關控制塊225和水準2解碼器開關控制塊226可以被認為是仲裁塊。例如,指派給水準1解碼器開關控制塊225和水準2解碼器開關控制塊226中的每一個的任務可以根據加權迴圈仲裁來分配。
如上所述,每個水準1解碼器201可以實現相對更簡單和更快速的解碼方案,而每個水準2解碼器202可以實現相對更複雜和耗時的解碼方案。作為一般情況,水準1解碼方案可以用於正常優先順序任務,而水準2解碼方案可以用於更高優先順序的任務。然而,在一些實現中,可以存在水準1解碼方案用於較高優先順序任務的情況,正如可以存在水準2解碼方案用於正常優先順序任務的情況。
例如,如果任務具有較高優先順序,因為它是使用水準1解
碼方案的用於失敗的正常優先順序任務的讀取重試任務,則讀取重試嘗試可以再次使用水準1解碼方案,而不管其較高的優先順序。作為另一示例,如果任務具有正常優先順序,並且不存在可用的水準1解碼器,但是存在未使用的水準2解碼器,則可以使用水準2解碼器,而不管該任務的正常優先順序。一個這樣的示例可以涉及不是時延關鍵的資料,諸如垃圾收集任務,其中水準1解碼失敗;對第二次嘗試使用較慢的水準2解碼將使得水準1解碼器可用于時延關鍵的資料。可以存在水準1解碼方案用於較高優先順序任務或水準2解碼方案用於正常優先順序任務的其他情況。
ECC解碼器200的操作可以更好地參考圖3-5中的流程圖來理解。
圖3是示出根據實施例的過程300的實現的流程圖,通過該過程300用於每個資料通道203的解碼任務佇列221、222被填充。針對所討論的通道的新的解碼任務在301處被接收。在302處,確定在301處接收的任務是否是高優先順序任務。如果在301處接收的任務在302處被確定為高優先順序任務,則在303處,將任務置於針對該通道的高優先順序任務佇列222中。然而,如果在302處確定所接收的任務不是高優先順序任務,則在304處,將該任務置於針對該通道的正常優先順序任務佇列221中。在305處,確定是否存在針對該通道的任何其他解碼任務。如果在305處確定了不存在針對該通道的其他解碼任務,則過程300結束。但是如果在305處確定存在針對該通道的其他解碼任務,則過程300返回到301以接收新的解碼任務。
圖4是示出用於從正常優先順序任務佇列221或高優先順序任務佇列222中的一個選擇用於執行的任務的過程400的實現的流程圖。在
401處,從NAND閃速記憶體設備101接收NAND資料就緒信號(例如,在通道203中的一個上)指示資料已經被返回(例如,回應於請求)。在402處,確定已經返回的資料是否屬於高優先順序任務(如上所述,任務ID可以與資料一起返回)。如果是,則在403處,從相應通道203的高優先順序任務佇列222釋放相關聯的任務。否則,如果在402處確定已經返回的資料不屬於高優先順序任務,則在404處,從相應通道203的正常優先順序任務佇列221釋放相關聯的任務。
如上所述,解碼器的選擇不是必須由任務的優先順序來確定。雖然大多數高優先順序任務將是水準2解碼器任務,並且大多數正常優先順序任務將是水準1解碼器任務,但是可能存在例外。因此,一旦已經釋放了要執行的任務,在405處確定該任務是否是水準1解碼任務。如果是,則在406處將任務引導到水準1解碼器(經由適當的通道任務控制塊和適當的解碼器開關控制塊),並且過程400結束。否則,如果在405處確定了任務不是水準1解碼任務,則在407處將任務引導到水準2解碼器,並且過程400結束。
從佇列221、222釋放任務的實際順序可以根據預定規則來控制。因此,如果資料被返回,但是與具有比另一任務低的優先順序的任務(即,正常優先順序任務)相關聯,則資料可以被保存在緩衝器(未示出)中直至任務準備被執行,針對另一任務已經返回了資料。
根據一個可能的規則集合,高優先順序任務將始終優先于正常優先順序任務。根據規則集合的變體,正常優先順序佇列中的過多停留時間(超過預定限制)使得任務被移動到高優先順序佇列中。根據另一可
能的規則集合,對所執行的每p個高優先順序任務執行一個正常優先順序任務,這使得在正常優先順序佇列中的過多停留時間不太可能。可以使用這些規則集的組合,其中對於所執行的每p個高優先順序任務執行一個正常優先順序任務,但是在正常優先順序佇列中的過多停留時間(這應該是罕見的)使得任務從正常優先順序佇列被移動到高優先順序佇列。可以開發其他規則集合。
圖5中示出了一個可能的這種規則集合的示例500。在501處,確定已經執行的高優先順序任務的數目(從上次重置計數器開始)是否超過閾值。如果不是,則在502處確定是否存在任何高優先順序任務在高優先順序任務佇列中等待。如果是,則在503處選擇高優先順序任務並將其發送到適當的解碼器(例如,參見圖4),其中所選擇的任務在504處執行。如果在502處確定了不存在高優先順序任務在高優先順序任務佇列中等待,或在501處確定了已經執行的高優先順序任務的數目(從上次重置計數器開始)沒有超過閾值,則在505處確定是否存在任何正常優先順序任務在正常優先順序任務佇列中等待。如果是,則在506處選擇正常優先順序任務並將其發送到適當的解碼器(例如,參見圖4),其中在504處執行所選擇的任務。
在504處已經執行了所選擇的任務之後(無論其是高優先順序任務還是正常優先順序任務),在507處,結果被發送到完成狀態佇列233、234以用於例如如圖6所示進行報告。在已經報告結果之後或者如果在505處確定了不存在正常優先順序任務在正常優先順序任務佇列中等待,則在508處確定是否存在任何任務要被執行。如果是,則流程返回到501。如
果在508處確定了沒有任何任務要執行,則過程500結束。
圖6是示出用於報告解碼任務的完成的一個可能過程600的實現的流程圖。在601處,確定是否存在任何未報告的已完成的高優先順序解碼任務(例如,在高優先順序完成狀態佇列234中)。如果是,則在602處報告下一個已完成的高優先順序任務的通知,並且流程返回到601以尋找更多未被報告的已完成的解碼任務。如果在601處確定了不存在未報告的已完成的高優先順序解碼任務,則在603處確定是否存在任何未報告的已完成的正常優先順序解碼任務(例如,在正常優先順序完成狀態佇列233中)。如果是,則在604處報告下一個已完成的正常優先順序任務的通知,並且流程返回到601以尋找更多未報告的已完成的高優先順序解碼任務。如果在603處確定了不存在未報告的已完成的正常優先順序解碼任務,則過程600結束。然而,應當注意,類似於上述用於從佇列221、222釋放任務的各種可能的規則集合的其他報告規則集合也可以應用於任務完成的報告。
因此,可以看出,提供了解碼裝置和相應的方法,其中可以通過即使可能發生需要重試操作的偶然的失敗也對大多數記憶體存取操作使用更簡單和更快的解碼方案,同時對較高優先順序的解碼任務使用更複雜和耗時的解碼方案,來最大化總體輸送量。還可以看出,在“插隊”特徵下,較高優先順序解碼任務可以在正常優先順序解碼任務之前被執行,即使較高優先順序解碼任務稍晚啟動,但是如上所述,如果正常優先順序任務由於稍晚到達的較高優先順序任務而必須等待過長,則正常優先順序任務本身也可以提高其優先順序。
本發明的其他方面涉及下述條款中的一個或多個:
條款1:一種用於在NAND閃速記憶體控制器中執行解碼任務的裝置,所述裝置包括:用於對第一優先順序的解碼任務進行排隊的第一任務佇列;用於對高於第一優先順序的第二優先順序的解碼任務進行排隊的第二任務佇列;以及控制電路,該控制電路在接收到用於多個解碼任務的資料部分時,從第一任務佇列和所述第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操。
條款2:根據條款1所述的裝置,其中,NAND閃速記憶體控制器包括多個記憶體通道,並且其中,所述裝置進一步包括:針對多個通道中的每個相應通道的相應第一任務佇列、以及針對多個通道中的每個相應通道的相應第二任務佇列;至少一個第一解碼器,在第一改錯碼解碼方案下進行操作;至少一個第二解碼器,在第二改錯碼解碼方案下進行操作,第二改錯碼解碼方案在速度和複雜度中的一個或二者方面不同於第一改錯碼解碼方案;以及輸入切換電路,可控制地將每個資料通道連接到所述第一解碼器和所述第二解碼器中的一個;其中,控制電路包括針對每個相應通道的相應通道任務控制塊,以用於從針對該相應通道的相應第一任務佇列和第二任務佇列中釋放解碼任務,以控制輸入切換電路將針對相應通道的相應資料引導到第一解
碼器和第二解碼器中的一個。
條款3:根據條款2所述的裝置,其中:至少一個第一解碼器包括多個第一解碼器;至少一個第二解碼器包括多個第二解碼器;以及輸入切換電路包括:針對每個相應通道的相應解複用器,用於將相應通道上的資料可選擇地引導到多個第一解碼器和多個第二解碼器中的一個,第一開關,用於將針對多個第一解碼器的解複用器輸出引導到多個第一解碼器中的可用第一解碼器,以及第二開關,用於將針對所述多個第二解碼器的解複用器的輸出引導到所述多個第二解碼器中的可用第二解碼器。
條款4:根據條款2所述的裝置,進一步包括:針對每個相應通道的相應緩衝器,用於保持在該相應通道上接收的資料,直至與所述資料相對應的解碼任務從所述第一任務佇列和第二任務佇列中的一個釋放。
條款5:根據條款2所述的裝置,進一步包括:輸出切換電路,該輸出切換電路用於輸出第一解碼器和第二解碼器中的一個的輸出;其中:控制電路包括解碼器完成控制電路,解碼器完成控制電路在從所述第一解碼器和所述第二解碼器中的一個接收到解碼器完成信號時,選擇所述第一解碼器和所述第二解碼器中的一個的輸出。
條款6:根據條款5所述的裝置,進一步包括:用於對第一優先順序的已完成的解碼任務進行排隊的第一任務完成佇列;以及
用於對第二優先順序的已完成的解碼任務進行排隊的第二任務完成佇列;其中:解碼器完成控制電路將每個已完成的解碼任務載入到第一任務完成佇列和第二任務完成佇列中的一個中;並且控制電路進一步包括解碼器完成狀態控制電路,該解碼器完成狀態控制電路根據已完成的解碼任務的優先順序報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。
條款7:根據條款1所述的裝置,進一步包括:緩衝器,該緩衝器用於保持從NAND閃速記憶體接收的資料,直至與資料相對應的解碼任務從第一任務佇列和第二任務佇列中的一個中被釋放。
條款8:根據條款1所述的裝置,進一步包括:用於對第一優先順序的已完成的解碼任務進行排隊的第一任務完成佇列;以及用於對第二優先順序的已完成的解碼任務進行排隊的第二任務完成佇列;其中:所述控制電路根據所述已完成的解碼任務的優先順序來報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。
條款9:一種用於在NAND閃速記憶體控制器中執行解碼任務的方法,所述方法包括:在第一任務佇列中對第一優先順序的解碼任務進行排隊;在第二任務佇列中對高於所述第一優先順序的第二優先順序的解碼任務進行排隊;以及
在接收到用於多個解碼任務的資料部分時,從第一任務佇列和第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據多個解碼任務中的相應解碼任務的優先順序來對所述資料部分中的相應部分進行操作。
條款10:根據條款9所述的方法,其中,NAND閃速記憶體控制器包括多個記憶體通道,並且其中:對第一優先順序的解碼任務進行排隊包括:針對所述多個通道中的每個相應通道來在相應第一任務佇列中對解碼任務進行排隊;以及對第二優先順序的解碼任務進行排隊包括:針對所述多個通道中的每個相應通道來在相應第二任務佇列中對解碼任務進行排隊;所述方法進一步包括:將每個資料通道可控制地連接到第一解碼器和第二解碼器中的一個,第一解碼器在第一改錯碼解碼方案下進行操作,第二解碼器在第二改錯碼解碼方案下進行操作,第二改錯碼解碼方案在速度和複雜度中的一個或二者方面不同於第一改錯碼解碼方案。
條款11:根據條款10所述的方法,其中,可控制地連接包括:將每個資料通道可控制地連接到多個第一解碼器和多個第二解碼器中的一個,多個第一解碼器在所述第一改錯碼解碼方案下進行操作,多個第二解碼器在所述第二改錯碼解碼方案下進行操作。
條款12:根據條款10的方法,進一步包括:針對每個相應通道,將在所述相應通道上接收的資料保持在緩衝器中,直至與所述資料相對應的解碼任務從所述第一任務佇列和第二任務佇列中釋放。
條款13:根據條款10所述的方法,進一步包括:在第一任務完成佇列中對所述第一優先順序的已完成的解碼任務進行排隊;以及在第二任務完成佇列中對第二優先順序的已完成的解碼任務進行排隊;以及根據所述已完成的解碼任務的優先順序來報告來自所述第一任務完成佇列和所述第二任務完成佇列的已完成的解碼任務。
條款14:根據條款9所述的方法,進一步包括將從NAND閃速記憶體接收的資料保持在緩衝器中,直至與所述資料相對應的解碼任務從所述第一任務佇列和所述第二任務佇列中的一個中被釋放。
條款15:根據條款9所述的方法,進一步包括:在第一任務完成佇列中對第一優先順序的已完成的解碼任務進行排隊;以及在第二任務完成佇列中對第二優先順序的已完成的解碼任務進行排隊;以及根據已完成的解碼任務的優先順序來報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。
條款16:根據條款15所述的方法,其中,根據已完成的解碼任務的優先順序報告來自所述第一任務完成佇列和所述第二任務完成佇列中的已完成的解碼任務包括:在報告所述第一優先順序的任何已完成的解碼任務之前,報告所述第二優先順序的所有已完成的解碼任務。
條款17:進一步包括:在第一任務完成佇列中的已完成的解
碼任務的排隊之後的預定持續時間之後,將已完成的解碼任務的優先順序水準從第一優先順序改變為所述第二優先順序。
條款18:根據條款15所述的方法,其中,根據已完成的解碼任務的優先順序來報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務包括:在報告來自第二任務完成佇列中的預定數目的任務之後,報告來自第一任務完成佇列的任務。
條款19:根據條款9所述的方法,其中,從第一任務佇列和第二任務佇列中釋放多個解碼任務中的相應解碼任務,以根據在多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操作包括:在釋放第一優先順序的任何解碼任務之前,釋放第二優先順序的所有解碼任務。
條款20:根據條款19所述的方法,進一步包括:在對第一任務佇列中的解碼任務的進行排隊之後的預定持續時間之後,將解碼任務的優先順序水準從第一優先順序改變為所述第二優先順序。
條款21:根據條款9所述的方法,其中,從第一任務佇列和第二任務佇列中釋放多個解碼任務中的相應解碼任務,以根據在多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操作包括:在釋放來自第二任務佇列中的預定數目的任務之後,釋放來自所述第一任務佇列的任務。
如本文和所附申請專利範圍中所使用的,結構“A和B中的一個”將意指“A或B”。
應當理解,前述僅是說明本發明的原理,並且本發明可以通
過除了所描述的實施例之外的其他實施例來實踐,所述實施例是為了說明而不是限制的目的而呈現的,並且本發明僅由所附申請專利範圍限定。
130‧‧‧處理器
102‧‧‧主機
111‧‧‧主機介面
112‧‧‧ECC編碼器
113‧‧‧NAND閃速介面
123‧‧‧主機介面
122‧‧‧ECC解碼器
121‧‧‧NAND閃速介面
100‧‧‧NAND閃速控制器
101‧‧‧NAND閃速記憶體
Claims (21)
- 一種用於在NAND閃速記憶體控制器中執行解碼任務的裝置,所述裝置包括:第一任務佇列,用於對第一優先順序的解碼任務進行排隊;第二任務佇列,用於對高於所述第一優先順序的第二優先順序的解碼任務進行排隊;以及控制電路,所述控制電路在接收到用於多個解碼任務的資料部分時,從所述第一任務佇列和所述第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據所述多個解碼任務中的所述相應解碼任務的優先順序來對所述資料部分中的相應部分進行操作。
- 根據請求項1所述的裝置,其中,所述NAND閃速記憶體控制器包括多個記憶體通道,並且其中,所述裝置進一步包括:用於所述多個通道中的每個相應通道的相應第一任務佇列以及用於所述多個通道中的每個相應通道的相應第二任務佇列;至少一個第一解碼器,所述至少一個第一解碼器在第一改錯碼解碼方案下進行操作;至少一個第二解碼器,所述至少一個第二解碼器在第二改錯碼解碼方案下進行操作,所述第二改錯碼解碼方案在速度和複雜度中的一個或二個方面不同於所述第一改錯碼解碼方案;以及輸入切換電路,所述輸入切換電路可控制地將每個資料通道連接到所述第一解碼器和所述第二解碼器中的一個;其中,所述控制電路包括針對每個相應通道的相應通道任務控制塊, 用於從針對所述相應通道的所述相應第一任務佇列和所述相應第二任務佇列中釋放解碼任務,以控制所述輸入切換電路將用於所述相應通道的相應資料引導到所述第一解碼器和所述第二解碼器中的一個。
- 根據請求項2所述的裝置,其中:所述至少一個第一解碼器包括多個第一解碼器;所述至少一個第二解碼器包括多個第二解碼器;以及所述輸入切換電路包括:針對每個相應通道的相應解複用器,用於將所述相應通道上的資料可選擇地引導到所述多個第一解碼器和所述多個第二解碼器中的一個,第一開關,所述第一開關用於將針對所述多個第一解碼器的解複用器輸出引導到所述多個第一解碼器中可用的第一解碼器,以及第二開關,所述第二開關用於將針對所述多個第二解碼器的解複用器的輸出引導到所述多個第二解碼器中可用的第二解碼器。
- 根據請求項2所述的裝置,進一步包括:針對每個相應通道的相應緩衝器,用於保持在所述相應通道上接收到的資料,直至與所述資料相對應的解碼任務從所述第一任務佇列和第二任務佇列中的一個任務佇列釋放。
- 根據請求項2所述的裝置,進一步包括:輸出切換電路,所述輸出切換電路用於輸出所述第一解碼器和所述第二解碼器中的一個解碼器的輸出;其中:所述控制電路包括解碼器完成控制電路,所述解碼器完成控制電路在從所述第一解碼器和所述第二解碼器中的所述一個解碼器接收到解碼器完 成信號時,選擇所述第一解碼器和所述第二解碼器中的所述一個解碼器的輸出。
- 根據請求項5所述的裝置,進一步包括:第一任務完成佇列,用於對所述第一優先順序的已完成的解碼任務進行排隊;以及第二任務完成佇列,用於對所述第二優先順序的已完成的解碼任務進行排隊;其中:所述解碼器完成控制電路將每個已完成的解碼任務載入到所述第一任務完成佇列和所述第二任務完成佇列中的一個任務完成佇列中;並且所述控制電路進一步包括解碼器完成狀態控制電路,所述解碼器完成狀態控制電路根據所述已完成的解碼任務的優先順序來報告來自所述第一任務完成佇列和所述第二任務完成佇列的已完成的解碼任務。
- 根據請求項1所述的裝置,進一步包括:緩衝器,所述緩衝器用於保持從NAND閃速記憶體接收到的資料,直至與所述資料相對應的解碼任務從所述第一任務佇列和所述第二任務佇列中的一個任務佇列中被釋放。
- 根據請求項1所述的裝置,進一步包括:第一任務完成佇列,用於對所述第一優先順序的已完成的解碼任務進行排隊;以及第二任務完成佇列,用於對所述第二優先順序的已完成的解碼任務進行排隊;其中:所述控制電路根據所述已完成的解碼任務的優先順序,報告來自所述 第一任務完成佇列和所述第二任務完成佇列的已完成的解碼任務。
- 一種用於在NAND閃速記憶體控制器中執行解碼任務的方法,所述方法包括:在第一任務佇列中對第一優先順序的解碼任務進行排隊;在第二任務佇列中對高於所述第一優先順序的第二優先順序的解碼任務進行排隊;以及在接收到用於多個解碼任務的資料部分時,從所述第一任務佇列和所述第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據所述多個解碼任務中的所述相應解碼任務的優先順序來對所述資料部分中的相應部分進行操作。
- 根據請求項9所述的方法,其中,所述NAND閃速記憶體控制器包括多個記憶體通道,並且其中:對第一優先順序的解碼任務進行排隊包括:針對所述多個通道中的每個相應通道來在相應第一任務佇列中對解碼任務進行排隊;以及對第二優先順序的解碼任務進行排隊包括:針對所述多個通道中的每個相應通道來在相應第二任務佇列中對解碼任務進行排隊;所述方法進一步包括:將每個資料通道可控制地連接到第一解碼器和第二解碼器中的一個,所述第一解碼器在第一改錯碼解碼方案下進行操作,所述第二解碼器在第二改錯碼解碼方案下進行操作,所述第二改錯碼解碼方案在速度和複雜度中的一個或兩個方面不同於所述第一改錯碼解碼方案。
- 根據請求項10所述的方法,其中,所述可控制地連接包括:將 每個資料通道可控制地連接到多個第一解碼器和多個第二解碼器中的一個,所述多個第一解碼器在所述第一改錯碼解碼方案下進行操作,所述多個第二解碼器在所述第二改錯碼解碼方案下進行操作的。
- 根據請求項10所述的方法,進一步包括:針對每個相應通道,將在所述相應通道上接收到的資料保持在緩衝器中,直至與所述資料相對應的解碼任務從所述第一任務佇列和第二任務佇列中的一個任務佇列釋放。
- 根據請求項10所述的方法,進一步包括:在第一任務完成佇列中對所述第一優先順序的已完成的解碼任務進行排隊;以及在第二任務完成佇列中對所述第二優先順序的已完成的解碼任務進行排隊;以及根據所述已完成的解碼任務的優先順序,報告來自所述第一任務完成佇列和所述第二任務完成佇列的已完成的解碼任務。
- 根據請求項9所述的方法,進一步包括將從NAND閃速記憶體接收到的資料保持在緩衝器中,直至與所述資料相對應的解碼任務從所述第一任務佇列和所述第二任務佇列中的一個任務佇列中被釋放。
- 根據請求項9所述的方法,進一步包括:在第一任務完成佇列中對所述第一優先順序的已完成的解碼任務進行排隊;以及在第二任務完成佇列中對所述第二優先順序的已完成的解碼任務進行排隊;以及 根據所述已完成的解碼任務的優先順序,報告來自所述第一任務完成佇列和所述第二任務完成佇列的已完成的解碼任務。
- 根據請求項15所述的方法,其中,根據所述已完成的解碼任務的優先順序報告來自所述第一任務完成佇列和所述第二任務完成佇列的已完成的解碼任務包括:在報告所述第一優先順序的任何已完成的解碼任務之前,報告所述第二優先順序的所有已完成的解碼任務。
- 根據請求項16所述的方法,進一步包括:在對所述第一任務完成佇列中的所述已完成的解碼任務的進行排隊之後的預定持續時間之後,將已完成的解碼任務的優先順序水準從所述第一優先順序改變為所述第二優先順序。
- 根據請求項15所述的方法,其中,根據所述已完成的解碼任務的優先順序報告來自所述第一任務完成佇列和所述第二任務完成佇列的已完成的解碼任務包括:在報告來自所述第二任務完成佇列中的預定數目的任務之後,報告來自所述第一任務完成佇列的任務。
- 根據請求項9所述的方法,其中,從所述第一任務佇列和所述第二任務佇列中釋放所述多個解碼任務中的相應解碼任務以根據在所述多個解碼任務中的所述相應解碼任務的優先順序來對所述資料部分中的相應部分進行操作包括:在釋放所述第一優先順序的任何解碼任務之前,釋放所述第二優先順序的所有解碼任務。
- 根據請求項19所述的方法,進一步包括:在所述第一任務佇列中的所述解碼任務的排隊之後的預定持續時間之後,將解碼任務的優先順序水準從所述第一優先順序改變為所述第二優先順序。
- 根據請求項9所述的方法,其中,從所述第一任務佇列和所述第二任務佇列中釋放所述多個解碼任務中的相應解碼任務以根據在所述多個解碼任務中的所述相應解碼任務的優先順序來對所述資料部分中的相應部分進行操作包括:在釋放來自所述第二任務佇列中的預定數目的任務之後,釋放來自所述第一任務佇列的任務。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562266193P | 2015-12-11 | 2015-12-11 | |
US62/266,193 | 2015-12-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201729200A true TW201729200A (zh) | 2017-08-16 |
TWI713648B TWI713648B (zh) | 2020-12-21 |
Family
ID=59020757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105140915A TWI713648B (zh) | 2015-12-11 | 2016-12-09 | 在nand閃速控制器中根據優先順序對解碼任務進行排隊 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10089175B2 (zh) |
KR (1) | KR20170074759A (zh) |
CN (1) | CN106874081B (zh) |
TW (1) | TWI713648B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7048289B2 (ja) * | 2017-12-08 | 2022-04-05 | キオクシア株式会社 | 情報処理装置および方法 |
US10747613B2 (en) * | 2018-09-07 | 2020-08-18 | Toshiba Memory Corporation | Pooled frontline ECC decoders in memory systems |
US11204829B2 (en) * | 2019-03-26 | 2021-12-21 | Innogrit Technologies Co., Ltd. | Systems and methods for an ECC architecture with prioritized task queues |
US11556274B1 (en) | 2021-09-01 | 2023-01-17 | Western Digital Technologies, Inc. | Endurance groups ECC allocation |
US11640267B2 (en) | 2021-09-09 | 2023-05-02 | Western Digital Technologies, Inc. | Method and system for maintenance allocation between NVM groups |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822772A (en) * | 1996-03-22 | 1998-10-13 | Industrial Technology Research Institute | Memory controller and method of memory access sequence recordering that eliminates page miss and row miss penalties |
KR100194039B1 (ko) * | 1996-04-19 | 1999-06-15 | 윤종용 | 엠펙 시스템의 우선순위 처리회로 |
US7010654B2 (en) * | 2003-07-24 | 2006-03-07 | International Business Machines Corporation | Methods and systems for re-ordering commands to access memory |
US7299324B2 (en) * | 2003-11-05 | 2007-11-20 | Denali Software, Inc. | Reactive placement controller for interfacing with banked memory storage |
US7523228B2 (en) * | 2006-09-18 | 2009-04-21 | International Business Machines Corporation | Method for performing a direct memory access block move in a direct memory access device |
US8478950B2 (en) * | 2008-07-29 | 2013-07-02 | Synopsys, Inc. | Data processing circuit with arbitration between a plurality of queues |
US8548061B2 (en) * | 2008-08-05 | 2013-10-01 | Panasonic Corporation | Image decoding apparatus and image decoding method |
US8356137B2 (en) * | 2010-02-26 | 2013-01-15 | Apple Inc. | Data storage scheme for non-volatile memories based on data priority |
CN102480337B (zh) * | 2010-11-30 | 2016-04-13 | 国际商业机器公司 | 无线电软件系统以及用于其的解码装置和方法 |
US9141468B2 (en) * | 2011-12-12 | 2015-09-22 | Cleversafe, Inc. | Managing memory utilization in a distributed storage and task network |
US20130263147A1 (en) * | 2012-03-29 | 2013-10-03 | Lsi Corporation | Systems and Methods for Speculative Read Based Data Processing Priority |
US9092156B1 (en) | 2013-05-30 | 2015-07-28 | Marvell International Ltd. | Methods and apparatus for managing storage device commands |
US9857974B2 (en) * | 2013-10-03 | 2018-01-02 | International Business Machines Corporation | Session execution decision |
US9727275B2 (en) * | 2014-12-02 | 2017-08-08 | International Business Machines Corporation | Coordinating storage of data in dispersed storage networks |
CN104850456A (zh) * | 2015-05-27 | 2015-08-19 | 苏州科达科技股份有限公司 | 多进程解码方法和系统 |
-
2016
- 2016-12-06 US US15/370,596 patent/US10089175B2/en active Active
- 2016-12-08 KR KR1020160166829A patent/KR20170074759A/ko not_active Application Discontinuation
- 2016-12-09 CN CN201611132290.0A patent/CN106874081B/zh active Active
- 2016-12-09 TW TW105140915A patent/TWI713648B/zh active
Also Published As
Publication number | Publication date |
---|---|
CN106874081B (zh) | 2022-07-22 |
TWI713648B (zh) | 2020-12-21 |
KR20170074759A (ko) | 2017-06-30 |
US10089175B2 (en) | 2018-10-02 |
CN106874081A (zh) | 2017-06-20 |
US20170168895A1 (en) | 2017-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201729200A (zh) | 在nand閃速控制器中根據優先順序對解碼任務進行排隊 | |
US11467769B2 (en) | Managed fetching and execution of commands from submission queues | |
US20150067291A1 (en) | Controller, memory system, and method | |
TW201246083A (en) | Descriptor scheduler | |
US20220083266A1 (en) | Plane-based queue configuration for aipr-enabled drives | |
US20130173997A1 (en) | Memory controller, memory system, and memory write method | |
US20090248903A1 (en) | Data communication control device | |
JP2015043237A (ja) | メモリシステム | |
US7272692B2 (en) | Arbitration scheme for memory command selectors | |
US20230118930A1 (en) | Uplink channel multiplexing method and device, and terminal | |
US9280422B2 (en) | Dynamic distribution of code words among multiple decoders | |
US7769966B2 (en) | Apparatus and method for judging validity of transfer data | |
US20230030672A1 (en) | Die-based high and low priority error queues | |
US11204829B2 (en) | Systems and methods for an ECC architecture with prioritized task queues | |
EP3896881A1 (en) | Harq data storage management method and device and harq data buffer | |
CN114780215A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN110764710A (zh) | 低延迟高iops的数据访问方法与存储系统 | |
CN109390026B (zh) | 资料储存装置以及读取方法 | |
US20230179535A1 (en) | Method, system, and circuits for rf low-latency, multiple priority communication | |
KR101171463B1 (ko) | 신호 전달 제어 장치 및 그의 제어 방법 | |
CN114063892A (zh) | 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统 | |
JP2023006210A (ja) | 冗長通信装置、方法、及びプログラム | |
CN114610661A (zh) | 数据处理装置、方法和电子设备 | |
JP2020101906A (ja) | 切り替え回路、管理システム、情報処理装置及びアクセス頻度の切り替え方法 | |
JP2018180819A (ja) | 計算機装置、書込み先選択方法及び書込み先選択プログラム |