[go: up one dir, main page]

TWI893205B - 由通信耦接到nand記憶體裝置的處理器排程錯誤恢復指令的方法 - Google Patents

由通信耦接到nand記憶體裝置的處理器排程錯誤恢復指令的方法

Info

Publication number
TWI893205B
TWI893205B TW110133611A TW110133611A TWI893205B TW I893205 B TWI893205 B TW I893205B TW 110133611 A TW110133611 A TW 110133611A TW 110133611 A TW110133611 A TW 110133611A TW I893205 B TWI893205 B TW I893205B
Authority
TW
Taiwan
Prior art keywords
die
queue
plane
error recovery
read
Prior art date
Application number
TW110133611A
Other languages
English (en)
Other versions
TW202230112A (zh
Inventor
吉安 普拉卡什
維杰 桑卡
蘇雷什 卡普拉普
阿米特 庫馬爾
Original Assignee
日商鎧俠股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日商鎧俠股份有限公司 filed Critical 日商鎧俠股份有限公司
Publication of TW202230112A publication Critical patent/TW202230112A/zh
Application granted granted Critical
Publication of TWI893205B publication Critical patent/TWI893205B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

與AIPR支援的NAND記憶體耦接的處理器包括一個n乘 m的晶粒陣列(具有 n個通道,每個晶粒都具有第一和第二獨立存取的平面),接收包括存取晶粒的平面上資料的指令的讀取命令。處理器確定命令的目的晶粒平面,並根據確定的目的晶粒平面將命令發送到晶粒平面佇列。處理器為目的晶粒的第一平面從第一晶粒平面佇列的開頭獲取命令,且為目的晶粒的第二平面從第二晶粒平面佇列的開頭獲取命令,並根據命令對於目的晶粒的第一和第二平面二者同時執行讀取。

Description

由通信耦接到NAND記憶體裝置的處理器排程錯誤恢復指令的方法
本發明基本上關於在致能非同步獨立平面讀取("AIPR")的記憶體裝置的處理器上排程訊息的系統和方法。
在記憶體系統(如固態驅動器("SSD")中,記憶體裝置的陣列透過複數個記憶體通道連接到記憶體控制器。記憶體控制器中的處理器維護每個通道的記憶體命令的佇列,並排程傳輸到記憶體裝置的命令。
資料被寫入記憶體裝置中的一或多個頁面。多個頁面在裝置內形成一個區塊,且區塊被組織成二個物理平面。通常,一個平面包括奇數區塊,另一個平面包括偶數區塊。寫入到裝置的資料可由SSD的記憶體控制器從 裝置中存取和讀出。
習知的記憶體控制器處理器根據循環選擇方法在佇列中排程記憶體命令,在所選擇佇列的開頭排程命令以傳輸到記憶體裝置。記憶體控制器處理器從各種來源排程各種類型的記憶體命令和訊息。習知地,控制器會一次向晶粒排程特定類型的讀取命令,但未考慮晶粒內讀取命令的位置。
當讀取記憶體命令無法正確讀取資料時,則處理器嘗試錯誤校正。如果失敗,習知地,處理器會創建一或多個新命令,放置在單個錯誤恢復佇列中,以嘗試恢復資料。對原始讀取命令的回應必須等到資料恢復完成,這增加遇到故障的讀取命令的延遲。當許多讀取錯誤在短時間內發生時,大量錯誤恢復命令將被添加到單個佇列中,以序列方式處理,進一步增加讀取命令的延遲。
習知的將命令分組為單個佇列並沒有考慮向記憶體控制器處理器發出的讀取命令的不同類型和優先權,包括主機發起的讀取命令和記憶體控制器創建的內部讀取命令。例如,主機發出的具有嚴格延遲要求的讀取命令可能會置於在佇列中等待排程的內部讀取錯誤恢復命令之後。隨著記憶體裝置上的磨損會隨著機體老化和報告錯誤數量的增加而增加,這些問題變得更加顯著和造成問題。
因此,記憶體控制器需要很長時間才能有效地將命令排程到記憶體裝置,這一需求是長期感受和未得 到滿足的。
在一個態樣中,可排程讀取命令的處理器是通信耦接到NAND記憶體裝置,該NAND記憶體裝置具有有n個通道的n x m陣列的NAND記憶體晶粒,其中該n個通道的每個通道通信耦接到m個NAND記憶體,並且每個n x m個NAND記憶體晶粒具有第一平面和第二平面,該第一平面和該第二平面是獨立存取的。一種用於使用該處理器來排程讀取命令的方法,包括接收第一命令,以對該n x m陣列的NAND記憶體的記憶體晶粒的目的晶粒執行第一讀取,確定該第一讀取命令的該目的晶粒和第一目的平面,並且將該第一讀取命令發送到與該目的晶粒和該第一目的平面相關的第一晶粒平面佇列。
在另一個態樣中,一種用於在處理器的排程讀取命令的系統,包括具有n個通道的n x m陣列的NAND記憶體晶粒的NAND記憶體裝置,包括,其中該n個通道的每個通道通信耦接到m個NAND記憶體,並且每個n x m個NAND記憶體晶粒具有第一平面和第二平面,該第一平面和該第二平面是獨立存取的。該系統還包括通信耦接到該NAND記憶體裝置的處理器,該處理器具有邏輯配置以處理從該NAND記憶體裝置請求資料的讀取命令,以及用於n x m陣列的每個NAND記憶體晶粒的該第一平面和該第二平面的每個的晶粒佇列。該處理器接收第一命令,以對該n x m陣列的NAND記憶體的記憶體晶粒的目的晶粒執行第一讀取,確定該第一讀取命令的該目的晶粒和第一目的平面,並且將該第一讀取命令發送到與該目的晶粒和該第一目的平面相關的第一晶粒平面佇列。
100:SSD記憶體裝置系統
102:主機
103:匯流排
104:SSD
106:ASIC
108:NAND記憶體裝置
110:主機介面
112:內部匯流排
114:快閃記憶體轉換層
116:記憶體命令
117:查找表(LUT)
118:快閃記憶體介面層
129:LUT引擎
119:快閃介面中央處理單元(CPU)
121:快閃記憶體介面控制器
120:第一通道
122:第二通道
124:庫
126:第一庫
128:第二庫
130:庫
132:第三庫
134:第四庫
200:方塊圖
1,2,3,4,5,6,7:步驟
208:NAND記憶體裝置
219:快閃記憶體介面中央處理單元(CPU)
221:快閃記憶體介面控制器
236:IPC佇列
262:傳輸
264,266,268,272:路徑
273:第一晶粒
274:第二晶粒
275:第三晶粒
276:第四晶粒
277:第五晶粒
278:第六晶粒
279:第七晶粒
280:第八晶粒
300:方塊圖
301:IPC佇列
302:第一晶粒讀取命令佇列
304:第二晶粒讀取命令佇列
306:第三晶粒讀取命令佇列
308:第四晶粒讀取命令佇列
310:第五晶粒讀取命令佇列
312:第六晶粒讀取命令佇列
314:第七晶粒讀取命令佇列
316:第八晶粒讀取命令佇列
P0:第一平面
P1:第二平面
318:選擇
320:第一次排程迭代
322:第二次排程迭代
324:第三次排程迭代
326:第四次排程迭代
328:方塊圖
329:IPC佇列
330:第一晶粒平面讀取命令佇列
332:第二晶粒平面讀取命令佇列
334:第三晶粒平面讀取命令佇列
336:第四晶粒平面讀取命令佇列
338:第五晶粒平面讀取命令佇列
340:第六晶粒平面讀取命令佇列
342:第七晶粒平面讀取命令佇列
344:第八晶粒平面讀取命令佇列
346:第一次排程迭代
350:第二次排程迭代
352:第三次排程迭代
354:第四次排程迭代
450:方塊圖
452,462,464,474:步驟
454:高優先權基於晶粒的讀取錯誤恢復訊息佇列
456:基於晶粒的主機讀取命令佇列
458:低優先權讀取錯誤恢復訊息佇列
460:低優先權命令佇列
466,468,470,472:命令
455:主機讀取命令佇列
477,464,496:步驟
481:基於晶粒平面的高優先權讀取錯誤恢復訊息佇列
480:基於晶粒平面的主機讀取命令佇列
479:基於晶粒平面的低優先權讀取錯誤恢復訊息佇列
478:低優先權命令佇列
482,484,486:平面P0
483,485,487:平面P1
489,490,491,492,493,494,495:命令
500:映射
502:晶粒平面錯誤恢復訊息佇列
504:通道
506:庫
508:平面
600:方法
602,604,606,608,610,612:步驟
700:方法
702,704,706,708,710:步驟
結合圖式考慮以下詳細描述後,上述和其他目的和優點將變得顯而易見,其中類似的參考符號始終是指類似的部分,其中:[圖1]示出支援錯誤恢復訊息排程和讀取命令的固態驅動器("SSD")記憶體裝置系統的方塊圖;[圖2]示出SSD記憶體裝置中讀取命令和讀取錯誤的過程的方塊圖;[圖3A]示出不具有晶粒平面讀取命令佇列的訊息排程的過程的方塊圖;[圖3B]示出具有晶粒平面讀取命令佇列的訊息排程的過程的方塊圖;[圖4A]示出基於晶粒佇列的訊息排程的過程的方塊圖;[圖4B]示出具有晶粒平面佇列的訊息排程的過程的方塊圖;[圖5]示出對基於晶粒和平面的4通道x4庫配置的讀取命令的映射的方塊圖;[圖6]示出使用晶粒平面錯誤恢復佇列的讀 取命令的錯誤恢復的方法的流程圖;和[圖7]示出將錯誤恢復訊息排程到晶粒的多個平面的方法的流程圖。
為了提供對本文所述的裝置的整體理解,將描述一些說明性實施例。儘管這裡描述的實施例和特徵被具體描述為結合具有控制器的SSD使用,但應當理解,下面概述的所有組件和其他特徵可以以任何適當的方式相互組合,並可以調整和應用於需要在晶粒陣列上排程各種命令的其他類型的SSD架構。
圖1示出SSD記憶體裝置系統100的方塊圖。SSD記憶體裝置系統100包括藉由匯流排103通信耦接到主機102的SSD 104。SSD 104包括特殊應用積體電路("ASIC")106和NAND記憶體裝置108。ASIC 106包括主機介面110、快閃記憶體轉換層114和快閃記憶體介面層118。主機介面110透過內部匯流排112通信耦接到快閃記憶體轉換層114。快閃記憶體轉換層114包括查找表("LUT")117和LUT引擎129。快閃記憶體轉換層114將記憶體命令116傳輸到快閃記憶體介面層118。快閃記憶體介面層118包括快閃記憶體介面中央處理單元("CPU")119和快閃記憶體介面控制器121。快閃記憶體介面CPU 119控制快閃記憶體介面控制器121。快閃記憶體介面層118通信耦接到快閃記憶體控制器121,快閃記憶體控制器121透過多個 NAND記憶體通道通信耦接到NAND記憶體裝置108。為了清楚起見,在此示出二個通道,但任意數量的通道都可能將快閃記憶體介面控制器121與NAND記憶體裝置108中的記憶體耦接。如所示,快閃記憶體介面控制器121由第一通道(Ch 0)120耦接到記憶體晶粒的多個庫124,在此包括第一庫126和第二庫128。快閃記憶體介面控制器121由第二通道(Ch 1)122耦接到記憶體晶粒的多個庫130,在此包括第三庫132和第四庫134。雖然圖1中對於每個通道只示出二個庫,但任何數量的庫都可以與通道耦接。
第一庫126、第二庫128、第三庫132和第四庫134每個都有第一平面和第二平面(為清楚起見而未示出)。平面通常被稱為偶數(P0)和奇數(P1)。致能AIPR的SSD 104允許獨立存取每個庫的平面,以便可以同時存取第一和第二平面。在對庫執行讀取命令期間,可以獨立存取任一平面上的單個集群。
SSD 104從主機102接收各種儲存協定命令,以存取儲存在NAND記憶體裝置108中的資料。命令首先由快閃記憶體轉換層114解譯為一或多個記憶體命令116,該等記憶體命令在多個佇列中路由到快閃記憶體介面層118,例如多個過程間通信("IPC")佇列。SSD 104還可以產生內部命令和訊息,其需要存取儲存在NAND記憶體裝置108中的資料,其也被路由到快閃記憶體介面層118的IPC佇列。快閃記憶體介面層118將命令和訊息指派給相應的IPC佇列,然後從由快閃記憶體介面CPU 119排程和處理 的佇列中獲取命令。快閃記憶體介面CPU 119向快閃記憶體控制器121發送指令,以便根據預定的命令和訊息執行各種任務。向IPC佇列分發命令和訊息的過程以及獲取和處理命令和訊息的快閃記憶體介面CPU 119是在圖2中進一步描述。雖然在此描述了IPC佇列,但路由到快閃記憶體介面層的各種命令和訊息可以指派給任何適當的佇列,佇列不必是IPC佇列。
如本文所使用,技藝人士會理解"訊息"一詞,即傳達包括資訊的指示(directive)的一種手段。技藝人士將理解「錯誤恢復訊息」一詞指包括有關記憶體晶粒錯誤中發生的情況以及如何從錯誤中恢復的資訊的指令或指示。在此使用的錯誤恢復訊息也可以理解為通信、報告、任務、命令或請求執行錯誤恢復,以便回應錯誤恢復訊息的內容,CPU形成命令,對記憶體晶粒執行錯誤恢復操作。例如,錯誤恢復訊息可能導致向記憶體晶粒發出一組讀取命令,從而定義讀取命令的不同電壓臨限值。雖然在此描述了IPC佇列,但路由到快閃記憶體介面層的各種命令和訊息可以指派給任何適當的佇列,佇列不必是IPC佇列。
圖2示出在SSD記憶體裝置(如圖1中的SSD 104)中處理讀取命令和讀取錯誤恢復訊息(也在在此稱為讀取錯誤恢復指令)過程的方塊圖200。方塊圖200示出處理方法的流程,從IPC佇列236中的命令和訊息開始到快閃記憶體介面CPU 219、到快閃記憶體控制器221、和到 NAND記憶體裝置208。快閃記憶體介面CPU 219和快閃記憶體控制器221是快閃記憶體介面中的組件(例如圖1的快閃記憶體介面層118)。在步驟1,快閃記憶體介面CPU 219從IPC佇列236中的佇列開頭獲取了一個讀取命令作為IPC訊息。快閃記憶體介面CPU 219根據排程演算法從IPC佇列236的開頭獲取命令。在一些實施中,排程演算法是一種循環策略,它對每個佇列給予同等的優先權權重。在一些實施中,使用另一個排程演算法。在一些實施中,排程演算法使快閃記憶體介面CPU 219能夠根據所獲取的讀取訊息的屬性從佇列開頭獲取多個IPC訊息。在一些實施中,排程演算法使快閃記憶體介面CPU 219能夠從佇列中非佇列開頭的位置獲取命令。在一些實施中,排程演算法會考慮對IPC佇列236中的佇列的不同優先權。快閃記憶體介面CPU 219處理命令並將指令發出到快閃記憶體控制器221,以回應命令和訊息而在記憶體通道上向NAND記憶體裝置208發出記憶體命令信號。
在步驟2,快閃記憶體介面CPU 219根據收到的IPC訊息創建讀取封包,並將讀取封包傳輸262到快閃記憶體控制器221。快閃記憶體控制器221處理讀取封包,並在步驟3,路徑264上將讀取命令信號傳輸到NAND記憶體裝置208。快閃記憶體控制器221透過適當的通道(例如圖1中的第一通道(Ch 0)120或第二通道(Ch 1))將命令信號傳輸到NAND記憶體裝置208,以到達目的庫(例如圖1中的第一庫126、第二庫128、第三庫132或第四庫134)執行讀 取。讀取命令可能會要求目的庫的一個平面提供資料集群。快閃記憶體控制器221將命令信號傳輸到NAND記憶體裝置208的正確庫和平面,以存取讀取命令指定的資料。如下文所述,在一些實施中,當NAND記憶體裝置208屬於致能AIPR的SSD時,快閃記憶體控制器221能夠將命令信號傳輸到單個庫的多個平面,以便獨立地同時從平面上存取資料。NAND記憶體裝置208在圖2示出八個可用晶粒,包括第一晶粒273、第二晶粒274、第三晶粒275、第四晶粒276、第五晶粒277、第六晶粒278、第七晶粒279和第八晶粒280。每個晶粒包括一個偶數平面(P0)和奇數平面(P1),其彼此獨立。
在許多情況下,讀取命令將成功執行,但如果發生錯誤,快閃記憶體控制器221將嘗試錯誤恢復。例如,在步驟4,快閃記憶體控制器221在路徑266處檢測到回應NAND記憶體裝置208中讀取的嘗試執行以及任何讀取資料的指示。指示可表示執行記憶體讀取命令失敗,並且資料沒有返回,或者所述指示指示成功和資料返回。快閃記憶體控制器221使用錯誤校正碼("ECC")解碼器(為清楚起見而未示出)檢查返回的資料,該碼可能表示成功(資料已讀取成功)或失敗(已發生無法校正的ECC故障)。快閃記憶體控制器221透過路徑268在步驟5將記憶體讀取故障或ECC故障的指示傳輸到快閃記憶體介面CPU 219。針對因記憶體讀取故障或ECC故障而出現讀取錯誤的指示,快閃記憶體介面CPU 219必須嘗試使用各種讀取錯誤恢復方法 之一者以恢復資料。在一些實施中,快閃記憶體介面CPU 219執行增強的、更強的錯誤校正演算法,以嘗試校正已識別的錯誤。在一些實施中,快閃記憶體介面CPU 219根據錯誤恢復演算法確定新的記憶體單元臨限值電壓值,以嘗試恢復已識別的錯誤。在一些實施中,快閃記憶體介面CPU 219準備具有不同臨限值電壓值的一或多個讀取命令,以重新嘗試在NAND記憶體裝置208上讀取的記憶體。每個這些錯誤恢復演算法以及已知的替代錯誤恢復演算法和方法,都可以與在此描述的一或多個實施例組合使用。
在步驟6,快閃記憶體介面CPU 219準備新的錯誤恢復IPC訊息,包括有關讀取以執行必要恢復步驟的相關詳細資訊,並將IPC訊息傳輸到自己的IPC佇列以發出進一步讀取校正步驟。當一次發生多於一個讀取錯誤時,快閃記憶體介面CPU 219會創建更多錯誤恢復IPC訊息並添加到IPC佇列中。為了有效地處理這些錯誤恢復訊息,必須對訊息進行適當的分組。訊息和命令可以根據命令或訊息的類型進行分組,例如,分為回應訊息佇列組、錯誤恢復佇列組、主機讀取命令佇列組,和包括讀取、編寫和抹除主機啟動命令以外的命令的另一個命令佇列組,或任何其他適當分組。命令和訊息的優先權也可以在命令和訊息的分組中考慮。因此,在步驟6中,當快閃記憶體介面CPU 219將訊息傳輸到自己的IPC佇列時,必須將訊息指派到IPC佇列236中的相應佇列中。在一些實施中,快閃記憶體介面CPU 219將錯誤恢復IPC訊息傳輸到IPC佇列236中 的基於晶粒的佇列,並進一步指定晶粒中的目的平面,並將錯誤恢復IPC訊息傳輸到晶粒平面佇列中。IPC佇列236包括NAND記憶體裝置208中至少一個錯誤恢復IPC佇列,如下更詳細所述,可能包括對於每個晶粒的多個佇列,以考慮目的平面或錯誤恢復指令的優先權。
錯誤恢復IPC訊息是已發生錯誤的指示,也可包括有關錯誤類型和嚴重程度的指示,其指示當訊息到達其各自IPC佇列的開頭時如何處理該訊息。一旦錯誤恢復訊息到達IPC佇列的前面並獲取用於排程,快閃記憶體介面CPU 219將處理錯誤恢復訊息以確定訊息所需的操作。在步驟7,快閃記憶體介面CPU 219根據路徑272到快閃記憶體控制器221的錯誤IPC訊息發出讀取封包,用於傳輸到NAND記憶體裝置208。如上所述,在一些實施中,讀取封包包括更新的臨限電壓值,以嘗試恢復資料。在一些實施中,讀取封包透過另一種讀取錯誤校正或恢復方法處理資料恢復。重複步驟1-7,直到讀取錯誤完全校正。
透過將命令同時存取晶粒的平面來改進對致能AIPR的記憶體裝置的讀取命令的排程。同時將讀取命令排程到二個平面可減少隨機讀取命令延遲,因為存取平面的命令可以同樣排程,而不是僅僅排程在一個晶粒中,當多個讀取命令等待在一個平面上執行時,另一個平面可能根本無法存取。透過同時排程到多個平面,排程其他命令和訊息到致能AIPR記憶體裝置也可以改進,例如,可以使用晶粒平面佇列同時將錯誤恢復訊息排程到晶粒的第 一和第二平面。NAND記憶體裝置208的晶粒中阻止命令完成的錯誤是隨機發生的,並且可能會隨著晶粒的老化和磨損而增加。在習知系統中,所有錯誤恢復訊息都路由到單個錯誤恢復訊息IPC佇列,從而造成對訊息排程的長時間等待和資源的無效率使用。使用單個錯誤恢復訊息IPC佇列會導致大的延遲時間,並且沒有考慮到各種命令和回應這些命令的錯誤恢復訊息可能具有不同的優先權級別和可接受延遲的相關級別。此外,在讀取命令處理和讀取錯誤恢復命令處理過程二者中,未考慮在晶粒上目的平面會增加致能AIPR的驅動器的延遲。
圖3A示出不具有晶粒平面讀取命令佇列的訊息排程的過程的方塊圖300。圖3A說明了從IPC佇列301發送到CPU(例如圖1中的快閃記憶體介面CPU 119或圖2中的快閃記憶體介面CPU 219)的常規排程讀取命令的方法。IPC佇列301包括第一晶粒讀取命令佇列302、第二晶粒讀取命令佇列304、第三晶粒讀取命令佇列306、第四晶粒讀取命令佇列308、第五晶粒讀取命令佇列310、第六晶粒讀取命令佇列312、第七晶粒讀取命令佇列314,第八晶粒讀取命令佇列316。IPC佇列301中的每個晶粒讀取命令佇列都與特定通道和通道存取的特定庫或晶粒相關聯。例如,第一晶粒讀取命令佇列302含有用於通道0和庫0的讀取命令,而第二晶粒讀取命令佇列304含有用於通道1和庫0的讀取命令,以此類推。
IPC佇列301中的每個佇列都含有多個命令或 訊息,指示CPU在記憶體裝置的通道和庫上執行特定目的之讀取。對於每個排程迭代,CPU從每個基於晶粒的IPC佇列301的基於晶粒的讀取命令佇列的開頭中選擇一個用於排程的命令。然後,CPU執行第二次迭代,在每個佇列中選擇下一個開頭命令。
圖3A中的讀取命令根據通道指示的目的晶粒和讀取命令針對的晶粒在IPC佇列301中排列,但不考慮命令的目的平面。因此,在每個佇列中,讀取命令是隨機排序的,使得在需要存取晶粒第二平面的命令之前,可能有許多讀取命令需要存取佇列中晶粒的第一平面。圖3A的IPC佇列301就是這種情況,其中IPC佇列301的每個佇列包括三個讀取命令,這些命令需要存取目的晶粒的第一平面P0,然後需要存取第二平面P1的第四讀取命令。
因此,在第一次迭代320中,例如,CPU選擇由選擇318所指示的讀取命令,都需要存取目的晶粒的第一平面P0。在第二次排程迭代322中,CPU選擇當前在IPC佇列301開頭的下一個讀取命令,並且該選擇還包括僅需要存取目的晶粒的第一平面P0的讀取命令。在第三次排程迭代324中,CPU選擇當前在IPC佇列301開頭的下一個讀取命令,並且,再次地,所選擇命令僅包括需要存取目的晶粒的第一平面P0的讀取命令。最後,在第四次排程迭代中,CPU選擇當前在IPC佇列301開頭的下一個讀取命令,並且現在所選擇命令僅包括需要存取目的晶粒的第二平面P1的讀取命令。
在習知的SSD中,這種方法是可以接受的,因為每次只能存取每個晶粒的一個平面,因此將晶粒的二個平面的讀取指令組合成單個佇列沒有效率。所有平面最終都按照IPC佇列中的命令順序讀取。然而,在致能AIPR的SSD中,平面可以獨立操作並同時存取,按照這種習知方法來排程是低效率的。使用圖3A的示例IPC佇列301,CPU必須進行四次排程迭代,然後才能選擇任何指向第二平面P1的讀取命令進行排程。在前三次迭代中執行命令時,晶粒的第二平面將處於閒置(idle),從而阻止致能AIPR的SSD完全實現最大性能效率。在為了第一平面P0執行命令期間的任何時間,為了第二平面P1的命令可以與為了第一平面P0的命令同時發出。
圖3B示出具有晶粒平面讀取命令佇列的訊息排程的過程的方塊圖328。圖3B說明了使用晶粒平面IPC佇列329發送到CPU的排程讀取命令的方法(例如圖1中的快閃記憶體介面CPU 119或圖2中的快閃記憶體介面CPU 219)。IPC佇列329包括第一晶粒平面讀取命令佇列330、第二晶粒平面讀取命令佇列332、第三晶粒平面讀取命令佇列334、第四晶粒平面讀取命令佇列336、第五晶粒平面讀取命令佇列338、第六晶粒平面讀取命令佇列340、第七晶粒平面讀取命令佇列342和第八晶粒平面讀取命令佇列344。IPC佇列中的每個晶粒平面讀取命令佇列329與特定通道和透過通道存取的特定庫或晶粒以及晶粒的特定平面相關聯。例如,第一晶粒平面讀取命令佇列330含有用於 在通道0和庫0的晶粒處為了第一平面P0的讀取命令,而第五晶粒平面讀取命令佇列338含有用於在通道0和庫0的晶粒處為了第二平面P1的讀取命令。
基於晶粒和平面的IPC佇列329中的每個佇列都包括多個命令或訊息,指示CPU在記憶體裝置的通道和庫執行特定晶粒平面目的的讀取。對於每個排程迭代,CPU從IPC佇列329的每個基於晶粒的讀取命令佇列的開頭中選擇一個排程命令。然後,CPU執行第二次迭代,在每個佇列中選擇下一個開頭命令。
與圖3A的基於晶粒的佇列不同,圖3B中的讀取命令是根據讀取命令針對的目的晶粒和晶粒的目的平面排列在IPC佇列329中。因此,每個晶粒平面佇列僅包括特定晶粒和平面的讀取命令。例如,在圖3B的IPC佇列329中,第一晶粒平面讀取命令佇列330僅包括在第一通道(Ch0)上的第一晶粒(B0)的第一平面P0上執行的命令,而第五晶粒平面讀取命令佇列338僅包括在第一通道(Ch0)上的第一晶粒(B0)的第二平面P1執行的命令。在每個排程迭代中,CPU將從第一晶粒平面讀取命令佇列330和第五晶粒平面讀取命令佇列338的每個中選擇一個命令,並且二個命令可以在第一通道(Ch0)上的第一晶粒(B0)的第一平面P0和第二平面P1上同時各自地執行。
例如,在第一次排程迭代346中,CPU選擇由選擇348指示的讀取命令,包括指向每個晶粒的第一平面(P0)和第二平面(P1)的命令。同樣,在第二次排程迭代 350、第三次排程迭代352和第四次排程迭代354中,CPU選擇現在在晶粒平面IPC佇列329的開頭的下一個讀取命令,包括每個晶粒的第一和第二平面執行的讀取命令。透過將基於晶粒的命令佇列分離成每個晶粒的第一和第二平面的單獨佇列,二個平面在AIPR模式下得到充分利用。同一晶粒的第一平面(P0)和第二平面(P1)的讀取由CPU選擇以用於執行每個排程迭代,並且可以同時執行,以便相對於圖3A的習知基於晶粒的佇列提高效率。雖然圖3A和3B說明了讀取命令的排程,但圖3B中說明的晶粒平面佇列可用於排程其他類型的命令和訊息,如讀取錯誤恢復訊息,以提高排程效率和最佳化SSD的性能。
作為圖3B中描述的基於晶粒平面的佇列效用的示例,圖4A和4B說明了利用晶粒平面IPC佇列高效排程讀取錯誤恢復訊息和讀取命令的優勢。圖4A示出一種傳輸讀取錯誤恢復訊息和基於晶粒的IPC佇列的讀取命令的方法,其特定於命令的目的晶粒。圖4B進一步說明了為致能AIPR的SSD利用晶粒平面佇列,可以獨立存取二個晶粒平面同時執行讀取或讀取錯誤恢復的額外效率。圖4A和4B說明了錯誤恢復訊息的排程、主機讀取命令和其他用於處理的低優先權命令。如圖4B所示的將訊息和命令傳輸至晶粒平面佇列的相同過程,其可應用於錯誤恢復訊息的排程和如所示的讀取命令,以及其他訊息和命令類型。對於致能AIPR的SSD,將任何基於晶粒的佇列劃分為晶粒平面0的佇列和晶粒平面1的佇列,將提高排程訊息和命令的效 率,其可以在晶粒平面上同時獨立執行。
圖4A示出在快閃記憶體介面CPU(例如圖1中的快閃記憶體介面CPU 119或圖2中的快閃記憶體介面CPU 219)中IPC訊息排程過程的方塊圖450,其具有多個基於晶粒的命令佇列。在圖4A中,當命令和訊息傳輸到CPU時,它們被添加到適當的IPC佇列的結尾(步驟452)。IPC佇列包括複數個高優先權基於晶粒的讀取錯誤恢復訊息佇列454、基於晶粒的主機讀取命令佇列456、低優先權讀取錯誤恢復訊息佇列458和低優先權命令佇列460。讀取錯誤恢復訊息佇列在此也稱為讀取錯誤恢復指令佇列和讀取錯誤恢復訊息佇列。這些佇列示出以用於敘述,但更多或其他命令佇列也可能在快閃記憶體介面中指定,以用於排程其他類型的命令或指令。當CPU根據選擇方案(步驟462)從佇列開頭獲取命令和訊息時,會依次從佇列的每個開頭獲取命令或訊息,包括每個晶粒的高和低優先權讀取錯誤恢復訊息佇列。在一些實施中,選擇過程是循環方案。在一些實施中,CPU從佇列中除了佇列開頭以外的位置獲取命令。在一些實施中,排程演算法使CPU能夠根據所獲取的讀取訊息的屬性從佇列開頭獲取多個IPC訊息。
CPU從高優先權讀取錯誤恢復訊息佇列454開始,在每個基於晶粒的佇列的開頭獲取訊息以形成命令466以用於排程,然後在繼續(步驟464)之前,獲取於每個主機讀取命令佇列455開頭的命令,以形成命令468以用於排程。然後,CPU在低優先權讀取錯誤恢復訊息佇列458 的每個基於晶粒的佇列的開頭獲取訊息,以形成命令470以用於排程,然後繼續(步驟464),最終在低優先權命令佇列460中獲取每個佇列開頭的命令,以形成命令472以用於排程。來自各種佇列開頭的命令,包括複數個基於晶粒的高優先權讀取錯誤恢復訊息佇列454、複數個主機讀取命令佇列456、複數個基於晶粒的低優先權讀取錯誤恢復訊息佇列458和複數個低優先權命令佇列460已全部處理,並形成和排程命令以傳輸到快閃記憶體介面控制器以執行命令或採取各種動作(步驟474)。然後,CPU開始第二次迭代,透過獲取當前每個IPC佇列開頭的命令或訊息並形成排程命令來重複上述步驟。
從基於晶粒的高和低優先權讀取錯誤恢復訊息佇列中排程訊息,可以提高排程效率,並最佳化處理讀取錯誤,從而提高錯誤恢復性能。快閃記憶體介面CPU能夠更靈活地排程和處理讀取錯誤訊息,同時也處理和排程其他命令和訊息。使用基於晶粒的佇列通常可以提高性能和排程效率,當應用於IPC佇列時,通常用作每個通道的單個佇列,例如讀取錯誤恢復指令佇列。例如,將讀取錯誤恢復指令佇列劃分到基於晶粒的佇列中可以改進四級單元("QLC")裝置的錯誤處理,這可能對錯誤校正碼("ECC")更敏感。在一些實施中,基於晶粒的錯誤恢復佇列可以輕鬆擴展,以適應各種NAND架構,如基於IOD和IO流的架構,以改進這些裝置上的錯誤處理。此過程在美國專利申請號17/022,848中進一步描述,其標題為"基於晶粒的高和 低優先權錯誤佇列"且於2020年9月16日提交,內容關於使用基於晶粒的高和低優先權錯誤佇列進行排程,其全文參照於此。
在一些實施中,CPU可以根據失敗的讀取命令類型確定應指派每個讀取錯誤恢復訊息的優先權佇列。例如,如果失敗的讀取命令是內部讀取命令,則可以將其指派給低優先權佇列,且如果失敗的讀取命令是主機啟動的讀取命令,則可以將其指派為高優先權佇列。CPU從每個晶粒佇列的每個高優先權和低優先權佇列中獲取訊息,因此高優先權錯誤恢復訊息無需在多個低優先權訊息後面的佇列中等待。可以對訊息進行處理,並且基於訊息的讀取命令或其他錯誤恢復說明可以傳輸到快閃記憶體介面控制器並同時傳輸到NAND裝置,以提高錯誤校正和資料恢復的效率。
在一些實施中,每個基於晶粒的錯誤恢復訊息佇列被分為高優先權佇列和低優先權佇列,因此佇列的數是NAND記憶體裝置中晶粒的二倍。在一些實施中,每個基於晶粒的錯誤恢復訊息佇列被分成多個優先權佇列,例如分為三個、四個或多個不同優先權的佇列。將每個基於晶粒的佇列劃分為二或多個優先權佇列,可與上述一或多個實施例組合使用。
然而,使用不考慮訊息或命令的目的晶粒平面的基於晶粒的讀取錯誤恢復訊息佇列來排程命令和訊息,可能會導致對能夠同時獨立存取晶粒平面的致能 AIPR裝置的晶粒平面的排程效率低下,並且當高優先權訊息卡要在晶粒平面上執行的不太重要的訊息後面的佇列時,可能會導致問題。
高優先權和低優先權基於晶粒的讀取錯誤恢復訊息佇列在致能AIPR的裝置中的使用,可以透過為每個基於晶粒的讀取錯誤恢復訊息佇列添加基於平面的佇列來進一步改進。由於致能AIPR的裝置能夠同時獨立存取二個晶粒平面,因此向特定平面排程命令和訊息的能力可以顯著提高效率並減少延遲。圖4B示出訊息排程過程的方塊圖,其具有晶粒平面高和低優先權讀取錯誤恢復訊息佇列和晶粒平面主機讀取命令佇列。如上文關於圖4A中所述,在圖4B中,當命令和訊息傳輸到CPU時,它們被添加到相應的IPC佇列的結尾(步驟477)。IPC佇列包括複數個基於晶粒平面的高優先權讀取錯誤恢復訊息佇列481、複數個基於晶粒平面的主機讀取命令佇列480、複數個基於晶粒平面的低優先權讀取錯誤恢復訊息佇列479和複數個低優先權命令的佇列478。對比於圖4A的高和低優先權讀取錯誤恢復訊息IPC佇列和主機讀取佇列,在圖4B中,高優先權讀取錯誤恢復訊息佇列481不僅基於晶粒,其每個晶粒都指派了一個佇列,而且還基於平面,因此每個晶粒平面都有第一平面P0和第二平面P1的佇列。因此,高優先權讀取錯誤恢復訊息佇列481被分為與平面P0 482相關的晶粒平面佇列和與平面P1 483相關的晶粒平面佇列。同樣,低優先權讀取錯誤恢復訊息佇列479被分為與平面P0 486相關的晶粒平面佇列和與平面P1 489相關的晶粒平面佇列。主機讀取命令佇列480也進一步分為與平面P0 484相關的晶粒平面佇列和與平面P1 485相關的晶粒平面佇列。低優先權命令佇列478既不是基於晶粒的,也不是由命令的目的平面分開的。在一些實施中,低優先權命令佇列或其他命令佇列也可以分為一或多個基於晶粒的佇列、優先權佇列和基於平面的佇列。當CPU根據循環或其他選擇方案(步驟461)從佇列開頭獲取命令和訊息時,命令或訊息依次從每個佇列的開頭處獲取,包括每個晶粒平面佇列的高和低優先權讀取錯誤恢復訊息佇列以及主機讀取命令佇列的每個晶粒平面佇列,以便為每個晶粒的每個奇數平面和偶數平面獲取命令或訊息。
CPU從基於晶粒平面的高優先權讀取錯誤恢復訊息佇列481開始,在晶粒平面P0高優先權讀取錯誤恢復訊息佇列482中獲取每個佇列的開頭的訊息,以形成命令489以用於排程,並在晶粒平面P1高優先權讀取錯誤恢復訊息佇列483中獲取每個佇列的開頭的訊息,以形成命令490以用於排程。然後,CPU繼續(步驟464)從主機讀取命令佇列480的每個基於晶粒平面佇列的開頭獲取命令,並在晶粒平面P0主機讀取命令佇列484中每個佇列的開頭獲取訊息,以形成命令491以用於排程,並在晶粒平面P1主機讀取命令佇列485中每個佇列的開頭獲取訊息,以形成命令492以用於排程。然後,CPU繼續(步驟464)獲取每個基於晶粒平面的低優先權讀取錯誤恢復訊息佇列479的 開頭的訊息,並在晶粒平面P0低優先權讀取錯誤恢復訊息佇列486中獲取每個佇列開頭的訊息,以形成命令493以用於排程,並在晶粒平面P1低優先權讀取錯誤恢復訊息佇列487中獲取每個佇列的開頭的訊息,以形成命令494以用於排程。最後,CPU繼續(步驟464)在低優先權命令佇列478中獲取每個佇列開頭的命令,以形成命令495以用於排程。來自各種佇列開頭的命令和訊息,包括複數個基於晶粒平面的高優先權讀取錯誤恢復訊息佇列481包括晶粒平面P0高優先權讀取錯誤恢復訊息佇列482和晶粒平面P1高優先權讀取錯誤恢復訊息佇列483,複數個基於晶粒平面的主機讀取命令佇列480包括晶粒平面P0主機讀取命令佇列484和晶粒平面P1主機讀取命令佇列485,複數個基於晶粒平面的低優先權讀取錯誤恢復訊息佇列479包括晶粒平面P0低優先權讀取恢復訊息佇列486和晶粒平面P1低優先權讀取錯誤恢復訊息佇列487,和複數個低優先權命令佇列478已全部處理,並形成命令並排程以傳輸到快閃記憶體介面控制器以執行命令或採取各種動作(步驟496)。
將讀取錯誤恢復訊息傳輸到用於排程的晶粒平面佇列,可提高在致能AIPR的SSD上排程訊息的靈活度和效率。將圖4A中描述的高優先權和低優先權基於晶粒的佇列分離到圖4B的基於晶粒平面的佇列中,可提高錯誤恢復效率,並防止特定平面上讀取錯誤恢復訊息的匱乏。基於晶粒平面的讀取錯誤恢復訊息IPC佇列的使用利用AIPR功能,允許在同一排程迭代內將訊息排程到SSD的偶數和 奇數平面上,以最佳化錯誤恢復訊息的輸送量,並提高對SSD上執行錯誤恢復的速度。
同樣,透過將讀取命令傳輸到晶粒平面佇列以進行排程,CPU可減少隨機讀取命令延遲,為致能AIPR的SSD提供最大輸送量,並防止晶粒平面存取命令的匱乏,以提高性能。如上所述,這些圖式說明了在讀取命令和讀取錯誤恢復訊息的排程中使用晶粒平面佇列,但晶粒平面佇列也可以用於IPC佇列用於其他類型的命令和訊息,以類似地提高效率。
在一些實施中,透過考慮和將命令或訊息的優先權列入考量,透過對每個晶粒平面佇列實施二或多個優先權佇列,可以進一步提高排程和執行讀取命令或其他命令的效率。例如,高優先權的晶粒平面訊息佇列和低優先權的晶粒平面訊息佇列。還可以實施其他優先權,同時將晶粒平面佇列保持在每個優先權內,以便高效地對晶粒排程。
透過包括晶粒平面訊息佇列和這些每個晶粒平面佇列的高低優先權級別,可以實現更高的排程效率。在一些實施中,CPU可以根據命令類型確定應指派每個訊息的優先權佇列。CPU從每個晶粒平面佇列的每個高優先權和低優先權佇列中獲取訊息,因此高優先權訊息無需在多個低優先權訊息後面的佇列中等待。可以同時處理訊息並傳送到快閃記憶體介面控制器,以同時傳輸到NAND裝置的晶粒平面,而提高裝置的性能。
圖5示出一個用於致能AIPR的SSD的4通道x 4庫配置的映射讀取錯誤恢復訊息到基於晶粒和平面佇列的方塊圖。在圖5中,錯誤恢復訊息是按每個平面定義的。如圖3B和4B所述,錯誤恢復訊息IPC佇列包括裝置的每個庫中每個平面的佇列,因此有一個佇列對應於透過通道存取的每個庫。圖5說明映射500通道504、庫506和平面508到晶粒平面錯誤恢復訊息佇列502為4通道x 4庫配置。如果CPU控制四個通道到NAND封包,並且每個通道有四個邏輯上獨立的晶粒,則總共有16個晶粒或邏輯單位編號("LUNs")。每個晶粒的第一平面(P0)和第二平面(P1)可以在AIPR模式下獨立運行,因此為了有效地將命令排程到晶粒平面上,總共有32個平面,即2x16。使用此種映射,CPU可以在相應的佇列中向每個平面發送特定於每個平面的訊息。對於能夠獨立存取每個晶粒的二個平面的致能AIPR的SSD,將晶粒平面映射到佇列可提高向SSD排程命令和多種類型的訊息的效率,包括錯誤恢復訊息、主機讀取命令和其他命令類型。
圖6示出一種使用晶粒平面錯誤恢復佇列的用於排程錯誤恢復指令的方法600的流程圖(在此也稱為錯誤恢復訊息)。讀取錯誤恢復說明的排程在快閃記憶體介面CPU上處理(例如圖1中的快閃記憶體介面CPU 119或圖2中的快閃記憶體介面CPU 219)。在步驟602,快閃記憶體介面CPU接收到耦接到記憶體裝置內的快閃記憶體介面CPU的記憶體晶粒中的目的晶粒上的讀取錯誤指示。收到 該指示是為了回應對目的晶粒的嘗試讀取,該讀取因錯誤而失敗。在步驟604,快閃記憶體介面CPU創建錯誤恢復指令,以回應讀取錯誤指示。錯誤恢復說明指示已發生錯誤,也可能指示發生錯誤的目的晶粒,以及關於記憶體晶粒中的錯誤發生的情況以及如何恢復錯誤的資訊。在一些實施中,錯誤恢復指令還包括有關所發生錯誤類型或嚴重程度的指示。
在步驟606,快閃記憶體介面CPU確定錯誤恢復指令的目的晶粒的平面。在一些實施中,錯誤恢復指令的目的晶粒的平面與讀取命令失敗的目的晶粒的平面相同。在一些實施中,錯誤恢復指令可能會指定多個目的晶粒或目的平面。在一些實施中,CPU存取內部記憶體或查找表以確定目的晶粒的平面在連接的記憶體裝置內。錯誤恢復指令要求的錯誤恢復的規格可能取決於SSD使用的錯誤恢復演算法以及錯誤的類型或位置。在一些實施中,快閃記憶體介面CPU也可能根據錯誤恢復指令進行其他確定,例如,快閃記憶體介面CPU可能會確定錯誤恢復說明的優先權。快閃記憶體介面CPU可能會使用這些額外確定來確定將傳送錯誤恢復指令的優先權佇列。在步驟608,CPU根據錯誤恢復指令的目的晶粒的平面向晶粒平面佇列發送錯誤恢復指令。快閃記憶體介面CPU的錯誤恢復指令IPC佇列包括記憶體裝置的每個晶粒平面至少一個佇列,快閃記憶體介面CPU將錯誤恢復指令發送到目的晶粒平面的晶粒平面佇列。在一些實施中,讀取錯誤恢復指令IPC 佇列包括記憶體裝置每個晶粒平面的二或多個佇列,每個佇列與不同級別的優先權或不同的排程機制相關聯。錯誤恢復指令傳送到晶粒平面佇列的結尾,並在從佇列開頭獲取其他訊息以形成供快閃記憶體介面CPU排程的命令時隨著佇列向上移動,然後從佇列中刪除。
在步驟610,當錯誤恢復指令到達晶粒平面佇列的開頭時,快閃記憶體介面CPU從晶粒平面佇列獲取錯誤恢復指令。然後從晶粒平面佇列中刪除錯誤恢復指令,並透過快閃記憶體介面CPU形成並排程命令。快閃記憶體介面CPU根據確定訊息選擇的排程演算法依次選擇每個佇列開頭的訊息。在一些實施中,排程演算法是一種循環選擇方法。在步驟612,快閃記憶體介面CPU根據錯誤恢復指令在目的晶粒的平面上執行讀取錯誤恢復。快閃記憶體介面CPU傳送命令,根據讀取錯誤恢復指令在晶粒的各個平面上實現讀取錯誤恢復。
執行的讀取錯誤恢復取決於SSD使用和錯誤類型要求的恢復策略類型。在一些實施中,從佇列中獲取的錯誤恢復指令會導致一或多個讀取命令被發送到晶粒平面。讀取命令可能包括軟讀取過程的不同Vth電壓臨限值,以重新嘗試讀取並從讀取錯誤中恢復。在一些實施中,從佇列中獲取的錯誤恢復指令導致從二或多個晶粒中冗餘輔助類型恢復,其透過第一讀取命令在第一通道上傳輸到第一目的晶粒,第二讀取命令在第二通道上傳輸到第二目的晶粒。在一些實施中,這是透過使用四重搖擺碼 (QSBC)錯誤校正碼對晶粒中的資料進行編碼來實現的。在一些實施中,這是透過使用其他資料冗餘碼(包括但不限於RAID碼和抹除碼)對晶粒中的資料進行編碼來實現的。每個錯誤恢復策略都可以與上述一或多個實施例組合使用。在一些實施中,從佇列中獲取的讀取錯誤恢復指令會導致一或多個讀取命令被發送到晶粒的平面。快閃記憶體介面CPU可以同時傳輸從目的晶粒的偶數平面佇列和奇數平面佇列獲取的讀取命令。
在一些實施中,快閃記憶體介面CPU接收讀取錯誤恢復指令以外的指示,並將已收到的指令(如與讀取的目的晶粒和目的平面相關聯的IPC佇列中的讀取命令)放置。利用晶粒平面佇列執行命令和訊息(如讀取錯誤恢復指令和讀取命令)可提高裝置的整體效率,因為可以同時處理來自晶粒平面錯誤恢復指令佇列的指令,以及傳輸到晶粒平面的錯誤恢復命令以同時對二個平面進行錯誤恢復。
圖7示出用於將錯誤恢復指令排程到晶粒的多個平面的方法700的流程圖。如以上圖6所述,讀取錯誤恢復指令的排程在快閃記憶體介面CPU中處理(例如圖1中的快閃記憶體介面CPU 119或圖2中的快閃記憶體介面CPU 219)。在步驟702,快閃記憶體介面CPU接收到目的晶粒的第一平面上的第一讀取錯誤的第一指示,以及目的晶粒的第二平面上的第二讀取錯誤的第二指示。收到的第一和第二指示都是為了回應對目的晶粒的嘗試讀取,該讀取因 錯誤而失敗。
在步驟704,快閃記憶體介面CPU創建第一錯誤恢復指令以回應第一讀取錯誤的第一指示,和第二錯誤恢復指令以回應第二讀取錯誤的第二指示。錯誤恢復指令指示已發生錯誤,也可能指示發生錯誤的目的晶粒平面以及關於記憶體晶粒錯誤中發生的情況以及如何恢復錯誤的資訊。在一些實施中,錯誤恢復說明還包括有關所發生錯誤類型或嚴重程度的指示。
在步驟706,快閃記憶體介面CPU確定用於第一錯誤恢復指令的目的晶粒的第一平面,和用於第二錯誤恢復指令的目的晶粒的第二平面。在一些實施中,錯誤恢復指令的目的晶粒的平面與失敗的讀取命令的目的平面相同。在一些實施中,錯誤恢復指令可能會指定多個目的晶粒或目的平面。在一些實施中,CPU存取內部記憶體或查找表以確定目的晶粒平面在連接的記憶體裝置內。錯誤恢復指令要求的錯誤恢復的規格可能取決於SSD使用的錯誤恢復演算法以及錯誤的類型或位置。在一些實施中,快閃記憶體介面CPU還可以根據錯誤恢復指令進行其他確定,例如,快閃記憶體介面CPU可能會確定錯誤恢復說明的優先權。快閃記憶體介面CPU可以使用這些額外確定來確定將發送錯誤恢復指令的優先權佇列。
在步驟708,快閃記憶體介面CPU基於第一錯誤恢復指令的第一目的平面和晶粒將第一錯誤恢復指令發送到第一晶粒平面優先權佇列,並基於第二錯誤恢復指 令的第二目的平面和晶粒將第二錯誤恢復指令發送到第二晶粒平面優先權佇列。第一錯誤恢復指令和第二錯誤恢復指令可以指向到相同目的晶粒的第一和第二平面。二個錯誤恢復說明可以指派給他們相同的優先權。
在步驟710時,當第一錯誤恢復指令到達第一晶粒平面優先權佇列的開頭時,快閃記憶體介面CPU從第一晶粒平面優先權佇列獲取第一錯誤恢復指令。快閃記憶體介面CPU根據確定訊息選擇的排程演算法依次選擇每個佇列開頭的訊息。在一些實施中,排程演算法是一種循環選擇方法。然後,快閃記憶體介面CPU根據第一錯誤恢復指令形成一或多個排程命令。
當第二錯誤恢復指令到達第二晶粒平面優先權佇列的開頭時,快閃記憶體介面CPU還會從第二晶粒平面優先權佇列獲取第二錯誤恢復指令。快閃記憶體介面CPU根據第二錯誤恢復指令形成一或多個用於排程的命令。然後,快閃記憶體介面CPU可以根據第一錯誤恢復指令在目的晶粒的第一平面上排程並執行錯誤恢復。在為了第一平面P0執行命令期間的任何時間,為了第二平面P1的命令可以與為了第一平面P0和目的晶粒的第二平面的命令同時發出,其使用SSD的AIPR模式獨立存取二個平面。
將錯誤恢復說明發送到錯誤恢復指令的目的晶粒平面指定的佇列,可提高記憶體裝置上訊息排程和預形成讀取恢復的效率。基於晶粒平面錯誤恢復指令佇列可防止對特定晶粒的晶粒平面的讀取恢復指令的匱乏。基於 晶粒平面的錯誤恢復指令佇列和任何其他基於晶粒平面的IPC佇列,使二個晶粒平面在AIPR模式下能夠獨立和同時存取。藉由允許在同一排程迭代內將訊息排程到SSD的偶數和奇數平面上,基於晶粒平面的讀取錯誤恢復訊息IPC佇列的使用利用AIPR功能,以最佳化錯誤恢復訊息的輸送量,並提高在SSD上執行錯誤恢復的速度。這些性能優勢也透過使用晶粒平面佇列來執行在快閃記憶體介面CPU中接收的其他命令和訊息類型。
本發明各個態樣的其他對象、優勢和實施例,對於本發明領域技術人員對於說明和所附圖式將是顯而易見的。例如但不限於,結構或功能元件可能會根據本發明進行重新安排。同樣,根據本發明的原則可以適用於其他示例,即使在此沒有具體描述,這些示例也將在本發明的範圍之內。
100:SSD記憶體裝置系統 102:主機 103:匯流排 104:SSD 106:ASIC 108:NAND記憶體裝置 110:主機介面 112:內部匯流排 114:快閃記憶體轉換層 116:記憶體命令 117:查找表(LUT) 118:快閃記憶體介面層 129:LUT引擎 119:快閃介面中央處理單元(CPU) 121:快閃記憶體介面控制器 120:第一通道 122:第二通道 124:庫 126:第一庫 128:第二庫 130:庫 132:第三庫 134:第四庫

Claims (1)

  1. 一種由通信耦接到NAND記憶體裝置的處理器排程錯誤恢復指令的方法,該NAND記憶體裝置包括具有 n個通道的一 nx m陣列的NAND記憶體晶粒,其中該 n個通道的每個通道通信耦接到 m個NAND記憶體晶粒,該方法包括: 接收回應於各自在該 nx m陣列的NAND記憶體晶粒的第一目的晶粒和第二目的晶粒上嘗試第一讀取命令和第二讀取命令的執行的讀取錯誤指示; 回應該讀取錯誤指示創建至少二個錯誤恢復指令; 確定與該至少二個錯誤恢復指令相關聯的優先權; 基於相關聯的該優先權來排程該至少二個錯誤恢復指令; 根據基於該至少二個錯誤恢復指令的該第一目的晶粒和該第二目的晶粒的該排程,各自地將該至少二個錯誤恢復指令發送到晶粒平面佇列; 當該至少二個錯誤恢復指令到達該晶粒平面佇列的開頭時,從該晶粒平面佇列中取出該至少二個錯誤恢復指令;和 根據該至少二個錯誤恢復指令,對該第一目的晶粒和該第二目的晶粒的平面執行讀取錯誤恢復, 其中從該晶粒平面佇列中獲取的該至少二個錯誤恢復指令致使從二或多個晶粒進行冗餘輔助類型恢復,各自透過致使該第一讀取命令透過該 n個通道中的第一通道傳輸到該第一目的晶粒以及該第二讀取命令透過該 n個通道中的第二通道傳輸到該第二目的晶粒,並且 其中接收除了該至少二個錯誤恢復指令之外的指令,並將該等接收的指令放置於該處理器中,以平行地處理來自該晶粒平面佇列的該至少二個錯誤恢復指令的指令,以及用於錯誤恢復的命令發送到該晶粒平面佇列,以對該晶粒平面佇列的二個平面平行地進行錯誤恢復。
TW110133611A 2020-09-16 2021-09-09 由通信耦接到nand記憶體裝置的處理器排程錯誤恢復指令的方法 TWI893205B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/022,911 US20220083266A1 (en) 2020-09-16 2020-09-16 Plane-based queue configuration for aipr-enabled drives
US17/022,911 2020-09-16

Publications (2)

Publication Number Publication Date
TW202230112A TW202230112A (zh) 2022-08-01
TWI893205B true TWI893205B (zh) 2025-08-11

Family

ID=80626603

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110133611A TWI893205B (zh) 2020-09-16 2021-09-09 由通信耦接到nand記憶體裝置的處理器排程錯誤恢復指令的方法

Country Status (3)

Country Link
US (1) US20220083266A1 (zh)
CN (1) CN114265792A (zh)
TW (1) TWI893205B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7524363B2 (ja) * 2020-11-06 2024-07-29 長江存儲科技有限責任公司 擬似非同期マルチプレーン独立読み取り
US11868655B2 (en) * 2021-08-25 2024-01-09 Micron Technology, Inc. Memory performance using memory access command queues in memory devices
CN114546294B (zh) * 2022-04-22 2022-07-22 苏州浪潮智能科技有限公司 一种固态硬盘读方法、系统及相关组件
US11954366B2 (en) * 2022-05-26 2024-04-09 Western Digital Technologies, Inc. Data storage device with multi-commands
CN115407944A (zh) * 2022-08-30 2022-11-29 山东云海国创云计算装备产业创新中心有限公司 一种基于Nand Flash AIPR的命令预处理方法
US12443369B2 (en) * 2022-09-23 2025-10-14 SanDisk Technologies, Inc. Automated fast path processing
US12067247B2 (en) * 2022-12-08 2024-08-20 Silicon Motion, Inc. Method of managing independent word line read operation in flash memory and related memory controller and storage device
US20230229350A1 (en) * 2023-03-23 2023-07-20 Intel NDTM US LLC Early read operation for storage devices with independent planes and plane groups
US12293085B2 (en) * 2023-06-20 2025-05-06 SanDisk Technologies, Inc. Data storage device and method for improving asynchronous independent plane read (AIPR) utilization
KR20250026739A (ko) * 2023-08-17 2025-02-25 한국과학기술원 플래시 기반 저장 장치, 그리고 이의 패킷 통신 기반 플래시 메모리 상호연결 방법
US12405730B2 (en) * 2023-11-07 2025-09-02 SanDisk Technologies, Inc. Data routing in networked SSDs
EP4603982A1 (en) * 2024-02-16 2025-08-20 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device, operating method thereof, and operating method of nonvolatile memory device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201419157A (zh) * 2012-11-12 2014-05-16 Skymedi Corp 用於記憶體之工作排程方法及其記憶體系統
US20180321945A1 (en) * 2017-03-24 2018-11-08 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
TW201923602A (zh) * 2017-09-30 2019-06-16 美商美光科技公司 先佔式閒置時間讀取掃描
US20190227749A1 (en) * 2019-03-28 2019-07-25 Intel Corporation Independent nand memory operations by plane

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795768B2 (en) * 2018-10-22 2020-10-06 Seagate Technology Llc Memory reallocation during raid rebuild

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201419157A (zh) * 2012-11-12 2014-05-16 Skymedi Corp 用於記憶體之工作排程方法及其記憶體系統
US20180321945A1 (en) * 2017-03-24 2018-11-08 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
TW201923602A (zh) * 2017-09-30 2019-06-16 美商美光科技公司 先佔式閒置時間讀取掃描
US20190227749A1 (en) * 2019-03-28 2019-07-25 Intel Corporation Independent nand memory operations by plane

Also Published As

Publication number Publication date
CN114265792A (zh) 2022-04-01
US20220083266A1 (en) 2022-03-17
TW202230112A (zh) 2022-08-01

Similar Documents

Publication Publication Date Title
TWI893205B (zh) 由通信耦接到nand記憶體裝置的處理器排程錯誤恢復指令的方法
US12430073B2 (en) Managed fetching and execution of commands from submission queues
JP5186382B2 (ja) メモリ・システム内で不確定な読み取りデータ待ち時間を可能にする方法及びシステム
EP2656216B1 (en) Device with descriptor scheduler and corresponding method and system
US10459661B2 (en) Stream identifier based storage system for managing an array of SSDs
US8904091B1 (en) High performance media transport manager architecture for data storage systems
US9170753B2 (en) Efficient method for memory accesses in a multi-core processor
CN114286989B (zh) 一种固态硬盘混合读写的实现方法以及装置
CN110716691B (zh) 调度方法、装置、闪存设备和系统
US12260927B2 (en) Die-based high and low priority error queues
US10846094B2 (en) Method and system for managing data access in storage system
US7272692B2 (en) Arbitration scheme for memory command selectors
CN1834928A (zh) 软错误纠正方法、存储控制设备及存储系统
US10545890B2 (en) Information processing device, information processing method, and program
US20170168895A1 (en) Queuing of decoding tasks according to priority in nand flash controller
EP3992771B1 (en) Controller for performing command scheduling, storage device including the controller, and operating method of the controller
US11923869B2 (en) Data storage device with dynamic mapping of low-density parity check (LDPC) engines
US8151028B2 (en) Information processing apparatus and control method thereof
US12530155B2 (en) Method for generating firmware-dedicated storage protocol queues for virtual devices
US20250004779A1 (en) Appratus and operation method for distributed processing of plural operations in data storage system
JP3639582B2 (ja) 通信命令制御システム
CN111857768B (zh) 一种硬盘芯片升级方法及系统
CN117331492A (zh) 命令处理方法、装置、设备和可读存储介质
JP2020101906A (ja) 切り替え回路、管理システム、情報処理装置及びアクセス頻度の切り替え方法