TW202221511A - 多串流記憶體系統以及在多串流記憶體系統中處理輸入串流的方法 - Google Patents

多串流記憶體系統以及在多串流記憶體系統中處理輸入串流的方法 Download PDF

Info

Publication number
TW202221511A
TW202221511A TW110139903A TW110139903A TW202221511A TW 202221511 A TW202221511 A TW 202221511A TW 110139903 A TW110139903 A TW 110139903A TW 110139903 A TW110139903 A TW 110139903A TW 202221511 A TW202221511 A TW 202221511A
Authority
TW
Taiwan
Prior art keywords
stream
data processing
processing engine
data
memory system
Prior art date
Application number
TW110139903A
Other languages
English (en)
Inventor
楊靖
楊靜珮
瑞克哈 皮茲馬尼
Original Assignee
南韓商三星電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW202221511A publication Critical patent/TW202221511A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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 (AREA)

Abstract

一種多串流記憶體系統包括:裝置內資料處理器,包括第一資料處理引擎及第二資料處理引擎;控制器處理器;以及處理器記憶體,耦合至所述控制器處理器,其中所述處理器記憶體上儲存有指令,當由所述控制器處理器執行時,所述指令使所述控制器處理器實行:辨識輸入串流的串流辨識碼(ID);基於串流指派表將所述第一資料處理引擎辨識為與所述串流ID相關聯;以及將所述第一資料處理引擎應用於所述輸入串流以產生經處理資料。

Description

