TW202340934A - 用於具有計算儲存裝置的跨層鍵值儲存體的系統和方法 - Google Patents
用於具有計算儲存裝置的跨層鍵值儲存體的系統和方法 Download PDFInfo
- Publication number
- TW202340934A TW202340934A TW112114134A TW112114134A TW202340934A TW 202340934 A TW202340934 A TW 202340934A TW 112114134 A TW112114134 A TW 112114134A TW 112114134 A TW112114134 A TW 112114134A TW 202340934 A TW202340934 A TW 202340934A
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- data
- data node
- host
- updated
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000013500 data storage Methods 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims description 93
- 230000008569 process Effects 0.000 claims description 19
- 230000002085 persistent effect Effects 0.000 claims description 9
- 230000008901 benefit Effects 0.000 description 17
- 238000012546 transfer Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000006872 improvement Effects 0.000 description 6
- 239000000463 material Substances 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000001174 ascending effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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
- 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/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
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- 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/0638—Organizing or formatting or addressing of data
-
- 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/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; 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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance 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/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
- G06F2212/6012—Reconfiguration of cache memory of operating mode, e.g. cache mode or local memory mode
-
- 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
-
- 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/7207—Details relating to flash memory management management of metadata or control data
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供一種資料儲存的方法,所述方法包括:在鍵值儲存體的主機處接收對儲存於鍵值儲存體的儲存裝置上的資料節點進行存取的請求;在主機上的主機高速緩存中定位與資料節點對應的位址;以及確定資料節點處於儲存裝置上的內核高速緩存中。
Description
[相關申請案的交叉參考]
本申請案主張優先於在2022年4月14日提出申請、名稱為「具有計算儲存裝置的跨層鍵值儲存體(CROSS-LAYER KEY-VALUE STORE WITH COMPUTATIONAL STORAGE DEVICE)」的序列號為63/331,032的美國臨時申請案並主張其權益,所述美國臨時申請案的全部內容併入本案供參考。
根據本揭露的實施例的一或多個態樣是有關於用於資料儲存的系統及方法。
本背景技術部分旨在僅提供上下文,且本部分中對任何實施例或概念的揭露不構成對所述實施例或概念是先前技術的承認。
在電腦儲存器的領域中,鍵值儲存體(key-value store)可在包括主機(例如,主電腦)及儲存裝置(例如,包括用於儲存資料的儲存媒體的裝置)的儲存系統(例如,系統)上實施。系統可在儲存裝置的記憶體(例如,非揮發性記憶體)儲存資料節點。系統的使用者可對資料節點進行存取。系統可基於來自使用者的請求在資料節點實行各種操作。系統可辨識資料節點的資料節點位置及資料節點中的鍵值位置,以基於鍵值對在所述資料節點上實行操作。舉例而言,系統可處理與鍵(key)相關聯的請求,以(i)搜尋並找到與所述鍵對應的值(例如,資料對象)的位置以及(ii)針對所述值實行與所述請求相關聯的操作。
因此,需要用於對關於鍵值儲存體的請求高效地進行處理的方法、裝置及系統。
本揭露實施例的各態樣是有關於電腦儲存系統,且提供對鍵值儲存體的改進。
根據本揭露的一些實施例,提供一種資料儲存的方法,所述方法包括:在鍵值儲存體的主機處接收對儲存於所述鍵值儲存體的儲存裝置上的資料節點進行存取的請求;在所述主機上的主機高速緩存中定位與所述資料節點對應的位址;以及確定所述資料節點處於所述儲存裝置上的內核高速緩存中。
儲存與所述資料節點對應的元資料的所述主機高速緩存的條目的偏移可與儲存所述資料節點的所述內核高速緩存的條目的偏移相同。
所述方法可更包括:由所述主機在所述主機上的搜尋層中定位所述位址;引起內核呼叫(kernel call),用於將對所述請求進行處理的控制自所述主機傳送至所述儲存裝置的處理電路;由所述處理電路對所述資料節點上的資料進行處理;將所述資料節點寫入至所述內核高速緩存作為經更新資料節點;以及由所述主機將所述經更新資料節點自所述內核高速緩存對等(peer-to-peer)寫入至所述儲存裝置的儲存器。
所述搜尋層可包括樹結構,所述儲存裝置上的資料層包括所述資料節點,所述資料節點與對應於所述樹結構的葉節點的雙向鏈接列表內的葉節點對應,且所述在所述搜尋層中定位所述位址可包括在所述樹結構的內部節點中查找部分鍵(partial key)。
所述方法可更包括:確定所述資料節點中的可用空間量小於用於容納與所述請求對應的鍵的空間量;以及對所述資料節點的元資料進行更新以指向擴展節點,所述資料節點的所述元資料可指示第一版本號,且所述擴展節點的元資料可指示所述第一版本號。
所述方法可更包括由片分配器(slab allocator)將所述擴展節點分派至來自由不同大小的資料頁面構成的池的所述資料節點。
所述方法可更包括:對所述擴展節點進行更新;對所述資料節點的所述元資料進行更新以指示第二版本號;對所述擴展節點的所述元資料進行更新以指示所述第二版本號,所述第二版本號將所述資料節點辨識為經更新資料節點,且將所述擴展節點辨識為經更新擴展節點;以及對所述經更新資料節點的所述元資料進行更新以指向所述經更新擴展節點。
所述方法可更包括:以異地方式(out-of-place manner)將所述經更新擴展節點寫入至所述儲存裝置的儲存器;以及以原地方式(in-place manner)將所述經更新資料節點寫入至所述儲存器。
所述方法可更包括:由所述主機獲取所述資料節點上的讀取鎖定;或者由所述主機獲取所述資料節點上的寫入鎖定。
根據本揭露的其他實施例,提供一種用於資料儲存的系統,所述系統包括主機及儲存裝置,其中所述主機被配置成:接收對儲存於所述儲存裝置上的資料節點進行存取的請求;在所述主機上的主機高速緩存中定位與所述資料節點對應的位址;以及確定所述資料節點處於所述儲存裝置上的內核高速緩存中。
儲存與所述資料節點對應的元資料的所述主機高速緩存的條目的偏移可與儲存所述資料節點的所述內核高速緩存的條目的偏移相同。
所述主機可被配置成:在所述主機上的搜尋層中定位所述位址;確定所述資料節點處於內核高速緩存中;引起內核呼叫,用於將對所述請求進行處理的控制自所述主機傳送至所述儲存裝置的處理電路;以及使經更新資料節點自所述內核高速緩存對等寫入至所述儲存裝置的儲存器,且所述儲存裝置的所述處理電路可被配置成:對所述資料節點上的資料進行處理;以及將所述資料節點寫入至所述內核高速緩存作為經更新資料節點。
所述搜尋層可包括樹結構,所述儲存裝置上的資料層可包括所述資料節點,所述資料節點可與對應於所述樹結構的葉節點的雙向鏈接列表內的葉節點對應,且所述主機可被配置成基於在所述樹結構的內部節點中定位部分鍵來搜尋所述位址。
所述系統可被配置成:確定所述資料節點中的可用空間量小於用於容納與所述請求對應的鍵的空間量;以及對所述資料節點的元資料進行更新以指向擴展節點,所述資料節點的所述元資料可指示第一版本號,且所述擴展節點的元資料可指示所述第一版本號。
所述系統可被配置成:對所述擴展節點進行更新;對所述資料節點的所述元資料進行更新以指示第二版本號;對所述擴展節點的所述元資料進行更新以指示所述第二版本號,所述第二版本號可將所述資料節點辨識為經更新資料節點,且可將所述擴展節點辨識為經更新擴展節點;以及對所述經更新資料節點的所述元資料進行更新,以指向所述經更新擴展節點。
根據本揭露的其他實施例,提供一種儲存裝置,所述儲存裝置包括:處理電路;持續記憶體;以及共用記憶區域(common memory area),鏈接至所述處理電路及所述持續記憶體,其中所述處理電路被配置成藉由自所述共用記憶區域上的內核高速緩存的條目讀取資料節點來處理對儲存於所述儲存裝置上的所述資料節點進行存取的請求。
所述處理電路可被配置成藉由以下方式處理所述請求:在所述資料節點上實行資料操作;以及將所述資料節點寫入至所述內核高速緩存作為經更新資料節點。
所述處理電路可被配置成:對指向所述資料節點的擴展節點進行更新,所述擴展節點及所述資料節點可指示第一版本號;對所述資料節點的元資料進行更新以指示第二版本號;對所述擴展節點的元資料進行更新以指示所述第二版本號,所述第二版本號可將所述資料節點辨識為經更新資料節點,且可將所述擴展節點辨識為經更新擴展節點;以及對所述經更新資料節點的所述元資料進行更新,以指向所述經更新擴展節點。
所述處理電路可被配置成以異地方式將所述經更新擴展節點寫入至所述儲存裝置的儲存器。
所述處理電路可被配置成以原地方式將所述經更新資料節點寫入至所述儲存裝置的儲存器。
藉由參照對實施例的詳細說明以及隨附圖式,可更輕易地理解本發明概念的特徵及達成所述特徵的方法。在下文中,將參照附圖更詳細地闡述實施例。然而,所闡述的實施例可以各種不同的形式實施且不應被解釋為僅限於本文中所示的實施例。確切而言,提供該些實施例作為實例,以使得此揭露內容將透徹及完整,且將向熟習此項技術者充分傳達本發明概念的態樣及特徵。因此,可不闡述對於此項技術中具有通常知識者完全理解本發明概念的態樣及特徵而言不必要的製程、元件及技術。
除非另有說明,否則在隨附圖式及書面說明通篇中,相同的參考編號、字符或其組合表示相同的元件,且因此將不再對其予以贅述。此外,為使說明清楚起見,可能未示出與對實施例的說明不相關的部件。在圖式中,為清晰起見,可誇大元件、層及區的相對大小。
在詳細說明中,出於闡釋的目的而陳述諸多具體細節以提供對各種實施例的透徹理解。然而,顯而易見的是,可在不使用該些具體細節或者使用一或多種等效佈置的情況下實踐各種實施例。
應理解,儘管本文中可能使用用語「第零個(zeroth)」、「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區、層及/或區段,然而該些元件、組件、區、層及/或區段不應受該些用語限制。該些用語用於區分各個元件、組件、區、層或區段。因此,在不背離本揭露的精神及範圍的條件下,可將以下闡述的第一元件、第一組件、第一區、第一層或第一區段稱為第二元件、第二組件、第二區、第二層或第二區段。
應理解,當稱一元件或組件位於另一元件或組件「上(on)」、「連接至(connected to)」或「耦合至(coupled to)」另一元件或組件時,所述元件或組件可直接位於所述另一元件或組件上、直接連接至或直接耦合至所述另一元件或組件,或者可存在一或多個中間元件或組件。然而,「直接連接/直接耦合(directly connected/directly coupled)」是指一個組件對另一組件進行直接連接或直接耦合,而無需中間組件。同時,可以相似方式對闡述組件之間關係的其他表述(例如「位於...之間(between)」、「緊接於...之間(immediately between)」或「相鄰於(adjacent to)」及「直接相鄰於(directly adjacent to)」)進行解釋。另外,亦應理解,當稱一元件或組件位於兩個元件或組件「之間」時,所述元件或組件可為所述兩個元件或組件之間的唯一元件或組件,或者亦可存在一或多個中間元件或組件。
本文中所使用的術語僅用於闡述特定實施例的目的,而不旨在限制本揭露。除非上下文另外清楚地指示,否則本文中所使用的單數形式「一(a及an)」旨在亦包括複數形式。應進一步理解,當在本說明書中使用用語「包括(comprises/comprising)」、「具有(have/having)」及「包含(includes/including)」時,是指明所陳述的特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其組合的存在或添加。本文中所使用的用語「及/或(and/or)」包括相關聯所列項中一或多個項的任意及所有組合。
本文中所使用的用語「實質上(substantially)」、「約(about)」、「近似(approximately)」及相似用語被用作近似用語,而並非用作程度用語,且旨在慮及此項技術中具有通常知識者將認識到的量測值或計算值的固有偏差。本文中所使用的「約」或「近似」包括所陳述值且意指處於由此項技術中具有通常知識者確定的特定值的可接受偏差範圍內,此考慮到所討論的量測及與特定量的量測相關聯的誤差(即,量測系統的限制)。舉例而言,「約」可意指處於一或多個標準偏差內,或者處於所陳述值的α±30%、±20%、±10%、±5%內。此外,當在闡述本揭露的實施例使用「可(may)」時,是指「本揭露的一或多個實施例(one or more embodiments of the present disclosure)」。
當一或多個實施例可被以不同的方式實施時,可與所闡述的次序不同地實行特定製程次序。舉例而言,兩個連續闡述的製程可實質上同時實行,或者以與所闡述的次序相反的次序實行。
可使用所闡述的(例如,本文中所包括的任何系統圖中)任何組件或組件的任意組合來實行本文中所包括的任意流程圖的一或多個操作。此外,(i)操作僅為實例且可涉及未明確涵蓋的各種附加操作,且(ii)操作的時間次序可發生變化。
可利用任何合適的硬體、韌體(例如,應用專用積體電路(application-specific integrated circuit))、軟體或者軟體、韌體及硬體的組合來實施根據本文中所闡述的本揭露的實施例的電子裝置或電裝置及/或任何其他相關裝置或組件。舉例而言,該些裝置的各種組件可形成於一個積體電路(integrated circuit,IC)晶片上或分開的IC晶片上。此外,該些裝置的各種組件可實施於撓性印刷電路膜、載帶封裝(tape carrier package,TCP)、印刷電路板(printed circuit board,PCB)上,或者形成於一個基板上。
此外,該些裝置的各種組件可為在一或多個計算裝置中在一或多個處理器上運行、執行電腦程式指令並與用於實行本文中所闡述的各種功能性的其他系統組件交互作用的進程或執行緒(thread)。電腦程式指令儲存於記憶體中,所述記憶體可使用例如(舉例而言)隨機存取記憶體(random access memory,RAM)等標準記憶體體裝置在計算裝置中實施。電腦程式指令亦可儲存於例如(舉例而言)光碟唯讀記憶體(compact disc-read only memory,CD-ROM)、快閃驅動機或類似裝置等其他非暫時性電腦可讀取媒體中。另外,熟習此項技術者應認識到,可在不背離本揭露的實施例的精神及範圍的條件下將各種計算裝置的功能性組合或整合至單一計算裝置中,或者可使特定計算裝置的功能性跨一或多個其他計算裝置分佈。
除非另有定義,否則本文中所使用的所有用語(包括技術用語及科學用語)皆具有與本發明概念所屬技術中具有通常知識者所通常理解的含義相同的含義。應進一步理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術及/或本說明書的上下文中的含義一致的含義,且除非本文中明確如此定義,否則不應將其解釋為具有理想化或過於正式的意義。
如上所述,在電腦儲存器的領域中,鍵值儲存體可在儲存系統(例如,系統)上實施。系統可包括主機(例如,主電腦)及儲存裝置(例如,包括用於儲存資料的儲存媒體的裝置)。儲存裝置可在儲存裝置的記憶體(例如,非揮發性記憶體或持續記憶體)儲存資料節點。系統的使用者可請求對資料節點進行存取。舉例而言,使用者可引起將被系統接收的資料存取請求(例如,寫入請求、讀取請求等)。系統可基於資料存取請求找到資料節點並針對所述資料節點實行操作(例如,寫入操作、讀取操作等)。
資料節點可包括與同一部分鍵對應的鍵-值對集合。部分鍵可儲存於系統的搜尋層中。資料節點可包括元資料區段及一系列鍵值對。舉例而言,每一資料節點可存放一系列鍵-值對,使得當前資料節點(例如,第一資料節點)中的最大值鍵可小於下一資料節點(例如,與第一資料節點相鄰的第二資料節點)的最小值鍵。因此,可維持(例如,提供)介於相鄰資料節點之間的鍵的升序。
系統可被配置成實行針對資料節點的各種操作。舉例而言,系統可基於來自使用者的請求在資料節點上實行插入(鍵,值)、更新(鍵,值)、移除(鍵)、查找(鍵)或掃描(鍵,範圍)操作。基於接收鍵值對,系統可辨識資料節點,且然後可辨識資料節點內實行操作的精確位置。然後,系統可實行與接收到的鍵值對相關聯的操作。舉例而言,系統可處理與鍵-值對的鍵相關聯的請求,以(i)定位與所述鍵對應的值(例如,對象)以及(ii)在資料節點處針對所述值實行與所述請求相關聯的操作。
因此,開發用於對針對鍵值儲存體的請求更高效地進行處理的方法、裝置及系統可為合適的。
一些鍵值儲存體可被設計成單獨使用主機的計算資源或單獨使用儲存裝置(例如,固態驅動器(solid state drive,SSD))的計算資源。舉例而言,一些鍵值儲存體可使用主機計算資源來實行控制平面操作與資料操縱(例如,資料處理)操作二者。在此種鍵值儲存體中,主機處理器(例如,中央處理單元(central processing unit,CPU))可接收來自使用者(例如,來自對應於使用者的應用)的請求,以查找(例如,定位)鍵並將所請求的資料提取至主機動態隨機存取記憶體(dynamic random access memory,DRAM)。CPU可使用所述資料來操控計算。
一些鍵值儲存體可具有計算儲存能力。亦即,可使用包括處理電路(例如,加速器(例如現場可程式化閘陣列(field programmable gate array,FPGA)))的儲存裝置來實施鍵值儲存體。FPGA可用於僅作為「服務」來操縱資料層(例如,實行純計算(例如編碼或解碼))。
實施成具有計算儲存能力的一些鍵值儲存體可使用儲存裝置資源來實行控制平面操作與資料操縱(例如,資料處理)操作二者。亦即,鍵值儲存體可完全在儲存裝置上實施。在此種鍵值儲存體中,儲存裝置的處理電路可接收來自使用者應用的請求,以查找(例如,定位)鍵並將所請求的資料提取至儲存裝置DRAM,以供處理電路操控計算。
為了提供資料持久性及操作原子性(例如防止由於裝置故障造成的資料丟失),鍵值儲存體可根據用於資料恢復的崩潰一致性策略來實施。
一些鍵值儲存體可利用包含預寫日誌(write-ahead logging,WAL)(例如,撤消日誌(UNDO logging)及重做日誌(REDO logging))的崩潰一致性策略來實施。舉例而言,在WAL中,在對應的資料位置可能根據寫入操作被修改之前,對鍵值儲存體進行的任何寫入可被儲存於持久保存於儲存裝置的非揮發性記憶體上的日誌文件(例如,預寫日誌)中。
隨著資料儲存的快節奏的發展,單獨使用主機或儲存裝置的計算資源的鍵值儲存體設計可能經受計算瓶頸及/或網路瓶頸(例如,CPU瓶頸)。亦即,儘管儲存裝置已經變得更快且更智慧,但是由於例如CPU不能足夠高效地處理及傳送資料,儲存裝置的效能可能並未完全實現。在利用具有計算儲存能力的儲存裝置(在下文中被稱為計算儲存裝置)實施的鍵值儲存體中,傳統的基於主機的高速緩存可能未充分利用計算儲存裝置的處理電路(例如FPGA)與儲存裝置的記憶體(例如非揮發性記憶體或儲存器)之間的對等(P2P)傳送所提供的優點。因此,FPGA的計算力可能並未得到充分利用。
關於崩潰一致性策略,利用基於日誌的一致性策略實施的鍵值儲存體可能會引起各種問題,例如寫入放大增加、輸入/輸出(input/output,I/O)相互依賴性以及請求處理緩慢。
為了改進鍵值儲存體的效能,本揭露實施例的態樣提供一種鍵值儲存體,所述鍵值儲存體可在邏輯上被劃分以利用主機的主機處理器與計算儲存裝置的處理電路二者。舉例而言,根據本揭露的鍵值儲存體可在預處理管線(例如,人工智慧(artificial intelligence,AI)及機器學習(machine learning,ML)應用的預處理管線)中減少CPU瓶頸問題並減少資料提取停頓。
在一些實施例中,資料平面計算可自主機處理器卸載至計算儲存裝置,以利用計算儲存裝置的高速頻寬。
在一些實施例中,鍵值儲存體可被劃分成兩部分:(1)由主機處理器處理的搜尋層(例如,B樹中的內部節點);以及(2)由計算儲存裝置上的處理電路處理的資料層(例如,B樹中的葉節點)。儘管本文中揭露的搜尋層及資料層的實例可指代B樹索引結構,但應理解,本揭露不限於此。舉例而言,根據本揭露實施例的態樣的搜尋層及資料層可經由任何合適的排序索引結構(例如,B+樹、線索(Trie)或自適應基數樹(Adaptive Radix Tree))來實施。
搜尋層可儲存部分鍵。資料層可儲存與屬於特定資料節點的鍵對應的鍵指紋。因此,鍵指紋可辨識與鍵值對對應的值在資料儲存體內的精確位置。
如下面參照附圖進一步詳細論述所示,根據一或多個實施例的鍵值儲存體(例如,跨層鍵值儲存體)可使用跨層方法在控制平面中使用主機處理器,且將資料平面計算卸載至計算儲存裝置的處理電路上。因此,鍵值儲存體可利用計算儲存裝置的高頻寬。
鍵值儲存體亦可結合下面進一步詳細論述的以下特徵中的一或多者:(1)用於提高吞吐量及可擴縮性的跨層方法;(2)用於改進資料局部性(例如,減少或消除不必要的(例如,冗餘的)資料移動)的跨層高速緩存(例如,鏡像高速緩存(mirror cache));以及(3)用於簡化的崩潰一致性(例如,基於版本編號而並非預寫日誌的崩潰一致性策略)的基於版本的崩潰一致性。
除了具有改進的效率之外,鍵值儲存體可被整合至計算管線中,以顯著減少資料提取停頓並達成將預處理卸載至計算儲存裝置上的優點。
另外,儘管本揭露是有關於一種耦合至一個計算儲存裝置的主機,但是本揭露不限於此。舉例而言,在一些實施例中,根據本揭露的鍵值儲存體可利用具有連接在伺服器中的多個儲存裝置及加速器的異構系統。
用於具有計算儲存裝置的跨層鍵值儲存體的系統及方法可提供具有減少的瓶頸(例如,更大的整體系統頻寬)、增加的吞吐量、可擴縮性及資料局部性的鍵值儲存體。此種改進可藉由將鍵值儲存體在邏輯上劃分成以下來達成:(1)儲存於主機記憶體上並由主機處理器操縱(例如,處理)的搜尋層;以及(2)儲存於計算儲存裝置上且由計算儲存裝置的處理電路處理的資料層。此外,在一些實施例中,跨層鍵值儲存體可藉由利用基於版本的崩潰一致性而並非基於日誌的崩潰一致性進行實施來提供簡化的崩潰一致性。
舉例而言,鍵值儲存體可被實施為包括主機及儲存裝置的系統或在包括主機及儲存裝置的系統上實施,所述儲存裝置包括持續記憶體(例如,儲存裝置的固態驅動器(SSD)或其他非揮發性記憶體部分)、處理電路(例如,FPGA)以及鏈接至持續記憶體及處理電路(例如,經由P2P記憶體)的共用記憶區域(CMA)。
主機可對包括排序索引(例如,樹結構)的搜尋層進行儲存及操縱(例如,處理)。主機亦可對鍵值儲存體的「鏡像高速緩存」的主機高速緩存部分進行儲存及操縱(例如,處理)。儲存裝置可對包括樹結構的葉節點(例如,資料節點)的資料層進行儲存及處理。儲存裝置亦可對鏡像高速緩存的內核高速緩存部分進行儲存及處理。
主機高速緩存可被實施為二維(two-dimensional,2D)陣列。儲存與資料節點對應的元資料的主機高速緩存的每一條目可儲存於儲存裝置。
內核高速緩存可被實施為儲存於CMA中的資料節點的一維(one-dimensional,1D)陣列。主機可以與儲存於內核高速緩存內的資料節點的偏移相同的偏移將主機高速緩存的每一條目儲存於主機高速緩存內(例如,減少系統內的資料移動量)。
鍵值儲存體可在主機處理器(例如,CPU)與儲存裝置的處理電路(例如,FPGA)之間分發責任。舉例而言,鍵值儲存體可分割對用於對儲存於儲存裝置上的資料節點進行存取的請求進行處理的控制。因此,主機處理器可在控制平面中起作用,以觸發(例如,引起或發出)內核呼叫,發出去往或來自持續記憶體(在下文中被稱為儲存器)的資料傳送並管理崩潰一致性。儲存裝置的處理電路可操控資料平面操作,使得鍵值儲存體可利用計算儲存裝置的相對較高的存取吞吐量。
另外,鍵值儲存體可被實施為提供具有基於版本的崩潰一致性機制的可變長度鍵值支持,基於版本的崩潰一致性機制維持版本元資料以避免日誌技術(例如WAL)的管理負擔。
因此,與其他鍵值儲存體設計相比,根據本揭露實施例的態樣的鍵值儲存體可提供若干改進及優點,包括:(1)藉由在邏輯上被分割成搜尋層及資料層以僅使用主機處理器作為控制平面並將資料平面任務卸載至處理電路來減少瓶頸;(2)藉由P2P記憶體將資料傳送至處理電路來提高I/O頻寬利用率,且因此減少網路跳躍(network hop)(例如,減少儲存器與主機之間的資料傳送次數),藉此增加總吞吐量;(3)藉由利用原子更新(例如,4千位元(KB)大小的更新)實施基於版本的崩潰一致性來避免日誌記錄(例如,計算昂貴/資料密集的基於日誌的恢復);以及(4)由於搜尋層及資料層在主機處理器與處理電路之間在邏輯上且在實體上分割,允許可擴縮性而不具有同步問題。
圖1是繪示根據本揭露一些實施例的包括搜尋層及資料層的資料儲存系統的系統圖。
參照圖1,系統1可包括主機100,主機100可耦合至儲存裝置200(例如,計算儲存裝置)。主機100可包括主機處理器110(例如,主機CPU)及主機記憶體120(例如,主機DRAM)。
儲存裝置200可包括(例如,可為)計算儲存裝置,所述計算儲存裝置包括儲存器210(例如,持續記憶體或非揮發性記憶體)、儲存器控制器212(例如,非揮發性快速記憶體(n-volatile memory express,NVMe)輔助控制器)、處理電路220(例如加速器(例如FPGA))及共用記憶區域(CMA)230(例如,計算儲存裝置的P2P記憶體,其可為處理電路220的DRAM與儲存器210及處理電路220二者鏈接或共享的一部分)。
儲存裝置200可儲存一或多個資料節點DN(亦參見圖4)。每一資料節點DN可包括鍵值對集合(例如,在圖1及圖4中可以升序排列且被繪示為「AAA」及「AAB」等的多個鍵值對)。對應資料節點中的所述鍵值對集合可與主機記憶體120的搜尋層150中的同一部分鍵對應。
系統1可包括(例如,可為)具有跨層架構的鍵值儲存體,其中在主機處理器110與處理電路220之間對例如處理資料存取請求等職責進行分割,以改進傳統鍵值儲存體的效能。舉例而言,搜尋層150可儲存於主機記憶體120上,且資料層250可儲存於儲存裝置200上(例如,在儲存器210中)。主機處理器110可對搜尋層150進行操縱(例如,處理、維持或控制)。處理電路220可對資料層250進行處理。
因此,主機處理器110可充當控制平面且可實行合適的操作,例如觸發FPGA內核呼叫(例如,指向處理電路220的內核呼叫),發出(例如,引起)去往及來自儲存器210的資料傳送,以及管理並行控制(例如,管理來自多個請求的對儲存裝置200的並行存取)等。此外,處理電路220可管理資料平面的操作,例如操縱(例如,處理)及操控資料(例如,執行資料節點更新及對經更新資料節點的對應元資料進行更新)。
藉由將搜尋層150的操縱(例如,處理)委託至主機處理器110,同時將資料層250操作委託至處理電路220,可更合適地使用不同的計算力源。舉例而言,系統1可利用儲存器210與處理電路220之間的內部頻寬(例如,高內部頻寬),同時亦減少(例如,最小化)由於儲存器210與處理電路220之間的P2P資料傳送(例如,直接資料傳送)引起的資料移動。
搜尋層150可被實施為例如主機記憶體120上的樹結構,所述樹結構儲存部分鍵(例如,將部分鍵儲存為B樹元結構中的內部節點)。儘管搜尋層150及資料層250在本文中被闡述為對應於樹結構,但應理解,本揭露不限於此,且其他排序索引結構可為合適的。
資料層250可被實施為儲存裝置200上與資料節點DN對應的葉節點(例如,B樹結構中的葉節點)的雙向鏈接列表。搜尋層(例如,樹結構)可幫助快速查找點查詢。資料層作為雙向鏈接列表可以升序儲存鍵值對,因此達成快速範圍查詢。因此,與不實行範圍操作的一些傳統鍵值儲存體不同,跨層鍵值儲存體可使得系統1能夠適用於點查詢(例如,對應於單個鍵值對的操作)與範圍查詢(例如,對應於多於一個連續鍵值對的操作)二者。
跨層鍵值儲存體的實施例的態樣可提供主機CPU處理(例如,範圍查詢處理)的靈活性及利用處理電路220(例如,儲存器上的FPGA)進行近資料處理(例如,葉節點中的查找操作、資料壓縮及深度學習的預處理)的框架。另外,利用具有解耦的搜尋層與資料層的跨層鍵值儲存體,架構在網路上可容易地縮放至與多個儲存裝置200連接的非統一記憶體存取(non-uniform memory access,NUMA)節點上。
圖2是繪示根據本揭露一些實施例的包括主機高速緩存及內核高速緩存的資料儲存系統的系統圖。
參照圖2,系統1可包括跨主機100的主機記憶體120及儲存裝置200的CMA 230分割開的鏡像高速緩存7(或跨層高速緩存)。鏡像高速緩存7可包括主機記憶體120上的主機高速緩存170(例如,元資料高速緩存)以及CMA 230上的內核高速緩存270(例如,資料高速緩存)。鏡像高速緩存7提供資料局部性(例如,改進的資料局部性)。
在主機100上維持元資料高速緩存使得主機處理器110能夠在控制平面中動作,且使得CMA 230上的資料高速緩存能夠利用計算儲存裝置200提供的高速對等資料傳送。藉由將資料層計算卸載至儲存裝置200(此通常可由傳統鍵值儲存體的主機來實行),來自儲存器210的資料存取粒度(granularity)可為資料頁面的大小(例如,4千位元大小)。
儘管在此情況下使用傳統的基於主機的高速緩存可提供足夠的容量來儲存資料節點DN(例如,資料頁面),但是使用跨層高速緩存可提供優於使用基於主機的高速緩存的若干優點及改進。舉例而言,使用跨層高速緩存可:(1)減少存取資料頁面的延遲;(2)減少網路流量,由於跳躍數(例如,儲存器210與主機100之間的資料傳送數)將減少;以及(3)利用處理電路220與儲存裝置200之間的P2P傳送的優點,且因此利用處理電路220的計算力。
計算儲存裝置200可藉由內部資料路徑連接儲存器210與處理電路220,藉此達成被稱為對等資料傳送的高速資料傳送。此種連接可藉由晶片上軟周邊組件快速內連(peripheral component interconnect express,PCIe)開關及處理電路220的裝置記憶體來達成。計算儲存裝置200可將儲存器210及處理電路220的記憶體(例如,DRAM)二者映射至周邊組件快速內連(PCIe)條260(例如,PCIe條記憶體)上。處理電路220的記憶體暴露於PCIe條260的部分可包括(例如,可為)CMA 230。
主機高速緩存170可作為集合關聯高速緩存(set-associative cache)儲存於主機記憶體120上,所述集合關聯高速緩存儲存元資料並使得主機處理器110能夠在控制平面中進行動作以操控高速緩存維持操作並管理並行存取。主機高速緩存170可為儲存對應資料節點DN的元資料的散列表(hash table)。舉例而言,每一主機高速緩存條目172可儲存元資料,例如邏輯區塊位址(logical block address,LBA)、時間戳、檢查佔用率的旗標、用於驅逐的最近最少使用(least recently used,LRU)資訊以及用於並行高速緩存存取的鎖定資訊。主機高速緩存170可為二維(2D)陣列。
內核高速緩存270可儲存於CMA 230上,以儲存資料節點DN,且使跨層鍵值儲存體能夠利用計算儲存裝置200提供的優點(例如P2P存取及減少的網路延遲)。內核高速緩存270可為扁平的一維(1D)陣列(例如,大型P2P緩衝器)。
名稱「鏡像高速緩存」指示其佈局特徵。舉例而言,主機高速緩存170上的每一主機高速緩存條目172可以與和內核高速緩存270上的對應實際資料節點DN的內核高速緩存條目272對應的偏移相同的偏移來儲存其相應的元資料(例如,主機高速緩存170中的第十條目可包括與於內核高速緩存270的第十條目處儲存的資料節點DN對應的元資料)。因此,主機高速緩存170的佈局可反映內核高速緩存270的佈局。因此,鏡像高速緩存7可減少資料移動的數目,且例如原因在於主機高速緩存170中存在LBA可指示內核高速緩存270中存在對應的資料節點DN。
圖3A是繪示根據本揭露一些實施例的在系統內進行資料儲存的方法的操作的組合流程圖及系統圖。
參照圖3A,用於處理對儲存於跨層鍵值儲存體系統1中的儲存裝置200上的資料節點DN進行存取的資料存取請求的方法3000A可包括以下操作。
主機100可接收資料存取請求(例如,具有鍵值對的插入操作)(操作3001A)。
可將控制傳遞至主機處理器110,主機處理器110可具有位於主機記憶體120內部的搜尋層150,以使得能夠在搜尋層150中查找鍵(例如,部分鍵),注意,搜尋層150可縮小至在內部指向資料節點DN的LBA的葉節點(操作3002A)。
主機處理器110可使用LBA來查找(例如,搜尋)亦存在於主機記憶體120上的主機高速緩存170,以判斷對應的資料節點DN是否存在於鏡像高速緩存7的內核高速緩存270中(操作3003A)。
主機處理器110可搜尋主機高速緩存170的元資料,且所述搜尋可能造成(i)高速緩存未命中,其中對應的資料節點DN不在或不存在於內核高速緩存270中,或者(ii)高速緩存命中,其中資料節點DN存在於內核高速緩存270中(操作3004A)。
基於確定高速緩存未命中已經發生,主機處理器110可發出(例如,觸發或引起)自儲存器210至位於CMA 230上的內核高速緩存270的讀取(例如,P2P讀取)(操作3005A)。
因應於發出P2P讀取,可將控制傳遞至儲存裝置200,以將資料節點DN填充至內核高速緩存270上(操作3006A)。在將資料節點DN填充至內核高速緩存270中之後,可將控制傳遞回主機100。
基於確定高速緩存命中的發生,或者基於確定資料節點DN已經被填充在內核高速緩存270上,主機100可發出(例如,可觸發或引起)內核呼叫(例如,插入內核呼叫),而此可將控制傳遞至處理電路220(操作3007A)。
因應於內核呼叫,處理電路220可自內核高速緩存270讀取資料節點DN(例如,可將資料節點DN讀取至處理電路220中的本地記憶體中),且可檢索或產生特定鍵的指紋(fp)以縮小鍵-值對在資料節點DN內部的確切位置(操作3008A)。
基於確定鍵-值對的確切位置,處理電路220可對資料節點DN實行操作(例如,插入操作)(例如,處理電路220可在處理電路220中的本地記憶體中對資料節點DN進行操縱(例如,處理或實行一或多個操作),且可將經更新的資料節點DN填充回內核高速緩存270上)(操作3009A)。
基於處理電路220對資料節點DN進行的操作的完成,控制可返回至主機100,以將經更新的資料節點DN持久保存(例如,寫入)至儲存器210(例如,藉由發出自CMA 230返回至儲存器210的P2P寫入)(操作3010A)。
一旦經更新的資料節點DN已經被持久保存至儲存器210,則所述方法可完成並退出(操作3011A)。
圖3B是繪示根據本揭露一些實施例的與圖3A所示操作對應的資料儲存方法的操作的流程圖。
參照圖3B,上面參照圖3A論述的操作(例如,操作3001A至3011A)以簡化的方式以流程圖形式論述,而並未繪示系統1的結構。
舉例而言,主機處理器110可接收與鍵相關聯的請求,以對資料節點DN進行存取(操作3001B)。
主機100(例如,主機100的主機處理器110)可在搜尋層150中查找(例如,定位)鍵,以找到指示資料節點DN的位置的資訊(例如,找到資料節點DN的LBA)(操作3002B)。
主機100可在鏡像高速緩存7的主機高速緩存170部分中查找(例如,搜尋或定位)LBA(操作3003B)。
基於對主機高速緩存170進行搜尋,主機100可判斷資料節點DN是否存在於鏡像高速緩存7的內核高速緩存270部分中(操作3004B)。
基於確定高速緩存未命中,主機100可發出(例如,觸發或引起)自儲存器210至CMA 230的P2P讀取(操作3005B)。
儲存裝置200可將資料節點DN自儲存器210填充至內核高速緩存270上(操作3006B)。
基於確定高速緩存命中或者基於確定資料節點DN已經被填充至內核高速緩存270中,主機100可基於請求(例如,在操作3001B接收的請求)發出(例如,觸發或引起)內核呼叫(操作3007B)。
因應於內核呼叫,控制可被傳遞至處理電路220以在資料節點DN上實行所請求的資料操縱(例如,資料處理)操作,且處理電路220可獲得指紋(fp)以確定鍵值對在資料節點DN內部的確切位置(操作3008B)。
處理電路220可在資料節點DN上實行所請求的資料操縱(例如,資料處理)操作(操作3009B)。
主機100可發出(例如,觸發或引起)P2P寫入,以將經更新的資料節點DN自CMA 230持久保存至儲存器210(操作3010B)。
一旦經更新的資料節點DN已經被持久保存至儲存器210,則可完成方法且可退出操作(操作3011A)。
圖4是繪示根據本揭露一些實施例、在提供可變長度鍵值支持的系統內進行資料儲存的方法的操作的組合流程圖及系統圖。
參照圖4,在一些實施例中,系統1可提供可變長度鍵值支持。另外,如下面參照圖5論述所示,可變長度鍵值支持可被實施成支持基於版本的崩潰一致性的方法。
在一些實施例中,處理跨及多個資料頁面的相對大量的資料(例如影像、視訊等)的AI/ML應用可利用跨層鍵值儲存體系統1。由於根據本揭露實施例的各態樣,每一資料節點DN可具有等於一個資料頁面的大小(例如,4千位元)的固定大小,因此系統1可被配置成藉由將擴展節點EN分派(例如,分配或鏈結)至對應的資料節點DN來支持可變長度的鍵值對,以容納更大的鍵值對。擴展節點EN可由片分配器SA(例如,主機側協助功能)自由不同大小的資料頁面(例如,4千位元、8千位元、16千位元、32千位元等)構成的池提供並分配,進而鏈結至對應的資料節點DN。
因此,提供可變長度鍵值支持的方法4000可包括:在主機100處接收對儲存於儲存裝置200處的資料節點DN進行存取的請求(例如,利用鍵值對的插入操作)(操作4001);查找(例如,定位)與鍵值對對應的對應資料節點DN(操作4002);確定資料節點DN缺少空閒空間(例如,確定資料節點DN中的可用空間量小於用於容納所述請求的空間量)(操作4003);對資料節點DN的元資料MD進行更新,以標記擴展節點EN的存在,並將擴展節點EN的指紋添加至資料節點DN(例如,在資料節點DN內實施自資料節點DN至擴展節點EN的指標(pointer))(操作4004);以及自片分配器SA提取擴展頁面,並將元資料及鍵值對添加至擴展節點EN(操作4005)。
圖5是繪示根據本揭露一些實施例、在提供可變鍵值支持及基於版本的崩潰一致性的系統內進行資料儲存的方法的操作的組合流程圖及系統圖。
參照圖5,在一些實施例中,跨層鍵值儲存體系統1可提供基於版本的崩潰一致性策略,所述基於版本的崩潰一致性策略使用版本化以及原子讀取/寫入(例如,4千位元原子讀取/寫入)來避免與傳統的基於日誌的崩潰一致性技術相關聯的間接費用(overhead cost)。根據本揭露實施例的態樣的基於版本的崩潰一致性模型可利用原子區塊讀取/寫入(例如,4千位元區塊讀取/寫入)來進行異地更新(下面論述),且藉由在崩潰時掃描整個磁盤(例如,儲存器210)來辨識有效資料頁面。
利用版本化,系統1可藉由使用以下方案來利用原子讀取/寫入。對資料節點DN的更新可以「原地」方式寫入。舉例而言,對資料節點DN的更新可以與其先前版本相同的文件偏移(例如,在資料節點DN的先前版本的原始位置處)寫入至儲存器。
對其大小大於一個資料頁面的大小且被分派至資料節點DN的擴展節點EN的更新可以「異地」方式被更新至儲存器。舉例而言,擴展節點EN的先前版本可維持在其原始位置(例如,可不被篡改),且經更新的擴展節點EN可被寫入至與擴展節點EN的先前版本不同的位置。
另外,為了提供正確性(例如,為了保證正確性),在存在擴展節點EN的情況下,在擴展節點EN完全被持久保存於儲存器210上之後資料節點DN可被原地寫入,以提供崩潰一致性。在以任何狀態崩潰(例如,電源故障)的情況下,資料節點DN的先前版本均可得到維持(例如,不被干擾),並且若擴展節點EN的較新版本存在於儲存器210上,則可由片分配器SA進行垃圾收集(例如,使其可由系統1上運行的其他進程使用)。
仍然參照圖5,用於提供可變長度鍵值支持及基於版本的崩潰一致性的方法5000可包括以下內容。系統1可處理對擴展節點EN(例如,Ext.節點3)進行更新的操作,所述擴展節點EN已經由片分配器SA分派至資料節點DN(例如,資料節點3),其中資料節點DN及擴展節點EN中的每一者位於儲存器210中且具有相同的版本號VN(例如,0)(操作5001)。
系統1可在CMA 230上創建資料節點DN及其擴展節點EN的副本(操作5002)。
基於CMA 230中存在的資料節點DN及擴展節點EN的副本,可觸發處理電路220,以(i)將資料節點DN及擴展節點EN讀取至其本地記憶體中,(ii)基於所述操作實行所請求的計算,以及(iii)基於所述操作對擴展節點EN進行更新(操作5003)。
基於操作的完成,處理電路220可利用經更新的版本號VN(例如,更新成1,使得經更新的資料節點DN的元資料MD指向經更新的擴展節點EN)將值(例如,經更新的資料節點DN及經更新的擴展節點EN)寫回至CMA 230(操作5004)。
經更新的擴展節點EN可以異地方式被持久保存(例如,寫入)至儲存器210,使得擴展節點EN的先前版本得到維持(例如,不被篡改)(操作5005)。
基於經更新的擴展節點EN被完全寫入至儲存器210,經更新的資料節點DN可以原地方式(例如,在資料節點DN的先前版本存在的位置處)被持久保存至儲存器210,使得資料節點DN的先前版本被經更新的資料節點DN覆寫,進而使得資料節點DN指向經更新的擴展節點EN,原因在於其內部元資料MD(參見圖4)已經在內部被更新成指向經更新的擴展節點EN(操作5006)。
藉由實施方法5000,系統1可在崩潰事件中具有彈性。舉例而言,若在經更新的擴展節點EN正被持久保存至儲存器210時發生崩潰(例如,在操作5005),由於經更新的擴展節點正以異地方式被持久保存至儲存器210,則操作可被中止並重新運行,對部分寫入的擴展節點進行垃圾收集。
若在經更新的資料節點DN正被以原地方式持久保存至儲存器210(例如,在操作5006)時發生崩潰,則所述操作可簡單地中止並重新運行(對部分寫入的擴展節點進行垃圾收集),且系統1可回滾至資料節點DN與擴展節點EN二者的先前版本。因此,可減少(例如,防止)資料丟失。
圖6是繪示根據本揭露一些實施例、用於包括主機側並行控制(host-side concurrency control)的讀取(或查找)請求的資料儲存方法的操作的流程圖。
參照圖6,主機100(例如,參見圖1及圖2)可藉由實施讀取並行6000(例如,對於查找操作)的方法來控制對儲存裝置200的並行存取,所述方法可包括:在搜尋層上引發無鎖查找(lock-free lookup)(操作6001);由主機100遍歷資料節點DN的元結構,以獲取資料節點DN上的讀取鎖定(操作6002);由主機100使用已經找到的LBA在主機高速緩存170中查找(例如,定位或搜尋)LBA,藉此找到資料節點DN在內核高速緩存270上的位置(操作6003);在高速緩存命中的情況下,獲取主機高速緩存槽上的讀取鎖定(操作6004A);在高速緩存未命中的情況下,發出(例如,觸發或引起)P2P讀取I/O呼叫,以將資料節點DN自儲存器210加載至內核高速緩存270(操作6004B1),並獲取主機高速緩存槽上的寫入鎖定(操作6004B2);基於內核高速緩存在找到的偏移處準備好資料節點DN,觸發處理電路220(例如,FPGA)上的查找內核(系統1可為每一內核功能發出(例如,觸發或引起)多個計算單元以在內核側上達成並行)(操作6005);基於已完成內核執行,控制可被傳遞回主機100,且在退出應用之前,主機100可釋放主機高速緩存槽上的讀取/寫入(鏡像高速緩存)鎖定(操作6006)及資料節點DN元結構上的讀取鎖定(操作6007);以及可退出所述方法(操作6008)。
圖7是繪示根據本揭露一些實施例、用於包括主機側並行控制的寫入(或插入)請求的資料儲存方法的操作的流程圖。
參照圖7,主機100(例如,參見圖1及圖2)可藉由實施寫入並行7000(例如,對於插入操作)的方法來控制對儲存裝置200的並行存取,所述方法可包括:在搜尋層上引發無鎖查找(操作7001);由主機100遍歷資料節點DN的元結構,以獲取資料節點DN上的寫入鎖定(操作7002);由主機100使用已經找到的LBA在主機高速緩存170中查找(例如,定位)LBA,藉此找到資料節點DN在內核高速緩存270上的位置(操作7003);在高速緩存未命中的情況下,發出(例如,引起或觸發)P2P讀取I/O呼叫,以將資料節點DN自儲存器210加載至內核高速緩存270(操作7004A),並獲取主機高速緩存槽上的寫入鎖定(操作7004B);在高速緩存命中的情況下,獲取主機高速緩存槽上的寫入鎖定,而不發出(例如,不觸發或不引起)P2P讀取I/O呼叫(操作7004B);基於內核高速緩存在找到的偏移處準備好資料節點DN,觸發處理電路220(例如,FPGA)上的插入內核(系統1可為每一內核功能發出(例如,觸發或引起)多個計算單元,以在內核側上達成並行)(操作7005);基於已完成內核執行,控制可被傳遞回主機100,且在退出應用之前,主機100可釋放主機高速緩存槽上的寫入(鏡像高速緩存)鎖定(操作7006)及資料節點DN元結構上的寫入鎖定(操作7007);以及可退出應用(操作7008)。
因此,且返回參照圖2,本揭露實施例的態樣可提供優於傳統鍵值儲存體的優點及改進,例如減少主機處理器110處的瓶頸以及利用計算儲存裝置200的高內部頻寬及近資料計算。此種優點及改進可藉由在主機100與計算儲存裝置200之間在邏輯上並在實體上對鍵值儲存體進行分割來達成。因此,與搜尋層150相關聯的職責可由主機100實行,而與資料層250相關聯的職責可由計算儲存裝置200實行。所揭露的實施例亦提供鏡像高速緩存7的結構優點,所述鏡像高速緩存7包括儲存於主機100上的主機高速緩存170及儲存於計算儲存裝置200的CMA 230上的內核高速緩存270。
儘管已參照本文中所闡述的實施例具體示出並闡述了本揭露的實施例,然而此項技術中具有通常知識者應理解,可在不背離如在以下申請專利範圍及其中包括的其功能等效內容中陳述的本揭露的精神及範圍的條件下對本文進行形式及細節上的各種改變。
1:系統/跨層鍵值儲存體系統
7:鏡像高速緩存
100:主機
110:主機處理器
120:主機記憶體
150:搜尋層
170:主機高速緩存
172:主機高速緩存條目
200:儲存裝置
210:儲存器
212:儲存器控制器
220:處理電路
230:共用記憶體區域(CMA)
250:資料層
260:周邊組件快速內連(PCIe)條
270:內核高速緩存
3000A、4000、5000:方法
3001A、3001B、3002A、3002B、3003A、3003B、3004A、3004B、3005A、3005B、3006A、3006B、3007A、3007B、3008A、3008B、3009A、3009B、3010A、3010B、3011A、3011B、4001、4002、4003、4004、4005、5001、5002、5003、5004、5005、5006、6001、6002、6003、6004A、6004B1、6004B2、6005、6006、6007、6008、7001、7002、7003、7004A、7004B、7005、7006、7007、7008:操作
6000:讀取並行
7000:寫入並行
DN:資料節點
EN:擴展節點
MD:元資料
SA:片分配器
VN:版本號
參照以下各圖闡述本揭露的非限制性及非窮盡性實施例,其中除非另外規定,否則在各個視圖中相同的參考編號始終指代相同的部件。
圖1是繪示根據本揭露一些實施例的包括搜尋層及資料層的資料儲存系統的系統圖。
圖2是繪示根據本揭露一些實施例的包括主機高速緩存及內核高速緩存的資料儲存系統的系統圖。
圖3A是繪示根據本揭露一些實施例的在資料儲存系統內進行資料儲存的方法的操作的組合流程圖及系統圖。
圖3B是繪示根據本揭露一些實施例的與圖3A所示操作對應的資料儲存方法的流程圖。
圖4是繪示根據本揭露一些實施例、在提供可變長度鍵值支持的資料儲存系統內進行資料儲存的方法的操作的組合流程圖及系統圖。
圖5是繪示根據本揭露一些實施例、在提供可變鍵值支持及基於版本的崩潰一致性(crash consistency)的資料儲存系統內進行資料儲存的方法的操作的組合流程圖及系統圖。
圖6是繪示根據本揭露一些實施例、用於包括主機側並行控制的讀取(或查找)請求的資料儲存的方法的流程圖。
圖7是繪示根據本揭露一些實施例、用於包括主機側並行控制的寫入請求的資料儲存的方法的流程圖。
在圖式的若干視圖中,對應的參考字符始終指示對應的組件。熟習此項技術者應理解,圖中的元件是為簡潔及清晰起見而示出且未必按比例繪製。舉例而言,可相對於其他元件、層及區誇大圖中的一些元件、層及區的尺寸,以幫助改善各種實施例的清晰度及對各種實施例的理解。另外,可能未示出與對實施例的說明不相關的常見但眾所習知的元件及部件,以便於得到該些各種實施例的障礙較少的視圖,並使說明清楚。
1:系統/跨層鍵值儲存體系統
7:鏡像高速緩存
100:主機
110:主機處理器
120:主機記憶體
150:搜尋層
170:主機高速緩存
200:儲存裝置
210:儲存器
220:處理電路
230:共用記憶體區域(CMA)
250:資料層
260:周邊組件快速內連(PCIe)條
270:內核高速緩存
3000A:方法
3001A、3002A、3003A、3004A、3005A、3006A、3007A、3008A、3009A、3010A、3011A:操作
DN:資料節點
Claims (20)
- 一種資料儲存的方法,所述方法包括: 在鍵值儲存體的主機處接收對儲存於所述鍵值儲存體的儲存裝置上的資料節點進行存取的請求; 在所述主機上的主機高速緩存中定位與所述資料節點對應的位址;以及 確定所述資料節點處於所述儲存裝置上的內核高速緩存中。
- 如請求項1所述的方法,其中儲存與所述資料節點對應的元資料的所述主機高速緩存的條目的偏移與儲存所述資料節點的所述內核高速緩存的條目的偏移相同。
- 如請求項1所述的方法,更包括: 由所述主機在所述主機上的搜尋層中定位所述位址; 引起內核呼叫,用於將對所述請求進行處理的控制自所述主機傳送至所述儲存裝置的處理電路; 由所述處理電路對所述資料節點上的資料進行處理; 將所述資料節點寫入至所述內核高速緩存作為經更新資料節點;以及 由所述主機將所述經更新資料節點自所述內核高速緩存對等寫入至所述儲存裝置的儲存器。
- 如請求項3所述的方法,其中: 所述搜尋層包括樹結構; 所述儲存裝置上的資料層包括所述資料節點; 所述資料節點與對應於所述樹結構的葉節點的雙向鏈接列表內的葉節點對應;以及 所述在所述搜尋層中定位所述位址包括在所述樹結構的內部節點中定位部分鍵。
- 如請求項1所述的方法,更包括: 確定所述資料節點中的可用空間量小於用於容納與所述請求對應的鍵的空間量;以及 對所述資料節點的元資料進行更新以指向擴展節點,所述資料節點的所述元資料指示第一版本號,且所述擴展節點的元資料指示所述第一版本號。
- 如請求項5所述的方法,更包括由片分配器將所述擴展節點分配至來自由不同大小的資料頁面構成的池的所述資料節點。
- 如請求項5所述的方法,更包括: 對所述擴展節點進行更新; 對所述資料節點的所述元資料進行更新以指示第二版本號; 對所述擴展節點的所述元資料進行更新以指示所述第二版本號,所述第二版本號將所述資料節點辨識為經更新資料節點,且將所述擴展節點辨識為經更新擴展節點;以及 對所述經更新資料節點的所述元資料進行更新以指向所述經更新擴展節點。
- 如請求項7所述的方法,更包括: 以異地方式將所述經更新擴展節點寫入至所述儲存裝置的儲存器;以及 以原地方式將所述經更新資料節點寫入至所述儲存器。
- 如請求項1所述的方法,更包括: 由所述主機獲取所述資料節點上的讀取鎖定;或者 由所述主機獲取所述資料節點上的寫入鎖定。
- 一種用於資料儲存的系統,包括: 主機;以及 儲存裝置, 其中所述主機被配置成: 接收對儲存於所述儲存裝置上的資料節點進行存取的請求; 在所述主機上的主機高速緩存中定位與所述資料節點對應的位址;以及 確定所述資料節點處於所述儲存裝置上的內核高速緩存中。
- 如請求項10所述的系統,其中儲存與所述資料節點對應的元資料的所述主機高速緩存的條目的偏移與儲存所述資料節點的所述內核高速緩存的條目的偏移相同。
- 如請求項10所述的系統,其中所述主機被配置成: 在所述主機上的搜尋層中定位所述位址; 確定所述資料節點處於內核高速緩存中; 引起內核呼叫,用於將對所述請求進行處理的控制自所述主機傳送至所述儲存裝置的處理電路;以及 使經更新資料節點自所述內核高速緩存對等寫入至所述儲存裝置的儲存器,且 其中所述儲存裝置的所述處理電路被配置成: 對所述資料節點上的資料進行處理;以及 將所述資料節點寫入至所述內核高速緩存作為經更新資料節點。
- 如請求項12所述的系統,其中: 所述搜尋層包括樹結構; 所述儲存裝置上的資料層包括所述資料節點; 所述資料節點與對應於所述樹結構的葉節點的雙向鏈接列表內的葉節點對應;且 所述主機被配置成基於在所述樹結構的內部節點中定位部分鍵來搜尋所述位址。
- 如請求項10所述的系統,其中所述系統被配置成: 確定所述資料節點中的可用空間量小於用於容納與所述請求對應的鍵的空間量;以及 對所述資料節點的元資料進行更新以指向擴展節點,所述資料節點的所述元資料指示第一版本號,且所述擴展節點的元資料指示所述第一版本號。
- 如請求項14所述的系統,其中所述系統被配置成: 對所述擴展節點進行更新; 對所述資料節點的所述元資料進行更新以指示第二版本號; 對所述擴展節點的所述元資料進行更新以指示所述第二版本號,所述第二版本號將所述資料節點辨識為經更新資料節點,且將所述擴展節點辨識為經更新擴展節點;以及 對所述經更新資料節點的所述元資料進行更新,以指向所述經更新擴展節點。
- 一種儲存裝置,包括: 處理電路; 持續記憶體;以及 共用記憶區域,鏈接至所述處理電路及所述持續記憶體, 其中所述處理電路被配置成藉由自所述共用記憶區域上的內核高速緩存的條目讀取資料節點來處理對儲存於所述儲存裝置上的所述資料節點進行存取的請求。
- 如請求項16所述的儲存裝置,其中所述處理電路被配置成藉由以下方式處理所述請求: 在所述資料節點上實行資料操作;以及 將所述資料節點寫入至所述內核高速緩存作為經更新資料節點。
- 如請求項16所述的儲存裝置,其中所述處理電路被配置成: 對指向所述資料節點的擴展節點進行更新,所述擴展節點及所述資料節點指示第一版本號; 對所述資料節點的元資料進行更新以指示第二版本號; 對所述擴展節點的元資料進行更新以指示所述第二版本號,所述第二版本號將所述資料節點辨識為經更新資料節點,且將所述擴展節點辨識為經更新擴展節點;以及 對所述經更新資料節點的所述元資料進行更新,以指向所述經更新擴展節點。
- 如請求項18所述的儲存裝置,其中所述處理電路被配置成以異地方式將所述經更新擴展節點寫入至所述儲存裝置的儲存器。
- 如請求項18所述的儲存裝置,其中所述處理電路被配置成以原地方式將所述經更新資料節點寫入至所述儲存裝置的儲存器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263331032P | 2022-04-14 | 2022-04-14 | |
US63/331,032 | 2022-04-14 | ||
US17/839,429 US20230333984A1 (en) | 2022-04-14 | 2022-06-13 | Systems and methods for a cross-layer key-value store with a computational storage device |
US17/839,429 | 2022-06-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202340934A true TW202340934A (zh) | 2023-10-16 |
Family
ID=85792545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112114134A TW202340934A (zh) | 2022-04-14 | 2023-04-14 | 用於具有計算儲存裝置的跨層鍵值儲存體的系統和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230333984A1 (zh) |
EP (1) | EP4261672B1 (zh) |
KR (1) | KR20230147545A (zh) |
TW (1) | TW202340934A (zh) |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806101B2 (en) * | 2008-12-30 | 2014-08-12 | Intel Corporation | Metaphysical address space for holding lossy metadata in hardware |
US8370577B2 (en) * | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
WO2013112634A1 (en) * | 2012-01-23 | 2013-08-01 | The Regents Of The University Of California | System and method for implementing transactions using storage device support for atomic updates and flexible interface for managing data logging |
US9230548B2 (en) * | 2012-06-06 | 2016-01-05 | Cypress Semiconductor Corporation | Hybrid hashing scheme for active HMMS |
US20160371355A1 (en) * | 2015-06-19 | 2016-12-22 | Nuodb, Inc. | Techniques for resource description framework modeling within distributed database systems |
US10229051B2 (en) * | 2015-12-30 | 2019-03-12 | Samsung Electronics Co., Ltd. | Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device |
WO2017214862A1 (zh) * | 2016-06-14 | 2017-12-21 | 华为技术有限公司 | 数据访问方法和相关装置及系统 |
US10445004B2 (en) * | 2017-03-30 | 2019-10-15 | Pavilion Data Systems, Inc. | Low latency metadata log |
US10261913B2 (en) * | 2017-04-20 | 2019-04-16 | Alibaba Group Holding Limited | Persistent memory for key-value storage |
US10359954B2 (en) * | 2017-05-31 | 2019-07-23 | Alibaba Group Holding Limited | Method and system for implementing byte-alterable write cache |
US10649856B2 (en) * | 2017-09-01 | 2020-05-12 | International Business Machines Corporation | Concurrent writing to a file during backup of the file |
US10489310B2 (en) * | 2017-10-20 | 2019-11-26 | Hewlett Packard Enterprise Development Lp | Determining cache value currency using persistent markers |
US10915267B2 (en) * | 2017-12-06 | 2021-02-09 | Intel Corporation | Atomic cross-media writes on a storage device |
CN110377531B (zh) * | 2019-07-19 | 2021-08-10 | 清华大学 | 基于日志结构的持久性内存存储引擎装置及控制方法 |
KR20210013483A (ko) * | 2019-07-26 | 2021-02-04 | 삼성전자주식회사 | 불휘발성 메모리 모듈을 포함하는 스토리지 시스템 및 불휘발성 메모리 모듈의 동작 방법 |
US12045173B2 (en) * | 2020-04-18 | 2024-07-23 | International Business Machines Corporation | Stale data recovery using virtual storage metadata |
CN114077378A (zh) * | 2020-08-13 | 2022-02-22 | 华为技术有限公司 | 一种构建索引方法及装置 |
US11429542B2 (en) * | 2020-11-04 | 2022-08-30 | Nec Corporation | Secure data stream processing using trusted execution environments |
CN114691020A (zh) * | 2020-12-30 | 2022-07-01 | 上海曼卜信息科技有限公司 | 基于zns标准提供数据压缩存储设备及其方法 |
US20220358236A1 (en) * | 2021-01-15 | 2022-11-10 | Mark Taylor | Data security using randomized features |
-
2022
- 2022-06-13 US US17/839,429 patent/US20230333984A1/en active Pending
-
2023
- 2023-03-30 EP EP23165615.8A patent/EP4261672B1/en active Active
- 2023-04-13 KR KR1020230048782A patent/KR20230147545A/ko unknown
- 2023-04-14 TW TW112114134A patent/TW202340934A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20230333984A1 (en) | 2023-10-19 |
EP4261672A1 (en) | 2023-10-18 |
KR20230147545A (ko) | 2023-10-23 |
EP4261672B1 (en) | 2024-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108780406B (zh) | 使用rdma共享工作数据的存储器 | |
US11755481B2 (en) | Universal cache management system | |
US10176057B2 (en) | Multi-lock caches | |
US9959279B2 (en) | Multi-tier caching | |
US9582421B1 (en) | Distributed multi-level caching for storage appliances | |
US7711902B2 (en) | Area effective cache with pseudo associative memory | |
US9442858B2 (en) | Solid state drives as a persistent cache for database systems | |
US10055349B2 (en) | Cache coherence protocol | |
US9229869B1 (en) | Multi-lock caches | |
US11449430B2 (en) | Key-value store architecture for key-value devices | |
KR20170131274A (ko) | 물리적 메모리 크기보다 큰 메모리 용량을 가능하게 하기 위한 방법 및 장치 | |
CN116194900A (zh) | 高速缓存技术 | |
Götze et al. | Data management on non-volatile memory: a perspective | |
Li et al. | Phast: Hierarchical concurrent log-free skip list for persistent memory | |
TW202340934A (zh) | 用於具有計算儲存裝置的跨層鍵值儲存體的系統和方法 | |
US20210397581A1 (en) | Sparse file system implemented with multiple cloud services | |
US12019548B2 (en) | Systems and methods for a cross-layer key-value store architecture with a computational storage device | |
CN116909473A (zh) | 具有计算存储设备的跨层键值存储架构的系统和方法 | |
CN116910019A (zh) | 用于具有计算存储设备的跨层键-值存储库的系统和方法 | |
Bikonda | Retina: Cross-Layered Key-Value Store using Computational Storage | |
Li et al. | Eukv: Enabling Efficient Updates for Hybrid PM-DRAM Key-Value Store | |
Papagiannis | Memory-mapped I/O for Fast Storage | |
Sendir | Optimizing NoSQL Databases Through Coherently Attached Flash |