TWI661301B - 記憶體系統及控制非揮發性記憶體之控制方法 - Google Patents

記憶體系統及控制非揮發性記憶體之控制方法 Download PDF

Info

Publication number
TWI661301B
TWI661301B TW106146168A TW106146168A TWI661301B TW I661301 B TWI661301 B TW I661301B TW 106146168 A TW106146168 A TW 106146168A TW 106146168 A TW106146168 A TW 106146168A TW I661301 B TWI661301 B TW I661301B
Authority
TW
Taiwan
Prior art keywords
block
host
data
address
logical address
Prior art date
Application number
TW106146168A
Other languages
English (en)
Other versions
TW201915741A (zh
Inventor
吉田英樹
菅野伸一
Original Assignee
日商東芝記憶體股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日商東芝記憶體股份有限公司 filed Critical 日商東芝記憶體股份有限公司
Publication of TW201915741A publication Critical patent/TW201915741A/zh
Application granted granted Critical
Publication of TWI661301B publication Critical patent/TWI661301B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

本發明實現一種可謀求I/O性能改善之記憶體系統。 實施形態之記憶體系統係於自主機接收到指定第1區塊編號與第1邏輯位址之寫入請求之情形時,決定應寫入來自上述主機之資料之具有上述第1區塊編號之第1區塊內之第1位置,而將來自上述主機之資料寫入至上述第1區塊之上述第1位置。上述記憶體系統係更新管理邏輯位址各者與上述第1區塊之區塊內實體位址各者之間之映射之第1位址轉換表,而將表示上述第1位置之第1區塊內實體位址映射至上述第1邏輯位址。

Description

記憶體系統及控制非揮發性記憶體之控制方法
本發明之實施形態係關於一種記憶體系統及控制非揮發性記憶體之控制方法。
近年來,具備非揮發性記憶體之記憶體系統廣泛普及。
作為此種記憶體系統之一,已知有基於NAND(Not AND,反及)快閃技術之固態驅動器(SSD)。
於資料中心之伺服器中,亦使用SSD作為記憶體。對於在如伺服器般之主機計算機中利用之記憶體,要求高I/O(Input/Output,輸入/輸出)性能。因此,最近,開始提出主機與記憶體之間之新穎之介面。
然而,通常由於NAND型快閃記憶體之控制複雜,故而於實現用以改善I/O性能之新穎之介面時,必須考慮主機與記憶體(記憶體系統)之間適當之作用分擔。
本發明提供一種可改善I/O性能之記憶體系統及控制非揮發性記憶體之控制方法。
根據實施形態,可連接於主機之記憶體系統具備:非揮發性記憶體,其包含各自包含複數頁之複數個區塊;及控制器,其電性連接於上述非揮發性記憶體,並控制上述非揮發性記憶體。上述控制器於自上述主機接收到指定第1區塊編號與第1邏輯位址之寫入請求之情形時,執行如下動 作:決定應寫入來自上述主機之資料之具有上述第1區塊編號之第1區塊內之第1位置,將來自上述主機之資料寫入至上述第1區塊之上述第1位置,且更新管理邏輯位址各者與上述第1區塊之區塊內實體位址各者之間之映射之第1位址轉換表,而將表示上述第1位置之第1區塊內實體位址映射至上述第1邏輯位址。上述控制器於自上述主機接收到指定上述第1區塊編號與上述第1邏輯位址之讀取請求之情形時,執行如下動作:使用上述第1邏輯位址參照上述第1位址轉換表,獲取上述第1區塊內實體位址,基於上述第1區塊編號與上述獲取之第1區塊內實體位址,自上述第1區塊中讀取資料。
1‧‧‧開關
2‧‧‧主機
2A‧‧‧主機
2B‧‧‧管理器
3‧‧‧快閃存儲裝置
4‧‧‧控制器
5‧‧‧NAND型快閃記憶體
6‧‧‧DRAM
10‧‧‧匯流排
11‧‧‧主機I/F
12‧‧‧CPU
13‧‧‧NAND I/F
14‧‧‧DRAM I/F
21‧‧‧寫入動作控制部
22‧‧‧讀取動作控制部
23‧‧‧GC動作控制部
31‧‧‧寫入緩衝器(WB)
32‧‧‧區塊內LUT
33‧‧‧區塊管理表
50‧‧‧介面
51‧‧‧網路
61‧‧‧終端用戶終端
101‧‧‧虛擬機器服務
102‧‧‧用戶應用程式
103‧‧‧虛擬磁盤服務
104‧‧‧應用程序級GC
200‧‧‧I/O隊列
301‧‧‧寫入緩衝器(WB)
302‧‧‧查找表(LUT)
303‧‧‧垃圾回收
304‧‧‧NAND閃存陣列
401‧‧‧虛擬機器服務
402‧‧‧用戶應用程式
403‧‧‧區塊I/O(LBA)
500‧‧‧I/O隊列
601‧‧‧寫入緩衝器(WB)
602‧‧‧區塊內LUT
603‧‧‧GC執行
604‧‧‧NAND閃存陣列
圖1係表示主機與實施形態之記憶體系統(快閃存儲裝置)之關係之方塊圖。
圖2係用以說明先前型SSD與主機之間之作用分擔、本實施形態之快閃存儲裝置與主機之間之作用分擔之圖。
圖3係表示複數個主機與複數個快閃存儲裝置之間之資料傳輸經由網路機器執行之計算機系統之構成例之方塊圖。
圖4係表示本實施形態之記憶體系統之構成例之方塊圖。
圖5係表示設置於本實施形態之記憶體系統之NAND介面與複數個NAND型快閃記憶體晶片之關係之方塊圖。
圖6係表示由複數個區塊之集合構建之超級區塊之構成例之圖。
圖7係用以說明由主機管理之區塊級位址轉換表與由本實施形態之記憶體系統管理之區塊內位址轉換表之圖。
圖8係用以說明本實施形態之記憶體系統所應用之寫入指令之圖。
圖9係用以說明本實施形態之記憶體系統所應用之Trim(調整)指令之圖。
圖10係用以說明表示實體位址之區塊編號及偏移之圖。
圖11係用以說明根據寫入指令而執行之寫入動作之圖。
圖12係用以說明跳過不良頁之寫入動作之圖。
圖13係用以說明跳過不良頁之寫入動作之另一例之圖。
圖14係用以說明將邏輯位址與資料之配對寫入至區塊內之頁之動作之圖。
圖15係用以說明將資料寫入至區塊內之頁之用戶資料區域、將該資料之邏輯位址寫入至該頁之冗長區域之動作之圖。
圖16係用以說明使用超級區塊之情形時之區塊編號與偏移之關係之圖。
圖17係用以說明本實施形態之記憶體系統所應用之最大區塊編號獲取指令之圖。
圖18係用以說明對最大區塊編號獲取指令之響應之圖。
圖19係用以說明本實施形態之記憶體系統所應用之區塊尺寸獲取指令之圖。
圖20係用以說明對區塊尺寸獲取指令之響應之圖。
圖21係用以說明本實施形態之記憶體系統所應用之區塊分配指令之圖。
圖22係用以說明對區塊分配指令之響應之圖。
圖23係表示藉由主機與本實施形態之記憶體系統而執行之區塊資訊獲取處理之序列圖。
圖24係表示藉由主機與本實施形態之記憶體系統而執行之寫入處理之序列之序列圖。
圖25係表示寫入相對於已經寫入之資料之更新資料之資料更新動作之圖。
圖26係用以說明由本實施形態之記憶體系統管理之區塊編號BLK # 1用之區塊內LUT(Look-Up-Table,查找表)之圖。
圖27係用以說明更新由本實施形態之記憶體系統管理之區塊管理表之動作之圖。
圖28係用以說明更新由主機管理之區塊級LUT之動作之圖。
圖29係用以說明根據表示與應無效化之資料對應之區塊編號及實體位址之來自主機之通知更新區塊內LUT及區塊管理表之動作之圖。
圖30係用以說明本實施形態之記憶體系統所應用之讀取指令之圖。
圖31係用以說明由本實施形態之記憶體系統執行之讀取動作之序列圖。
圖32係用以說明本實施形態之記憶體系統所應用之垃圾回收(GC)控制指令之圖。
圖33係用以說明本實施形態之記憶體系統所應用之GC用回調指令之圖。
圖34係表示藉由主機與本實施形態之記憶體系統而執行之垃圾回收(GC)動作之順序之序列圖。
圖35係用以說明將複數個GC源區塊內之所有有效資料複製至複數個GC目的地區塊之動作之圖。
圖36係用以說明用於垃圾回收(GC)而執行之資料複製動作之例之 圖。
圖37係用以說明基於圖36之資料複製動作之結果而更新之GC目的地區塊之區塊內LUT之內容之圖。
圖38係用以說明基於圖36之資料複製動作之結果而更新之GC源區塊之區塊內LUT之內容之圖。
圖39係用以說明基於圖36之資料複製動作之結果而更新之主機之區塊級LUT之內容之圖。
以下,參照圖式對實施形態進行說明。
首先,參照圖1,對包含一實施形態之記憶體系統之計算機系統之構成進行說明。
該記憶體系統係以將資料寫入至非揮發性記憶體中並自非揮發性記憶體中讀出資料之方式構成之半導體存儲裝置。該記憶體系統係作為NAND閃存技術基礎之快閃存儲裝置3而實現。
該計算機系統可包含主機(主機裝置)2與複數個快閃存儲裝置3。主機2可為以將由複數個快閃存儲裝置3構成之閃存陣列用作記憶體之方式構成之伺服器。主機(伺服器)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提供包含記憶體存取之各種服務。
於先前型SSD中,NAND型快閃記憶體之區塊/頁之階層構造係藉由SSD內之閃存轉換層(FTL)而隱藏。即,先前型SSD之FTL具有如下等功能:(1)使用作為邏輯實體位址轉換表發揮功能之查找表,管理邏輯位址各者與NAND型快閃記憶體之實體位址各者之間之映射,(2)用以隱藏以頁為單位之讀取/寫入與以區塊為單位之刪除動作,(3)執行NAND型快閃記憶體之垃圾回收(GC)。邏輯位址各者與NAND型快閃記憶體之實體位址之間之映射無法自主機看到。NAND型快閃記憶體之區塊/頁構造亦無法自主機看到。
另一方面,有時於主機中亦執行一種位址轉換(應用程序級位址轉換)。該位址轉換係使用應用程序級位址轉換表而管理應用程序級之邏輯位址各者與用於SSD之邏輯位址各者之間之映射。又,為了消除SSD用邏 輯位址空間上產生之分片,於主機中亦執行變更該邏輯位址空間上之資料配置之一種GC(應用程序級GC)。
然而,於主機及SSD分別具有位址轉換表之冗長之構成(SSD具有作為邏輯實體位址轉換表發揮功能之查找表,主機具有應用程序級位址轉換表)中,為了保持該等位址轉換表而要消耗龐大之記憶體資源。進而,包含主機側之位址轉換與SSD側之位址轉換之雙重位址轉換亦成為使I/O性能降低之主要原因。
進而,主機側之應用程序級GC成為使向SSD之資料寫入量增加至實際之用戶資料量之數倍(例如2倍)程度之主要原因。此種資料寫入量之增加與SSD之寫入放大相互作用而導致系統整體之存儲性能降低,又,亦使SSD之壽命縮短。
為了消除此種問題點,亦考慮將先前型SSD之FTL之功能全部轉移到主機之對策。
然而,為了實行該對策,必須使主機直接處理NAND型快閃記憶體之區塊及頁。於NAND型快閃記憶體中,由於存在頁寫入順序限制,故而主機難以直接對頁進行處理。又,於NAND型快閃記憶體中,存在區塊包含不良頁(bad page)之情形。處理不良頁對主機而言更加困難。
因此,於本實施形態中,於主機2與快閃存儲裝置3之間分擔FTL之作用。概括而言,主機2執行用以分配區塊之區塊級FTL,快閃存儲裝置3執行用以分配區塊內之頁之區塊內FTL。
主機2管理用以管理邏輯位址各者與區塊編號各者之間之映射之區塊級位址轉換表即區塊級查找表(區塊級LUT),快閃存儲裝置3管理用以管理邏輯位址各者與各區塊之區塊內實體位址之間之映射之頁級位址轉換表 即區塊內查找表(區塊內LUT)。
於必須將資料寫入至快閃存儲裝置3時,主機2選擇區塊編號(或以於快閃存儲裝置3分配閒置區塊之方式請求),並將指定邏輯位址與經選擇之區塊之區塊編號(或由快閃存儲裝置3通知之經分配之區塊之區塊編號)之寫入請求(寫入指令)發送至快閃存儲裝置3。快閃存儲裝置3將來自主機2之資料寫入至與寫入請求(寫入指令)內之經指定之區塊編號對應之區塊。於此情形時,決定快閃存儲裝置3、該區塊內之寫入目的地位置,並將來自主機2之資料寫入至該寫入目的地位置。
主機2之區塊級FTL具有執行存儲服務之功能、損耗控制功能、用以實現高可用性之功能、防止具有相同內容之複數個重複資料部被存儲於記憶體之重複資料刪除(De-duplication)功能、垃圾回收(GC)區塊選擇功能、QoS控制功能等。QoS控制功能包含針對每個QoS域(或每個區塊)決定存取單位之功能。存取單位表示主機2可進行寫入/讀取之最小資料尺寸(Grain)。快閃存儲裝置3支持單一或者複數個存取單位(Grain),主機2於快閃存儲裝置3支持複數個存取單位之情形時,可針對每個QoS域(或每個區塊)將應使用之存取單位指示給快閃存儲裝置3。
又,QoS控制功能包含用以儘可能地防止QoS域間之性能干擾之功能。該功能基本上係用以保持穩定之時延之功能。
另一方面,快閃存儲裝置3之區塊內FTL除具有分配區塊內之頁之功能以外,亦具有GC執行功能。GC執行功能將藉由主機2而選擇之複製源區塊(GC源區塊)內之有效資料複製至藉由主機2而選擇之複製目標區塊(GC目的地區塊)。快閃存儲裝置3之區塊內FTL決定應寫入有效資料之GC目的地區塊內之位置(複製目標位置),並將GC源區塊內之有效資料複製 至GC目的地區塊內之複製目標位置。
圖2表示先前型SSD與主機之間之作用分擔及本實施形態之快閃存儲裝置3與主機2之間之作用分擔。
圖2之左部表示包含先前型SSD與執行虛擬磁盤服務之主機之計算機系統整體之階層構造。
於主機(伺服器)中,執行用以對複數個終端用戶提供複數個虛擬機器之虛擬機器服務101。於虛擬機器服務101上之各虛擬機器中,執行由對應之終端用戶使用之操作系統及用戶應用程式102。
又,於主機(伺服器)中,執行與複數個用戶應用程式102對應之複數個虛擬磁盤服務103。各虛擬磁盤服務103分配先前型SSD內之存儲資源之容量之一部分作為對應之用戶應用程式102用之存儲資源(虛擬磁盤)。於各虛擬磁盤服務103中,亦執行使用應用程序級位址轉換表,將應用程序級之邏輯位址轉換成SSD用之邏輯位址之應用程序級位址轉換。進而,於主機中,亦執行應用程序級GC104。
自主機(伺服器)向先前型SSD之指令之發送及自先前型SSD向主機(伺服器)之指令完成之響應之回傳係經由主機(伺服器)及先前型SSD之各者所存在之I/O隊列200而執行。
先前型SSD包含寫入緩衝器(WB)301、查找表(LUT)302、垃圾回收功能303、NAND型快閃記憶體(NAND閃存陣列)304。先前型SSD僅管理一個查找表(LUT)302,NAND型快閃記憶體(NAND閃存陣列)304之資源由複數個虛擬磁盤服務103共有。
於該構成中,藉由包含虛擬磁盤服務103下之應用程序級GC104與先前型SSD內之垃圾回收功能303(LUT級GC)之重複GC,而寫入放大增 大。又,於先前型SSD中,因來自某一終端用戶或某一虛擬磁盤服務103之資料寫入量之增加而GC之頻率增加,藉此產生對其他終端用戶或其他虛擬磁盤服務103之I/O性能變差之相鄰干擾(Nosiy neighbour)之問題。
又,因包含各虛擬磁盤服務內之應用程序級位址轉換表與先前型SSD內之LUT302之重複資源之存在而大部分記憶體資源被消耗。
圖2之右部表示包含本實施形態之快閃存儲裝置3與主機2之計算機系統整體之階層構造。
於主機(伺服器)2中,執行用以對複數個終端用戶提供複數個虛擬機器之虛擬機器服務401。於虛擬機器服務401上之各虛擬機器中,執行由對應之終端用戶使用之操作系統及用戶應用程式402。
又,於主機(伺服器)2中,執行與複數個用戶應用程式402對應之複數個I/O服務403。上述I/O服務403可包含LBA基礎之區塊I/O服務、鍵值存儲(Kye-Value Store)服務等。各I/O服務403包含管理邏輯位址各者與快閃存儲裝置3之區塊編號各者之間之映射之區塊級LUT。此處,所謂邏輯位址,意指可識別存取對象之資料之識別碼。該邏輯位址可為指定邏輯位址空間上之位置之邏輯區塊位址(LBA),或者亦可為鍵值存儲之鍵(標籤),亦可為鍵之雜湊值。
於LBA基礎之區塊I/O服務中,可使用管理邏輯位址(LBA)各者與快閃存儲裝置3之區塊編號各者之間之映射之區塊級LUT。
於鍵值存儲服務中,可使用管理邏輯位址(即鍵般之標籤)各者與存儲有與上述邏輯位址(即鍵般之標籤)對應之資料之快閃存儲裝置3之區塊編號各者之間之映射之區塊級LUT。於該區塊級LUT中,可管理標籤、存儲有藉由該標籤而識別之資料之區塊編號與該資料之資料長之對應關係。
各終端用戶可選擇應使用之定址方法(LBA、鍵值存儲之鍵等)。
該等各區塊級LUT並非將來自用戶應用程式402之邏輯位址各者轉換成快閃存儲裝置3用之邏輯位址各者,而是將來自用戶應用程式402之邏輯位址各者轉換成快閃存儲裝置3之區塊編號各者。即,該等各區塊級LUT係將快閃存儲裝置3用之邏輯位址轉換成區塊編號之表與應用程序級位址轉換表經統合(合併)而成之表。
又,各I/O服務403包含GC區塊選擇功能。GC區塊選擇功能可使用對應之區塊級LUT管理各區塊之有效資料量,藉此可選擇GC源區塊。
於主機(伺服器)2中,可於上述每個QoS域存在I/O服務403。屬於某一QoS域之I/O服務403管理由對應之QoS域內之用戶應用程式402使用之邏輯位址各者與屬於分配於對應之QoS域之資源組之區塊群之區塊編號各者之間之映射。
自主機(伺服器)2向快閃存儲裝置3之指令之發送及自快閃存儲裝置3向主機(伺服器)2之指令完成之響應等之回傳係經由主機(伺服器)2及快閃存儲裝置3之各者所存在之I/O隊列500而執行。上述I/O隊列500亦可被分類成與複數個QoS域對應之複數個隊列組。
快閃存儲裝置3包含與複數個QoS域對應之複數個寫入緩衝器(WB)601、與複數個QoS域對應之複數個區塊內LUT602、與複數個QoS域對應之複數個垃圾回收(GC)功能603、NAND型快閃記憶體(NAND閃存陣列)604。
於該圖2之右部所示之構成中,上位階層(主機2)可識別區塊交界,因此可考慮到區塊交界/區塊尺寸而將用戶資料寫入至各區塊。即,主機2可識別NAND型快閃記憶體(NAND閃存陣列)604之各個區塊,藉此,例如 可進行將資料一起寫入至一個區塊整體、藉由刪除或更新而使一個區塊內之資料整體無效化等控制。結果可使一個區塊中混合存在有效資料與無效資料之狀況不易產生。因此,可降低必須執行GC之頻率。藉由降低GC之頻率,可降低寫入放大,從而實現快閃存儲裝置3之性能之提高、快閃存儲裝置3之壽命之最大化。如此,上位階層(主機2)可識別區塊編號之構成有用。
另一方面,因頁寫入順序限制而當前可寫入之頁為每一個區塊僅1頁。因此,將頁編號呈現給上位階層與將區塊編號呈現給上位階層相比並不有用。
圖3表示圖1之系統構成之變化例。
於圖3中,複數個主機2A與複數個快閃存儲裝置3之間之資料傳輸係經由網路機器(此處為網路開關1)而執行。
即,於圖3之計算機系統中,圖1之伺服器2之存儲管理功能移至管理器2B,且伺服器2之前端功能移至複數個主機(終端用戶服務用主機)2A。
管理器2B管理複數個快閃存儲裝置3,且對應於來自各主機(終端用戶服務用主機)2A之請求,將該等快閃存儲裝置3之存儲資源分配至各主機(終端用戶服務用主機)2A。
各主機(終端用戶服務用主機)2A經由網路連接於一個以上之終端用戶終端61。各主機(終端用戶服務用主機)2A管理上述區塊級LUT。各主機(終端用戶服務用主機)2A使用自身之區塊級LUT,僅管理由對應之終端用戶使用之邏輯位址各者與自身分配到之資源之區塊編號各者之間之映射。因此,該構成可容易地使系統橫向擴展。
各主機2A之區塊級FTL具有管理區塊級LUT之功能、用以實現高可 用性之功能、QoS控制功能、GC區塊選擇功能等。
管理器2B係用以管理複數個快閃存儲裝置3之專用裝置(計算機)。管理器2B具有預約自各主機2A所請求之容量之存儲資源之全域資源預約功能。進而,管理器2B具有用以監視各快閃存儲裝置3之消耗率之損耗監視功能、將所預約之存儲資源(NAND資源)分配至各主機2A之NAND資源分配功能、QoS控制功能、全域時鐘管理功能等。
各快閃存儲裝置3之區塊內FTL具有管理寫入緩衝器之功能、GC執行功能等。
根據圖3之系統構成,由於各快閃存儲裝置3之管理係由管理器2B執行,故而各主機2A只要僅執行對自身分配到之一個以上之快閃存儲裝置3發送I/O請求之動作、及接收來自快閃存儲裝置3之響應之動作即可。即,複數個主機2A與複數個快閃存儲裝置3之間之資料傳輸僅經由開關1而執行,管理器2B與該資料傳輸無關。又,如上所述,由主機2A各者管理之區塊級LUT之內容相互獨立。因此,可容易地增加主機2A之數量,故而可實現橫向擴展型之系統構成。
圖4表示快閃存儲裝置3之構成例。
快閃存儲裝置3具備控制器4及非揮發性記憶體(NAND型快閃記憶體)5。快閃存儲裝置3亦可具備隨機存取記憶體,例如DRAM(Dynamic Random Access Memory,動態隨機存取記憶體)6。
NAND型快閃記憶體5包含包括以矩陣狀配置之複數個存儲單元之存儲單元陣列。NAND型快閃記憶體5可為二維構造之NAND型快閃記憶體,亦可為三維構造之NAND型快閃記憶體。
NAND型快閃記憶體5之存儲單元陣列包含複數個區塊BLK0~ BLKm-1。區塊BLK0~BLKm-1各自係由大量頁(此處為頁P0~Pn-1)組成。區塊BLK0~BLKm-1作為刪除單位發揮功能。區塊有時亦被稱為「刪除區塊」、「實體區塊」、或「實體刪除區塊」。頁P0~Pn-1之各者包含連接於同一字元線之複數個存儲單元。頁P0~Pn-1係資料寫入動作及資料讀入動作之單位。
控制器4經由Toggle、開放式NAND閃存介面(ONFI)般之NAND介面13電性連接於作為非揮發性記憶體之NAND型快閃記憶體5。控制器4係以控制NAND型快閃記憶體5之方式構成之記憶體控制器(控制電路)。
NAND型快閃記憶體5如圖5所示般包含複數個NAND型快閃記憶體晶片。各NAND型快閃記憶體晶片係包含包括複數個區塊BLK之存儲單元陣列與控制該存儲單元陣列之周邊電路之非揮發性記憶體晶片。各個NAND型快閃記憶體晶片可獨立地動作。因此,NAND型快閃記憶體晶片可作為並列動作單位發揮功能。NAND型快閃記憶體晶片(die)亦被稱為“NAND型快閃記憶體晶片(chip)”或“非揮發性記憶體晶片”。於圖5中,例示於NAND介面13連接有16個通道Ch1、Ch2、…Ch16,並於該等通道Ch1、Ch2、…Ch16分別連接有相同數量(例如每個通道為2個晶片)之NAND型快閃記憶體晶片之情形。各通道包含用以與對應之NAND型快閃記憶體晶片通信之通信線(記憶體匯流排)。
控制器4經由通道Ch1、Ch2、…Ch16控制NAND型快閃記憶體晶片# 1~# 32。控制器4可同時驅動通道Ch1、Ch2、…Ch16。
連接於通道Ch1~Ch16之16個NAND型快閃記憶體晶片# 1~# 16可作為第1存儲體而組成,又,連接於通道Ch1~Ch16之剩下之16個NAND型快閃記憶體晶片# 17~# 32可作為第2存儲體而組成。存儲體係作為用 以藉由存儲體交錯使複數個記憶體模組並列動作之單位發揮功能。於圖5之構成例中,可藉由16個通道與使用了2個存儲體之存儲體交錯使最大32個NAND型快閃記憶體晶片並列動作。
於本實施形態中,控制器4可管理分別由複數個區塊BLK構成之複數個區塊(以下稱為超級區塊),亦可以超級區塊之單位執行刪除動作。
超級區塊並不限定於此,亦可包含自NAND型快閃記憶體晶片# 1~# 32中各選擇1個、共計32個區塊BLK。再者,NAND型快閃記憶體晶片# 1~# 32可分別具有多平面構成。例如,於NAND型快閃記憶體晶片# 1~# 32分別具有包含2個平面之多平面構成之情形時,一個超級區塊亦可包含自與NAND型快閃記憶體晶片# 1~# 32對應之64個平面中各選擇1個、共計64個區塊BLK。於圖6中例示一個超級區塊SB由自NAND型快閃記憶體晶片# 1~# 32中各選擇1個、共計32個區塊BLK(於圖5中係由粗框包圍之區塊BLK)構成之情形。
如圖4所示,控制器4包含主機介面11、CPU12、NAND介面13、及DRAM介面14等。該等CPU12、NAND介面13、DRAM介面14係經由匯流排10而相互連接。
該主機介面11係以執行與主機2之通信之方式構成之主機介面電路。該主機介面11例如可為PCIe控制器(NVMe控制器)。主機介面11自主機2接收各種請求(指令)。該等請求(指令)包含寫入請求(寫入指令)、讀取請求(讀取指令)、其他各種請求(指令)。
CPU12係以控制主機介面11、NAND介面13、DRAM介面14之方式構成之處理器。CPU12響應快閃存儲裝置3之電源接通而自NAND型快閃記憶體5或未圖示之ROM(Read Only Memory,唯讀記憶體)將控制程式 (韌體)載入DRAM6,接下來執行該韌體,藉此進行各種處理。再者,韌體亦可被載入控制器4內之未圖示之SRAM(Static Random Access Memory,靜態隨機存取記憶體)上。該CPU12可執行用以處理來自主機2之各種指令之指令處理等。CPU12之動作係藉由CPU12所執行之上述韌體而控制。再者,指令處理之一部分或全部亦可藉由控制器4內之專用硬件執行。
CPU12可作為寫入動作控制部21、讀取動作控制部22、及GC動作控制部23發揮功能。於該等寫入動作控制部21、讀取動作控制部22、及GC動作控制部23中安裝有用以實現圖2之右部所示之系統構成之應用程序編程介面(API)。
寫入動作控制部21自主機2接收指定區塊編號與邏輯位址之寫入請求(寫入指令)。邏輯位址係可識別應寫入之資料(用戶資料)之識別碼,例如可為LBA,或者亦可為鍵值存儲之鍵般之標籤,亦可為鍵之雜湊值。區塊編號係指定應寫入該資料之區塊之識別碼。作為區塊編號,可使用可唯一識別複數個區塊內之任意一個之各種值。藉由區塊編號而指定之區塊可為實體區塊,亦可為上述超級區塊。於接收到寫入指令之情形時,寫入動作控制部21首先決定應寫入來自主機2之資料並具有該經指定之區塊編號之區塊(寫入目標區塊)內之位置(寫入目的地位置)。接下來,寫入動作控制部21將來自主機2之資料(寫入資料)寫入至該寫入目標區塊之寫入目的地位置。於此情形時,寫入動作控制部21不僅可將來自主機2之資料寫入至寫入目標區塊,亦可將該資料與該資料之邏輯位址兩者寫入至寫入目標區塊。
接下來,寫入動作控制部21更新管理邏輯位址各者與該區塊之區塊 內實體位址各者之間之映射之區塊內LUT32,並將表示該寫入目標區塊之上述寫入目的地位置之區塊內實體位址映射至寫入資料之邏輯位址。
於此情形時,該區塊內實體位址係由表示該寫入目標區塊內之寫入目的地位置之區塊內偏移表示。
於此情形時,該區塊內偏移表示寫入目標區塊之開頭至寫入目的地位置之偏移、即寫入目的地位置相對於寫入目標區塊之開頭之偏移。寫入目標區塊之開頭至寫入目的地位置之偏移之尺寸係以具有與頁尺寸不同尺寸之粒度(Grain)之倍數表示。粒度(Grain)係上述存取單位。粒度(Grain)之尺寸之最大值被限制為區塊尺寸。換言之,區塊內偏移係以具有與頁尺寸不同尺寸之粒度之倍數表示寫入目標區塊之開頭至寫入目的地位置之偏移。
粒度(Grain)可具有小於頁尺寸之尺寸。例如,於頁尺寸為16K位元組之情形時,粒度(Grain)之尺寸可為4K位元組。於此情形時,於某一個區塊中,規定尺寸分別為4K位元組之複數個偏移位置。與區塊內之最初之偏移位置對應之區塊內偏移例如為0,與區塊內之下一個偏移位置對應之區塊內偏移例如為1,與區塊內之第三個偏移位置對應之區塊內偏移例如為2。
或者粒度(Grain)亦可具有大於頁尺寸之尺寸。例如,粒度(Grain)可為頁尺寸之數倍之尺寸。於頁尺寸為16K位元組之情形時,粒度可為32K位元組之尺寸。
如上所述,寫入動作控制部21本身決定具有來自主機2之區塊編號之區塊內之寫入目的地位置,接下來,將來自主機2之寫入資料寫入至該區塊內之該寫入目的地位置。接下來,寫入動作控制部21更新與該區塊對應 之區塊內LUT32,並將表示寫入目的地位置之區塊內實體位址(區塊內偏移)映射至寫入資料之邏輯位址。藉此,快閃存儲裝置3可一面使主機2處理區塊編號,一面隱藏頁寫入順序限制、不良頁、頁尺寸等。
結果,主機2可於可識別區塊交界,但並未意識到頁寫入順序限制、不良頁、頁尺寸之情況下管理哪個用戶資料存在於哪個區塊編號。
讀取動作控制部22於自主機2接收到指定邏輯位址與區塊編號之讀取請求(讀取指令)之情形時,使用該邏輯位址,並參照與具有藉由該讀取請求而指定之區塊編號之區塊對應之區塊內LUT32。藉此,讀取動作控制部22可獲取存儲有與該邏輯位址對應之資料之該區塊之區塊內實體位址(區塊內偏移)。接下來,讀取動作控制部22基於藉由讀取請求而指定之區塊編號與所獲取之區塊內實體位址,自NAND型快閃記憶體5中讀取與該邏輯位址對應之資料。
於此情形時,讀取對象之區塊係藉由區塊編號而特定。該區塊內之讀取對象之實體存儲位置係藉由區塊內偏移而特定。為了獲得讀取對象之實體存儲位置,讀取動作控制部22首先可將該區塊內偏移除以表示頁尺寸之粒度之數(此處為4),並且分別決定藉由該除算而獲得之商及餘數作為讀取對象之頁編號及讀取對象之頁內偏移。
GC動作控制部23於自主機2接收到指定用於NAND型快閃記憶體5之垃圾回收之複製源區塊編號(GC源區塊編號)及複製目標區塊編號(GC目的地區塊編號)之GC控制指令之情形時,自NAND型快閃記憶體5之複數個區塊中選擇具有所指定之複製源區塊編號之區塊與具有所指定之複製目標區塊編號之區塊作為複製源區塊(GC源區塊)及複製目標區塊編號(GC目的地區塊)。GC動作控制部23決定應寫入存儲於所選擇之GC源區塊之有效 資料之GC目的地區塊內之複製目標位置,並將有效資料複製至GC目的地區塊內之複製目標位置。
接下來,GC動作控制部23以映射至有效資料之邏輯位址之區塊內實體位址(區塊內偏移)由表示存儲有該有效資料之GC源區塊內之複製源位置之區塊內實體位址變更成表示GC目的地區塊內之複製目標位置之區塊內實體位址之方式,更新與GC源區塊對應之區塊內LUT及與GC目的地區塊對應之區塊內LUT。
有效資料/無效資料之管理可使用區塊管理表33來執行。該區塊管理表33例如可存在於每個區塊。於與某一區塊對應之區塊管理表33中,存儲有表示該區塊內之各資料之有效/無效之點陣圖旗標。此處,所謂有效資料,意指作為最新資料與邏輯位址建立關聯且之後可自主機2讀取之資料。所謂無效資料,意指已無法自主機2讀取之資料。例如,與某一邏輯位址建立關聯之資料為有效資料,與任一邏輯位址均未建立關聯之資料為無效資料。
如上所述,GC動作控制部23決定應寫入存儲於複製源區塊(GC源區塊)內之有效資料之複製目標區塊(GC目的地區塊)內之位置(複製目標位置),並將有效資料複製至複製目標區塊(GC目的地區塊)之該經決定之位置(複製目標位置)。於此情形時,GC動作控制部23亦可將有效資料與該有效資料之邏輯位址兩者複製至複製目標區塊(GC目的地區塊)。
於本實施形態中,如上所述,寫入動作控制部21可將來自主機2之資料(寫入資料)與來自主機2之邏輯位址兩者寫入至寫入目標區塊。因此,GC動作控制部23可自該複製源區塊(GC源區塊)中容易地獲取複製源區塊(GC源區塊)內之各資料之邏輯位址,故而可容易地更新與複製源區塊對 應之區塊內LUT及與複製目標區塊對應之區塊內LUT。
NAND介面13係以於CPU12之控制下控制NAND型快閃記憶體5之方式構成之記憶體控制電路。DRAM介面14係以於CPU12之控制下控制DRAM6之方式構成之DRAM控制電路。DRAM6之記憶區域之一部分用於寫入緩衝器(WB)31之存儲。又,DRAM6之記憶區域之其他一部分用於區塊內LUT32、區塊管理表32之存儲。再者,上述寫入緩衝器(WB)31、區塊內LUT32、及區塊管理表32可存儲於控制器4內之未圖示之SRAM。
圖7表示由主機2管理之區塊級LUT(區塊級位址轉換表)與由快閃存儲裝置3管理之區塊內LUT(區塊內位址轉換表)。
區塊級LUT管理邏輯位址各者和與快閃存儲裝置3之複數個區塊各自對應之區塊編號各者之間之映射。該區塊級LUT係將某一邏輯位址轉換成某一區塊編號BLK #之表。
於快閃存儲裝置3中,管理與複數個區塊各自對應之複數個區塊內LUT。各區塊內LUT管理邏輯位址各者與對應之區塊內之區塊內實體位址(區塊內偏移)各者之間之映射。各區塊內LUT係將某一邏輯位址轉換成某一區塊內實體位址(區塊內PBA)之表。區塊內實體位址(區塊內PBA)如上所述般係由區塊內偏移表示。
位址轉換以如下方式執行。
例如,於讀取動作中,主機2使用某一邏輯位址(例如,某一LBA)並參照區塊級LUT,將該邏輯位址(LBA)轉換成區塊編號BLK #。該邏輯位址及區塊編號BLK #自主機2被發送至快閃存儲裝置3。於本實施形態中,為了並非將特定之邏輯位址範圍分配至各區塊,而是可將與任意之邏輯位址對應之資料均存儲於任何區塊,該邏輯位址本身與區塊編號BLK # 一起自主機2被發送至快閃存儲裝置3。
於快閃存儲裝置3中,控制器4選擇與區塊編號BLK #對應之區塊內LUT。例如,若來自主機2之區塊編號BLK #顯示區塊編號BLK # 0,則選擇與區塊編號BLK # 0對應之區塊內LUT,若來自主機2之區塊編號BLK #顯示區塊編號BLK # 1,則選擇與區塊編號BLK # 1對應之區塊內LUT,若來自主機2之區塊編號BLK #顯示區塊編號BLK # 2,則選擇與區塊編號BLK # 2對應之區塊內LUT。
所選擇之區塊內LUT係藉由來自主機2之邏輯位址而被參照。接下來,自與該邏輯位址對應之區塊內PBA中獲取所選擇之區塊內LUT。
圖8表示快閃存儲裝置3所應用之寫入指令。
寫入指令係請求快閃存儲裝置3寫入資料之指令。該寫入指令可包含指令ID、區塊編號BLK #、邏輯位址、長度等。
指令ID係表示該指令為寫入指令之ID(指令代碼),寫入指令中包含寫入指令用之指令ID。
區塊編號BLK #係可唯一識別應寫入資料之區塊之識別碼(區塊位址)。
邏輯位址係用以識別應寫入之寫入資料之識別碼。如上所述,該邏輯位址可為LBA,亦可為鍵值存儲之鍵,亦可為鍵之雜湊值。於邏輯位址為LBA之情形時,該寫入指令中所包含之邏輯位址(起始LBA)表示應寫入寫入資料之邏輯位置(最初之邏輯位置)。
長度表示應寫入之寫入資料之長度。該長度(資料長)可藉由粒度(Grain)數指定,亦可藉由LBA數指定,或者其尺寸亦可藉由位元組指定。
於自主機2接收到寫入指令之情形時,控制器4決定具有藉由寫入指令而指定之區塊編號之區塊內之寫入目的地位置。該寫入目的地位置係考慮到頁寫順序之限制及不良頁等而決定。接下來,控制器4將來自主機2之資料寫入至具有藉由寫入指令而指定之區塊編號之該區塊內之該寫入目的地位置。
圖8表示快閃存儲裝置3所應用之Trim指令。
該Trim指令係包含存儲有應設為無效之資料之區塊之區塊編號及該資料之邏輯位址之指令。該Trim指令包含指令ID、區塊編號BLK #、邏輯位址、長度。
指令ID係表示該指令為Trim指令之ID(指令代碼),Trim指令中包含Trim指令用之指令ID。
區塊編號表示存儲有應無效化之資料之區塊。
邏輯位址表示應無效化之資料之最初之邏輯位置。
長度表示應無效化之資料之長度。該長度(資料長)可藉由邏輯位址數指定,亦可藉由粒度(Grain)數指定,亦可藉由位元組指定。
控制器4使用區塊管理表33管理表示複數個區塊各自包含之各資料之有效/無效之旗標(點陣圖旗標)。於自主機2接收到包含表示存儲有應設為無效之資料之區塊之區塊編號及邏輯位址之Trim指令之情形時,控制器4更新區塊管理表33,並將與藉由Trim指令中所包含之區塊編號及邏輯位址而特定之區塊內實體位址對應之旗標(點陣圖旗標)變更為表示無效之值。
圖10表示規定區塊內實體位址之區塊內偏移。
區塊編號指定某一個區塊BLK。如圖10所示,各區塊BLK包含複數 頁(此處為頁0~頁n)。
於頁尺寸(各頁之用戶資料存儲區域)為16K位元組且粒度(Grain)為4KB之尺寸之案例中,該區塊BLK被邏輯地分割成4×(n+1)個區域。
偏移+0表示頁0之最初之4KB區域,偏移+1表示頁0之第二個4KB區域,偏移+2表示頁0之第三個4KB區域,偏移+3表示頁0之第4個4KB區域。
偏移+4表示頁1之最初之4KB區域,偏移+5表示頁1之第二個4KB區域,偏移+6表示頁1之第三個4KB區域,偏移+7表示頁1之第4個4KB區域。
圖11表示根據寫入指令而執行之寫入動作。
現在假定區塊BLK # 1作為寫入目標區塊而被分配之情形。控制器4按照頁0、頁1、頁2、…頁n之順序將資料以頁單位寫入至區塊BLK # 1。
於圖11中,假定於已經將16K位元組量之資料寫入至區塊BLK # 1之頁0之狀態下,自主機2接收到指定區塊編號(=BLK # 1)、邏輯位址(LBAx)及長度(=4)之寫入指令之情形。控制器4決定區塊BLK # 1之頁1作為寫入目的地位置,並將自主機2接收到之16K位元組量之寫入資料寫入至區塊BLK # 1之頁1。接下來,控制器4更新與區塊BLK # 1對應之區塊內LUT32,並將偏移+5、偏移+6、偏移+7、偏移+8分別映射至LBAx、LBAx+1、LBAx+2、LBAx+3。
圖12表示跳過不良頁(bad page)之寫入動作。
於圖12中,假定於已經將資料寫入至區塊BLK # 1之頁0、頁1之狀態下,自主機2接收到指定區塊編號(=BLK # 1)、邏輯位址(LBAx+1)及長度(=4)之寫入指令之情形。假如區塊BLK # 1之頁2為不良頁,則控制器4 決定區塊BLK # 1之頁3作為寫入目的地位置,並將自主機2接收到之16K位元組量之寫入資料寫入至區塊BLK # 1之頁3。接下來,控制器4更新與區塊BLK # 1對應之區塊內LUT32,並將偏移+12、偏移+13、偏移+14、偏移+15分別映射至LBAx+1、LBAx+2、LBAx+3、LBAx+4。
圖13表示跳過不良頁之寫入動作之另一例。
於圖13中,假定橫跨隔著不良頁之2頁而寫入資料之情形。現在假定已經將資料寫入至區塊BLK # 2之頁0、頁1且寫入緩衝器31中剩下未寫入之8K位元組量之寫入資料之情形。若於該狀態下接收到指定區塊編號(=BLK # 2)、邏輯位址(LBAy)及長度(=6)之寫入指令,則控制器4使用未寫入之8K位元組寫入資料與自主機2新接收到之24K位元組寫入資料內之最初之8K位元組寫入資料,準備與頁尺寸對應之16K位元組寫入資料。接下來,控制器4將該所準備之16K位元組寫入資料寫入至區塊BLK # 2之頁2。
假如區塊BLK # 2之下一頁3為不良頁,則控制器4決定區塊BLK # 2之頁4作為下一個寫入目的地位置,並將自主機2接收到之24K位元組寫入資料內之剩下之16K位元組寫入資料寫入至區塊BLK # 2之頁4。
接下來,控制器4更新與區塊BLK # 2對應之區塊內LUT32,分別將偏移+10、偏移+11映射至LBAy、LBAy+1,且將偏移+16、偏移+17、偏移+18、偏移+19映射至LBAy+2、LBAy+3、LBAy+4、LBAy+5。
圖14、圖15表示將邏輯位址與資料之配對寫入至區塊內之頁之動作。
於各區塊中,各頁可包含用以存儲用戶資料之用戶資料區域與用以 存儲管理資料之冗長區域。頁尺寸為16KB+α。
控制器4將4KB用戶資料及與該4KB用戶資料對應之邏輯位址(例如LBA)兩者寫入至寫入目標區塊BLK。於此情形時,如圖14所示,分別包含LBA與4KB用戶資料之4個資料集可被寫入至相同頁。區塊內偏移可表示資料集交界。
或者亦可如圖15所示,將4個4KB用戶資料寫入至頁內之用戶資料區域,並將與該等4個4KB用戶資料對應之4個LBA寫入至該頁內之冗長區域。
圖16表示使用超級區塊之案例中之區塊編號與偏移(區塊內偏移)之關係。以下,區塊內偏移亦僅作為偏移而參照。
此處,為了使圖示簡單化,假定某一個超級區塊SB # 1係由4個區塊BLK # 11、BLK # 21、BLK # 31、BLK # 41構成之情形。控制器4按照區塊BLK # 11之頁0、區塊BLK # 21之頁0、區塊BLK # 31之頁0、區塊BLK # 41之頁0、區塊BLK # 11之頁1、區塊BLK # 21之頁1、區塊BLK # 31之頁1、區塊BLK # 41之頁1、…之順序寫入資料。
偏移+0表示區塊BLK # 11之頁0之最初之4KB區域,偏移+1表示區塊BLK # 11之頁0之第二個4KB區域,偏移+2表示區塊BLK # 11之頁0之第三個4KB區域,偏移+3表示區塊BLK # 11之頁0之第4個4KB區域。
偏移+4表示區塊BLK # 21之頁0之最初之4KB區域,偏移+5表示區塊BLK # 21之頁0之第二個4KB區域,偏移+6表示區塊BLK # 21之頁0之第三個4KB區域,偏移+7表示區塊BLK # 21之頁0之第4個4KB區域。
同樣地,偏移+12表示區塊BLK # 41之頁0之最初之4KB區域,偏移+13表示區塊BLK # 41之頁0之第二個4KB區域,偏移+14表示區塊BLK # 41之頁0之第三個4KB區域,偏移+15表示區塊BLK # 41之頁0之第4個4KB區域。
偏移+16表示區塊BLK # 11之頁1之最初之4KB區域,偏移+17表示區塊BLK # 11之頁1之第二個4KB區域,偏移+18表示區塊BLK # 11之頁1之第三個4KB區域,偏移+19表示區塊BLK # 11之頁1之第4個4KB區域。
偏移+20表示區塊BLK # 21之頁1之最初之4KB區域,偏移+21表示區塊BLK # 21之頁1之第二個4KB區域,偏移+22表示區塊BLK # 21之頁1之第三個4KB區域,偏移+23表示區塊BLK # 21之頁1之第4個4KB區域。
同樣地,偏移+28表示區塊BLK # 41之頁1之最初之4KB區域,偏移+29表示區塊BLK # 41之頁1之第二個4KB區域,偏移+30表示區塊BLK # 41之頁1之第三個4KB區域,偏移+31表示區塊BLK # 41之頁1之第4個4KB區域。
圖17表示快閃存儲裝置3所應用之最大區塊編號獲取指令。
最大區塊編號獲取指令係用以自快閃存儲裝置3獲取最大區塊編號之指令。主機2向快閃存儲裝置3發送最大區塊編號獲取指令,藉此可識別表示快閃存儲裝置3中所包含之區塊數量之最大區塊編號。最大區塊編號獲取指令包含最大區塊編號獲取指令用之指令ID,而不包含參數。
圖18表示對最大區塊編號獲取指令之響應。
當自主機2接收到最大區塊編號獲取指令時,快閃存儲裝置3將圖18 所示之響應回傳至主機2。該響應包含表示最大區塊編號(即快閃存儲裝置3中所包含之可利用之區塊之總數)之參數。
圖19表示快閃存儲裝置3所應用之區塊尺寸獲取指令。
區塊尺寸獲取指令係用以自快閃存儲裝置3獲取區塊尺寸之指令。主機2向快閃存儲裝置3發送區塊尺寸獲取指令,藉此可識別快閃存儲裝置3中所包含之NAND型快閃記憶體5之區塊尺寸。
再者,於另一實施形態中,區塊尺寸獲取指令亦可包含指定區塊編號之參數。於自主機2接收到指定某區塊編號之區塊尺寸獲取指令之情形時,快閃存儲裝置3將具有該區塊編號之區塊之區塊尺寸回傳至主機2。藉此,即便於假設NAND型快閃記憶體5中所包含之各個區塊之區塊尺寸不一之情形時,主機2亦可識別各個區塊各自之區塊尺寸。
圖20表示對區塊尺寸獲取指令之響應。
當自主機2接收到區塊尺寸獲取指令時,快閃存儲裝置3將區塊尺寸(NAND型快閃記憶體5中所包含之各個區塊之共用之區塊尺寸)回傳至主機2。於此情形時,假設區塊編號係藉由區塊尺寸獲取指令而指定,則快閃存儲裝置3如上所述般將具有該區塊編號之區塊之區塊尺寸回傳至主機2。
圖21表示應用於快閃存儲裝置3之區塊分配指令。
區塊分配指令係請求快閃存儲裝置3進行區塊(閒置區塊)之分配之指令。主機2藉由將區塊分配指令發送至快閃存儲裝置3,請求快閃存儲裝置3分配閒置區塊,藉此可獲取區塊編號(經分配之閒置區塊之區塊編號)。
於快閃存儲裝置3藉由閒置區塊列表管理閒置區塊群而主機2不管理閒置區塊群之案例中,主機2請求快閃存儲裝置3分配閒置區塊,藉此獲取 區塊編號。另一方面,於主機2管理閒置區塊群之案例中,主機2自身可選擇閒置區塊群之一個,因此無需將區塊分配指令發送至快閃存儲裝置3。
圖22表示對區塊分配指令之響應。
當自主機2接收到區塊分配指令時,快閃存儲裝置3根據閒置區塊列表選擇應分配給主機2之閒置區塊,且將包含所選擇之閒置區塊之區塊編號之響應回傳至主機2。
圖23表示由主機2與快閃存儲裝置3執行之區塊資訊獲取處理。
於主機2開始使用快閃存儲裝置3時,主機2首先將最大區塊編號獲取指令發送至快閃存儲裝置3。快閃存儲裝置3之控制器將最大區塊編號回傳至主機2。最大區塊編號表示可使用之區塊之總數。再者,於使用上述超級區塊之案例中,最大區塊編號亦可表示可使用之超級區塊之總數。
繼而,主機2將區塊尺寸獲取指令發送至快閃存儲裝置3而獲取區塊尺寸。於此情形時,主機2亦可將指定區塊編號1之區塊尺寸獲取指令、指定區塊編號2之區塊尺寸獲取指令、指定區塊編號3之區塊尺寸獲取指令、…分別發送至快閃存儲裝置3,而個別地獲取所有區塊各自之區塊尺寸。
藉由該區塊資訊獲取處理,主機2可識別可利用之區塊數、各個區塊之區塊尺寸。
圖24表示由主機2與快閃存儲裝置3執行之寫入處理之序列。
主機2首先自己選擇應該用於寫入之區塊(閒置區塊)或藉由將區塊分配指令發送至快閃存儲裝置3而請求快閃存儲裝置3分配閒置區塊。接下來,主機2將包含自己選擇之區塊之區塊編號BLK #(或藉由快閃存儲裝置3而分配之閒置區塊之區塊編號BLK #)、邏輯位址(LBA)及長度之寫入指 令發送至快閃存儲裝置3(步驟S20)。
當快閃存儲裝置3之控制器4接收到該寫入指令時,控制器4決定應寫入來自主機2之寫入資料並具有該區塊編號BLK #之區塊(寫入目標區塊BLK #)內之寫入目的地位置,並將寫入資料寫入至該寫入目標區塊BLK #之寫入目的地位置(步驟S11)。於步驟S11中,控制器4亦可將邏輯位址(此處為LBA)與寫入資料兩者寫入至寫入目標區塊。
控制器4更新與寫入目標區塊BLK #對應之區塊內LUT,並將表示寫入目的地位置之偏移(區塊內偏移)映射至該邏輯位址(步驟S12)。
繼而,控制器4更新與寫入目標區塊BLK #對應之區塊管理表32,並將與所寫入之資料對應之點陣圖旗標(即與寫入有該資料之偏移(區塊內偏移)對應之點陣圖旗標)自0變更為1(步驟S13)。
例如,如圖25所示,假定將起始LBA為LBAx之16K位元組更新資料寫入至與區塊BLK # 1之偏移+4~+7對應之實體存儲位置之情形。於此情形時,如圖26所示,於區塊BLK # 1用之區塊內LUT中,偏移+4~+7映射至LBAx~LBAx+3。又,如圖27所示,於區塊BLK # 1用之區塊管理表中,與偏移+4~+7對應之點陣圖旗標分別自0變更為1。
控制器4將對該寫入指令之響應(成功/失敗)回傳至主機2(步驟S14)。
當主機2接收到該響應時,主機2更新由主機2管理之區塊級LUT,並將寫入目標區塊BLK #之區塊編號BLK #映射至與經寫入之寫入資料對應之邏輯位址(步驟S21)。如圖28所示,區塊級LUT包含與複數個邏輯位址(例如LBA)各自對應之複數個登記項目。將存儲有與該LBA對應之資料之NAND型快閃記憶體5之區塊編號存儲於與某一邏輯位址(例如某一LBA)對應之登記項目中。如圖25所示,若將起始LBA為LBAx之16K位 元組更新資料寫入至區塊BLK # 1,則如圖28所示,區塊內LUT被更新,與LBAx~LBAx+3對應之區塊編號自BLK # 0變更為BLK # 1。
此後,如圖24所示,主機2將上述用以使因更新資料之寫入而變成無用之以前之資料無效化之Trim指令發送至快閃存儲裝置3。快閃存儲裝置3之控制器4根據該Trim指令更新區塊內LUT、區塊管理表(步驟S15、S16)。
假設當如圖25所示般將以前之資料存儲於區塊BLK # 0時,如圖29所示,指定區塊編號(=BLK # 0)、LBAx、長度(=4)之Trim指令自主機2被發送至快閃存儲裝置3。快閃存儲裝置3之控制器4根據該Trim指令,更新與BLK # 0對應之區塊內LUT,並將表示LBAx~LBAx+3各者與偏移+1~+3各者之間之映射之信息刪除。於此情形時,控制器4亦可將上述LBAx~LBAx+3與偏移+1~+3變更為顯示無效之值(null)。進而,控制器4更新與BLK # 0對應之區塊管理表32,並將與偏移+0~+3對應之點陣圖旗標分別自1變更為0。
圖30表示快閃存儲裝置3所應用之讀取指令。
讀取指令係請求快閃存儲裝置3讀出資料之指令。該讀取指令包含指令ID、區塊編號BLK #、邏輯位址、長度、傳輸目的地指示器。
指令ID係表示該指令為讀取指令之ID(指令代碼),讀取指令中包含讀取指令用之指令ID。
區塊編號BLK #表示存儲有應讀取之資料之區塊之區塊編號。邏輯位址係應讀取之資料之邏輯位址。
長度表示應讀取之資料之長度。該資料長可由LBA數表示,亦可由Grain數表示。
傳輸目的地指示器表示所讀出之資料應傳輸到之主機2內之記憶體上之位置。
圖31表示由主機2與快閃存儲裝置3執行之讀取處理之序列。
主機2參照由主機2管理之區塊內LUT,將來自用戶應用程式之讀取請求中所包含之邏輯位址(LBA)轉換成區塊編號。接下來,主機2將指定該區塊編號、LBA、長度之讀取指令發送至快閃存儲裝置3。
當快閃存儲裝置3之控制器4自主機2接收到讀取指令時,控制器4選擇與藉由該讀取指令而指定之區塊編號對應之區塊內LUT,使用並參照該所選擇之區塊內LUT、讀取指令內之LBA,獲取與該LBA對應之偏移(區塊內偏移)(步驟S31)。控制器4基於藉由讀取指令而指定之區塊編號與所獲取之偏移(區塊內偏移),自NAND型快閃記憶體5中讀取與該LBA對應之資料(步驟S32),並將該讀取資料發送至主機2。
圖32表示快閃存儲裝置3所應用之GC控制指令。
GC控制指令用以將GC源區塊編號及GC目的地區塊編號通知給快閃存儲裝置3。主機2可管理各區塊之有效資料量/無效資料量,並選擇有效資料量相對較少之若干個區塊作為GC源區塊。又,主機2可管理閒置區塊列表,並選擇若干個閒置區塊作為GC目的地區塊。該GC控制指令亦可包含指令ID、GC源區塊編號、GC目的地區塊編號等。
指令ID係表示該指令為GC控制指令之ID(指令代碼),GC控制指令中包含GC控制指令用之指令ID。
GC源區塊編號係表示GC源區塊之區塊編號。主機2可指定應將哪個區塊設為GC源區塊。主機2亦可將複數個GC源區塊編號設定於一個GC控制指令中。
GC目的地區塊編號係表示GC目的地區塊之區塊編號。主機2可指定應將哪個區塊設為GC目的地區塊。主機2亦可將複數個GC目的地區塊編號設定於一個GC控制指令中。
圖33表示GC用回調指令。
GC用回調指令用於將包含多組邏輯位址(LBA)與目標區塊編號之列表通知給主機2。某一組中所包含之邏輯位址(LBA)係經複製之有效資料之邏輯位址。該組中所包含之目標區塊編號係複製有該有效資料之GC目的地區塊之區塊編號。該GC用回調指令僅當藉由GC控制指令指定複數個GC源區塊編號及複數個目的地區塊編號時,可自快閃存儲裝置3發送至主機2。
圖28表示垃圾回收(GC)動作之順序。
例如,主機2於由主機2所管理之閒置區塊列表中所包含之剩餘閒置區塊數降低至閾值以下之情形時,選擇GC源區塊及GC目的地區塊,並將GC控制指令發送至快閃存儲裝置3(步驟S41)。
當接收到該GC控制指令時,快閃存儲裝置3之控制器4執行資料複製動作,上述資料複製動作包含決定應寫入GC源區塊內之有效資料之GC目的地區塊內之位置(複製目標位置)之動作及將GC源區塊內之有效資料複製至GC目的地區塊內之複製目標位置之動作(步驟S51)。於步驟S51中,於GC源區塊內之所有有效資料之複製完成之前重複執行資料複製動作。於藉由GC控制指令指定複數個GC源區塊之情形時,於所有GC源區塊內之所有有效資料之複製完成之前重複進行資料複製動作。
接下來,控制器4使用GC用回調指令將包含多組邏輯位址(LBA)與目標區塊編號之列表通知給主機2(步驟S52),並且以映射至所複製之有效資 料之邏輯位址之偏移(區塊內偏移)由表示GC源區塊內之複製源位置之偏移(區塊內偏移)變更為表示GC目的地區塊內之複製目標位置之偏移(區塊內偏移)之方式,更新與GC源區塊對應之區塊內LUT及與GC目的地區塊對應之區塊內LUT(步驟S53)。
主機2基於由快閃存儲裝置3通知之列表,更新區塊內LUT(步驟S42)。
圖35表示將複數個GC源區塊內之所有有效資料複製至複數個GC目的地區塊之動作。
此處,假定藉由主機2指定區塊BLK # 1、區塊BLK # 2、區塊BLK # 3作為GC源區塊並藉由主機2指定區塊BLK # 50、區塊BLK # 51作為GC目的地區塊之情形。區塊BLK # 1、區塊BLK # 2、區塊BLK # 3各自混合存在有效資料與無效資料。
首先,將區塊BLK # 1內之所有有效資料複製至區塊BLK # 50。繼而,將區塊BLK # 2之所有有效資料之一部分複製至區塊BLK # 50之剩餘空白區域,將區塊BLK # 2之剩餘有效資料複製至區塊BLK # 51。接下來,將區塊BLK # 3之所有有效資料複製至區塊BLK # 51。
再者,控制器4亦可將不僅是各GC源區塊內之有效資料而是該有效資料及與該有效資料對應之邏輯位址兩者自GC源區塊(複製源區塊)複製至GC目的地區塊(複製目標區塊)。藉此,可將資料與邏輯位址之配對保持於GC目的地區塊(複製目標區塊)內。
圖36表示用於GC而執行之資料複製動作之例子。
於圖36中,假定將存儲於GC源區塊(此處為區塊BLK # 1)之與偏移+0對應之位置之有效資料(LBA=10)複製至GC目的地區塊(此處為區塊 BLK # 50)之與偏移+0對應之位置,將存儲於GC源區塊(此處為區塊BLK # 1)之與偏移+1對應之位置之有效資料(LBA=11)複製至GC目的地區塊(此處為區塊BLK # 50)之與偏移+1對應之位置之情形。
於此情形時,控制器4如圖37所示般,更新與區塊BLK # 50對應之區塊內LUT,並將一對LBA10與偏移+0及一對LBA11與偏移+1存儲至與區塊BLK # 50對應之區塊內LUT。藉此,將偏移+0映射至LBA10,將偏移+1映射至LBA10。又,控制器4如圖38所示般,更新與區塊BLK # 10對應之區塊內LUT,並將一對LBA10與偏移+0及一對LBA11與偏移+1自與區塊BLK # 1對應之區塊內LUT中刪除。進而,控制器4將LBA10與目標區塊編號(BLK # 50)之配對及LBA11與目標區塊編號(BLK # 50)之配對通知給主機2。
主機2基於該通知,如圖39所示般更新區塊級LUT,將映射至LBA10之區塊編號自BLK # 1變更為BLK # 50,亦將映射至LBA11之區塊編號自BLK # 1變更為BLK # 50。
如以上說明所述,根據本實施形態,於自主機2接收到指定第1區塊編號與第1邏輯位址之寫入請求之情形時,快閃存儲裝置3之控制器4決定應寫入來自主機2之資料並具有第1區塊編號之區塊(寫入目標區塊)內之位置(寫入目的地位置),並將來自主機2之資料寫入至寫入目標區塊之寫入目的地位置,更新管理邏輯位址各者與該寫入目標區塊之區塊內實體位址(區塊內偏移)各者之間之映射之區塊內LUT,並將表示寫入目的地位置之區塊內偏移映射至第1邏輯位址。又,於自主機2接收到指定上述第1區塊編號與上述第1邏輯位址之讀取請求之情形時,控制器4使用第1邏輯位址並參照區塊內LUT,獲取寫入有與第1邏輯位址對應之資料之區塊內實體 位址(區塊內偏移),並基於第1區塊編號與所獲取之區塊內實體位址(區塊內偏移),自NAND型快閃記憶體5中讀取與第1邏輯位址對應之資料。
因此,可實現主機2處理區塊編號,且快閃存儲裝置3考慮到頁寫入順序限制/不良頁等決定具有由主機2指定之區塊編號之區塊內之寫入目的地位置之構成。藉由使主機2處理區塊編號,而可實現上位階層(主機2)之應用程序級位址轉換表與先前型SSD之LUT級位址轉換表之合併。又,快閃存儲裝置3可考慮到NAND型快閃記憶體5之特徵/限制來控制NAND型快閃記憶體5。進而,主機2可識別區塊交界,因此可考慮到區塊交界/區塊尺寸而將用戶資料寫入至各區塊。藉此,主機2可進行藉由資料更新等而使同一區塊內之資料一起無效化等之控制,因此可降低執行GC之頻率。結果可降低寫入放大,而實現快閃存儲裝置3之性能之提高、快閃存儲裝置3之壽命之最大化。
因此,可實現主機2與快閃存儲裝置3之間之適當之作用分擔,藉此可實現包含主機2與快閃存儲裝置3之系統整體之I/O性能之提高。
又,根據本實施形態,控制器4決定應寫入有效資料之複製目標區塊內之複製目標位置,並將有效資料複製至複製目標區塊內之該複製目標位置。因此,主機2只要進行選擇複製源區塊與複製目標區塊之動作即可。又,由於可將應用程序級GC與快閃存儲裝置3之GC合併,故而可大幅降低寫入放大。
再者,快閃存儲裝置3亦可作為設置於存儲陣列內之複數個快閃存儲裝置3中之一個而被利用。存儲陣列可經由纜線或網路連接於如伺服器計算機般之信息處理裝置。存儲陣列包含控制該存儲陣列內之複數個快閃存儲裝置3之控制器。於將快閃存儲裝置3應用於存儲陣列之情形時,該存儲 陣列之控制器亦可作為快閃存儲裝置3之主機2發揮功能。
又,於本實施形態中,例示了NAND型快閃記憶體作為非揮發性記憶體。然而,本實施形態之功能例如亦可應用於如MRAM(Magnetoresistive Random Access Memory,磁性隨機存取記憶體)、PRAM(Phase change Random Access Memory,相變隨機存取記憶體)、ReRAM(Resistive Random Access Memory,電阻式隨機存取記憶體)、或FeRAM(Ferroelectric Random Access Memory,鐵電隨機存取記憶體)般之其他各種非揮發性記憶體。
已對本發明之若干實施形態進行了說明,但該等實施形態係作為例子而提出,並無意圖限定發明之範圍。該等新穎之實施形態可以其他各種方式加以實施,且可於不脫離發明主旨之範圍內進行各種省略、替換、變更。該等實施形態或其變化包含於發明之範圍或主旨中,並且包含於申請專利範圍所記載之發明與其均等之範圍內。
[相關申請案]
本申請案享有以日本專利申請案2017-181447號(申請日:2017年9月21日)作為基礎申請案之優先權。本申請案藉由參照該基礎申請案而包含基礎申請案之全部內容。

Claims (12)

  1. 一種記憶體系統,其係可連接於主機者,且具備:非揮發性記憶體,其包含各自包含複數頁之複數個區塊;及控制器,其電性連接於上述非揮發性記憶體,且控制上述非揮發性記憶體;上述控制器構成為:於自上述主機接收到指定第1區塊編號與第1邏輯位址之寫入請求之情形時,執行如下動作:決定應寫入來自上述主機之資料之具有上述第1區塊編號之第1區塊內之第1位置,將來自上述主機之資料寫入至上述第1區塊之上述第1位置,且更新管理邏輯位址各者與上述第1區塊之區塊內實體位址各者之間之映射而不管理上述邏輯位址與上述第1區塊之間之映射之第1位址轉換表,而將表示上述第1位置之第1區塊內實體位址映射至上述第1邏輯位址;於自上述主機接收到指定上述第1區塊編號與上述第1邏輯位址之讀取請求之情形時,執行如下動作:使用上述第1邏輯位址參照上述第1位址轉換表,獲取上述第1區塊內實體位址,基於上述第1區塊編號與上述獲取之第1區塊內實體位址,自上述非揮發性記憶體中讀取與上述第1邏輯位址對應之資料。
  2. 如請求項1之記憶體系統,其中上述第1區塊內實體位址係由第1區塊內偏移表示,上述第1區塊內偏移係以具有與頁尺寸為不同尺寸之粒度之倍數表示上述第1區塊之開頭至上述第1位置之偏移。
  3. 如請求項1之記憶體系統,其中上述控制器構成為:於自上述主機接收到指定用於上述非揮發性記憶體之垃圾回收之複製源區塊編號及複製目標區塊編號之控制指令之情形時,執行如下動作:自上述複數個區塊中選擇具有上述複製源區塊編號之第2區塊與具有上述複製目標區塊編號之第3區塊,決定應寫入存儲於上述第2區塊之有效資料之上述第3區塊內之複製目標位置,且將上述有效資料複製至上述第3區塊之上述複製目標位置。
  4. 如請求項3之記憶體系統,其中上述控制器構成為:以映射至上述有效資料之邏輯位址之區塊內實體位址由表示存儲有上述有效資料之上述第2區塊內之複製源位置之第2區塊內實體位址變更為表示上述第3區塊之上述複製目標位置之第3區塊內實體位址之方式,更新管理邏輯位址各者與上述第2區塊之區塊內實體位址各者之間之映射之第2位址轉換表、及管理邏輯位址各者與上述第3區塊之區塊內實體位址各者之間之映射之第3位址轉換表。
  5. 如請求項4之記憶體系統,其中上述第2區塊內實體位址由第2區塊內偏移表示,上述第2區塊內偏移係以具有與頁尺寸不同尺寸之粒度之倍數表示上述第2區塊之開頭至上述複製源位置之偏移,上述第3區塊內實體位址由第3區塊內偏移表示,上述第3區塊內偏移係以上述粒度之倍數表示上述第3區塊之開頭至上述複製目標位置之偏移。
  6. 如請求項3之記憶體系統,其中上述控制器構成為:將上述有效資料之邏輯位址、及經複製上述有效資料之上述複製目標區塊編號通知給上述主機。
  7. 如請求項1之記憶體系統,其中上述控制器構成為:於自上述主機接收到請求最大區塊編號之第1指令之情形時,將表示上述複數個區塊數之最大區塊編號通知給上述主機,於自上述主機接收到請求區塊尺寸之第2指令之情形時,將上述複數個區塊各者之區塊尺寸通知給上述主機。
  8. 如請求項7之記憶體系統,其中上述控制器構成為:於上述第2指令包含區塊編號之情形下,將具有上述第2指令中所包含之上述區塊編號之區塊之區塊尺寸通知給上述主機。
  9. 一種記憶體系統,其係可連接於主機者,且具備:非揮發性記憶體,其包含各自包含複數頁之複數個區塊;及控制器,其電性連接於上述非揮發性記憶體,且控制上述非揮發性記憶體;上述控制器構成為:於自上述主機接收到請求最大區塊編號之第1指令之情形時,將表示上述複數個區塊數之最大區塊編號通知給上述主機,於自上述主機接收到請求區塊尺寸之第2指令之情形時,將上述複數個區塊各者之區塊尺寸通知給上述主機,於自上述主機接收到指定第1區塊編號與第1邏輯位址之寫入請求之情形時,執行如下動作:決定應寫入來自上述主機之資料之具有上述第1區塊編號之第1區塊內之第1位置,將來自上述主機之資料寫入至上述第1區塊之上述第1位置,且更新管理邏輯位址各者與上述第1區塊之區塊內實體位址各者之間之映射而不管理上述邏輯位址與上述第1區塊之間之映射之第1位址轉換表,而將表示上述第1位置之第1區塊內實體位址映射至上述第1邏輯位址;於自上述主機接收到指定上述第1區塊編號與上述第1邏輯位址之讀取請求之情形時,執行如下動作:使用上述第1邏輯位址參照上述第1位址轉換表,獲取上述第1區塊內實體位址,基於上述第1區塊編號與上述獲取之第1區塊內實體位址,自上述非揮發性記憶體中讀取與上述第1邏輯位址對應之資料。
  10. 如請求項9之記憶體系統,其中上述第1區塊內實體位址由第1區塊內偏移表示,上述第1區塊內偏移係以具有與頁尺寸不同尺寸之粒度之倍數表示上述第1區塊之開頭至上述第1位置之偏移。
  11. 如請求項9之記憶體系統,其中上述控制器構成為:於自上述主機接收到指定用於上述非揮發性記憶體之垃圾回收之複數個複製源區塊編號及複數個複製目標區塊編號之控制指令之情形時,執行如下動作:自上述複數個區塊中選擇具有上述複數個複製源區塊編號之複數個第2區塊與具有上述複數個複製目標區塊編號之複數個第3區塊,決定應寫入存儲於上述複數個第2區塊中之一個第2區塊之有效資料之上述複數個第3區塊中之一個第3區塊內之複製目標位置,將上述有效資料複製至上述一個第3區塊之上述複製目標位置,且將上述經複製有效資料之邏輯位址與上述一個第3區塊之區塊編號通知給上述主機。
  12. 一種控制非揮發性記憶體之控制方法,其係控制包含各自包含複數頁之複數個區塊之非揮發性記憶體之控制方法,且具備:於自主機接收到指定第1區塊編號與第1邏輯位址之寫入請求之情形時,執行如下動作:決定應寫入來自上述主機之資料之具有上述第1區塊編號之第1區塊內之第1位置;將來自上述主機之資料寫入至上述第1區塊之上述第1位置;及更新管理邏輯位址各者與上述第1區塊之區塊內實體位址各者之間之映射而不管理上述邏輯位址與上述第1區塊之間之映射之第1位址轉換表,而將表示上述第1位置之第1區塊內實體位址映射至上述第1邏輯位址;及於自上述主機接收到指定上述第1區塊編號與上述第1邏輯位址之讀取請求之情形時,執行如下動作:使用上述第1邏輯位址參照上述第1位址轉換表,獲取上述第1區塊內實體位址;及基於上述第1區塊編號與上述獲取之第1區塊內實體位址,自上述非揮發性記憶體中讀取與上述第1邏輯位址對應之資料。
TW106146168A 2017-09-21 2017-12-28 記憶體系統及控制非揮發性記憶體之控制方法 TWI661301B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017-181447 2017-09-21
JP2017181447A JP6785205B2 (ja) 2017-09-21 2017-09-21 メモリシステムおよび制御方法

Publications (2)

Publication Number Publication Date
TW201915741A TW201915741A (zh) 2019-04-16
TWI661301B true TWI661301B (zh) 2019-06-01

Family

ID=65719309

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106146168A TWI661301B (zh) 2017-09-21 2017-12-28 記憶體系統及控制非揮發性記憶體之控制方法

Country Status (4)

Country Link
US (4) US10503407B2 (zh)
JP (1) JP6785205B2 (zh)
CN (1) CN109542333B (zh)
TW (1) TWI661301B (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10564895B2 (en) * 2017-06-07 2020-02-18 ScaleFlux, Inc. I/O performance enhancement of solid-state data storage devices
JP6785205B2 (ja) 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
JP2019079464A (ja) 2017-10-27 2019-05-23 東芝メモリ株式会社 メモリシステムおよび制御方法
JP6982468B2 (ja) 2017-10-27 2021-12-17 キオクシア株式会社 メモリシステムおよび制御方法
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US11144473B2 (en) * 2018-06-13 2021-10-12 Advanced Micro Devices, Inc. Quality of service for input/output memory management unit
CN110633048B (zh) * 2018-06-22 2022-11-08 慧荣科技股份有限公司 闪存存储装置的命名空间操作方法
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11126561B2 (en) * 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
CN113312274B (zh) * 2020-02-27 2024-03-22 群联电子股份有限公司 存储器的数据整理方法、存储器存储装置及控制电路单元
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11301173B2 (en) 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11409661B2 (en) * 2020-08-18 2022-08-09 Micron Technology, Inc. Logical-to-physical mapping
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
JP2022050016A (ja) * 2020-09-17 2022-03-30 キオクシア株式会社 メモリシステム
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
CN112765051B (zh) * 2021-01-22 2022-12-20 珠海妙存科技有限公司 降低闪存设备trim消耗的方法、装置及介质
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
KR20220140367A (ko) * 2021-04-09 2022-10-18 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
JP2023001494A (ja) * 2021-06-21 2023-01-06 キオクシア株式会社 メモリシステムおよび制御方法
EP4180970A1 (en) * 2021-11-15 2023-05-17 Samsung Electronics Co., Ltd. Storage device operating in zone unit and data processing system including the same
CN116540950B (zh) * 2023-07-05 2023-09-29 合肥康芯威存储技术有限公司 一种存储器件及其写入数据的控制方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110119464A1 (en) * 2009-11-13 2011-05-19 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
TW201510723A (zh) * 2009-09-03 2015-03-16 Pioneer Chip Technology Ltd 以頁面為基礎管理快閃儲存裝置
TW201732821A (zh) * 2016-03-02 2017-09-16 群聯電子股份有限公司 資料傳輸方法、記憶體控制電路單元與記憶體儲存裝置

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6883063B2 (en) 1998-06-30 2005-04-19 Emc Corporation Method and apparatus for initializing logical objects in a data storage system
US6804674B2 (en) 2001-07-20 2004-10-12 International Business Machines Corporation Scalable Content management system and method of using the same
US7512957B2 (en) 2004-12-03 2009-03-31 Microsoft Corporation Interface infrastructure for creating and interacting with web services
US7315917B2 (en) 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
JP5617873B2 (ja) * 2005-06-06 2014-11-05 ソニー株式会社 記憶装置
US7934049B2 (en) 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20080172519A1 (en) 2007-01-11 2008-07-17 Sandisk Il Ltd. Methods For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US8959280B2 (en) 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
WO2009153982A1 (ja) 2008-06-20 2009-12-23 パナソニック株式会社 複数区分型不揮発性記憶装置およびシステム
US9323658B2 (en) 2009-06-02 2016-04-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Multi-mapped flash RAID
US20110137966A1 (en) 2009-12-08 2011-06-09 Netapp, Inc. Methods and systems for providing a unified namespace for multiple network protocols
JP5589205B2 (ja) 2011-02-23 2014-09-17 株式会社日立製作所 計算機システム及びデータ管理方法
US20120246385A1 (en) 2011-03-22 2012-09-27 American Megatrends, Inc. Emulating spi or 12c prom/eprom/eeprom using flash memory of microcontroller
US20130191580A1 (en) 2012-01-23 2013-07-25 Menahem Lasser Controller, System, and Method for Mapping Logical Sector Addresses to Physical Addresses
JP5687639B2 (ja) 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
JP5597666B2 (ja) 2012-03-26 2014-10-01 株式会社東芝 半導体記憶装置、情報処理システムおよび制御方法
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
CN103176752A (zh) 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器
CN102789427B (zh) * 2012-07-17 2015-11-25 威盛电子股份有限公司 数据储存装置与其操作方法
JP6443794B2 (ja) * 2013-08-16 2018-12-26 エルエスアイ コーポレーション ホストとコントローラとの間でパーティション化された変換レイヤ
US20150186259A1 (en) * 2013-12-30 2015-07-02 Sandisk Technologies Inc. Method and apparatus for storing data in non-volatile memory
US10812313B2 (en) 2014-02-24 2020-10-20 Netapp, Inc. Federated namespace of heterogeneous storage system namespaces
KR20150106778A (ko) 2014-03-12 2015-09-22 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 제어 방법
US9959203B2 (en) 2014-06-23 2018-05-01 Google Llc Managing storage devices
CN105830166B (zh) * 2014-06-27 2018-02-23 华为技术有限公司 一种控制器、闪存装置和将数据写入闪存装置的方法
US20160041760A1 (en) 2014-08-08 2016-02-11 International Business Machines Corporation Multi-Level Cell Flash Memory Control Mechanisms
KR20160027805A (ko) 2014-09-02 2016-03-10 삼성전자주식회사 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법
TWI546666B (zh) * 2014-11-03 2016-08-21 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
US9977734B2 (en) 2014-12-11 2018-05-22 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
JP6406707B2 (ja) * 2015-03-23 2018-10-17 東芝メモリ株式会社 半導体記憶装置
US10102138B2 (en) 2015-10-22 2018-10-16 Western Digital Technologies, Inc. Division of data storage in single-storage device architecture
US10705952B2 (en) 2015-11-04 2020-07-07 Sandisk Technologies Llc User space data storage management
US9996473B2 (en) 2015-11-13 2018-06-12 Samsung Electronics., Ltd Selective underlying exposure storage mapping
US9946642B2 (en) 2015-11-13 2018-04-17 Samsung Electronics Co., Ltd Distributed multimode storage management
US9990304B2 (en) 2015-11-13 2018-06-05 Samsung Electronics Co., Ltd Multimode storage management system
JP6448570B2 (ja) * 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
JP6523193B2 (ja) * 2016-03-08 2019-05-29 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
JP6444917B2 (ja) 2016-03-08 2018-12-26 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US20180173619A1 (en) 2016-12-21 2018-06-21 Sandisk Technologies Llc System and Method for Distributed Logical to Physical Address Mapping
US10592408B2 (en) * 2017-09-13 2020-03-17 Intel Corporation Apparatus, computer program product, system, and method for managing multiple regions of a memory device
JP6785205B2 (ja) 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
JP6982468B2 (ja) 2017-10-27 2021-12-17 キオクシア株式会社 メモリシステムおよび制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201510723A (zh) * 2009-09-03 2015-03-16 Pioneer Chip Technology Ltd 以頁面為基礎管理快閃儲存裝置
US20110119464A1 (en) * 2009-11-13 2011-05-19 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
TW201732821A (zh) * 2016-03-02 2017-09-16 群聯電子股份有限公司 資料傳輸方法、記憶體控制電路單元與記憶體儲存裝置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Information technology - ATA/ATAPI Command Set - 3 (ACS-3), 2013. *

Also Published As

Publication number Publication date
US20210349632A1 (en) 2021-11-11
US20230315294A1 (en) 2023-10-05
CN109542333A (zh) 2019-03-29
US20190087089A1 (en) 2019-03-21
TW201915741A (zh) 2019-04-16
US11709597B2 (en) 2023-07-25
US10503407B2 (en) 2019-12-10
JP2019057155A (ja) 2019-04-11
US11093137B2 (en) 2021-08-17
JP6785205B2 (ja) 2020-11-18
CN109542333B (zh) 2022-04-29
US20200057559A1 (en) 2020-02-20

Similar Documents

Publication Publication Date Title
TWI661301B (zh) 記憶體系統及控制非揮發性記憶體之控制方法
TWI674502B (zh) 記憶體系統及控制方法
US11151029B2 (en) Computing system and method for controlling storage device
CN109726139B (zh) 存储器系统及控制方法
US11797436B2 (en) Memory system and method for controlling nonvolatile memory
JP7013546B2 (ja) メモリシステム
JP7204020B2 (ja) 制御方法
JP7167295B2 (ja) メモリシステムおよび制御方法
JP7102482B2 (ja) メモリシステムおよび制御方法
JP2023021450A (ja) メモリシステム
JP2022179798A (ja) メモリシステムおよび制御方法