基於串流辨識碼之導入固態硬碟數據處理引擎選擇系統以及方法
本發明的態樣是有關於記憶體裝置領域。
固態驅動機/固態硬碟(solid-state drive/solid-state disk,SSD)是一種使用積體電路(integrated circuit,IC)組合件作為記憶體來持久地儲存資料的固態儲存裝置。SSD技術通常利用與傳統區塊輸入/輸出(input/output,I/O)硬碟驅動機(hard disk drive,HDD)相容的電子介面,藉此在諸多常見應用中提供容易的替換。
一個被稱為「多串流SSD」的概念為作業系統及應用提供分開儲存具有不同屬性的資料的介面。該些各別的資料儲存被稱為「串流」。串流可用於指示不同的資料寫入何時彼此相關聯或具有相似的壽命。即,一組各別的資料寫入可為集合串流的一部分,且每一串流由作業系統或對應應用所指派的串流辨識碼(identifier,ID)來辨識。因此,具有相似特性或屬性的不同資料可各自被指派唯一的串流ID,進而使得對應於所述串流ID的資料可被寫入至SSD中的同一區塊。
目前,一些SSD容許例如SSD內資料的壓縮或加密等裝置側處理(device-side processing)。在SSD中處理資料可提供諸多益處,例如以可對應用透明的方式減少主機側處理時間及中央處理單元(Central processing Unit,CPU)/記憶體消耗。
相關技術的SSD以相同的方式處置所有傳入資料(例如具有不同串流ID的資料)。舉例而言,所有傳入資料可被壓縮及/或加密,而無論源或串流ID如何。然而,通常並非所有資料皆需要壓縮或加密。舉例而言,由於元資料費用(metadata overhead),壓縮已壓縮的資料可能導致大於原始資料大小,且由資料處理導致的臨時資料可能不需要加密。
此外,壓縮及加密需求可能因應用而異。舉例而言,一些應用可能受益於高壓縮比,而其他應用可能受益於高壓縮速度。然而,由於例如高壓縮演算法具有慢的壓縮速度,因此可能一般無法同時達成該些效果。此外,不同的應用可能需要不同的加密強度,例如R-S-A三氏不對稱(Rivest-Shamir-Adleman,RSA)或先進加密標準(Advanced Encryption Standard,AES)。因此,在SSD處以相同的方式處置所有傳入串流可能引入效率低下及非期望結果。
先前技術章節中所揭露的以上資訊僅用於增強對本發明的理解,且因此其可能含有不形成此項技術中具有通常知識者已知的先前技術的資訊。
本揭露的實施例的態樣是針對能夠基於傳入資料的串流ID進行導入SSD(in-SSD)資料處理引擎選擇的多串流記憶體系統。在一些實施例中,多串流記憶體系統藉由當資料串流可能無法受益於壓縮時繞過壓縮引擎及/或藉由當資料串流可能無法受益於加密時繞過加密引擎來改善效能並降低功耗。
根據本發明的實施例,提供一種多串流記憶體系統,所述多串流記憶體系統包括:裝置內資料處理器,包括第一資料處理引擎及第二資料處理引擎;控制器處理器;以及處理器記憶體,耦合至所述控制器處理器,其中所述處理器記憶體上儲存有指令,當由所述控制器處理器執行時,所述指令使所述控制器處理器實行:辨識輸入串流的串流ID;基於串流指派表將所述第一資料處理引擎辨識為與所述串流ID相關聯;以及將所述第一資料處理引擎應用於所述輸入串流以產生經處理資料。
在一些實施例中,其中所述串流指派表將包括所述串流ID的多個串流ID映射至包括所述第一資料處理引擎及所述第二資料處理引擎的多個資料處理引擎。
在一些實施例中,所述第一資料處理引擎被配置以實行不同於所述第二資料處理引擎的操作。
在一些實施例中,所述第一資料處理引擎實行壓縮、加密、重複刪除、搜尋及圖形處理中的至少一者。
在一些實施例中,所述指令進一步使所述控制器處理器實行:基於所述串流指派表將所述第二資料處理引擎辨識為不與所述串流ID相關聯;以及因應於所述辨識所述第二資料處理引擎,針對所述經處理資料繞過所述第二資料處理引擎。
在一些實施例中,所述指令進一步使所述控制器處理器實行:基於所述串流指派表將所述第二資料處理引擎辨識為與所述串流ID相關聯;以及因應於所述辨識所述第二資料處理引擎,將所述第二資料處理引擎應用於所述經處理資料。
在一些實施例中,所述裝置內資料處理器位於包括所述處理器記憶體及所述控制器處理器的所述多串流記憶體系統的固態驅動機(SSD)內部且與所述固態驅動機(SSD)整合。
在一些實施例中,所述串流指派表將包括所述串流ID的多個串流ID映射至所述多串流記憶體系統的一或多個記憶體裝置內的多個物理位址。
在一些實施例中,所述指令進一步使所述控制器處理器實行:基於所述串流指派表辨識與所述串流ID相關聯的物理位址;以及將所述經處理資料儲存於所述多串流記憶體系統的記憶體裝置內的所述物理位址處。
在一些實施例中,所述指令進一步使所述控制器處理器實行:產生與所述經處理資料相關聯的元資料,所述元資料指示將所述第一資料處理引擎應用於所述輸入串流;以及將所述元資料與所述經處理資料一起儲存於所述多串流記憶體系統的記憶體裝置內的所述物理位址處。
在一些實施例中,應用所述第一資料處理引擎及所述第二資料處理引擎中被辨識的一者包括:由第一壓縮引擎壓縮所述輸入串流以產生經壓縮資料,且其中所述指令進一步使所述控制器處理器實行:監控所述經壓縮資料的壓縮比;確定所述壓縮比低於臨限值;以及因應於所述確定,針對所述輸入串流的其餘部分繞過所述第一資料處理引擎及所述第二資料處理引擎中被辨識的所述一者。
在一些實施例中,所述指令進一步使所述控制器處理器實行:向主機提供所述串流指派表,所述主機是所述輸入串流的源。
根據本發明的實施例,提供一種多串流記憶體系統,所述多串流記憶體系統包括:裝置內資料處理器,包括資料處理引擎;控制器處理器;以及處理器記憶體,耦合至所述控制器處理器,其中所述處理器記憶體上儲存有指令,當由所述控制器處理器執行時,所述指令使所述控制器處理器實行:辨識第一輸入串流的第一串流ID;辨識第二輸入串流的第二串流ID;基於串流指派表確定所述第一串流ID與所述資料處理引擎相關聯;將所述資料處理引擎應用於所述第一輸入串流;以及針對所述第二輸入串流繞過所述資料處理引擎。
在一些實施例中,所述指令進一步使所述控制器處理器實行:基於所述串流指派表確定所述第二串流ID不與所述資料處理引擎相關聯。
在一些實施例中,所述串流指派表將包括所述第一串流ID及所述第二串流ID的多個串流ID映射至所述多串流記憶體系統的一或多個記憶體裝置內的多個物理位址。
在一些實施例中,所述指令進一步使所述控制器處理器實行:基於所述串流指派表辨識與所述第二串流ID相關聯的物理位址;以及將所述第二輸入串流儲存於所述多串流記憶體系統的記憶體裝置內的所述物理位址處。
根據本發明的實施例,提供一種在多串流記憶體系統中處理輸入串流的方法,所述方法包括:辨識輸入串流的串流ID;基於串流指派表將裝置內資料處理器的第一資料處理引擎辨識為與所述串流ID相關聯,所述裝置內資料處理器包括第二資料處理引擎;以及將所述第一資料處理引擎應用於所述輸入串流以產生經處理資料。
在一些實施例中,所述串流指派表將包括所述串流ID的多個串流ID映射至包括所述第一資料處理引擎及所述第二資料處理引擎的多個資料處理引擎。
在一些實施例中,所述方法更包括:基於所述串流指派表將所述第二資料處理引擎辨識為不與所述串流ID相關聯;以及因應於所述辨識所述第二資料處理引擎,針對所述經處理資料繞過所述第二資料處理引擎。
在一些實施例中,所述方法更包括:自主機接收所述輸入串流,其中所述主機將所述輸入串流與所述串流ID相關聯。
藉由參照對實施例的以下詳細說明及隨附圖式,可更容易地理解本發明概念的特徵以及達成所述特徵的方法。在下文中,將參照隨附圖式更詳細地闡述示例性實施例,在所有隨附圖式中,相同的參考編號指代相同的元件。然而,本發明可以各種不同的形式實施,且不應被解釋為僅限於本文中的所示實施例。相反,提供該些實施例作為實例以使本揭露將透徹及完整,且將向熟習此項技術者充分傳達本發明的態樣及特徵。因此,對於此項技術中具有通常知識者而言,可不闡述對於完全理解本發明的態樣及特徵而言並非必要的製程、元件及技術。除非另外指明,否則在所有所附圖式及書面說明通篇中,相同的參考編號表示相同的元件,且因此,將不再對其予以贅述。在圖式中,為清晰起見,可誇大元件、層及區的相對大小。
除非另外定義,否則本文中所使用的所有用語(包括技術性及科學性用語)具有與本發明所屬技術中具有通常知識者所通常理解的含義相同的含義。應進一步理解,除非本文中明確如此定義,否則用語(例如在常用辭典中定義的用語)應被解釋為具有與其在相關技術及/或本說明書的上下文中的含義一致的含義,且不應以理想化或過於正式的意義來解釋。
在相關技術的儲存堆疊中,來自不同應用的主機資料在發送至固態驅動機(SSD)之前被混合。若啟用SSD壓縮或加密引擎,則所有資料皆在相關技術的SSD內部被壓縮或加密。若已知資料集具有低壓縮比或者不需要加密,則可藉由管理命令關閉壓縮/加密引擎。然而,由於相關技術的SSD中存在僅一個資料串流,因此即使當其他應用可能已受益於SSD處的壓縮/加密處理時,關閉壓縮/加密引擎亦會影響來自該些其他應用的資料。
因此,本揭露的態樣提供一種多串流記憶體系統(例如,多串流快閃驅動機),所述多串流記憶體系統包括壓縮引擎及/或加密引擎且能夠針對可能無法受益於壓縮及/或加密的資料串流選擇性地繞過壓縮引擎及/或加密引擎。在一些實施例中,多串流記憶體系統能夠基於應用需求選擇適當的資料處理引擎(例如,壓縮引擎或加密引擎)。在一些實施例中,多串流記憶體系統基於串流的串流ID選擇性地壓縮及/或加密所述串流,串流ID可由主機或多串流記憶體系統指派。根據一些實施例,多串流記憶體系統的控制器可基於對應資料串流的壓縮比及/或壓縮速度自動地判斷是否應壓縮資料串流。
圖1是示出根據本揭露一些實施例的具有導入SSD資料處理的多串流記憶體系統的方塊圖。圖2是示出根據本揭露一些實施例的實例,在所述實例中,多串流記憶體系統針對特定串流繞過SSD內的裝置內資料處理引擎,同時針對其他串流實行裝置內資料處理。圖3是示出根據本揭露一些實施例的利用中間軟體(例如,中間體(mid-ware))資料處理的多串流記憶體系統的方塊圖。
參照圖1,在一些實施例中,多串流記憶體系統10包括與主機20進行資料通訊的具有裝置內資料處理的多串流SSD(例如,多串流快閃驅動機)100。多串流SSD 100包括SSD控制器110、位於多串流SSD 100內部且與其整合的裝置內資料處理器120、以及包括多個記憶體裝置130-1至130-M(其中M是大於1的整數)的非揮發性記憶體。在一些實例中,記憶體裝置130可為快閃記憶體裝置(例如,反及(NAND)快閃記憶體裝置)。
SSD控制器110藉由多個串流1至N(其中N是大於1的整數)促進主機20與SSD 100之間的資料傳送。在一些實施例中,SSD控制器110包括主機介面層112及快閃轉譯層(flash translation layer,FTL)114。主機介面層112自主機20抓取應用I/O請求,將I/O請求轉譯成SSD內部讀取/寫入交易,並將其排程至FTL 114。快閃轉譯層(FTL)114充當主機20的基於扇區的檔案系統與SSD 100的記憶體裝置130之間的轉譯層。主機介面層112及FTL 114可在軟體及/或硬體中實施。FTL 114向主機側上的作業系統及檔案系統提供對記憶體裝置130的存取,並確保其作為一個區塊儲存裝置起作用(或出現)。在一些實例中,FTL 114藉由透過在邏輯至物理(logical to physical,LtoP)表中將主機的邏輯位址映射至快閃記憶體的物理位址來提供至快閃記憶體裝置130的邏輯區塊介面而隱藏快閃的複雜性。
資料處理器120充當SSD 100內的嵌入式電腦,且對傳入及傳出資料串流實行例如壓縮/解壓縮、加密/解密、搜尋操作及/或圖形處理等裝置內資料處理。資料處理器120將處理移位至靠近於資料所儲存於的位置,且因此減少移動資料的需要,此在時間及能量方面可能是昂貴的操作。舉例而言,當運行搜尋時,正常情況下,儲存裝置上的大量資料將必須移動至主機,並在主機上進行搜尋。然而,藉由利用裝置內資料處理器120,可將查詢發送至SSD 100本身,且讓資料處理器120實行搜尋,且簡單地返回結果。如圖1中所示,資料處理器120可包括一或多個壓縮引擎122、一或多個加密引擎124、一或多個重複刪除引擎125、一或多個搜尋引擎126及/或一或多個圖形處理引擎128。然而,本發明的實施例不限於此,且資料處理器120內可含有任何適合的引擎。在一些實例中,所述一或多個壓縮引擎122可實行brotli、gzip、libdeflate、lzfse及zstd壓縮中的至少一者,且所述一或多個加密引擎124可實行chacha20-ietf、aes-256-gcm、aes-256-cfb、aes-256-ctr及camellia-256-cfb加密中的至少一者。
根據一些實施例,SSD控制器110基於串流的串流ID選擇性地將資料處理應用於串流。在多串流SSD中,每一輸入/輸出串流可由可被編碼於I/O命令中(例如,由主機)的唯一串流ID來辨識。SSD控制器110可基於串流指派表為給定串流ID啟用或禁用特定資料處理引擎,所述串流指派表將每一串流ID映射至欲由SSD 100採取的一或多個動作。所述動作可例如包括資料放置、壓縮、加密、搜尋及圖形處理。在一些實施例中,串流指派表被編碼於SSD 100的韌體中,且被製作成對主機20可用。因此,在主機20上運行的每一應用可確定用於其預期目的的適當的串流ID。
下表1示出支援8個串流的多串流SSD 100中的串流指派表的實例。
表1:
串流編號 1 2 3 4 5 6 7 8
目的 資料放置 資料放置 資料放置 資料放置 資料放置 資料放置 資料放置 資料放置
壓縮引擎1 壓縮引擎2 壓縮引擎3 加密引擎1 加密引擎2 搜尋引擎 壓縮引擎1  
            加密引擎2  
