TWI713648B - Queuing of decoding tasks according to priority in nand flash controller - Google Patents
Queuing of decoding tasks according to priority in nand flash controller Download PDFInfo
- Publication number
- TWI713648B TWI713648B TW105140915A TW105140915A TWI713648B TW I713648 B TWI713648 B TW I713648B TW 105140915 A TW105140915 A TW 105140915A TW 105140915 A TW105140915 A TW 105140915A TW I713648 B TWI713648 B TW I713648B
- Authority
- TW
- Taiwan
- Prior art keywords
- task
- decoding
- queue
- decoder
- tasks
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 51
- 238000010586 diagram Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
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, 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
- 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/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
- 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
Abstract
Description
本文要求2015年12月11日提交的未決的共同轉讓的美國臨時專利申請號61/266,193的權益,其全部內容通過引用合併於此。 This document claims the rights and interests of the pending co-assigned U.S. Provisional Patent Application No. 61/266,193 filed on December 11, 2015, the entire contents of which are incorporated herein by reference.
本公開的主題的實現通常屬於用於在NAND閃速控制器中將解碼任務根據其優先順序指派給不同佇列的方法和裝置,包括適用於針對不同優先順序的任務的不同解碼器。 The implementation of the subject matter of the present disclosure generally belongs to a method and apparatus for assigning decoding tasks to different queues according to their priority order in a NAND flash controller, including different decoders suitable for tasks with different priority orders.
本文提供的背景技術描述是出於一般地呈現本公開的上下文的目的。本發明人的工作在該背景技術部分中描述工作的程度上以及在提交時可能沒有以其他方式限定為現有技術的描述的各方面,既不明示地不暗示地被承認是抵觸本公開的現有技術。 The background description provided herein is for the purpose of generally presenting the context of the disclosure. The inventor’s work may not be otherwise limited to the various aspects of the description of the prior art to the extent that the work is described in the background art section and at the time of submission, it is neither expressly nor implicitly admitted to contradict the prior art of the present disclosure. technology.
多電平單元(MLC)NAND閃速記憶體正變得普及,因為每單位資料存儲的成本相對于單電平單元(SLC)NAND閃速記憶體儲器的成本減小。然而,因為多於一比特的資訊被存儲在每個單元中,所以MLC NAND閃速記憶體還經歷比SLC NAND閃速記憶體更高的原始誤位元速率。 Multi-level cell (MLC) NAND flash memory is becoming popular because the cost per unit of data storage is reduced relative to the cost of single-level cell (SLC) NAND flash memory. However, because more than one bit of information is stored in each cell, MLC NAND flash memory also experiences a higher original bit error rate than SLC NAND flash memory.
為了滿足可靠性要求,與在SLC NAND閃速記憶體設備中相 比,可以在MLC NAND閃速記憶體設備中使用更高級的糾錯方案。然而,諸如讀取重試解碼和軟判定解碼的高級糾錯方案的複雜性可以增加NAND閃速記憶體資料存取操作的時延。對於不同的應用,資料存取時延的影響將不同。例如,諸如主機資料讀取的一些關鍵操作可能需要相對低的記憶體存取時延,而諸如一些後臺操作(例如,用於垃圾收集的資料存取)的其他操作可能對時延的程度較不敏感。 In order to meet the reliability requirements, it is similar to the SLC NAND flash memory device. In comparison, more advanced error correction schemes can be used in MLC NAND flash memory devices. However, the complexity of advanced error correction schemes such as read retry decoding and soft decision decoding can increase the latency of data access operations in NAND flash memory. For different applications, the impact of data access delay will be different. For example, some key operations such as host data reading may require relatively low memory access latency, while other operations such as some background operations (for example, data access for garbage collection) may have a greater degree of latency. Not sensitive.
一種用於在NAND閃速記憶體控制器中執行解碼任務的裝置,所述裝置包括:用於對第一優先順序的解碼任務進行排隊的第一任務佇列;用於對高於所述第一優先順序的第二優先順序的解碼任務進行排隊的第二任務佇列;以及控制電路,所述控制電路在接收到用於多個解碼任務的資料部分時,從所述第一任務佇列和所述第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據所述多個解碼任務中的相應解碼任務的優先順序來對所述資料部分中的相應部分進行操作。 A device for performing decoding tasks in a NAND flash memory controller. The device includes: a first task queue for queuing decoding tasks in a first priority order; A second task queue in which decoding tasks in a second priority order of a priority order are queued; and a control circuit that, when receiving data parts for multiple decoding tasks, queues from the first task And releasing the corresponding decoding task of the plurality of decoding tasks in the second task queue to operate the corresponding part of the data part according to the priority order of the corresponding decoding task of the plurality of decoding tasks .
在這種裝置中,其中,NAND閃速記憶體控制器包括多個記憶體通道,該裝置可以進一步包括用於所述多個通道中的每個相應通道的相應第一任務佇列、以及用於所述多個通道中的每個相應通道的相應第二任務佇列。至少一個第一解碼器在第一改錯碼解碼方案下進行操作,並且至少一個第二解碼器在第二改錯碼解碼方案下進行操作,該第二改錯碼解碼方案在速度和複雜度中的一個或二者方面不同於第一改錯碼解碼方案。輸入切換電路可控制地將每個資料通道連接到第一解碼器和第二解碼器中的一個。控制電路包括針對每個相應通道的相應通道任務控制塊,以用於 從針對該相應通道的相應第一任務佇列和第二任務佇列中釋放解碼任務,以控制所述輸入切換電路將用於相應通道的相應資料引導到第一解碼器和第二解碼器中的一個。 In such a device, wherein the NAND flash memory controller includes a plurality of memory channels, the device may further include a corresponding first task queue for each corresponding channel of the plurality of channels, and The corresponding second task queue of each corresponding channel in the plurality of channels. At least one first decoder operates under a first error correction code decoding scheme, and at least one second decoder operates under a second error correction code decoding scheme, which is in terms of speed and complexity One or both of them are different from the first error correction code decoding scheme. The input switching circuit controllably connects each data channel to one of the first decoder and the second decoder. The control circuit includes the corresponding channel task control block for each corresponding channel for Release the decoding task from the corresponding first task queue and second task queue for the corresponding channel to control the input switching circuit to guide the corresponding data for the corresponding channel to the first decoder and the second decoder one of.
在這樣的實現中,至少一個第一解碼器包括多個第一解碼器,至少一個第二解碼器包括多個第二解碼器,並且輸入切換電路包括針對每個相應通道的相應解複用器,用於將所述相應通道上的資料可選擇地引導到多個第一解碼器和多個第二解碼器中的一個;第一開關,用於將針對多個第一解碼器的解複用器輸出引導到多個第一解碼器中的可用第一解碼器;以及第二開關,用於將針對多個第二解碼器的解複用器的輸出引導到多個第二解碼器中的可用解碼器。 In such an implementation, at least one first decoder includes multiple first decoders, at least one second decoder includes multiple second decoders, and the input switching circuit includes a corresponding demultiplexer for each corresponding channel , Used to guide the data on the corresponding channel to one of a plurality of first decoders and a plurality of second decoders; the first switch is used to de-multiplex the multiple first decoders The output of the user is directed to the available first decoder among the plurality of first decoders; and a second switch for guiding the output of the demultiplexer for the plurality of second decoders to the plurality of second decoders Available decoders.
這樣的實現還可以進一步包括針對每個相應通道的相應緩衝器,用於保持在該相應通道上接收的資料,直至與該資料相對應的解碼任務從第一任務佇列和第二任務佇列中的一個釋放。 Such an implementation may further include a corresponding buffer for each corresponding channel for holding the data received on the corresponding channel until the decoding task corresponding to the data is from the first task queue and the second task queue One of the releases.
這樣的實現可以進一步包括輸出切換電路,該輸出切換電路用於輸出第一解碼器和第二解碼器中的一個的輸出。在這種實現中,控制電路包括解碼器完成控制電路,該解碼器完成控制電路在從第一解碼器和第二解碼器中的一個接收到解碼器完成信號時,選擇第一解碼器和第二解碼器中的一個的輸出。這樣的實現可以進一步包括用於對第一優先順序的已完成的解碼任務進行排隊的第一任務完成佇列,以及用於對所述第二優先順序的已完成的解碼任務進行排隊的第二任務完成佇列,其中解碼器完成控制電路將每個已完成的解碼任務載入到第一任務完成佇列和第二任務完成佇列中的一個中,並且控制電路進一步包括解碼器完成狀態控制電 路,該解碼器完成狀態控制電路根據已完成的解碼任務的優先順序報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。 Such an implementation may further include an output switching circuit for outputting the output of one of the first decoder and the second decoder. In this implementation, the control circuit includes a decoder completion control circuit that selects the first decoder and the second decoder when a decoder completion signal is received from one of the first decoder and the second decoder. The output of one of the two decoders. Such an implementation may further include a first task completion queue for queuing completed decoding tasks in the first priority order, and a second task completion queue for queuing completed decoding tasks in the second priority order. The task completion queue, wherein the decoder completion control circuit loads each completed decoding task into one of the first task completion queue and the second task completion queue, and the control circuit further includes decoder completion status control Electricity The decoder completion status control circuit reports the completed decoding tasks from the first task completion queue and the second task completion queue according to the priority order of the completed decoding tasks.
這樣的裝置可以進一步包括緩衝器,用於保持從NAND閃速記憶體接收的資料,直至與資料相對應的解碼任務從所述第一任務佇列和所述第二任務佇列中的一個中被釋放。 Such a device may further include a buffer for holding data received from the NAND flash memory until the decoding task corresponding to the data is removed from one of the first task queue and the second task queue released.
這樣的裝置可以進一步包括用於對第一優先順序的已完成的解碼任務進行排隊的第一任務完成佇列;以及用於對第二優先順序的已完成的解碼任務進行排隊的第二任務完成佇列,其中控制電路根據所述已完成的解碼任務的優先順序來報告來自所述第一任務完成佇列和所述第二任務完成佇列中的已完成的解碼任務。 Such an apparatus may further include a first task completion queue for queuing completed decoding tasks in a first priority order; and a second task completion queue for queuing completed decoding tasks in a second priority order A queue, wherein the control circuit reports the completed decoding tasks from the first task completion queue and the second task completion queue according to the priority order of the completed decoding tasks.
一種用於在NAND閃速記憶體控制器中執行解碼任務的方法,可以包括:在第一任務佇列中對第一優先順序的解碼任務進行排隊;在第二任務佇列中對高於所述第一優先順序的第二優先順序的解碼任務進行排隊;以及在接收到用於多個解碼任務的資料部分時,從第一任務佇列和第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操作。 A method for executing decoding tasks in a NAND flash memory controller may include: queuing the decoding tasks of the first priority order in a first task queue; and queuing higher than all decoding tasks in a second task queue. The decoding tasks in the second priority order of the first priority order are queued; and when data parts for multiple decoding tasks are received, the multiple decoding tasks are released from the first task queue and the second task queue The corresponding decoding task in the task operates on the corresponding part of the data part according to the priority order of the corresponding decoding task among the multiple decoding tasks.
在這種方法的一個實現中,其中在NAND閃速記憶體控制器包括多個記憶體通道時,對第一優先順序的解碼任務進行排隊可以包括:針對多個通道中的每個相應通道來在相應第一任務佇列中對解碼任務進行排隊;以及對第二優先順序的解碼任務進行排隊可以包括:針對多個通道中的每個相應通道來在相應第二任務佇列中對解碼任務進行排隊。該方法 可以進一步包括將每個資料通道可控制地連接到第一解碼器和第二解碼器中的一個,第一解碼器在第一改錯碼解碼方案下進行操作,第二解碼器在第二改錯碼解碼方案下進行操作,第二改錯碼解碼方案在速度和複雜度中的一個或二者方面不同於第一改錯碼解碼方案。 In an implementation of this method, when the NAND flash memory controller includes multiple memory channels, queuing the decoding tasks of the first priority order may include: for each corresponding channel of the multiple channels Queuing the decoding tasks in the corresponding first task queue; and queuing the decoding tasks in the second priority order may include: queuing the decoding tasks in the corresponding second task queue for each corresponding channel in the plurality of channels Line up. this method It may further include controllably connecting each data channel to one of a first decoder and a second decoder, the first decoder operates under the first error correction code decoding scheme, and the second decoder operates under the second correction code decoding scheme. The second error correction code decoding scheme is different from the first error correction code decoding scheme in one or both of speed and complexity.
在這樣的實現中,可控制地連接包括:將每個資料通道可控制地連接到多個第一解碼器和多個第二解碼器中的一個,多個第一解碼器在第一改錯碼解碼方案下進行操作,多個第二解碼器在第二改錯碼解碼方案下進行操作。 In such an implementation, the controllable connection includes: each data channel is controllably connected to one of a plurality of first decoders and a plurality of second decoders, and the plurality of first decoders can correct errors in the first The operation is performed under the code decoding scheme, and multiple second decoders are operated under the second error correction code decoding scheme.
這樣的實現可以進一步包括:針對每個相應通道,將在相應通道上接收的資料保持在緩衝器中,直至與資料相對應的解碼任務從第一任務佇列和第二任務佇列中釋放。 Such an implementation may further include: for each corresponding channel, keeping the data received on the corresponding channel in the buffer until the decoding task corresponding to the data is released from the first task queue and the second task queue.
這樣的實現還可以進一步包括:在第一任務完成佇列中對第一優先順序的已完成的解碼任務進行排隊;以及在第二任務完成佇列中對第二優先順序的已完成的解碼任務進行排隊;以及根據已完成的解碼任務的優先順序來報告來自所述第一任務完成佇列和所述第二任務完成佇列的完成的解碼任務。 Such an implementation may further include: queuing the completed decoding tasks of the first priority order in the first task completion queue; and queuing the completed decoding tasks of the second priority order in the second task completion queue Queuing; and reporting the completed decoding tasks from the first task completion queue and the second task completion queue according to the priority order of the completed decoding tasks.
這樣的方法還可以進一步包括將從NAND閃速記憶體接收的資料保持在緩衝器中,直至與資料相對應的解碼任務從第一任務佇列和第二任務佇列中的一個中被釋放。 Such a method may further include keeping the data received from the NAND flash memory in the buffer until the decoding task corresponding to the data is released from one of the first task queue and the second task queue.
這種方法的實現可以進一步包括:在第一任務完成佇列中對第一優先順序的完成的解碼任務進行排隊,在第二任務完成佇列中對第二優先順序的完成的解碼任務進行排隊,以及根據已完成的解碼任務的優先 順序來報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。 The implementation of this method may further include: queuing completed decoding tasks in the first priority order in the first task completion queue, and queuing the completed decoding tasks in the second priority order in the second task completion queue , And according to the priority of the completed decoding task In order to report the completed decoding tasks from the first task completion queue and the second task completion queue.
在這樣的實現中,根據已完成的解碼任務的優先順序報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務包括:在報告第一優先順序的任何已完成的解碼任務之前,報告第二優先順序的所有已完成的解碼任務。該實現可以進一步包括在第一任務完成佇列中的已完成的解碼任務的排隊之後的預定持續時間之後,將已完成的解碼任務的優先順序水準從第一優先順序改變為第二優先順序。 In such an implementation, according to the priority order of the completed decoding tasks, the completed decoding tasks from the first task completion queue and the second task completion queue are reported including: any completed decoding tasks in the first priority order are reported Before decoding tasks, report all completed decoding tasks in the second priority order. The implementation may further include changing the priority level of the completed decoding tasks from the first priority order to the second priority order after a predetermined duration after the queuing of the completed decoding tasks in the first task completion queue.
在這樣的實現中,根據已完成的解碼任務的優先順序來報告第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務可以包括:在報告來自所述第二任務完成佇列中的預定數目的任務之後,報告來自第一任務完成佇列的任務。 In such an implementation, reporting the completed decoding tasks in the first task completion queue and the second task completion queue according to the priority order of the completed decoding tasks may include: reporting from the second task completion queue After the predetermined number of tasks in the column, report the tasks from the first task to complete the queue.
在這樣的方法的實現中,從第一任務佇列和第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據在所述多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操作可以包括:在釋放所述第一優先順序的任何解碼任務之前,釋放第二優先順序的所有解碼任務。 In the implementation of such a method, the corresponding decoding tasks among the plurality of decoding tasks are released from the first task queue and the second task queue to be based on the priority of the corresponding decoding tasks among the plurality of decoding tasks. Performing operations on corresponding parts in the data part in order may include: releasing all decoding tasks in the second priority order before releasing any decoding tasks in the first priority order.
這樣的實現可以進一步包括在所述第一任務佇列中的解碼任務的排隊之後的預定持續時間之後,將解碼任務的優先順序水準從第一優先順序改變為所述第二優先順序。 Such an implementation may further include changing the priority level of the decoding tasks from the first priority order to the second priority order after a predetermined duration after the queuing of the decoding tasks in the first task queue.
在這樣的方法中,從第一任務佇列和第二任務佇列中釋放多個解碼任務中的相應解碼任務,以根據在多個解碼任務中的相應解碼任務 的優先順序來對資料部分中的相應部分進行操作可以包括:在來自第二任務佇列中的預定數目的任務的釋放之後,釋放來自所述第一任務佇列的任務。 In such a method, the corresponding decoding tasks among the plurality of decoding tasks are released from the first task queue and the second task queue, so that the corresponding decoding tasks among the plurality of decoding tasks Operating the corresponding parts in the data part in the order of priority may include: releasing the tasks from the first task queue after the predetermined number of tasks in the second task queue are released.
130‧‧‧處理器 130‧‧‧Processor
102‧‧‧主機 102‧‧‧Host
111‧‧‧主機介面 111‧‧‧Host Interface
112‧‧‧ECC編碼器 112‧‧‧ECC encoder
113‧‧‧NAND閃速介面 113‧‧‧NAND flash interface
123‧‧‧主機介面 123‧‧‧Host Interface
122‧‧‧ECC解碼器 122‧‧‧ECC Decoder
121‧‧‧NAND閃速介面 121‧‧‧NAND flash interface
100‧‧‧NAND閃速控制器 100‧‧‧NAND Flash Controller
101‧‧‧NAND閃速記憶體 101‧‧‧NAND flash memory
235‧‧‧解碼器完成狀態控制 235‧‧‧Decoder complete status control
233‧‧‧正常優先順序完成狀態佇列 233‧‧‧Complete status queue in normal priority order
234‧‧‧高優先順序完成狀態佇列 234‧‧‧High priority completion status queue
232‧‧‧解碼器完成控制 232‧‧‧Decoder complete control
223‧‧‧解碼器開始控制 223‧‧‧Decoder start control
224‧‧‧通道任務控制 224‧‧‧Channel mission control
225‧‧‧水準1解碼器開關控制 225‧‧‧Level 1 decoder switch control
226‧‧‧水準2解碼器開關控制 226‧‧‧Level 2 decoder switch control
201:水準1解碼器 201: Level 1 decoder
202:水準2解碼器 202: Level 2 decoder
在結合附圖考慮以下詳細描述之後,本公開的其他特徵、其性質和各種優點將是顯而易見的,在附圖中,相同的附圖標記在全文中表示相同的部件,並且其中:圖1示出可以使用本公開的實現的NAND閃速記憶體控制器的框圖;圖2示出根據可以在NAND閃速控制器中使用的本公開的主題的實現的改錯碼解碼器的結構的框圖;圖3是根據本公開的主題的實現的過程的流程圖,通過其可以填充圖2的解碼器中的針對每個資料通道的解碼任務佇列;圖4是示出根據本公開的主題的實現的過程的流程圖,用於從正常優先順序任務佇列或高優先順序任務佇列中的一個選擇用於執行的任務;圖5是示出根據本公開的主題的實現的用於在正常優先順序解碼任務和高優先順序解碼任務之間選擇規則集合的操作的流程圖;以及圖6是示出根據本公開的主題的實現的用於報告解碼任務的完成的過程的流程圖。 After considering the following detailed description in conjunction with the accompanying drawings, other features, properties and various advantages of the present disclosure will be apparent. In the accompanying drawings, the same reference numerals denote the same components throughout the text, and among them: FIG. 1 shows A block diagram of a NAND flash memory controller that can be implemented using the present disclosure; Figure 2 shows a block diagram of the structure of an error correction code decoder according to an implementation of the subject of the present disclosure that can be used in a NAND flash controller Figure; Figure 3 is a flowchart of the process of implementing the subject of the present disclosure, by which the decoding task queue for each data channel in the decoder of Figure 2 can be filled; Figure 4 shows the subject of the present disclosure A flowchart of the process of implementing the process for selecting a task for execution from one of the normal priority task queue or the high priority task queue; FIG. 5 is a diagram showing the implementation of the subject of the present disclosure for A flowchart of the operation of selecting a rule set between a normal priority decoding task and a high priority decoding task; and FIG. 6 is a flowchart showing a process for reporting the completion of a decoding task according to an implementation of the subject of the present disclosure.
如上所述,MLC NAND閃速記憶體可能經歷比SLC NAND閃速記憶體更高的原始誤位元速率。因此,為了滿足可靠性要求,與在SLC NAND閃速記憶體設備中相比,更多高級糾錯方案可以在MLC NAND閃速 記憶體設備中使用。然而,諸如讀取重試解碼和軟判定解碼的高級糾錯方案的複雜性可以增加NAND閃速記憶體資料存取操作的時延。 As mentioned above, MLC NAND flash memory may experience a higher raw bit error rate than SLC NAND flash memory. Therefore, in order to meet the reliability requirements, more advanced error correction solutions can be used in MLC NAND flash memory devices than in SLC NAND flash memory devices. Used in memory devices. However, the complexity of advanced error correction schemes such as read retry decoding and soft decision decoding can increase the latency of data access operations in NAND flash memory.
因為如上所述的資料存取時延的影響對於不同應用而不同,所以根據本公開的實現,可以不同地處理不同優先順序的記憶體存取操作。另外,可以在使用更複雜且耗時的解碼方案以及使用更簡單和更快速的解碼方案之間實現折衷,更複雜且耗時的解碼方案更可能在第一嘗試就成功,更簡單和更快速的解碼方案可能偶然失敗且需要多於一次的嘗試。 Because the impact of the data access delay described above is different for different applications, according to the implementation of the present disclosure, memory access operations of different priority orders can be handled differently. In addition, a trade-off can be achieved between using more complex and time-consuming decoding schemes and using simpler and faster decoding schemes. More complex and time-consuming decoding schemes are more likely to succeed at the first attempt, simpler and faster The decoding scheme may occasionally fail and require more than one attempt.
總而言之,即使可能發生需要重試操作的偶然故障,也可以通過對大多數記憶體存取操作使用更簡單和更快速的解碼方案,同時對更高優先順序的解碼任務使用更複雜和耗時的解碼方案,來最大化總體輸送量。 All in all, even if accidental failures that require retry operations may occur, simpler and faster decoding schemes can be used for most memory access operations, while more complex and time-consuming decoding tasks can be used for higher priority decoding tasks. Decoding scheme to maximize the overall throughput.
此外,在“插隊”特徵下,即使較高優先順序解碼任務稍後啟動,也可以在正常優先順序解碼任務之前執行較高優先順序解碼任務。 In addition, under the "insertion" feature, even if the higher priority decoding task is started later, the higher priority decoding task can be executed before the normal priority decoding task.
可以參考圖1-6來理解本公開的主題的實現。 The implementation of the subject matter of the present disclosure can be understood with reference to FIGS. 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的各種元件。
FIG. 1 shows a NAND
編碼器112和解碼器122是互補的,即,編碼器112和解碼器122使用相同方案的互補版本來對資料進行編碼和解碼,使得從主機設備102接收並且由編碼器112編碼以存儲在NAND閃速記憶體設備101上的資料可以在從NAND閃速記憶體設備101讀回之後由解碼器122來解碼。通常並且在本文論述的實現中,這樣的編碼/解碼方案是改錯碼(ECC),使得即使在寫入或讀取過程中的錯誤之後也可以重建資料。
The
圖2示出了根據本公開的ECC解碼器122的實現200的細節。ECC解碼器200包括第一多個n解碼器電路201和第二多個m解碼器電路電路202。解碼器電路201中的每一個可以實現比由解碼器電路202中的每一個實現的糾錯解碼方案相對更簡單和更快速的糾錯解碼方案,而解碼器電路202中的每一個可以實現比由解碼器電路201中的每一個實現的糾錯解碼方案相對更複雜和耗時的糾錯解碼方案。通常,與實現相對更複雜和耗時的糾錯解碼方案的解碼器電路202相比,可能存在更多的實現相對更簡單和更快速的糾錯解碼方案的解碼器電路201──即,通常可以預期n>m,但是可以存在m>n的實現。相對更簡單和更快速的糾錯解碼方案可以被稱為“水準1”,而相對更複雜和耗時的糾錯解碼方案可以被稱為“水準2”。
Figure 2 shows details of an
在如下所述的處理器130的控制下,通過開關電路204將在通道203上從NAND閃速介面121接收的資料引導到解碼器電路201或解碼器電路202。類似地,來自解碼器電路201或解碼器電路202的解碼資料在208處通過n:1複用器205、m:1複用器206和2:1複用器207被傳送到主機介面123,如下面進一步討論的。
Under the control of the
處理器130經由解碼任務控制塊210來如上所述控制開關電路204,解碼任務控制塊210包括解碼任務開始部分220和解碼任務完成部分230。
The
解碼任務控制塊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。
The decoding task start
處理器130經由NAND閃速介面121向NAND閃速記憶體設備101發送與每個解碼任務211相對應的讀取請求。每個讀取請求具有與其對應的解碼任務211相同的任務ID。當NAND閃速介面121從NAND閃速記憶
體設備101返回相應的資料時,在231處通過NAND閃速介面121向通道任務控制塊224發送解碼資料就緒信號,通過任務ID識別返回的資料。
The
擁有由所接收的任務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中的一個。
One of the channel task control blocks 224 that owns the task identified by the received task ID (ie, one of the channel task control blocks 224 associated with one of the
在資料被路由到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。
After the data is routed to one of the n level 1
除了在208處控制複用器205、206、207以選擇正確的輸出之外,解碼任務控制塊210的解碼任務完成部分230還在解碼任務完成時通知處理器130。例如,對於任何已完成的任務,解碼器完成控制塊232可以根據已完成的任務的優先順序將已完成的任務的任務ID輸出到正常優先順序完成狀態佇列233或高優先順序完成狀態佇列234。在236處,解碼器完成狀態控制塊235將完成指示從正常優先順序完成狀態佇列233和高優先順序完成狀態佇列234發送到處理器130。
In addition to controlling the
與高優先順序任務相關的高優先順序完成佇列234中的任何已完成指示可以在正常優先順序完成狀態佇列233中的任何完成指示之前被發送。替代地,可以以某些預定順序從正常優先順序完成狀態佇列233和高優先順序完成狀態佇列234中兩者提取完成指示。例如,即使其他完成指示保持在高優先順序完成狀態佇列234中,在從高優先順序完成狀態佇列234提取了特定數目的完成指示之後,也可以從正常優先順序完成狀態佇列233中提取一個完成指示。作為另一替代,與高優先順序任務相關的高優先順序完成狀態佇列234中的任何完成指示可以在正常優先順序完成狀態佇列233中的任何完成指示之前被發送,除非完成指示已經駐留在正常優先順序完成狀態佇列233達長於預定持續時間(其可以被認為將該完成指示的優先順序改變為“高”)。
Any completed instructions in the high
返回考慮解碼任務控制塊210的解碼任務開始部分220,由通道任務控制塊224中的一個從其相應的低優先順序任務佇列221和高優先順序任務佇列222中選擇任務可能比從正常優先順序完成狀態佇列233和高優先順序權完成狀態佇列234選擇完成指示更複雜,因為如上所述,不論其狀
態如何,解碼任務都無法被選擇,直至與已經從NAND閃速記憶體設備101返回任務相關聯的資料。在美國專利9,092,156中描述了一種用於在NAND閃速記憶體儲器控制器中處理具有不同優先順序的資料存取的方案,其全部內容通過引用合併於此。然而,可以使用其他方案來優先資料的讀取。
Returning to the decoding task start
當已經讀取並返回資料時,NAND閃速介面121可以包括用於指示與資料相關聯的優先順序水準。如果多於一個的解碼任務仍然要被處理,則指示優先順序的信號將在選擇解碼任務中使用,其中與在正常優先順序任務佇列221中的正常優先順序解碼任務相比,優選選擇在高優先順序任務佇列222中的較高優先順序解碼任務。
When the data has been read and returned, the NAND flash interface 121 may include a priority level for indicating the priority associated with the data. If more than one decoding task is still to be processed, the signal indicating the priority order will be used in the selection of the decoding task, where it is preferably selected in the higher order than the normal priority order decoding task in the normal priority
選擇的一部分涉及將資料路由到正確的解碼器。如果正在執行的解碼任務使用水準1解碼器,則它將以指派的優先順序被發送到水準1解碼器開關控制塊225;否則它將被發送到水準2解碼器開關控制塊226。水準1解碼器開關控制塊225和水準2解碼器開關控制塊226可以被認為是仲裁塊。例如,指派給水準1解碼器開關控制塊225和水準2解碼器開關控制塊226中的每一個的任務可以根據加權迴圈仲裁來分配。
Part of the selection involves routing the data to the correct decoder. If the decoding task being performed uses the level 1 decoder, it will be sent to the level 1 decoder
如上所述,每個水準1解碼器201可以實現相對更簡單和更快速的解碼方案,而每個水準2解碼器202可以實現相對更複雜和耗時的解碼方案。作為一般情況,水準1解碼方案可以用於正常優先順序任務,而水準2解碼方案可以用於更高優先順序的任務。然而,在一些實現中,可以存在水準1解碼方案用於較高優先順序任務的情況,正如可以存在水準2解碼方案用於正常優先順序任務的情況。
As described above, each level 1
例如,如果任務具有較高優先順序,因為它是使用水準1解 碼方案的用於失敗的正常優先順序任務的讀取重試任務,則讀取重試嘗試可以再次使用水準1解碼方案,而不管其較高的優先順序。作為另一示例,如果任務具有正常優先順序,並且不存在可用的水準1解碼器,但是存在未使用的水準2解碼器,則可以使用水準2解碼器,而不管該任務的正常優先順序。一個這樣的示例可以涉及不是時延關鍵的資料,諸如垃圾收集任務,其中水準1解碼失敗;對第二次嘗試使用較慢的水準2解碼將使得水準1解碼器可用于時延關鍵的資料。可以存在水準1解碼方案用於較高優先順序任務或水準2解碼方案用於正常優先順序任務的其他情況。 For example, if the task has a higher priority because it uses level 1 solution If the read retry task of the normal priority task of the code scheme is used for the failed normal priority task, then the read retry attempt can use the level 1 decoding scheme again, regardless of its higher priority. As another example, if a task has a normal priority order and there is no level 1 decoder available, but there is an unused level 2 decoder, then a level 2 decoder can be used regardless of the normal priority order of the task. One such example may involve data that is not delay-critical, such as garbage collection tasks where level 1 decoding fails; using a slower level 2 decoding for the second attempt will make level 1 decoders available for delay-critical data. There may be other cases where the level 1 decoding scheme is used for higher priority tasks or the level 2 decoding scheme is used for normal priority tasks.
ECC解碼器200的操作可以更好地參考圖3-5中的流程圖來理解。
The operation of the
圖3是示出根據實施例的過程300的實現的流程圖,通過該過程300用於每個資料通道203的解碼任務佇列221、222被填充。針對所討論的通道的新的解碼任務在301處被接收。在302處,確定在301處接收的任務是否是高優先順序任務。如果在301處接收的任務在302處被確定為高優先順序任務,則在303處,將任務置於針對該通道的高優先順序任務佇列222中。然而,如果在302處確定所接收的任務不是高優先順序任務,則在304處,將該任務置於針對該通道的正常優先順序任務佇列221中。在305處,確定是否存在針對該通道的任何其他解碼任務。如果在305處確定了不存在針對該通道的其他解碼任務,則過程300結束。但是如果在305處確定存在針對該通道的其他解碼任務,則過程300返回到301以接收新的解碼任務。
3 is a flowchart showing the implementation of a
圖4是示出用於從正常優先順序任務佇列221或高優先順序任務佇列222中的一個選擇用於執行的任務的過程400的實現的流程圖。在
401處,從NAND閃速記憶體設備101接收NAND資料就緒信號(例如,在通道203中的一個上)指示資料已經被返回(例如,回應於請求)。在402處,確定已經返回的資料是否屬於高優先順序任務(如上所述,任務ID可以與資料一起返回)。如果是,則在403處,從相應通道203的高優先順序任務佇列222釋放相關聯的任務。否則,如果在402處確定已經返回的資料不屬於高優先順序任務,則在404處,從相應通道203的正常優先順序任務佇列221釋放相關聯的任務。
4 is a flowchart showing the implementation of a
如上所述,解碼器的選擇不是必須由任務的優先順序來確定。雖然大多數高優先順序任務將是水準2解碼器任務,並且大多數正常優先順序任務將是水準1解碼器任務,但是可能存在例外。因此,一旦已經釋放了要執行的任務,在405處確定該任務是否是水準1解碼任務。如果是,則在406處將任務引導到水準1解碼器(經由適當的通道任務控制塊和適當的解碼器開關控制塊),並且過程400結束。否則,如果在405處確定了任務不是水準1解碼任務,則在407處將任務引導到水準2解碼器,並且過程400結束。
As mentioned above, the choice of decoder is not necessarily determined by the priority order of tasks. Although most high priority tasks will be level 2 decoder tasks, and most normal priority tasks will be level 1 decoder tasks, there may be exceptions. Therefore, once the task to be executed has been released, it is determined at 405 whether the task is a level 1 decoding task. If so, then the task is directed to the level 1 decoder at 406 (via the appropriate channel task control block and the appropriate decoder switch control block), and the
從佇列221、222釋放任務的實際順序可以根據預定規則來控制。因此,如果資料被返回,但是與具有比另一任務低的優先順序的任務(即,正常優先順序任務)相關聯,則資料可以被保存在緩衝器(未示出)中直至任務準備被執行,針對另一任務已經返回了資料。
The actual order of releasing tasks from the
根據一個可能的規則集合,高優先順序任務將始終優先于正常優先順序任務。根據規則集合的變體,正常優先順序佇列中的過多停留時間(超過預定限制)使得任務被移動到高優先順序佇列中。根據另一可 能的規則集合,對所執行的每p個高優先順序任務執行一個正常優先順序任務,這使得在正常優先順序佇列中的過多停留時間不太可能。可以使用這些規則集的組合,其中對於所執行的每p個高優先順序任務執行一個正常優先順序任務,但是在正常優先順序佇列中的過多停留時間(這應該是罕見的)使得任務從正常優先順序佇列被移動到高優先順序佇列。可以開發其他規則集合。 According to a set of possible rules, high priority tasks will always take priority over normal priority tasks. According to a variation of the rule set, excessive dwell time in the normal priority queue (over a predetermined limit) causes tasks to be moved to the high priority queue. According to another A set of capable rules to execute a normal priority task for every p high-priority tasks executed, which makes it impossible to spend too much time in the normal priority queue. A combination of these rule sets can be used, where for every p high-priority tasks executed, a normal priority task is executed, but excessive residence time in the normal priority queue (this should be rare) makes the task change from normal The priority queue is moved to the high priority queue. Other rule sets can be developed.
圖5中示出了一個可能的這種規則集合的示例500。在501處,確定已經執行的高優先順序任務的數目(從上次重置計數器開始)是否超過閾值。如果不是,則在502處確定是否存在任何高優先順序任務在高優先順序任務佇列中等待。如果是,則在503處選擇高優先順序任務並將其發送到適當的解碼器(例如,參見圖4),其中所選擇的任務在504處執行。如果在502處確定了不存在高優先順序任務在高優先順序任務佇列中等待,或在501處確定了已經執行的高優先順序任務的數目(從上次重置計數器開始)沒有超過閾值,則在505處確定是否存在任何正常優先順序任務在正常優先順序任務佇列中等待。如果是,則在506處選擇正常優先順序任務並將其發送到適當的解碼器(例如,參見圖4),其中在504處執行所選擇的任務。 An example 500 of a possible set of such rules is shown in FIG. 5. At 501, it is determined whether the number of high priority tasks that have been executed (from the last time the counter was reset) exceeds a threshold. If not, it is determined at 502 whether there are any high priority tasks waiting in the high priority task queue. If so, the high priority task is selected at 503 and sent to the appropriate decoder (see, for example, FIG. 4), where the selected task is executed at 504. If it is determined at 502 that there are no high-priority tasks waiting in the high-priority task queue, or it is determined at 501 that the number of high-priority tasks that have been executed (from the last reset of the counter) does not exceed the threshold, Then it is determined at 505 whether there are any normal priority tasks waiting in the normal priority task queue. If so, the normal priority task is selected at 506 and sent to the appropriate decoder (see, for example, FIG. 4), where the selected task is executed at 504.
在504處已經執行了所選擇的任務之後(無論其是高優先順序任務還是正常優先順序任務),在507處,結果被發送到完成狀態佇列233、234以用於例如如圖6所示進行報告。在已經報告結果之後或者如果在505處確定了不存在正常優先順序任務在正常優先順序任務佇列中等待,則在508處確定是否存在任何任務要被執行。如果是,則流程返回到501。如
果在508處確定了沒有任何任務要執行,則過程500結束。
After the selected task has been executed at 504 (regardless of whether it is a high-priority task or a normal-priority task), at 507, the result is sent to the
圖6是示出用於報告解碼任務的完成的一個可能過程600的實現的流程圖。在601處,確定是否存在任何未報告的已完成的高優先順序解碼任務(例如,在高優先順序完成狀態佇列234中)。如果是,則在602處報告下一個已完成的高優先順序任務的通知,並且流程返回到601以尋找更多未被報告的已完成的解碼任務。如果在601處確定了不存在未報告的已完成的高優先順序解碼任務,則在603處確定是否存在任何未報告的已完成的正常優先順序解碼任務(例如,在正常優先順序完成狀態佇列233中)。如果是,則在604處報告下一個已完成的正常優先順序任務的通知,並且流程返回到601以尋找更多未報告的已完成的高優先順序解碼任務。如果在603處確定了不存在未報告的已完成的正常優先順序解碼任務,則過程600結束。然而,應當注意,類似於上述用於從佇列221、222釋放任務的各種可能的規則集合的其他報告規則集合也可以應用於任務完成的報告。
Fig. 6 is a flowchart showing the implementation of one
因此,可以看出,提供了解碼裝置和相應的方法,其中可以通過即使可能發生需要重試操作的偶然的失敗也對大多數記憶體存取操作使用更簡單和更快的解碼方案,同時對較高優先順序的解碼任務使用更複雜和耗時的解碼方案,來最大化總體輸送量。還可以看出,在“插隊”特徵下,較高優先順序解碼任務可以在正常優先順序解碼任務之前被執行,即使較高優先順序解碼任務稍晚啟動,但是如上所述,如果正常優先順序任務由於稍晚到達的較高優先順序任務而必須等待過長,則正常優先順序任務本身也可以提高其優先順序。 Therefore, it can be seen that a decoding device and corresponding method are provided, in which a simpler and faster decoding scheme can be used for most memory access operations even if an accidental failure requiring retry operations may occur, while Higher priority decoding tasks use more complex and time-consuming decoding schemes to maximize overall throughput. It can also be seen that under the "jump in queue" feature, the higher priority decoding task can be executed before the normal priority decoding task, even if the higher priority decoding task starts later, but as mentioned above, if the normal priority task Because the higher priority tasks arriving later have to wait too long, the normal priority tasks themselves can also increase their priority.
本發明的其他方面涉及下述條款中的一個或多個: Other aspects of the invention involve one or more of the following clauses:
條款1:一種用於在NAND閃速記憶體控制器中執行解碼任務的裝置,所述裝置包括:用於對第一優先順序的解碼任務進行排隊的第一任務佇列;用於對高於第一優先順序的第二優先順序的解碼任務進行排隊的第二任務佇列;以及控制電路,該控制電路在接收到用於多個解碼任務的資料部分時,從第一任務佇列和所述第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操。 Clause 1: A device for executing decoding tasks in a NAND flash memory controller, the device comprising: a first task queue for queuing decoding tasks in a first priority order; The second task queue in which the decoding tasks in the second priority order of the first priority order are queued; and a control circuit that, when receiving data parts for multiple decoding tasks, starts from the first task queue and the The second task queue releases corresponding decoding tasks among the plurality of decoding tasks, so as to operate corresponding parts in the data part according to the priority order of the corresponding decoding tasks among the plurality of decoding tasks.
條款2:根據條款1所述的裝置,其中,NAND閃速記憶體控制器包括多個記憶體通道,並且其中,所述裝置進一步包括:針對多個通道中的每個相應通道的相應第一任務佇列、以及針對多個通道中的每個相應通道的相應第二任務佇列;至少一個第一解碼器,在第一改錯碼解碼方案下進行操作;至少一個第二解碼器,在第二改錯碼解碼方案下進行操作,第二改錯碼解碼方案在速度和複雜度中的一個或二者方面不同於第一改錯碼解碼方案;以及輸入切換電路,可控制地將每個資料通道連接到所述第一解碼器和所述第二解碼器中的一個;其中,控制電路包括針對每個相應通道的相應通道任務控制塊,以用於從針對該相應通道的相應第一任務佇列和第二任務佇列中釋放解碼任務,以控制輸入切換電路將針對相應通道的相應資料引導到第一解 碼器和第二解碼器中的一個。 Clause 2: The device according to Clause 1, wherein the NAND flash memory controller includes a plurality of memory channels, and wherein the device further includes: a corresponding first channel for each of the plurality of channels The task queue and the corresponding second task queue for each corresponding channel in the multiple channels; at least one first decoder operating under the first error correction code decoding scheme; at least one second decoder operating under the It operates under the second error correction code decoding scheme, which is different from the first error correction code decoding scheme in one or both of speed and complexity; and the input switching circuit, which controllably switches each Data channels are connected to one of the first decoder and the second decoder; wherein, the control circuit includes a corresponding channel task control block for each corresponding channel for downloading from the corresponding first decoder for the corresponding channel The decoding task is released in the first task queue and the second task queue to control the input switching circuit to guide the corresponding data for the corresponding channel to the first solution One of the encoder and the second decoder.
條款3:根據條款2所述的裝置,其中:至少一個第一解碼器包括多個第一解碼器;至少一個第二解碼器包括多個第二解碼器;以及輸入切換電路包括:針對每個相應通道的相應解複用器,用於將相應通道上的資料可選擇地引導到多個第一解碼器和多個第二解碼器中的一個,第一開關,用於將針對多個第一解碼器的解複用器輸出引導到多個第一解碼器中的可用第一解碼器,以及第二開關,用於將針對所述多個第二解碼器的解複用器的輸出引導到所述多個第二解碼器中的可用第二解碼器。 Clause 3: The device according to Clause 2, wherein: at least one first decoder includes a plurality of first decoders; at least one second decoder includes a plurality of second decoders; and the input switching circuit includes: for each The corresponding demultiplexer of the corresponding channel is used to guide the data on the corresponding channel to one of a plurality of first decoders and a plurality of second decoders. The demultiplexer output of a decoder is directed to the available first decoder among the plurality of first decoders, and a second switch is used to direct the output of the demultiplexer for the plurality of second decoders To an available second decoder among the plurality of second decoders.
條款4:根據條款2所述的裝置,進一步包括:針對每個相應通道的相應緩衝器,用於保持在該相應通道上接收的資料,直至與所述資料相對應的解碼任務從所述第一任務佇列和第二任務佇列中的一個釋放。 Clause 4: The device according to Clause 2, further comprising: a corresponding buffer for each corresponding channel for holding the data received on the corresponding channel until the decoding task corresponding to the data starts from the first One of the first task queue and the second task queue is released.
條款5:根據條款2所述的裝置,進一步包括:輸出切換電路,該輸出切換電路用於輸出第一解碼器和第二解碼器中的一個的輸出;其中:控制電路包括解碼器完成控制電路,解碼器完成控制電路在從所述第一解碼器和所述第二解碼器中的一個接收到解碼器完成信號時,選擇所述第一解碼器和所述第二解碼器中的一個的輸出。 Clause 5: The device according to Clause 2, further comprising: an output switching circuit for outputting the output of one of the first decoder and the second decoder; wherein: the control circuit includes a decoder completion control circuit , The decoder completion control circuit, when receiving a decoder completion signal from one of the first decoder and the second decoder, selects one of the first decoder and the second decoder Output.
條款6:根據條款5所述的裝置,進一步包括:用於對第一優先順序的已完成的解碼任務進行排隊的第一任務完成佇列;以及 用於對第二優先順序的已完成的解碼任務進行排隊的第二任務完成佇列;其中:解碼器完成控制電路將每個已完成的解碼任務載入到第一任務完成佇列和第二任務完成佇列中的一個中;並且控制電路進一步包括解碼器完成狀態控制電路,該解碼器完成狀態控制電路根據已完成的解碼任務的優先順序報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。 Clause 6: The device according to Clause 5, further comprising: a first task completion queue for queuing completed decoding tasks in the first priority order; and The second task completion queue for queuing the completed decoding tasks in the second priority order; wherein: the decoder completion control circuit loads each completed decoding task into the first task completion queue and the second One of the task completion queues; and the control circuit further includes a decoder completion status control circuit, the decoder completion status control circuit reports from the first task completion queue and the second task completion according to the priority order of the completed decoding tasks The completed decoding tasks in the queue.
條款7:根據條款1所述的裝置,進一步包括:緩衝器,該緩衝器用於保持從NAND閃速記憶體接收的資料,直至與資料相對應的解碼任務從第一任務佇列和第二任務佇列中的一個中被釋放。 Clause 7: The device according to clause 1, further comprising: a buffer for holding the data received from the NAND flash memory until the decoding task corresponding to the data is queued from the first task and the second task One of the queues was released.
條款8:根據條款1所述的裝置,進一步包括:用於對第一優先順序的已完成的解碼任務進行排隊的第一任務完成佇列;以及用於對第二優先順序的已完成的解碼任務進行排隊的第二任務完成佇列;其中:所述控制電路根據所述已完成的解碼任務的優先順序來報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。 Clause 8: The device according to clause 1, further comprising: a first task completion queue for queuing completed decoding tasks in the first priority order; and a completed decoding task in the second priority order The second task completion queue where tasks are queued; wherein: the control circuit reports the completed decoding from the first task completion queue and the second task completion queue according to the priority order of the completed decoding tasks task.
條款9:一種用於在NAND閃速記憶體控制器中執行解碼任務的方法,所述方法包括:在第一任務佇列中對第一優先順序的解碼任務進行排隊;在第二任務佇列中對高於所述第一優先順序的第二優先順序的解碼任務進行排隊;以及 在接收到用於多個解碼任務的資料部分時,從第一任務佇列和第二任務佇列中釋放所述多個解碼任務中的相應解碼任務,以根據多個解碼任務中的相應解碼任務的優先順序來對所述資料部分中的相應部分進行操作。 Clause 9: A method for executing decoding tasks in a NAND flash memory controller, the method comprising: queuing decoding tasks of the first priority in a first task queue; and in a second task queue Queuing decoding tasks in a second priority order higher than the first priority order; and When the data part for multiple decoding tasks is received, the corresponding decoding tasks in the multiple decoding tasks are released from the first task queue and the second task queue, so that the corresponding decoding tasks in the multiple decoding tasks are The priority of the task is to operate on the corresponding part of the data part.
條款10:根據條款9所述的方法,其中,NAND閃速記憶體控制器包括多個記憶體通道,並且其中:對第一優先順序的解碼任務進行排隊包括:針對所述多個通道中的每個相應通道來在相應第一任務佇列中對解碼任務進行排隊;以及對第二優先順序的解碼任務進行排隊包括:針對所述多個通道中的每個相應通道來在相應第二任務佇列中對解碼任務進行排隊;所述方法進一步包括:將每個資料通道可控制地連接到第一解碼器和第二解碼器中的一個,第一解碼器在第一改錯碼解碼方案下進行操作,第二解碼器在第二改錯碼解碼方案下進行操作,第二改錯碼解碼方案在速度和複雜度中的一個或二者方面不同於第一改錯碼解碼方案。 Clause 10: The method according to Clause 9, wherein the NAND flash memory controller includes a plurality of memory channels, and wherein: queuing the decoding tasks in the first priority order includes: Queuing the decoding task in the corresponding first task queue for each corresponding channel; and queuing the decoding task in the second priority order includes: performing the corresponding second task on each corresponding channel in the plurality of channels The decoding tasks are queued in the queue; the method further includes: each data channel is controllably connected to one of the first decoder and the second decoder, and the first decoder is in the first error correction code decoding scheme The second decoder operates under the second error correction code decoding scheme, and the second error correction code decoding scheme is different from the first error correction code decoding scheme in one or both of speed and complexity.
條款11:根據條款10所述的方法,其中,可控制地連接包括:將每個資料通道可控制地連接到多個第一解碼器和多個第二解碼器中的一個,多個第一解碼器在所述第一改錯碼解碼方案下進行操作,多個第二解碼器在所述第二改錯碼解碼方案下進行操作。 Clause 11: The method according to clause 10, wherein the controllably connecting includes: connecting each data channel to one of a plurality of first decoders and a plurality of second decoders, and a plurality of first decoders The decoder operates under the first error correction code decoding scheme, and multiple second decoders operate under the second error correction code decoding scheme.
條款12:根據條款10的方法,進一步包括:針對每個相應通道,將在所述相應通道上接收的資料保持在緩衝器中,直至與所述資料相對應的解碼任務從所述第一任務佇列和第二任務佇列中釋放。 Clause 12: The method according to Clause 10, further comprising: for each corresponding channel, keeping the data received on the corresponding channel in a buffer until the decoding task corresponding to the data is removed from the first task Release in the queue and the second task queue.
條款13:根據條款10所述的方法,進一步包括:在第一任務完成佇列中對所述第一優先順序的已完成的解碼任務進行排隊;以及在第二任務完成佇列中對第二優先順序的已完成的解碼任務進行排隊;以及根據所述已完成的解碼任務的優先順序來報告來自所述第一任務完成佇列和所述第二任務完成佇列的已完成的解碼任務。 Clause 13: The method according to clause 10, further comprising: queuing the completed decoding tasks of the first priority order in a first task completion queue; and queuing a second task in a second task completion queue The completed decoding tasks in the priority order are queued; and the completed decoding tasks from the first task completion queue and the second task completion queue are reported according to the priority order of the completed decoding tasks.
條款14:根據條款9所述的方法,進一步包括將從NAND閃速記憶體接收的資料保持在緩衝器中,直至與所述資料相對應的解碼任務從所述第一任務佇列和所述第二任務佇列中的一個中被釋放。 Clause 14: The method according to clause 9, further comprising keeping the data received from the NAND flash memory in a buffer until the decoding task corresponding to the data is queued from the first task and the One of the second task queue is released.
條款15:根據條款9所述的方法,進一步包括:在第一任務完成佇列中對第一優先順序的已完成的解碼任務進行排隊;以及在第二任務完成佇列中對第二優先順序的已完成的解碼任務進行排隊;以及根據已完成的解碼任務的優先順序來報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務。 Clause 15: The method according to Clause 9, further comprising: queuing the completed decoding tasks in the first priority order in the first task completion queue; and queuing the second priority order in the second task completion queue Queue the completed decoding tasks; and report the completed decoding tasks from the first task completion queue and the second task completion queue according to the priority of the completed decoding tasks.
條款16:根據條款15所述的方法,其中,根據已完成的解碼任務的優先順序報告來自所述第一任務完成佇列和所述第二任務完成佇列中的已完成的解碼任務包括:在報告所述第一優先順序的任何已完成的解碼任務之前,報告所述第二優先順序的所有已完成的解碼任務。 Clause 16: The method according to Clause 15, wherein the reporting of completed decoding tasks from the first task completion queue and the second task completion queue according to the priority of the completed decoding tasks includes: Before reporting any completed decoding tasks in the first priority order, report all completed decoding tasks in the second priority order.
條款17:進一步包括:在第一任務完成佇列中的已完成的解 碼任務的排隊之後的預定持續時間之後,將已完成的解碼任務的優先順序水準從第一優先順序改變為所述第二優先順序。 Article 17: Further includes: the completed solution in the first task completion queue After a predetermined duration after the queuing of the code task, the priority level of the completed decoding task is changed from the first priority order to the second priority order.
條款18:根據條款15所述的方法,其中,根據已完成的解碼任務的優先順序來報告來自第一任務完成佇列和第二任務完成佇列中的已完成的解碼任務包括:在報告來自第二任務完成佇列中的預定數目的任務之後,報告來自第一任務完成佇列的任務。 Clause 18: The method according to clause 15, wherein reporting the completed decoding tasks from the first task completion queue and the second task completion queue according to the priority of the completed decoding tasks includes: After the second task completes the predetermined number of tasks in the queue, the task from the first task complete queue is reported.
條款19:根據條款9所述的方法,其中,從第一任務佇列和第二任務佇列中釋放多個解碼任務中的相應解碼任務,以根據在多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操作包括:在釋放第一優先順序的任何解碼任務之前,釋放第二優先順序的所有解碼任務。 Clause 19: The method according to Clause 9, wherein the corresponding decoding task among the plurality of decoding tasks is released from the first task queue and the second task queue, so that the corresponding decoding task in the plurality of decoding tasks The priority order to operate the corresponding part of the data part includes: releasing all decoding tasks in the second priority order before releasing any decoding tasks in the first priority order.
條款20:根據條款19所述的方法,進一步包括:在對第一任務佇列中的解碼任務的進行排隊之後的預定持續時間之後,將解碼任務的優先順序水準從第一優先順序改變為所述第二優先順序。 Clause 20: The method according to Clause 19, further comprising: after a predetermined duration after queuing the decoding tasks in the first task queue, changing the priority level of the decoding tasks from the first priority order to all the decoding tasks. The second priority order.
條款21:根據條款9所述的方法,其中,從第一任務佇列和第二任務佇列中釋放多個解碼任務中的相應解碼任務,以根據在多個解碼任務中的相應解碼任務的優先順序來對資料部分中的相應部分進行操作包括:在釋放來自第二任務佇列中的預定數目的任務之後,釋放來自所述第一任務佇列的任務。 Clause 21: The method according to Clause 9, wherein the corresponding decoding task among the plurality of decoding tasks is released from the first task queue and the second task queue, so that the corresponding decoding task in the plurality of decoding tasks Prioritizing operations on corresponding parts in the data part includes: releasing tasks from the first task queue after releasing a predetermined number of tasks from the second task queue.
如本文和所附申請專利範圍中所使用的,結構“A和B中的一個”將意指“A或B”。 As used herein and in the scope of the appended application, the structure "one of A and B" will mean "A or B."
應當理解,前述僅是說明本發明的原理,並且本發明可以通 過除了所描述的實施例之外的其他實施例來實踐,所述實施例是為了說明而不是限制的目的而呈現的,並且本發明僅由所附申請專利範圍限定。 It should be understood that the foregoing is only to illustrate the principle of the present invention, and the present invention can be It is practiced through other embodiments in addition to the described embodiments, which are presented for the purpose of illustration rather than limitation, and the present invention is only limited by the scope of the attached patent application.
130‧‧‧處理器 130‧‧‧Processor
102‧‧‧主機 102‧‧‧Host
111‧‧‧主機介面 111‧‧‧Host Interface
112‧‧‧ECC編碼器 112‧‧‧ECC encoder
113‧‧‧NAND閃速介面 113‧‧‧NAND flash interface
123‧‧‧主機介面 123‧‧‧Host Interface
122‧‧‧ECC解碼器 122‧‧‧ECC Decoder
121‧‧‧NAND閃速介面 121‧‧‧NAND flash interface
100‧‧‧NAND閃速控制器 100‧‧‧NAND Flash Controller
101‧‧‧NAND閃速記憶體 101‧‧‧NAND flash memory
Claims (19)
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 TW201729200A (en) | 2017-08-16 |
TWI713648B true TWI713648B (en) | 2020-12-21 |
Family
ID=59020757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105140915A TWI713648B (en) | 2015-12-11 | 2016-12-09 | Queuing of decoding tasks according to priority in nand flash controller |
Country Status (4)
Country | Link |
---|---|
US (1) | US10089175B2 (en) |
KR (1) | KR20170074759A (en) |
CN (1) | CN106874081B (en) |
TW (1) | TWI713648B (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7048289B2 (en) * | 2017-12-08 | 2022-04-05 | キオクシア株式会社 | Information processing equipment and methods |
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 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110213945A1 (en) * | 2010-02-26 | 2011-09-01 | Apple Inc. | Data partitioning scheme for non-volatile memories |
US20150100726A1 (en) * | 2013-10-03 | 2015-04-09 | Cleversafe, Inc. | Dispersed storage system with width dispersal control and methods for use therewith |
Family Cites Families (13)
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 (en) * | 1996-04-19 | 1999-06-15 | 윤종용 | Priority processing circuit of MPEG system |
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 |
CN102203752B (en) * | 2008-07-29 | 2014-04-30 | 新诺普系统公司 | 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 |
CN102480337B (en) * | 2010-11-30 | 2016-04-13 | 国际商业机器公司 | Radio software system and for its decoding device and method |
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 |
US9727275B2 (en) * | 2014-12-02 | 2017-08-08 | International Business Machines Corporation | Coordinating storage of data in dispersed storage networks |
CN104850456A (en) * | 2015-05-27 | 2015-08-19 | 苏州科达科技股份有限公司 | Multi-process decoding method and multi-process decoding system |
-
2016
- 2016-12-06 US US15/370,596 patent/US10089175B2/en active Active
- 2016-12-08 KR KR1020160166829A patent/KR20170074759A/en not_active Application Discontinuation
- 2016-12-09 CN CN201611132290.0A patent/CN106874081B/en active Active
- 2016-12-09 TW TW105140915A patent/TWI713648B/en active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110213945A1 (en) * | 2010-02-26 | 2011-09-01 | Apple Inc. | Data partitioning scheme for non-volatile memories |
US20150100726A1 (en) * | 2013-10-03 | 2015-04-09 | Cleversafe, Inc. | Dispersed storage system with width dispersal control and methods for use therewith |
Also Published As
Publication number | Publication date |
---|---|
TW201729200A (en) | 2017-08-16 |
US10089175B2 (en) | 2018-10-02 |
US20170168895A1 (en) | 2017-06-15 |
CN106874081A (en) | 2017-06-20 |
CN106874081B (en) | 2022-07-22 |
KR20170074759A (en) | 2017-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI713648B (en) | Queuing of decoding tasks according to priority in nand flash controller | |
US11467769B2 (en) | Managed fetching and execution of commands from submission queues | |
US20200127685A1 (en) | Systems and methods for a hybrid non-volatile storage system | |
JP5186382B2 (en) | Method and system for enabling indeterminate read data latency in a memory system | |
US9304952B2 (en) | Memory control device, storage device, and memory control method | |
CN100388253C (en) | Dma transfer controller | |
CN106874210B (en) | Controller for semiconductor memory device and method of operating the same | |
TWI249674B (en) | A method, article and apparatus for providing flexible bandwidth allocation via multiple instantiations of separate buses | |
JPS58109951A (en) | Stoppage device for memory controller with interleave queuing unit | |
JP2009087332A (en) | Apparatus, system, method and program for collecting dump data | |
US20140325124A1 (en) | Memory system and method for operating a memory system | |
US10503438B1 (en) | Memory sub-system supporting non-deterministic commands | |
US20220083266A1 (en) | Plane-based queue configuration for aipr-enabled drives | |
US20130173997A1 (en) | Memory controller, memory system, and memory write method | |
US20070156937A1 (en) | Data transfer in multiprocessor system | |
ES2381233T3 (en) | Method and apparatus for data processing using the queuing field | |
JP2006092521A (en) | Nonvolatile memory storage device including interface select switch, and associated method | |
US7272692B2 (en) | Arbitration scheme for memory command selectors | |
KR101747794B1 (en) | Error correction decoder and error correction method thereof | |
US20230030672A1 (en) | Die-based high and low priority error queues | |
KR20210084632A (en) | Open Channel Vector Command Execution | |
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 | |
EP0802683A2 (en) | Data priority processing for MPEG system | |
JP2006202271A (en) | Stream processor and information processor |