TWI827158B - 用於靈活的儲存控制器之韌體控制及基於表格的條件化 - Google Patents
用於靈活的儲存控制器之韌體控制及基於表格的條件化 Download PDFInfo
- Publication number
- TWI827158B TWI827158B TW111127782A TW111127782A TWI827158B TW I827158 B TWI827158 B TW I827158B TW 111127782 A TW111127782 A TW 111127782A TW 111127782 A TW111127782 A TW 111127782A TW I827158 B TWI827158 B TW I827158B
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- firmware
- instructions
- sequence
- condition
- Prior art date
Links
- 230000003750 conditioning effect Effects 0.000 title 1
- 238000012163 sequencing technique Methods 0.000 claims abstract description 15
- 238000000034 method Methods 0.000 claims description 37
- 238000012545 processing Methods 0.000 claims description 22
- 238000012805 post-processing Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 11
- 239000000725 suspension Substances 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 14
- 238000011084 recovery Methods 0.000 description 9
- 230000006399 behavior Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000011010 flushing procedure Methods 0.000 description 3
- 230000008014 freezing Effects 0.000 description 3
- 238000007710 freezing Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000004557 technical material Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more 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/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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
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)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
至少部分基於以下各者自複數個韌體指令選擇韌體指令:(1)包含用於處置該複數個韌體指令之一或多個條件之一條件表格及(2)狀態資訊。至少部分基於以下各者來判定如何處置該一或多個選定韌體指令:(1)該條件表格及(2)該狀態資訊。在該經判定處置係執行該等選定韌體指令之情況下,至少部分基於該一或多個選定韌體指令自包含與一儲存媒體裝置相關聯之一或多個指令序列之一定序表格獲得一指令序列。在該經判定處置係執行該一或多個選定韌體指令之情況下,將該所獲得之指令序列輸出至該儲存媒體裝置。
Description
儲存系統(諸如NAND快閃儲存系統)係由多個組件構成,其中各組件可由各種製造商製造。例如,在一儲存系統中,儲存媒體裝置(例如,一NAND快閃記憶體裝置)可由各種公司製造。將期望新的及改良之儲存控制器,其等更佳能夠在各種條件下(例如,常規處置以及例外處置)以對尺寸、成本及/或電力消耗敏感之一方式管理來自各種製造商之各種儲存媒體裝置。
其他申請案之交叉參考本申請案主張於2021年7月27日申請之標題為FIRMWARE CONTROLLED HARDWARE SEQUENCE HANDLING FOR REGULAR AND EXCEPTION CASES之美國臨時專利申請案第63/226,009號之優先權,該案針對所有目的以引用的方式併入本文中。
本發明可以許多方式來實施,包含作為一程序;一設備;一系統;一物質組合物;體現於一電腦可讀儲存媒體上之一電腦程式產品;及/或一處理器,諸如經組態以執行儲存於耦合至該處理器之一記憶體上及/或由該記憶體提供之指令的一處理器。在本說明書中,此等實施方案或本發明可採取之任何其他形式可被稱為技術。一般而言,在本發明之範疇內,可更改所揭示程序之步驟之順序。除非另有陳述,否則被描述為經組態以執行一任務之一組件(諸如一處理器或一記憶體)可實施為臨時經組態以在一給定時間執行該任務之一通用組件或經製造以執行該任務之一特定組件。如本文中所使用,術語「處理器」係指經組態以處理資料(諸如電腦程式指令)之一或多個裝置、電路及/或處理核心。
在下文連同繪示本發明之原理之附圖一起提供對本發明之一或多項實施例之一詳細描述。本發明係結合此等實施例進行描述,但本發明不限於任何實施例。本發明之範疇僅由發明申請專利範圍限制且本發明涵蓋許多替代例、修改及等效物。在以下描述中闡述許多具體細節以提供本發明之透徹理解。出於實例目的提供此等細節且可在不具有此等具體細節之一些或全部之情況下根據發明申請專利範圍來實踐本發明。為清楚起見,尚未詳細描述與本發明有關之技術領域中已知之技術材料,使得不會不必要地使本發明不清楚。
圖1係繪示具有包含一條件表格之一NAND快閃介面控制器之一儲存系統之一實施例的一圖式,韌體經由該條件表格向硬體指定用於處置韌體指令之條件。在此實例中,一儲存系統(101)包含管理一儲存媒體裝置之一儲存控制器(100),在此實例中,該儲存媒體裝置係一NAND快閃記憶體裝置(106)。儲存控制器(100)係實施於包含韌體(102)及一NAND快閃介面控制器(104)之一系統單晶片上,NAND快閃介面控制器(104)係實施於硬體(例如,一特定應用積體電路(ASIC)或一場可程式化閘陣列(FPGA))上。
在此實例中,儲存系統(101)經設計以使用由多個供應商製造之各種NAND快閃記憶體裝置(106)。因而,儲存控制器(100)需要能夠支援來自不同供應商及/或製造商之不同儲存媒體裝置(例如,其中該等不同儲存媒體裝置具有不同經支援操作、不同暫存器位置、不同命令或指令序列、不同時序要求等)。使用多個儲存媒體裝置供應商可降低供應鏈問題之風險及/或使供應商為更佳定價而相互競爭,此對於儲存系統(101)之製造商而言可為期望的。
為支援各種NAND快閃記憶體裝置(106),在此實例中,NAND快閃介面控制器(104)包含具有用於處置來自韌體之指令(110)之一或多個(例如,製造商特定)條件之一條件表格(108)。如下文將更詳細描述,條件表格(108)係由韌體(102)程式化及/或組態且由NAND快閃介面控制器(104)使用以(作為一實例)基於狀態資訊(112)決定或以其他方式選擇接下來評定或以其他方式評估的韌體指令,及是否實際上執行彼(等)選定韌體指令。定序表格(114)係用於儲存自NAND快閃介面控制器(104)發送至NAND快閃記憶體裝置(106)之(例如,製造商特定)指令序列。作為一初始化程序之部分,可藉由韌體取決於特定NAND快閃記憶體裝置(106) (例如,製造商、型號及/或版本)來程式化條件表格(108)及定序表格(104)。
本文中描述之儲存控制器實施例及/或技術之一益處在於,其等足夠靈活以與來自不同製造商之各種NAND快閃記憶體裝置(106)一起工作,同時亦以對儲存控制器(100)之尺寸、成本及/或電力消耗敏感之一方式來實施。一些其他儲存控制器使用一通用處理器(例如,一CPU)給予其等儲存控制器完全可程式化的控制。然而,此等設計不具有吸引力(尤其是對於對尺寸、成本及/或電力消耗敏感之應用),因為相較於由本文中所描述之實施例提供之部分可程式化的可控制性,通用處理器需要大面積之矽(即,其等很大及/或製造成本高)且消耗相對大量電力。本文中所描述之實施例提供一足夠程度之靈活性,同時考慮到尺寸、成本及/或電力消耗。
即使僅支援一個儲存媒體裝置製造商,所提供之靈活性仍係可期望的,因為一儲存媒體裝置可經歷具有不同指令序列、經支援特徵、時序要求等之不同版本。即使僅存在一個儲存媒體裝置製造商,亦可使用基於表格之條件及基於表格之定序來最佳化儲存系統(101)之效能。例如,當特定類型之操作被集合在一起而非將其等分解時,一給定NAND快閃記憶體裝置(106)可更佳地執行。或,若NAND快閃記憶體裝置(106)包含多個晶粒,則以特定序列存取晶粒可提供比其他序列更佳之效能結果(例如,按晶粒對存取進行分組可為更佳的,而非在晶粒之間交錯或來回切換)。條件表格(108)及/或定序表格(114)可用於以改良儲存系統(101)之效能之一方式(例如,藉由以一有效序列及/或在儲存系統(101)之一較佳狀態期間執行指令)最佳化韌體指令(110)。
儘管一些其他儲存控制器可具有基於表格之定序,但其等不包含基於表格之條件化,此容許更多高階控制自韌體域移動至介面控制器域,從而降低韌體複雜性,減少韌體程式碼記憶體大小,並容許使用一較低功率處理器,同時提供一高位準之靈活性以支援廣泛範圍之功能NAND快閃行為,最佳化系統效能(例如,針對與一給定NAND快閃記憶體裝置相關聯之特定時序要求及/或規則),及支援不同服務品質(QoS)模型。
此處展示之儲存系統(101)可用於各種應用及/或案例中。首先,在下圖中描述在正常及/或常規操作條件期間(例如,當NAND快閃記憶體裝置(106)未發出一錯誤或例外之一指示時)可係有益及/或有用之儲存控制器(100)之一些實施例。接著,描述在錯誤及/或例外操作條件期間(例如,當NAND快閃記憶體裝置(106)發出一錯誤或例外通知時)可係有益及/或有用之儲存控制器(100)之一些實施例。如本文中所使用,術語「例外」應被理解為包含「錯誤」,使得(作為一實例) 「例外處置」應被解釋為包含「錯誤處置」等。
圖2係繪示用以使用一條件表格及一定序表格管理一儲存媒體裝置之一程序之一實施例的一流程圖。在一些實施例中,圖2之程序係在正常及/或常規操作條件期間執行。在一個實例中,圖2之程序係由來自圖1之NAND快閃介面控制器(104)執行。
在200,至少部分基於以下各者自複數個韌體指令選擇一或多個韌體指令:(1)包含用於處置該複數個韌體指令之一或多個條件之一條件表格及(2)狀態資訊。
在圖1中,例如,裝置資訊(112)可與NAND快閃記憶體裝置(106)、NAND快閃介面控制器(104)及/或韌體(102)之狀態有關。在步驟200之一個實例中,NAND快閃記憶體裝置(106)係在一操作之中間且操作狀態(status或state)在狀態資訊(112)中反映。在此狀態期間,將特定類型之韌體指令(例如,來自儲存於區塊110中之韌體指令)發送至NAND快閃記憶體裝置(106)可能不被製造商所允許,或可被允許但可為次優的(例如,因為其減慢NAND快閃記憶體裝置(106))。條件表格(108)可經程式化(例如,藉由韌體(102))以指定用於選擇下一個(多個)韌體指令之規則或條件(例如,包含用於特定類型之韌體操作之經允許或未經允許之狀態)。
在一些實施例中,韌體指令(例如,圖1中之區塊110)儲存於多個佇列中且在步驟200之選擇包含選擇該等佇列之一者。
在步驟200之一個實例中,條件表格係用於指定應取決於指定條件或一特定狀態來不同地處理一給定類型之韌體命令或指令。在一個實例中,若儲存媒體裝置正忙於執行一耗時操作,則一些韌體指令可能不被允許或可被允許但在該特定狀態下係次優的。或,在特定條件下,一個韌體命令佇列可具有高於另一佇列之一優先級,但在其他條件或狀態下,一不同優先化可被需要或為最佳的。此資訊係在條件表格中指定。
在一些實施例中,硬體(例如,圖1中之NAND快閃介面控制器(104))更新狀態資訊(112),因為其比韌體(102)更快且因此更適於更新狀態資訊。在一些實施例中,狀態資訊(112)係由韌體(102)更新,例如,因為經更新之資訊係與韌體(102)相關聯之一狀態。
返回圖2,在202,至少部分基於以下各者來判定如何處置一或多個選定韌體指令:(1)條件表格及(2)狀態資訊。換言之,步驟200選擇接下來評估或評定之韌體指令。步驟202決定如何處置彼(等)韌體指令。在此實例中,在步驟202之可能處置選項係:(1)略過(即,摒棄)選定韌體指令,(2)執行選定韌體指令,或(3)在等待一條件為真(例如,狀態資訊改變,一計時器到期等)之後執行選定韌體指令。
取決於處置,程序分叉(204)。若略過韌體指令,則在步驟200再次選擇下一批韌體指令。在一些實施例中,執行額外步驟(206),(例如)以向韌體報告略過哪一(些)韌體指令,因此韌體可相應地繼續進行且不等待一經略過及/或摒棄之韌體指令之一結果。在下文更詳細描述此之一實例。
若處置係停留及/或等待,則程序返回至步驟202。例如,程序可等待狀態資訊改變,使得處置可自「停留/等待」切換至「執行」或「略過」。
若處置係執行韌體指令,則在步驟208,至少部分基於一或多個選定韌體指令自包含與一儲存媒體裝置相關聯之一或多個指令序列之一定序表格獲得一指令序列。接著在210將所獲得之指令序列輸出至儲存媒體裝置。
例如,假定韌體指令係儲存媒體裝置之一狀態檢查。在步驟208獲得之指令序列可描述將一狀態檢查傳達至該製造商、型號及/或版本之儲存媒體裝置所需之傳訊。步驟210接著將在(作為一實例)圖1中之NAND快閃介面控制器(104)與NAND快閃記憶體裝置(106)之間的實體接腳或連接件上針對經指定信號時序(例如,保持多長時間或何時切換彼等信號位準)驅動經指定信號位準。
在一些實施例中,執行額外步驟(212)。例如,可存在可組態及/或基於表格之一些後序列(即,在將指令序列輸出至儲存媒體裝置之後),從而允許進一步靈活性。在下文更詳細描述此之一實例。
為較佳理解上文描述之實施例,描述一些特定及/或詳細實例可為有幫助的。下圖描述來自圖1之NAND快閃介面控制器(104)之一更詳細實例。
圖3係繪示一NAND快閃介面控制器之一實施例之一圖式,其中使用一前序列佇列表格、一前序列執行表格及一後序列更新表格來實施基於表格之條件。在一些實施例中,如圖3中所展示般實施來自圖1之NAND快閃介面控制器(104)。
在此實例中,韌體(302a)發送命令至NAND快閃介面控制器(300)且韌體命令經儲存於複數個韌體命令佇列(310)之一者中。前序列佇列選擇器(308)基於狀態資訊(309)及前序列佇列表格(307)選擇接下來存取或處理哪一韌體命令佇列(310)。更明確言之,前序列佇列選擇器(308)使用前序列佇列表格(307)來檢查(作為一實例)構成NAND快閃記憶體裝置之晶粒及/或儲存控制器自身之當前狀態(309)以判定韌體命令佇列(310)中之任何可用韌體指令是否適於在下一介面閒置點處潛在執行。
在一個實例中,前序列佇列表格(307)係用於指定如何取決於經指定條件或一特定狀態來不同地處置相同類型之韌體指令。例如,若一選定韌體命令佇列在選定佇列之頂部處包含一給定類型之兩個連續韌體指令,則在一些條件及/或狀態下將兩個韌體指令轉送至前序列執行檢查器(311),但在一組不同條件及/或狀態下僅轉送一個韌體指令。
接著將選定韌體指令自前序列佇列選擇器(308)傳遞至前序列執行檢查器(311)以進行下一處理階段。在一高層級處,前序列執行檢查器(311)決定是否藉由前序列佇列選擇器(308)執行傳遞至其之一韌體指令或命令或略過該韌體指令或命令(在此簡單及二進制的實例中)。例如,韌體(302a/302b)比硬體(300)慢很多且可將不再相關或不再需要在其等到達前序列執行檢查器(311)時執行之命令放入韌體命令佇列(310)中。
前序列執行表格(312)可由韌體(302a/302b)視需要改變,以控制由前序列執行檢查器(311)進行之決策制訂及/或命令處置。例如,不同NAND快閃記憶體裝置製造商可暴露可由前序列執行檢查器(311)檢查之不同狀態資訊及/或不同NAND快閃記憶體裝置製造商可以必須適應之一不同方式處置命令。
將前序列執行檢查器(311)決定執行或以其他方式執行之彼等韌體指令自前序列執行檢查器(311)傳遞至命令定序器。命令定序器(303)可存取命令序列之一第一可寫入控制儲存(WCS)表(304)。韌體指令包含編入此第一WCS表(304)中之一索引。在此索引處找到之指令係要執行之命令序列之第一指令;序列執行繼續直至遇到一序列終止指令。
各命令序列指令可含有編入一實體命令表中之一索引,該索引儲存於實體命令指令之一第二可寫入控制儲存(WCS)表(305)中。實體命令指令係由一實體命令定序器(306)解譯,實體命令定序器(306)包含低階狀態機及用以驅動與快閃介面相關聯之實體接腳(315)之邏輯。若命令序列指令僅執行本端控制(即,其僅在內部且保持於NAND快閃介面控制器(300)之內部)且不影響快閃實體介面(315),則命令序列指令(例如,自第一WCS表(304)獲得)可省略實體命令表格(即,第二WCS表(305))之一索引。
如此圖中所展示,在一些實施例中,一定序表格(例如,在圖2之步驟200及202中提及)包含:(1)命令序列之一第一可寫入控制儲存(WCS)表格(例如,304)及(2)實體命令指令之一第二WCS表格(例如,305);獲得指令序列包含:在包含於一或多個選定韌體指令中之一第一索引處存取命令序列之第一WCS表格,以獲得實體命令指令之第二WCS表格中之一第二索引;在該第二索引處存取實體命令指令之第二WCS表格以獲得一或多個實體命令指令;及輸出所獲得之指令序列包含使用定位於實體命令指令之第二WCS表格中之第二索引處之一或多個實體命令指令。
在一些此等實施例中,在包含於一或多個選定韌體指令中之第一索引處存取命令序列之第一WCS表格進一步包含:獲得一僅內部命令序列;及回應於獲得該僅內部命令序列:是否將略過存取實體命令指令之第二WCS表格之步驟之指示;及輸出所獲得之指令序列略過指令之步驟。
在一些實施例中,命令定序器(303)重新配置(韌體)命令之一序列或順序,使得將命令輸出至實體定序器(306)之順序並不一定與自前序列執行檢查器(311)接收該等命令之順序匹配。例如,此可使用第一WCS表格(304)來設定且可取決於狀態資訊(309)。
後序列更新條件檢查器(313)使用後序列更新表格(314)來判定應更新韌體狀態佇列(316)中之哪些狀態變量,及更新之值。韌體狀態佇列(316)係硬體(300)如何根據由韌體(302a)發送至韌體命令佇列(310)之命令之狀態來更新韌體(302b)。後序列更新表格(314)係由韌體(302a/302b)程式化。例如,不同NAND快閃記憶體裝置製造商可具有需要更新及/或用不同更新值更新之不同變量(例如,暫存器位置)。在另一實例中,韌體(302a/302b)係在一除錯模式中且想要在執行更新時將更多資訊傳回至其。此係圖2中之後序列步驟212之一實例。
如以上實例中所描述,在一些實施例中,條件表格包含一後處理條件,該後處理條件包含:(1)特定於儲存媒體裝置之一狀態更新位置及(2)特定於儲存媒體裝置之一狀態更新值;且硬體進一步經組態以用狀態更新值來更新狀態更新位置,如由後處理條件指定。
如以上實例中所描述,在一些實施例中,條件表格包含一後處理條件,該後處理條件包含:(1)一除錯相關更新位置及(2)一除錯相關更新值,其中在韌體處於一除錯模式中之情況下,韌體啟用後處理條件。硬體進一步經組態以用除錯相關更新值來更新除錯相關更新位置,如由後處理條件指定。
藉由此三個階段及/或類型之基於表格之條件檢查(即,在前序列佇列選擇器(308)、前序列執行檢查器(311)及後序列更新檢查器(313)處),包含韌體(302a/302b)及NAND快閃介面控制器(300)之儲存控制器允許及/或啟用:
1) 當NAND快閃記憶體裝置(例如,圖1中之106)空閒時待執行之韌體命令。
2) 用以中斷如(例如,靜態地)程式化之其他執行命令之韌體命令。例如,一些NAND快閃記憶體裝置製造商允許一擦除操作(對NAND快閃記憶體裝置)由其他命令或操作中斷。命令定序器(303)可使用第一WCS表格(304)組態以允許在一擦除之後的一命令以中斷較早擦除。此定序係使用前序列佇列選擇器(308)啟用以在一擦除命令正在進行時容許另一命令(例如,至一相同晶粒)通過或以其他方式轉送。
3) 基於對其他NAND快閃之當前正在執行的命令或最近執行之命令(例如,經由狀態資訊(309)中之一晶粒當前狀態表格)動態地改變韌體命令佇列(310)中之新命令之行為。例如,前序列執行檢查器(311)容許一(例如,選定)佇列中之相同命令基於如在前序列執行表格(312)中程式化之發出至其他晶粒之先前命令而發出或等待。
將圖3放入圖2之背景內容中,前序列佇列選擇器(308)係在圖2中之步驟200選擇韌體指令之一模組之一實例;前序列執行檢查器(311)係在圖2中之步驟202判定彼(等)韌體指令之處置之一模組之一實例;命令定序器(303)係在步驟208獲得一指令序列之一模組之一實例;且實體定序器(306)係在圖2中之步驟210輸出一指令序列之一模組之一實例。
下圖描述圖3中所展示之一些模組之更詳細實例。
圖4係繪示一條件表格之一實施例之一圖式。在一些實施例中,如此處展示般實施圖3中之條件表格之一或多者(例如,前序列佇列表格(307)、前序列執行表格(312)及後序列更新表格(314))。在此實例中,條件表格(401)包含一元素陣列(402),其中各元素含有啟用欄位或旗標(404)之一啟用陣列(403),以及可用於檢查(例如,執行一讀取且接著比較經讀取值與經儲存值(406))或修改(例如,寫入經儲存值(406))之值(406)之一值陣列(405)。例如,一對啟用欄位及值欄位(404及406)可用於檢查及/或修改圖3中之狀態資訊(309)中之一狀態變量。當執行一更新或修改時,使用多工器(407)以選擇及輸出經儲存值(406)作為新值。
在一個實例中,在一NAND快閃記憶體裝置中可選擇或可指定之最低階組件係一晶粒。一或多個晶粒可包含於一晶片上。一或多個晶片可共用一匯流排。一條件表格(401)可用於選擇或以其他方式指定所關注之晶粒、晶片及/或匯流排。啟用欄位(404)係用於啟用對應值欄位(406)。值欄位(406)指定檢查器(例如,圖3中之前序列佇列選擇器(308)、前序列執行檢查器(311)及/或後序列更新檢查器(313))尋找之條件。例如,此容許硬體(例如,圖3中之300)基於預程式化(視需要)之晶粒級控制或晶片級控制制訂決策。下文使用基於晶粒之資訊作為一實例展示一偽碼實例。DIEBASEDMASK、DIEBASEDVALUE及CURRENTSTATE之各者係在32個位元、40個位元或64個位元之範圍內之多位元變量。
DIEBASEDMASK係用於選擇在決策制訂中是否應考量一特定CURRENTSTATE位元。
DIEBASEDVALUE係用於與CURRENTSTATE比較以制訂一成功或失敗的決策。
If (DIEBASEDMASK(n)=1) then
if (DIESTATE(n)== DIEBASEDVALUE(n)) then
sequence check/update pass
else if (DIEBASEDMASK(n)=0) then
ignore field check (n) in CURRENTSTATE variable.
end
簡要返回至圖3之實例,例示性NAND快閃介面控制器中之所有表格(即,WCS表格(304及305)及條件表格(307、312及314))係偽靜態的;即,在正常操作條件下,其等內容未動態地更改,而其等控制之功能處於一非靜止狀態。靜態表格藉由靜態地更改表格之內容來提供實施韌體與快閃之間之不同互動模式之靈活性。
圖5係繪示包含與一NAND快閃記憶體裝置中之複數個晶粒相關聯之狀態資訊之狀態資訊之一實施例的一圖式。在一些實施例中,圖3中之狀態資訊(309)係如此處展示般實施。在此實例中,一NAND快閃記憶體裝置(500)包含兩個晶粒:具有0之一晶粒索引之一第一晶粒(502)及具有1之一晶粒索引之一第二晶粒(504)。取決於製造商,晶粒(502及504)在一些實施例中可能夠以一(半)獨立方式執行操作及/或指令。
為幫助儲存控制器確保指令在經允許及/或效能最佳化之狀態或時間發送至兩個晶粒,此處所展示之狀態資訊(506)包含具有0之一索引之第一晶粒(502)之晶粒狀態資訊(508)及具有1之一索引之第二晶粒(504)之晶粒狀態資訊(510)。
圖式512更詳細展示晶粒狀態資訊(例如,508)。在此實例中,第一位元組(520)係與NAND快閃狀態相關聯。在此實例中,第一位元(521)係用於指示該晶粒是否處於一例外(例如,失敗或錯誤)狀態,第二位元(522)係用於指示該晶粒是否處於一低功率模式,且第三位元(523)係用於指示該晶粒是否處於一除錯模式。
例如,例外位元(521)可用於暫停或停止發送新指令至晶粒,低功率模式位元(522)可用於判定在發送任何新指令至晶粒之前是否需要「喚醒」儲存控制器,且除錯模式位元(523)可使儲存控制器知道晶粒已報告通常不報告之額外、除錯資訊(例如,因此儲存控制器知道存在可用於其決策制訂之額外、除錯資訊)。
在此實例中,NAND快閃狀態位元組(520)主要或多半由硬體(即,NAND快閃介面控制器)控制,但韌體亦可視需要控制此位元組(例如,若硬體存在一問題)。例如,兩個晶粒(502及504)具有其等傳回至硬體(即,NAND快閃介面控制器)之一1位元組狀態;硬體將此狀態位元組放入此第一位元組(520)中(例如)以供韌體讀取。
第二位元組(530)係與暫停及恢復操作相關聯。在此實例中,晶粒(502及504)具有執行一暫停命令之能力,其中經指示晶粒暫停執行晶粒正在執行之一命令。例如,擦除(即,清除)及程式化(即,寫入)操作在NAND快閃儲存媒體上花費相對較長時間且因此例示性晶體(502及504)允許暫停擦除及程式化操作。位元531及534係用於指示已(例如,藉由韌體)分別針對一擦除及一程式化命令發送一暫停命令。位元532及535係用於指示分別針對一擦除及一程式化命令之暫停命令之失敗。位元533及536係分別用於指示已(例如,藉由韌體)發送一恢復命令以分別恢復先前暫停之一擦除或程式化操作。在此實例中,此位元組(530)係由韌體控制及/或寫入。
第三位元組(540)係與例外處置相關聯且將在下文更詳細描述。在此實例中,第一位元(541)係例示性晶粒0之一凍結位元且第二位元(542)係例示性晶粒0之一清空位元。在此實例中,此位元組(540)係由韌體控制及/或寫入。
第四位元組(550)係用於各種計時器。在此實例中,晶粒(502及504)之製造商已指定程式化及擦除操作需要一特定、不可忽略的時間量。程式化計時器位元(551)及擦除計時器位元(552)係用於指示程式化計時器及擦除計時器何時停止,指示已經過執行彼等操作之所需或指定之時間量。在此實例中,此等計時器係由硬體啟動及監測且此位元組通常由硬體控制,但視需要可由韌體寫入及/或控制(例如,硬體「卡住」或處於一例外狀態)。
例如,在不具有計時器狀態位元組(540)之情況下,儲存控制器可能必須不斷地向晶粒發送「檢查狀態」命令且作為回應,晶粒可能必須傳回狀態資訊。此係低效的(例如,其消耗通信通道資源,以及在儲存控制器及晶粒處之資源)且使用其狀態在計時器狀態位元組中報告之硬體管理之計時器係更有效的。
圖式512中所展示之狀態位元及/或變量僅為例示性的且報告什麼狀態資訊以及該狀態資訊之使用及/或解釋可視需要由韌體組態及/或調整。此可組態性允許儲存控制器能夠適應不同晶粒製造商之時序、經支援操作及/或規則。
如此實例中所展示,在一些實施例中,儲存媒體裝置(500)支援允許暫停以下一或多者之一暫停命令:一程式化命令或一擦除命令;狀態資訊包含暫停相關狀態資訊(例如,參見位元組1 (530));條件表格包含暫停相關條件資訊;且判定如何處置一或多個選定韌體指令包含比較暫停相關狀態資訊與暫停相關條件資訊。例如,暫停相關狀態資訊包含與恢復一暫停命令相關聯之狀態資訊(例如,參見擦除恢復發送位元(533)及程式化恢復發送位元(536))。
如此實例中所展示,在一些實施例中,狀態資訊包含計時器相關狀態資訊;條件表格包含計時器相關條件資訊;且判定如何處置一或多個選定韌體指令包含比較計時器相關狀態資訊與計時器相關條件資訊。在一些此等實施例中,與計時器相關狀態資訊相關聯之一計時器回應於以下一或多者而開始計數:一程式化命令或一擦除命令(例如,參見位元組3 (540))。
下圖展示一更詳細實例,其展示與一擦除命令之暫停相關聯之一NAND快閃介面控制器中之各種模組處之基於表格的決策制訂。
圖6係繪示其中有條件地暫停一擦除操作使得可執行一程式化操作,且接著在完成該程式化操作時恢復該暫停之擦除操作之一實施例的一圖式。在此實例中,韌體命令佇列(610)對應於圖3中之相同名稱之模組(310),前序列佇列選擇器(611)對應於圖3中之相同名稱之模組(308),前序列執行檢查器(612)對應於圖3中之相同名稱之模組(311),命令及實體定序器(613)對應於圖3中之相同名稱之模組(303及306),後序列更新檢查器(614)對應於圖3中之相同名稱之模組(313),且狀態資訊(615)對應於圖3中之相同名稱之模組(309)。為清楚及/或簡潔,在此實例中不一定描述一些例外處置及穩健性增強及/或特徵。
在此實例中,各頁面程式化(例如,605)的前面始終是一擦除暫停命令(例如,603)且後面係一擦除恢復命令(例如,607),如在圖式601中之韌體命令佇列(610)中所展示。若一擦除暫停不適用及/或在其待執行之時間點不被需要,則其被簡單地摒棄;若其適用及/或需要,則執行擦除暫停。此摒棄及執行決策係由前序列執行檢查器模組(例如,圖3中之311及此處之612)完成。(如上文所描述,擦除暫停可由低速及/或具有非常粗略時序解析度之韌體(例如,圖3中之302a/302b)發出,但關於是否實際上執行擦除暫停之決策係由更快及/或具有更精細時序解析度之硬體(例如,圖3中之300)執行)。擦除暫停執行(例如,是否或何時執行)係由狀態資訊(例如,圖3中之309或此處之615)中之相關變量之更新標記或以其他方式指示。
在此實例中,在頁面程式化命令(605)之後的命令係一擦除恢復命令(607)。此擦除恢復命令(其中暫停及/或恢復可為其他、較舊系統不一定支援之一特徵)檢查由擦除暫停設定之狀態(例如,在狀態資訊(615)中)。(例如,由前序列執行檢查器(例如,圖3中之311或此處之612))制訂關於是否執行或略過擦除恢復命令之一決策。若決定執行擦除暫停命令,則亦決定執行擦除恢復命令。自然地,若決定不執行或以其他方式執行擦除暫停,則同樣地不需要執行並略過擦除恢復命令(例如,針對效率及/或保存系統資源)。此動態行為完全藉由設定及檢查狀態資訊中之適當值來管理。例如,前序列執行檢查器(612)檢查前序列執行表格(例如,圖3中之312)且後序列更新檢查器(614)檢查後序列更新表格(例如,圖3中之314)並檢查及更新狀態資訊(615)中之如所指示及/或指定之各個位元。此等命令之按正確順序之執行及自多個韌體命令佇列(310)之選擇係由前序列佇列選擇器(611)根據前序列佇列表格(例如,圖3中之307)來完成。
下文描述圖6中所展示之序列。
1. 韌體命令:區塊擦除(602)
a. 前序列佇列選擇器(611):確證「晶粒閒置」(615)?(620) (在此實例中,是) ←應注意,此係一低優先級命令,僅在晶粒閒置的情況下執行
b. 主序列→實體定序器(613):發出區塊擦除命令(621)
c. 主序列:在後台中開始狀態輪詢(622)
d. 後序列更新檢查器(614):清除「晶粒閒置」(615)狀態並設定「擦除」(615)狀態(624)
2. 韌體命令:擦除暫停(佇列化) (603) ←應注意,此佇列化之命令並不立即執行
3. 優先級佇列中之韌體命令:終止狀態輪詢(604)
a. 前序列執行檢查器(612):確證「擦除」(615)而未確證「晶粒準備就緒」(615)?(626) (在此實例中,是) ←此檢查使其中擦除已完成且無需暫停之情況自動化
b. 主序列→實體定序器(613):終止狀態輪詢(628) ←在擦除已完成的情況下不執行
4. 韌體命令:頁面程式化(佇列化) (605) ←應注意,此佇列化之命令並不立即執行
5. 韌體命令:擦除恢復(佇列化) (607) ←應注意,此佇列化之命令並不立即執行
6. 佇列化之命令:擦除暫停(603)
a. 前序列執行檢查器(612):未確證「晶粒準備就緒」(615)?(630) (在此實例中,是) ←在擦除已完成的情況下不執行(且因此晶粒不再忙碌)
b. 主序列→實體定序器(613):發出擦除暫停命令(632)
c. 後序列更新檢查器(614):清除「擦除」(615)狀態並設定「擦除暫停」(615)狀態(634)
7. 佇列化之命令:頁面程式化(605)
a. 主序列→實體定序器(613):發出寫入資料傳送命令(636)
b. 主序列→實體定序器(613):發出頁面程式化命令(638)
c. 主序列→實體定序器(613):在後台中開始狀態輪詢(640)
d. 後序列更新檢查器(614):設定「程式化」(615)狀態(642)
8. NAND快閃晶粒完成程式化且設定其「晶粒準備就緒」(615)狀態(606)
a. 主序列→實體定序器(613):狀態輪詢(640)完成
b. 後序列更新檢查器(614):清除「程式化」(615)狀態(644)
9. 佇列化之命令:擦除恢復(607)
a. 前序列執行檢查器(612):確證「擦除暫停」(615)?(646) (在此實例中,是)
b. 主序列→實體定序器(613):發出擦除恢復命令(648)
c. 主序列→實體定序器(613):在後台中開始狀態輪詢(650)
d. 後序列更新檢查器(614):清除「擦除暫停」(615)狀態,設定「擦除」(615)狀態(652)
10. NAND快閃晶粒完成擦除且設定其「晶粒準備就緒」(615)狀態(608)
a. 主序列→實體定序器(613):狀態輪詢(650)完成
b. 後序列更新檢查器(614):清除「擦除」(615)狀態且設定「晶粒閒置」(615)狀態(654)
應注意,基於表格之條件化、基於表格之定序及/或狀態資訊之含義及/或解釋可由韌體程式化且因此係靈活的,使得可支援各種儲存媒體裝置(例如,具有不同時序規則、不同經支援操作等)。儘管上文未描述,但可透過操縱及測試額外狀態元素來支援其他(例如,更複雜的)序列。此等序列之實例包含:例外處置案例;暫停自NAND快閃晶粒讀取資料之NAND快閃程式化操作等。
如上文所描述,在一些實施例中,由(例如)前序列佇列選擇器(611)或前序列執行檢查器(612)制訂略過(即,摒棄或不執行)一韌體命令之一決策。下圖展示與略過報告相關聯之一信號路徑之一實例(例如,使得韌體知道何時略過一命令且可視需要重新發出命令)。
圖7係繪示與命令或操作略過相關聯之一NAND快閃介面控制器中之一信號路徑之一實施例的一圖式。在此實例中,所展示之模組係一儲存控制器中之一NAND快閃介面控制器(即,硬體)之部分。此圖式展示執行圖2中之略過相關步驟206之模組之一實例。
在此實例中,韌體命令儲存於韌體命令佇列(700)中。前序列佇列選擇器(702)如上文所描述(例如,使用一前序列佇列表格)選擇下一佇列。晶粒命令仲裁器(704)基於儲存媒體裝置中之晶粒(例如,晶粒之狀態)自選定韌體命令佇列仲裁或以其他方式選擇一或多個韌體命令。例如,晶粒命令仲裁器可決定出於效能原因,其想要將多個讀取命令一起及/或連續地發送至同一晶粒且因此仲裁以有利於讀取命令。如本文中所使用,仲裁係在不摒棄的情況下選擇及/或優先化的動作,因此晶粒命令仲裁器(704)未選擇之任何韌體命令保留於其等佇列中。
相比而言,略過檢查器(706)決定是略過(即,摒棄)還是執行由晶粒命令仲裁器(704)傳遞至其之韌體命令。若略過檢查器(706)決定略過韌體命令,則使用自略過檢查器(706)至命令狀態更新器(708)之信號路徑。例如,命令狀態更新器(708)可經由韌體狀態佇列(例如,其對應於輸入佇列)提供關於在韌體命令佇列(700)中佇列化之命令的更新。在圖6中,例如,若在考慮一擦除暫停命令時已完成擦除且在該案例中將略過擦除暫停命令,則將略過該擦除暫停命令。同樣地,若略過擦除暫停命令,則將類似地略過一稍後佇列化之擦除恢復命令。關於經略過擦除暫停命令及/或擦除恢復命令之資訊可經由自略過檢查器(706)至命令狀態更新器(708)之路徑傳遞至韌體。
若略過檢查器(706)決定執行由晶粒命令仲裁器(704)傳遞至其之韌體命令,則控制傳遞至晶粒狀態更新器(710a)。例如,晶粒狀態更新器(710a)更新與相關晶粒相關聯之狀態資訊以反映將由該晶粒執行之韌體命令。在圖6之實例中,由晶粒狀態更新器(710a)更新(624)「晶粒閒置」及「擦除」狀態。晶粒狀態更新器(710a)之更新位置及/或更新值可經由一表格指定及/或控制。
接著,實體定序器(712)獲得實體命令序列並驅動NAND快閃實體介面接腳控制(例如,按照基於表格之定序),如上文所描述。任何部分執行之命令(714)係自實體定序器(712)發送回至前序列佇列選擇器(702),使得其等有機會完成。若一命令容許在執行第一命令時發出一第二命令,則可部分執行該命令。
在實體定序器(712)之後係後序列條件檢查器(716),其檢查及/或確保韌體命令已(例如,完全)執行且狀態資訊處於某一預期及/或完成狀態。若是,則晶粒狀態更新器(710b)更新與相關晶粒相關聯之相關狀態資訊以反映經執行之韌體命令之完成。在圖6之實例中,當頁面程式化操作(638及640)完成時,晶粒狀態更新器(710b)將「程式化」狀態更新為零(644)。接著,「經執行」路徑在命令狀態更新器(708)處重新加入「經略過」路徑,命令狀態更新器(708) (例如)告知韌體關於經執行韌體命令之完成(例如,其遵循上文描述之「經執行」路徑)。
如上文所描述,在一些實施例中,在例外情況之處置期間(例如,當圖5中之晶粒(502及504)之一者確證一例外旗標時)可使用上文描述之一些(例如,基於表格之條件化)技術及/或系統。如上文所描述,儲存控制器有時需要支援具有可在特定組件及/或製造商之間改變之一系列行為之一系列儲存媒體裝置。在一些其他儲存系統中,若發生一例外(例如,儲存媒體裝置或NAND快閃介面控制器確證一例外旗標或暫存器),則其他類型之韌體(即,未執行本文中所描述之技術之彼等類型)重設NAND快閃介面控制器(即,儲存控制器中之硬體)之至少一些部分。此係非常不可取的,因為重設硬體(300)之任何部分可引起長閒置週期,此破壞訊務流量且不利於系統效能。例如,韌體可能不知道NAND快閃記憶體裝置正在執行什麼命令及該命令是否完成或部分執行。判定NAND快閃記憶體裝置之狀態及/或哪些韌體命令未被執行、部分執行或完全執行可係一耗時程序。
可用於其他類型之儲存控制器(即,未執行本文中所描述之技術之類型)之另一復原策略係等待儲存控制器中之硬體執行已佇列化之韌體命令(即,其在發生例外之前已發出),使得硬體可最終執行處理例外之韌體命令。此解決方案係不可取的,因為處理已佇列化之韌體命令可能非常耗時(尤其當存在一例外時)且在一些情況下,控制器可能無法在復原相關命令之前處理已佇列化之韌體命令。
因此,需要更佳能夠處置例外情況之一經改良儲存控制器。下圖描述一些儲存控制器實施例,展示可如何以比先前可執行更徹底及/或更快的方式來處置例外情況。
圖8係繪示使用一條件表格(例如,圖1中之108)之例外處置之一實施例的一流程圖。在一個實例中,圖8之程序係由圖1中之管理至一NAND快閃記憶體裝置(106)之存取之儲存控制器(100)來執行。
在800,回應於接收與一例外相關聯之一指示,確證包含於狀態資訊(例如,圖5中之508、510)中之一例外處置狀態變量(例如,圖5中之521)。例如,韌體可在例示性狀態資訊(512)中之例外處置位元組(540)中確證(例如,將值自0改變為1)凍結位元(541)及/或清空位元(542)。
在802,至少部分基於以下各者自複數個韌體指令選擇一或多個韌體指令:(1)包含用於處置該複數個韌體指令之一或多個條件之一條件表格及(2)包含例外處置狀態變量之狀態資訊。例如,圖3中之前序列佇列選擇器(308)可執行步驟802。前序列佇列表格(307)可指定未確證例外處置狀態變量時之佇列選擇優先級、順序及/或規則(例如,用於常規處置之佇列選擇優先級、順序及/或規則)以及確證例外處置狀態變量時之佇列選擇優先級、順序及/或規則(例如,用於例外處置之佇列選擇優先級、順序及/或規則)。
在804,至少部分基於以下各者判定如何處置一或多個選定韌體指令:(1)條件表格;及(2)包含例外處置狀態變量之狀態資訊,其中:複數個韌體指令包含:(1)與例外處置無關之一或多個韌體指令之一非例外處置集及(2)與例外處置有關之一或多個韌體指令之一例外處置集;且在確證例外處置狀態變量之情況下,條件表格將藉由硬體對韌體指令之例外處置集之執行優先於韌體指令之非例外處置集之執行。
在步驟804之一個實例中,一儲存媒體裝置包含複數個晶粒且其等之一者處於一例外狀態。在一些實施例中,韌體指令之例外處置集包含針對處於例外狀態之晶粒之一重設指令。在一些實施例中,韌體在發出任何重設指令之前首先評定處於例外狀態之晶粒之狀態,因為重設晶粒係可導致資料丟失之一極端及/或激烈步驟。
在步驟804之另一實例中,步驟804可由圖3中之一前序列執行檢查器(311)執行且前序列執行表格(312)可包含非例外處置規則以及例外處置規則。例外處置規則可包含略過、暫停及/或中斷來自韌體指令之非例外處置集之一指令,使得硬體可更快地獲取韌體指令之例外處置集。
在806,與一儲存媒體裝置通信。在圖3中,例如,實體定序器(306)基於來自命令定序器(303)之指令驅動與快閃介面相關聯之實體接腳(315)。藉由其他類型之儲存控制器(即,未執行本文中所描述之技術之彼等),實體接腳(315)處之一觀察者將注意到,當韌體回應於一例外重設硬體時,可中斷至儲存媒體裝置之一些非例外處置指令或命令。此係非所要的,因為自硬體重設復原係耗時的。
相比而言,藉由本文中所描述之技術及/或系統,韌體可(例如,非同步地)確證例外處置狀態變量,且韌體隨後(例如,同步地)以一有序及/或平穩方式將例外處置韌體指令優先於非例外處置韌體指令。描述此之另一方式係當確證例外處置狀態變量(至少在一些實施例中)時,允許完成(或至少達到一平穩退出或暫停點)執行中之非例外處置韌體指令。下一次硬體選擇一佇列(例如,在圖3中之前序列佇列選擇器(308)處)或決定如何處置一選定韌體指令(例如,在圖3中之前序列執行檢查器(311)處)時,由於經確證之例外處置狀態變量(例如,圖3中之309)及經查閱之相關表格(例如,圖3中之307、312及/或314),硬體將例外處置韌體命令優先於非例外處置韌體命令。
一些其他類型之儲存控制器(即,未執行本文中所描述之技術之彼等)為例外處置提供硬體輔助,但此等其他解決方案經硬編碼以僅執行特定、預識別之功能。應注意,歸因於基於表格之條件化之性質,本文中所描述之技術更加靈活。例如,該技術可用於適應未預期及/或新的例外旗標位置或值,且以可適應之各種方式對例外作出回應。例如,一些例外處置可需要凍結特定類型之非例外處置指令,同時清空(即,略過)其他類型之非例外處置指令,且若非例外處置指令自凍結類別移動至清空類別,則本文中所描述之技術及系統之可調適性質允許靈活性。
在一些實施例中,步驟800、802、804及806之任一者係由實施於一SOC上之一儲存控制器中之硬體(例如,一NAND快閃介面控制器)執行。如上文所描述,在一些實施例中,硬體包含以下一或多者:一特定應用積體電路(ASIC)或一場可程式化閘陣列(FPGA)。
圖9係繪示使用包含例外處置狀態變量之狀態資訊執行例外處置之一儲存控制器之一實施例的一圖式。為簡潔及易於解釋,展示一簡化之NAND快閃介面控制器(902),其中可併入上文實例中所展示之實施細節。換言之,在一些實施例中,上文所描述之(例如,用於正常處置之)一些系統組件及/或特徵係用於支援例外處置。
在此實例中,NAND快閃介面控制器(902)係包含執行來自一可程式化控制儲存器(904)之指令之一定序器(903) (例如,在硬體中)之一儲存系統(901)之部分。指令包含檢查(例如,讀取及與一些其他值比較)及修改包含一或多個狀態變量之狀態資訊(905)的一能力。在一些實施例中,至少一些狀態變量亦可由執行於儲存系統(901)上之韌體(906a/906b)修改及檢查。
如下文將更詳細描述,狀態資訊(905)包含一或多個例外處置狀態變量(例如,包括一或多個位元)且控制儲存器(904)包含在例外處置狀態變量經確證(例如,具有1之一值)或未經確證(例如,具有0之一值)時,定序器(903)應進行之(例如,可程式化及/或可組態)指令。
將圖9放入圖3之背景內容中,在一些實施例中,此處所展示之定序器(903)包含來自圖3之前序列佇列選擇器(308)、前序列執行檢查器(311)、命令定序器(303)、實體定序器(306)及後序列更新檢查器(313)。
圖10係繪示經暫停以有利於例外處置韌體指令(1006)之非例外處置韌體指令(1000a及1000b)之一實施例的一圖式。在此實例中,例外處置狀態變量(1002a) (例如,在圖8之程序中提及)係一凍結位元(例如,圖5之541)。在此實例中,針對各NAND快閃組件實體(例如,一晶粒、邏輯單元或字線)維持一例外處置狀態變量。在一些實施例中,針對一實體聚合器(諸如組件實體之一集合或至儲存媒體裝置之實體介面)維持一例外處置狀態變量。
圖5展示此之一實例,其中在NAND快閃記憶體裝置(500)中存在兩個晶粒(502及504),使得存在晶粒狀態資訊(508及510)之兩個集合且各具有其自身例外處置位元組(540),使得兩個晶粒之例外處置可獨立於另一晶粒來管理及/或執行。
在圖9中,定序器(903)回應於由執行於儲存系統(901)中之韌體(906a)發出之命令(907)執行指令。命令(907)包含在命令之執行中使用之引數且可包含規定定序器(903)使用以處理命令之第一指令之一引數。韌體可發出命令,使得存在同時可供定序器處理之多個命令(即,存在多個未處理命令)。在此實例中,命令係放置於可自其選擇任何命令以供定序器(903)處理之複數個韌體命令佇列(908)中。
在執行一選定韌體指令之前,定序器(903)檢查狀態資訊(905)中之與命令或與指令相關聯之相關狀態變量;取決於與命令或指令相關聯之引數,相關狀態變量可為與一組件實體、一實體聚合或此等變量之任何組合相關聯之變量之任一者。
在圖10中,若在此實例中係一凍結位元之例外處置狀態變量(1002a及1002b)處於經確證狀態,則延遲非例外處置韌體指令(1000a)之執行。例如,發生例外事件(1004),從而引起韌體確證凍結位元(即,將凍結位元設定為1)。回應於凍結位元之確證,(作為一實例)硬體不選擇及/或執行非例外處置韌體指令(例如,其等在例外事件(1004)之前發出且在圖9中之韌體命令佇列(908)中待決),使得例外處置韌體指令(1006)可代替性地由硬體優先化及/或執行。
例如,在圖9中,可將例外處置韌體指令放入韌體命令佇列(908)之一空的韌體命令佇列中且藉由硬體將新填充之佇列優先於其他佇列(例如,在佇列選擇期間)。在一些實施例中,不存在空的韌體命令佇列(908)且當確證清空位元(即,設定為1)時,(例如,使用控制儲存器(904)中之指令)指示定序器(903)排空或清空韌體命令佇列之一者(例如,具有低值或容易替換之命令之一佇列),以產生一空的佇列以放入例外處置韌體指令。
返回圖10,一旦已執行所有例外處置韌體指令(1006),便撤銷確證凍結位元(1002b)。在圖9之實例中,硬體(902)可經由至韌體(906b)之一狀態訊息(909)或透過至韌體(906b)之一中斷(910)之確證來指示例外處置韌體指令之結束。一旦韌體已接收例外處置韌體指令(1006)已經執行之確認且韌體確信儲存系統能夠恢復常規處理,韌體便將凍結位元之值設定為0 (1002b)。
回應於撤銷確證凍結位元(1002b),硬體恢復處理非例外處置韌體指令(1000b)。在圖9中,例如,在例外(1004)發生之前發出之非例外處置韌體指令將保留於韌體命令佇列(908)中,直至例外處置完成且在撤銷確證凍結位元時可用於立即處理。
在一些實施例中,例外處置狀態變量(1002a及1002b)係一清空位元(例如,圖5中之542)。在確證清空位元的情況下,當確證清空位元時,受影響之非例外處置韌體指令將被略過或以其他方式自系統清空。在恢復常規處置時(例如,當將清空位元設定為0時),受影響之非例外處置韌體指令將不再存在於韌體命令佇列中。
在圖7之背景內容中,前序列佇列選擇器(702)可檢查凍結位元並相應地作出回應,如上文所描述。如上文所描述,前序列佇列選擇器(702)未摒棄命令而是選擇下一佇列;此功能性支援上文所描述之凍結技術。相比而言,略過檢查器(706)確實具有摒棄或以其他方式清除命令之能力,且係如上文所描述般檢查清空位元並相應地作出回應之一區塊之一實例。
在一些實施例中,當確證凍結位元(即,凍結= 1)時,在略過檢查器(706)與實體定序器(712)之間的任何非例外處置韌體命令係藉由經由部分執行之命令(714)路徑將其等發送回至前序列佇列選擇器(702)而凍結(若處於允許及/或容易如此做之一狀態或時間點或在處於該狀態或時間點時)。換言之,在一些實施例中,凍結包含暫停一部分執行之命令,其中該命令之執行在未確證凍結位元時開始。
在一些實施例中,當確證清空位元(即,清空= 1)時,在晶粒狀態更新器(710a)及實體定序器(712)處之任何非例外處置韌體命令係藉由經由部分執行之命令(714)路徑將其等發送回至前序列佇列選擇器(702)而清空(若處於允許及/或容易如此做之一狀態或時間點或在處於該狀態或時間點時)。在彼等區塊處,命令已由自略過檢查器(706)分支出來之略過路徑傳遞。為返回至略過路徑,該兩個模組中之命令係經由部分執行之命令(714)發送回且接著藉由略過檢查器(706)轉移至略過路徑。
何時可確證清空位元之一個實例係在韌體需要處置一系統例外(如來自系統之一電源關閉通知)時。在另一實例中,硬體可在其自一NAND快閃記憶體裝置接收一錯誤時設定清空位元(例如,因為在NAND快閃記憶體裝置處於該狀態時,韌體無法作出回應)。
如上文所描述,一些非例外處置韌體指令之決策制訂可由凍結位元(例如,圖5中之541)及/或清空位元(例如,圖5中之542)規定。哪些非例外處置韌體指令係由哪一例外處置狀態變量控制係可組態的(例如,藉由圖9中之控制儲存器(904),或藉由圖3中之前序列佇列表格(307)或前序列執行表格(312))。在各項實施例中,一例外處置狀態變量可用於略過一特定類型之命令,暫停(例如,延遲)一特定類型之命令,或執行一特定類型之命令。更一般而言,本文中所描述之技術允許韌體(視需要)在先前發出之(例如,非例外處置)命令被處理之前發出一不同(例如,例外處置)命令集,在先前發出之命令被發出至NAND快閃記憶體裝置之前進行清理,及/或摒棄先前發出之(例如,非例外處置)命令並處理一不同(例如,例外處置)命令集。進行此等選項之任一者之靈活性係由本文中所描述之例示性系統提供。
如上文所描述,在一些實施例中,儲存媒體裝置包含複數個晶粒;狀態資訊包含複數個晶粒特定狀態資訊;且複數個晶粒特定狀態資訊之每一者包含一晶粒特定例外處置狀態變量。例如,參見圖5。
如上文所描述,在一些此等實施例(具有晶粒特定例外處置狀態變量)中,晶粒特定例外處置狀態變量包含一凍結位元;韌體進一步經組態以將韌體指令之例外處置集放入一優先化之佇列中;且自複數個韌體指令選擇一或多個韌體指令包含:回應於確證凍結位元,針對複數個晶粒中之對應於經確證之凍結位元之一晶粒,選擇優於具有韌體指令之非例外處置集之一較低優先級佇列之具有韌體指令之例外處置集之優先化之佇列,如由條件表格規定;且回應於撤銷確證凍結位元,針對複數個晶粒中之對應於經確證之凍結位元之晶粒,恢復選擇具有韌體指令之非例外處置集之較低優先級佇列,如由條件表格規定。
如上文所描述,在一些實施例中,晶粒特定例外處置狀態變量包含一清空位元;且判定如何處置一或多個選定韌體指令包含:回應於確證清空位元,針對複數個晶粒中之對應於經確證之清空位元之一晶粒,摒棄在待清空之一佇列中之韌體指令之非例外處置集,如由條件表格規定。
如上文所描述,在一些此等實施例(例如,具有一清空位元)中,摒棄進一步包含基於指令類型選擇性地摒棄,使得:具有一第一指令類型且包含於待清空之佇列中之一第一非例外處置韌體指令在清空之後保持於待清空之佇列中;且具有一第二指令類型且包含於待清空之佇列中之一第二非例外處置韌體指令在清空之後自待清空之佇列摒棄。例如,取決於情境,可需要略過或以其他方式摒棄特定類型之命令(例如,摒棄需要一相對較長時間之命令(諸如一程式化命令或擦除命令),但保持相對較快之命令(諸如讀取命令或狀態檢查命令))。
如上文所描述,在一些此等實施例(例如,具有一清空位元)中,摒棄進一步包含經由用於部分執行之韌體指令之一路徑將已由一略過-執行分叉傳遞之一非例外處置韌體指令重新選路發送回至該略過-執行分叉。例如,參見圖7。
儘管為清楚理解之目的已相當詳細地描述前文實施例,但本發明並不限於所提供之細節。存在實施本發明之許多替代方式。所揭示之實施例係闡釋性而非限制性的。
100:儲存控制器
101:儲存系統
102:韌體
104:NAND快閃介面控制器
106:NAND快閃記憶體裝置
108:條件表格
110:韌體指令/區塊
112:狀態資訊
114:定序表格
200:步驟
202:步驟
204:步驟
206:步驟/略過相關步驟
208:步驟
210:步驟
212:步驟/後序列步驟
300:NAND快閃介面控制器/硬體
302a:韌體
302b:韌體
303:命令定序器
304:命令序列之第一可寫入控制儲存(WCS)表格
305:實體命令指令之一第二可寫入控制儲存(WCS)表格
306:實體命令定序器/實體定序器
307:前序列佇列表格
308:前序列佇列選擇器
309:狀態資訊/當前狀態
310:韌體命令佇列
311:前序列執行檢查器
312:前序列執行表格
313:後序列更新條件檢查器
314:後序列更新表格
315:實體接腳/快閃實體介面
316:韌體狀態佇列
401:條件表格
402:元素陣列
403:啟用陣列
404:啟用欄位或旗標
405:值陣列
406:經儲存值/值/值欄位
407:多工器
500:NAND快閃記憶體裝置/儲存媒體裝置
502:第一晶粒/晶粒
504:第二晶粒/晶粒
506:狀態資訊
508:晶粒狀態資訊
510:晶粒狀態資訊
512:圖式
520:第一位元組/NAND快閃狀態位元組
521:第一位元/例外位元
522:第二位元/低功率模式位元
523:第三位元/除錯模式位元
530:第二位元組
531:位元
532:位元
533:位元/擦除恢復發送位元
534:位元
535:位元
536:位元/程式化恢復發送位元
540:第三位元組/例外處置位元組
541:第一位元/凍結位元
542:第二位元/清空位元
550:第四位元組
551:程式化計時器位元
552:擦除計時器位元
601:圖式
602:區塊擦除
603:擦除暫停命令
604:終止狀態輪詢
605:頁面程式化/頁面程式化命令
606:設定「晶粒準備就緒」狀態
607:擦除恢復命令
608:設定「晶粒準備就緒」狀態
610:韌體命令佇列
611:前序列佇列選擇器
612:前序列執行檢查器
613:實體定序器
614:後序列更新檢查器
615:狀態資訊
620:確證「晶粒閒置」
621:發出區塊擦除命令
622:在後台中開始狀態輪詢
624:清除「晶粒閒置」狀態並設定「擦除」狀態/更新「晶粒閒置」及「擦除」狀態
626:確證「擦除」而未確證「晶粒準備就緒」
628:終止狀態輪詢
630:未確證「晶粒準備就緒」
632:發出擦除暫停命令
634:清除「擦除」狀態並設定「擦除暫停」狀態
636:發出寫入資料傳送命令
638:發出頁面程式化命令/頁面程式化操作
640:在後台中開始狀態輪詢/頁面程式化操作
642:設定「程式化」狀態
644:清除「程式化」狀態/將「程式化」狀態更新為零
646:確證「擦除暫停」
648:發出擦除恢復命令
650:在後台中開始狀態輪詢
652:清除「擦除暫停」狀態,設定「擦除」狀態
654:清除「擦除」狀態且設定「晶粒閒置」狀態
700:韌體命令佇列
702:前序列佇列選擇器
704:晶粒命令仲裁器
706:略過檢查器
708:命令狀態更新器
710a:晶粒狀態更新器
710b:晶粒狀態更新器
712:實體定序器
714:部分執行之命令
716:後序列條件檢查器
800:步驟
802:步驟
804:步驟
806:步驟
901:儲存系統
902:NAND快閃介面控制器/硬體
903:定序器
904:可程式化控制儲存器/控制儲存器
905:狀態資訊
906a:韌體
906b:韌體
907:命令
908:韌體命令佇列
909:狀態訊息
910:中斷
1000a:非例外處置韌體指令
1000b:非例外處置韌體指令
1002a:例外處置狀態變量
1002b:例外處置狀態變量
1004:例外事件/例外
1006:例外處置韌體指令
在以下詳細描述及隨附圖式中揭示本發明之各項實施例。
圖1係繪示具有包含一條件表格之一NAND快閃介面控制器之一儲存系統之一實施例的一圖式,韌體經由該條件表格向硬體指定用於處置韌體指令之條件。
圖2係繪示用以使用一條件表格及一定序表格管理一儲存媒體裝置之一程序之一實施例的一流程圖。
圖3係繪示一NAND快閃介面控制器之一實施例之一圖式,其中基於表格之條件係使用一前序列佇列表格、一前序列執行表格及一後序列更新表格來實施。
圖4係繪示一條件表格之一實施例之一圖式。
圖5係繪示包含與一NAND快閃記憶體裝置中之複數個晶粒相關聯之狀態資訊之狀態資訊之一實施例的一圖式。
圖6係繪示其中有條件地暫停一擦除操作使得可執行一程式操作,且接著在完成該程式操作時恢復該暫停之擦除操作之一實施例的一圖式。
圖7係繪示在一NAND快閃介面控制器中之與命令或操作略過相關聯之一信號路徑之一實施例的一圖式。
圖8係繪示使用一條件表格之例外處置之一實施例之一流程圖。
圖9係繪示使用包含例外處置狀態變量之狀態資訊執行例外處置之一儲存控制器之一實施例的一圖式。
圖10係繪示經暫停以有利於例外處置韌體指令之非例外處置韌體指令之一實施例的一圖式。
100:儲存控制器
101:儲存系統
102:韌體
104:NAND快閃介面控制器
106:NAND快閃記憶體裝置
108:條件表格
110:韌體指令/區塊
112:狀態資訊
114:定序表格
Claims (18)
- 一種儲存控制器系統,其包括:硬體,其經組態以:至少部分基於以下各者自複數個韌體指令選擇一或多個韌體指令:(1)包含用於處置該複數個韌體指令之一或多個條件之一條件表格及(2)狀態資訊;至少部分基於以下各者判定如何處置該一或多個選定韌體指令:(1)該條件表格及(2)該狀態資訊;且在該經判定處置係執行該一或多個選定韌體指令之情況下,至少部分基於該一或多個選定韌體指令自包含與一儲存媒體裝置相關聯之一或多個指令序列之一定序表格獲得一指令序列;及一介面,其經組態以:在該經判定處置係執行該一或多個選定韌體指令之情況下,將該所獲得之指令序列輸出至該儲存媒體裝置。
- 如請求項1之儲存控制器系統,其中該硬體包含以下一或多者:一特定應用積體電路(ASIC)或一場可程式化閘陣列(FPGA)。
- 如請求項1之儲存控制器系統,其中:該定序表格包含:(1)命令序列之一第一可寫入控制儲存(WCS)表格及(2)實體命令指令之一第二WCS表格;獲得該指令序列包含以下步驟:在包含於該一或多個選定韌體指令中之一第一索引處存取命令序 列之該第一WCS表格,以獲得實體命令指令之該第二WCS表格中之一第二索引;及在該第二索引處存取實體命令指令之該第二WCS表格以獲得一或多個實體命令指令;且輸出該所獲得之指令序列包含使用至少部分定位於實體命令指令之該第二WCS表格中之該第二索引處之該一或多個實體命令指令。
- 如請求項3之儲存控制器系統,其中:在包含於該一或多個選定韌體指令中之該第一索引處存取命令序列之該第一WCS表格進一步包含:獲得一僅內部命令序列;及回應於獲得該僅內部命令序列:略過存取實體命令指令之該第二WCS表格之該步驟;及略過輸出該所獲得之指令序列之該步驟。
- 如請求項1之儲存控制器系統,其中:該條件表格包含一後處理條件,該後處理條件包含:(1)特定於該儲存媒體裝置之一狀態更新位置及(2)特定於該儲存媒體裝置之一狀態更新值;且該硬體進一步經組態以用該狀態更新值來更新該狀態更新位置,如由該後處理條件指定。
- 如請求項1之儲存控制器系統,其中:該條件表格包含一後處理條件,該後處理條件包含:(1)一除錯相關 更新位置及(2)一除錯相關更新值,其中在韌體處於一除錯模式中之情況下,該韌體啟用該後處理條件;且該硬體進一步經組態以用該除錯相關更新值來更新該除錯相關更新位置,如由該後處理條件指定。
- 如請求項1之儲存控制器系統,其中:該儲存媒體裝置支援允許暫停以下一或多者之一暫停命令:一程式化命令或一擦除命令;該狀態資訊包含暫停相關狀態資訊;該條件表格包含暫停相關條件資訊;且判定如何處置該一或多個選定韌體指令包含比較該暫停相關狀態資訊與該暫停相關條件資訊。
- 如請求項1之儲存控制器系統,其中:該狀態資訊包含計時器相關狀態資訊;該條件表格包含計時器相關條件資訊;且判定如何處置該一或多個選定韌體指令包含比較該計時器相關狀態資訊與該計時器相關條件資訊。
- 如請求項8之儲存控制器系統,其中與該計時器相關狀態資訊相關聯之一計時器回應於以下一或多者而開始計數:一程式化命令或一擦除命令。
- 一種儲存控制的方法,其包括:提供硬體,該硬體經組態以:至少部分基於以下各者自複數個韌體指令選擇一或多個韌體指令:(1)包含用於處置該複數個韌體指令之一或多個條件之一條件表格及(2)狀態資訊;至少部分基於以下各者來判定如何處置該一或多個選定韌體指令:(1)該條件表格及(2)該狀態資訊;且在該經判定處置係執行該一或多個選定韌體指令之情況下,至少部分基於該一或多個選定韌體指令自包含與一儲存媒體裝置相關聯之一或多個指令序列之一定序表格獲得一指令序列;及提供一介面,該介面經組態以:在該經判定處置係執行該一或多個選定韌體指令之情況下,將該所獲得之指令序列輸出至該儲存媒體裝置。
- 如請求項10之方法,其中該硬體包含以下一或多者:一特定應用積體電路(ASIC)或一場可程式化閘陣列(FPGA)。
- 如請求項10之方法,其中:該定序表格包含:(1)命令序列之一第一可寫入控制儲存(WCS)表格及(2)實體命令指令之一第二WCS表格;獲得該指令序列包含以下步驟:在包含於該一或多個選定韌體指令中之一第一索引處存取命令序列之該第一WCS表格,以獲得實體命令指令之該第二WCS表格中之一第二索引;及 在該第二索引處存取實體命令指令之該第二WCS表格以獲得一或多個實體命令指令;且輸出該所獲得之指令序列包含使用至少部分定位於實體命令指令之該第二WCS表格中之該第二索引處之該一或多個實體命令指令。
- 如請求項12之方法,其中:在包含於該一或多個選定韌體指令中之該第一索引處存取命令序列之該第一WCS表格進一步包含:獲得一僅內部命令序列;及回應於獲得該僅內部命令序列:略過存取實體命令指令之該第二WCS表格之該步驟;及略過輸出該所獲得之指令序列之該步驟。
- 如請求項10之方法,其中:該條件表格包含一後處理條件,該後處理條件包含:(1)特定於該儲存媒體裝置之一狀態更新位置及(2)特定於該儲存媒體裝置之一狀態更新值;且該硬體進一步經組態以用該狀態更新值來更新該狀態更新位置,如由該後處理條件指定。
- 如請求項10之方法,其中:該條件表格包含一後處理條件,該後處理條件包含:(1)一除錯相關更新位置及(2)一除錯相關更新值,其中在韌體處於一除錯模式中之情況下,該韌體啟用該後處理條件;且 該硬體進一步經組態以用該除錯相關更新值來更新該除錯相關更新位置,如由該後處理條件指定。
- 如請求項10之方法,其中:該儲存媒體裝置支援允許暫停以下一或多者之一暫停命令:一程式化命令或一擦除命令;該狀態資訊包含暫停相關狀態資訊;該條件表格包含暫停相關條件資訊;且判定如何處置該一或多個選定韌體指令包含比較該暫停相關狀態資訊與該暫停相關條件資訊。
- 如請求項10之方法,其中:該狀態資訊包含計時器相關狀態資訊;該條件表格包含計時器相關條件資訊;且判定如何處置該一或多個選定韌體指令包含比較該計時器相關狀態資訊與該計時器相關條件資訊。
- 如請求項17之方法,其中與該計時器相關狀態資訊相關聯之一計時器回應於以下一或多者而開始計數:一程式化命令或一擦除命令。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163226009P | 2021-07-27 | 2021-07-27 | |
US63/226,009 | 2021-07-27 | ||
US17/866,149 | 2022-07-15 | ||
US17/866,149 US11640270B2 (en) | 2021-07-27 | 2022-07-15 | Firmware-controlled and table-based conditioning for flexible storage controller |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202314522A TW202314522A (zh) | 2023-04-01 |
TWI827158B true TWI827158B (zh) | 2023-12-21 |
Family
ID=85038528
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111127784A TWI815571B (zh) | 2021-07-27 | 2022-07-25 | 儲存控制器系統及執行例外處置的方法 |
TW111127782A TWI827158B (zh) | 2021-07-27 | 2022-07-25 | 用於靈活的儲存控制器之韌體控制及基於表格的條件化 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111127784A TWI815571B (zh) | 2021-07-27 | 2022-07-25 | 儲存控制器系統及執行例外處置的方法 |
Country Status (3)
Country | Link |
---|---|
US (3) | US11650753B2 (zh) |
CN (3) | CN115878501B (zh) |
TW (2) | TWI815571B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200715134A (en) * | 2005-08-01 | 2007-04-16 | Dot Hill Systems Corp | Management of storage resource devices |
CN101236538A (zh) * | 2007-02-01 | 2008-08-06 | 捷安讯科技股份有限公司 | 硬件的驱动架构与方法 |
TW200849015A (en) * | 2007-06-13 | 2008-12-16 | Silicon Motion Inc | Method and system for presenting an executing status of a memory card |
TW201111981A (en) * | 2009-04-21 | 2011-04-01 | Ibm | Apparatus and method for controlling a solid state disk |
TW201636844A (zh) * | 2015-04-15 | 2016-10-16 | 宏碁股份有限公司 | 記憶體控制器及儲存裝置 |
TW201810025A (zh) * | 2016-04-22 | 2018-03-16 | 大心電子(英屬維京群島)股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TW202032359A (zh) * | 2012-04-20 | 2020-09-01 | 美商記憶體科技公司 | 記憶體模組、在該記憶體模組中管理操作狀態資料的方法、及主機裝置 |
TW202032378A (zh) * | 2019-01-31 | 2020-09-01 | 美商萬國商業機器公司 | 處理輸入輸出儲存指令 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5479616A (en) * | 1992-04-03 | 1995-12-26 | Cyrix Corporation | Exception handling for prefetched instruction bytes using valid bits to identify instructions that will cause an exception |
US6487716B1 (en) * | 1999-10-08 | 2002-11-26 | International Business Machines Corporation | Methods and apparatus for optimizing programs in the presence of exceptions |
US6697939B1 (en) * | 2000-01-06 | 2004-02-24 | International Business Machines Corporation | Basic block cache microprocessor with instruction history information |
US9455955B2 (en) | 2006-05-17 | 2016-09-27 | Richard Fetik | Customizable storage controller with integrated F+ storage firewall protection |
US8291202B2 (en) * | 2008-08-08 | 2012-10-16 | Qualcomm Incorporated | Apparatus and methods for speculative interrupt vector prefetching |
US8972627B2 (en) | 2009-09-09 | 2015-03-03 | Fusion-Io, Inc. | Apparatus, system, and method for managing operations for data storage media |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
CN103348330B (zh) * | 2010-12-01 | 2017-05-24 | 希捷科技有限公司 | 采用独立硅元件的动态较高级冗余模式管理 |
US9058275B2 (en) * | 2011-06-10 | 2015-06-16 | International Business Machines Corporation | Data returned responsive to executing a start subchannel instruction |
JP6211842B2 (ja) * | 2013-07-26 | 2017-10-11 | Necプラットフォームズ株式会社 | 通信システム及び通信装置、並びにファームウェア稼動異常復旧制御方法 |
CN105723317B (zh) * | 2013-11-13 | 2019-06-28 | 桑迪士克科技有限责任公司 | 用于与非易失性存储器通信的方法和系统 |
US9939865B2 (en) | 2014-06-13 | 2018-04-10 | Seagate Technology Llc | Selective storage resource powering for data transfer management |
US9665376B2 (en) * | 2014-12-15 | 2017-05-30 | International Business Machines Corporation | Sharing program interrupt logic in a multithreaded processor |
WO2016182783A1 (en) * | 2015-05-14 | 2016-11-17 | Adesto Technologies Corporation | Concurrent read and reconfigured write operations in a memory device |
US20170046102A1 (en) * | 2015-08-14 | 2017-02-16 | Marvell World Trade Ltd. | Flexible interface for nand flash memory |
US10007459B2 (en) | 2016-10-20 | 2018-06-26 | Pure Storage, Inc. | Performance tuning in a storage system that includes one or more storage devices |
KR102396448B1 (ko) | 2017-10-19 | 2022-05-11 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 동작 방법 |
CN110476153A (zh) * | 2018-03-09 | 2019-11-19 | 深圳市汇顶科技股份有限公司 | 访问指令sram的方法和电子设备 |
US10656872B2 (en) * | 2018-03-15 | 2020-05-19 | Western Digital Technologies, Inc. | Storage device with multi-die management |
US10922013B2 (en) * | 2018-04-09 | 2021-02-16 | Western Digital Technologies, Inc. | Suspending and resuming a read operation for a non-volatile memory |
KR102592902B1 (ko) * | 2018-09-05 | 2023-10-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
JP7218141B2 (ja) * | 2018-10-15 | 2023-02-06 | キヤノン株式会社 | 通信システム、および画像形成装置 |
KR102680273B1 (ko) * | 2019-02-12 | 2024-07-01 | 삼성전자주식회사 | 서스펜드 모드를 제어하는 방법 및 이를 포함하는 메모리 컨트롤러 |
US11347860B2 (en) * | 2019-06-28 | 2022-05-31 | Seagate Technology Llc | Randomizing firmware loaded to a processor memory |
US11923016B2 (en) | 2020-09-25 | 2024-03-05 | Intel Corporation | Progressive program suspend resume |
US11409439B2 (en) | 2020-11-10 | 2022-08-09 | Samsung Electronics Co., Ltd. | Binding application to namespace (NS) to set to submission queue (SQ) and assigning performance service level agreement (SLA) and passing it to a storage device |
CN112506758A (zh) * | 2020-11-19 | 2021-03-16 | 宁畅信息产业(北京)有限公司 | 固件刷新方法、装置、计算机设备和存储介质 |
JP2022092965A (ja) | 2020-12-11 | 2022-06-23 | キオクシア株式会社 | メモリシステム |
US20210247937A1 (en) * | 2021-04-27 | 2021-08-12 | Intel Corporation | Dynamic program suspend disable for random write ssd workload |
KR20230068683A (ko) * | 2021-11-11 | 2023-05-18 | 삼성전자주식회사 | 서스펜드 동작 검사 방법 |
-
2022
- 2022-07-15 US US17/866,169 patent/US11650753B2/en active Active
- 2022-07-15 US US17/866,149 patent/US11640270B2/en active Active
- 2022-07-25 TW TW111127784A patent/TWI815571B/zh active
- 2022-07-25 TW TW111127782A patent/TWI827158B/zh active
- 2022-07-27 CN CN202210891154.9A patent/CN115878501B/zh active Active
- 2022-07-27 CN CN202410818806.5A patent/CN118672506A/zh active Pending
- 2022-07-27 CN CN202210891173.1A patent/CN115686353B/zh active Active
-
2023
- 2023-03-21 US US18/124,208 patent/US20230221894A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200715134A (en) * | 2005-08-01 | 2007-04-16 | Dot Hill Systems Corp | Management of storage resource devices |
CN101236538A (zh) * | 2007-02-01 | 2008-08-06 | 捷安讯科技股份有限公司 | 硬件的驱动架构与方法 |
TW200849015A (en) * | 2007-06-13 | 2008-12-16 | Silicon Motion Inc | Method and system for presenting an executing status of a memory card |
TW201111981A (en) * | 2009-04-21 | 2011-04-01 | Ibm | Apparatus and method for controlling a solid state disk |
TW202032359A (zh) * | 2012-04-20 | 2020-09-01 | 美商記憶體科技公司 | 記憶體模組、在該記憶體模組中管理操作狀態資料的方法、及主機裝置 |
TW201636844A (zh) * | 2015-04-15 | 2016-10-16 | 宏碁股份有限公司 | 記憶體控制器及儲存裝置 |
TW201810025A (zh) * | 2016-04-22 | 2018-03-16 | 大心電子(英屬維京群島)股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TW202032378A (zh) * | 2019-01-31 | 2020-09-01 | 美商萬國商業機器公司 | 處理輸入輸出儲存指令 |
Also Published As
Publication number | Publication date |
---|---|
TWI815571B (zh) | 2023-09-11 |
CN115686353A (zh) | 2023-02-03 |
CN115686353B (zh) | 2024-07-16 |
TW202314523A (zh) | 2023-04-01 |
US11640270B2 (en) | 2023-05-02 |
US20230034009A1 (en) | 2023-02-02 |
TW202314522A (zh) | 2023-04-01 |
US20230033116A1 (en) | 2023-02-02 |
CN118672506A (zh) | 2024-09-20 |
CN115878501A (zh) | 2023-03-31 |
US11650753B2 (en) | 2023-05-16 |
US20230221894A1 (en) | 2023-07-13 |
CN115878501B (zh) | 2024-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1531390A2 (en) | Method and apparatus for controlling the execution of multiple threads in a parallel processor | |
US7793025B2 (en) | Hardware managed context sensitive interrupt priority level control | |
US20160110299A1 (en) | Low Power Autonomous Peripheral Management | |
JP5977094B2 (ja) | フレキシブルフラッシュコマンド | |
US20060161727A1 (en) | Method and system for managing a suspend request in a flash memory | |
KR20210011451A (ko) | 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링 | |
US20100031075A1 (en) | Memory Power Profiling | |
US6889279B2 (en) | Pre-stored vector interrupt handling system and method | |
JP2013025794A (ja) | フラッシュインタフェースの有効利用 | |
TWI827158B (zh) | 用於靈活的儲存控制器之韌體控制及基於表格的條件化 | |
TWI762448B (zh) | 時鐘管理電路、以及含有該時鐘管理電路的積體電路 | |
US20090320034A1 (en) | Data processing apparatus | |
WO2002061582A2 (en) | Event handling | |
US20120072632A1 (en) | Deterministic and non-Deterministic Execution in One Processor | |
JP2011070290A (ja) | データプロセッサ | |
US20080282072A1 (en) | Executing Software Within Real-Time Hardware Constraints Using Functionally Programmable Branch Table | |
US20080278195A1 (en) | Structure for executing software within real-time hardware constraints using functionally programmable branch table | |
US9804782B1 (en) | Fully scalable command execution unit | |
JP2007034554A (ja) | 半導体集積回路及びマイクロコンピュータ | |
CN117493260B (zh) | 用于跟踪任务的完成的记分牌 | |
JP5644197B2 (ja) | コンピュータシステムおよび割込要求処理方法 | |
JP2004343158A (ja) | コンフィグレーション装置、方法及びプログラム | |
US20040230319A1 (en) | Microcontroller device for complex processing procedures and corresponding interrupt management process | |
CN117520064A (zh) | 使用中断引脚的硬件状态报告 | |
CN116521329A (zh) | 一种任务调度方法、装置、设备及存储介质 |