如表1中所示,每一串流ID可與SSD 100處的特定物理位址相關聯。舉例而言,每一串流ID可與快閃記憶體裝置130中不同的一者相關聯。然而,本揭露的實施例不限於此,且二或更多個串流ID可與SSD 100內的單一物理位址或記憶體裝置130相關聯。另外,每一串流ID可與一或多個資料處理引擎相關聯,或者不與任何資料處理引擎相關聯。舉例而言,在表1中,串流ID 1至3與壓縮引擎1至3相關聯,串流ID 7與壓縮引擎1和加密引擎2二者相關聯,且串流ID 8不與任何裝置內處理引擎相關聯。
在一些實施例中,當資料串流到達SSD 100時,SSD控制器110(例如,主機介面層112)檢查傳入資料的串流ID,且基於串流指派表確定將資料引導至何種引擎,且若未為串流ID指定引擎,則完全繞過資料處理器120(即,不應用資料處理器120中的引擎中的任一者)。表1所示實例中針對串流8繞過壓縮及加密引擎亦在圖2中可見。
在一些實施例中,在應用適當的資料處理引擎之後,SSD控制器110利用適當的引擎ID來標記經處理資料的每一單元,且繼續將資料儲存於記憶體裝置130中的對應位置,所述對應位置是基於串流指派表中所指示的對應資料放置。在一些實例中,一旦資料單元被資料處理器120處理(例如,被壓縮及/或加密),FTL 114便將對應的引擎ID記錄於經處理資料的元資料中,並將其與經處理資料一起儲存於對應的記憶體裝置中。在一些實例中,資料單元可為符合FTL中的映射條目大小(例如,4千位元組)的邏輯頁面或一組頁面。
當主機20發送對所儲存資料的讀取請求時,SSD控制器110(例如,FTL 114)基於其元資料確定對所儲存資料實行了何種操作,並引導資料處理器120實行相反的操作。舉例而言,當資料處理器120在寫入操作期間壓縮/加密特定串流資料時,SSD控制器110在資料被主機20讀回時自動地指令資料處理器120對所述資料進行解壓縮/解密。
串流指派表的知識容許主機20的應用在其對主機20及/或SSD 100有益時選擇適當的導入SSD處理,且在此種操作對主機20或SSD 100幾乎沒有益處乃至沒有益處時繞過(例如,不應用)導入SSD資料處理。作為實例,在表1及圖2所示情形中,當來自應用8(在圖2中示出)的資料具有低壓縮比,進而使得SSD 100可能無法受益於壓縮來自應用8的資料時,應用可選擇使用繞過(例如,不應用)資料處理器120的壓縮引擎的串流ID 8,從而改善多串流SSD 100的效能(例如,增加頻寬)。
如表1中所示,在一些實例中,資料處理器120可包括不同類型的壓縮引擎(例如,deflate(RFC-1951)、ZLIB(RFC-1950)、GZIP(RFC-1952)等)及/或不同類型的加密引擎(例如,RSA、AES等),資料串流可被路由至最符合資料串流的壓縮/加密需求的壓縮/加密引擎。
根據一些實施例,SSD控制器110能夠為給定串流選擇適當的串流ID。舉例而言,SSD控制器110可監控(例如,即時地)經歷壓縮的串流的壓縮比,且當串流的壓縮比小於臨限值時,SSD控制器110可藉由改變其串流ID(例如,改變為旁路串流ID)來將串流重定向以繞過壓縮引擎。出於繞過目的的此種串流ID改變可在內部實行且臨時實行,且可不被傳達至主機20。根據一些實例,若期望,則SSD控制器110可監控正在儲存的資料並繞過重複刪除。
儘管圖1示出其中資料處理器120位於SSD 100內部並與SSD 100整合的實施例,然而本揭露的實施例不限於此。舉例而言,圖3示出其中資料處理器120-1駐留於位於SSD 100-1外部的中間軟體系統200處的實施例。中間軟體系統200可駐留於雲中,或者駐留於主機作業系統與運行於其上的應用之間。在此種實例中,資料處理器120-1可與圖1所示實施例的資料處理器120相同或實質上相同,且中間軟體系統200可包括處理來自主機應用的I/O請求的應用介面層112-1,應用介面層112-1相似於圖1所示實施例的主機介面層112。在一些實施例中,中間軟體控制器210處理以上參照圖1及圖2闡述的輸入串流(例如,實行串流ID偵測過程),且能夠繞過以上參照圖1及圖2闡述的一或多個資料處理引擎。中間軟體系統200維持經處理資料的串流ID,以使多串流SSD 100-1的主機介面層112可基於串流ID來辨識/分離I/O串流,且容許串流儲存於其在記憶體裝置130內的對應位置處。
如上所述,本揭露對自中間軟體系統200接收的經處理資料實行基於串流ID的放置。
圖4是示出根據本揭露一些示例性實施例的在多串流記憶體系統中處理輸入串流的方法300的流程圖。
在一些實施例中,一旦接收到輸入串流(例如,自將輸入串流與串流ID相關聯的主機),SSD 100便辨識輸入串流的串流ID(S302)。SSD 100然後基於串流指派表將裝置內資料處理器120的多個資料處理引擎之中的第一資料處理引擎辨識為與串流ID相關聯(S304)。串流指派表可將包括所辨識串流ID的多個串流ID映射至所述多個資料處理引擎。SSD 100然後將第一資料處理引擎應用於輸入串流,以產生可儲存於SSD 100內的經處理資料(S306)。在一些實施例中,所述多個資料處理引擎包括不與串流ID相關聯的第二資料處理引擎。此處,SSD 100基於串流指派表將第二資料處理引擎辨識為不與串流ID相關聯,且針對經處理資料繞過(例如,不應用)第二資料處理引擎。
應理解,由多串流SSD 100或中間軟體系統200及SSD 100-1實行的上述操作僅為示例性操作,且由該些裝置實行的操作可包括本文中未明確闡述的各種操作。
由多串流SSD的構成組件(例如,SSD控制器110、資料處理器120等)實行的操作可由「處理電路」或「處理器」(例如,控制器處理器)來實行,所述「處理電路」或「處理器」可包括用於處理資料或數位訊號的硬體、韌體及軟體的任意組合。處理電路硬體可包括例如特殊應用積體電路(application specific integrated circuit,ASIC)、通用或專用中央處理單元(CPU)、數位訊號處理器(digital signal processor,DSP)、圖形處理單元(graphics processing unit,GPU)及例如現場可程式化閘陣列(field programmable gate array,FPGA)等可程式化邏輯裝置。在本文中所使用的處理電路中,每一功能或者由被配置(例如,硬連線)成實行所述功能的硬體來實行,或者由被配置以執行儲存於非暫時性儲存媒體中的指令的更通用的硬體(例如,CPU)來實行。處理電路可製作於單一印刷配線板(printed wiring board,PWB)上,或者分佈於數個互連的PWB之上。處理電路可含有其他處理電路;舉例而言,處理電路可包括在PWB上互連的兩個處理電路,即一個FPGA及一個CPU。
應理解,儘管本文中可能使用用語「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區、層及/或區段,然而該些元件、組件、區、層及/或區段不應受該些用語所限制。該些用語用於區分各個元件、組件、區、層或區段。因此,在不背離本發明概念的範圍的條件下,下文論述的第一元件、組件、區、層或區段可被稱為第二元件、組件、區、層或區段。
本文中所使用的術語是出於闡述特定實施例的目的,而非旨在限制本發明概念。除非上下文清楚地另外指示,否則本文中所使用的單數形式「一(a/an)」旨在亦包括複數形式。應進一步理解,當在本說明書中使用時,用語「包含(inlude/including)」、「包含(comprises及/或comprising)」指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其組合的存在或添加。本文中所使用的用語「及/或(and/or)」包括相關聯所列項中一或多個項的任意及所有組合。此外,當闡述本發明概念的實施例時使用「可(may)」指代「本發明概念的一或多個實施例」。此外,用語「示例性(exemplary)」旨在指代實例或例示。
應理解,當元件、層、區或組件被稱為位於另一元件、層、區或組件「上(on)」、「連接至(connected to)」或「耦合至(coupled to)」另一元件、層、區或組件時,其可直接位於所述另一元件、層、區或組件上、直接連接至或直接耦合至所述另一元件、層、區或組件,或者可存在一或多個中間元件、層、區或組件。另外,亦應理解,當元件或層被稱為位於兩個元件或層「之間(between)」時,其可為所述兩個元件或層之間的唯一元件或層,或者亦可存在一或多個中間元件或層。
本文中所使用的用語「使用(use)」、「正使用(using)」及「已使用(used)」可被視為分別與用語「利用(utilize)」、「正利用(utilizing)」及「已利用(utilized)」同義。
出於本揭露的目的,「X、Y及Z中的至少一者」及「選自由X、Y及Z組成的群組的至少一者」可被解釋為僅X、僅Y、僅Z或者X、Y及Z中的二或更多者的任意組合,例如(舉例而言),XYZ、XYY、YZ及ZZ。
此外,當闡述本發明概念的實施例時,使用「可」指代「本發明概念的一或多個實施例」。此外,用語「示例性」旨在指代實例或例示。
當某一實施例可以不同方式實施時,特定的過程次序可與所闡述的次序不同地實行。舉例而言,兩個連續闡述的過程可實質上同時實行,或者以與所闡述的次序相反的次序實行。
儘管已具體參照本發明的示例性實施例詳細闡述了本發明,然而本文中所闡述的實施例並不旨在窮舉或將本發明的範圍限制至所揭露的確切形式。熟習本發明所屬領域及技術者將領會,在不有意義地背離如在以下申請專利範圍及其等效範圍中所述的本發明的原理、精神及範圍的條件下,可對所闡述的組合件及操作的結構及方法進行變更及改變。
20:主機 22、24、26:應用 100:多串流SSD/SSD 100-1:SSD 110:SSD控制器 112:主機介面層 112-1:應用介面層 114:快閃轉譯層(FTL) 120:裝置內資料處理器 120-1:資料處理器 122:壓縮引擎 124:加密引擎 125:重複刪除引擎 126:搜尋引擎 128:圖形處理引擎 130、130-1、130-2、130-3、130-M:記憶體裝置 200:中間軟體系統 210:中間軟體控制器 300:方法 S302、S304、S306:步驟
參照說明書、申請專利範圍及所附圖式,將領會及理解本發明的該些及其他態樣,在所附圖式中: 圖1是示出根據本揭露一些實施例的具有導入SSD資料處理的多串流記憶體系統的方塊圖。 圖2是示出根據本揭露一些實施例的實例,在所述實例中,多串流記憶體系統針對特定串流繞過SSD內的裝置內資料處理引擎,同時針對其他串流實行裝置內資料處理。 圖3是示出根據本揭露一些實施例的利用中間軟體(middleware)資料處理的多串流記憶體系統的方塊圖。 圖4是示出根據本揭露一些示例性實施例的在多串流記憶體系統中處理輸入串流的方法的流程圖。
20:主機
22、24、26:應用
100:多串流SSD/SSD
110:SSD控制器
112:主機介面層
114:快閃轉譯層(FTL)
120:裝置內資料處理器
122:壓縮引擎
124:加密引擎
125:重複刪除引擎
126:搜尋引擎
128:圖形處理引擎
130、130-1、130-2、130-3、130-M:記憶體裝置

