TW202009715A - 記憶體管理方法以及儲存控制器 - Google Patents
記憶體管理方法以及儲存控制器 Download PDFInfo
- Publication number
- TW202009715A TW202009715A TW107130025A TW107130025A TW202009715A TW 202009715 A TW202009715 A TW 202009715A TW 107130025 A TW107130025 A TW 107130025A TW 107130025 A TW107130025 A TW 107130025A TW 202009715 A TW202009715 A TW 202009715A
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- instruction
- stage
- target
- host
- Prior art date
Links
Images
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/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/0656—Data buffering arrangements
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提供一種記憶體管理方法。所述方法包括:儲存獲取的第一指令至指令佇列,並且根據當前指令階段設定所述第一指令的指令階段值,其中反應於判定所述第一指令為刷新指令,計算對應當前指令階段的指令階段計數值,並且調整所述當前指令階段;從所述指令佇列中選擇新的目標指令,根據所述目標指令的目標指令階段值以及對應的目標指令階段計數值來執行所述目標指令,其中非預設值的所述目標指令階段計數值會被調整;根據調整後的所述目標指令階段計數值判斷是否回應主機系統對應所述目標指令階段值的目標刷新指令已經執行完畢。
Description
本發明是有關於一種記憶體管理方法,且特別是有關於一種適用於配置有可複寫式非揮發性記憶體模組的儲存裝置的記憶體管理方法與儲存控制器。
傳統的SATA(Serial Advanced Technology Attachment)介面的固態硬碟(配置有可複寫式非揮發性記憶體模組的儲存裝置)會使用進階主機控制器介面(Advanced Host Controller Interface,以下稱AHCI)標準,其允許軟體與SATA儲存裝置溝通。一般來說,AHCI具有32個指令深度,即,允許主機系統同一時間內下達32個指令。
但是,隨著硬體本身的進展,SATA介面的固態硬碟也演化為PCIe(Peripheral Component Interconnect express)介面的固態硬碟,並且PCIe介面的固態硬碟會使用非揮發性記憶體主機控制器介面(Non-Volatile Memory express,以下稱NVMe)標準。一般來說,NVMe具有65536個指令深度,即,允許主機系統同一時間內下達65536個指令。也就是說,因為NVMe標準可提供近兩千倍的指令深度,儲存控制器所需要管理的來自主機系統的指令的數量也會隨之大量增加。
因此,要如何在NVMe標準下管理所接收到的大量指令,進而提昇PCIe介面的固態硬碟的處理指令的效率,是本領域人員研究的課題之一。
本發明提供一種記憶體管理方法(亦稱,主機指令管理方法)與儲存控制器,可有效率地消化指令佇列中的多個指令,並且降低刷新指令所造成的資源搶奪。
本發明的一實施例提供適用於配置有可複寫式非揮發性記憶體模組的儲存裝置的一種記憶體管理方法。所述方法包括下列步驟:(1)從指令緩衝器獲取新的第一指令,並且判斷所述第一指令是否為刷新指令(Flush Command),其中反應於判定所述第一指令為該刷新指令,執行步驟(2a),其中反應於判定所述第一指令不為該刷新指令,執行步驟(2b);(2a)根據一當前指令階段來設定所述刷新指令的指令階段值,將所述刷新指令儲存至指令佇列(Command Queue)中,辨識所述指令佇列中對應所述當前指令階段的多個第二指令,並且計數所述多個第二指令的總數以成為對應所述當前指令階段的指令階段計數值;將所述當前指令階段從多個指令階段中的第一指令階段調整至第二指令階段;以及根據所述指令佇列的剩餘空間以及所述指令佇列中的一或多個刷新指令的總數來執行步驟(1)或步驟(3);(2b) 根據所述當前指令階段來設定所述第一指令的指令階段值,將所述第一指令儲存至所述指令佇列,並且根據所述指令佇列的所述剩餘空間來執行步驟(1)或步驟(3);(3) 不從所述指令緩衝器獲取新的第一指令,並且執行步驟(4);(4)從所述指令佇列的一或多個非刷新指令中選擇新的目標指令,辨識所述目標指令的目標指令階段值以及對應所述目標指令階段值的目標指令階段計數值,其中反應於所辨識的所述目標指令階段計數值等於預設值,執行步驟(5a),其中反應於所辨識的所述目標指令階段計數值不等於預設值,執行步驟(5b);(5a)執行所述目標指令,並且反應於完成所述目標指令的執行,從所述指令佇列中刪除所述目標指令,並且執行步驟(1);(5b)改變所述目標指令階段計數值,並且根據改變後的所述目標指令階段計數值執行步驟(5a)或步驟(5c);(5c)執行所述目標指令,回應一主機系統對應所述目標指令階段值的目標刷新指令已經執行完畢,將所述目標指令階段計數值設定為所述預設值,並且執行步驟(1)。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的儲存裝置的一種儲存控制器。所述儲存控制器包括:連接介面電路、記憶體介面控制電路、主機指令管理電路單元以及處理器。連接介面電路用以耦接至主機系統。記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組。處理器耦接至所述連接介面電路、所述記憶體介面控制電路及所述主機指令管理電路單元。所述處理器,其中所述處理器用以指示所述主機指令管理電路單元執行一主機指令管理操作。所述主機指令管理操作包括下列步驟:(1) 該主機指令管理電路單元從指令緩衝器獲取新的第一指令,並且判斷所述第一指令是否為刷新指令(Flush Command),其中反應於判定所述第一指令為該刷新指令,執行步驟(2a),其中反應於判定所述第一指令不為該刷新指令,執行步驟(2b);(2a) 該主機指令管理電路單元根據一當前指令階段來設定所述刷新指令的指令階段值,將所述刷新指令儲存至指令佇列(Command Queue)中,辨識所述指令佇列中對應所述當前指令階段的多個第二指令,並且計數所述多個第二指令的總數以成為對應所述當前指令階段的指令階段計數值;該主機指令管理電路單元將所述當前指令階段從多個指令階段中的第一指令階段調整至第二指令階段;以及該主機指令管理電路單元根據所述指令佇列的剩餘空間以及所述指令佇列中的一或多個刷新指令的總數來執行步驟(1)或步驟(3);(2b) 該主機指令管理電路單元根據所述當前指令階段來設定所述第一指令的指令階段值,將所述第一指令儲存至所述指令佇列,並且根據所述指令佇列的所述剩餘空間來執行步驟(1)或步驟(3);(3) 該主機指令管理電路單元不從所述指令緩衝器獲取新的第一指令,並且執行步驟(4);(4) 該主機指令管理電路單元從所述指令佇列的一或多個非刷新指令中選擇新的目標指令,辨識所述目標指令的目標指令階段值以及對應所述目標指令階段值的目標指令階段計數值,其中反應於所辨識的所述目標指令階段計數值等於預設值,執行步驟(5a),其中反應於所辨識的所述目標指令階段計數值不等於預設值,執行步驟(5b);(5a) 該主機指令管理電路單元指示該處理器執行所述目標指令,並且反應於完成所述目標指令的執行,從所述指令佇列中刪除所述目標指令,並且執行步驟(1);(5b) 該主機指令管理電路單元改變所述目標指令階段計數值,並且根據改變後的所述目標指令階段計數值執行步驟(5a)或步驟(5c);(5c) 該主機指令管理電路單元指示該處理器執行所述目標指令,回應一主機系統對應所述目標指令階段值的目標刷新指令已經執行完畢,將所述目標指令階段計數值設定為所述預設值,並且執行步驟(1)。
基於上述,本實施例所提供的記憶體管理方法以及儲存控制器,可在指令佇列接收到刷新指令的時候,記錄對應的指令階段計數值且更新當前指令階段,不會直接根據所接收的刷新指令來執行與清空指令佇列中對應所述刷新指令的非刷新指令。此外,更根據不同的條件來調整所記錄的指令階段計數值,以管理指令佇列中對應不同指令階段的指令,進而完成所接收之刷新指令。也就是說,本實施例所提供的記憶體管理方法以及儲存控制器,可使指令佇列中對應所述刷新指令的非刷新指令不會具有特別的優先權,以避免延遲了其他指令的執行。如此一來,儲存裝置可在平滑地消化(執行)指令佇列中的所有指令的過程中,順便完成所接收的刷新指令,進而增進了儲存裝置的資料存取效率與工作效率。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
在本實施例中,儲存裝置包括可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)與儲存裝置控制器(亦稱,儲存控制器或儲存控制電路)。此外,儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至儲存裝置或從儲存裝置中讀取資料。
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。
請參照圖1,主機系統(Host System)10包括處理器(Processor)110、主機記憶體(Host Memory)120及資料傳輸介面電路(Data Transfer Interface Circuit)130。在本實施例中,資料傳輸介面電路130耦接(亦稱,電性連接)至處理器110與主機記憶體120。在另一實施例中,處理器110、主機記憶體120與資料傳輸介面電路130之間利用系統匯流排(System Bus)彼此耦接。
儲存裝置20包括儲存控制器(Storage Controller)210、可複寫式非揮發性記憶體模組(Rewritable Non-Volatile Memory Module)220及連接介面電路(Connection Interface Circuit)230。其中,儲存控制器210包括處理器211、資料管理電路(Data Transfer Management Circuit)212與記憶體介面控制電路(Memory Interface Control Circuit)213。
在本實施例中,主機系統10是透過資料傳輸介面電路130與儲存裝置20的連接介面電路230耦接至儲存裝置20來進行資料的存取操作。例如,主機系統10可經由資料傳輸介面電路130將資料儲存至儲存裝置20或從儲存裝置20中讀取資料。
在本實施例中,處理器110、主機記憶體120及資料傳輸介面電路130可設置在主機系統10的主機板上。資料傳輸介面電路130的數目可以是一或多個。透過資料傳輸介面電路130,主機板可以經由有線或無線方式耦接至儲存裝置20。儲存裝置20可例如是隨身碟、記憶卡、固態硬碟(Solid State Drive,SSD)或無線記憶體儲存裝置。無線記憶體儲存裝置可例如是近距離無線通訊(Near Field Communication,NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板也可以透過系統匯流排耦接至全球定位系統(Global Positioning System,GPS)模組、網路介面卡、無線傳輸裝置、鍵盤、螢幕、喇叭等各式I/O裝置。
在本實施例中,資料傳輸介面電路130與連接介面電路230是相容於高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)標準的介面電路。並且,資料傳輸介面電路130與連接介面電路230之間是利用快速非揮發性記憶體介面標準(Non-Volatile Memory express,NVMe)通訊協定來進行資料的傳輸。
然而,必須瞭解的是,本發明不限於此,資料傳輸介面電路130與連接介面電路230亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、序列先進附件(Serial Advanced Technology Attachment,SATA)標準、通用序列匯流排(Universal Serial Bus,USB)標準、SD介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick, MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。此外,在另一實施例中,連接介面電路230可與儲存控制器210封裝在一個晶片中,或者連接介面電路230是佈設於一包含儲存控制器210之晶片外。
在本實施例中,主機記憶體120用以暫存處理器110所執行的指令或資料。例如,在本範例實施例中,主機記憶體120可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)等。然而,必須瞭解的是,本發明不限於此,主機記憶體120也可以是其他適合的記憶體。
儲存控制器210用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統10的指令在可複寫式非揮發性記憶體模組220中進行資料的寫入、讀取與抹除等運作。
更詳細來說,儲存控制器210中的處理器211為具備運算能力的硬體,其用以控制儲存控制器210的整體運作。具體來說,處理器211具有多個控制指令,並且在儲存裝置20運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。
值得一提的是,在本實施例中,處理器110與處理器211例如是中央處理單元(Central Processing Unit,CPU)、微處理器(micro-processor)、或是其他可程式化之處理單元(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似電路元件,本發明並不限於此。
在一實施例中,儲存控制器210還具有唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當儲存控制器210被致能時,處理器211會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組220中之控制指令載入至儲存控制器210的隨機存取記憶體中。之後,處理器211會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。在另一實施例中,處理器211的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組220的特定區域,例如,可複寫式非揮發性記憶體模組220中專用於存放系統資料的實體儲存單元中。
在本實施例中,如上所述,儲存控制器210還包括資料管理電路212與記憶體介面控制電路213。應注意的是,儲存控制器210各部件所執行的操作亦可視為儲存控制器210所執行的操作。
其中,資料管理電路212耦接至處理器211、記憶體介面控制電路213與連接介面電路230。資料管理電路212用以接受處理器211的指示來進行資料的傳輸。例如,經由連接介面電路230從主機系統10(如,主機記憶體120)讀取資料,並且將所讀取的資料經由記憶體介面控制電路213寫入至可複寫式非揮發性記憶體模組220中(如,根據來自主機系統10的寫入指令來進行寫入操作)。又例如,經由記憶體介面控制電路213從可複寫式非揮發性記憶體模組220的一或多個實體單元中讀取資料(資料可讀取自一或多個實體單元中的一或多個記憶胞),並且將所讀取的資料經由連接介面電路230寫入至主機系統10(如,主機記憶體120)中(如,根據來自主機系統10的讀取指令來進行讀取操作)。在另一實施例中,資料管理電路212亦可整合至處理器211中。
記憶體介面控制電路213用以接受處理器211(或空白單元管理電路模組215)的指示,配合資料管理電路212來進行對於可複寫式非揮發性記憶體模組220的寫入(亦稱,程式化,Programming)操作、讀取操作或抹除操作。例如,根據空白單元管理電路模組215的指示使用特定的讀取電壓來進行對於可複寫式非揮發性記憶體模組220的一儲存單元的讀取操作。
舉例來說,處理器211可執行寫入指令序列,以指示記憶體介面控制電路213將資料寫入至可複寫式非揮發性記憶體模組220中;處理器211可執行讀取指令序列,以指示記憶體介面控制電路213從可複寫式非揮發性記憶體模組220的對應讀取指令的一或多個實體單元中讀取資料;處理器211可執行抹除指令序列,以指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220進行抹除操作。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示對可複寫式非揮發性記憶體模組220執行相對應的寫入、讀取及抹除等操作。在一實施例中,處理器211還可以下達其他類型的指令序列給記憶體介面控制電路213,以對可複寫式非揮發性記憶體模組220執行相對應的操作。
此外,欲寫入至可複寫式非揮發性記憶體模組220的資料會經由記憶體介面控制電路213轉換為可複寫式非揮發性記憶體模組220所能接受的格式。具體來說,若處理器211要執行寫入或讀取指令以存取可複寫式非揮發性記憶體模組220,處理器211會傳送對應的指令序列給記憶體介面控制電路213以指示記憶體介面控制電路213執行對應的操作。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,耗損平衡操作或垃圾回收操作等等)的相對應的指令序列。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
可複寫式非揮發性記憶體模組220是耦接至儲存控制器210(記憶體介面控制電路213)並且用以儲存主機系統10所寫入之資料。可複寫式非揮發性記憶體模組220可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、三階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、四階記憶胞(Quadruple Level Cell,QLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存4個位元的快閃記憶體模組)、三維NAND型快閃記憶體模組(3D NAND flash memory module)或垂直NAND型快閃記憶體模組(Vertical NAND flash memory module)等其他快閃記憶體模組或其他具有相同特性的記憶體模組。可複寫式非揮發性記憶體模組220中的記憶胞是以陣列的方式設置。
在本實施例中,可複寫式非揮發性記憶體模組220具有多個字元線,其中所述多個字元線的每一個字元線包括多個記憶胞。同一條字元線上的多個記憶胞會組成一或多個實體程式化單元(實體頁面)。此外,多個實體程式化單元可組成一個實體單元(實體區塊或實體抹除單元)。在本實施例中,一個實體程式化單元可具有不同類型的實體頁面。舉例來說,在一實施例中,對於三階記憶胞NAND型快閃記憶體模組來說,三階記憶胞NAND型快閃記憶體模組的一個實體程式化單元可具有第一類型實體頁面與第二類型實體頁面。所述第一類型實體頁面例如為儲存一個位元值的下實體頁面(Lower Physical Page);所述第二類型實體頁面例如為各自儲存一個位元值的中實體頁面(Middle Physical Page)與上實體頁面(Upper Physical Page)。又例如,在一實施例中,對於三階記憶胞NAND型快閃記憶體模組來說,三階記憶胞NAND型快閃記憶體模組的一個實體程式化單元可具有第一類型實體頁面、第二類型實體頁面與第三類型實體頁面。所述第一類型實體頁面例如為儲存一個位元值的下實體頁面;所述第二類型實體頁面例如為儲存一個位元值的中實體頁面;所述第三類型實體頁面例如為儲存一個位元值的上實體頁面。一般來說,當欲寫入資料至三階記憶胞NAND型快閃記憶體模組的一個實體程式化單元的上、中、下實體頁面時,會依序從下實體頁面開始寫入資料,再寫入至中實體頁面,最後寫入至上實體頁面。
在本實施例中,實體抹除單元為抹除之最小單位,即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。每一實體抹除單元會具有多個實體程式化單元。一個實體抹除單元可以是指任意數目的實體程式化單元組成,視實務上的需求而定。
在以下實施例中,是以一個實體區塊作為一個實體抹除單元(亦可稱為,實體單元)的範例,並且每一個實體程式化單元被視為一個實體子單元。此外,必須瞭解的是,當處理器211對可複寫式非揮發性記憶體模組220中的實體程式化單元(或實體單元)進行分組以執行對應的管理操作時,此些實體程式化單元(或實體單元)是被邏輯地分組,而其實際位置並未更動。
儲存控制器210會配置多個邏輯單元給可複寫式非揮發性記憶體模組220。主機系統10是透過所配置的邏輯單元來存取儲存在多個實體單元中的使用者資料。在此,每一個邏輯單元可以是由一或多個邏輯位址組成。例如,邏輯單元可以是邏輯區塊(Logical Block)、邏輯頁面(Logical Page)或是邏輯扇區(Logical Sector)。在本實施例中,邏輯單元為邏輯區塊,並且邏輯子單元為邏輯頁面。每一邏輯單元具有多個邏輯子單元。一個邏輯單元可以是映射至一個實體單元,並且一個邏輯子單元可以是映射至一個實體子單元。
此外,儲存控制器210會建立邏輯轉實體位址映射表(Logical To Physical address mapping table)與實體轉邏輯位址映射表(Physical To Logical address mapping table),以記錄配置給可複寫式非揮發性記憶體模組220的邏輯位址(如,邏輯區塊、邏輯頁面或邏輯扇區)與實體位址(如,實體抹除單元、實體程式化單元、實體扇區)之間的映射關係。換言之,儲存控制器210可藉由邏輯轉實體位址映射表來查找一邏輯單元所映射的實體位址,並且儲存控制器210可藉由實體轉邏輯位址映射表來查找一實體位址所映射的邏輯位址。然而,上述有關邏輯位址與實體位址映射的技術概念為本領域技術人員之慣用技術手段,不再贅述於此。
在本實施例中,錯誤檢查與校正電路214是耦接至處理器211並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當處理器211從主機系統10中接收到寫入指令時,錯誤檢查與校正電路214會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code,ECC)及/或錯誤檢查碼(error detecting code,EDC),並且處理器211會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組220中。之後,當處理器211從可複寫式非揮發性記憶體模組220中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路214會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。此外,在錯誤檢查與校正程序後,若成功解碼所讀取之資料,錯誤檢查與校正電路214可回傳錯誤位元值(亦稱,錯誤位元數目)給處理器211。
在一實施例中,儲存控制器210還包括緩衝記憶體216與電源管理電路217。緩衝記憶體是耦接至處理器211並且用以暫存來自於主機系統10的資料與指令、來自於可複寫式非揮發性記憶體模組220的資料或其他用以管理儲存裝置20的系統資料,以讓處理器211可快速地從緩衝記憶體216中存取所述資料、指令或系統資料。電源管理電路217是耦接至處理器211並且用以控制儲存裝置20的電源。
應注意的是,在本實施例中,連接介面電路230具有指令緩衝器(Command Buffer)2301,以暫存來自主機系統10的指令(亦稱,主機指令)。所暫存的主機指令會再被傳送至主機指令管理電路單元215所管理的指令佇列中,以做進一步的管理。所述指令緩衝器(Command Buffer)2301例如是靜態隨機存取記憶體或其他類似的記憶體/儲存電路。
在本實施例中,主機指令管理電路單元215包括指令佇列管理電路2151與指令階段計數電路2152。所述處理器211會指示主機指令管理電路單元215來執行主機指令管理操作。主機指令管理電路單元215各部件所執行的操作亦可視為主機指令管理電路單元215所執行的操作。主機指令管理電路單元215(或指令佇列管理電路2151)用以管理指令佇列,所述指令佇列用以根據指令接收順序來儲存從指令緩衝器2301所接收的主機指令。此外,主機指令管理電路單元215(或指令階段計數電路2152)亦可用以記錄與管理關於指令佇列中的主機指令的資訊,如,對應所接收的主機指令的指令階段與指令階段計數值,或是指令階段計數表。
以下會配合多個圖式來詳細說明主機指令管理電路單元215如何進行主機指令管理操作的細節以及指令佇列管理電路2151與指令階段計數電路2152的功能。
圖2A與圖2B是根據本發明的一實施例所繪示的記憶體管理方法的流程圖。應注意的是,圖2A與2B所繪示的的記憶體管理方法亦可稱為主機指令管理方法。此外,節點A、B、C僅用以接續流程,以使說明清楚,並不限制本發明。請同時參照圖1、圖2A與圖2B,在步驟S201中,指令佇列管理電路2151從指令緩衝器2301獲取新的第一指令。所獲取的第一指令將會被儲存在指令佇列管理電路2151的指令佇列(Command Queue)中。
具體來說,主機系統10的處理器110可經由資料傳輸介面電路下達指令(亦稱,主機指令)給儲存裝置。所述主機指令會被暫存在指令緩衝器2301。所述主機指令可區分為刷新指令(Flush Command)與非屬於刷新指令的指令(亦稱,非刷新指令)。對應一個識別單元(或對應執行緒(Thread),或對應命名空間(Namespace))的所述刷新指令用以指示將對應所述識別單元的多個非刷新指令從指令佇列中刪除。本發明並不限於所述刷新指令所對應的識別單元。例如,在另一實施例中,識別單元包括且不限於:(1)客戶端(Client);(2)終端(Terminal);(3)實體(Entity)。
所述非刷新指令包括且不限於:(1)讀取指令(Read Command)、寫入指令(Write Command)等用以存取資料的指令;以及(2)修剪指令(Trim Command)、開電指令、關電指令、休眠指令等用以控制儲存裝置的控制指令。
以下先利用圖3A與圖3B說明指令緩衝器從主機系統接收指令的流程。
圖3A與圖3B為根據本發明的一實施例所繪示的指令緩衝器從主機系統接收指令的示意圖。請參照圖3A,為了方便說明,假設指令緩衝器2301僅具有儲存3個指令的空間。在時間點T1.1,主機系統10的處理器110經由資料傳輸介面電路130下達指令N11至指令緩衝器2301(如,箭頭D31所示)。所述指令N11中的「N」用以表示此指令為非刷新指令;「11」中的第一個「1」用以表示此指令是對應識別單元“1”,並且「11」中的第二個「1」用以表示此指令是對應識別單元“1”的第“1”個指令。
接著,在時間點T1.2,指令緩衝器2301會以先進先出(First In First Out,FIFO)方式來儲存所接收到的指令N11(如,箭頭A31所示)。也就是說,儲存在指令緩衝器2301中的多個指令會依照時間先後來排列,並且較先被儲存的指令會較先被讀取(獲取)。
接著,在時間點T1.3,主機系統10的處理器110經由資料傳輸介面電路130下達指令N21至指令緩衝器2301(如,箭頭D32所示)。在時間點T1.4,指令緩衝器2301會以先進先出方式來儲存所接收到的指令N21(如,箭頭A32所示)。所述指令N21排列在指令N11後方。
請參照圖3B,接著,在時間點T1.5,主機系統10的處理器110經由資料傳輸介面電路130下達指令F1至指令緩衝器2301(如,箭頭D33所示)。所述指令F1中的「F」用以表示此指令為刷新指令;「1」用以表示此指令是對應識別單元“1”。
在時間點T1.6,指令緩衝器2301會以先進先出方式來儲存所接收到的指令F1(如,箭頭A33所示)。所述指令F1排列在指令N21後方。由於所述指令N11、F1皆對應相同的識別單元“1’,所述刷新指令F1對應先於指令F1的被儲存在指令緩衝器2301中的非刷新指令N11。應注意的是,晚於刷新指令F1的被儲存在指令緩衝器2301中的其他的對應識別單元“1”的非刷新指令並不會對應刷新指令F1。所述刷新指令F1用以指示將先於刷新指令F1的對應相同識別單元“1”的所有非刷新指令刪除(例如,刷新指令F1用以指示刪除指令N11)。
接著,在時間點T1.7,主機系統10的處理器110經由資料傳輸介面電路130下達指令N22至指令緩衝器2301(如,箭頭D34所示)。由於指令緩衝器2301已經沒有任何空間(已滿),指令N22便不能夠被儲存在指令緩衝區2301。此時,處理器211可指示主機指令管理電路單元215執行主機指令管理操作,以消化指令緩衝器2301所儲存的從主機系統所接收到的指令,進而使指令緩衝器2301可清出空間來接收指令N22。
圖4A至圖4D為根據本發明的一實施例所繪示的管理指令佇列的示意圖。請參照圖4A,在時間點2.1,如箭頭D41所示,接續上述的例子,主機指令管理電路單元215從指令緩衝區2301獲取新的指令 (亦稱,第一指令)N11。即,指令N11被傳送(讀取)至主機指令管理電路單元215的指令佇列管理電路2151,並且指令佇列管理電路2151儲存指令N11至指令佇列400。此外,指令階段計數電路2152記錄分別對應多個指令階段P1~P3的多個指令階段計數值410(1)~410(3)。在本實施例中,所述多個指令階段計數值410(1)~410(3)已被初始化為預設值(如,“0”)。
在本實施例中,指令階段計數電路2152可利用指令階段計數表410來記錄所述分別對應多個指令階段P1~P3的多個指令階段計數值410(1)~410(3)。所述指令階段P1~P3是依據循環(Round Robin)方式來排列的。即,指令階段P2排列在指令階段P1後;指令階段P3排列在指令階段P2後;指令階段P1排列在指令階段P3後。此外,指令階段計數電路2152更記錄當前指令階段,其用以表示目前的指令階段為所述多個指令階段P1~P3的其中之一。在本實施例中,反應於特定事件(如,從所述指令緩衝器2301所接收的第一指令為刷新指令),指令階段計數電路2152會依據循環方式排列的指令階段P1~P3來將當前指令階段從一個指令階段(亦稱,第一指令階段)切換(調整)至排列在所述第一指令階段後的指令階段(亦稱,第二指令階段)。例如,當前指令階段可從指令階段P1被調整至指令階段P2;當前指令階段可從指令階段P2被調整至指令階段P3;當前指令階段可從指令階段P3被調整至指令階段P1。所述當前指令階段例如被初始化為指令階段P1。所記錄的當前指令階段可整合至指令階段計數表中(例如,利用特定欄位來標記當前指令階段為所述多個指令階段P1~P3的其中之一)。
請再回到圖2A,接著,在步驟S202,指令佇列管理電路2151判斷所述第一指令是否為刷新指令。根據所獲取的第一指令來決定執行步驟S203(S202à否)或S208(S202à是)。在步驟S203中,指令佇列管理電路2151根據當前指令階段來設定所述第一指令的指令階段值,將所述第一指令儲存至指令佇列。
舉例來說,請參照圖4A,指令佇列管理電路2151判定指令N11不為刷新指令,並且根據當前指令階段P1來設定指令N11的指令階段值(如,箭頭A41所示),並且將所述指令N11與標記至指令N11的指令階段值“P1”儲存至指令佇列401中(時間點2.2)。也就是說,在本實施例中,指令佇列的所有指令皆各自被標記對應的指令階段值。應注意的是,在一實施例中,指令佇列中的讀取指令不會被標記指令階段值。
接著,在步驟S204,指令佇列管理電路2151判斷所述指令佇列是否具有剩餘空間。其中,反應於判定所述指令佇列具有剩餘空間,執行步驟S201;反應於判定所述指令佇列不具有剩餘空間,執行步驟S205。
舉例來說,如圖4A所示,指令佇列400具有5個剩餘空間;指令佇列401具有4個剩餘空間(一個剩餘空間已被用來儲存指令N11與對應的指令階段值)。在將所述指令N11與標記至指令N11的指令階段值“P1”儲存至指令佇列401後,指令佇列管理電路2151判定所述指令佇列401具有剩餘空間,並且執行步驟S201,以繼續從指令緩衝區2301獲取另個指令(新的第一指令)。舉例來說,請參照圖4B,在時間點T2.3,如箭頭D42所示,指令N21從指令緩衝區2301被獲取。如箭頭A42所示,指令佇列管理電路2151判定指令N21不是刷新指令,並且辨識當前指令階段為“P1”。接著,在時間點T2.4,指令N1與對應的指令階段值“P1”會被儲存到指令佇列402,並且排列在指令N11後。
由於指令佇列管理電路2151判定所述指令佇列402具有剩餘空間,指令佇列管理電路2151執行步驟S201,以繼續從指令緩衝區2301獲取另個指令(新的第一指令)。如圖4C所繪示,在時間點T2.5,新的指令F1被獲取,指令佇列管理電路2151判定指令F1為刷新指令,並且接續至步驟S208。
在步驟S208中,指令佇列管理電路2151根據當前指令階段來設定所述刷新指令的指令階段值,將所述刷新指令儲存至所述指令佇列中,並且辨識所述指令佇列中對應所述當前指令階段的多個第二指令,並且計數所述多個第二指令的總數以成為對應所述當前指令階段的指令階段計數值。具體來說,在時間點T2.6,如箭頭A43所示,上述“根據當前指令階段來設定所述刷新指令的指令階段值,將所述刷新指令儲存至所述指令佇列中”的步驟相似於步驟S203,不贅述於此,即,指令F1與對應的指令階段值“P1”被儲存至指令佇列403。不同之處在於,反應於所辨識的第一指令為刷新指令,指令階段計數電路2152更會計數在目前的指令佇列中指令階段值為當前指令階段的多個指令(亦稱,第二指令)的總數(即,計算指令佇列中的當前指令階段的總數)。
例如,請參照圖4C,在儲存指令F1後,當前指令階段為“P1”,指令佇列403中指令階段值為當前指令階段“P1的第二指令為指令N11、N21與F1,並且所述指令N11、N21與F1的總數為3。基此,指令階段計數電路2152會將3作為當前指令階段“P1”的指令階段計數值。也就是說,對應當前指令階段,即,第一階段P1的指令階段計數值會從原本的預設值“0”被記錄為“3”(如箭頭A44所示)。此外,在步驟S209中,指令階段計數電路2152將所述當前指令階段從多個指令階段中的第一指令階段調整至第二指令階段。應注意的是,所述預設值亦可被設定為非0的其他數值。
例如,請參照圖4C,如箭頭A44所示,除了改變原本當前指令階段P1的指令階段計數值之外,指令階段計數電路2152更將當前指令階段從“P1”調整為“P2”。換言之,指令階段計數表會從指令階段計數表410更新為指令階段計數表411。
請再回到圖2A,接著,在步驟210中,指令佇列管理電路2151判斷所述指令佇列中的一或多個刷新指令的總數是否大於階段上限值。其中,反應於判定指令佇列中的所述一或多個刷新指令的總數大於階段上限值,指令佇列管理電路2151執行步驟S205;反應於判定指令佇列中的所述一或多個刷新指令的總數不大於階段上限值,指令佇列管理電路2151執行步驟S204。
具體來說,在本實施例中,所述階段上限值的數值為所述多個指令P1~P3的總數(即,3)減一。也就是說,所述階段上限值用來限制讓目前非預設值的指令階段計數值(即,被使用以記錄非預設值的數值的指令階段計數值)的總數最多為所有指令階段的總數。即,若所有指令階段的指令階段計數值皆已被使用來記錄非預設值的數值。
例如,如圖4C中下方的例子,指令佇列管理電路2151會判定指令佇列403中的刷新指令僅有指令F1,即,指令佇列403中的所有的刷新指令的總數(即,1)不大於階段上限值(即,3-1=2)。接著,整個流程會接續至步驟S204。
此時,在步驟S204中,指令佇列管理電路2151會判定指令佇列403具有2個剩餘空間,並且接續至步驟S201。請參照圖4D,假設指令緩衝區2301從主機系統10接收到3個指令N22、F2、N31。從時間點T2.7開始,如上述的流程所說明的,指令N22與指令F2會陸續地被獲取(如箭頭D44所示),並且指令N22、F2與對應的指令階段值“P2”(當前指令階段值為“P2”)被儲存至指令佇列404中(如箭頭A45所示)。
此外,由於指令F2為刷新指令,對應當前指令階段“P2”的指令階段計數值410(2)被記錄為“2”(不再是預設值),並且當前指令階段更從“P2”被調整至“P3”(如箭頭46所示,指令階段計數表被更新了)。接著,流程接續至步驟S210。此時,在步驟S210中,指令佇列管理電路2151判定所述指令佇列中的一或多個刷新指令的總數不大於階段上限值。接著,整個流程會接續至步驟S204。
然而,此時指令佇列管理電路2151會判定指令佇列404不具有剩餘空間,並且執行步驟S205。在步驟S205中,指令佇列管理電路2151不從所述指令緩衝器2301獲取新的第一指令。接著,在步驟206中,指令佇列管理電路2151從所述指令佇列的一或多個非刷新指令中選擇新的目標指令,辨識所述目標指令的目標指令階段值以及對應所述目標指令階段值的目標指令階段計數值。其中,反應於所辨識之目標指令階段計數值不等於預設值,執行步驟S211;反應於所辨識之目標指令階段計數值等於預設值,執行步驟S207。以下利用圖5A至圖5D來說明。
圖5A至圖5D為根據本發明的另一實施例所繪示的管理指令佇列的示意圖。
請參照圖5A,舉例來說,在時間點3.1中,指令佇列管理電路2151會辨識指令佇列404中的一或多個非刷新指令,即,指令N11、N21、N22。指令佇列管理電路2151會依據預設的規則來從指令N11、N21、N22中選擇其中一個來作為目標指令。為了方便說明,所述預設的規則是先進先出。即,指令N11、N21、N22中最先被儲存至指令佇列的非刷新指令會被先選擇以作為新的目標指令。在圖5A的例子中,如箭頭E51所示,指令N11被選擇為目標指令,並且指令佇列管理電路2151辨識指令N11的指令階段值(亦稱,目標指令階段值)為“P1”。根據目標指令階段值“P1”,指令佇列管理電路2151根據指令階段計數電路2152所記錄的對應指令階段“P1”的指令階段計數值410(1)辨識到“3”(如,根據目標指令階段與指令階段計數表查找到目標指令階段計數值為“3”)。
請參照圖2B,此時,在時間點T3.2,反應於所辨識的目標指令階段計數值不等於預設值,指令階段計數電路2152將所述目標指令階段計數值減1,即,對應指令階段P1的指令階段計數值410(1)從“3”被調整為“2”(如箭頭A51所示)。
在減去1後,指令佇列管理電路2151會判斷所述目標指令階段計數值是否等於1。反應於所述目標指令階段計數值等於1,接續至步驟S212;反應於所述目標指令階段計數值不等於1,接續至步驟S207。
舉例來說,在上述例子中,由於目標指令階段計數值為“2”,並不等於1。因此,流程接續至步驟S207,指令佇列管理電路2151指示處理器211執行所述目標指令,並且反應於完成所述目標指令的執行,指令佇列管理電路2151從所述指令佇列中刪除所述目標指令。如圖5A的箭頭D51所示,指令N11被傳送至處理器211,以使處理器211根據指令N11來執行相應的操作。應注意的是,本發明並不限於處理器211執行指令的細節。接著,如箭頭A52所示,指令佇列管理電路2151從所述指令佇列404中刪除所述目標指令N11與對應的目標指令階段值“P1”。此時,指令佇列405具有一個剩餘空間(因刪除了所述目標指令N11與對應的目標指令階段值“P1”)。
接著,整體流程再回到步驟S201。請參照圖5B,舉例來說,假設指令緩衝區2301具有3個主機指令N31、F3、N13。在時間點T3.3,如箭頭D52所示,指令N31被獲取。在時間點T3.4,如箭頭A53所示,指令N31與對應的指令階段值“P3”會被儲存至指令佇列406。此時,由於指令佇列406已經沒有剩餘空間,流程再度執行步驟S205。
舉例來說,請參照圖5C,在時間點T3.5,如箭頭52所示,指令佇列管理電路2151選擇指令N21作為目標指令,並且將對應的指令階段計數值從“2”減至“1”(如箭頭A54所示)。此時,如箭頭A55所示,反應於所述目標指令階段計數值等於1,接續至步驟S212。在步驟212中,指令佇列管理電路2151指示處理器211執行所述目標指令,反應於完成所述目標指令的執行,刪除所述指令佇列中的所述目標指令。步驟S212相似於步驟S207,細節不再贅述(如,箭頭D53所示)。舉例來說,如箭頭A56所示,在時間點T3.6,指令N21與對應的指令階段值“P1”會被刪除。然而,不同於步驟S207的後續步驟S201,指令佇列管理電路2151執行完步驟S212後,接續至步驟S213。即,指令佇列管理電路2151刪除所述指令佇列中的所述目標刷新指令,並且回應主機系統對應所述目標指令階段值的所述目標刷新指令已經執行完畢。因為刷新指令F1所指示的欲刪除的指令N11皆已被刪除。因此,如箭頭R51所示,指令佇列管理電路2151會指示處理器211(或指令佇列管理電路2151本身)回應主機系統10所述刷新指令已執行完畢。應注意的是,從上述例子可知道,本實施例在接收刷新指令F1後且在回應刷新指令F1被執行完畢之前的期間,刷新指令F1本身並不會被執行且其他不是對應所述刷新指令F1的非刷新指令(如,指令N21)也會順便被執行。此外,當刷新指令F1所對應的非刷新指令皆被執行後,直接回應刷新指令F1已經執行完畢。換言之,本實施例的主機指令管理操作並不會因為接收刷新指令而使先於刷新指令的其他的非對應刷新指令的非刷新指令的執行順序被搶奪,進而避免了刷新指令所導致的資源搶奪的現象。
接著,接續至步驟S214,指令階段計數電路2152將所述目標指令階段計數值設定為所述預設值。舉例來說,如箭頭A57所示,在回應對應目標指令階段值的刷新指令已經執行完畢後,目標指令階段計數值410(1)被設定為預設值(如,“0”)。
接著,整體流程回到步驟201。請參照圖5D,在時間點T3.7,指令F3被獲取,並且對應當前指令階段“P3”的指令階段計數值410(3)會被記錄為“2”(因為指令佇列408具有2個為“P3”的指令階段值)。當前指令階段更會從“P3”被調整為“P1”(如箭頭A59所示)。接著,相似於上述的實施例的說明,流程會再進入至步驟201。
值得一提的是,反應於指令緩衝器2301與指令佇列皆不具有任何指令,主機指令管理電路單元215會結束上述記憶體管理方法的所有步驟。此外,反應於經由空的指令緩衝器2301從該主機系統10接收到一個指令,處理器211可指示主機指令管理電路單元215開始執行上述步驟S201。其中,若在執行步驟S201過程中,指令緩衝器2301不具有可被獲取的所述新的第一指令(例如,指令緩衝器2301為空的),執行步驟S206。
綜上所述,本實施例所提供的記憶體管理方法以及儲存控制器,可在指令佇列接收到刷新指令的時候,記錄對應的指令階段計數值且更新當前指令階段,不會直接根據所接收的刷新指令來執行與清空指令佇列中對應所述刷新指令的非刷新指令。此外,更根據不同的條件來調整所記錄的指令階段計數值,以管理指令佇列中對應不同指令階段的指令,進而完成所接收之刷新指令。也就是說,本實施例所提供的記憶體管理方法以及儲存控制器,可使指令佇列中對應所述刷新指令的非刷新指令不會具有特別的優先權(避免了所述非刷新指令的資源搶奪),以避免延遲了其他指令的執行。如此一來,儲存裝置可在平滑地消化(執行)指令佇列中的所有指令的過程中,可順便完成所接收的刷新指令,進而增進了儲存裝置的資料存取效率與工作效率。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧主機系統20‧‧‧儲存裝置110、211‧‧‧處理器120‧‧‧主機記憶體130‧‧‧資料傳輸介面電路210‧‧‧儲存控制器212‧‧‧資料傳輸管理電路213‧‧‧記憶體介面控制電路214‧‧‧錯誤檢查與校正電路215‧‧‧主機指令管理電路單元2151‧‧‧指令佇列管理電路2152‧‧‧指令階段計數電路216‧‧‧緩衝記憶體217‧‧‧電源管理電路220‧‧‧可複寫式非揮發性記憶體模組230‧‧‧連接介面電路2301‧‧‧指令緩衝器S201、S203、S205、S207、S208、S209、S210、S211、S212、S213、S214‧‧‧記憶體管理方法的流程步驟A、B、C‧‧‧節點N11、N21、N22、N31、N12、F1、F2、F3‧‧‧指令A31~A33、A41~A46、A51~A59、D31~D34、D41~D44、D51~D54、R51、E51~E52‧‧‧箭頭400~408‧‧‧指令佇列410、411‧‧‧指令階段計數表410(1)~410(3)‧‧‧指令階段計數值P1~P3‧‧‧指令階段T1.1~T1.7、T2.1~T2.8、T3.1~T3.8‧‧‧時間點
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。 圖2A與圖2B是根據本發明的一實施例所繪示的記憶體管理方法的流程圖。 圖3A與圖3B為根據本發明的一實施例所繪示的指令緩衝器從主機系統接收指令的示意圖。 圖4A至圖4D為根據本發明的一實施例所繪示的管理指令佇列的示意圖。 圖5A至圖5D為根據本發明的另一實施例所繪示的管理指令佇列的示意圖。
S201、S202、S203、S204、S205、S206、S207、S208、S209、S210‧‧‧記憶體管理方法的流程步驟
A、B、C‧‧‧節點
Claims (12)
- 一種記憶體管理方法,適用於配置有一可複寫式非揮發性記憶體模組的一儲存裝置,所述方法包括下列步驟: (1)從指令緩衝器獲取新的第一指令,並且判斷該第一指令是否為刷新指令(Flush Command),其中反應於判定該第一指令為該刷新指令,執行步驟(2a),其中反應於判定該第一指令不為該刷新指令,執行步驟(2b); (2a)根據一當前指令階段來設定該刷新指令的指令階段值,將該刷新指令儲存至指令佇列(Command Queue)中,辨識該指令佇列中對應該當前指令階段的多個第二指令,並且計數該些第二指令的總數以成為對應該當前指令階段的指令階段計數值; 將該當前指令階段從多個指令階段中的第一指令階段調整至第二指令階段;以及 根據該指令佇列的剩餘空間以及該指令佇列中的一或多個刷新指令的總數來執行步驟(1)或步驟(3); (2b) 根據該當前指令階段來設定該第一指令的指令階段值,將該第一指令儲存至該指令佇列,並且根據該指令佇列的該剩餘空間來執行步驟(1)或步驟(3); (3) 不從該指令緩衝器獲取新的第一指令,並且執行步驟(4); (4)從該指令佇列的一或多個非刷新指令中選擇新的目標指令,辨識該目標指令的目標指令階段值以及對應該目標指令階段值的目標指令階段計數值,其中反應於所辨識的該目標指令階段計數值等於預設值,執行步驟(5a),其中反應於所辨識的該目標指令階段計數值不等於預設值,執行步驟(5b); (5a)執行該目標指令,並且反應於完成該目標指令的執行,從該指令佇列中刪除該目標指令,並且執行步驟(1); (5b)改變該目標指令階段計數值,並且根據改變後的該目標指令階段計數值執行步驟(5a)或步驟(5c); (5c)執行該目標指令,回應一主機系統對應該目標指令階段值的目標刷新指令已經執行完畢,將該目標指令階段計數值設定為該預設值,並且執行步驟(1)。
- 如申請專利範圍第1項所述的記憶體管理方法,其中該指令緩衝器用以從該主機系統接收指令,其中上述方法更包括下列步驟: 反應於該指令緩衝器與該指令佇列皆不具有任何指令,結束上述記憶體管理方法的所有步驟;以及 反應於經由空的該指令緩衝器從該主機系統接收到一個指令,開始執行上述步驟(1) , 其中上述步驟(1)的從指令緩衝器獲取所述新的第一指令的步驟包括反應於該指令緩衝器不具有可被獲取的所述新的第一指令,執行步驟(4)。
- 如申請專利範圍第1項所述的記憶體管理方法,其中該指令佇列被維護於主機指令管理電路單元中,該指令佇列的所有指令皆各自被標記對應的指令階段值,其中一指令階段計數表被維護於該主機指令管理電路單元中,並且該指令階段計數表記錄有多個指令階段與分別對應該些指令階段的多個指令階段計數值,其中上述步驟(4)包括: 依據一先進先出方式(First In First Out)來從該指令佇列的所述一或多個非刷新指令中選擇該目標指令;以及 從指令佇列中辨識該目標指令的被標記的該目標指令階段值,並且根據該目標指令階段值從該指令階段計數表中查找對應目標指令階段計數值。
- 如申請專利範圍第1項所述的記憶體管理方法,其中上述步驟(5b)包括: 反應於所辨識的該目標指令階段計數值不等於預設值,將該目標指令階段計數值減一,以改變該目標指令階段計數值; 判斷改變後的該目標指令階段計數值是否等於1,其中反應於該目標指令階段計數值不等於1,執行步驟(5a), 其中反應於該目標指令階段計數值等於1,執行步驟(5c), 其中所述步驟(5c)包括: 反應於完成該目標指令的執行,刪除該指令佇列中的該目標指令以及該目標刷新指令。
- 如申請專利範圍第1項所述的記憶體管理方法,其中該刷新指令用以指示將該指令佇列的該些非刷新指令中的一或多個第一非刷新指令刪除,其中上述步驟(2a)包括: 不根據該刷新指令執行所述一或多個非刷新指令,並且不刪除所述一或多個非刷新指令; 記錄該指令階段計數值,以對應該些指令階段中的該第一指令階段, 其中該些指令階段以循環(Round Robin)方式排列,並且該第二指令階段排列在該第一指令階段之後。
- 如申請專利範圍第5項所述的記憶體管理方法,其中上述步驟(2a)更包括: 判斷該指令佇列中的一或多個刷新指令的總數是否大於一階段上限值, 其中反應於判定所述一或多個刷新指令的該總數大於該階段上限值,執行步驟(3), 其中反應於判定所述一或多個刷新指令的該總數不大於該階段上限值,判斷該指令佇列是否具有該剩餘空間,其中反應於判定該指令佇列不具有該剩餘空間,執行步驟(3),其中反應於判定該指令佇列具有該剩餘空間,執行步驟(1)。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,該儲存控制器包括: 一連接介面電路,用以耦接至一主機系統,其中該連接介面電路包括一指令緩衝器,用以暫存來自該主機系統的指令; 一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組; 一主機指令管理電路單元;以及 一處理器,耦接至該連接介面電路、該記憶體介面控制電路及該主機指令管理電路單元,其中該處理器用以指示該主機指令管理電路單元執行一主機指令管理操作,該主機指令管理操作包括下列步驟: (1) 該主機指令管理電路單元從指令緩衝器獲取新的第一指令,並且判斷該第一指令是否為刷新指令(Flush Command),其中反應於判定該第一指令為該刷新指令,執行步驟(2a),其中反應於判定該第一指令不為該刷新指令,執行步驟(2b); (2a) 該主機指令管理電路單元根據一當前指令階段來設定該刷新指令的指令階段值,將該刷新指令儲存至指令佇列(Command Queue)中,辨識該指令佇列中對應該當前指令階段的多個第二指令,並且計數該些第二指令的總數以成為對應該當前指令階段的指令階段計數值; 該主機指令管理電路單元將該當前指令階段從多個指令階段中的第一指令階段調整至第二指令階段;以及 該主機指令管理電路單元根據該指令佇列的剩餘空間以及該指令佇列中的一或多個刷新指令的總數來執行步驟(1)或步驟(3); (2b) 該主機指令管理電路單元根據該當前指令階段來設定該第一指令的指令階段值,將該第一指令儲存至該指令佇列,並且根據該指令佇列的該剩餘空間來執行步驟(1)或步驟(3); (3) 該主機指令管理電路單元不從該指令緩衝器獲取新的第一指令,並且執行步驟(4); (4) 該主機指令管理電路單元從該指令佇列的一或多個非刷新指令中選擇新的目標指令,辨識該目標指令的目標指令階段值以及對應該目標指令階段值的目標指令階段計數值,其中反應於所辨識的該目標指令階段計數值等於預設值,執行步驟(5a),其中反應於所辨識的該目標指令階段計數值不等於預設值,執行步驟(5b); (5a) 該主機指令管理電路單元指示該處理器執行該目標指令,並且反應於完成該目標指令的執行,從該指令佇列中刪除該目標指令,並且執行步驟(1); (5b) 該主機指令管理電路單元改變該目標指令階段計數值,並且根據改變後的該目標指令階段計數值執行步驟(5a)或步驟(5c); (5c) 該主機指令管理電路單元指示該處理器執行該目標指令,回應一主機系統對應該目標指令階段值的目標刷新指令已經執行完畢,將該目標指令階段計數值設定為該預設值,並且執行步驟(1)。
- 如申請專利範圍第7項所述的儲存控制器,其中該指令緩衝器用以從該主機系統接收指令,其中上述主機指令管理操作更包括下列步驟: 反應於該指令緩衝器與該指令佇列皆不具有任何指令,該主機指令管理電路單元完成上述主機指令管理操作;以及 反應於經由空的該指令緩衝器從該主機系統接收到一個指令,該處理器指示該主機指令管理電路單元開始執行該主機指令管理操作中的所述步驟(1), 其中在上述步驟(1)的從指令緩衝器獲取所述新的第一指令的運作中,反應於該指令緩衝器不具有可被獲取的所述新的第一指令,該主機指令管理電路單元執行步驟(4)。
- 如申請專利範圍第7項所述的儲存控制器,其中該指令佇列被維護於該主機指令管理電路單元中,該指令佇列的所有指令皆各自被標記對應的指令階段值,其中一指令階段計數表被維護於該主機指令管理電路單元中,並且該指令階段計數表記錄有多個指令階段與分別對應該些指令階段的多個指令階段計數值,其中上述步驟(4)包括: 該主機指令管理電路單元依據一先進先出方式(First In First Out)來從該指令佇列的所述一或多個非刷新指令中選擇該目標指令;以及 該主機指令管理電路單元從指令佇列中辨識該目標指令的被標記的該目標指令階段值,並且根據該目標指令階段值從該指令階段計數表中查找對應目標指令階段計數值。
- 如申請專利範圍第7項所述的儲存控制器,其中上述步驟(5b)包括: 反應於所辨識的該目標指令階段計數值不等於預設值,該主機指令管理電路單元將該目標指令階段計數值減一,以改變該目標指令階段計數值; 該主機指令管理電路單元判斷改變後的該目標指令階段計數值是否等於1,其中反應於該目標指令階段計數值不等於1,該主機指令管理電路單元執行步驟(5a),其中反應於該目標指令階段計數值等於1,執行步驟(5c), 其中所述步驟(5c)包括: 反應於完成該目標指令的執行,該主機指令管理電路單元刪除該指令佇列中的該目標指令以及該目標刷新指令。
- 如申請專利範圍第7項所述的儲存控制器,其中該刷新指令用以指示將該指令佇列的該些非刷新指令中的一或多個第一非刷新指令刪除,其中上述步驟(2a)包括: 該主機指令管理電路單元不根據該刷新指令指示該處理器執行所述一或多個非刷新指令,並且該主機指令管理電路單元不刪除所述一或多個非刷新指令; 該主機指令管理電路單元記錄該指令階段計數值,以對應該些指令階段中的該第一指令階段, 其中該些指令階段以循環(Round Robin)方式排列,並且該第二指令階段排列在該第一指令階段之後。
- 如申請專利範圍第11項所述的儲存控制器,其中上述步驟(2a)更包括: 該主機指令管理電路單元判斷該指令佇列中的一或多個刷新指令的總數是否大於一階段上限值, 其中反應於判定所述一或多個刷新指令的該總數大於該階段上限值,執行步驟(3), 其中反應於判定所述一或多個刷新指令的該總數不大於該階段上限值,該主機指令管理電路單元判斷該指令佇列是否具有該剩餘空間,其中反應於判定該指令佇列不具有該剩餘空間,執行步驟(3),其中反應於判定該指令佇列具有該剩餘空間,執行步驟(1)。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107130025A TWI670599B (zh) | 2018-08-28 | 2018-08-28 | 記憶體管理方法以及儲存控制器 |
US16/174,294 US10579306B1 (en) | 2018-08-28 | 2018-10-30 | Memory management method and storage controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107130025A TWI670599B (zh) | 2018-08-28 | 2018-08-28 | 記憶體管理方法以及儲存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI670599B TWI670599B (zh) | 2019-09-01 |
TW202009715A true TW202009715A (zh) | 2020-03-01 |
Family
ID=68618653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107130025A TWI670599B (zh) | 2018-08-28 | 2018-08-28 | 記憶體管理方法以及儲存控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10579306B1 (zh) |
TW (1) | TWI670599B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403228B2 (en) * | 2020-02-18 | 2022-08-02 | Micron Technology, Inc. | Memory device page program sequence |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8028113B2 (en) * | 2008-08-15 | 2011-09-27 | International Business Machines Corporation | Methods and systems for deadlock-free allocation of memory |
KR101861170B1 (ko) * | 2011-08-17 | 2018-05-25 | 삼성전자주식회사 | 마이그레이션 관리자를 포함하는 메모리 시스템 |
US20160342545A1 (en) * | 2014-02-12 | 2016-11-24 | Hitachi, Ltd. | Data memory device |
KR20160116533A (ko) * | 2015-03-30 | 2016-10-10 | 삼성전자주식회사 | 리프레쉬 동작을 관리하는 메모리 콘트롤러, 메모리 시스템 및 그 동작방법 |
US20170123796A1 (en) * | 2015-10-29 | 2017-05-04 | Intel Corporation | Instruction and logic to prefetch information from a persistent memory |
US9583182B1 (en) * | 2016-03-22 | 2017-02-28 | Intel Corporation | Multi-level memory management |
TWI592800B (zh) * | 2016-10-04 | 2017-07-21 | 大心電子(英屬維京群島)股份有限公司 | 記憶體管理方法及使用所述方法的儲存控制器 |
US20180107602A1 (en) * | 2016-10-13 | 2018-04-19 | Intel Corporation | Latency and Bandwidth Efficiency Improvement for Read Modify Write When a Read Operation is Requested to a Partially Modified Write Only Cacheline |
KR102441997B1 (ko) * | 2017-11-01 | 2022-09-08 | 한국전자통신연구원 | 네트워크에서 메타데이터의 동기화를 제어하는 장치 및 그 방법 |
TWI651650B (zh) * | 2018-02-05 | 2019-02-21 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法及使用所述方法的儲存控制器 |
TWI648739B (zh) * | 2018-03-20 | 2019-01-21 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法與儲存控制器 |
TWI661427B (zh) * | 2018-04-02 | 2019-06-01 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
TWI661299B (zh) * | 2018-04-30 | 2019-06-01 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
TWI667606B (zh) * | 2018-07-06 | 2019-08-01 | 深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
-
2018
- 2018-08-28 TW TW107130025A patent/TWI670599B/zh active
- 2018-10-30 US US16/174,294 patent/US10579306B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
TWI670599B (zh) | 2019-09-01 |
US20200073590A1 (en) | 2020-03-05 |
US10579306B1 (en) | 2020-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI660346B (zh) | 記憶體管理方法以及儲存控制器 | |
TW201907287A (zh) | 資料讀取方法以及儲存控制器 | |
TW201810013A (zh) | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI602061B (zh) | 資料寫入方法、記憶體儲存裝置與記憶體控制電路單元 | |
TWI648634B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201727647A (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201807580A (zh) | 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 | |
TW202016937A (zh) | 資料整併方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN111078146B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TWI649653B (zh) | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI796882B (zh) | 讀取干擾檢查方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI686697B (zh) | 記憶體管理方法以及儲存控制器 | |
TWI688956B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI670599B (zh) | 記憶體管理方法以及儲存控制器 | |
CN112799601A (zh) | 有效数据合并方法、存储器存储装置及控制电路单元 | |
CN110879794B (zh) | 存储器管理方法以及存储控制器 | |
CN110908592B (zh) | 存储器管理方法以及存储控制器 | |
TWI840734B (zh) | 指令管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW202011179A (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI823792B (zh) | 映射表更新方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI810719B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI852352B (zh) | 有效節點管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN117632038B (zh) | 损耗平衡方法、存储器存储装置及存储器控制电路单元 | |
TWI831366B (zh) | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI777519B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |