TWI703494B - 記憶體系統及非揮發性記憶體之控制方法 - Google Patents
記憶體系統及非揮發性記憶體之控制方法 Download PDFInfo
- Publication number
- TWI703494B TWI703494B TW107143109A TW107143109A TWI703494B TW I703494 B TWI703494 B TW I703494B TW 107143109 A TW107143109 A TW 107143109A TW 107143109 A TW107143109 A TW 107143109A TW I703494 B TWI703494 B TW I703494B
- Authority
- TW
- Taiwan
- Prior art keywords
- write
- data
- host
- shared
- buffer
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 264
- 238000000034 method Methods 0.000 title claims abstract description 15
- 239000000872 buffer Substances 0.000 claims abstract description 229
- 230000009471 action Effects 0.000 claims description 41
- 238000012546 transfer Methods 0.000 claims description 22
- 238000013479 data entry Methods 0.000 claims 1
- 238000003860 storage Methods 0.000 description 153
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 230000004044 response Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 101100481703 Arabidopsis thaliana TMK2 gene Proteins 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; 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/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
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
實施形態係實現可削減資料流量之記憶體系統及非揮發性記憶體之控制方法。
實施形態之記憶體系統係將從主機接收之寫入資料儲存於複數個寫入對象區塊間共享之共享寫入緩衝區,從共享寫入緩衝區獲取複數頁份之第1寫入資料,藉由第1階段之寫入動作將第1寫入資料寫入至第1寫入對象區塊。記憶體系統若於共享寫入緩衝區中無空區之狀態下從主機接收到寫入資料之情形時,將第1階段寫入動作已結束之共享寫入緩衝區內之寫入資料捨棄。於應執行第1寫入資料之第2階段寫入動作之時間點,若第1寫入資料不存在於共享寫入緩衝區之情形時,記憶體系統將用以獲取第1寫入資料之請求發送至主機。
Description
本發明之實施形態係關於一種記憶體系統及非揮發性記憶體之控制方法。
近年來,具備非揮發性記憶體之記憶體系統廣泛普及。作為如此之記憶體系統之一,已知有基於NAND(NOT AND,反及)快閃技術之固體狀態驅動機(SSD,Solid State Drive)。
即便於資料中心之伺服器中,如SSD般之記憶體系統亦被用作儲存裝置。
於如伺服器般之計算機系統中利用之記憶體系統中,該計算機系統作為記憶體系統之主機發揮作用。因此,隨著利用該計算機系統之終端使用者(客戶端)數量增加而要求記憶體系統處理更多之I/O。又,隨著客戶端數量增加,出現從作為主機之計算機系統傳送至記憶體系統之資料量、即資料流量增加之傾向。
本發明之實施形態提供一種可將主機與記憶體系統之間之資料流量削減之記憶體系統及非揮發性記憶體之控制方法。
根據實施形態,可與主機連接之記憶體系統具備:非揮發性記憶體,其包含複數個區塊;及控制器,其與上述非揮發性記憶體電性連接,至少包含第1階段寫入動作與第2階段寫入動作,且構成為執行將複
數頁份之相同資料複數次傳送至上述非揮發性記憶體之複數階段寫入動作。上述控制器每當從上述主機接收到寫入請求時,從上述主機接收與從上述複數個區塊分配之複數個寫入對象區塊分別對應之上述主機之記憶體上之複數個寫入緩衝區之任一個中儲存之寫入資料,將上述接收到之寫入資料儲存於上述複數個寫入對象區塊間共享之共享寫入緩衝區。上述控制器從上述共享寫入緩衝區獲取應對上述複數個寫入對象區塊內之第1寫入對象區塊寫入之複數頁份之第1寫入資料,藉由上述第1階段寫入動作將上述第1寫入資料寫入至上述第1寫入對象區塊。上述控制器若於上述共享寫入緩衝區中無空區之狀態下從上述主機接收到寫入資料之情形時,將上述第1階段寫入動作已結束之上述共享寫入緩衝區內之寫入資料捨棄,而於上述共享寫入緩衝區中確保上述空區。上述控制器於應執行上述第1寫入資料之上述第2階段之寫入動作之時間點,若上述第1寫入資料不存在於上述共享寫入緩衝區之情形時,藉由將用以獲取上述第1寫入資料之請求發送至上述主機而從上述主機獲取上述第1寫入資料。
2:主機
3:快閃儲存裝置
4:控制器
5:NAND型快閃記憶體
6:DRAM(動態隨機存取記憶體)
10:匯流排
11:主機介面
12:CPU(中央處理單元)
13:NAND介面
14:DRAM介面
21:寫入控制部
22:讀取控制部
30:匯流排
31:儲存控制器
32:處理器
33:記憶體
34:網路介面
50:介面
51:網路
61:終端使用者終端
401:虛擬機器
402:作業系統
403:使用者應用程式
404:I/O服務
404A:LUT(查找表)
405:主機側寫入緩衝區
500:I/O佇列
601:共享裝置側寫入緩衝區
602:快閃區塊
701:區塊分配部
702:頁面分配部
BLK0~BLKm-1:區塊
P0~P11:頁面
WL0~WL3:字元線
圖1係表示實施形態之記憶體系統與主機之關係之方塊圖。
圖2係表示設置於主機之複數個寫入緩衝區(主機側寫入緩衝區)與該實施形態之記憶體系統中設置之共享寫入緩衝區(共享裝置側寫入緩衝區)之關係之圖。
圖3係表示使用共享寫入緩衝區藉由該實施形態之記憶體系統執行之對各寫入對象區塊之資料寫入動作之方塊圖。
圖4係用以說明於3個字元線中往返之情形時之模糊-精細寫入動作之
圖。
圖5係用以說明於2個字元線中往返之情形時之模糊-精細寫入動作之圖。
圖6係表示包含該實施形態之記憶體系統與主機之計算機系統之構成例之方塊圖。
圖7係表示該實施形態之記憶體系統中使用之複數個通道與複數個NAND型快閃記憶晶片之關係之方塊圖。
圖8係表示該實施形態之記憶體系統中使用之某一超級區塊之構成例之圖。
圖9係用以說明由主機與該實施形態之記憶體系統執行之寫入處理之例之方塊圖。
圖10係用以說明由主機與該實施形態之記憶體系統執行之寫入處理之另一例之方塊圖。
圖11係用以說明使用共享寫入緩衝區藉由該實施形態之記憶體系統執行之模糊-精細寫入動作與將共享寫入緩衝區之資料捨棄之處理之圖。
圖12係於共享寫入緩衝區中無未使用區域之情形時由該實施形態之記憶體系統執行之將模糊寫入動作已結束之共享寫入緩衝區內之寫入資料捨棄之處理之圖。
圖13係表示由該實施形態之記憶體系統執行之資料寫入處理之順序之流程圖。
圖14係用以說明主機指定寫入對象區塊且該實施形態之記憶體系統決定寫入對象頁面之資料寫入處理、及主機指定區塊位址與頁面位址之資料讀出處理之圖。
圖15係用以說明該實施形態之記憶體系統中應用之區塊分派指令(區塊分配請求)之圖。
圖16係用以說明對區塊分派指令之回應之圖。
圖17係用以說明該實施形態之記憶體系統中應用之寫入指令之圖。
圖18係用以說明對寫入指令之回應之圖。
圖19係用以說明該實施形態之記憶體系統中應用之讀取指令之圖。
圖20係表示使用包含1個以上SLC區塊之共享寫入緩衝區藉由該實施形態之記憶體系統執行之對各寫入對象區塊之資料寫入動作之方塊圖。
以下,參照圖式,說明實施形態。
首先,參照圖1,說明主機與實施形態之記憶體系統之關係。
該記憶體系統係以將資料寫入至非揮發性記憶體,從非揮發性記憶體將資料讀出之方式構成之半導體儲存裝置。該記憶體系統已作為基於NAND快閃技術之快閃儲存裝置3實現。
主機(主機設備)2係以控制複數個快閃儲存裝置3之方式構成。主機2係藉由以將包括複數個快閃儲存裝置3之快閃陣列用作儲存器之方式構成之計算機而實現。
以下,例示如伺服器電腦般之計算機作為主機2發揮作用之情形進行說明。
主機(伺服器電腦)2與複數個快閃儲存裝置3係經由介面50相互連接(內部相互連接)。作為用於該相互連接之介面50,並不限於此,但可使用PCI Express(PCIe)(註冊商標)、NVM Express(NVMe)(註冊商
標)、Ethernet(註冊商標)、NVMe over Fabrics(NVMeOF)等。
作為以主機2發揮作用之伺服器電腦之典型例,可列舉資料中心內之伺服器電腦(以下,稱為伺服器)。
於主機2藉由資料中心內之伺服器實現之實例中,該主機(伺服器)2可經由網路51而與複數個終端使用者終端(客戶端)61連接。主機2可對該等終端使用者終端61提供各種各樣之服務。
可由主機(伺服器)2提供之服務例中,有(1)將系統運轉平台提供給各客戶端(各終端使用者終端61)之平台即服務(PaaS,Platform-as-a-Service)、(2)將如虛擬伺服器般之基礎架構提供給各客戶端(各終端使用者終端61)之基礎架構即服務(IaaS,Infrastructure as a Service)等。
複數個虛擬機器亦可於作為該主機(伺服器)2發揮作用之實體伺服器上執行。於主機(伺服器)2上運行之該等虛擬機器各自可作為以將各種服務提供給對應之若干個客戶端(終端使用者終端61)之方式構成之虛擬伺服器發揮作用。
主機(伺服器)2包含:儲存管理功能,其管理構成快閃陣列之複數個快閃儲存裝置3;及前端功能,其分別對終端使用者終端61提供包含儲存存取之各種服務。
快閃儲存裝置3包含如NAND型快閃記憶體般之非揮發性記憶體。一個快閃儲存裝置3管理從非揮發性記憶體內之複數個區塊分配之複數個寫入對象區塊。所謂寫入對象區塊表示應被寫入資料之區塊。
由快閃儲存裝置3管理之複數個寫入對象區塊分別由利用主機(伺服器)2之複數個客戶端使用。與某一客戶端對應之資料被寫入至某一個以上之寫入對象區塊,與其他客戶端對應之資料被寫入至其他一個
以上之寫入對象區塊。
若僅一個快閃儲存裝置3連接於主機(伺服器)2,則分配與利用主機(伺服器)2之客戶端總數相同或更多之區塊作為寫入對象區塊。
另一方面,若複數個快閃儲存裝置3、例如8台快閃儲存裝置3連接於主機(伺服器)2,且主機2對該等8台快閃儲存裝置3均等地分配相同數量之客戶端,則可於各快閃儲存裝置3中,分配客戶端總數之1/8之數量之區塊作為寫入對象區塊。
NAND型快閃記憶體大多構成為對每一記憶胞寫入複數位元之資料,且必須預先於每一寫入對象區塊中,保持應寫入至該寫入對象區塊之複數頁份之資料。
因此,於快閃儲存裝置3中存在可同時利用之複數個寫入對象區塊之環境中,必須準備與該等寫入對象區塊之個數為相同數量之寫入緩衝區。換言之,必須準備與客戶端之個數為相同數量之寫入緩衝區。
又,現代之NAND型快閃記憶體中,存在為削減程式干擾而應用對NAND型快閃記憶體複數次傳送複數頁份之相同資料之類之複數階段寫入動作之實例。該複數階段寫入動作至少包括第1階段寫入動作與第2階段寫入動作。
於第1階段寫入動作中,複數頁份之資料被傳送至NAND型快閃記憶體,且被寫入至NAND型快閃記憶體內之與某個寫入對象區塊內之相同字元線連接之複數個記憶胞中。於第2階段寫入動作中,該複數頁份資料被再次傳送至NAND型快閃記憶體,且被寫入至該寫入對象區塊內之該等複數個記憶胞。如此一來,作為伴有複數次傳送相同資料之複數階段寫入動作之典型例,可列舉模糊-精細寫入動作。
通常,如模糊-精細寫入動作般之複數階段寫入動作中,為削減字元線間之干擾引起之程式干擾,而將資料寫入動作一面於複數個字元線中往返一面執行。
例如於3個字元線往返之模糊-精細寫入動作係將複數頁份之第1寫入資料傳送至NAND型快閃記憶體,又,將第1寫入資料寫入至最初之實體頁(與最初之字元線連接之複數個記憶胞)(模糊寫入動作)。繼而,將複數頁份之第2寫入資料傳送至NAND型快閃記憶體,繼而,將第2寫入資料寫入至下一個實體頁(與下一個字元線連接之複數個記憶胞)(模糊寫入動作)。繼而,將複數頁份之第3寫入資料傳送至NAND型快閃記憶體,又,將第3寫入資料進而寫入至下一個實體頁(與進而下一個字元線連接之複數個記憶胞)(模糊寫入動作)。而且,使寫入對象之實體頁面返回至最初之實體頁面(與最初之字元線連接之複數個記憶胞),將複數頁份之上述第1寫入資料再次傳送至NAND型快閃記憶體,又,將該第1寫入資料寫入至最初之實體頁面(與最初之字元線連接之複數個記憶胞)(精細寫入動作)。
因此,於執行如模糊-精細寫入動作般之複數階段寫入動作之實例中,必須於每一寫入對象區塊中,將由應寫入至一個記憶胞之位元數與往返之字元線數之乘積表示之頁份數之資料保持於寫入緩衝區中。
進而,為實際上獲得更高之資料寫入速度,而將資料並列地寫入至複數個區塊之實例較為多見。於此情形時,必須保持於各寫入緩衝區中之資料量進而增加。
因而,於快閃儲存裝置3被複數個客戶端共享之實例中,必須於每一客戶端、即每一寫入對象區塊中準備寫入緩衝區,且於各寫入
緩衝區中保持大量頁份數之資料。
然而,通常快閃儲存裝置3內之隨機存取記憶體之容量有限,因此,存在難以於快閃儲存裝置3內之隨機存取記憶體上準備各自具有充分容量之充分數量之寫入緩衝區之情形。
又,即便快閃儲存裝置3中設置有大容量之隨機存取記憶體,當共享快閃儲存裝置3之客戶端數量較少時,亦變成該大容量之隨機存取記憶體被浪費之結果。
因此,本實施形態係將主機2之記憶體上之特定之記憶區域用作與複數個寫入對象區塊分別對應之複數個寫入緩衝區。因複數個寫入對象區塊分別對應於複數個客戶端,故該等複數個寫入緩衝區分別對應於該等複數個客戶端。
主機2之記憶體上所準備之寫入緩衝區之數量與寫入對象區塊之數量、即客戶端之數量為相同數量。於主機2中,來自某個客戶端之寫入資料被儲存於與該客戶端對應之寫入緩衝區。又,來自另一客戶端之寫入資料被儲存於與該另一客戶端對應之另一寫入緩衝區。
通常,相對於快閃儲存裝置3可管理之最大記憶容量為4 G位元組左右,主機2可管理之最大記憶容量達到數兆位元組。因此,使用主機2側之寫入緩衝區之寫入緩衝相比使用快閃儲存裝置3側之寫入緩衝區之寫入緩衝,可容易地增加利用主機2之客戶端數。
然而,大多數現代之NAND型快閃記憶體中,為減少程式干擾,而如上所述,要求進行如模糊-精細寫入動作般之複數階段寫入動作。於此情形時,必須對NAND型快閃記憶體複數次傳送相同資料,因此,若利用僅使用主機側之寫入緩衝區之構成,則必須從主機2對快閃儲
存裝置3複數次傳送相同資料。藉此,必須從主機2向快閃儲存裝置3傳送之資料量、即主機2與快閃儲存裝置3之間之資料流量增大,其結果,存在I/O性能低下之可能性。
因此,本實施形態係於快閃儲存裝置3中,準備於複數個寫入對象區塊間共享之寫入緩衝區(共享裝置側寫入緩衝區)。又,設置於快閃儲存裝置3內之控制器於每次從主機2接收寫入請求時,均從主機2接收主機側之複數個寫入緩衝區之任一個中儲存之寫入資料,將所接收之寫入資料儲存於快閃儲存裝置3內之共享裝置側寫入緩衝區。即,與應被寫入寫入資料之寫入對象區塊無關,任何寫入資料均儲存於該共享裝置側寫入緩衝區。
快閃儲存裝置3之控制器藉由如模糊-精細寫入動作般之複數階段寫入動作,將寫入資料寫入至NAND型快閃記憶體。複數階段寫入動作至少包含如模糊寫入動作般之第1階段寫入動作、及如精細寫入動作般之第2階段寫入動作。模糊寫入動作係粗略地設定各記憶胞之閾值分佈之寫入動作,精細寫入動作係調整各記憶胞之閾值分佈之寫入動作。進而,亦可於模糊寫入動作與精細寫入動作之間,執行中間之寫入動作。
快閃儲存裝置3之控制器從共享裝置側寫入緩衝區獲取應寫入至複數個寫入對象區塊內之某個寫入對象區塊之複數頁份之寫入資料(第1寫入資料),藉由如模糊寫入動作般之第1階段寫入動作將第1寫入資料寫入至該寫入對象區塊。
為了可將來自主機2之寫入資料有效地儲存於共享裝置側寫入緩衝區,而於共享裝置側寫入緩衝區中無空區之狀態下自主機2接收到新的寫入資料之情形時,快閃儲存裝置3之控制器將如模糊寫入動作般
之第1階段寫入動作已結束之共享裝置側寫入緩衝區內之寫入資料(模糊狀態之寫入資料)捨棄,於共享裝置側寫入緩衝區中確保可儲存新的寫入資料之空區。例如於共享裝置側寫入緩衝區整體被大量模糊狀態之寫入資料充滿之狀態下,從主機2接收到新的寫入資料之情形時,快閃儲存裝置3之控制器從該等模糊狀態之寫入資料之中選擇應捨棄之特定之寫入資料,將該選擇之寫入資料捨棄。藉此,可將與複數個客戶端對應之較多數量之寫入資料有效地儲存於具有受到限制之容量之共享裝置側寫入緩衝區中。
又,快閃儲存裝置3於應執行如第1寫入資料之精細寫入動作般之第2階段寫入動作之時間點,共享裝置側寫入緩衝區中不存在第1寫入資料之情形時,藉由將用以獲取第1寫入資料之請求(傳送請求)發送至主機2而從主機2獲取第1寫入資料。
共享裝置側寫入緩衝區具有某個受到限制之容量,但若利用主機2之客戶端之個數為某個固定數以下,則於應執行第2階段寫入動作之時間點,第1寫入資料存在於共享裝置側寫入緩衝區之概率(命中率)相對較高。因此,無需將相同寫入資料從主機2複數次傳送至快閃儲存裝置3,便可執行如模糊-精細寫入動作般之複數階段寫入動作。藉此,可將主機2與快閃儲存裝置3之間之資料流量削減,因此,與每次資料寫入時將相同寫入資料從主機2複數次傳送至快閃儲存裝置3之情形相比,可提昇快閃儲存裝置3之I/O性能。
隨著利用主機2之客戶端之數量增加,共享裝置側寫入緩衝區之命中率下降。然而,於共享裝置側寫入緩衝區中不存在第1寫入資料之情形時(失效),快閃儲存裝置3之控制器藉由將傳送請求發送至主機2而從主機2獲取第1寫入資料。因此,即便客戶端之數量增加,亦可正常地
執行如模糊-精細寫入動作般之複數階段寫入動作。
因而,快閃儲存裝置3可靈活應對共享快閃儲存裝置3之客戶端之數量增加,且可削減主機2與快閃儲存裝置3之間之資料流量。
圖2表示設置於主機2之複數個寫入緩衝區(主機側寫入緩衝區)與設置於快閃儲存裝置3之共享寫入緩衝區(共享裝置側寫入緩衝區)之關係。
於主機(伺服器)2中,執行與複數個終端使用者(複數個客戶端)分別對應之複數個虛擬機器401。於巨量型之資料中心中,存在大量客戶端、例如數百上千程度之客戶端利用主機(伺服器)2之情形。該等客戶端亦稱為租戶。
主機(伺服器)2對每一客戶端(租戶)提供獨立之服務。於圖2中,例示了客戶端# 0、客戶端# 1、客戶端# 2、...、客戶端# m-1利用主機(伺服器)2之情形。
於各虛擬機器401中,執行由對應之客戶端(租戶)使用之作業系統402及使用者應用程式403。
又,於主機(伺服器)2中,執行與複數個客戶端分別對應之複數個I/O服務404。該等I/O服務404中,亦可包含區塊I/O服務、鍵值儲存服務、及其他各種I/O服務。各I/O服務404包括管理用以識別資料之標籤各自與快閃儲存裝置3之實體位址各自之間之映射之位址轉換表即查找表(LUT)404A。此處,標籤既可為指定邏輯位址空間上之位置之邏輯位址(例如邏輯區塊位址:LBA),亦可為鍵值儲存之鍵。
例如,於基於LBA之區塊I/O服務中,可使用管理邏輯位址(LBA)各自與快閃儲存裝置3之實體位址各自之間之映射之LUT。
又,於鍵值儲存服務中,亦可使用管理鍵各自與儲存有對應於該等鍵之資料之快閃儲存裝置3之實體位址各自之間之映射之LUT。於該LUT中,亦可管理標籤、儲存有由該標籤識別之資料之實體位址、及該資料之資料長度之對應關係。
該等各LUT404A並非將來自使用者應用程式403之標籤(例如LBA)各自分別轉換為快閃儲存裝置3用之LBA,而是將來自使用者應用程式403之標籤(例如LBA)各自分別轉換為快閃儲存裝置3之實體位址。
又,於主機(伺服器)2中,設置有與複數個客戶端(複數個租戶)# 0、# 1、# 2、...、# m-1分別對應之複數個主機側寫入緩衝區(# 0、# 1、# 2、...、# m-1)405。該等主機側寫入緩衝區405係設置於主機(伺服器)2之記憶體上。
各主機側寫入緩衝區405係為了臨時保持來自對應之客戶端之寫入資料而使用。例如將客戶端(租戶)# 0之寫入資料儲存於主機側寫入緩衝區# 0,將客戶端(租戶)# 1之寫入資料儲存於主機側寫入緩衝區# 1,將客戶端(租戶)# 2之寫入資料儲存於主機側寫入緩衝區# 2,同樣地,將客戶端(租戶)# m-1之寫入資料儲存於主機側寫入緩衝區# m-1。
從主機(伺服器)2向快閃儲存裝置3之指令發送、及從快閃儲存裝置3向主機(伺服器)2之指令完成之回應等回傳係經由與複數個客戶端分別對應之複數個I/O佇列500執行。
快閃儲存裝置3之控制器管理與共享快閃儲存裝置3之複數個客戶端(複數個租戶)# 0、# 1、# 2、...、# m-1分別對應之複數個寫入對象區塊(快閃區塊# 0、# 1、# 2、...、# m-1)602。又,於快閃儲存裝置3中,設置有被複數個寫入對象區塊(快閃區塊)602共享之共享裝置側寫
入緩衝區601。共享裝置側寫入緩衝區601係為了臨時儲存應被寫入至複數個寫入對象區塊(快閃區塊# 0、# 1、# 2、...、# m-1)602之任一個中之寫入資料而使用。換言之,來自所有客戶端之寫入資料均儲存於共享裝置側寫入緩衝區601。
圖3表示使用共享裝置側寫入緩衝區601藉由快閃儲存裝置3執行之對各寫入對象區塊之資料寫入動作。
此處,快閃儲存裝置3中,設想對各寫入對象區塊之資料寫入由上述模糊-精細寫入動作執行之情形。
為了能夠支持模糊-精細寫入動作,各主機側寫入緩衝區405必須具有充分之容量。
例如於頁面大小=16 K位元組、每一NAND型快閃記憶晶片之平面數=2、往返之字元線數=3、每一記憶胞中寫入之位元數=4(QLC)、並列存取之NAND型快閃記憶晶片數=32之情形時,各主機側寫入緩衝區405之容量成為12 M位元組(=16 K位元組×2×3×4×32)。主機側寫入緩衝區405之數量與客戶端(租戶)之數量為相同數量,因此,該等主機側寫入緩衝區405之總容量由12 M位元組與客戶端(租戶)數之乘積表示。例如客戶端(租戶)數為1000,則該等主機側寫入緩衝區405之總容量成為12 G位元組。
被與客戶端(租戶)# 0對應之使用者應用程式請求寫入之寫入資料儲存於主機側寫入緩衝區(# 0)405,被與客戶端(租戶)# 1對應之使用者應用程式請求寫入之寫入資料儲存於主機側寫入緩衝區(# 1)405,同樣地,被與客戶端(租戶)# m-1對應之使用者應用程式請求寫入之寫入資料儲存於主機側寫入緩衝區(# m-1)405。
該等各主機側寫入緩衝區(# m-1)405被當作一種高速緩衝利用。因此,當由來自某個客戶端之讀取請求所指定之資料存在於與該客戶端對應之主機側寫入緩衝區405之情形時,該資料亦可從該主機側寫入緩衝區405讀出。
設置於快閃儲存裝置3中之共享裝置側寫入緩衝區601之容量根據應實現之寫入速度決定。例如共享裝置側寫入緩衝區601之容量既可為2 M位元組到3 G位元組之範圍內之任意容量,亦可為2 M位元組到4 G位元組之範圍內之任意容量。
於快閃儲存裝置3中,從主機2接收之所有寫入資料均被儲存於共享裝置側寫入緩衝區601。
快閃儲存裝置3之控制器藉由模糊-精細寫入動作將寫入資料寫入至各寫入對象區塊602。
從主機2接收之各寫入請求包含指定應被寫入寫入資料之寫入對象區塊之區塊位址。快閃儲存裝置3之控制器從共享裝置側寫入緩衝區601獲取與指定複數個寫入對象區塊602內之某個寫入對象區塊(例如此處設為寫入對象區塊# 0)之一個以上之寫入請求建立關聯之複數頁份寫入資料(第1寫入資料)作為模糊寫入動作用之寫入資料(模糊資料)。例如於頁面大小為16 K位元組,對一個記憶胞寫入4位元之資料之情形時,快閃儲存裝置3之控制器從共享裝置側寫入緩衝區601獲取應寫入至寫入對象區塊# 0中之64 K位元組之寫入資料作為模糊資料。該64 K位元組之寫入資料亦可為與包含指定寫入對象區塊# 0之區塊位址之一個寫入請求建立關聯之寫入資料。或者,於與包含指定寫入對象區塊# 0之區塊位址之各寫入請求建立關聯之寫入資料之大小小於64 K位元組之情形時,該64 K位
元組之寫入資料亦可為與若干個寫入請求分別建立關聯之複數個寫入資料部之集合。
又,快閃儲存裝置3之控制器藉由模糊寫入動作將該第1寫入資料(模糊資料)寫入至與寫入對象區塊# 0內之寫入對象之一個字元線連接之複數個記憶胞(複數個第1記憶胞)。
以同樣方式,快閃儲存裝置3之控制器執行對該寫入對象區塊# 0內之後續之一個以上字元線之模糊寫入動作。
又,於應執行第1寫入資料之精細寫入動作之時間點,快閃儲存裝置3之控制器對共享裝置側寫入緩衝區601請求第1寫入資料。若共享裝置側寫入緩衝區601中存在第1寫入資料(點擊),則快閃儲存裝置3之控制器從共享裝置側寫入緩衝區601獲取該第1寫入資料作為精細寫入動作用之寫入資料(精細資料)。又,快閃儲存裝置3之控制器藉由精細寫入動作將該第1寫入資料(精細資料)寫入至寫入對象區塊# 0內之上述複數個第1記憶胞。
對於其他各寫入對象區塊602,亦以同樣方式執行模糊-精細寫入動作。
快閃儲存裝置3之控制器例如從共享裝置側寫入緩衝區601獲取與指定寫入對象區塊# m-1之一個以上之寫入請求建立關聯之複數頁份寫入資料(第2寫入資料)作為模糊寫入動作用之寫入資料(模糊資料)。又,快閃儲存裝置3之控制器藉由模糊寫入動作將該第2寫入資料(模糊資料)寫入至與寫入對象區塊# m-1內之寫入對象之一個字元線連接之複數個記憶胞(複數個第2記憶胞)。
以同樣方式,快閃儲存裝置3之控制器執行對該寫入對象區
塊# m-1內之後續之一個以上字元線之模糊寫入動作。
又,於應執行第2寫入資料之精細寫入動作之時間點,快閃儲存裝置3之控制器對於共享裝置側寫入緩衝區601請求第2寫入資料。本實施形態係於共享裝置側寫入緩衝區601中無空區之狀態下從主機2接收到新的寫入資料之情形時,將模糊寫入動作已結束之共享裝置側寫入緩衝區601內之某個寫入資料捨棄,藉此,於共享裝置側寫入緩衝區601中確保用以儲存新的寫入資料之空區。新的寫入資料儲存於該得到確保之空區中。換言之,將模糊寫入動作已結束之共享裝置側寫入緩衝區601內之某個寫入資料從共享裝置側寫入緩衝區601清除,以該新的寫入資料置換儲存有該寫入資料之共享裝置側寫入緩衝區601內之區域之內容。
因此,於利用主機2之客戶端之數量相對較多之情形時,出現於應對某個字元線執行精細寫入動作之時間點,對該字元線以模糊寫入動作使用之寫入資料已被捨棄之可能性。
若上述第2寫入資料不存在於共享裝置側寫入緩衝區601中(失效),則快閃儲存裝置3之控制器藉由將用以獲取第2寫入資料之請求(傳送請求)發送至主機2,從主機2之主機側寫入緩衝區# m-1獲取第2寫入資料作為精細寫入動作用之寫入資料(精細資料)。於此情形時,將第2寫入資料從主機2之主機側寫入緩衝區# m-1傳送至快閃儲存裝置3。該傳送之第2寫入資料亦可儲存於共享裝置側寫入緩衝區601。
又,快閃儲存裝置3之控制器藉由精細寫入動作將該第2寫入資料(精細資料)寫入至寫入對象區塊# m-1內之上述複數個第2記憶胞。
此處,設想支持模糊-精細寫入動作所需之各主機側寫入緩衝區405之容量為12 M位元組,與1000個客戶端(租戶)對應之1000個主機
側寫入緩衝區405之總容量為12 G位元組之情形。於共享裝置側寫入緩衝區601之容量(總容量)設定為3 G位元組之情形時,若客戶端(租戶)之數量為250個以下,則不用將相同寫入資料從主機2複數次傳送至快閃儲存裝置3,便可執行如模糊-精細寫入動作般之複數階段寫入動作。
隨著利用主機2之客戶端之數量增多,共享裝置側寫入緩衝區601之命中率逐漸下降。然而,於應以精細寫入動作使用之寫入資料不存在於共享裝置側寫入緩衝區601中之情形時(失效),快閃儲存裝置3藉由將傳送請求發送至主機2而從主機2獲取該寫入資料。因此,即便客戶端(租戶)之數量增加到1000,仍可正常地執行如模糊-精細寫入動作般之複數階段寫入動作。
又,即便存在1000個客戶端(租戶),若例如8台快閃儲存裝置3連接於主機(伺服器)2,且主機2將相同數量之客戶端均等地分配至該等8台快閃儲存裝置3,則各快閃儲存裝置3只要具備1.5 G位元組之共享裝置側寫入緩衝區601,則無需將相同寫入資料從主機2複數次傳送至快閃儲存裝置3,亦可執行如模糊-精細寫入動作般之複數階段寫入動作。
圖4表示於3個字元線往返之情形時之模糊-精細寫入動作。
此處,設想快閃儲存裝置3內之NAND型快閃記憶體係每一記憶胞中儲存4位元之資料之QLC-快閃記憶體之情形。對某個NAND型快閃記憶體內之一個特定寫入對象區塊之模糊-精細寫入動作以如下方式執行。
(1)首先,將4頁(P0~P3)份之寫入資料傳送至該NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL0連接之複數個記憶胞,執行用以寫入該等4頁(P0~P3)份之寫入資料之模糊寫入動作。
(2)繼而,將下一個4頁(P4~P7)份之寫入資料傳送至該NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL1連接之複數個記憶胞,執行用以寫入該等4頁(P4~P7)份之寫入資料之模糊寫入動作。
(3)繼而,將下一個4頁(P8~P11)份之寫入資料傳送至該NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL2連接之複數個記憶胞,執行用以寫入該等4頁(P8~P11)份之寫入資料之模糊寫入動作。
(4)當對於與字元線WL2連接之複數個記憶胞之模糊寫入動作已結束時,寫入對象之字元線返回字元線WL0,從而可執行對於與字元線WL0連接之複數個記憶胞之精細寫入動作。又,將與對字元線WL0之模糊寫入動作中使用之4頁(P0~P3)份之寫入資料相同之4頁(P0~P3)份之寫入資料再次傳送至NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL0連接之複數個記憶胞,執行用以寫入該等4頁(P0~P3)份之寫入資料之精細寫入動作。藉此,對於頁面P0~P3之模糊-精細寫入動作結束。其結果,可從頁面P0~P3將資料讀出。
(5)繼而,將下一個4頁(P12~P15)份之寫入資料傳送至NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL3連接之複數個記憶胞,執行用以寫入該等4頁(P12~P15)份之寫入資料之模糊寫入動作。
(6)當對於與字元線WL3連接之複數個記憶胞之模糊寫入動作已結束時,寫入對象之字元線返回字元線WL1,從而可執行對於與字元線WL1連接之複數個記憶胞之精細寫入動作。又,將與對字元線WL1之模糊寫入動作中使用之4頁(P4~P7)份之寫入資料相同之4頁(P4~P7)份之寫入資料再次傳送至NAND型快閃記憶體,對與該寫入對象區塊內之字元
線WL1連接之複數個記憶胞,執行用以寫入該等4頁(P4~P7)份之寫入資料之精細寫入動作。藉此,對於頁面P4~P7之模糊-精細寫入動作結束。其結果,可從頁面P4~P7將資料讀出。
圖5表示於2個字元線往返之情形時之模糊-精細寫入動作。
此處,設想快閃儲存裝置3內之NAND型快閃記憶體係於每一記憶胞中儲存4位元之資料之QLC-快閃記憶體之情形。對某個NAND型快閃記憶體內之一個特定之寫入對象區塊之模糊-精細寫入動作以如下方式執行。
(1)首先,將4頁(P0~P3)份之寫入資料傳送至該NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL0連接之複數個記憶胞,執行用以寫入該等4頁(P0~P3)份之寫入資料之模糊寫入動作。
(2)繼而,將下一個4頁(P4~P7)份之寫入資料傳送至該NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL1連接之複數個記憶胞,執行用以寫入該等4頁(P4~P7)份之寫入資料之模糊寫入動作。
(3)當對於與字元線WL1連接之複數個記憶胞之模糊寫入動作已結束時,寫入對象之字元線返回字元線WL0,從而可執行對於與字元線WL0連接之複數個記憶胞之精細寫入動作。且,將與對字元線WL0之模糊寫入動作中使用之4頁(P0~P3)份之寫入資料相同之4頁(P0~P3)份之寫入資料再次傳送至NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL0連接之複數個記憶胞,執行用以寫入該等4頁(P0~P3)份之寫入資料之精細寫入動作。藉此,對於頁面P0~P3之模糊-精細寫入動作結束。其結果,可從頁面P0~P3將資料讀出。
(4)繼而,將下一個4頁(P8~P11)份之寫入資料傳送至
NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL2連接之複數個記憶胞,執行用以寫入該等4頁(P8~P11)份之寫入資料之模糊寫入動作。
(5)當對於與字元線WL2連接之複數個記憶胞之模糊寫入動作已結束時,寫入對象之字元線返回字元線WL1,從而可執行對於與字元線WL1連接之複數個記憶胞之精細寫入動作。且,將與對字元線WL1之模糊寫入動作中使用之4頁(P4~P7)份之寫入資料相同之4頁(P4~P7)份之寫入資料再次傳送至NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL1連接之複數個記憶胞,執行用以寫入該等4頁(P4~P7)份之寫入資料之精細寫入動作。藉此,對於頁面P4~P7之模糊-精細寫入動作結束。其結果,可從頁面P4~P7將資料讀出。
(6)繼而,將下一個4頁(P12~P15)份之寫入資料傳送至NAND型快閃記憶體,對與該寫入對象區塊內之字元線WL3連接之複數個記憶胞,執行用以寫入該等4頁(P12~P15)份之寫入資料之模糊寫入動作。
圖6表示包含本實施形態之快閃儲存裝置3與主機2之計算機系統1之構成例。
快閃儲存裝置3具備控制器4及非揮發性記憶體(NAND型快閃記憶體)5。快閃儲存裝置3亦可具備隨機存取記憶體,例如DRAM(Dynamic Random Access Memory,動態隨機存取記憶體)6。
NAND型快閃記憶體5包含具有矩陣狀配置之複數個記憶胞之記憶胞陣列。NAND型快閃記憶體5既可為2維結構之NAND型快閃記憶體,亦可為3維結構之NAND型快閃記憶體。
NAND型快閃記憶體5之記憶胞陣列包含複數個區塊BLK0
~BLKm-1。區塊BLK0~BLKm-1各自由大量頁面編排。抹除動作係以區塊為單位執行,資料寫入動作及資料讀入動作係以頁面為單位執行。
NAND型快閃記憶體5可由於一個記憶胞中可儲存複數位之多值-快閃記憶體、例如於一個記憶胞中可儲存4位之四階單元(QLC,Quad Level Cell)-快閃記憶體實現。於此情形時,NAND型快閃記憶體5可於每一區塊中選擇性使用用以對一個記憶胞寫入4位之寫入模式(QLC模式)、及用以對一個記憶胞寫入1位之寫入模式(單階單元(SLC,Single Level Cell)模式)。適用QLC模式之區塊可作為QLC區塊進行參照,適用SLC模式之區塊可作為SLC區塊進行參照。上述複數階段寫入動作係為了對QLC區塊寫入資料而使用。再者,NAND型快閃記憶體5不限於由QLC-快閃記憶體實現,亦可由於一個記憶胞中可儲存2位之多階單元(MLC)-快閃記憶體、或於一個記憶胞中可儲存3位之三階單元(TLC)-快閃記憶體實現。上述複數階段之寫入動作既可用於對適用MLC模式之區塊(MLC區塊)寫入資料,亦可用於對適用TLC模式之區塊(TLC區塊)寫入資料。
控制器4係經由如ToggleNAND介面、開放NAND快閃記憶體介面(ONFI)般之NAND介面13,與作為非揮發性記憶體之NAND型快閃記憶體5電性連接。控制器4作為以控制NAND型快閃記憶體5之方式構成之儲存控制器運行。該控制器4亦可由如System-on-a-chip(SoC)(片上系統)般之電路實現。
NAND型快閃記憶體5亦可如圖7所示包含複數個NAND型快閃記憶晶片(NAND型快閃記憶體裸片)。各個NAND型快閃記憶晶片可獨立地運行。因此,NAND型快閃記憶晶片作為可並列運行之單位發揮作用。於圖7中,例示了NAND介面13中連接有16個通道Ch.1~Ch.16,16
個通道Ch.1~Ch.16各自連接有2個NAND型快閃記憶晶片之情形。於此情形時,可將與通道Ch.1~Ch.16連接之16個NAND型快閃記憶晶片# 1~# 16作為記憶庫# 0編排,又,與通道Ch.1~Ch.16連接之剩餘之16個NAND型快閃記憶晶片# 17~# 32亦可作為記憶庫# 1編排。記憶庫係作為藉由記憶庫交錯使複數個記憶體模組並列運行之單位發揮作用。於圖7之構成例中,可藉由16通道、及使用2個記憶庫之記憶庫交錯,使最多32個NAND型快閃記憶晶片並列運行。
抹除動作既可以一個區塊(實體區塊)為單位執行,亦可以包含可並列運行之複數個區塊之集合之超級區塊為單位執行。一個超級區塊並不限於此,但可包含從NAND型快閃記憶晶片# 1~# 32中逐一選擇之總計32個區塊。再者,NAND型快閃記憶晶片# 1~# 32各自可具有多平面構成。例如於NAND型快閃記憶晶片# 1~# 32各自具有包含2個平面之多平面構成之情形時,一個超級區塊亦可包含從與NAND型快閃記憶晶片# 1~# 32對應之64個平面中逐一地選擇之總計64個區塊。
於圖8中,例示了包含32個區塊(此為NAND型快閃記憶晶片# 1內之區塊BLK2、NAND型快閃記憶晶片# 2內之區塊BLK3、NAND型快閃記憶晶片# 3內之區塊BLK7、NAND型快閃記憶晶片# 4內之區塊BLK4、NAND型快閃記憶晶片# 5內之區塊BLK6、...NAND型快閃記憶晶片# 32內之區塊BLK3)之一個超級區塊(SB)。
作為圖2、圖3中說明之各寫入對象區塊602,亦可使用可並列存取之複數個區塊之集合即超級區塊。
繼而,對圖6之控制器4之構成進行說明。
控制器4包含主機介面11、CPU(Central Processing Unit,
中央處理單元)12、NAND介面13、及DRAM介面14等。該等主機介面11、CPU12、NAND介面13、DRAM介面14係經由匯流排10相互連接。
該主機介面11係以執行與主機2之通信之方式構成之主機介面電路。該主機介面11亦可為例如PCIe控制器(NVMe控制器)。或者,於快閃儲存裝置3經由Ethernet(註冊商標)而與主機2連接之構成中,主機介面11亦可為NVMe over Fabrics(NVMeOF)控制器。快閃儲存裝置3經由Ethernet(註冊商標)而與主機2連接之構成可視需要而容易地增加快閃儲存裝置3之數量。進而,亦可容易地增加主機2之數量。
主機介面11從主機2接收各種請求(指令)。該等請求(指令)中,包括寫入請求(寫入指令)、讀取請求(讀取指令)、及其他各種請求(指令)。
CPU12係以控制主機介面11、NAND介面13、DRAM介面14之方式構成之處理器。CPU12回應快閃儲存裝置3之電源接通,從NAND型快閃記憶體5或未圖示之ROM將控制程式(固件)加載到DRAM6,又,藉由執行該固件而進行各種處理。再者,固件亦可加載到控制器4內之未圖示之SRAM上。該CPU12可執行用以處理來自主機2之各種指令之指令處理等。CPU12之運行係藉由由CPU12執行之上述固件進行控制。再者,指令處理之一部分或全部亦可由控制器4內之專用硬體執行。
CPU12可作為寫入控制部21及讀取控制部22發揮作用。該等寫入控制部21及讀取控制部22亦可藉由控制器4內之專用硬體實現。
寫入控制部21構成為藉由至少包含伴有將複數頁份之資料傳送至NAND型快閃記憶體5之第1階段寫入動作與伴有將該資料傳送至
NAND型快閃記憶體5之第2階段寫入動作之複數階段寫入動作,將該資料寫入至NAND型快閃記憶體5之與特定寫入對象區塊內之相同字元線連接之複數個記憶胞。該複數階段寫入動作之典型例中,如上所述,存在模糊-精細寫入動作。
寫入控制部21管理從NAND型快閃記憶體5中所含之複數個區塊中分配之複數個寫入對象區塊。寫入控制部21從主機2接收包含指定複數個寫入對象區塊之任一個寫入對象區塊之區塊位址之寫入請求。每當從主機2接收到寫入請求時,寫入控制部21從主機2接收主機2之記憶體33上之複數個主機側寫入緩衝區405之任一個中儲存之寫入資料,並將接收之寫入資料儲存於DRAM6上之共享裝置側寫入緩衝區601。
寫入控制部21從共享裝置側寫入緩衝區601獲取與指定某個寫入對象區塊(第1寫入對象區塊)之一個以上寫入請求建立關聯之複數頁份寫入資料(第1寫入資料)。又,寫入控制部21藉由如模糊寫入動作般之第1階段寫入動作,將該第1寫入資料寫入至與第1寫入對象區塊內之寫入對象之一個字元線連接之複數個記憶胞(複數個第1記憶胞)。
於在應執行第1寫入資料之第2階段寫入動作之時間點,第1寫入資料存在於共享裝置側寫入緩衝區601之情形時,寫入控制部21從共享裝置側寫入緩衝區601獲取第1寫入資料,藉由第2階段寫入動作將第1寫入資料寫入至第1寫入對象區塊之上述複數個第1記憶胞。
於在應執行第1寫入資料之第2階段寫入動作之時間點,第1寫入資料不存在於共享裝置側寫入緩衝區601之情形時,寫入控制部21藉由將用以獲取第1寫入資料之請求(傳送請求)發送至主機2,從主機2獲取第1寫入資料,並藉由第2階段寫入動作將第1寫入資料寫入至第1寫入對
象區塊之上述複數個第1記憶胞。
又,寫入控制部21藉由將共享裝置側寫入緩衝區601內之某個寫入資料捨棄而於共享裝置側寫入緩衝區601中確保空區。
例如,寫入控制部21於某個寫入資料之精細寫入動作已結束之情形時、即該寫入資料之複數階段寫入動作已結束之情形時,將該寫入資料從共享裝置側寫入緩衝區601中捨棄。
又,當共享裝置側寫入緩衝區601中無空區之狀態下,從主機2接收到新的寫入資料之情形時,寫入控制部21從模糊寫入動作已結束之共享裝置側寫入緩衝區601內之寫入資料之中選擇應捨棄之寫入資料,將所選擇之寫入資料從共享裝置側寫入緩衝區601中捨棄。
作為用以選擇應捨棄之寫入資料之演算法可使用於如模糊寫入動作般之第1階段寫入動作已結束之共享裝置側寫入緩衝區601內之寫入資料之中選擇最舊之寫入資料之先進先出。
相較對與資料寫入量較少之客戶端(租戶)對應之寫入對象區塊之資料寫入動作之進行速度,對與資料寫入量較多之客戶端(租戶)對應之寫入對象區塊之資料寫入動作之進行速度存在變快之傾向。因此,可藉由使用將如模糊寫入動作般之第1階段寫入動作已結束之共享裝置側寫入緩衝區601內之寫入資料之中最舊之寫入資料捨棄之類之方法,減少將傳送請求發送至主機2之頻度。
再者,用以選擇應從如模糊寫入動作般之第1階段寫入動作已結束之共享裝置側寫入緩衝區601內之寫入資料之中捨棄之寫入資料之演算法不限於先進先出,亦可使用LRU、如隨機般之其他演算法。
讀取控制部22從主機2接收指定區塊位址及頁面位址之讀取
請求(讀取指令),將由該區塊位址及頁面位址指定之NAND型快閃記憶體5內之實體儲存位置中儲存之資料讀出,並將該讀出之資料回傳至主機2。
NAND介面13係以於CPU12之控制之下,控制NAND型快閃記憶體5之方式構成之記憶體控制電路。
DRAM介面14係以於CPU12之控制之下,控制DRAM6之方式構成之DRAM控制電路。DRAM6之記憶區域之一部分被用作共享裝置側寫入緩衝區601。
主機2係如伺服器般之電腦,且作為它之硬體組件,具備主機儲存控制器31、處理器32、及記憶體33。該等主機儲存控制器31、處理器32、記憶體33亦可經由匯流排30而相互連接。記憶體33係如DRAM般之隨機存取記憶體,且記憶體33之記憶區域之一部分被用作複數個主機側寫入緩衝區405。
主機2更具備網路介面34。
圖9表示由主機2與快閃儲存裝置3執行之資料寫入處理之例。
此處,設想於應執行對某個寫入對象區塊之某個字元線之精細寫入動作之時間點,應對與該字元線連接之複數個記憶胞寫入之寫入資料存在於共享裝置側寫入緩衝區601之情形。
(1)若與某個客戶端(租戶)對應之使用者應用程式請求資料寫入,則將該資料(寫入資料)儲存於與該客戶端(租戶)對應之主機側寫入緩衝區405。又,從主機2對快閃儲存裝置3發送寫入請求。寫入請求亦可包含例如區塊位址與標籤。如上所述,標籤係用以識別寫入資料之信息(例如LBA、鍵值儲存之鍵等)。又,寫入請求亦可包含表示儲存有寫入資
料之主機側寫入緩衝區405內之位置之儲存位置信息。寫入請求可於例如主機側寫入緩衝區405中儲存有特定量之寫入資料之類之條件滿足時,從主機2發送至快閃儲存裝置3。於快閃儲存裝置3之控制器4中,寫入控制部21接收到來自主機2之寫入請求之情形時,寫入控制部21從主機2接收主機側寫入緩衝區405中儲存之寫入資料。該寫入資料可與寫入請求一同地從主機2發送至快閃儲存裝置3,寫入控制部21亦可藉由將用以獲取寫入資料之請求(傳送請求)發送至主機2而從主機2獲取該寫入資料。該傳送請求包含表示主機側寫入緩衝區405內之位置之上述儲存位置信息。
(2)(3)於快閃儲存裝置3之控制器4中,寫入控制部21決定由所接收之寫入請求中之區塊位址指定之寫入對象區塊內之寫入對象之頁面之頁面位址。寫入控制部21從共享裝置側寫入緩衝區601獲取應寫入至該寫入對象區塊之複數頁份之第1寫入資料。寫入控制部21藉由模糊寫入動作將該複數頁份之第1寫入資料經由NAND介面13寫入至該寫入對象區塊。於此情形時,寫入控制部21將該複數頁份之第1寫入資料(模糊資料)傳送至包含該寫入對象區塊之NAND型快閃記憶晶片,將第1寫入資料寫入至與該寫入對象區塊內之寫入對象之字元線連接之複數個第1記憶胞(模糊寫入動作)。
(4)因對後續之1個以上字元線之模糊寫入動作結束而達到應執行該第1寫入資料之精細寫入之時間點後,寫入控制部21對共享裝置側寫入緩衝區601請求複數頁份之第1寫入資料。於該複數頁份之第1寫入資料存在於共享裝置側寫入緩衝區601之情形時,寫入控制部21從共享裝置側寫入緩衝區601獲取複數頁份之第1寫入資料。寫入控制部21藉由精細寫入動作將該複數頁份之第1寫入資料經由NAND介面13寫入至該寫入
對象區塊。於此情形時,寫入控制部21將該複數頁份之第1寫入資料(精細資料)傳送至包含該寫入對象區塊之NAND型快閃記憶晶片,並將第1寫入資料寫入至該寫入對象區塊內之上述複數個第1記憶胞(精細寫入動作)。
(5)寫入控制部21將精細寫入動作已結束之複數頁份之第1寫入資料(精細狀態之寫入資料)從共享裝置側寫入緩衝區601中捨棄,藉此,增加共享裝置側寫入緩衝區601之空區。
圖10表示藉由主機2與快閃儲存裝置3執行之資料寫入處理之另一例。
此處,設想於應執行對某個寫入對象區塊之某個字元線之精細寫入動作之時間點,應寫入至與該字元線連接之複數個記憶胞之寫入資料不存在於共享裝置側寫入緩衝區601中之情形。
(1')若與某個客戶端(租戶)對應之使用者應用程式請求資料寫入,則將該資料(寫入資料)儲存於與該客戶端(租戶)對應之主機側寫入緩衝區405。又,從主機2對快閃儲存裝置3發送寫入請求。寫入請求亦可包含例如區塊位址與標籤。如上所述,標籤係用以識別寫入資料之信息(例如LBA、鍵值儲存之鍵等)。又,寫入請求亦可包含表示儲存有寫入資料之主機側寫入緩衝區405內之位置之儲存位置信息。寫入請求可於例如主機側寫入緩衝區405中儲存有特定量之寫入資料之類之條件滿足時,從主機2發送至快閃儲存裝置3。於快閃儲存裝置3之控制器4中,寫入控制部21接收到來自主機2之寫入請求之情形時,寫入控制部21從主機2接收主機側寫入緩衝區405中儲存之寫入資料。該寫入資料可與寫入請求一同地從主機2發送至快閃儲存裝置3,寫入控制部21亦可藉由將用以獲取寫入資料之請求(傳送請求)發送至主機2而從主機2獲取該寫入資料。該傳送
請求包含表示主機側寫入緩衝區405內之位置之上述儲存位置信息。
(2')(3')於快閃儲存裝置3之控制器4中,寫入控制部21決定由接收之寫入請求內之區塊位址指定之寫入對象區塊內之寫入對象之頁面之頁面位址。寫入控制部21從共享裝置側寫入緩衝區601獲取應寫入至該寫入對象區塊之複數頁份之第1寫入資料。寫入控制部21藉由模糊寫入動作將該複數頁份之第1寫入資料經由NAND介面13寫入至該寫入對象區塊。於此情形時,寫入控制部21將該複數頁份之第1寫入資料(模糊資料)傳送至包含該寫入對象區塊之NAND型快閃記憶晶片,並將第1寫入資料寫入至與該寫入對象區塊內之寫入對象之字元線連接之複數個第1記憶胞(模糊寫入動作)。
(4')因對後續之1個以上之字元線之模糊寫入動作結束而達到應執行該第1寫入資料之精細寫入之時間點後,寫入控制部21對共享裝置側寫入緩衝區601請求複數頁份之第1寫入資料。於該複數頁份之第1寫入資料不存在於共享裝置側寫入緩衝區601中之情形時,寫入控制部21藉由將用以獲取第1寫入資料之請求(傳送請求)發送至主機2而從主機2獲取第1寫入資料。該傳送請求包含表示主機側寫入緩衝區405內之位置之上述儲存位置信息。所獲取之第1寫入資料亦可儲存於共享裝置側寫入緩衝區601中。
(5')寫入控制部21藉由精細寫入動作將該複數頁份之第1寫入資料經由NAND介面13寫入至該寫入對象區塊。於此情形時,寫入控制部21將該複數頁份之第1寫入資料(精細資料)傳送至包含該寫入對象區塊之NAND型快閃記憶晶片,並將第1寫入資料寫入至該寫入對象區塊內之上述複數個第1記憶胞(精細寫入動作)。
(6')寫入控制部21將精細寫入動作已結束之複數頁份之第1寫入資料(精細狀態之寫入資料)從共享裝置側寫入緩衝區601中捨棄,藉此,增加共享裝置側寫入緩衝區601之空區。
圖11表示使用共享裝置側寫入緩衝區601藉由快閃儲存裝置3之控制器4執行之模糊-精細寫入動作與將共享裝置側寫入緩衝區601之資料捨棄之處理。
圖11中,為簡化圖示而例示共享裝置側寫入緩衝區601包含區域101~109之情形。該等區域101~109各自具有例如4頁份之大小。又,於圖11中,設想一邊於3個字元線WL中往返一邊執行模糊-精細寫入動作之情形。
於共享裝置側寫入緩衝區601之區域101、102中分別儲存之寫入資料D1、D2為應寫入至寫入對象區塊BLK11之寫入資料之情形時,控制器4(1)將4頁份之寫入資料D1藉由模糊寫入動作寫入至寫入對象區塊BLK11之頁面P0-P3(與字元線WL0連接之複數個記憶胞),又,(2)將4頁份之寫入資料D2藉由模糊寫入動作寫入至寫入對象區塊BLK11之頁面P4-P7(與字元線WL1連接之複數個記憶胞)。
於共享裝置側寫入緩衝區601之區域103、104、105中儲存之寫入資料D11、D12、D13為應寫入至寫入對象區塊BLK101之寫入資料之情形時,控制器4(3)將4頁份之寫入資料D11藉由模糊寫入動作寫入至寫入對象區塊BLK101之頁面P0-P3(與字元線WL0連接之複數個記憶胞),(4)將4頁份之寫入資料D12藉由模糊寫入動作寫入至寫入對象區塊BLK101之頁面P4-P7(與字元線WL1連接之複數個記憶胞),(5)將4頁份之寫入資料D13藉由模糊寫入動作寫入至寫入對象區塊BLK101之頁面P8-
P11(與字元線WL2連接之複數個記憶胞)。
當對字元線WL2之4頁份寫入資料D13之模糊寫入動作已結束之後,控制器4(6)將4頁份之寫入資料D11藉由精細寫入動作寫入至寫入對象區塊BLK101之頁面P0-P3(與字元線WL0連接之複數個記憶胞)。於寫入資料D11之精細寫入動作結束後,該寫入資料D11之狀態從模糊狀態變為精細狀態。又,控制器4(7)將精細寫入動作已結束之該寫入資料D11(精細狀態之寫入資料)從共享裝置側寫入緩衝區601中捨棄,使區域103成為空區。
圖12表示將共享裝置側寫入緩衝區601中無空區之狀態下從主機2接收到新的寫入資料之情形時執行之精細寫入動作已結束之共享裝置側寫入緩衝區601內之寫入資料捨棄之處理。
圖12之上部表示共享裝置側寫入緩衝區601整體被模糊寫入動作已結束之模糊狀態之寫入資料(D21~D23、D31~D33、D41~D43)充滿,共享裝置側寫入緩衝區601中無空區之狀態。
於該狀態下從主機2接收到新的寫入資料之情形時,快閃儲存裝置3之控制器4如圖12之中部所示,從模糊寫入動作已結束之寫入資料(模糊狀態之寫入資料)之中,選擇最舊之寫入資料(此處為寫入資料D11)作為應捨棄之寫入資料,將該最舊之寫入資料(此處為寫入資料D11)從共享裝置側寫入緩衝區601中捨棄。
又,快閃儲存裝置3之控制器4如圖12之下部所示,於藉由將寫入資料D11捨棄而成為空區之區域101中儲存已接收之新的寫入資料(此處為寫入資料D51)。
圖13之流程圖表示藉由快閃儲存裝置3之控制器4執行之資
料寫入處理之順序。
於步驟S101中,控制器4從主機2接收包含指定複數個寫入對象區塊602中之任一個之區塊位址之寫入請求。每當控制器4從主機2接收寫入請求時,控制器4從主機2接收複數個主機側寫入緩衝區405之任一個中儲存之寫入資料,並將接收之寫入資料儲存於共享裝置側寫入緩衝區601中。
於步驟S102中,控制器4從共享裝置側寫入緩衝區601獲取與指定某個寫入對象區塊之一個以上之寫入請求建立關聯之複數頁份之第1寫入資料。
於步驟S103、S104中,控制器4將獲取之複數頁份之第1寫入資料傳送至NAND型快閃記憶體5,藉由模糊寫入動作將該第1寫入資料寫入至與該寫入對象區塊內之寫入對象之一個字元線連接之複數個第1記憶胞。
於步驟S105中,於應開始該第1寫入資料之精細寫入動作之時間點,控制器4判定該第1寫入資料是否存在於共享裝置側寫入緩衝區601。
若該第1寫入資料存在於共享裝置側寫入緩衝區601(步驟S106之是(YES)),則於步驟S107中,控制器4從共享裝置側寫入緩衝區601獲取第1寫入資料。於步驟S108、S109中,控制器4將獲取之複數頁份之第1寫入資料傳送至NAND型快閃記憶體5,藉由精細寫入動作將該第1寫入資料寫入至該寫入對象區塊內之上述複數個第1記憶胞。又,於步驟S110中,控制器4將第1寫入資料從共享裝置側寫入緩衝區601中捨棄。
若該第1寫入資料不存在於共享裝置側寫入緩衝區601中(步
驟S106之否(NO)),則於步驟S111中,控制器4將傳送請求發送至主機2,將從主機側寫入緩衝區405傳送至快閃儲存裝置3之該第1寫入資料儲存於共享裝置側寫入緩衝區601。又,控制器4執行步驟S107~S110之處理。
圖14係用以說明主機2指定寫入對象區塊且快閃儲存裝置3決定寫入對象頁面之資料寫入動作、及主機2指定區塊位址與頁面位址之資料讀出動作之圖。
主機2之I/O服務404將區塊分配請求及寫入請求送出至快閃儲存裝置3。
快閃儲存裝置3之控制器4包含區塊分配部701、及頁面分配部702。區塊分配部701、及頁面分配部702亦可包含於圖6中說明之寫入控制部21。
資料寫入動作以如下之順序執行。
(1)於主機2之I/O服務404必須將資料(寫入資料)寫入至快閃儲存裝置3時,I/O服務404亦可請求快閃儲存裝置3分配可用作寫入對象區塊之空閒區塊。當區塊分配部701接收到該請求(區塊分配請求)時,區塊分配部701將空閒區塊群之一個空閒區塊作為寫入對象區塊分配給主機2,並將被分配之寫入對象區塊之區塊位址(BLK #)通知主機2。
(2)主機2之I/O服務404將包含指定被分配之寫入對象區塊之區塊位址、識別寫入資料之標籤、及該寫入資料之資料長度之寫入請求發送至快閃儲存裝置3。又,I/O服務404將寫入資料傳送至快閃儲存裝置3。
(3)於頁面分配部702接收到寫入請求時,頁面分配部702決定表示具有由寫入請求指定之區塊位址之區塊(寫入對象區塊)內之寫入對
象頁面之頁面位址。控制器4從共享裝置側寫入緩衝區601獲取寫入資料,將該寫入資料寫入至寫入對象區塊內之該被決定之寫入對象頁面。
(4)控制器4將表示該寫入對象頁面之頁面位址作為對寫入請求之回應通知主機2。或者,控制器4亦可將寫入請求中所含之標籤、寫入請求中所含之區塊位址及被決定之頁面位址之組作為對寫入請求之回應通知主機2。於主機2中,以將表示寫入有寫入資料之實體儲存位置之實體位址(區塊位址、頁面位址)映射至該寫入資料之標籤之方式,將LUT404A更新。
資料讀取動作以如下之順序執行。
(1)'於主機2必須從快閃儲存裝置3讀取資料時,主機2藉由參照LUT404A,而從LUT404A獲取與應讀取之資料之標籤對應之實體位址(區塊位址、頁面位址)。
(2)'主機2將指定所獲取之區塊位址及頁面位址之讀取請求送出至快閃儲存裝置3。於快閃儲存裝置3之控制器4從主機2接收到該讀取請求時,控制器4基於區塊位址及頁面位址,從讀取對象之區塊內之讀取對象之實體儲存位置中讀取資料。
圖15表示應用於快閃儲存裝置3之區塊分派指令。
區塊分派指令係對快閃儲存裝置3請求分配寫入對象區塊(空閒區塊)之指令(區塊分配請求)。主機2藉由將區塊分派指令發送至快閃儲存裝置3,對快閃儲存裝置3請求分配寫入對象區塊,藉此可獲取區塊位址(經分配之寫入對象區塊之區塊位址)。
圖16表示對區塊分派指令之回應。
當從主機2接收到區塊分派指令時,快閃儲存裝置3從空閒
區塊清單中,選擇應分配給主機2之空閒區塊,將所選擇之空閒區塊作為寫入對象區塊進行分配,且將包含該寫入對象區塊之區塊位址之回應返回至主機2。
圖17表示應用於快閃儲存裝置3之寫入指令。
寫入指令係對快閃儲存裝置3請求寫入資料之指令。該寫入指令亦可包含指令ID、區塊位址、標籤、長度等。
指令ID係表示該指令為寫入指令之ID(指令碼),寫入指令中包含寫入指令用之指令ID。
區塊位址係指定應被寫入資料之寫入對象區塊之實體位址。
標籤係用以識別應寫入之寫入資料之識別碼。該標籤如上所述,可為如LBA般之邏輯位址,亦可為鍵值儲存之鍵。若標籤為如LBA般之邏輯位址,則該寫入指令中所含之邏輯位址(起始LBA)表示應被寫入寫入資料之邏輯位址空間內之邏輯位置(初始之邏輯位置)。
長度表示應寫入之寫入資料之長度。
寫入指令可更包含表示儲存有寫入資料之主機側寫入緩衝區405內之位置之儲存位置信息。
當從主機2接收到寫入指令時,控制器4決定具有由寫入指令指定之區塊位址之寫入對象區塊內之寫入對象位置(寫入對象頁面)。該寫入對象頁面係考量頁面寫入順序之限制及壞頁等而決定。又,控制器4將來自主機2之資料寫入至該寫入對象區塊內之該寫入對象位置(寫入對象頁面)。
圖18表示對圖17之寫入指令之回應。
該回應包括頁面位址及長度。頁面位址係表示被寫入資料之寫入對象區塊內之實體儲存位置之實體位址。該實體位址可由區塊內偏移(即頁面位址與頁面內偏移之組)表示。長度表示被寫入之資料之長度。
或者,該回應不僅包含頁面位址(區塊內偏移)及長度,亦可更包含標籤、區塊位址。標籤係圖17之寫入指令中所含之標籤。區塊位址係圖17之寫入指令中所含之區塊位址。
圖19表示快閃儲存裝置3中適用之讀取指令。
讀取指令係對快閃儲存裝置3請求資料讀出之指令。該讀取指令包括指令ID、標籤、區塊位址、頁面位址、及長度。
指令ID係表示該指令為讀取指令之ID(指令碼),且讀取指令中包含讀取指令用之指令ID。
區塊位址指定儲存有應讀取之資料之區塊。頁面位址指定儲存有應讀取之資料之頁面。該頁面位址亦可由表示儲存有應讀取之資料之區塊內之實體儲存位置之區塊內偏移(即頁面位址與頁面內偏移之組)表示。長度表示應讀取之資料之長度。
圖20表示由1個以上之SLC-區塊實現之共享裝置側寫入緩衝區601之例。
於至此為止之說明中,設想了由如DRAM6般之隨機存取記憶體實現共享裝置側寫入緩衝區601之情形。然而,由於對每一記憶胞寫入1位元之資料之SLC-區塊之資料寫入速度快於對每一記憶胞寫入複數位元之資料之區塊之資料寫入速度,故而,共享裝置側寫入緩衝區601如圖20所示亦可由對每一記憶胞寫入1位元之資料之一個以上SLC-區塊實現。於此情形時,各寫入對象區塊亦可由對每一記憶胞寫入複數位元之資料之
區塊、例如對每一記憶胞寫入4位元之資料之QLC-區塊實現。
如以上所說明,根據本實施形態,每當從主機2接收到寫入請求時,與複數個寫入對象區塊602分別對應之複數個主機側寫入緩衝區405之任一個中儲存之寫入資料被儲存於在複數個寫入對象區塊602間共享之共享裝置側寫入緩衝區601中。又,從共享裝置側寫入緩衝區601獲取應寫入至複數個寫入對象區塊602內之第1寫入對象區塊之複數頁份之第1寫入資料,藉由如模糊寫入動作般之第1階段寫入動作將第1寫入資料寫入至第1寫入對象區塊。於在共享裝置側寫入緩衝區601中無空區之狀態下從主機2接收到寫入資料之情形時,將第1階段寫入動作已結束之共享裝置側寫入緩衝區601內之寫入資料捨棄,於共享裝置側寫入緩衝區601中確保空區。於在應執行如第1寫入資料之精細寫入動作般之第2階段寫入動作之時間點,共享裝置側寫入緩衝區601中不存在第1寫入資料之情形時,藉由將用以獲取第1寫入資料之請求發送至主機2而從主機2獲取第1寫入資料。
因此,僅於共享裝置側寫入緩衝區601中不存在第1寫入資料之情形時,將相同寫入資料從主機2再次傳送至快閃儲存裝置3即可,故而,可靈活地應對寫入對象指南之增加即共享快閃儲存裝置3之客戶端之數量增加,且可將主機2與快閃儲存裝置3之間之資料流量削減。
再者,於本實施形態中,說明了使用共享裝置側寫入緩衝區601執行如模糊-精細寫入動作般之複數階段寫入動作之情形,但本實施形態之構成及寫入處理之順序不僅限於複數階段寫入動作,亦可適用於將複數頁份資料1次傳送至NAND型快閃記憶體5之全序列寫入動作。
又,於本實施形態中,作為快閃儲存裝置3中適用之寫入指
令,說明了包含指定寫入對象區塊之區塊位址之寫入請求(寫入指令),但亦可使用包含區塊位址與頁面位址兩者之寫入請求(寫入指令)。
又,於本實施形態中,作為非揮發性記憶體,例示了NAND型快閃記憶體。然而,本實施形態之功能亦可適用於例如如MRAM(Magnetoresistive Random Access Memory,磁阻式隨機存取記憶體)、PRAM(Phase change Random Access Memory,相變隨機存取記憶體)、ReRAM(Resistive Random Access Memory,電阻隨機存取記憶體)、或FeRAM(Ferroelectric Random Access Memory,鐵電隨機存取記憶體)般之其他各種非揮發性記憶體。
對本發明之若干實施形態進行了說明,但該等實施形態係作為示例而提示,並非意於限定發明範圍。該等新穎之實施形態可利用其他各種方式實施,於不脫離發明主旨之範圍內,可進行省略、置換、變更。該等實施形態或其變化包含於發明之範圍或主旨中,並且包含於權利要求書中記載之發明及其均等之範圍中。
本申請案係享有以日本專利申請2018-78422號(申請日:2018年4月16日)為基礎申請案之優先權。本申請案藉由參照該基礎申請案而包含基礎申請案之全部內容。
2‧‧‧主機
3‧‧‧快閃儲存裝置
405‧‧‧主機側寫入緩衝區
601‧‧‧共享裝置側寫入緩衝區
602‧‧‧快閃區塊
Claims (15)
- 一種記憶體系統,其係可與主機連接者,且具備: 非揮發性記憶體,其包含複數個區塊;及 控制器,其與上述非揮發性記憶體電性連接,至少包含第1階段寫入動作與第2階段寫入動作,且構成為執行將複數頁份之相同資料複數次傳送至上述非揮發性記憶體之複數階段寫入動作; 上述控制器構成為, 每當從上述主機接收到寫入請求時,從上述主機接收與從上述複數個區塊分配之複數個寫入對象區塊分別對應之上述主機之記憶體上之複數個寫入緩衝區之任一個中儲存之寫入資料,將上述接收到之寫入資料儲存於上述複數個寫入對象區塊間共享之共享寫入緩衝區,且 從上述共享寫入緩衝區獲取應對上述複數個寫入對象區塊內之第1寫入對象區塊寫入之複數頁份之第1寫入資料,藉由上述第1階段寫入動作將上述第1寫入資料寫入至上述第1寫入對象區塊,且 若於上述共享寫入緩衝區中無空區之狀態下從上述主機接收到寫入資料之情形時,將上述第1階段寫入動作已結束之上述共享寫入緩衝區內之寫入資料捨棄,而於上述共享寫入緩衝區中確保上述空區,且 於應執行上述第1寫入資料之上述第2階段寫入動作之時間點,若上述第1寫入資料不存在於上述共享寫入緩衝區之情形時,藉由將用以獲取上述第1寫入資料之請求發送至上述主機而從上述主機獲取上述第1寫入資料。
- 如請求項1之記憶體系統,其中上述控制器構成為,於應執行上述第1寫入資料之上述第2階段寫入動作之時間點,若上述共享寫入緩衝區中存在上述第1寫入資料之情形時,從上述共享寫入緩衝區獲取上述第1寫入資料,藉由上述第2階段寫入動作將上述第1寫入資料寫入至上述第1寫入對象區塊。
- 如請求項2之記憶體系統,其中上述控制器構成為,於上述第1寫入資料之上述複數階段寫入動作已結束之情形時,將上述第1寫入資料從上述共享寫入緩衝區捨棄。
- 如請求項1之記憶體系統,其中上述控制器構成為,若於上述共享寫入緩衝區中無空區之狀態下從上述主機接收到寫入資料之情形時,將上述第1階段寫入動作已結束之上述共享寫入緩衝區內之寫入資料之中最舊之寫入資料捨棄。
- 如請求項1之記憶體系統,其中上述接收之寫入請求各自包含指定寫入對象區塊之區塊位址,且上述控制器構成為從上述共享寫入緩衝區獲取與指定上述第1寫入對象區塊之一個以上之寫入請求建立關聯之複數頁份之寫入資料作為上述第1寫入資料。
- 如請求項1之記憶體系統,其中上述共享寫入緩衝區由上述記憶體系統中所含之隨機存取記憶體實現。
- 如請求項1之記憶體系統,其中上述複數個寫入對象區塊各自由對每一記憶胞寫入複數位元之資料之區塊實現,上述共享寫入緩衝區由對每一記憶胞寫入1位元之資料之一個以上之單階單元-區塊實現。
- 一種記憶體系統,其係可與主機連接者,且具備: 非揮發性記憶體,其包含複數個區塊;及 控制器,其與上述非揮發性記憶體電性連接,且構成為藉由至少包含伴有將複數頁份資料傳送至上述非揮發性記憶體之第1階段寫入動作、及伴有將上述資料傳送至上述非揮發性記憶體之第2階段寫入動作之複數階段寫入動作,將上述資料寫入至上述非揮發性記憶體之與寫入對象區塊內之相同字元線連接之複數個記憶胞, 上述控制器構成為, 每當從上述主機接收到包含指定上述複數個寫入對象區塊之任一個之區塊位址之寫入請求時,從上述主機接收與從上述複數個區塊分配之複數個寫入對象區塊分別對應之上述主機之記憶體上之複數個寫入緩衝區之任一個中儲存之寫入資料,且將上述接收到之寫入資料儲存於上述複數個寫入對象區塊間共享之共享寫入緩衝區, 從上述共享寫入緩衝區獲取與指定上述複數個寫入對象區塊內之第1寫入對象區塊之一個以上之寫入請求建立關聯之複數頁份第1寫入資料,藉由上述第1階段寫入動作將上述第1寫入資料寫入至與上述第1寫入對象區塊內之寫入對象之一條字元線連接之複數個第1記憶胞, 若於上述共享寫入緩衝區中無空區之狀態下從上述主機接收到寫入資料之情形時,將上述第1階段寫入動作已結束之上述共享寫入緩衝區內之寫入資料捨棄,而於上述共享寫入緩衝區中確保上述空區, 於應執行上述第1寫入資料之上述第2階段寫入動作之時間點,若上述共享寫入緩衝區中存在上述第1寫入資料之情形時,從上述共享寫入緩衝區中獲取上述第1寫入資料,藉由上述第2階段寫入動作將上述第1寫入資料寫入至上述第1寫入對象區塊之上述複數個第1記憶胞,且 於應執行上述第1寫入資料之上述第2階段寫入動作之時間點,若上述共享寫入緩衝區中不存在上述第1寫入資料之情形時,藉由將用以獲取上述第1寫入資料之請求發送至上述主機而從上述主機獲取上述第1寫入資料,藉由上述第2階段寫入動作將上述第1寫入資料寫入至上述第1寫入對象區塊之上述複數個第1記憶胞。
- 如請求項8之記憶體系統,其中上述控制器構成為,若於上述共享寫入緩衝區中無空區之狀態下從上述主機接收到寫入資料之情形時,將上述第1階段寫入動作已結束之上述共享寫入緩衝區內之寫入資料之中最舊之寫入資料捨棄。
- 如請求項8之記憶體系統,其中上述控制器構成為於上述第1寫入資料之上述複數階段寫入動作已結束之情形時,將上述第1寫入資料從上述共享寫入緩衝區中捨棄。
- 一種非揮發性記憶體之控制方法,其係控制包含複數個區塊之非揮發性記憶體,至少包含第1階段寫入動作與第2階段寫入動作,且執行將複數頁份之相同資料複數次傳送至非揮發性記憶體之複數階段寫入動作者,且具備如下動作: 每當從主機接收到寫入請求時,從上述主機接收與從上述複數個區塊分配之複數個寫入對象區塊分別對應之上述主機之記憶體上之複數個寫入緩衝區之任一個中儲存之寫入資料,將上述接收到之寫入資料儲存於上述複數個寫入對象區塊間共享之共享寫入緩衝區中; 從上述共享寫入緩衝區獲取應寫入至上述複數個寫入對象區塊內之第1寫入對象區塊之複數頁份之第1寫入資料,藉由上述第1階段寫入動作將上述第1寫入資料寫入至上述第1寫入對象區塊; 若於上述共享寫入緩衝區中沒有空區之狀態下從上述主機接收到寫入資料之情形時,將上述第1階段寫入動作已結束之上述共享寫入緩衝區內之寫入資料捨棄,而於上述共享寫入緩衝區中確保上述空區;及 於應執行上述第1寫入資料之上述第2階段寫入動作之時間點,若上述共享寫入緩衝區中不存在上述第1寫入資料之情形時,藉由將用以獲取上述第1寫入資料之請求發送至上述主機而從上述主機獲取上述第1寫入資料。
- 如請求項11之非揮發性記憶體之控制方法,其更具備如下動作:於應執行上述第1寫入資料之上述第2階段寫入動作之時間點,若上述共享寫入緩衝區中存在上述第1寫入資料之情形時,從上述共享寫入緩衝區獲取上述第1寫入資料,藉由上述第2階段寫入動作將上述第1寫入資料寫入至上述第1寫入對象區塊。
- 如請求項11之非揮發性記憶體之控制方法,其更具備如下動作:於上述第1寫入資料之上述複數階段寫入動作已結束之情形時,將上述第1寫入資料從上述共享寫入緩衝區中捨棄。
- 如請求項11之非揮發性記憶體之控制方法,其中上述被捨棄之寫入資料係上述第1階段寫入動作已結束之上述共享寫入緩衝區內之寫入資料之中最舊之寫入資料。
- 如請求項11之非揮發性記憶體之控制方法,其中上述接收之寫入請求各自包含指定寫入對象區塊之區塊位址,且 從上述共享寫入緩衝區獲取與指定上述第1寫入對象區塊之一個以上之寫入請求建立關聯之複數頁份之寫入資料作為上述第1寫入資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018-078422 | 2018-04-16 | ||
JP2018078422A JP7051546B2 (ja) | 2018-04-16 | 2018-04-16 | メモリシステムおよび制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201944229A TW201944229A (zh) | 2019-11-16 |
TWI703494B true TWI703494B (zh) | 2020-09-01 |
Family
ID=68161773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107143109A TWI703494B (zh) | 2018-04-16 | 2018-11-30 | 記憶體系統及非揮發性記憶體之控制方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11003385B2 (zh) |
JP (1) | JP7051546B2 (zh) |
CN (2) | CN116414314A (zh) |
TW (1) | TWI703494B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190135746A (ko) * | 2018-05-29 | 2019-12-09 | 삼성전자주식회사 | 쓰기 버퍼 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
JP7353934B2 (ja) | 2019-11-19 | 2023-10-02 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7346311B2 (ja) * | 2020-01-16 | 2023-09-19 | キオクシア株式会社 | メモリシステム |
US11137944B1 (en) | 2020-03-13 | 2021-10-05 | Western Digital Technologies, Inc. | Combined QLC programming method |
KR20240097983A (ko) * | 2020-08-27 | 2024-06-27 | 양쯔 메모리 테크놀로지스 씨오., 엘티디. | Nand 플래시 메모리 디바이스의 비파괴 모드 캐시 프로그래밍 |
US11894075B2 (en) | 2020-08-27 | 2024-02-06 | Yangtze Memory Technologies Co. Ltd. | Non-destructive mode cache programming in NAND flash memory devices |
TWI756810B (zh) * | 2020-09-02 | 2022-03-01 | 瑞昱半導體股份有限公司 | 晶片與相關的晶片系統 |
JP2022125787A (ja) | 2021-02-17 | 2022-08-29 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7516300B2 (ja) * | 2021-03-17 | 2024-07-16 | キオクシア株式会社 | メモリシステム |
US11507303B2 (en) * | 2021-04-21 | 2022-11-22 | Western Digital Technologies, Inc. | User controlled data-in for lower and middle page in MLC-fine QLC memories |
JP2022171208A (ja) | 2021-04-30 | 2022-11-11 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20220169642A (ko) * | 2021-06-21 | 2022-12-28 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작 방법 |
JP2023012773A (ja) | 2021-07-14 | 2023-01-26 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20230069642A (ko) * | 2021-11-12 | 2023-05-19 | 에스케이하이닉스 주식회사 | 저장 장치 공유 시스템 및 그 방법 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5867429A (en) * | 1997-11-19 | 1999-02-02 | Sandisk Corporation | High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates |
US6522580B2 (en) * | 2001-06-27 | 2003-02-18 | Sandisk Corporation | Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states |
US20120155166A1 (en) * | 2010-12-21 | 2012-06-21 | Yan Li | Alternate Page By Page Programming Scheme |
EP2132749B1 (en) * | 2007-03-07 | 2014-03-26 | SanDisk Technologies Inc. | Non-volatile memory and method for cache page copy |
TW201621670A (zh) * | 2014-09-06 | 2016-06-16 | Neo半導體股份有限公司 | 非揮發性記憶體之多頁編程寫入方法與裝置 |
TW201735026A (zh) * | 2015-12-14 | 2017-10-01 | Toshiba Kk | 磁性記憶體 |
TW201741872A (zh) * | 2016-04-02 | 2017-12-01 | 英特爾股份有限公司 | 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW463092B (en) * | 1998-03-20 | 2001-11-11 | Accton Technology Corp | Quasi-pushout method with upper layer packet discarding discipline and packet communication system implementing the method |
JP4303803B2 (ja) * | 1998-04-22 | 2009-07-29 | 株式会社東芝 | キャッシュフラッシュ装置 |
US8144512B2 (en) * | 2009-12-18 | 2012-03-27 | Sandisk Technologies Inc. | Data transfer flows for on-chip folding |
JP2012128660A (ja) * | 2010-12-15 | 2012-07-05 | Toshiba Corp | 半導体記憶装置 |
KR102039537B1 (ko) * | 2013-03-15 | 2019-11-01 | 삼성전자주식회사 | 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법 |
JP6448571B2 (ja) * | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP7048289B2 (ja) * | 2017-12-08 | 2022-04-05 | キオクシア株式会社 | 情報処理装置および方法 |
JP6967959B2 (ja) * | 2017-12-08 | 2021-11-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7353934B2 (ja) * | 2019-11-19 | 2023-10-02 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7366795B2 (ja) * | 2020-02-14 | 2023-10-23 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2018
- 2018-04-16 JP JP2018078422A patent/JP7051546B2/ja active Active
- 2018-09-10 US US16/126,038 patent/US11003385B2/en active Active
- 2018-11-30 TW TW107143109A patent/TWI703494B/zh active
- 2018-12-14 CN CN202310413148.7A patent/CN116414314A/zh active Pending
- 2018-12-14 CN CN201811532009.1A patent/CN110389718B/zh active Active
-
2021
- 2021-04-06 US US17/223,094 patent/US11669269B2/en active Active
-
2023
- 2023-03-17 US US18/122,760 patent/US11868653B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5867429A (en) * | 1997-11-19 | 1999-02-02 | Sandisk Corporation | High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates |
US6522580B2 (en) * | 2001-06-27 | 2003-02-18 | Sandisk Corporation | Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states |
EP2132749B1 (en) * | 2007-03-07 | 2014-03-26 | SanDisk Technologies Inc. | Non-volatile memory and method for cache page copy |
US20120155166A1 (en) * | 2010-12-21 | 2012-06-21 | Yan Li | Alternate Page By Page Programming Scheme |
TW201621670A (zh) * | 2014-09-06 | 2016-06-16 | Neo半導體股份有限公司 | 非揮發性記憶體之多頁編程寫入方法與裝置 |
TW201735026A (zh) * | 2015-12-14 | 2017-10-01 | Toshiba Kk | 磁性記憶體 |
TW201741872A (zh) * | 2016-04-02 | 2017-12-01 | 英特爾股份有限公司 | 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統 |
Also Published As
Publication number | Publication date |
---|---|
CN116414314A (zh) | 2023-07-11 |
JP7051546B2 (ja) | 2022-04-11 |
TW201944229A (zh) | 2019-11-16 |
US20190317691A1 (en) | 2019-10-17 |
US11003385B2 (en) | 2021-05-11 |
US11868653B2 (en) | 2024-01-09 |
US20230221886A1 (en) | 2023-07-13 |
CN110389718B (zh) | 2023-04-11 |
US20210223986A1 (en) | 2021-07-22 |
US11669269B2 (en) | 2023-06-06 |
JP2019185596A (ja) | 2019-10-24 |
CN110389718A (zh) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI703494B (zh) | 記憶體系統及非揮發性記憶體之控制方法 | |
CN113138713B (zh) | 存储器系统 | |
US20230315342A1 (en) | Memory system and control method | |
US20230315294A1 (en) | Memory system and method for controlling nonvolatile memory | |
TWI674502B (zh) | 記憶體系統及控制方法 | |
US10545862B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11726707B2 (en) | System and method of writing to nonvolatile memory using write buffers | |
JP2019191909A (ja) | メモリシステムおよび制御方法 | |
US20240036769A1 (en) | Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region | |
US20230333980A1 (en) | Memory system and method of controlling nonvolatile memory | |
US11762591B2 (en) | Memory system and method of controlling nonvolatile memory by controlling the writing of data to and reading of data from a plurality of blocks in the nonvolatile memory | |
US20230297288A1 (en) | Memory system and method of controlling nonvolatile memory and for reducing a buffer size | |
JP7463598B2 (ja) | メモリシステム | |
JP7281585B2 (ja) | メモリシステム |