Claims (20)

  1. 一種多串流記憶體系統,包括: 裝置內資料處理器,包括第一資料處理引擎及第二資料處理引擎; 控制器處理器;以及 處理器記憶體,耦合至所述控制器處理器,其中所述處理器記憶體上儲存有指令,當由所述控制器處理器執行時,所述指令使所述控制器處理器實行: 辨識輸入串流的串流辨識碼; 基於串流指派表將所述第一資料處理引擎辨識為與所述串流辨識碼相關聯;以及 將所述第一資料處理引擎應用於所述輸入串流以產生經處理資料。
  2. 如請求項1所述的多串流記憶體系統,其中所述串流指派表將包括所述串流辨識碼的多個串流辨識碼映射至包括所述第一資料處理引擎及所述第二資料處理引擎的多個資料處理引擎。
  3. 如請求項1所述的多串流記憶體系統,其中所述第一資料處理引擎被配置以實行不同於所述第二資料處理引擎的操作。
  4. 如請求項1所述的多串流記憶體系統,其中所述第一資料處理引擎實行壓縮、加密、重複刪除、搜尋及圖形處理中的至少一者。
  5. 如請求項1所述的多串流記憶體系統,其中所述指令進一步使所述控制器處理器實行: 基於所述串流指派表將所述第二資料處理引擎辨識為不與所述串流辨識碼相關聯;以及 因應於所述辨識所述第二資料處理引擎,針對所述經處理資料繞過所述第二資料處理引擎。
  6. 如請求項1所述的多串流記憶體系統,其中所述指令進一步使所述控制器處理器實行: 基於所述串流指派表將所述第二資料處理引擎辨識為與所述串流辨識碼相關聯;以及 因應於所述辨識所述第二資料處理引擎,將所述第二資料處理引擎應用於所述經處理資料。
  7. 如請求項1所述的多串流記憶體系統,其中所述裝置內資料處理器位於包括所述處理器記憶體及所述控制器處理器的所述多串流記憶體系統的固態驅動機(SSD)內部且與所述固態驅動機(SSD)整合。
  8. 如請求項1所述的多串流記憶體系統,其中所述串流指派表將包括所述串流辨識碼的多個串流辨識碼映射至所述多串流記憶體系統的一或多個記憶體裝置內的多個物理位址。
  9. 如請求項1所述的多串流記憶體系統,其中所述指令進一步使所述控制器處理器實行: 基於所述串流指派表辨識與所述串流辨識碼相關聯的物理位址;以及 將所述經處理資料儲存於所述多串流記憶體系統的記憶體裝置內的所述物理位址處。
  10. 如請求項9所述的多串流記憶體系統,其中所述指令進一步使所述控制器處理器實行: 產生與所述經處理資料相關聯的元資料,所述元資料指示將所述第一資料處理引擎應用於所述輸入串流;以及 將所述元資料與所述經處理資料一起儲存於所述多串流記憶體系統的記憶體裝置內的所述物理位址處。
  11. 如請求項1所述的多串流記憶體系統,其中應用所述第一資料處理引擎及所述第二資料處理引擎中被辨識的一者包括: 由第一壓縮引擎壓縮所述輸入串流以產生經壓縮資料,且 其中所述指令進一步使所述控制器處理器實行: 監控所述經壓縮資料的壓縮比; 確定所述壓縮比低於臨限值;以及 因應於所述確定,針對所述輸入串流的其餘部分繞過所述第一資料處理引擎及所述第二資料處理引擎中被辨識的一者。
  12. 如請求項1所述的多串流記憶體系統,其中所述指令進一步使所述控制器處理器實行: 向主機提供所述串流指派表,所述主機是所述輸入串流的源。
  13. 一種多串流記憶體系統,包括: 裝置內資料處理器,包括資料處理引擎; 控制器處理器;以及 處理器記憶體,耦合至所述控制器處理器,其中所述處理器記憶體上儲存有指令,當由所述控制器處理器執行時,所述指令使所述控制器處理器實行: 辨識第一輸入串流的第一串流辨識碼; 辨識第二輸入串流的第二串流辨識碼; 基於串流指派表確定所述第一串流辨識碼與所述資料處理引擎相關聯; 將所述資料處理引擎應用於所述第一輸入串流;以及 針對所述第二輸入串流繞過所述資料處理引擎。
  14. 如請求項13所述的多串流記憶體系統,其中所述指令進一步使所述控制器處理器實行: 基於所述串流指派表確定所述第二串流辨識碼不與所述資料處理引擎相關聯。
  15. 如請求項13所述的多串流記憶體系統,其中所述串流指派表將包括所述第一串流辨識碼及所述第二串流辨識碼的多個串流辨識碼映射至所述多串流記憶體系統的一或多個記憶體裝置內的多個物理位址。
  16. 如請求項13所述的多串流記憶體系統,其中所述指令進一步使所述控制器處理器實行: 基於所述串流指派表辨識與所述第二串流辨識碼相關聯的物理位址;以及 將所述第二輸入串流儲存於所述多串流記憶體系統的記憶體裝置內的所述物理位址處。
  17. 一種在多串流記憶體系統中處理輸入串流的方法,所述方法包括: 辨識輸入串流的串流辨識碼; 基於串流指派表將裝置內資料處理器的第一資料處理引擎辨識為與所述串流辨識碼相關聯,所述裝置內資料處理器包括第二資料處理引擎;以及 將所述第一資料處理引擎應用於所述輸入串流以產生經處理資料。
  18. 如請求項17所述的方法,其中所述串流指派表將包括所述串流辨識碼的多個串流辨識碼映射至包括所述第一資料處理引擎及所述第二資料處理引擎的多個資料處理引擎。
  19. 如請求項17所述的方法,更包括: 基於所述串流指派表將所述第二資料處理引擎辨識為不與所述串流辨識碼相關聯;以及 因應於所述辨識所述第二資料處理引擎,針對所述經處理資料繞過所述第二資料處理引擎。
  20. 如請求項17所述的方法,更包括: 自主機接收所述輸入串流,其中所述主機將所述輸入串流與所述串流辨識碼相關聯。
