TW202333059A - 有序訪問塊修改記憶體中的資料的系統和方法及儲存裝置 - Google Patents
有序訪問塊修改記憶體中的資料的系統和方法及儲存裝置 Download PDFInfo
- Publication number
- TW202333059A TW202333059A TW111137715A TW111137715A TW202333059A TW 202333059 A TW202333059 A TW 202333059A TW 111137715 A TW111137715 A TW 111137715A TW 111137715 A TW111137715 A TW 111137715A TW 202333059 A TW202333059 A TW 202333059A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- memory
- data structure
- buffer
- write request
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明提供一種方法,所述方法可包含:在具有塊修改特性的記憶體系統處接收對配置於記憶體中的資料結構的寫入請求;基於寫入請求將資料儲存於資料結構中;在記憶體系統處接收對資料結構的讀取請求;基於讀取請求自資料結構讀取資料;以及基於讀取指示用於修改的資料。方法可更包含:在記憶體系統處接收對資料結構的第二寫入請求,其中第一寫入請求及第二寫入請求具有次序;基於第二寫入請求將第二資料儲存於資料結構中;以及基於讀取請求基於次序判定第一資料,其中讀取可進一步基於判定。
Description
本揭露大體上是關於訪問資料,且更具體而言,是關於用於有序訪問塊修改記憶體中的資料的系統、方法以及裝置。
[相關申請案的參考]
本申請案主張2022年3月17日申請的美國臨時專利申請案序列號63/321,086的優先權及權益,所述申請案以引用的方式併入。
資料處理應用程式可使用緩衝器來在處理原始資料之前儲存原始資料及/或在不同處理操作之間儲存中間資料。資料可儲存於緩衝器中,所述緩衝器可包含例如揮發性記憶體(諸如,動態隨機訪問記憶體(dynamic random access memory;DRAM))、非揮發性記憶體(諸如,快閃記憶體)及/或類似者。
此背景技術章節中所揭露的上述資訊僅用於增強對本發明原理的背景的理解,且因此其可能含有不構成先前技術的資訊。
一種方法可包含在記憶體系統處接收對資料結構的寫入請求,其中記憶體系統可包含具有塊修改特性的記憶體,且資料結構可配置於記憶體中,且方法可更包含:基於寫入請求將資料儲存於資料結構中;在記憶體系統處接收對資料結構的讀取請求;基於讀取請求自資料結構讀取資料;以及基於讀取指示用於修改的資料。寫入請求可為第一寫入請求,資料可為第一資料,且方法可更包含:在記憶體系統處接收對資料結構的第二寫入請求,其中第一寫入請求及第二寫入請求具有次序;基於第二寫入請求將第二資料儲存於資料結構中;以及基於讀取請求基於次序判定第一資料,其中讀取可進一步基於判定。資料結構可儲存於記憶體的一或多個邏輯連續塊中。記憶體的一或多個邏輯連續塊可包含鏈接列表。資料結構可包含先進先出(first-in-first-out;FIFO)結構。資料結構可為第一資料結構,讀取請求可為第一讀取請求,第一資料結構可儲存於記憶體的塊中,且方法可更包含:將第二資料結構的至少一部分儲存於記憶體的塊中;在記憶體系統處接收對第二資料結構的第二讀取請求;基於第二讀取請求自第二資料結構讀取第三資料;以及基於讀取第三資料而指示用於修改的第三資料。方法可更包含基於次序提取第一資料及將第一資料儲存於緩衝器中。方法可更包含基於指示修改記憶體的塊。方法可更包含藉由記憶體系統使用尾指標來訪問資料結構。方法可更包含基於儲存第一資料而更新尾指標。方法可更包含藉由記憶體系統使用頭指標來訪問資料結構。方法可更包含基於讀取第一資料而更新頭指標。尾指標可包含實體位址。方法可更包含基於讀取自記憶體系統返回資料。
一種系統可包含:記憶體系統,包含具有塊修改特性的記憶體;資料生產者;以及資料消費者;其中資料生產者可經組態以將對記憶體中的資料結構的寫入請求發送至記憶體系統,且其中資料消費者可經組態以將對資料結構的讀取請求發送至記憶體系統,且其中記憶體系統可經組態以:基於寫入請求將資料儲存於資料結構中;基於讀取請求對資料執行讀取操作;以及基於讀取操作指示用於修改的資料。寫入請求可為第一寫入請求,資料可為第一資料,資料生產者可進一步經組態以將對資料結構的第二寫入請求發送至記憶體系統,其中第一寫入請求及第二寫入請求具有次序,且記憶體系統可進一步經組態以:基於第二寫入請求將第二資料儲存於資料結構中;以及基於讀取請求基於次序對第一資料執行判定,且讀取操作可進一步基於判定。記憶體系統可進一步經組態以基於次序提取第一資料,且將第一資料儲存於緩衝器中。記憶體系統可進一步經組態以將資料結構儲存於記憶體的一或多個邏輯連續塊中。至少一個主機可進一步經組態以將命令發送至記憶體系統,且記憶體系統可進一步經組態以基於命令創建資料結構。
一種儲存裝置可包含:儲存媒體;以及控制器,經組態以:在儲存媒體中接收對資料結構的第一寫入請求;基於第一寫入請求將第一資料儲存於資料結構中;接收對資料結構的第二寫入請求,其中第一寫入請求及第二寫入請求具有次序;基於第二寫入請求將第二資料儲存於資料結構中;接收對資料構結的讀取請求;基於讀取請求基於次序對第一資料執行判定。控制器可進一步經組態以基於判定對來自資料結構的第一資料執行讀取操作,且基於讀取操作自儲存裝置返回第一資料。儲存媒體可具有塊修改特性,且控制器可進一步經組態以基於讀取操作提供用於修改的第一資料的指示。控制器可進一步經組態以基於指示修改儲存媒體的塊。控制器可進一步經組態以將資料結構儲存於儲存媒體的一或多個邏輯連續塊中。儲存媒體的一或多個邏輯連續塊可包含鏈接列表。資料結構可包含先進先出(FIFO)結構。控制器可進一步經組態以接收命令,且基於命令創建資料結構。控制器可進一步經組態以接收命令,且基於命令對資料結構執行修改。修改可包含改變資料結構的容量。控制器可進一步經組態以接收命令,且基於命令返回關於資料結構的資訊。控制器可進一步經組態以接收命令,且基於命令返回關於儲存裝置的資訊。
非揮發性記憶體(例如,固態硬碟(solid state drive;SSD)中的快閃記憶體)可用作資料緩衝器以在處理原始資料之前儲存原始資料及/或在不同處理操作之間儲存中間資料。然而,取決於實施細節,非揮發性記憶體可呈現與一些非揮發性記憶體的塊擦除特性相關聯的一或多個挑戰,諸如廢料收集、寫入放大及/或類似者。
在一些資料處理應用程式中,可以依序次序(例如,先進先出(FIFO)次序)儲存、擷取及/或處理原始資料及/或中間資料。舉例而言,第一程序可以第二程序將輸出資料用作輸入資料的相同次序產生所述輸出資料。此外,若資料在兩個程序之間儲存於緩衝器中,則第一程序可以第二程序自緩衝器讀出資料的相同次序將所述資料寫入至緩衝器中。
根據本揭露的實例實施例的資料儲存方案可採用一些資料處理及/或資料傳送的依序特性。舉例而言,在一些實施例中,儲存系統可以具有操作次序(例如,依序訪問)的諸如FIFO緩衝器的一或多個資料結構的形式提供儲存容量。因此,可以資料源或處理操作產生資料的次序將所述資料傳送至儲存系統中的資料結構。另外或替代地,可以處理操作消耗資料的次序自儲存系統中的資料結構傳送(例如,讀取)所述資料。取決於實施細節,此儲存方案可減少潛時、減少成本、增加效率、減少寫入放大、改良資料置放、改良廢料收集、改良服務品質(Quality of Service;QoS)及/或類似者。
在一些實施例中,可使用非揮發性記憶體塊的鏈接列表實施資料結構,其中資料塊可包含所述列表中的下一資料塊的指標。取決於實施細節,此可減少或消除儲存裝置或其他記憶體系統、主機、應用程式及/或可使用資料結構之程序及/或類似者對邏輯至實體位址轉譯操作及/或資料結構的使用。
在可使用具有塊擦除特性的非揮發性記憶體作為儲存媒體的一些實施例中,可基於讀取資料而標記用於擦除(例如,無效)的資料。舉例而言,在一些實施例中,此類型的基於讀取的資料無效可藉由一次寫入一次讀取(Write Once Read Once;WORO)技術實施,其中資料可在被依序讀取時經標記用於擦除。取決於實施細節,此可例如藉由以塊為單位及/或以可預測方式使資料無效而改良廢料收集的效率、減少寫入放大及/或類似者。
在一些實施例中,以操作次序訪問資料結構的可預測性可使得根據本揭露的實例實施例的儲存方案實施預提取緩衝器,所述預提取緩衝器可自相對高潛時儲存媒體預提取資料且將其置放於相對低潛時儲存媒體(例如,揮發性記憶體)中。取決於實施細節,此緩衝方案可由於依序資料訪問的可預測特性而基本上提供具有零或低缺失率的快取記憶體。
本揭露涵蓋與資料儲存及/或訪問相關的許多發明原理。本文中所揭露的原理可具有獨立效用且可單獨地體現,且並非每一實施例皆可利用每一原理。此外,原理亦可以各種組合體現,所述各種組合中的一些可以協同方式放大個別原理的一或多個益處。
資料處理應用程式可使用緩衝器來在處理由一或多個源產生的原始資料之前儲存所述原始資料。緩衝器亦可用於在不同處理操作(諸如變換、過濾、轉譯及/或類似者)之間儲存中間資料。緩衝器可藉由可提供低潛時訪問的諸如動態隨機訪問記憶體(DRAM)的揮發性記憶體實施。然而,當將應用程式縮放至相對大資料集時,揮發性可能需要增加量的功率及/或可能變得過分昂貴。此外,揮發性記憶體可能無法例如跨功率循環保留資料,因此導致資料丟失。
諸如快閃記憶體的非揮發性記憶體可用於緩衝原始資料及/或中間資料。舉例而言,可使用非AND(NAND)快閃記憶體作為儲存媒體的固態硬碟(SSD)可用於實施資料緩衝器以儲存原始及/或中間資料(例如,持續傳輸緩衝器)。取決於實施細節,非揮發性記憶體可減少與儲存資料相關聯的成本及/或功率消耗,以及防止資料丟失。
然而,在一些實施例中,非揮發性記憶體可呈現用作資料緩衝器的一或多個潛在挑戰。舉例而言,一些非揮發性記憶體可具有塊擦除特性,其中可以比資料可被寫入(例如,程式化)更大的單位擦除所述資料。使用具有塊擦除特性的非揮發性記憶體可涉及使用廢料收集技術,其中可將可儲存於整個塊中的各個位置處的有效資料移動至新位置以使得能夠藉由擦除塊來擦除所述塊中的無效資料(例如,已刪除或以其他方式標記為無效的資料)。此又可能導致寫入放大,其可能減少可具有有限數目個寫入循環的非揮發性記憶體的工作壽命。
與將非揮發性記憶體用於資料緩衝器相關聯的另一潛在挑戰可能涉及位址追蹤及/或邏輯至實體位址轉譯操作及/或資料結構的使用。舉例而言,使用SSD實施資料緩衝器的主機可維護(logical block address;LBA)的資料結構,其已在所述邏輯塊位址處儲存SSD處的資料。SSD可實施額外位址追蹤操作及/或資料結構,例如以在儲存裝置內執行LBA至實體塊位址(physical block address;PBA)轉譯。此等操作及/或資料結構中的一些或所有可增加與將非揮發性記憶體用於資料緩衝器相關聯的複雜性、潛時、成本、功率消耗及/或類似者。
本揭露的發明原理中的一些可採用一些資料處理操作及/或資料傳送的一或多個特性以實施資料儲存方案,取決於實施細節,所述資料儲存方案可解決上文所描述的任何數目個潛在挑戰。舉例而言,在一些資料處理應用程式中,原始資料及/或中間資料可以依序次序(例如,FIFO次序)產生及/或寫入至緩衝器。原始資料及/或中間資料亦可以依序次序(例如,以產生及/或寫入資料的相同FIFO次序)自緩衝器讀取及/或由處理操作消耗。根據本揭露的一些實施例可藉由以具有操作次序(例如,依序訪問次序)的諸如FIFO緩衝器的一或多個資料結構的形式提供資料儲存容量來採用此依序資料處理及/或傳送特性。因此,可以資料源或處理操作產生資料的次序將所述資料傳送至儲存系統中的資料結構。另外或替代地,可以處理操作消耗資料的次序自儲存系統中的資料結構傳送(例如,讀取)所述資料。
本揭露的一些額外發明原理可涉及基於讀取資料而指示(例如,標記)用於修改(例如,擦除)的資料。舉例而言,在可使用具有塊擦除特性的非揮發性記憶體作為儲存媒體的實施例中,可基於讀取資料而標記用於擦除(例如,無效)的資料。舉例而言,在一些實施例中,此類型的基於讀取的資料無效可藉由一次寫入一次讀取(WORO)技術實施,其中資料可例如在被依序讀取時經標記用於擦除。
出於示出發明原理的目的,可在資料儲存系統的上下文中描述一些實施例,所述資料儲存系統可包含一或多個設備,諸如一或多個儲存裝置、儲存伺服器、儲存節點及/或類似者。然而,原理可應用於可配置於具有有序訪問操作的一或多個資料結構中的任何類型的記憶體,及/或可具有諸如塊擦除特性的塊修改特性的任何類型的記憶體。
圖1示出根據本揭露的實例實施例的具有有序訪問的資料結構的記憶體系統的實施例。圖1中所示出的記憶體系統100可包含一或多個記憶體102及一或多個控制器104。記憶體102的至少一部分可經配置為具有諸如FIFO特性、塊訪問特性、快取行訪問特性及/或類似者的有序訪問特性的一或多個資料結構106。資料可藉由一或多個資料生產者108(其亦可稱為生產者)寫入至資料結構106。資料可藉由一或多個資料消費者110(其亦可稱為消費者)自資料結構106讀取。
在一些實施例中,資料生產者108及/或資料消費者110可實施為一或多個主機、應用程式、程序及/或類似者,或其組合。在一些實施例及/或情形中,資料生產者108及資料消費者110可為部分或完全相同的實體,例如主機、應用程式、程序及/或類似者。取決於實施細節,圖1中所示出的記憶體系統100可減少潛時、減少成本、增加效率、減少寫入放大、改良資料置放、改良廢料收集、改良服務品質(QoS)及/或類似者。
圖2示出根據本揭露的實例實施例的用於訪問具有塊修改特性的記憶體的方法的實施例。圖2中所示出的方法可在操作212處開始,其中可自記憶體讀取儲存於具有塊修改特性的記憶體的一或多個塊中的資料。方法可繼續進行至操作214,其中可自記憶體讀取的資料的至少一部分可經指示用於修改。舉例而言,在操作212處讀取的資料可在操作214處無效(例如,標記用於擦除、廢料收集及/或類似者)。在一些實施例中,圖2中所示出的方法可實施WORO技術。
方法可繼續進行至可判定待自記憶體讀取的下一資料(若存在)的操作216。舉例而言,若儲存於具有塊修改特性的記憶體的一或多個塊中的資料經配置於具有諸如FIFO的有序訪問特性的資料結構中,則操作216可選擇自FIFO讀取的下一資料。在其他實施例中,可根據隨機訪問策略儲存資料,在此情況下,操作216可基於來自主機或其他資料消費者的記憶體訪問請求而判定待讀取的下一資料。在一些實施例中,方法可在記憶體的一或多個塊中的最後資料已經讀取及/或指示用於修改之後終止。在一些實施例中,可修改(例如,擦除)資料中的所有或幾乎所有已經指示用於修改(例如,擦除)的塊。
取決於實施細節,圖2中所示出的方法可例如藉由以塊為單位及/或以可預測方式使資料無效而改良廢料收集的效率、減少寫入放大及/或類似者。
圖1及圖2中所示出的實施例具有獨立效用且可單獨地體現。然而,圖1及圖2中所示出的原理可經組合以產生額外實施例,取決於實施細節,所述額外實施例可以協同方式放大個別原理的一或多個益處。舉例而言,一些實施例可實施具有有序訪問特性的資料結構,其中記憶體具有塊修改特性以提供WORO-FIFO記憶體系統(例如,WORO-FIFO儲存裝置),所述WORO-FIFO記憶體系統可向一或多個資料生產者及/或消費者提供作為一組一或多個FIFO的儲存容量,如下文更詳細地描述。取決於實施細節,此WORO-FIFO記憶體系統可適應可以依序方式訪問原始及/或中間資料的工作負荷。
圖3示出根據本揭露的實例實施例的用於儲存裝置的控制器的架構的實施例。圖3中所示出的控制器304可實施或用於部分地或完全地實施本文中所揭露的控制器、記憶體訪問方案、儲存裝置及/或類似者的實施例中的任一者。在一些實施例中,圖3中所示出的一或多個元件可具有可類似於由在其他實施例中以相同數位結束的參考標號指示的一或多個對應元件的結構及/或功能。
圖3中所示出的控制器304可包含主機介面318、媒體轉譯層(media translation layer;MTL)320、裝置記憶體322以及媒體介面324。在一些實施例中,控制器304中的組件中的任一者可實施為單獨組件(例如,裝置記憶體322),且一或多個額外組件可整合至控制器304(例如,加速器)中。
儲存媒體302a……儲存媒體302N(其可統稱為儲存媒體302)的一或多個群組可分別經由一或多個媒體匯流排327a……媒體匯流排327N(其可統稱為媒體匯流排327)連接至媒體介面324,以分別形成一或多個媒體通道329a……媒體通道329N(其可統稱為媒體通道329)。
在一些實施例中,控制器304可與儲存媒體302一起使用,所述儲存媒體302可包含固態媒體、磁性媒體、光學媒體及/或類似者,或其任何組合。固態媒體的實例可包含:快閃記憶體,諸如NAND快閃記憶體(其可例如藉由使用任何類型的製程製造的單層級單元(Single-Level Cell;SLC)、多層級單元(Multi-Level Cell;MLC)、三層級單元(Triple-Level Cell;TLC)及/或四層級單元(Quad-Level Cell;QLC)組態中的一或多者或其任何組合來實施);持續記憶體(persistent memory;PMEM),諸如交叉柵格非揮發性記憶體;具有體電阻變化的記憶體;相變記憶體(phase change memory;PCM);及/或類似者;或其任何組合。
在一些實施例中,控制器304可以用於儲存裝置,所述儲存裝置可以任何形式因子(諸如3.5吋、2.5吋、1.8吋、M.2、企業及資料中心SSD形式因子(Enterprise and Data Center SSD Form Factor;EDSFF)、NF1及/或類似者)使用任何連接器組態(諸如串列ATA(Serial ATA;SATA)、小型電腦系統介面(Small Computer System Interface;SCSI)、串列附接SCSI(Serial Attached SCSI;SAS)、M.2、U.2、U.3及/或類似者)實施。在一些實施例中,控制器304可用於儲存裝置、儲存伺服器、儲存節點及/或類似者,其可完全地或部分地藉由伺服器底盤、伺服器機架、資料室、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任何組合實施,及/或與其結合使用。
在一些實施例中,控制器304及/或主機介面318可使用任何類型的互連媒體及/或介面、網路媒體及/或介面、儲存介面及/或其任何協定進行通信,所述協定諸如外圍組件互連高速(Peripheral Component Interconnect Express;PCIe)、非揮發性記憶體高速(Nonvolatile Memory Express;NVMe)、基於網狀架構的NVMe(NVMe-over-fabric;NVMe-oF)、NVMe密鑰值(NVMe Key-Value;NVMe-KV)、SATA、SCSI、乙太網路、傳輸控制協定/網際網路協定(Transmission Control Protocol/Internet Protocol;TCP/IP)、直接記憶體訪問(direct memory access;DMA)、遠端DMA(remote DMA;RDMA)、基於聚合乙太網路的RDMA(RDMA over Converged Ethernet;ROCE)、光纖通道、無線帶寬、iWARP及/或類似者,或其任何組合。
在一些實施例中,控制器304及/或主機介面318可實施同調(例如,記憶體同調、快取記憶體同調及/或類似者)介面及/或諸如計算高速鏈路(Compute Express Link;CXL)的記憶體語義介面及/或諸如CXL.mem、CXL.cache及/或CXL.IO的同調協定。同調及/或記憶體語義介面及/或協定的其他實例可包含Gen-Z、同調加速器處理器介面(Coherent Accelerator Processor Interface;CAPI)、用於加速器的快取記憶體同調互連(Cache Coherent Interconnect for Accelerator;CCIX)及/或類似者。
在一些實施例中,本文中所揭露的包含圖3中所示出的諸如控制器304、主機介面318、媒體轉譯層(MTL)320及/或媒體介面324的功能性及/或組件中的任一者的功能性中的任一者可藉由硬體、軟體或其組合實施,包含組合邏輯、時序邏輯、一或多個計時器、計數器、暫存器及/或狀態機、一或多個複雜可程式化邏輯裝置(complex programmable logic device;CPLD)、場可程式化閘陣列(field programmable gate array;FPGA)、特殊應用積體電路(application specific integrated circuit;ASIC)、執行儲存於任何類型的記憶體中的指令的處理單元(其可稱為處理器),例如微控制器、中央處理單元(central processing unit;CPU)(諸如複雜指令集電腦(complex instruction set computer;CISC)處理器(諸如x86處理器)及/或精簡指令集電腦(reduced instruction set computer;RISC)處理器(諸如RISC-V處理器及/或ARM處理器))、圖形處理單元(graphics processing unit;GPU)、神經處理單元(neural processing unit;NPU)、張量處理單元(tensor processing unit;TPU)及/或類似者,或其任何組合。在一些實施例中,一或多個組件可實施為系統級晶片(system-on-chip;SOC)。
再次參考圖3,在一些實施例中,控制器304可通常經由主機介面318藉由一或多個主機、應用程式、程序及/或其他資料生產者及/或消費者管理及/或提供對儲存媒體302的訪問,例如藉由接收記憶體訪問命令317a及/或邏輯位址317b以及藉由經由主機介面318發送完成319。在一些實施例中,命令317a及/或回應319可伴隨有對應資料,而在其他實施例中,對應資料可例如使用DMA、RDMA及/或類似者傳輸。在一些實施例中,資料寫入及/或讀取輸入及/或輸出(IO或I/O)命令,以及各種媒體管理命令(諸如標識、設定特徵、獲取日誌及/或類似者)可經由主機介面318發出,以及執行至及/或自一或多個資料生產者及/或消費者(例如,儲存伺服器主機系統記憶體)的使用者資料傳送。
在一些實施例中,媒體轉譯層320可接收記憶體訪問命令及/或邏輯位址(例如,LBA)且將邏輯位址轉譯為實體位址(例如,PB)至媒體介面324以訪問儲存媒體302。因此,在一些實施例中,用於後台操作321的內部資料及/或資訊以及使用者資料323可在媒體轉譯層320與媒體介面324之間傳遞。在一些實施例中,媒體轉譯層320可出於各種目的使用裝置記憶體322(例如,DRAM),諸如儲存用於邏輯至實體位址轉譯(例如,LBA至PBA轉譯)的位址轉譯表。在一些實施例中,媒體介面324可使用使用者資料至儲存媒體302的任何映射來訪問儲存媒體302。
舉例而言,在一些實施例中,主機可將提供資料的寫入命令及儲存資料的對應LBA發送至控制器304。主機可追蹤用於其已發送至控制器304的資料的LBA。媒體轉譯層320可將由主機發送的LBA轉譯為儲存媒體302中的對應PBA。當主機讀取資料時,其可將提供相關聯LBA的讀取命令發送至控制器304以獲得所關注的資料。控制器304可接著將自主機接收到的LBA轉譯為儲存媒體302的PBA以擷取資料。因此,取決於實施細節,主機(或其他資料生產者)可維持資料結構(例如,LBA的表)以追蹤其已儲存的資料的邏輯位置,且媒體轉譯層320可維持資料結構(例如,LBA至PBA轉譯表)以追蹤其已儲存的資料的實體位置。
儘管圖3中所示出的控制器304不限於任何特定實施細節,但在一些實施例中,其可用於實施可使用用於儲存媒體302中的一些或所有的快閃記憶體(例如,一或多個NAND快閃記憶體晶粒)的SSD。在此實施例中,媒體轉譯層320可藉由快閃轉譯層(flash translation layer;FTL)實施,且媒體介面324可藉由快閃介面實施。在一些實施例中,FTL可提供由主機(例如,儲存伺服器)使用的邏輯位址與儲存媒體302中使用的快閃記憶體中的資料的實際實體位置之間的映射。
在一些實施例中,一些儲存媒體302(例如,非揮發性記憶體,諸如NAND快閃記憶體)可以頁面(例如,具有例如8千位元組至16千位元組的頁面大小的NAND快閃記憶體)的粒度進行讀取或寫入,且儲存媒體的頁面可在藉由新資料對其重新程式化之前進行擦除。然而,在一些實施例中,一些儲存媒體可具有塊擦除特性,其中擦除粒度可為多個頁面(例如,塊中的128至256個頁面)的塊。擦除及程式化的粒度可不同的實施例可涉及在擦除第一塊之前將有效資料(其可位於整個第一塊中)的一或多個頁面遷移至第二塊的額外工作。
在一些實施例中,廢料收集(garbage collection;GC)程序可用於釋放部分填充的資料塊以為更多資料騰出空間。舉例而言,資料頁面至塊的隨機寫入可促使媒體轉譯層320(例如,FTL)實施廢料收集程序以自已覆寫的分段儲存媒體塊回收空間。在一些實施例中,當廢料收集完成時,可再循環擦除塊中的一或多個頁面及/或將其添加至藉由媒體轉譯層維持的自由頁面列表。
一些類型的儲存媒體302(例如,非揮發性記憶體,諸如NAND快閃)可僅經程式化及/或擦除有限次數。此可稱為記憶體可在儲存媒體的壽命期間維持的程式化及/或擦除循環(P及/或E循環)的最大數目。然而,在一些實施例中,且在一些情形下,重新程式化(例如,寫入)自主機接收到的相對少量的資料可涉及擦除及/或重寫較大量的資料。舉例而言,騰出空間以寫入自主機接收到的相對少量的資料可涉及藉由將現有資料寫入至第二記憶體塊而自第一記憶體塊重新定位所述現有資料以擦除第一記憶體塊。然而,重新定位不變的資料可增加寫入放大及/或減少儲存媒體的壽命。
在一些實施例中,寫入放大可根據寫入放大因數(write amplification factor;WAF)來表示,且可例如藉由提交至儲存媒體302的寫入與自主機系統接收到的寫入的比率來量測。增加寫入放大可例如藉由使用多餘程式化及/或擦除循環而減少儲存媒體壽命。在一些實施例中,若將在相同時間或大約相同時間無效的資料相對靠近地置放在一起(例如,在同一頁面、塊及/或類似者中),則其可幫助減少廢料收集開銷及/或避免寫入放大。然而,取決於實施細節,媒體轉譯層320可能無法訪問可使其能夠進行此類型的資料置放決策的應用程式層級資訊。此外,主機、應用程式、程序及/或其他資料生產者可能對媒體轉譯層320如何配置儲存媒體302中的資料具有極少控制或無控制。
在一些實施例中,媒體轉譯層320可控制各種後台操作,諸如廢料收集。因此,與IO命令相關的操作(例如,來自主機)可與後台操作共存,且此等兩種類型的儲存媒體訪問可彼此競爭儲存媒體頻寬,藉此不利地影響控制器304的IO效能。舉例而言,與通道及/或匯流排訪問及/或執行與諸如廢料收集的後台操作相關聯的額外程式化及/或擦除循環相關聯的開銷可能消耗可另外用於IO讀取及/或寫入操作(例如,藉由主機、應用程式、程序及/或其他資料生產者及/或消費者)的儲存媒體頻寬。因此,改良或最佳化廢料收集可改良儲存裝置的效率,為寫入及讀取操作留下更多頻寬,以及改良儲存媒體302的可靠性及/或耐久性。
圖4示出根據本揭露的實例實施例的有序訪問塊修改記憶體中的資料的儲存裝置的實例實施例。圖4中所示出的儲存裝置400可實施例如WORO-FIFO資料訪問方案。儲存裝置400可實施或用於部分地或完全地實施本文中所揭露的控制器、記憶體訪問方案、儲存裝置及/或類似者的實施例中的任一者。在一些實施例中,圖4中所示出的一或多個元件可具有可類似於由在其他實施例中以相同數位結束的參考標號指示的一或多個對應元件的結構及/或功能。
圖4中所示出的儲存裝置400可包含控制器404及一或多個儲存媒體402。控制器404可包含主機介面418、媒體轉譯層420及/或緩衝邏輯430。在一些實施例中,控制器404可包含媒體介面層、裝置記憶體及/或其他組件以實施儲存裝置。
主機介面418可藉由任何類型的互連及/或網路傳輸媒體、介面及/或協定(例如,基於PCIe或網路網狀架構的NVMe)實施。一或多個儲存媒體402可藉由任何一或多種類型的儲存媒體實施,例如具有塊修改(例如,塊擦除)特性的記憶體,諸如NAND快閃記憶體。媒體轉譯層420可藉由對應於一或多種類型的儲存媒體402的任何類型的轉譯層實施,例如,對應於一或多個儲存媒體402中的NAND快閃記憶體的快閃轉譯層。
在一些實施例中,緩衝邏輯430可經組態以實施一或多個有序訪問資料結構,在此實例中,所述一或多個有序訪問資料結構可為WORO-FIFO緩衝器406a……WORO-FIFO緩衝器406N。在一些實施例中,緩衝邏輯430可經組態以實施指示方案,所述指示方案可基於讀取資料而指示(例如,標記)用於修改(例如,擦除)的資料,例如,WORO資料無效方案。
圖4中所示出的儲存裝置400可例如以WORO-FIFO緩衝器406a……WORO-FIFO緩衝器406N(其可統稱為WORO-FIFO緩衝器406)的形式向主機401處的一或多個生產者408及/或消費者410提供儲存容量。出於說明的目的,僅一個生產者408及一個消費者410(其可為主機401的部分)繪示於圖4中所示出的實例實施例中,但以任何組態配置的任何數目個生產者、消費者、主機、應用程式、程序及/或類似者可訪問儲存裝置400。在一些實施例中,主機401可經由可藉由任何類型的互連件、網路及/或類似者實施的連接403(例如,使用主機介面418)連接至儲存裝置400。
在一些實施例中,生產者408可在由尾指標432a指示的尾部位置處將資料寫入例如至WORO-FIFO緩衝器406a,所述尾指標432a可指向WORO-FIFO緩衝器406a的下一可用記憶體位置。寫入至WORO-FIFO緩衝器406a的尾部的程序可稱為推送資料或推送操作,且可涉及緩衝邏輯430及/或媒體轉譯層420在藉由尾指標432a指向的當前可用位置處寫入由生產者408提供的資料,及在將資料寫入至WORO-FIFO緩衝器406a之後修改尾指標432a以指向下一可用記憶體位置。
作為另一實例,在一些實施例中,消費者410可在由頭指標434a指示的頭部位置處自WORO-FIFO緩衝器406a讀取資料,所述頭指標434a可指向WORO-FIFO緩衝器406a中的最舊的記憶體輸入項(例如,先進記憶體輸入項)。自WORO-FIFO緩衝器406a的頭部讀取的程序可稱為資料彈出或彈出操作,且可涉及緩衝邏輯430及/或媒體轉譯層420在當前由頭指標434a指向的位置處讀取資料輸入項,將資料發送至消費者410,及在自WORO-FIFO緩衝器406a讀取先前最舊的記憶體輸入項之後修改頭指標434a以指向下一最舊的記憶體輸入項。
在一些實施例中,緩衝邏輯430可例如藉由分別針對WORO-FIFO緩衝器406a……WORO-FIFO緩衝器406N中的各者維持尾指標432a……尾指標432N及/或頭指標434a……頭指標434N而維持WORO-FIFO緩衝器406a……WORO-FIFO緩衝器406N中的一或多者的先進先出次序。因此,將資料推送及/或彈出至WORO-FIFO緩衝器406a……WORO-FIFO緩衝器406N中的一者及/或自WORO-FIFO緩衝器406a……WORO-FIFO緩衝器406N中的一者推送及/或彈出資料可僅涉及主機401發送具有特定緩衝器的識別符的推送及/或彈出命令。取決於實施細節,主機401可能不追蹤緩衝器中的資料的一或多個塊位址,且因此可能消除用於追蹤塊位址(例如,LBA)的資料結構。此外,減少或消除塊位址的追蹤可減少複雜性及/或簡化主機401的LBA管理。在一些實施例中,控制器404及/或緩衝邏輯430可使用一或多個命令(例如,一或多個NVMe命令)來實施WORO-FIFO緩衝器406。
在一些實施例中,緩衝邏輯430可例如藉由在自緩衝器406中的一或多者讀取資料時指示用於修改(例如,藉由將資料標記用於擦除來使資料無效)的資料來實施WORO技術。取決於實施細節,此可改良或最佳化一或多個緩衝器406的廢料收集。舉例而言,若緩衝器406中的一或多者藉由具有塊擦除特性的儲存媒體402實施,且緩衝器406配置於塊中(例如,在整個塊中,或在緩衝器或可能小於塊的緩衝器406的部分的情況下,完全在塊內),則當以FIFO次序自個別塊依序讀取資料時,可使整個塊無效(例如,指示用於擦除),藉此減少或消除將可能位於(例如,隨機分散於)無效資料當中的有效資料移出塊以擦除所述塊的需要。
因此,在一些實施例中,且取決於實施細節,當將資料依序寫入至儲存媒體402及/或自儲存媒體402依序讀取資料時,儲存裝置400可採用一些工作負荷的依序訪問特性來改良或最佳化儲存媒體402(例如,快閃記憶體)及/或媒體轉譯層420(例如,FTL)的一或多個功能的管理。舉例而言,資料可有效地或最佳地置放於連續頁面中及/或儲存媒體的相同塊中以減少或最小化寫入放大因數(WAF),改良儲存媒體耐久性,減少功率消耗及/或類似者。作為另一實例,媒體轉譯層420可實施更粗粒度的位址轉譯(例如,頭指標及/或尾指標而非LBA至PBA轉譯),其可減少媒體轉譯層420的複雜性、成本、功率消耗及/或類似者。作為另一實例,與LBA至PBA表相比,媒體轉譯層420可使用更少裝置記憶體(例如,DRAM)來追蹤WORO-FIFO緩衝器及指標,藉此減少裝置記憶體的量、成本、功率消耗及/或類似者。作為又另一實例,根據本揭露的實例實施例的WORO-FIFO緩衝器方案可減少可用於過度供應的儲存媒體的量,藉此減少儲存裝置400的成本及/或增加其可用容量。此外,在一些實施例中,且取決於實施細節,可改良(例如,微調)包含廢料收集、再循環及/或類似者的一或多個媒體轉譯層程序以利用具有依序資料處理及/或傳送特性的工作負荷。
在一些實施例中,儲存裝置400可僅藉由如上文所描述的FIFO主機介面實施。然而,在其他實施例中,可藉由混合式及/或可組態介面實施儲存裝置400,所述混合式及/或可組態介面可例如同時基於模式切換機構及/或類似者來適應FIFO及塊資料訪問兩者。
在一些實施例中,緩衝邏輯430可藉由硬體、軟體或其任何組合實施,包含組合邏輯、時序邏輯、一或多個計時器、計數器、暫存器、狀態機、揮發性記憶體(諸如DRAM及/或SRAM)、非揮發性記憶體(諸如快閃記憶體)、CPLD、FPGA、ASIC及/或執行儲存於任何類型的記憶體中的指令的處理器,及/或類似者,或其任何組合。
表1示出根據本揭露的實例實施例的可例如由主機、儲存裝置及/或類似者使用以實施用於訪問一或多個有序訪問資料結構(例如,WORO-FIFO緩衝器)的方案的命令集及對應參數的實例實施例。舉例而言,在一些實施例中,一或多個主機、應用程式、程序及/或其他生產者及/或消費者及/或類似者可使用表1中所描述的命令中的一或多者來創建、組態、管理及/或類似者儲存裝置或其他記憶體系統中的FIFO緩衝器。儘管表1中所示出的命令不限於任何特定實施細節,但在一些實施例中,命令中的一或多者可實施為NVMe命令。
表1
| 命令 | 參數 |
| 識別 | 所支援緩衝器的最大數目 |
| 最大緩衝器可用容量 | |
| 容量粒度 | |
| 創建緩衝器 | 緩衝器ID |
| 容量 | |
| 刪除緩衝器 | 緩衝器ID |
| 設定特徵 | 緩衝器ID |
| 改變容量 | |
| 重設指標 | |
| 獲得特徵 | 緩衝器ID |
| 當前資料佔用 | |
| 當前自由空間 | |
| 主動緩衝器的當前數目 | |
| 推送 | 緩衝器ID |
| 資料大小 | |
| 源位址 | |
| 彈出 | 緩衝器ID |
| 資料大小 | |
| 目的地位址 | |
| Move_Discard |
參考表1,識別命令可用於發現由儲存裝置或可返回以下參數中的一或多者的其他記憶體系統提供的一或多個特徵。參數所支援的緩衝器的最大數目可指示儲存裝置或其他記憶體系統可支援多少WORO-FIFO緩衝器或其他有序訪問資料結構。參數最大緩衝器可用容量可指示例如可用於例如以位元組、雙字、頁面、塊及/或類似者表示的所有資料結構的記憶體空間的總量。參數容量粒度可指示例如以位元組、雙字、頁面、塊及/或類似者表示的可用記憶體空間的粒度。在一些實施例中,回應於識別命令而返回的參數中的一或多者可以識別資料結構的形式返回。
創建緩衝器命令可用於創建WORO-FIFO緩衝器或其他有序訪問資料結構。舉例而言,在一些實施例中,諸如儲存裝置驅動器的主機系統軟體可使用創建緩衝器命令來創建一或多個資料FIFO。驅動器可指定可用於識別新創建的緩衝器的參數緩衝器ID。驅動器亦可指定參數緩衝器容量以指示待分配至新創建的緩衝器的儲存容量的量。容量可例如以與回應於識別命令返回的容量粒度相同的單位表示。在一些實施例中,裝置驅動器可使用回應於識別命令返回的參數最大緩衝器可用容量來理解多少容量可用於創建緩衝器。
刪除緩衝器命令可用於移除現有WORO-FIFO緩衝器或由參數緩衝器ID指示的其他有序訪問資料結構。在一些實施例中,在刪除緩衝器時,可將所刪除緩衝器的容量添加至回應於識別命令返回的參數最大緩衝器可用容量。
設定特徵命令可用於改變現有WORO-FIFO緩衝器的所分配儲存容量或由參數緩衝器ID指示的其他有序訪問資料結構。參數改變容量可指示將對退出緩衝器的當前容量添加或減去多少容量(例如,以由回應於識別命令返回的參數容量粒度指示的單位)。在一些實施例中,可對回應於識別命令返回的參數最大緩衝器可用容量減去或添加經添加至現有緩衝器或自現有緩衝器移除的容量的量。參數重設指標可為布爾值,其指示現有頭指標及/或尾指標是要重設(例如,丟棄緩衝器的當前內容以使緩衝器為空的)還是保持不變(例如,維持緩衝器的當前內容)。
獲得特徵命令可用於獲得與現有WORO-FIFO緩衝器或由參數緩衝器ID指示的其他有序訪問資料結構相關的各種運作時間資訊。參數當前資料佔用可返回當前緩衝器深度或緩衝器的資料佔用,而參數可返回緩衝器的當前自由空間。在一些實施例中,參數主動緩衝器的當前數目亦可返回WORO-FIFO緩衝器及/或當前主動的其他有序訪問資料結構的數目。
推送命令可例如在運作時間使用,以將資料寫入至特定WORO-FIFO緩衝器或由參數緩衝器ID指示的其他有序訪問資料結構中。參數資料大小可指示待寫入的資料的量(例如,以位元組、雙字、頁面、塊、容量粒度及/或類似者為單位)。參數源位址可指示例如在主機記憶體中待傳送的資料的開始位址。在一些實施例中,可使用DMA、RDMA及/或類似者將資料自主機記憶體傳送(例如,藉由儲存裝置控制器)至WORO-FIFO緩衝器或由參數緩衝器ID指示的其他有序訪問資料結構。在一些實施例中,參數源位址可包含單一連續位址、位址集合、鏈接列表及/或類似者。
彈出命令可例如在運作時間使用,以自特定WORO-FIFO緩衝器或由參數緩衝器ID指示的其他有序訪問資料結構讀取資料。參數資料大小可指示待讀取的資料的量(例如,以位元組、雙字、頁面、塊、容量粒度及/或類似者為單位)。參數目的地位址可指示資料可例如在主機記憶體中傳送至的位置的開始位址。在一些實施例中,可使用DMA、RDMA及/或類似者將資料自WORO-FIFO緩衝器或由參數緩衝器ID指示的其他有序訪問資料結構傳送(例如,藉由儲存裝置控制器)至主機記憶體。在一些實施例中,參數目的地位址可包含單一連續位址、位址集合、鏈接列表及/或類似者。在一些實施例中,參數Move_Discard可為布爾值,其指示在自由參數緩衝器ID指示的緩衝器讀取資料之後,所述資料是可移動至由參數目的地位址指示的主機記憶體位置還是被丟棄。舉例而言,在一些情形下,主機可能不使用自緩衝器彈出的實際資料,而是可能僅意欲將頭指標(例如,讀取指標)移動至緩衝器中的下一輸入項。
在一些實施例中,控制器及/或媒體轉譯層可維持一或多個資料結構(例如,WORO-FIFO緩衝器)的一或多個動態容量可用性統計。舉例而言,主機可使用獲得特徵命令查詢目標緩衝器的當前消耗。主機可使用所返回資料來使用設定特徵命令重新組態緩衝器ID、緩衝器容量、重設緩衝器指標及/或類似者。控制器及/或媒體轉譯層可接著更新表2中的一或多個對應欄位以反映此等改變。
圖5示出根據本揭露的實例實施例的用於訪問有序訪問資料結構的方法的實施例。圖5中所示出的實施例可例如與本文中所描述的包含圖1、圖2、圖3或圖4中所示出的彼等實施例的實施例中的任一者一起使用。出於示出原理的目的,圖5中所示出的實施例可在主機訪問緩衝器(例如,FIFO緩衝器)的上下文中予以描述,但所述原理可應用於任何應用程式、程序及/或訪問具有有序訪問特性的任何資料結構的任何資料生產者及/或消費者。
方法可在操作536-1處開始,主機可在操作536-1處創建緩衝器。舉例而言,主機可使用如上文所描述的創建緩衝器命令以使用具有塊擦除特性的儲存媒體在儲存裝置處創建WORO-FIFO緩衝器。在操作536-2處,主機可例如使用如上文所描述的推送命令將第一資料輸入項推送至緩衝器中。若主機具有待推送至緩衝器中的額外資料輸入項,則其可重複操作536-2,如由箭頭537-1所繪示,直至主機不再具有待儲存於緩衝器中的資料輸入項為止。在一些實施例中,儲存於緩衝器中的資料可藉由可能已執行諸如變換、過濾操作、轉譯及/或類似者的第一處理操作的第一應用程式或程序(例如,在主機處運行)產生。
方法可接著如由箭頭537-2所繪示繼續進行至操作536-3,主機可在操作536-3處例如使用如上文所描述的彈出命令自緩衝器彈出資料輸入項。若主機需要來自緩衝器的額外資料輸入項,則其可重複操作536-3,如由箭頭537-3所繪示,直至主機已擷取其可能需要的所有資料輸入項為止。在一些實施例中,當自緩衝器彈出各資料輸入項時,所述資料輸入項可經指示用於修改(例如,藉由將其標記用於擦除及/或廢料收集而使其無效)。在一些實施例中,自緩衝器彈出的資料可由可對資料執行第二處理操作(例如,變換、過濾操作、轉譯及/或類似者)的第二應用程式或程序(例如,在主機處運行)使用。
在一些實施例中,主機可在以下兩者之間進行多次:在操作536-2處將資料推送至緩衝器中(包含如由箭頭537-1所繪示按需要循環以將多個資料輸入項推送至緩衝器中)及在操作536-3處自緩衝器彈出資料(包含如由箭頭537-3所繪示按需要循環以自緩衝器彈出多個資料輸入項),每次對資料執行不同處理操作。
若在操作536-3處,主機不再需要緩衝器以供進一步操作,則其可繼續進行至操作536-4,其可在操作536-4處例如使用如上文所描述的刪除緩衝器命令來刪除緩衝器。
圖6示出根據本揭露的實例實施例的用於有序資料結構的邏輯資料佈局的實例實施例。圖6中所示出的實施例可用於例如實施本文中所揭露的包含圖1及圖4中所示出的彼等結構的有序訪問資料結構(例如,WORO-FIFO)中的任一者。
參考圖6,資料結構可形成於實體記憶體塊640-1……實體記憶體塊640-N中,所述實體記憶體塊出於說明的目的以依序次序繪示,但其可在任何儲存媒體中以任何組態配置於一或多個通道、記憶體裝置及/或類似者中。
資料結構可由實體記憶體塊640-1……實體記憶體塊640-N中的任何一或多者的一或多個部分(以對角線陰影繪示)形成。在圖6中所示出的實施例中,資料結構的第一頁面642-1可在實體記憶體塊640-3中位於由頭指標644指向的頭指標實體位址(head pointer physical address;HPPA)處。第一頁面642-1可位於例如實體記憶體塊640-3內的讀取頁面偏移處。在一些實施例中,HPPA可稱為頭指標。
包含第一頁面642-1及可能一或多個額外頁面的資料結構可佔用實體記憶體塊640-3的以對角線陰影繪示的一部分。資料結構可佔用的下一實體記憶體塊640-5的實體塊位址PBA-1可儲存於第一實體記憶體塊640-3中,例如實體記憶體塊640-3的端部或尾部處。因此,實體塊位址PBA-1可指向下一實體記憶體塊640-5,如由箭頭646-1所繪示。
在圖6中所示出的實施例中,資料結構亦可佔用如由對角線陰影所繪示的所有實體記憶體塊640-5。資料結構可佔用的下一實體記憶體塊的實體塊位址PBA-2可儲存於實體記憶體塊640-5中,例如實體記憶體塊640-5的端部或尾部處。因此,實體塊位址PBA-2可指向下一實體記憶體塊,如由箭頭646-2所繪示。(由資料結構佔用的下一實體記憶體塊可位於實體記憶體塊640-1……實體記憶體塊640-N的由橢圓指示的區中,且因此可不顯式地繪示。)
資料結構可佔用任何數目個額外實體記憶體塊640,直至且包含實體記憶體塊640-16的一部分(由對角線陰影指示),所述部分可由儲存於先前佔用的實體記憶體塊(未繪示)中的實體塊位址PBA-(M-1)(未繪示)指向,如由箭頭646-(M-1)所繪示,其中M可指示可至少部分地由資料結構佔用的實體記憶體塊640的總數目。在圖6中所示出的實施例中,資料結構可在頁面642-P處結束(其中P可指示資料結構中的頁面的總數目),所述頁面642-P可位於實體記憶體塊640-16內的寫入頁面偏移處。在一些實施例中,資料結構的最後一個頁面642-P可位於由尾指標648指向的尾指標實體位址(tail pointer physical address;TPPA)處。在一些實施例中,TPPA可稱為尾指標。
因此,由對角線陰影指示的資料結構可形成鏈接列表,其中各實體記憶體塊(除最後一個塊以外)可包含下一實體記憶體塊的實體塊位址。
在一些實施例中,可將屬於相同資料結構(例如,相同FIFO緩衝器)的資料儲存在一起。此外,若屬於相同資料結構的資料並不與來自其他資料結構的資料混合,則其可例如藉由在依序自FIFO資料結構讀取資料時使整個資料塊無效來簡化廢料收集。
在一些實施例中,裝置控制器及/或媒體轉譯層(例如,FTL)可判定資料結構的資料例如在儲存媒體的實體記憶體塊640-1……實體記憶體塊640-N內的位置。在一些實施例中,裝置控制器及/或媒體轉譯可管理用於一或多個資料結構(例如,FIFO緩衝器)的鏈接列表。舉例而言,當資料塊經讀取至緩衝器或自緩衝器寫入時,可更新頭指標及/或尾指標以適應新讀取或寫入的資料。頭指標及/或尾指標可儲存於例如FTL表中。在一些實施例中,資料結構的總大小可為使用具有塊修改(例如,擦除)特性的記憶體的儲存媒體中的塊大小的倍數。在一些實施例中,將依序寫入及/或讀取序列用於有序訪問資料結構可使得裝置控制器(例如,媒體轉譯層)能夠藉由僅儲存頭指標及尾指標來管理資料結構。取決於實施細節,此可減少或消除可用於邏輯至實體(例如,LBA至PBA)位址轉譯的較大資料結構。
表2示出根據本揭露的實例實施例的可用於管理一或多個資料結構的表的實施例的一些實例資料。表2可例如由裝置控制器及/或媒體轉譯層(例如,FTL)使用以管理儲存裝置中的FIFO緩衝器(例如,WORO-FIFO緩衝器)。出於說明的目的,表2中所示出的實施例可假設16千位元組的頁面大小及4兆的塊大小,但原理不限於任何特定實施細節,且可使用其他類型的資料結構。所述表可儲存於例如裝置記憶體中,諸如圖3中所示出的裝置記憶體322。
表2
| 緩衝器ID | 有效 | 總容量 | 當前佔用空間 | 當前自由空間 | 頭指標實體位址(HPPA) | 尾指標實體位址(TPPA) | 寫入頁面偏移 | 讀取頁面偏移 |
| 0 | Y | 4兆位元組 | 960千位元組 | 3136千位元組 | CH0, DEV0, 位址0x0000_1200 | CH0, DEV0, 位址0x0000_1200 | 64 | 4 |
| 1 | Y | 24兆位元組 | 24兆位元組 | 0 | CH5, DEV0, 位址0x0001_6000 | CH0, DEV0, 位址0x0001_6000 | 256 | 0 |
| 6 | Y | 8兆位元組 | 0 | 8兆位元組 | 0 | 0 | 0 | 0 |
| 14 | Y | 64兆位元組 | 32兆位元組 | 32兆位元組 | CH7, DEV0, 位址0x0003_8600 | CH3, DEV0, 位址0x0003_8600 | 256 | 256 |
| … |
參考表2,各列可含有與藉由第一行中的緩衝器ID識別的緩衝器相關的資訊。第二行可指示緩衝器ID當前是否有效(例如,對應緩衝器尚未被刪除)。第三行、第四行以及第五行可分別指示由緩衝器ID指示的緩衝器的當前總容量、當前佔用空間以及當前自由空間。第六行可包含用於對應緩衝器的頭指標實體位址(HPPA),對於含有緩衝器的儲存媒體(例如,快閃記憶體),所述頭指標實體位址可例如基於通道、記憶體裝置數目以及裝置內的位址來表示。第七行包含用於對應緩衝器的尾指標實體位址(TPPA),對於含有緩衝器的儲存媒體(例如,快閃記憶體),所述尾指標實體位址亦可例如基於通道、記憶體裝置數目以及裝置內的位址來表示。第八行可含有由TPPA指示的塊內的寫入頁面,且第九行可含有由HPPA指示的塊內的讀取頁面。在一些實施例中,讀取頁面偏移可被視為HPPA的部分,且寫入頁面偏移可被視為TPPA的部分。
在一些實施例中,儲存裝置控制器及/或媒體轉譯層可維持諸如表2的資料結構以追蹤儲存裝置中的儲存媒體內的緩衝器位置。諸如表2的資料結構可使得儲存裝置控制器及/或媒體轉譯層能夠追蹤PBA資訊以及頁面偏移值,以判定可將資料寫入(例如,推送)至給定緩衝器及/或自給定緩衝器讀取(例如,彈出)資料所在的記憶體位置。由緩衝器ID 6指示的緩衝器的HPPA、TPPA、寫入頁面偏移及/或讀取頁面偏移可為零,因為緩衝器可為空的,且因此,尚未針對緩衝器分配資料塊。
在一些實施例中,HPPA(其亦可稱為頭指標)可指示實體塊位址,其中應自所述實體塊位址讀取下一資料(例如,以服務來自主機的彈出命令)。讀取頁面偏移可在由HPPA指定的塊內提供頁碼,將自所述HPPA讀取資料。當讀取資料時,可在表2中更新讀取頁面偏移。當塊被完全讀出時,可在表2中例如使用塊指標(例如,諸如圖6中所示出的PBA-1的實體塊位址)更新HPPA,所述塊指標可嵌入於當前塊中且其可指向緩衝器中的下一實體記憶體塊。
在一些實施例中,TPPA(其亦可稱為尾指標)可指示下一自由記憶體位置的實體塊位址,其中可寫入資料(例如,以服務來自主機的推送命令)。寫入頁面偏移可在由TPPA指定的塊內提供頁碼,資料可在所述TPPA處寫入。當寫入資料時,可在表2中更新寫入頁面偏移。當由TPPA指定的當前塊變滿時,可分配(例如,從實體記憶體空間中的任何地方)新的自由記憶體塊作為下一記憶體塊,且下一塊的位址可嵌入於當前塊中(例如,以諸如圖5中所示出的PBA-1的實體塊位址的形式)。亦可在表2的對應TPPA行中更新新的塊位址。
在一些實施例中,且取決於實施細節,根據本揭露的實例實施例的使用具有有序訪問的資料結構(例如,FIFO緩衝器)的系統架構可減少由系統使用的記憶體(例如,DRAM)的量。在具有可執行LBA至PBA轉譯的FTL的儲存裝置中,FTL可維持可以頁面粒度追蹤位址的映射表。舉例而言,具有4千位元組的邏輯頁面大小及4兆位元組的擦除塊大小的儲存裝置以及可使用每邏輯頁面4位元組的映射表對於1太位元組儲存裝置的映射表可能需要約1吉位元組的記憶體開銷。相比之下,根據本揭露的實例實施例的具有相同頁面、塊以及位址大小但以FIFO緩衝器的形式實施儲存容量的儲存裝置可僅對於1太位元組儲存裝置的頭指標及/或尾指標的表使用約1兆位元組的記憶體。此外,在根據本揭露的實例實施例的以FIFO緩衝器的形式實施儲存容量的儲存裝置的情況下,可減少成本及/或功率消耗。
圖7示出根據本揭露的實例實施例的用於有序訪問資料結構的實體塊鏈接列表的實施例。圖7中所示出的實施例可實施例如具有HPPA(例如,頭指標)及TPPA(例如,尾指標)的FIFO緩衝器,所述HPPA可為緩衝器頭部處的實體記憶體塊提供實體位址,所述TPPA可為緩衝器尾部處的實體記憶體塊提供實體位址。圖7中所示出的塊可繪示為具有其各別實體位址,例如通道數目、記憶體裝置數目、裝置內的位址及/或類似者(例如,如表2中所繪示)。
實際資料結構(例如,FIFO緩衝器)749可佔用不以陰影繪示的塊750-1……塊750-N。當資料塊經添加至資料結構及/或自資料結構讀取時,資料結構可通常向下行進。因此,資料結構上方的陰影塊752-1及陰影塊752-2可能先前已成為資料結構的部分,但在自資料結構讀取(彈出)資料時被擦除。類似地,陰影塊754-1……陰影塊754-M可為等待分配至資料結構的空(例如,先前擦除的)塊。在一些實施例中,圖7中所繪示的實體塊可作為循環緩衝器操作,如由箭頭755所繪示。
圖8示出根據本揭露的實例實施例的有序訪問資料結構的另一實施例。在圖8中所示出的實施例中,第一有序訪問資料結構(例如,WORO-FIFO緩衝器)856-1可小於實體記憶體塊840。資料結構856-1可佔用實體記憶體塊840的以對角線陰影繪示的部分。資料結構856-1可在可由第一頭指標HPPA-1指向的第一頁面處開始。資料結構856-1可在可由第一尾指標TPPA-1指向的頁面處結束。在一些實施例中,用於管理資料結構856-1的頭指標、尾指標、寫入頁面偏移、讀取頁面偏移及/或其他資訊可維持於例如諸如表2的資料結構中。在此實例中,由於資料結構856-1擬合於實體記憶體塊840內,因此HPPA及TPPA的通道數目、記憶體裝置數目及/或類似者可相同,但寫入頁面偏移及讀取頁面偏移可不同。
圖8中亦示出的是由交叉影線陰影繪示的第二資料結構856-2(例如,第二WORO-FIFO緩衝器)的第一部分。第二資料結構856-2可在可由第二頭指標HPPA-2指向的第一頁面處開始。第二資料結構856-2可包含可佔用第二資料結構856-2的下一實體記憶體塊的實體塊位址PBA-2。
在一些實施例中,可藉由除鏈接列表以外的一或多種技術來實施有序訪問資料結構。舉例而言,在一些實施例中,裝置控制器及/或媒體轉譯層可維持分配諸如WORO-FIFO緩衝器的有序訪問資料結構的實體記憶體塊的實體位址的映射表。
圖9示出根據本揭露的實例實施例的用於有序訪問資料結構的資料預提取方案的實施例。圖9中所示出的實施例可用於例如實施本文中所揭露的資料儲存方案中的任一者,或可藉由所述資料儲存方案中的任一者實施。
在圖9中所示出的實施例中,塊可表示可映射至通道通道1、通道2……通道N的儲存媒體的個別實體記憶體塊。由相同資料結構(例如,FIFO或WORO-FIFO緩衝器)佔用的塊可具有相同類型的陰影。
在一些實施例中,可自一或多個資料結構,例如自由FIFO的頭指標指示的位置依序讀取資料。因此,待自資料結構讀取的下一資料的位置可為可預測的。圖9中所示出的實施例可採用此可預測性將來自一或多個有序訪問資料結構的資料預加載至記憶體922中的一或多個資料快取記憶體958-1……資料快取記憶體958-4(其亦可稱為預提取緩衝器或預讀取緩衝器)。舉例而言,儲存裝置中的裝置控制器及/或媒體轉譯層可自由第一類型的陰影指示的第一WORO-FIFO緩衝器的頭部預讀取資料且將其儲存至第一資料快取記憶體958-1中。類似地,裝置控制器及/或媒體轉譯層可分別自由其他類型的陰影指示的第二WORO-FIFO緩衝器至第四WORO-FIFO緩衝器的頭部預讀取資料,且將其分別儲存至資料快取記憶體958-2、資料快取記憶體958-3以及資料快取記憶體958-4中。在一些實施例中,由於FIFO工作負荷的依序特性,可存在主機請求的資料上的快取命中的相對較高機率。取決於實施細節,經快取資料可為可靠命中。因此,當主機發出用於資料結構中的一者中的資料的彈出命令時,所請求資料可存在於資料快取記憶體958-1……資料快取記憶體958-4中的一者中,其可使得所請求資料能夠自對應快取記憶體直接傳送至主機而非對應儲存媒體(例如,快閃記憶體)。取決於實施細節,此可減少潛時及/或改良與自例如儲存裝置中的儲存媒體讀取資料相關聯的QoS。
在一些實施例中,分配至特定資料結構(例如,FIFO或WORO-FIFO緩衝器)的記憶體塊可在不同通道上條帶化,如圖9中所繪示。取決於實施細節,在通道上對資料結構的資料進行條帶化可使得一或多個通道中的一或多個讀取操作與一或多個其他通道中的一或多個寫入(例如,程式化)操作重疊,其可藉此增加吞吐量。
在一些實施例中,寫入資料緩衝器960亦可包含於例如記憶體922中。寫入資料緩衝器960可用於例如暫時儲存來自主機的資料(例如,用於推送命令),同時將所述資料寫入(例如,程式化)至由資料結構(例如,由推送命令指定的WORO-FIFO緩衝器)佔用的資料塊中的一或多者中。
在可實施用於基於讀取資料來指示用於修改的資料的方案(例如,WORO方案)的一些實施例中,可在資料已被讀取之後不再訪問所述資料。因此,當例如在WORO-FIFO緩衝器的情況下依序讀取資料時,所述資料可經指示用於修改(例如,藉由將其標記用於擦除而使其無效)。在實施於儲存裝置中的一些實施例中,裝置控制器及/或媒體轉譯層可在塊的所有或幾乎所有已經無效時觸發塊上的廢料收集。
取決於實施細節,由於可在塊上依序執行讀取操作,因此整個塊可在頭指標穿過所述塊時無效,同時自可佔用所述塊的資料結構彈出資料。因此,在整個塊中可能不存在定位(例如,隨機地)的有效資料,且因此在廢料收集期間沒有理由將有效資料移動至另一塊以擦除所述塊。實情為,整個塊可在依序被讀取之後準備好進行擦除。與可能涉及對分散於整個塊中的有效資料執行廢料收集的讀取-擦除-修改-寫入程序相比,此可簡化及/或加速廢料收集程序。此外,藉由在廢料收集期間減少或消除有效資料的移動,可減少寫入放大(在一些情況下接近1)。因此,取決於實施細節,可減少由後台廢料收集操作引起的效能可變性及/或使原本已用於廢料收集的IO頻寬可用於資料I/O(例如,用於主機訪問)。此外,在一些實施例中,根據本揭露的實例實施例的用於基於讀取資料而使資料無效的方案可例如藉由減少或消除主機可發送以使資料無效的資料集管理修正命令而簡化主機操作。
作為另一潛在益處,WORO架構(例如,用於儲存裝置)可減少用於過度供應的空間的量,取決於實施細節,此可減少成本及/或功率消耗及/或可增加系統容量。舉例而言,無WORO架構的儲存裝置可能保留一定百分比(例如,約七個百分比)的可用容量用於廢料收集開銷。然而,由於可在具有根據本揭露的實例實施例的WORO架構的系統中減少廢料收集開銷,因此可減少用於廢料收集開銷的保留容量(例如,至約一個百分比),藉此減少儲存裝置的成本及/或增加其可用容量。
圖10示出根據本揭露的實例實施例的在塊修改記憶體中具有有序訪問資料結構的儲存裝置架構的實施例。圖10中所示出的實施例可用於實施本文中所揭露的包含圖1至圖9中所示出的彼等實施例的實施例中的任一者,或可藉由所述實施例中的任一者實施。
參考圖10,架構可包含一或多個命令佇列1062、裝置控制器1004、裝置記憶體1022及/或儲存媒體1002。裝置控制器1004可包含主機介面1018、命令邏輯1064、媒體轉譯層1020及/或媒體介面1024。
圖10中所示出的一或多個組件可具有可類似於圖3及/或圖4中所示出的一或多個對應組件的結構及/或功能,且可由以相同數位結束的參考標號指示。舉例而言,主機介面1018、媒體轉譯層1020、裝置記憶體1022、媒體介面1024及/或儲存媒體1002可類似於圖3及/或圖4中所示出的彼等。然而,裝置記憶體1022可用於儲存可例如使用諸如上文所描述的表2的表實施的媒體轉譯層(MTL)表1066。在一些實施例中,裝置記憶體1022可以類似於圖9中所示出的資料快取記憶體958-1……資料快取記憶體958-4的方式用於資料快取記憶體以用於自儲存媒體1002預提取資料。在一些實施例中,媒體轉譯層1020可包含用於實施如本文中所描述的WORO功能性的邏輯。在一些實施例中,裝置控制器1004及/或媒體轉譯層1020可包含類似於上文關於圖4所描述的緩衝邏輯430的用於實施有序訪問資料結構(例如,FIFO緩衝器)的邏輯。
參考圖10,一或多個命令佇列1062可例如藉由可位於主機處、儲存裝置處或其任何組合的NVMe提交佇列來實施。命令邏輯1064可包含用於實施一或多個命令的功能性(例如,命令剖析及/或執行邏輯),所述一或多個命令用於在根據本揭露的實例實施例的塊修改記憶體(例如,快閃記憶體)中實施有序訪問資料結構(例如,FIFO及/或WORO-FIFO緩衝器)。舉例而言,命令邏輯1064可包含用於實施上文關於表1所描述的任何數目個命令的功能性。
參考圖10所描述的包含命令邏輯1064、用於實施WORO功能性的邏輯及/或用於實施有序訪問資料結構的邏輯的功能性中的任一者可例如藉由硬體、軟體或其任何組合實施,包含組合邏輯、時序邏輯、一或多個計時器、計數器、暫存器、狀態機、揮發性記憶體(諸如DRAM及/或SRAM)、非揮發性記憶體(諸如快閃記憶體)、CPLD、FPGA、ASIC及/或執行儲存於任何類型的記憶體中的指令的處理器,及/或類似者,或其任何組合。
圖11示出根據本揭露的實例實施例的用於創建緩衝器的命令流的方法的實施例。圖11中所示出的實施例可用於例如實施上文關於表1所描述的創建緩衝器命令。方法可在操作1170-1處開始,主機可在操作1170-1處將創建緩衝器命令發送至儲存裝置。創建緩衝器命令可包含用於指定緩衝器ID及/或緩衝器大小的一或多個參數。在操作1170-2處,儲存裝置可接收創建緩衝器命令及一或多個參數。在操作1170-3處,儲存裝置處的裝置控制器及/或媒體轉譯層可藉由以下操作執行創建緩衝器命令:創建對應於緩衝器ID參數的緩衝器,基於緩衝器大小參數將儲存媒體的一或多個塊分配至緩衝器,以及將HPPA及/或TPPA初始化至用於緩衝器的開始實體塊位址。在一些實施例中,裝置控制器及/或媒體轉譯層可藉由新創建的緩衝器的緩衝器ID、緩衝器大小、HPPA、TPPA、寫入頁面偏移、讀取頁面偏移及/或類似者來填充MTL表(例如,類似於表2的表)中的條目(例如,對應於緩衝器ID的列)。在操作1170-4處,裝置控制器及/或媒體轉譯層可將指示創建緩衝器命令成功或失敗的完成返回至主機。
圖12示出根據本揭露的實例實施例的用於刪除緩衝器的命令流的方法的實施例。圖12中所示出的實施例可用於例如實施上文關於表1所描述的刪除緩衝器命令。方法可在操作1272-1處開始,主機可在操作1272-1處將刪除緩衝器命令發送至儲存裝置。刪除緩衝器命令可包含用於指定緩衝器ID的一或多個參數。在操作1272-2處,儲存裝置可接收刪除緩衝器命令及一或多個參數。在操作1272-3處,儲存裝置處的裝置控制器及/或媒體轉譯層可藉由以下操作執行刪除緩衝器命令:自對應於緩衝器ID參數的緩衝器解除分配儲存媒體的一或多個塊,及/或使對應於緩衝器ID的MTL表(例如,類似於表2的表)中的條目(例如,列)無效。在操作1272-4處,裝置控制器及/或媒體轉譯層可將指示刪除緩衝器命令成功或失敗的完成返回至主機。
圖13示出根據本揭露的實例實施例的用於將資料寫入至緩衝器的命令流的方法的實施例。圖13中所示出的實施例可用於例如實施上文關於表1所描述的推送命令。方法可在操作1374-1處開始,主機可在操作1374-1處將推送命令發送至儲存裝置。推送命令可包含用於指定緩衝器ID、資料傳送大小、主機記憶體中的資料源位址及/或類似者的一或多個參數。在操作1374-2處,儲存裝置可接收推送命令及一或多個參數。在操作1374-3處,儲存裝置處的裝置控制器及/或媒體轉譯層可藉由將對應於推送命令(其可例如使用DMA、RDMA及/或類似者在儲存裝置處接收)的資料寫入至在由TPPA及/或寫入頁面偏移(其可儲存於例如MTL表(例如,類似於表2的表)中)指示的塊處開始的儲存媒體的一或多個頁面來開始執行推送命令。在操作1374-4處,若在將資料寫入至儲存媒體的同時填充塊,則裝置控制器及/或媒體轉譯層可將新塊分配至緩衝器且將新塊的實體塊位址作為指標嵌入於先前塊中(例如,以形成鏈接列表)。在操作1374-5處,裝置控制器及/或媒體轉譯層可在完成寫入程序之後更新MTL表中緩衝器的TPPA及/或寫入頁面偏移。在操作1374-6處,裝置控制器及/或媒體轉譯層可將指示推送命令成功或失敗的完成返回至主機。
圖14示出根據本揭露的實例實施例的用於自緩衝器讀取資料的命令流的方法的實施例。圖14中所示出的實施例可用於例如實施上文關於表1所描述的彈出命令。方法可在操作1476-1處開始,主機可在操作1476-1處將彈出命令發送至儲存裝置。彈出命令可包含用於指定緩衝器ID、資料傳送大小、主機記憶體中的資料目的地位址及/或類似者的一或多個參數。在操作1476-2處,儲存裝置可接收彈出命令及一或多個參數。在操作1476-3處,儲存裝置處的裝置控制器及/或媒體轉譯層可藉由判定對應於緩衝器ID的預讀取緩衝器是否存在來開始執行彈出命令。若對應預讀取緩衝器存在,則方法可繼續進行至操作1476-5。
然而,若對應預讀取緩衝器不存在,則裝置控制器及/或媒體轉譯層可在操作1476-4處分配預讀取緩衝器用於緩衝器ID。裝置控制器及/或媒體轉譯層可接著執行資料預加載操作,例如圖15中所示出,以自緩衝器讀取所請求資料且將其儲存於預讀取緩衝器中。方法可接著繼續進行至操作1476-5。
在操作1476-5處,裝置控制器及/或媒體轉譯層可自預讀取緩衝器讀取所請求資料且例如使用DMA、RDMA及/或類似者將所述資料傳送至主機。在一些實施例中,裝置控制器及/或媒體轉譯層可在自預讀取緩衝器讀取資料之後使預讀取緩衝器中的所述資料無效。在操作1476-6處,裝置控制器及/或媒體轉譯層可將指示彈出命令成功或失敗的完成返回至主機。
圖15示出根據本揭露的實例實施例的用於自緩衝器預讀取資料的命令流的方法的實施例。圖15中所示出的實施例可用於例如實施在圖14中的操作1476-4處使用的資料預加載操作。
參考圖15,方法可在操作1578-1處開始,裝置控制器及/或媒體轉譯層可在操作1578-1處判定對應於緩衝器ID(例如,FIFO或WORO-FIFO緩衝器的緩衝器ID)的預讀取緩衝器是否滿。若緩衝器滿,則方法可在操作1578-1處循環,直至緩衝器不再滿,此時方法可繼續進行至操作1578-2。在操作1578-2處,裝置控制器及/或媒體轉譯層可自對應於緩衝器ID的緩衝器依序讀取在由HPPA(例如,頭指標)及/或讀取頁面偏移指示的位址處開始的資料且將其寫入至對應預讀取緩衝器。裝置控制器及/或媒體轉譯層可在讀取資料時更新HPPA及/或讀取頁面偏移。在一些實施例中,裝置控制器及/或媒體轉譯層亦可在讀取資料時使所述資料無效。
在操作1578-3處,裝置控制器及/或媒體轉譯層可判定是否已讀取整個塊。若否,則方法可繼續循環至操作1578-1及操作1578-2,直至已讀取整個塊,此時方法可繼續進行至操作1578-4。在操作1578-4處,媒體轉譯層可擦除所述塊(其中資料已在自塊讀取時依序無效)。在操作1578-5處,基於正讀取的整個塊,裝置控制器及/或媒體轉譯層可自先前塊提取下一塊的實體塊位址且使用其更新HPPA。方法可接著返回至操作1578-1。
圖16示出根據本揭露的實例實施例的主機設備的實例實施例。圖16中所示出的主機1600可用於實施本文中所揭露的主機功能性中的任一者。主機1600可藉由任何組件或組件的組合實施,諸如一或多個處理單元、一或多個用戶端、一或多個儲存伺服器、一或多個儲存節點及/或類似者,或其組合。
圖16中所示出的主機設備1600可包含處理器1602,其可包含記憶體控制器1604、系統記憶體1606、主機控制邏輯1608及/或通信介面1610。圖16中所示出的組件中的任一者或所有可經由一或多個系統匯流排1612通信。在一些實施例中,圖16中所示出的一或多個組件可使用其他組件實施。舉例而言,在一些實施例中,主機控制邏輯1608可由執行儲存於系統記憶體1606或其他記憶體中的指令的處理器1602實施。
主機控制邏輯1608可包含及/或實施本文中所揭露的主機功能性中的任一者,所述功能性包含發出命令(諸如關於表1所描述的彼等命令)、為應用程式、程序及/或如本文中所揭露的其他資料生產者及/或資料消費者提供平台,及/或類似者。
圖17示出根據本揭露的實例實施例的儲存裝置的實例實施例。圖17中所示出的儲存裝置1700可用於實施本文中所揭露的儲存裝置功能性中的任一者。儲存裝置1700可包含裝置控制器1702、媒體轉譯層1704、儲存媒體1706、資料結構訪問邏輯1716以及通信介面1710。圖17中所示出的組件可經由一或多個裝置匯流排1712通信。在可使用快閃記憶體用於儲存媒體1706中的一些或所有的一些實施例中,媒體轉譯層1704可部分或全部實施為快閃轉譯層(FTL)。
在一些實施例中,資料結構訪問邏輯1716可用於實施本文中所揭露的儲存裝置功能性中的任一者,所述功能性包含緩衝邏輯430、命令邏輯1064及/或與實施有序訪問資料結構、基於讀取資料指示用於修改的資料及/或類似者相關的任何功能性。
如上文所提及,本文中所描述的包含本文中所描述的主機功能性、儲存裝置功能性及/或類似者中的任一者的功能性中的任一者可藉由硬體、軟體或其任何組合來實施,包含組合邏輯、時序邏輯、一或多個計時器、計數器、暫存器、狀態機、揮發性記憶體(諸如DRAM及/或SRAM)、非揮發性記憶體及/或其任何組合、CPLD、FPGA、ASIC、執行儲存於任何類型的記憶體中的指令的包含CISC處理器(諸如x86處理器)及/或RISC處理器(諸如RISC-V處理器及/或ARM處理器)的CPU、GPU、NPU,及/或類似者。在一些實施例中,一或多個組件可實施為系統級晶片(SOC)。
圖18示出根據本揭露的實例實施例的用於訪問具有塊修改特性的記憶體中的資料的方法的實施例。方法可在操作1802處開始。在操作1804處,方法可在記憶體系統處接收對資料結構的寫入請求,其中記憶體系統包含具有塊修改特性的記憶體,且資料結構配置於記憶體中。舉例而言,記憶體可為諸如快閃記憶體的塊擦除記憶體,及/或資料結構可為諸如FIFO緩衝器的有序訪問資料結構。在操作1806處,方法可基於寫入請求將資料儲存於資料結構中。舉例而言,可基於自主機發送至儲存裝置的推送命令而儲存資料。在操作1808處,方法可在記憶體系統處接收對資料結構的讀取請求。舉例而言,可將彈出命令自主機發送至儲存裝置。在操作1810處,方法可基於讀取請求自資料結構讀取資料。舉例而言,可基於彈出命令自FIFO緩衝器讀取資料。在操作1812處,方法可基於讀取指示用於修改的資料。舉例而言,可例如藉由在廢料收集期間標記用於擦除而使資料無效。方法可在操作1814處結束。
圖18中所示出的實施例以及本文中所描述的所有其他實施例為實例操作及/或組件。在一些實施例中,可省略一些操作及/或組件,及/或可包含其他操作及/或組件。此外,在一些實施例中,操作及/或組件的時間及/或空間次序可變化。儘管一些組件及/或操作可示出為個別組件,但在一些實施例中,單獨繪示的一些組件及/或操作可整合至單一組件及/或操作中,及/或繪示為單一組件及/或操作的一些組件及/或操作可藉由多個組件及/或操作來實施。
上文所揭露的一些實施例已在各種實施細節的上下文中描述,但本揭露的原理不限於此等或任何其他特定細節。舉例而言,一些功能性已描述為藉由某些組件實施,但在其他實施例中,所述功能性可在不同位置中分佈於不同系統及組件之間且具有各種使用者介面。某些實施例已描述為具有特定程序、操作等,但此等術語亦涵蓋其中特定程序、操作等可藉由多個程序、操作等實施或其中多個程序、操作等可整合至單一程序、步驟等中的實施例。對組件或元件的提及可僅指組件或元件的一部分。舉例而言,對塊的提及可指整個塊或一或多個子塊。在本揭露及申請專利範圍中,諸如「第一」及「第二」的術語的使用可僅出於區分其修改的事物的目的,且除非自上下文另外顯而易見,否則可並不指示任何空間或時間次序。在一些實施例中,對事物的提及可指事物的至少一部分,例如,「基於」可指「至少部分地基於」及/或類似者。對第一元件的提及可能不暗示存在第二元件。本文中所揭露的原理具有獨立效用且可單獨地體現,且並非每一實施例皆可利用每一原理。然而,原理亦可以各種組合體現,所述各種組合中的一些可以協同方式放大個別原理的益處。
上文所描述的各種細節及實施例可經組合以產生根據此專利揭露內容的發明原理的額外實施例。由於可在不脫離本發明概念的情況下修改此專利揭露內容的發明原理的配置及細節,因此將此類改變及修改視為落入以下申請專利範圍的範疇內。
100:記憶體系統
102、922:記憶體
104、304、404:控制器
106:資料結構
108、408:資料生產者
110、410:資料消費者
212、214、216、536-1、536-2、536-3、536-4、1170-1、1170-2、1170-3、1170-4、1272-1、1272-2、1272-3、1272-4、1374-1、1374-2、1374-3、1374-4、1374-5、1374-6、1476-1、1476-2、1476-3、1476-4、1476-5、1476-6、1578-1、1578-2、1578-3、1578-4、1578-5、1802、1804、1806、1808、1810、1812、1814:操作
302、302a、302N、402、1002、1706:儲存媒體
317a:記憶體訪問命令
317b:邏輯位址
318、418、1018:主機介面
319:完成/回應
320、420、1020、1704:媒體轉譯層
321:後台操作
322、1022:裝置記憶體
323:使用者資料
324、1024:媒體介面
327、327a、327N:媒體匯流排
329、329a、329N:媒體通道
400、1700:儲存裝置
401、1600:主機
403:連接
406、406a、406b、406c、406N:WORO-FIFO緩衝器
430:緩衝邏輯
432a、432N、648:尾指標
434a、434N、644:頭指標
537-1、537-2、537-3、646-1、646-2、646-(M-1)、755:箭頭
640、640-1、640-2、640-3、640-4、640-5、640-6、640-7、640-8、640-14、640-15、640-16、640-17、640-N、840:實體記憶體塊
642-1、642-P:頁面
749:實際資料結構
750-1、750-2、750-(N-1)、750-N:塊
752-1、752-2、754-1、754-M:陰影塊
856-1:第一資料結構
856-2:第二資料結構
958-1、958-2、958-3、958-4:資料快取記憶體
960:寫入資料緩衝器
1004、1702:裝置控制器
1062:命令佇列
1064:命令邏輯
1066:媒體轉譯層表
1602:處理器
1604:記憶體控制器
1606:系統記憶體
1608:主機控制邏輯
1610、1710:通信介面
1612:系統匯流排
1712:裝置匯流排
1716:資料結構訪問邏輯
HPPA-1:第一頭指標
HPPA-2:第二頭指標
PBA-1、PBA-2、PBA-(M-1):實體塊位址
TPPA-1:第一尾指標
貫穿諸圖,出於說明性目的,圖式未必按比例繪製且類似結構或功能的元件可通常由相似附圖標號或其部分表示。圖式僅意欲促進對本文中所描述的各種實施例的描述。圖式並不描述本文中所揭露的教示的每一態樣且不限制申請專利範圍的範疇。為了防止圖式變得模糊,並非可繪示所有組件、連接以及類似者,且並非所有組件可具有附圖標號。然而,組件組態的圖案可自圖式容易地顯而易見。隨附圖式與本說明書一起示出本揭露的實例實施例,且與描述一起用來解釋本揭露的原理。
圖1示出根據本揭露的實例實施例的具有有序訪問的資料結構的記憶體系統的實施例。
圖2示出根據本揭露的實例實施例的用於訪問具有塊修改特性的記憶體的方法的實施例。
圖3示出根據本揭露的實例實施例的用於儲存裝置的控制器的架構的實施例。
圖4示出根據本揭露的實例實施例的有序訪問塊修改記憶體中的資料的儲存裝置的實例實施例。
圖5示出根據本揭露的實例實施例的用於訪問有序訪問資料結構的方法的實施例。
圖6示出根據本揭露的實例實施例的用於有序資料結構的邏輯資料佈局的實例實施例。
圖7示出根據本揭露的實例實施例的用於有序訪問資料結構的實體塊鏈接列表的實施例。
圖8示出根據本揭露的實例實施例的有序訪問資料結構的另一實施例。
圖9示出根據本揭露的實例實施例的用於有序訪問資料結構的資料預提取方案的實施例。
圖10示出根據本揭露的實例實施例的在塊修改記憶體中具有有序訪問資料結構的儲存裝置架構的實施例。
圖11示出根據本揭露的實例實施例的用於創建緩衝器的命令流的方法的實施例。
圖12示出根據本揭露的實例實施例的用於刪除緩衝器的命令流的方法的實施例。
圖13示出根據本揭露的實例實施例的用於將資料寫入至緩衝器的命令流的方法的實施例。
圖14示出根據本揭露的實例實施例的用於自緩衝器讀取資料的命令流的方法的實施例。
圖15示出根據本揭露的實例實施例的用於自緩衝器預讀取資料的命令流的方法的實施例。
圖16示出根據本揭露的實例實施例的主機設備的實例實施例。
圖17示出根據本揭露的實例實施例的儲存裝置的實例實施例。
圖18示出根據本揭露的實例實施例的用於訪問具有塊修改特性的記憶體中的資料的方法的實施例。
1802、1804、1806、1808、1810、1812、1814:操作
Claims (20)
- 一種方法,包括: 在記憶體系統處接收對資料結構的寫入請求,其中所述記憶體系統包括具有塊修改特性的記憶體,且所述資料結構配置於所述記憶體中; 基於所述寫入請求將資料儲存於所述資料結構中; 在所述記憶體系統處接收對所述資料結構的讀取請求; 基於所述讀取請求自所述資料結構讀取所述資料;以及 基於所述讀取指示用於修改的所述資料。
- 如請求項1所述的方法,其中所述寫入請求為第一寫入請求,且所述資料為第一資料,所述方法更包括: 在所述記憶體系統處接收對所述資料結構的第二寫入請求,其中所述第一寫入請求及所述第二寫入請求具有次序; 基於所述第二寫入請求將第二資料儲存於所述資料結構中;以及 基於所述讀取請求基於所述次序判定所述第一資料; 其中所述讀取進一步基於所述判定。
- 如請求項2所述的方法,其中所述資料結構儲存於所述記憶體的一或多個邏輯連續塊中。
- 如請求項3所述的方法,其中所述記憶體的所述一或多個邏輯連續塊包括鏈接列表。
- 如請求項2所述的方法,其中所述資料結構包括先進先出(FIFO)結構。
- 如請求項2所述的方法,其中所述資料結構為第一資料結構,所述讀取請求為第一讀取請求,且所述第一資料結構儲存於所述記憶體的塊中,所述方法更包括: 將第二資料結構的至少一部分儲存於所述記憶體的所述塊中; 在所述記憶體系統處接收對所述第二資料結構的第二讀取請求; 基於所述第二讀取請求自所述第二資料結構讀取第三資料;以及 基於所述讀取所述第三資料而指示用於修改的所述第三資料。
- 如請求項2所述的方法,更包括: 基於所述次序提取所述第一資料;以及 將所述第一資料儲存於緩衝器中。
- 如請求項2所述的方法,更包括基於所述指示修改所述記憶體的塊。
- 如請求項2所述的方法,更包括: 藉由所述記憶體系統使用尾指標來訪問所述資料結構;以及 基於所述儲存所述第一資料而更新所述尾指標。
- 如請求項9所述的方法,更包括: 藉由所述記憶體系統使用頭指標來訪問所述資料結構;以及 基於所述讀取所述第一資料而更新所述頭指標。
- 如請求項1所述的方法,更包括基於所述讀取自所述記憶體系統返回所述資料。
- 一種系統,包括: 記憶體系統,包括具有塊修改特性的記憶體; 資料生產者;以及 資料消費者; 其中所述資料生產者經組態以將對所述記憶體中的資料結構的寫入請求發送至所述記憶體系統;以及 其中所述資料消費者經組態以將對所述資料結構的讀取請求發送至所述記憶體系統;以及 其中所述記憶體系統經組態以: 基於所述寫入請求將資料儲存於所述資料結構中; 基於所述讀取請求對所述資料執行讀取操作;以及 基於所述讀取操作指示用於修改的所述資料。
- 如請求項12所述的系統,其中所述寫入請求為第一寫入請求,且所述資料為第一資料,且其中: 所述資料生產者進一步經組態以將對所述資料結構的第二寫入請求發送至所述記憶體系統,其中所述第一寫入請求及所述第二寫入請求具有次序; 所述記憶體系統進一步經組態以: 基於所述第二寫入請求將第二資料儲存於所述資料結構中;以及 基於所述讀取請求基於所述次序對所述第一資料執行判定;以及 所述讀取操作進一步基於所述判定。
- 如請求項13所述的系統,其中所述記憶體系統進一步經組態以: 基於所述次序提取所述第一資料;以及 將所述第一資料儲存於緩衝器中。
- 如請求項12所述的系統,其中所述記憶體系統進一步經組態以將所述資料結構儲存於所述記憶體的一或多個邏輯連續塊中。
- 一種儲存裝置,包括: 儲存媒體;以及 控制器,經組態以: 在所述儲存媒體中接收對資料結構的第一寫入請求; 基於所述第一寫入請求將第一資料儲存於所述資料結構中; 接收對所述資料結構的第二寫入請求,其中所述第一寫入請求及所述第二寫入請求具有次序; 基於所述第二寫入請求將第二資料儲存於所述資料結構中; 接收對所述資料結構的讀取請求; 基於所述讀取請求基於所述次序對所述第一資料執行判定。
- 如請求項16所述的儲存裝置,其中所述控制器進一步經組態以: 基於所述判定自對來所述資料結構的所述第一資料執行讀取操作;以及 基於所述讀取操作自所述儲存裝置返回所述第一資料。
- 如請求項17所述的儲存裝置,其中: 所述儲存媒體具有塊修改特性;以及 所述控制器進一步經組態以基於所述讀取操作提供用於修改的所述第一資料的指示。
- 如請求項16所述的儲存裝置,其中所述控制器進一步經組態以將所述資料結構儲存於所述儲存媒體的一或多個邏輯連續塊中。
- 如請求項16所述的儲存裝置,其中所述控制器進一步經組態以: 接收命令;以及 基於所述命令對所述資料結構執行修改。
Applications Claiming Priority (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202163257555P | 2021-10-19 | 2021-10-19 | |
| US63/257,555 | 2021-10-19 | ||
| US202263321086P | 2022-03-17 | 2022-03-17 | |
| US63/321,086 | 2022-03-17 | ||
| US17/748,018 US20230120184A1 (en) | 2021-10-19 | 2022-05-18 | Systems, methods, and devices for ordered access of data in block modified memory |
| US17/748,018 | 2022-05-18 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW202333059A true TW202333059A (zh) | 2023-08-16 |
Family
ID=83690344
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111137715A TW202333059A (zh) | 2021-10-19 | 2022-10-04 | 有序訪問塊修改記憶體中的資料的系統和方法及儲存裝置 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US20230120184A1 (zh) |
| EP (1) | EP4170506A1 (zh) |
| KR (1) | KR20230055978A (zh) |
| CN (1) | CN115993930A (zh) |
| TW (1) | TW202333059A (zh) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2024128715A (ja) * | 2023-03-10 | 2024-09-24 | キオクシア株式会社 | メモリシステム |
| DE102023114606B4 (de) * | 2023-06-02 | 2025-01-30 | Hyperstone Gmbh | Verfahren und speichercontroller zum optimeren eines zugriffsschemas für speicherzugriffe eines hosts auf einen datenspeicher |
| CN116931845B (zh) * | 2023-09-18 | 2023-12-12 | 新华三信息技术有限公司 | 一种数据布局方法、装置及电子设备 |
| KR20250058315A (ko) * | 2023-10-23 | 2025-04-30 | 에스케이하이닉스 주식회사 | 리드 리클레임을 수행하는 메모리 시스템 |
| CN118113230B (zh) * | 2024-04-23 | 2024-07-12 | 沐曦集成电路(上海)有限公司 | 一种基于地址重映射的读存储器数据的方法 |
| CN119376629A (zh) * | 2024-10-18 | 2025-01-28 | 武汉船舶通信研究所(中国船舶集团有限公司第七二二研究所) | 一种可随机地址访问的先进先出存储器以及数据处理方法 |
| CN119759280B (zh) * | 2024-12-18 | 2025-10-24 | 山东华芯半导体有限公司 | 一种基于软硬融合引擎的数据通路系统、方法、装置和介质 |
| CN121255685A (zh) * | 2025-12-03 | 2026-01-02 | 知合行一技术(上海)有限公司 | 一种dma访存请求处理方法及装置 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2011063832A1 (en) * | 2009-11-25 | 2011-06-03 | Telefonaktiebolaget L M Ericsson (Publ) | Addressable fifo |
| US9769092B2 (en) * | 2010-01-18 | 2017-09-19 | Marvell International Ltd. | Packet buffer comprising a data section and a data description section |
| CN106537858B (zh) * | 2014-08-07 | 2019-07-19 | 华为技术有限公司 | 一种队列管理的方法和装置 |
| WO2018009240A2 (en) * | 2015-11-12 | 2018-01-11 | University Of Rochester | Superconducting system architecture for high-performance energy-efficient cryogenic computing |
| DE102017124805B4 (de) * | 2017-10-24 | 2019-05-29 | Infineon Technologies Ag | Speicheranordnung und verfahren zum zwischenspeichern von speicherinhalten |
| US11392499B2 (en) * | 2020-09-18 | 2022-07-19 | Kioxia Corporation | Dynamic buffer caching of storage devices |
-
2022
- 2022-05-18 US US17/748,018 patent/US20230120184A1/en not_active Abandoned
- 2022-10-04 TW TW111137715A patent/TW202333059A/zh unknown
- 2022-10-11 EP EP22200856.7A patent/EP4170506A1/en active Pending
- 2022-10-13 CN CN202211253249.4A patent/CN115993930A/zh active Pending
- 2022-10-17 KR KR1020220133540A patent/KR20230055978A/ko active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| EP4170506A1 (en) | 2023-04-26 |
| CN115993930A (zh) | 2023-04-21 |
| US20230120184A1 (en) | 2023-04-20 |
| KR20230055978A (ko) | 2023-04-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TW202333059A (zh) | 有序訪問塊修改記憶體中的資料的系統和方法及儲存裝置 | |
| CN113508368B (zh) | 存储器子系统及其操作方法 | |
| US11263149B2 (en) | Cache management of logical-physical translation metadata | |
| US7613876B2 (en) | Hybrid multi-tiered caching storage system | |
| US8694754B2 (en) | Non-volatile memory-based mass storage devices and methods for writing data thereto | |
| CN100483366C (zh) | 闪速存储器控制器高速缓存架构 | |
| KR101790913B1 (ko) | 플래시 메모리에 저장된 데이터의 추론적 프리페칭 | |
| CN112930520B (zh) | 用于使用以太网驱动器及以太网络开放通道驱动器存储数据的系统及方法 | |
| KR102663304B1 (ko) | 구역 네임스페이스 디바이스들에서의 판독 처리 | |
| JP2015518987A (ja) | フラッシュストレージのためのi/oアクセスパターンの特殊化 | |
| US11914520B2 (en) | Separate read-only cache and write-read cache in a memory sub-system | |
| CN113614702B (zh) | 基于检测到的读取命令活跃流的自适应预读高速缓存管理器 | |
| TW202318205A (zh) | 記憶體系統及資料輸入輸出系統 | |
| CN113711193A (zh) | 用以存取存储器子系统中的高速缓存数据的队列中的优先级调度 | |
| CN116795736A (zh) | 数据预读取方法、装置、电子设备和存储介质 | |
| KR20240006427A (ko) | 스토리지 장치 내의 참조 업데이트에 기반한 리클레임 유닛을 사용하기 위한 시스템들, 방법들, 및 장치들 | |
| US11126558B2 (en) | Data storage device and control method for non-volatile memory | |
| KR20220065817A (ko) | 하이브리드 dimm의 전송 파이프라인에서의 데이터 의존도 관리 | |
| CN114746848B (zh) | 用于存储装置的高速缓存架构 | |
| CN117312188A (zh) | 混合ssd数据缓存预取系统及方法 | |
| CN110968525B (zh) | Ftl提供的缓存、其优化方法与存储设备 | |
| CN119201783A (zh) | 无dram存储设备低延迟处理读命令的方法 |