TW202338810A - 持久化記憶裝置、主機和持久化記憶裝置的控制方法 - Google Patents
持久化記憶裝置、主機和持久化記憶裝置的控制方法 Download PDFInfo
- Publication number
- TW202338810A TW202338810A TW111125842A TW111125842A TW202338810A TW 202338810 A TW202338810 A TW 202338810A TW 111125842 A TW111125842 A TW 111125842A TW 111125842 A TW111125842 A TW 111125842A TW 202338810 A TW202338810 A TW 202338810A
- Authority
- TW
- Taiwan
- Prior art keywords
- key
- compression
- command
- host
- user
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 17
- 238000007906 compression Methods 0.000 claims description 145
- 230000006835 compression Effects 0.000 claims description 145
- 230000015654 memory Effects 0.000 claims description 118
- 230000002085 persistent effect Effects 0.000 claims description 106
- 230000004044 response Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 39
- 238000013519 translation Methods 0.000 description 33
- 238000007726 management method Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 23
- 230000010365 information processing Effects 0.000 description 21
- 239000000872 buffer Substances 0.000 description 19
- 239000000284 extract Substances 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 238000013507 mapping Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 125000001475 halogen functional group Chemical group 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address interface arrangements, e.g. address buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本發明提供一種可將鍵值對適當地儲存於非揮發性記憶體中的持久化記憶裝置、主機和持久化記憶裝置的控制方法。根據一實施方式,可提供一種具有記憶介質及控制器的持久化記憶裝置。記憶介質能夠儲存鍵值對。鍵值對中,鍵與值成對。控制器生成對鍵進行識別的識別資訊。控制器能夠將識別資訊發送至主機。
Description
[相關申請案]本申請案享有以日本專利申請案2022-046003號(申請日:2022年3月22日)為基礎申請案的優先權。本申請案藉由參照該基礎申請案而包含基礎申請案的全部內容。
本實施方式是有關於一種持久化記憶裝置、主機和持久化記憶裝置的控制方法。
於具有非揮發性記憶體的持久化記憶裝置中,鍵與值成對的鍵值對有時儲存於非揮發性記憶體中。於持久化記憶裝置中,期望能夠將鍵值對適當地儲存於非揮發性記憶體中。
一實施方式的目的在於提供一種可將鍵值對適當地儲存於非揮發性記憶體中的持久化記憶裝置、主機和持久化記憶裝置的控制方法。
根據一實施方式,可提供一種具有記憶介質及控制器的持久化記憶裝置。記憶介質能夠儲存鍵值對。鍵值對中,鍵與值成對。控制器生成對鍵進行識別的識別資訊。控制器能夠將識別資訊發送至主機。
以下參照隨附圖式來詳細說明實施方式的持久化記憶裝置、主機和持久化記憶裝置的控制方法。再者,本發明不受該實施方式限定。
(實施方式)
實施方式的持久化記憶裝置具有非揮發性記憶體,將鍵與值成對的鍵值對儲存於非揮發性記憶體中,但為了將鍵值對適當地儲存於非揮發性記憶體中而下了功夫。
包含持久化記憶裝置的資訊處理系統可如圖1所示般構成。圖1是表示包含持久化記憶裝置100的資訊處理系統1的硬體結構的圖。
持久化記憶裝置100以能夠通訊的方式連接於主機2,作為相對於主機2而言的外部記憶裝置發揮功能。持久化記憶裝置100能夠持久化地儲存資料。持久化記憶裝置100可為使用非揮發性記憶體對資料持久化地進行記憶的裝置。持久化記憶裝置100亦可為依據通用快閃存儲(Universal Flash Storage,UFS)標準或嵌入式多媒體卡(embedded Multi Media Card,eMMC)標準等的嵌入用途的快閃記憶體、或固體狀態驅動機(Solid State Drive,SSD)等。或者,持久化記憶裝置100亦可為使用磁碟介質對資料持久化地進行記憶的裝置。持久化記憶裝置100亦可為硬磁碟驅動機(Hard Disk Drive,HDD)。主機2例如是微處理機、個人電腦、伺服器、便攜式終端、攝像裝置、遊戲裝置等。
以下,對如下情況進行例示:持久化記憶裝置100為使用非揮發性記憶體對資料持久化地進行記憶的裝置,主機2與持久化記憶裝置100可經由通訊路徑發送/接收依據非揮發性記憶體表達(Non-Volatile Memory express,NVMe)(
TM)標準的訊號。
主機2具有主機控制器3和主機記憶體4。主機控制器3可作為晶片系統(System On Chip,SOC)安裝。主機控制器3具有中央處理單元(Central Processing Unit,CPU),進行用於對持久化記憶裝置100發佈命令而所需的處理。
持久化記憶裝置100具有控制器110、緩衝記憶體140和非揮發性記憶體130。控制器110具有主機介面111、緩衝介面112、CPU 113、隨機存取記憶體(Random Access Memory,RAM)114和記憶體介面115。
非揮發性記憶體130可包含多個記憶體晶片。各記憶體晶片具有記憶體單元陣列。於各記憶體晶片的記憶體單元陣列中,能夠一併地進行資料的寫入和讀出的存取的單位是物理頁。由多個物理頁構成且能夠獨立地擦除資料的最小存取單位是物理區塊。
非揮發性記憶體130例如為與非(Not AND,NAND)型快閃記憶體,但亦可為或非(Not OR,NOR)型快閃記憶體、磁阻式隨機存取記憶體(MRAM(Magnetoresistive Random Access Memory):磁阻記憶體)、相變隨機存取記憶體(PRAM(Phasechange Random Access Memory):相變記憶體)、電阻式隨機存取記憶體(ReRAM(ResistiveRandom Access Memory):電阻變化型記憶體)、鐵電式隨機存取記憶體(Ferroelectric Random Access Memory,FeRAM)等其他非揮發性的半導體記憶體。另外,非揮發性記憶體130可為三維結構的記憶體。
主機控制器3與主機介面111分別依照由NVMe標準規定的協定來運作。
RAM 114是記憶體,作為基於CPU 113的操作區域發揮功能。
緩衝記憶體140作為臨時儲存資訊的記憶體區域發揮功能。緩衝記憶體140例如包含靜態隨機存取記憶體(Static Random Access Memory,SRAM)或動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)等通用記憶體。另外,緩衝記憶體140可搭載於控制器110內部,亦可與控制器110獨立地搭載於控制器110之外。
記憶體介面115經由匯流排與非揮發性記憶體130連接,並對與非揮發性記憶體130的通訊進行控制。
緩衝介面112是對自控制器110向緩衝記憶體140的存取進行控制的控制器,例如是能夠以雙倍資料速率(Double Data Rate,DDR)向緩衝記憶體140存取的控制器。CPU 113視需要將在與非揮發性記憶體130之間傳送的資料儲存於緩衝記憶體140中,並經由主機介面111在與主機記憶體4之間進行資料的傳送。
CPU 113總括地對控制器110的各部進行控制。如圖2所示,CPU 113包括記憶體轉換層113a和存取鍵處理層113b。圖2是概略性地表示持久化記憶裝置100的結構的圖。記憶體轉換層113a對由主機介面111接收到的資料等進行格式轉換以用於非揮發性記憶體130並將其供給至記憶體介面115,或者對自記憶體介面115接收到的資料等進行格式轉換以用於主機2並將其供給至主機介面111。記憶體轉換層113a具有位址轉換映射900。位址轉換映射900是將邏輯位址與物理位址針對多個邏輯位址建立對應關係的資訊。記憶體轉換層113a藉由位址轉換映射900將與由主機介面111接收到的資料等相關聯的邏輯位址轉換成物理位址並供給至記憶體介面115。於非揮發性記憶體130為快閃記憶體的情況下,記憶體轉換層113a亦稱為快閃轉換層(Flash Translation Layer,FTL)。關於存取鍵處理層113b,將後述。
主機2所包括的主機記憶體4例如是DRAM(Dynamic Random Access Memory)等記憶體。如圖3所示,主機記憶體4包括管理用提交佇列(Submission Que,SQ)41、管理用完成佇列(Completion Que,CQ)42、輸入/輸出(Input/Output,I/O)用SQ 43、I/O用CQ 44和緩衝區域45。圖3是表示主機記憶體4的結構的一例的圖。
管理用SQ 41是發佈佇列,於發佈管理用命令時,使命令進入佇列(enqueue)。管理用CQ 42是完成佇列,於管理用命令完成時,使命令的完成佇列入口(Completion Queue Entry,CQE)進入佇列。I/O用SQ 43是發佈佇列,於發佈資料I/O用命令時,使命令進入佇列。I/O用CQ 44於資料I/O用命令完成時,使CQE進入佇列。緩衝區域45被用作資料的I/O中的緩衝器。
主機2於發佈資料I/O用命令時,使該命令進入佇列而至I/O用SQ 43,且將發佈命令的主旨通知至持久化記憶裝置100。與此相應地,持久化記憶裝置100對主機2的I/O用SQ 43進行存取以獲取命令,並執行該命令。另外,於命令的執行完成時,持久化記憶裝置100對I/O用CQ 44進行存取,並使命令的CQE進入佇列而至I/O用CQ 44。主機2可藉由確認I/O用CQ 44而得知命令執行的完成。
發佈佇列和完成佇列於一例中為環形緩衝器。各佇列(發佈佇列和完成佇列中的各佇列)所包括的入口根據頭(Head)及尾(Tail)此兩個變數進行管理。主機2或持久化記憶裝置100可基於由頭和尾指示的位置(頭指標、尾指標)來確定各佇列的參照部位(例如,新進入佇列的命令資訊的位置)。
資料I/O用命令例如是鍵值命令集(set)(鍵值(Key Value,KV)命令集)中所包含的儲存命令、檢索命令。儲存命令是請求寫入鍵值對的命令。鍵值對中,鍵與值成對,值與鍵相關聯。值是可變長度,包含任意大小的資料。檢索命令是請求讀取鍵值對的命令。
例如,於持久化記憶裝置100中,CPU 113根據儲存命令將鍵值對寫入非揮發性記憶體130中。於非揮發性記憶體130中以與鍵相關聯的形式寫入包含資料的值。根據檢索命令,CPU 113自非揮發性記憶體130讀取鍵值對。即,自非揮發性記憶體130讀取與鍵相關聯的值。
與區塊形式的命令(例如,寫入命令、讀取命令)相比,鍵值命令集中所包含的各命令可將資料作為可變長度的值來處理,不需要向邏輯區塊位址的映射,因此能夠進行有效率的命令處理。
依照NVMe標準,可如圖4所示般對鍵值命令集中所包含的各命令(KV命令)300進行定義。圖4表示KV命令300的命令欄位的例子。根據CPU中的通用暫存器的大小,命令中的各欄位由32位元(bit)=4位元組(byte)構成。KV命令300包括命令辨識符(identifier,ID)301、鍵302、鍵303、鍵308、鍵309、資料指標304、資料指標305、資料指標306、資料指標307等的欄位。命令ID 301中包括對儲存命令、檢索命令等進行識別的操作碼(opcode)。鍵302、鍵303、鍵308和鍵309是設想儲存有鍵值對中的鍵的區域,但大小因NVMe標準而受到限制。例如,根據NVMe標準,鍵的最大的大小被限制為16位元組。於16位元組以4位元組為單位進行分割的情況下,四個鍵302、303、308、309分別為32位元以下,以合計計限制為32×4=128位元。
如圖5所示,主機2對用戶鍵231進行壓縮而生成壓縮鍵231a。藉此,可對超過KV命令300的命令欄位的大小限制(例如,128位元)的鍵進行處理,從而可提高KV命令300的柔軟性。圖5是表示主機2和持久化記憶裝置100的功能結構的圖。主機2發佈KV命令300(例如,儲存命令)並使其進入佇列而至I/O用SQ 43,並且以與KV命令300相關聯的形式準備值120(參照圖6)。此時,主機2於KV命令300的鍵302、鍵303、鍵308、鍵309的欄位中包括壓縮鍵231a。另外,主機2於值120中除了包括用戶值232以外亦包括用戶鍵231。與KV命令300的鍵的欄位相比,值120中的欄位的大小限制更寬鬆。因此,值120中可容易地包括用戶鍵231。主機2經由網路5使KV命令300進入佇列而至I/O用SQ 43的通知發送給持久化記憶裝置100。
於持久化記憶裝置100中設置有在邏輯上劃分的區域(名稱空間(Namespace)116)。於該區域中,鍵值對中的鍵是唯一的,但根據壓縮的算法,壓縮鍵有時與其他壓縮鍵衝突(即,具有相同的值)。因此,如圖2所示,於持久化記憶裝置100中,存取鍵處理層113b具有鍵ID管理部113b1和存取鍵映射(access key map)113b2。
於自主機2獲取KV命令300和值120時,持久化記憶裝置100於使用值120的同時執行KV命令300。與此同時,存取鍵處理層113b的鍵ID管理部113b1參照包括壓縮鍵231a與邏輯位址的對應關係的存取鍵映射113b2,確認壓縮鍵231a是否與其他壓縮鍵衝突。若壓縮鍵231a與其他壓縮鍵衝突,則鍵ID管理部113b1生成表示衝突發生的旗標。鍵ID管理部113b1自值120提取出用戶鍵231,生成了對用戶鍵231進行識別的鍵ID(識別資訊)118。鍵ID管理部113b1構成包括鍵ID 118及其對應的壓縮鍵231a的存取鍵117(參照圖8),與其邏輯位址建立對應關係地追加至存取鍵映射113b2(參照圖10)。
於KV命令300的執行完成時,圖5所示的持久化記憶裝置100將作為KV命令300完成的通知的完成佇列入口(CQE)400(參照圖7)發送至主機2。此時,持久化記憶裝置100可於CQE 400中包括鍵ID 118和表示衝突發生的旗標。
主機2使CQE 400自I/O用CQ 44出列(dequeue)。主機2自CQE 400提取出鍵ID 118,並與其對應的壓縮鍵231a一起構成存取鍵117。藉此,主機2和持久化記憶裝置100可分別於此以後的命令處理中藉由存取鍵117來唯一地確定其相關聯的值120。
另外,主機2自CQE 400提取出表示衝突發生的旗標,並根據該旗標而將快取入口(cache entry)222儲存於存取鍵快取(access key cache)22a中。藉此,主機2可藉由參照存取鍵快取22a來對壓縮鍵231a的與其他壓縮鍵的衝突進行管理。
使用圖5來進一步詳細說明主機2和持久化記憶裝置100的功能結構。
於資訊處理系統1中,持久化記憶裝置100可經由網路5連接於主機2。網路5例如可為串列通訊線路等能夠進行有線通訊的網路,亦可由樹型網路構成,亦可由結構(fabric)型網路構成。主機2藉由經由網路5對持久化記憶裝置100發佈命令而進行資料通訊。
於欲將與用戶鍵231相關的用戶值232於持久化記憶裝置100中持久化的情況下,應用軟體23將包括用戶鍵231及用戶值232的PUT請求供給至KV庫(library)22。KV庫22將由用戶鍵231和用戶值232構成的值120與存取鍵117相關聯而構成KV命令300(例如,儲存命令)。KV庫22將儲存命令供給至操作系統(operating system)21。於使儲存命令進入佇列而至I/O用SQ 43時,操作系統21經由網路5將儲存命令進入佇列的通知發送至持久化記憶裝置100。
存取鍵117的結構可利用KV庫22或操作系統21的內核層、硬體實施。存取鍵117是於對持久化記憶裝置100進行資料存取時使用的管理用鍵。存取鍵117包括鍵ID 118及壓縮鍵231a。壓縮鍵231a是主機2對用戶鍵231實施資料壓縮而生成。用戶鍵231的壓縮方法可應用散列計算等壓縮算法。
於發佈儲存命令時,KV庫22將存取鍵117儲存於儲存命令中的圖4所示的鍵302、鍵303、鍵308、鍵309的欄位中。於資料指標304、資料指標305、資料指標306、資料指標307中儲存有緩衝區域45(參照圖3)中配置的值120的位址。
於圖5所示的持久化記憶裝置100中,主機介面111(參照圖2)能夠利用直接記憶體存取(Direct Memory Access,DMA)傳送自儲存命令中的資料指標304、資料指標305、資料指標306、資料指標307中所示的主機記憶體4的緩衝區域45(參照圖3)獲取值120。持久化記憶裝置100設置有在邏輯上被劃分的一個以上的名稱空間116。於接收到儲存命令時,持久化記憶裝置100自儲存命令提取壓縮鍵231a,並自其對應的值120(參照圖6)提取用戶鍵231。鍵ID管理部113b1(參照圖2)對每個名稱空間116參照存取鍵映射113b2來確認壓縮鍵231a的重覆。若壓縮鍵231a重覆,則鍵ID管理部113b1生成對該用戶鍵231進行識別的鍵ID 118。藉此,於各名稱空間116中,在與衝突的壓縮鍵231a之間不存在鍵ID 118的重覆,不存在包括鍵ID 118在內的存取鍵117的重覆。
再者,於存在多個名稱空間116的情況下,於不同的名稱空間116之間,在與衝突的壓縮鍵231a之間鍵ID 118亦可重覆。另外,於各名稱空間116中,在與不衝突的壓縮鍵231a之間鍵ID 118亦可重覆。
持久化記憶裝置100將儲存命令中所包含的由用戶鍵231和用戶值232構成的值120與存取鍵117相關聯地儲存於非揮發性記憶體130中並進行持久化。於完成將值120儲存於非揮發性記憶體130中後,持久化記憶裝置100將鍵ID 118包含於CQE 400中並通知至主機2。
於對持久化記憶裝置100執行的儲存命令完成的時刻,主機2接收鍵ID 118。KV庫22利用與所接收到的鍵ID 118對應的用戶鍵231構成快取入口222,並將其儲存於存取鍵快取22a中。存取鍵快取22a可於主機2啟動時由主機控制器3於主機記憶體4上構成。
KV庫22能夠藉由自CQE 400提取鍵ID 118等來獲取鍵ID 118。於KV庫22獲取鍵ID 118時,設為於其對應的壓縮鍵231a中發生了與其他壓縮鍵的衝突,構成包括鍵ID 118及其對應的用戶鍵231的快取入口222並快取至存取鍵快取22a中。
存取鍵快取22a的管理可利用KV庫22或操作系統21的內核層、硬體實施。存取鍵快取22a是將與用戶鍵231對應的鍵ID 118作為快取入口222來儲存的快取機構。存取鍵快取22a優先儲存與壓縮鍵231a衝突的快取入口222。於欲讀出與用戶鍵231相關的用戶值232的情況下,應用軟體23將GET請求供給至KV庫22。KV庫22根據GET請求而參照存取鍵快取22a中的快取入口222。
例如,於發佈I/O用命令時等,KV庫22對存取鍵快取22a進行存取。於與用戶鍵231對應的鍵ID 118被快取至存取鍵快取22a中的情況下,KV庫22構成包括鍵ID 118及其對應的壓縮鍵231a的存取鍵117。於與用戶鍵231對應的鍵ID 118未被快取至存取鍵快取22a的情況下,KV庫22構成包括通配符鍵ID 118a及壓縮鍵231a的存取鍵117a。通配符鍵ID 118a表示任意的ID。通配符鍵ID 118a是指其對應的壓縮鍵231a與其他壓縮鍵不衝突或將來衝突的多個壓縮鍵中的最初生成的壓縮鍵。
於應用軟體23自持久化記憶裝置100讀出與用戶鍵231相關的用戶值232的情況下,應用軟體23將用戶鍵231的GET請求供給至KV庫22。KV庫22根據GET請求而構成存取鍵117並對持久化記憶裝置100發佈檢索命令。
於發佈檢索命令時,KV庫22將存取鍵117儲存於檢索命令中的圖4所示的鍵302、鍵303、鍵308、鍵309的欄位中。於資料指標304、資料指標305、資料指標306、資料指標307中儲存有緩衝區域45(參照圖3)中的被確保為儲存值用途的區域的位址。
獲取檢索命令後的持久化記憶裝置100對與檢索命令中所包含的存取鍵117一致的存取鍵117進行檢索,讀出與存取鍵117相關的值120,並發送至主機2。主機介面111利用直接記憶體存取(Direct Memory Access,DMA)傳送將與存取鍵117對應的值120發送至由資料指標304、資料指標305、資料指標306、資料指標307進行了位址指定的區域中。
接收到檢索命令的響應的KV庫22自值120提取用戶鍵231及用戶值232,並將用戶值232供給至應用軟體23。
接下來,使用圖6來說明值120的欄位。圖6是表示值120的欄位的圖。
值120的大小(值長度)是可變的並由KV命令300指定。如圖6所示,值120包括用戶鍵長度的列601、用戶鍵231的列602、用戶值長度的列603、用戶值232的列604等的多個欄位。已確定用戶鍵長度的列601、用戶值長度的列603中的欄位的大小較值120的值長度而言更短。依照NVMe標準的表示值長度的欄位的定義,各欄位的大小被限制為32位元。另一方面,用戶鍵231的列602中的欄位的大小為可變長度,可於用戶鍵長度的列601的欄位中指定能夠儲存用戶鍵231的任意大小。用戶值232的列604中的欄位的大小為可變長度,可於用戶值長度的列603的欄位中指定能夠儲存用戶值232的任意大小。
例如,於發佈儲存命令時,主機2構成如圖6所示般的值120,將應寫入的用戶鍵231、用戶值232分別儲存於用戶鍵231的列602、用戶值232的列604的欄位中。於檢索命令響應時,持久化記憶裝置100構成如圖6所示般的值120,將所讀取的用戶鍵231、用戶值232分別儲存於用戶鍵231的列602、用戶值232的列604中的欄位中。
接下來,使用圖7來說明完成佇列入口(CQE)400的欄位。圖7是表示完成佇列入口(CQE)400的欄位的圖。
CQE 400是命令完成的通知。CQE 400包括命令固有的資料401、命令固有的資料402、狀態/命令ID 403等的欄位。命令固有的資料401、命令固有的資料402的欄位最大可利用32×2=64位元。但是,於命令固有的資料401、命令固有的資料402被擴展的情況下,可包括KV命令300的鍵302、鍵303、鍵308、鍵309的合計大小(例如,32×4=128位元)或更大的資料長度的鍵ID 118。狀態/命令ID 403中除了可包含表示KV命令300的完成或錯誤的狀態、或用於識別KV命令300的ID以外,亦可包含表示壓縮鍵231a的衝突發生的旗標。狀態/命令ID 403的大小例如為32位元。
例如,於在鍵ID管理部113b1中生成鍵ID 118的情況下,主機介面111於將儲存命令完成的情況通知至主機2時,將鍵ID 118儲存於CQE 400的命令固有的資料401、命令固有的資料402的欄位中,並將表示衝突發生的旗標儲存於CQE 400的狀態/命令ID 403的欄位中。主機介面111經由網路5及操作系統21將CQE 400通知至KV庫22。
接下來,使用圖8來說明存取鍵117(參照圖5)。圖8是表示存取鍵117的欄位的圖。
存取鍵117的大小(存取鍵長度)被限制為KV命令300的鍵302、鍵303、鍵308、鍵309的欄位的合計大小(例如,32×4=128位元)。如圖8所示,存取鍵117包括鍵ID 118、壓縮鍵231a的欄位。鍵ID 118的大小可指定在CQE 400的命令固有的資料401、命令固有的資料402中所通知的最大64位元。與此相應地,壓縮鍵231a的大小例如確保最小64位元。
再者,可考慮壓縮鍵231a的大小可根據用戶鍵231的大小變化。壓縮鍵231a的大小可確保為例如64位元以上的大小,鍵ID 118的大小可確保為自存取鍵117的大小減去壓縮鍵231a的大小後的大小。
對於存取鍵117的用例,主機介面111對每個接收到的KV命令300的處理進行驅動。
於儲存命令的情況下,考慮到自主機2接收到的壓縮鍵231a於存取鍵映射113b2中發生衝突,鍵ID管理部113b1生成鍵ID 118。鍵ID管理部113b1包括所生成的鍵ID 118及其對應的壓縮鍵231a而構成存取鍵117。持久化記憶裝置100自主機2接收包括用戶鍵231和用戶值232的值120,並將存取鍵處理層113b使用的位址空間中的邏輯位址儲存於存取鍵映射113b2中。記憶體介面115確保非揮發性記憶體130的物理位址並進行非揮發化,所述非揮發性記憶體130示出儲存包括用戶鍵231和用戶值232的值120的物理寫入目的地。記憶體轉換層113a儲存邏輯位址與物理位址之間的對應關係。
於檢索命令的情況下,存取鍵處理層113b自存取鍵映射113b2獲取儲存有與存取鍵117對應的值120的邏輯位址,並對記憶體轉換層113a請求讀取值120。記憶體轉換層113a自邏輯位址獲取儲存有值120的物理位址,記憶體介面115自該物理位址讀取值120。主機介面111將所讀取的值120發送至主機2。
接下來,使用圖9來說明存取鍵快取22a(參照圖5)的登錄內容。圖9是表示存取鍵快取22a的登錄內容的圖。
存取鍵快取22a是將與用戶鍵231對應的鍵ID 118作為快取入口222來儲存的快取機構。存取鍵快取22a優先儲存與壓縮鍵231a衝突的快取入口222。存取鍵快取22a的登錄內容具有二維的資料結構,具有鍵ID 118的列、用戶鍵231的列。各行表示快取入口222。
存取鍵快取22a於主機2啟動時於主機記憶體4上構成。主機2於利用自持久化記憶裝置100發送的CQE 400中的旗標來識別出壓縮鍵231a的衝突發生時,將CQE 400中所包含的鍵ID 118和與其對應的用戶鍵231組合而構成快取入口222,並登錄至存取鍵快取22a中。
主機2藉由參照存取鍵快取22a,可掌握壓縮鍵231a的衝突的發生順序。於圖9的情況下,首先,與在用戶鍵「User_Key2」的壓縮鍵231a中發生了衝突相應地,將快取入口222-1登錄至存取鍵快取22a中。接下來,與在用戶鍵「User_Key222」的壓縮鍵231a中發生了衝突相應地,將快取入口222-2登錄至存取鍵快取22a中。
接下來,使用圖10來說明存取鍵映射113b2的資料結構。圖10是表示存取鍵映射113b2的資料結構的圖。
存取鍵映射113b2是將存取鍵117與邏輯位址針對一個以上的存取鍵建立對應關係的資訊。存取鍵映射113b2具有二維資料結構,具有存取鍵117的列、邏輯位址的列804。存取鍵117的列包括鍵ID 118的列、壓縮鍵231a的列。各行示出一個鍵值對的入口1132。邏輯位址的列804儲存有鍵值對的儲存位置的邏輯位址(例如,鍵值對的前頭位元的邏輯位址)。
存取鍵映射113b2於持久化記憶裝置100啟動時由存取鍵處理層113b於緩衝記憶體140上構成。於對非揮發性記憶體130進行鍵值對的寫入的情況下,存取鍵處理層113b由存取鍵117及其應寫入的邏輯位址來構成入口1132,並添加至存取鍵映射113b2中。於存取鍵映射113b2中,入口1132按照寫入順序(例如,自上面的行向下面的行)排列。
於對保存於非揮發性記憶體130中的值進行讀取的情況下,存取鍵處理層113b參照邏輯位址的列804自存取鍵117的列中抽出對應的邏輯位址,記憶體轉換層113a利用位址轉換映射900對該邏輯位址進行位址轉換,並自轉換後的物理位址讀取值。
於圖10的情況下,上三個入口1132-1~1132-3中,鍵ID 118為「00」而共通,但壓縮鍵231a為「XXXX」、「YYYY」、「ZZZZ」而相互不同。即,於壓縮鍵231a不發生重覆的期間,鍵ID管理部113b1可繼承剛剛分配給鍵值對的值作為鍵ID 118來應用。藉此,於入口1132-1~入口1132-3中,存取鍵為「00XXXX」、「00YYYY」、「00ZZZZ」而相互不同,因此相互區別,可儲存於鍵值對不同的邏輯位址「00000000」、「00010000」、「00020000」中。
另一方面,下兩個入口1132-3~1132-4中,鍵ID 118為「00」、「01」而相互不同,壓縮鍵231a為「ZZZZ」、「ZZZZ」而相互重覆。即,於壓縮鍵231a發生重覆時,鍵ID管理部113b1將與剛剛分配給鍵值對的值不同的值作為鍵ID 118來應用。藉此,於入口1132-3~入口1132-4中,存取鍵為「00ZZZZ」、「01ZZZZ」而相互不同,因此可相互區別,可儲存於鍵值對不同的邏輯位址「00020000」、「00030000」中。即,由於用戶鍵231不同,因此分配了不同的鍵ID 118,即便壓縮鍵231a相同亦可區別。
接下來,使用圖11來說明位址轉換映射900的資料結構。圖11是表示位址轉換映射900的資料結構的圖。
位址轉換映射900是將邏輯位址與物理位址針對一個以上的邏輯位址建立對應關係的資訊。位址轉換映射900具有二維資料結構,具有邏輯位址的列901、物理位址的列902。各行示出一個鍵值對的入口1133。於物理位址中,於列902中儲存有非揮發性記憶體130中的鍵值對的儲存位置的物理位址(例如,鍵值對的前頭位元的物理位址)。
再者,對於鍵值對的各位元,於邏輯位址是順序的(sequential)、但物理位址不連續的情況下,亦可以順序的物理位址為單位分割鍵值對,分別構成為入口1133。
位址轉換映射900於持久化記憶裝置100啟動時由記憶體轉換層113a於緩衝記憶體140上構成。
於對非揮發性記憶體130進行鍵值對的寫入的情況下,記憶體轉換層113a由鍵值對的邏輯位址及分配給該邏輯位址的物理位址構成入口1133,並添加至位址轉換映射900中。
例如,記憶體轉換層113a於將邏輯位址「00000000」的鍵值對儲存於物理位址「10001000」中的情況下,將包含邏輯位址「00000000」及物理位址「10001000」的入口1133-1添加至位址轉換映射900中。記憶體轉換層113a於將邏輯位址「00030000」的鍵值對儲存於物理位址「40004000」中的情況下,將包含邏輯位址「00030000」及物理位址「40004000」的入口1133-4添加至位址轉換映射900中。
於對保存於非揮發性記憶體130中的值進行讀取的情況下,記憶體轉換層113a參照物理位址的列902自位址轉換映射900的邏輯位址的列901中抽出對應的物理位址,並自轉換後的物理位址讀取值。
再者,邏輯位址與物理位址的對應關係可藉由持久化記憶裝置100所執行的垃圾回收(garbage collection)或損耗平衡的處理來進行更新。
接下來,使用圖12來說明儲存於非揮發性記憶體130中的鍵值對。圖12是表示儲存於非揮發性記憶體130中的鍵值對的圖。
圖12概念性地表示儲存於非揮發性記憶體130中的鍵值對。圖12中,列1001表示物理位址,列1002表示用戶鍵231,列1003表示用戶值232,各行表示一個鍵值對。
例如,於自物理位址「10001000」開始的記憶體區域中儲存有包含用戶鍵「User_Key0」和用戶值「User_Value0」的鍵值對132-1。於自物理位址「20002000」開始的記憶體區域中儲存有包含用戶鍵「User_Key1」和用戶值「-(null)」的鍵值對132-2。用戶值「-(null)」可作為雖然資料長度為0但以null表示某些資訊的有效值來處理。於自物理位址「30003000」開始的記憶體區域中儲存有包含用戶鍵「User_Key2」和用戶值「User_Value2」的鍵值對132-3。於自物理位址「40004000」開始的記憶體區域中儲存有包含用戶鍵「User_Key222」和用戶值「User_Value222」的鍵值對132-4。
於圖5所示的資訊處理系統1中,可變長度的用戶鍵231可由KV命令300的命令欄位(參照圖4)及CQE 400的欄位(參照圖7)來處理。由於KV命令300的命令欄位為固定長度,因此無法直接對可變長度的用戶鍵231進行處理,但由自用戶鍵231生成的固定長度的壓縮鍵231a及持久化記憶裝置100生成的鍵ID 118唯一地管理用戶鍵231。例如,於使用散列值(hashed value)作為壓縮鍵231a的情況下,雖然概率低但會發生散列值的衝突問題,但可藉由分配不同的鍵ID 118來解決衝突問題。另外,藉由利用持久化記憶裝置100對存取鍵117與用戶鍵231的對應關係進行管理,能夠保證存取鍵117與用戶鍵231的對應關係。
進而,資訊處理系統1提供在由持久化記憶裝置100生成鍵ID 118時所需的與主機2共享鍵ID 118的有效率的功能。於不發生壓縮鍵231a的衝突時,即便KV庫22不指定鍵ID 118,持久化記憶裝置100亦可利用壓縮鍵231a識別用戶鍵231。因此,KV庫22將與壓縮鍵231a衝突的用戶鍵231所對應的鍵ID 118優先快取至存取鍵快取22a中。此時,由於在儲存命令的處理完成的時機將發生了衝突的情況通知至KV庫22,因此之前完成了儲存命令的處理的衝突的用戶鍵231的鍵ID 118未被快取。但是,由於追加至存取鍵映射113b2的順序能夠由鍵ID管理部113b1管理,因此KV庫22能夠將通配符鍵ID指定為鍵ID來進行資料存取。
接下來,使用圖13來說明資訊處理系統1啟動時的動作。圖13是表示資訊處理系統1的啟動處理的流程圖。
資訊處理系統1於啟動之前待機(S1中為否(No)),於啟動時(S1中為是(Yes))進行硬體的初始化處理(S2)。於硬體的初始化處理中,除了通常的初始化設定之外,針對持久化記憶裝置100的每個名稱空間116設定鍵ID 118的生成方法。例如,鍵ID 118的生成方法可為如下方法:於在以16進制表示的情況下以兩位數的格式將00設為初始值並應設為不同的值時自00遞增。資訊處理系統1進行驅動器的初始化處理(S3)。於由驅動器進行鍵ID 118的生成的情況下,於驅動器的初始化處理中,除了通常的初始化設定之外,設定壓縮鍵231a的生成方法(壓縮算法)。資訊處理系統1啟動應用軟體23(S4)。
接下來,使用圖14來說明與儲存命令相關的主機2的動作。圖14是表示與儲存命令相關的主機2的動作的流程圖。
於主機2中,於自應用軟體23接收到PUT請求時(S11),KV庫22自PUT請求中提取用戶鍵231,並以S3中設定的壓縮算法生成壓縮鍵231a(S12)。於該壓縮算法中可指定散列計算等。KV庫22判定在S11的PUT請求中接收到的用戶鍵231是否儲存於存取鍵快取22a的用戶鍵的列702中(S13)。
於用戶鍵231未儲存於存取鍵快取22a的用戶鍵的列702中的情況下(S13中為否),KV庫22於鍵ID 118中使用通配符鍵ID(S14)。
於用戶鍵231儲存於存取鍵快取22a的用戶鍵的列702中的情況下(S13中為是),KV庫22自存取鍵快取22a讀出快取入口222,並獲取快取入口222中所包含的鍵ID 118(S15)。
KV庫22使用S14或S15中指定的鍵ID 118及S12中生成的壓縮鍵231a來構成存取鍵117(S16)。KV庫22使用存取鍵117來構成儲存命令的命令欄位(參照圖4),經由操作系統21將儲存命令發送至持久化記憶裝置100(S17)。即,操作系統21使儲存命令進入佇列而至I/O用SQ 43,並將其進入佇列的通知發送至持久化記憶裝置100。
KV庫22於經由操作系統21自持久化記憶裝置100接收到表示儲存命令完成的CQE 400之前待機(S18中為否)。於KV庫22經由操作系統21自持久化記憶裝置100接收到CQE 400時(S18中為是),操作系統21將CQE 400自I/O用CQ 44中出佇,並且將CQE 400通知至KV庫22。KV庫22判定在CQE 400中是否包含表示壓縮鍵衝突的旗標(S19)。
於在CQE 400中包含表示壓縮鍵衝突的旗標的情況下(S19中為是),KV庫22獲取CQE 400中所包含的鍵ID 118,而構成包括鍵ID 118及用戶鍵231的快取入口222。KV庫22將快取入口222追加至存取鍵快取22a(S20)。此時,KV庫22於儲存命令之前完成了儲存,自持久化記憶裝置100中讀出與壓縮鍵231a衝突但未被快取至存取鍵快取22a中的用戶鍵231、以及用於識別該用戶鍵231的鍵ID 118,藉此可對存取鍵快取22a進行更新。KV庫22將與PUT請求相應的處理已完成的情況通知至應用軟體23(S21)。
於在CQE 400中不包含表示壓縮鍵衝突的旗標的情況下(S19中為否),KV庫22不構成快取入口222,將與PUT請求相應的處理已完成的情況通知至應用軟體23(S21)。
接下來,使用圖15來說明與儲存命令相關的持久化記憶裝置100的動作。圖15是表示與儲存命令相關的持久化記憶裝置100的動作的流程圖。
於持久化記憶裝置100中,於自主機2接收到儲存命令時(S31),控制器110判定鍵ID 118是否為通配符ID(S32)。控制器110從自儲存命令的鍵302、鍵303、鍵308、鍵309的欄位獲得的存取鍵117(參照圖8)中提取鍵ID 118。
於提取出的鍵ID 118是通配符鍵ID(例如,以十六進制表示為「FF」)的情況下(S32中為是),控制器110判定於存取鍵映射113b2上是否實質上存在儲存命令所請求的用戶鍵231(S33)。雖然於存取鍵映射113b2上未明示地存在用戶鍵231,但由控制器110對用戶鍵231與存取鍵117的對應關係進行管理。因此,控制器110可判斷是否判定於存取鍵映射113b2上是否實質上存在儲存命令所請求的用戶鍵231。
控制器110自儲存命令所指定的值120的用戶鍵231的列602的欄位(參照圖6)中提取用戶鍵231。控制器110參照存取鍵映射113b2(參照圖10)。控制器110列出與存取鍵映射113b2上的多個存取鍵117對應的多個用戶鍵231。控制器110判斷所列出的多個用戶鍵231中是否存在與儲存命令所請求的用戶鍵231一致的用戶鍵231。
若存在一致的用戶鍵231(S33中為是),則控制器110判定不發生衝突。例如,於對之前儲存的用戶鍵231進行儲存時,若存在存取鍵「00XXXX」,則此次的儲存是重寫,可判斷為不發生衝突(參照圖10)。
若不存在一致的用戶鍵231(S33中為否),則控制器110可判斷為發生了衝突。例如,於對某個壓縮鍵(例如對User_Key2進行了壓縮的ZZZZ)進行儲存時,若於列出的多個用戶鍵231中不存在「User_Key2」,則設為此次的儲存為用戶鍵「User_Key2」的初次寫入,可判定為發生了衝突(參照圖9、圖10)。或者,於對與壓縮鍵衝突的用戶鍵(例如對User_Key222進行了壓縮的ZZZZ)進行儲存時,若於列出的多個用戶鍵231中不存在「User_Key222」,則設為此次的儲存為用戶鍵「User_Key222」的初次寫入,可判斷為發生了衝突(參照圖9、圖10)。
於在存取鍵映射113b2上實質上不存在儲存命令所請求的用戶鍵231的情況下(S33中為否),控制器110生成表示衝突發生的旗標,並且生成鍵ID 118,構成存取鍵117(S34)。控制器110參照存取鍵映射113b2(參照圖10)來確定與儲存命令所請求的壓縮鍵231a相同的壓縮鍵231a所對應的鍵ID 118。控制器110生成與所確定的鍵ID 118不同的鍵ID 118來作為與儲存命令所請求的壓縮鍵231a對應的鍵ID 118。控制器110可使所確定的鍵ID 118的值遞增,並生成具有遞增的值的鍵ID 118。控制器110構成包括所生成的鍵ID 118及儲存命令所請求的壓縮鍵231a的存取鍵117,對存取鍵117分配邏輯位址。控制器110利用存取鍵117及其對應的邏輯位址構成入口1132,並追加入口1132以更新存取鍵映射113b2。
例如,於在S33中提取出壓縮鍵「ZZZZ」的情況下,控制器110參照圖10所示的不存在入口1132-4的狀態下的存取鍵映射113b2,與壓縮鍵「ZZZZ」相同的壓縮鍵「ZZZZ」存在於入口1132-3中,判定為壓縮鍵「ZZZZ」發生衝突。與此相應地,控制器110確定入口1132-3的鍵ID「00」來作為與提取出的壓縮鍵「ZZZZ」相同的壓縮鍵「ZZZZ」所對應的鍵ID 118。控制器110可生成具有「00」經遞增後的值「01」的鍵ID 118來作為與S33中提取出的壓縮鍵「ZZZZ」對應的鍵ID 118。控制器110構成包括鍵ID「01」及壓縮鍵「ZZZZ」的存取鍵117。控制器110對存取鍵117分配邏輯位址,利用存取鍵117及邏輯位址構成入口1132-4,並追加入口1132-4以更新存取鍵映射113b2。
於提取出的鍵ID並非通配符鍵ID的情況下(S32為否),控制器110設為已經生成了鍵ID,並對儲存命令中所包含的存取鍵117分配邏輯位址。控制器110利用存取鍵117及邏輯位址構成入口1132,並追加入口1132以更新存取鍵映射113b2。
於在存取鍵映射113b2上實質上存在儲存命令所請求的用戶鍵231的情況下(S33中為是),控制器110對儲存命令中所包含的存取鍵117分配邏輯位址。控制器110利用存取鍵117及邏輯位址構成入口1132,並追加入口1132以更新存取鍵映射113b2。
控制器110基於更新後的存取鍵映射113b2及位址轉換映射900來獲取鍵值對的寫入目的地的物理位址(S35)。控制器110參照存取鍵映射113b2,確定鍵值對的與存取鍵117對應的邏輯位址。控制器110參照位址轉換映射900,確定與所確定的邏輯位址對應的物理位址。控制器110將所確定的物理位址設為寫入目的地的物理位址。
控制器110對非揮發性記憶體130發佈包含所獲取的物理位址及鍵值對的寫入指示。藉此,非揮發性記憶體130根據寫入指示將用戶鍵231及用戶值232寫入至該物理位址並進行非揮發化(S36)。非揮發性記憶體130於完成寫入指示的執行時,將完成通知發送至控制器110。控制器110於自非揮發性記憶體130接收到完成通知時,生成CQE 400作為儲存命令的完成通知。此時,於在S33中判定為否且判斷為發生了衝突的情況下,控制器110可生成CQE 400,以包括在S33中生成的表示衝突發生的旗標及在S34中生成的鍵ID 118。控制器110將所生成的CQE 400發送至主機2(S37)。
接下來,使用圖16來說明與檢索命令相關的主機2的動作。圖16是表示與檢索命令相關的主機2的動作的流程圖。於圖16的例子中,主機2中的KV庫22不保證自持久化記憶裝置100接收到的用戶鍵231與應用軟體23請求的用戶鍵231一致。因此,保證在確認應用軟體23是否與請求一致的處理、或請求的調度(scheduling)等中讀取適當的資料。
於主機2中,KV庫22於自應用軟體23接收到GET請求時(S41),自GET請求中提取用戶鍵231,並利用S3中設定的壓縮算法生成壓縮鍵231a(S42)。KV庫22判定S41的GET請求中所包含的用戶鍵231是否儲存於存取鍵快取22a的用戶鍵的列702中(S43)。
於用戶鍵231未儲存於存取鍵快取22a的用戶鍵的列702中的情況下(S43中為否),KV庫22將通配符鍵ID指定為鍵ID 118(S44)。
於用戶鍵231儲存於存取鍵快取22a的用戶鍵的列702中的情況下(S43中為是),KV庫22自存取鍵快取22a讀出快取入口222,並獲取快取入口222中所包含的鍵ID 118(S45)。
KV庫22使用S44或S45中指定的鍵ID 118及S42中生成的壓縮鍵231a來構成存取鍵117(S46)。KV庫22使用存取鍵117來構成檢索命令的命令欄位(參照圖4),經由操作系統21將檢索命令發送至持久化記憶裝置100(S47)。即,操作系統21使檢索命令進入佇列而至I/O用SQ 43,並將該進入佇列的通知發送至持久化記憶裝置100。
KV庫22於經由操作系統21自持久化記憶裝置100接收到鍵值對(用戶鍵231、用戶值232)之前待機(S48中為否)。KV庫22於經由操作系統21自持久化記憶裝置100接收到鍵值對時(S48中為是),將鍵值對供給至應用軟體23(S49)。
接下來,使用圖17來說明與檢索命令相關的持久化記憶裝置100的動作。圖17是表示與檢索命令相關的持久化記憶裝置100的動作的流程圖。
於持久化記憶裝置100中,控制器110於自主機2接收到檢索命令時(S51),判定鍵ID 118是否為通配符鍵ID(S52)。控制器110從自檢索命令的鍵302、鍵303、鍵308、鍵309的欄位獲得的存取鍵117的前半部分(參照圖4)中提取鍵ID 118。
於提取出的鍵ID 118為通配符鍵ID的情況下(S52中為是),檢索命令中所包含的壓縮鍵231a有可能是將來可能發生衝突的多個壓縮鍵231a中的最初生成的壓縮鍵231a。因此,控制器110自存取鍵映射113b2的列802中讀出具有與檢索命令中所包含的壓縮鍵231a相同的壓縮鍵231a的鍵ID 118(S53),並利用讀出的鍵ID中寫入順序最早的鍵ID 118構成存取鍵117(S54)。
例如,於檢索命令中所包含的壓縮鍵231a為「ZZZZ」的情況下,在圖10所示的存取鍵映射113b2中,有兩個壓縮鍵231a為「ZZZZ」的入口1132-3、1132-4。於在存取鍵映射113b2中入口1132自上一行至下一行按照寫入順序排列的情況下,入口1132-3、入口1132-4中的入口1132-3為寫入順序最早的入口,入口1132-3的鍵ID「00」為寫入順序最早的鍵ID 118。控制器110將鍵ID「00」與壓縮鍵「ZZZZ」合併而成的「00ZZZZ」構成為存取鍵117。
如圖17所示,於提取出的鍵ID 118並非通配符鍵ID的情況下(S52中為否),控制器110自檢索命令提取存取鍵117。
控制器110基於存取鍵映射113b2與位址轉換映射900獲取鍵值對的讀取目的地的物理位址(S55)。控制器110參照存取鍵映射113b2來確定鍵值對的與存取鍵117對應的邏輯位址。控制器110參照位址轉換映射900來確定與所確定的邏輯位址對應的物理位址。控制器110將所確定的物理位址設為讀取目的地的物理位址。
控制器110對非揮發性記憶體130發佈包含所獲取的物理位址的讀取指示。藉此,非揮發性記憶體130根據讀取指示自該物理位址讀取包含用戶鍵231及用戶值232的鍵值對(S56)。非揮發性記憶體130將讀取的用戶鍵231及用戶值232發送至控制器110。控制器110於自非揮發性記憶體130接收到用戶鍵231及用戶值232時,將用戶鍵231及用戶值232發送至主機2(S57)。
如以上般,於實施方式中,在資訊處理系統1中,主機2生成對用戶鍵進行了壓縮的壓縮鍵,且在發佈KV命令時使鍵的欄位中包含壓縮鍵。藉此,能夠於KV命令的命令欄位中在能夠指定的鍵長度的限制內對可變長度的用戶鍵進行管理,能夠進行不受命令欄位的限制的資料交接。
另外,於實施方式中,在資訊處理系統1中,持久化記憶裝置100於接收到包括壓縮鍵的KV命令時,針對每個名稱空間判定壓縮鍵是否與其他壓縮鍵衝突,於發生衝突的情況下,生成對壓縮前的用戶鍵進行識別的鍵ID。藉此,若構成包括鍵ID及壓縮鍵的存取鍵,則可防止壓縮鍵的衝突。
另外,於實施方式中,在資訊處理系統1中,持久化記憶裝置100將鍵ID發送至主機2。主機2使用鍵ID及壓縮鍵而生成存取鍵,使用存取鍵對持久化記憶裝置100發佈請求資料存取的KV命令。藉此,可防止壓縮鍵的衝突,於KV命令和CQE的有限的欄位中能夠進行資訊的交換,能夠唯一地進行資料存取。
另外,於實施方式中,在資訊處理系統1中,持久化記憶裝置100與主機2共享鍵ID以唯一地進行資料存取,且於主機2中將與壓縮鍵衝突的鍵ID優先地快取至存取鍵快取22a中。藉此,可抑制主機2中的主機記憶體4的使用量,且可改善讀取時的尾延遲(Tail Latency)。
另外,於實施方式中,在資訊處理系統1中,主機2於壓縮鍵衝突的情況下優先地將鍵ID快取至存取鍵快取22a中,除此之外,利用通配符鍵ID對持久化記憶裝置100進行資料存取。藉此,可大幅地削減需要在持久化記憶裝置100與主機2之間共享的鍵ID的數量,能夠提高讀取性能和改善尾延遲。
另外,於實施方式中,在資訊處理系統1中,利用持久化記憶裝置100對存取鍵與用戶鍵的對應關係進行管理。藉此,能夠保證存取鍵與用戶鍵的對應關係。
例如,於資訊處理系統中,設為主機和持久化記憶裝置採用以區塊形式對資料進行處理的介面。於該情況下,在對資料大小可變且未進行結構化的目標形式的資料進行處理時,於介面中進行目標級(object level)和區塊級之間的資料轉換。藉此,命令處理中的管理負擔(overhead)增加,命令處理時間容易增加。
相對於此,於本實施方式中,在資訊處理系統1中,主機2和持久化記憶裝置100採用了作為目標級的介面之一的鍵值(KV)型介面。藉此,於對目標形式的資料進行處理時,可在不轉換為區塊級的情況下進行命令處理,從而可容易地減少命令處理時間。藉此,不僅可提高I/O延遲及通量,而且可削減主機2側的CPU及記憶體所請求的資源。
或者,於資訊處理系統中,設為主機和持久化記憶裝置對基於日誌結構合併樹(LSM(Log Structured Merge)樹)的資料進行處理。於該情況下,在LSM樹中,雖然具有多個級別的層次結構,但由於僅將最高位的級別儲存於記憶體中,因此可節約記憶體使用量。於許多LSM樹安裝中,使用了隨機地跳過一部分級別的光暈過濾器(Bloom filter)。由於無論位元數如何,光暈過濾器均進行規定的處理,因此於每個KV對的使用位元數少時,性能亦會下降。於在有資源限制的鍵值持久化記憶裝置上採用LSM樹的情況下,每個KV對的使用位元數均受到限制,有可能無法獲得充分的性能。
相對於此,於本實施方式中,主機2和持久化記憶裝置100對利用散列計算等壓縮算法壓縮後的壓縮鍵進行處理。因此,與每個KV對的使用位元數減少相應地,可縮短處理時間,且可抑制性能的下降。
另外,作為實施方式的變形例,如圖18所示,亦可提供如下功能,即,KV庫22保證由應用軟體23請求的用戶鍵231與根據該請求發送至應用軟體23的用戶鍵231一致的功能。圖18是表示實施方式的變形例中的與檢索命令相關的主機2的動作的流程圖。
關於檢索命令,如圖18所示,進行在以下方面與實施方式不同的處理。
於主機2中,KV庫22進行與圖16所示的S41、S42相同的處理,並判定是否發生了壓縮鍵231a的衝突(S61i)。KV庫22將存取鍵快取22a的各快取入口222與壓縮鍵231a相關聯地進行管理。例如,KV庫22亦可於將快取入口222追加至存取鍵快取22a時,將該快取入口的識別符與壓縮鍵231a相關聯的管理資訊追加至存取鍵快取22a中。
若在與各快取入口222相關聯的壓縮鍵231a中存在與S42中生成的壓縮鍵231a相同的壓縮鍵,則KV庫22判定為發生了壓縮鍵231a的衝突。若在與各快取入口222相關聯的壓縮鍵231a中不存在與S42中生成的壓縮鍵231a相同的壓縮鍵,則KV庫22判定為未發生壓縮鍵231a的衝突。
於未發生壓縮鍵231a的衝突的情況下(S61i中為否),進行與圖16所示的S44、S46~S48相同的處理。
於發生了壓縮鍵231a的衝突的情況下(S61i中為是),KV庫22判定S41的GET請求中所包含的用戶鍵231是否儲存於存取鍵快取22a的用戶鍵的列702中(S43)。
於用戶鍵231儲存於存取鍵快取22a的用戶鍵的列702中的情況下(S43中為是),KV庫22自存取鍵快取22a讀出快取入口222,並獲取快取入口222中所包含的鍵ID 118(S45)。
於用戶鍵231未儲存於存取鍵快取22a的用戶鍵的列702中的情況下(S43中為否),KV庫22獲取與壓縮鍵231a衝突的鍵ID 118及用戶鍵231的列表(S62i)。KV庫22將列表發送至緩衝區域45。KV庫22對所接收到的列表的欄位進行掃描,並判定S41中所請求的用戶鍵231是否存在於列表上(S63i)。
若於列表上不存在S41中所請求的用戶鍵231(S63i中為否),則KV庫22作為錯誤結束處理。
若於列表上存在S41中所請求的用戶鍵231(S63i中為是),則KV庫22提取與和S42中生成的壓縮鍵231a相同的壓縮鍵231a對應的鍵ID 118及用戶鍵231。KV庫22利用所獲取的鍵ID 118及用戶鍵231的組構成快取入口222並追加至存取鍵快取22a。然後,進行與圖16所示的S45~S48相同的處理。
於經由操作系統21自持久化記憶裝置100接收到鍵值對時(S48中為是),KV庫22判定S41中所請求的用戶鍵231與S48中所接收到的用戶鍵231是否一致(S64i)。
於S41中所請求的用戶鍵231與S48中所接收到的用戶鍵231不一致的情況下(S64i中為否),KV庫22使處理返回至S62i中。即,反覆進行S61i~S64i的循環處理,直至S41中所請求的用戶鍵231與S48中所接收到的用戶鍵231一致。
於S41中所請求的用戶鍵231與S48中所接收到的用戶鍵231一致的情況下(S64i中為是),KV庫22將用戶值232供給至應用軟體23(S64i)。此時,KV庫22亦可不將用戶鍵231供給至應用軟體23。
如此,於實施方式的變形例中,在主機2中,KV庫22反覆進行S61i~S64i的循環處理,直至S41中所請求的用戶鍵231與S48中所接收到的用戶鍵231一致。藉此,可保證由應用軟體23所請求的用戶鍵231與根據該請求發送至應用軟體的用戶鍵231一致。
對本發明的若干實施方式進行了說明,但該些實施方式作為例子而提示,並不意圖限定發明的範圍。該些新穎的實施方式能夠以其他各種形態實施,可於不脫離發明的主旨的範圍內進行各種省略、置換、變更。該些實施方式或其變形包含於發明的範圍或主旨中,並且包含於申請專利範圍中所記載的發明及其均等的範圍內。
1:資訊處理系統
2:主機
3:主機控制器
4:主機記憶體
100:持久化記憶裝置
110:控制器
130:非揮發性記憶體
圖1是表示實施方式中的主機和持久化記憶裝置的硬體結構的圖。圖2是表示實施方式中的持久化記憶裝置的結構的圖。圖3是表示實施方式中的主機記憶體的結構的圖。圖4是表示實施方式中的鍵值(KV)命令的欄位的圖。圖5是表示實施方式中的主機和持久化記憶裝置的功能結構的圖。圖6是表示實施方式中的值的欄位的圖。圖7是表示實施方式中的完成佇列入口(CQE)的欄位的圖。圖8是表示實施方式中的存取鍵的欄位的圖。圖9是表示實施方式中的存取鍵快取的登錄內容的圖。圖10是表示實施方式中的存取鍵映射的資料結構的圖。圖11是表示實施方式中的位址轉換映射的資料結構的圖。圖12是表示實施方式中的儲存於非揮發性記憶體中的鍵值對的圖。圖13是表示實施方式中的資訊處理系統的啟動處理的流程圖。圖14是表示實施方式中的與儲存命令相關的主機的動作的流程圖。圖15是表示實施方式中的與儲存命令相關的持久化記憶裝置的動作的流程圖。圖16是表示實施方式中的與檢索命令相關的主機的動作的流程圖。圖17是表示實施方式中的與檢索命令相關的持久化記憶裝置的動作的流程圖。 圖18是表示實施方式的變形例中的與檢索命令相關的主機的動作的流程圖。
100:持久化記憶裝置
111:主機介面
113:CPU
113a:記憶體轉換層
113b:存取鍵處理層
113b1:鍵ID管理部
113b2:存取鍵映射
115:記憶體介面
130:非揮發性記憶體
900:位址轉換映射
Claims (9)
- 一種持久化記憶裝置,包括: 記憶介質,能夠儲存鍵與值成對的鍵值對;以及控制器,能夠生成對所述鍵進行識別的識別資訊,並將所述識別資訊發送至主機。
- 如請求項1所述的持久化記憶裝置,其中於所述鍵被壓縮的第一壓縮鍵與其他第二壓縮鍵一致的情況下,所述控制器針對與所述第一壓縮鍵對應的鍵而生成不同於與所述第二壓縮鍵對應的鍵的識別資訊。
- 如請求項2所述的持久化記憶裝置,其中所述控制器能夠自主機接收如下命令,所述命令是於為固定長度的第一欄位中至少包含所述第一壓縮鍵且於為可變長度的第二欄位中包含與所述第一壓縮鍵對應的鍵和值。
- 如請求項2所述的持久化記憶裝置,其中所述控制器能夠自主機接收如下命令,所述命令是於為固定長度的第一欄位中包含所述識別資訊及所述第一壓縮鍵且於為可變長度的第二欄位中包含與所述第一壓縮鍵對應的鍵和值。
- 如請求項2所述的持久化記憶裝置,其中所述控制器與接收到包含所述第一壓縮鍵的命令相應地,來判定所述第一壓縮鍵是否與所述第二壓縮鍵一致,於所述第一壓縮鍵與所述第二壓縮鍵一致的情況下,以不同於與所述第二壓縮鍵對應的識別資訊的資訊來生成與所述第一壓縮鍵對應的識別資訊。
- 如請求項2所述的持久化記憶裝置,其中所述控制器能夠判定所述第一壓縮鍵是否與所述第二壓縮鍵一致,於所述第一壓縮鍵與所述第二壓縮鍵一致的情況下,將表示所述一致的情況的旗標通知至主機。
- 一種主機,包括控制器,所述控制器對鍵與值成對的鍵值對中的所述鍵進行壓縮而生成壓縮鍵;生成第一命令,所述第一命令是於為固定長度的第一欄位中包含所述壓縮鍵且於為可變長度的第二欄位中包含所述鍵和所述值,並將所生成的所述第一命令發送至持久化記憶裝置;於所述壓縮鍵與其他壓縮鍵一致的情況下,能夠自所述持久化記憶裝置接收到對所述鍵進行識別的識別資訊和表示一致的情況的旗標。
- 如請求項7所述的主機,其中所述控制器根據所述旗標將包含與所述壓縮鍵對應的所述識別資訊及所述鍵的入口添加至快取中,自所述快取獲取所述識別資訊,生成第二命令,所述第二命令是於所述第一欄位中包含所獲取的所述識別資訊及所述壓縮鍵且於所述第二欄位中包含所述鍵和所述值。
- 一種持久化記憶裝置的控制方法,包括: 獲取鍵被壓縮的壓縮鍵;判定所述獲取的壓縮鍵是否與其他壓縮鍵一致;於所述獲取的壓縮鍵與其他壓縮鍵一致的情況下,生成對與所述獲取的壓縮鍵對應的鍵進行識別的識別資訊;以及將所述生成的識別資訊發送至主機。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022-046003 | 2022-03-22 | ||
JP2022046003A JP2023140128A (ja) | 2022-03-22 | 2022-03-22 | 永続記憶装置、ホスト及び永続記憶装置の制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202338810A true TW202338810A (zh) | 2023-10-01 |
TWI848321B TWI848321B (zh) | 2024-07-11 |
Family
ID=88095797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111125842A TWI848321B (zh) | 2022-03-22 | 2022-07-11 | 持久化記憶裝置、主機和持久化記憶裝置的控制方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230305749A1 (zh) |
JP (1) | JP2023140128A (zh) |
CN (1) | CN116825156A (zh) |
TW (1) | TWI848321B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573208B (zh) * | 2024-01-12 | 2024-05-28 | 深圳宏芯宇电子股份有限公司 | 指令信息分配方法及存储器存储装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110276744A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US9853956B2 (en) * | 2014-02-11 | 2017-12-26 | Texas Instruments Incorporated | JSON encryption and hashing with indication added to key-value |
US20170031959A1 (en) * | 2015-07-30 | 2017-02-02 | Kabushiki Kaisha Toshiba | Scheduling database compaction in ip drives |
CN105871584A (zh) * | 2015-12-02 | 2016-08-17 | 乐视体育文化产业发展(北京)有限公司 | 一种键值对数据库中的客户端配置更新方法、设备及系统 |
EP3916536A1 (en) * | 2015-12-28 | 2021-12-01 | Huawei Technologies Co., Ltd. | Data processing method and nvme storage device |
US11221999B2 (en) * | 2019-06-28 | 2022-01-11 | Salesforce.Com, Inc. | Database key compression |
US11520738B2 (en) * | 2019-09-20 | 2022-12-06 | Samsung Electronics Co., Ltd. | Internal key hash directory in table |
KR20210092361A (ko) * | 2020-01-15 | 2021-07-26 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
US11645424B2 (en) * | 2020-04-27 | 2023-05-09 | International Business Machines Corporation | Integrity verification in cloud key-value stores |
CN111782660B (zh) * | 2020-07-17 | 2024-10-18 | 支付宝(杭州)信息技术有限公司 | 基于键值存储的数据压缩的方法和系统 |
-
2022
- 2022-03-22 JP JP2022046003A patent/JP2023140128A/ja active Pending
- 2022-07-11 TW TW111125842A patent/TWI848321B/zh active
- 2022-08-01 CN CN202210915096.9A patent/CN116825156A/zh active Pending
- 2022-09-08 US US17/940,741 patent/US20230305749A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023140128A (ja) | 2023-10-04 |
CN116825156A (zh) | 2023-09-29 |
US20230305749A1 (en) | 2023-09-28 |
TWI848321B (zh) | 2024-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12045515B2 (en) | Memory system and control method | |
US20230229791A1 (en) | Memory system and method of controlling nonvolatile memory | |
US20230315294A1 (en) | Memory system and method for controlling nonvolatile memory | |
US20230259452A1 (en) | Computing system and method for controlling storage device | |
US11347655B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10649969B2 (en) | Memory efficient persistent key-value store for non-volatile memories | |
US11797436B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11074015B2 (en) | Memory system and method for controlling nonvolatile memory by a host | |
US11461049B2 (en) | Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region | |
US12073122B2 (en) | Memory system with controller to write data to memory based on lifetime information in write command | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
US20240241644A1 (en) | Storage device and storage system | |
TW202338810A (zh) | 持久化記憶裝置、主機和持久化記憶裝置的控制方法 | |
JP2022063466A (ja) | メモリシステム及び情報処理システム | |
JP7508667B2 (ja) | メモリシステム | |
JP7567009B2 (ja) | メモリシステムおよび制御方法 | |
JP2024129443A (ja) | メモリシステム |