TW110139903A 2020-11-20 2021-10-27 多串流記憶體系統以及在多串流記憶體系統中處理輸入串流的方法 TW202221511A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063116685P 2020-11-20 2020-11-20
US63/116,685 2020-11-20
US17/117,008 US11500587B2 (en) 2020-11-20 2020-12-09 System and method for in-SSD data processing engine selection based on stream IDs
US17/117,008 2020-12-09

Publications (1)

Publication Number Publication Date
TW202221511A true TW202221511A (zh) 2022-06-01

Family

ID=81594884

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110139903A TW202221511A (zh) 2020-11-20 2021-10-27 多串流記憶體系統以及在多串流記憶體系統中處理輸入串流的方法

Country Status (4)

Country Link
US (3) US11500587B2 (zh)
KR (1) KR20220069810A (zh)
CN (1) CN114518842B (zh)
TW (1) TW202221511A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112748883B (zh) * 2021-01-15 2023-01-10 苏州浪潮智能科技有限公司 一种io请求流水线处理设备、方法、系统及存储介质

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715176A (en) * 1996-01-23 1998-02-03 International Business Machines Corporation Method and system for locating a frame position in an MPEG data stream
JP3206458B2 (ja) * 1996-10-18 2001-09-10 日本電気株式会社 Dma転送方式
US8069298B2 (en) 2007-06-29 2011-11-29 Sandisk Technologies Inc. Method of storing and accessing header data from memory
WO2010014934A2 (en) 2008-07-31 2010-02-04 Koolspan, Inc. System for and method of remote secure backup
US20100169303A1 (en) 2008-12-31 2010-07-01 David Biderman Playlists for real-time or near real-time streaming
KR101451369B1 (ko) 2011-04-29 2014-10-16 엘에스아이 코포레이션 암호화된 전송 고체 상태 디스크 제어기
US8918579B2 (en) 2012-02-06 2014-12-23 Sandisk Technologies Inc. Storage device and method for selective data compression
US9448738B2 (en) 2013-03-15 2016-09-20 Western Digital Technologies, Inc. Compression and formatting of data for data storage systems
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9588704B2 (en) 2014-12-23 2017-03-07 Commvault Systems, Inc. Secondary storage operation instruction tags in information management systems
US20160283125A1 (en) * 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
US9753666B2 (en) * 2015-03-27 2017-09-05 Intel Corporation Efficient data compression for solid-state memory
US9696935B2 (en) * 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US10509770B2 (en) * 2015-07-13 2019-12-17 Samsung Electronics Co., Ltd. Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US10282324B2 (en) * 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US10198215B2 (en) * 2016-06-22 2019-02-05 Ngd Systems, Inc. System and method for multi-stream data write
KR102318477B1 (ko) * 2016-08-29 2021-10-27 삼성전자주식회사 Ssd 어레이 관리를 위한 스트림 식별자 기반 스토리지 시스템
US10459644B2 (en) * 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
JP2018160189A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム
US20180321855A1 (en) * 2017-05-03 2018-11-08 Samsung Electronics Co., Ltd. Multistreaming in heterogeneous environments
WO2018219452A1 (en) * 2017-05-31 2018-12-06 Huawei Technologies Co., Ltd. Cross platform stream dataflows
KR102482035B1 (ko) * 2017-11-30 2022-12-28 에스케이하이닉스 주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작 방법
KR102656172B1 (ko) * 2018-03-28 2024-04-12 삼성전자주식회사 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법
US10884920B2 (en) * 2018-08-14 2021-01-05 Western Digital Technologies, Inc. Metadata-based operations for use with solid state devices
JP2021043837A (ja) * 2019-09-13 2021-03-18 キオクシア株式会社 メモリシステム
KR20210099930A (ko) * 2020-02-05 2021-08-13 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11301173B2 (en) * 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources

Also Published As

Publication number Publication date
US20220164138A1 (en) 2022-05-26
US11500587B2 (en) 2022-11-15
US20230079467A1 (en) 2023-03-16
US11836387B2 (en) 2023-12-05
CN114518842B (zh) 2024-04-12
CN114518842A (zh) 2022-05-20
US20240111458A1 (en) 2024-04-04
KR20220069810A (ko) 2022-05-27

Similar Documents

Publication Publication Date Title
KR102387968B1 (ko) 데이터 저장 장치와 그 동작 방법
JP6768928B2 (ja) アドレスを圧縮するための方法及び装置
US9785378B2 (en) Tracking transformed memory pages in virtual machine chain migration
US9851918B2 (en) Copy-on-write by origin host in virtual machine live migration
CA2933370C (en) Apparatus and method for single pass entropy detection on data transfer
TWI594121B (zh) 使用資料壓縮的快取技術
US20240111458A1 (en) System and method for in-ssd data processing engine selection based on stream ids
US9563569B2 (en) Memory transformation in virtual machine live migration
WO2015145647A1 (ja) ストレージ装置とデータ処理方法及びストレージシステム
US10366026B1 (en) Random access to decompressed blocks
AU2015215974B1 (en) Apparatus and method for inline compression and deduplication
US10180790B1 (en) Efficient cloning and migration of data objects
US20160048455A1 (en) Memory Data Transfer Method and System
TWI520152B (zh) 資料儲存裝置與快閃記憶體控制方法
WO2019043717A1 (en) SECURE ACCESS CONTROL IN A STORAGE SYSTEM
US20130205071A1 (en) Compressed cache storage acceleration
US11226769B2 (en) Large-scale storage system and data placement method in large-scale storage system
US6829691B2 (en) System for compressing/decompressing data
CN113721838B (zh) 用于存储设备的写、读数据方法、存储控制器以及dma引擎
US11016909B2 (en) Cache page retention based on page cost
US10901917B1 (en) Address scrambling for storage class memory
US20160124684A1 (en) Method to realize object-oriented in-memory data storage and processing
KR101752304B1 (ko) 복수의 플래시 메모리 컨트롤러를 포함하는 솔리드 스테이트 드라이브 및 상기 플래시 메모리 컨트롤러가 수행하는 압축 해제 방법
US20220107754A1 (en) Apparatus and method for data packing and ordering
US12032492B2 (en) Method of operating storage device and method of operating storage system using the same