TW201841118A - 採用映射記憶體提供多重命名空間的方法及設備 - Google Patents
採用映射記憶體提供多重命名空間的方法及設備 Download PDFInfo
- Publication number
- TW201841118A TW201841118A TW107101572A TW107101572A TW201841118A TW 201841118 A TW201841118 A TW 201841118A TW 107101572 A TW107101572 A TW 107101572A TW 107101572 A TW107101572 A TW 107101572A TW 201841118 A TW201841118 A TW 201841118A
- Authority
- TW
- Taiwan
- Prior art keywords
- lba
- global
- ftl
- nsid
- ppa
- Prior art date
Links
Classifications
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明揭示一種可將資訊儲存在具備多重命名空間的非揮發性記憶體內之方法及/或設備。在一態樣中,該方法或設備包括一轉譯表、一全域LBA表以及一FTL表,其中該轉譯表也就是已知的命名空間轉譯表。在一範例中,該轉譯表包括多個項目,其中每一項目都儲存有關在具有命名空間識別符 (NSID,namespace identifier)的一傳入邏輯區塊位址(LBA,Logical Block Address)與一已轉譯LBA (「TR_LBA」)之間的轉譯有關之已轉譯資訊。在一態樣中,該全域LBA表具有多個全域項目,其中每一全域項目都儲存為了回應一TR_LBA所產生的一全域LBA基本單元。該FTL表內含多個FTL項目,其中每一FTL項目都包含由一全域LBA基本單元索引的一實體分頁位址(PPA,Physical Page Address)。該設備可根據該PPA幫助記憶體存取。
Description
本發明的該(等)示範具體實施例係關於半導體以及積體電路領域,尤其是本發明的該(等)示範具體實施例係關於非揮發性(NV,Non-volatile)儲存裝置。
隨著諸如電腦、智慧型電話、行動裝置、伺服器農場、主機電腦等電子裝置日益普及,對高速可靠的資料儲存需求不斷增長。為了處理和促成這種電子設備之間的大量資料,通常需要高速NV記憶體裝置。例如傳統型NV記憶體裝置為快閃記憶體型儲存裝置,像是固態硬碟(SSD,Solid-state Drive)。
該快閃記憶體型SSD為例如一電子NV電腦儲存裝置,可維護、抹除及/或重新編寫資料。該快閃記憶體使用許多不同種類的積體電路(IC,Integrated Circuit)技術所製造,像是NOR或NAND邏輯閘含例如浮動閘電晶體。根據應用情況,快閃記憶體的典型記憶體存取可構成為一區塊、一頁面、一字(Word)及/或一位元組。
傳統SSD伴隨的缺點為當多個獨立使用者透過例如多部虛擬機器(VM,Virtual Machine)共享磁碟時,SSD可能經歷資料完整性或資料安全性問題。傳統磁碟可能對活動用戶或VM之間的資料安全保證敏感。此外,一般磁碟在多個使用者存取期間可能容易發生空間分配以及回收利用的問題。
在一般NVME端點裝置內,命名空間(NS,namespace)的該等最低有效位元可與LBA連結,以獲得唯一識別符來索引用於使用者資料的區塊。唯一識別符例如可由NS資訊的四位元結合LBA的28位元而成,如以下式子所例示: Unique-Id[31:0] = NS[3:0], LBA[27:0]
此方法的一項缺點就是造成該FTL中顯著的內部分割量。當該使用者NS的大小不是2的偶次方時,就會發生此分割。例如:若使用者NS的大小少於256M LBA,則未使用的空間就浪費了。換言之,在該FTL內存在有等於該未使用空間大小的間隙。
本發明的一具體實施例揭示一種可將資訊儲存在具有由一快閃轉譯層(FTL,flash translation layer)處理所管理的多個命名空間(MNS,multiple namespaces)之非揮發性記憶體(NVM,non-volatile memory)內之設備或處理。在一態樣中,該設備包括一轉譯表、一全域LBA表以及一FTL表,其中該轉譯表也就是已知的命名空間(NS)轉譯表。在一範例中,該轉譯表包括多個項目,其中每一項目都儲存與具有命名空間識別符 (NSID,namespace identifier)的一傳入邏輯區塊位址(LBA,logical block address)與一已轉譯LBA (「TR_LBA」)之間轉譯有關之已轉譯資訊。在一態樣中,該全域LBA表構成具有多個全域項目,其中每一全域項目都儲存為了回應一TR_LBA所產生的一全域LBA基本單元。該FTL表內含多個FTL項目,其中每一FTL項目都包含由一全域LBA索引的一實體分頁位址(PPA,physical page address)。
從下列提供的詳細說明、圖式以及申請專利範圍當中將會對本發明示範具體實施例的額外特色與優點有通盤了解。
在本說明書中以用來根據SSD內不同命名空間識別符(NSID,Namespace Identifier)來儲存資訊的一方法及/或設備之情況來說明本發明的具體實施例。
為了清晰起見,在本說書並未顯示與說明這些實施的所有例行特色。當然,吾人將瞭解在任何這種實際實施的發展當中,可做出許多實施專屬決策來達成開發者的特定目的,像是符合應用與商業相關限制,且這些特定目的將隨實施而變以及隨開發者而變。再者吾人將瞭解,這種開發努力可能複雜並且耗時,但是儘管如此,對於受益於本揭示具體實施例的利益之精通技術人士而言,仍將是工程的常規任務。
該等圖式例示的本發明許多具體實施例並未按照比例繪製,更確切地說,為了清晰起見,該等許多部件的尺寸可能放大或縮小。此外,某些圖式為了清晰所以有所簡化。因此,該等圖式中可能並未描繪所有已知設備(例如裝置)的該等組件或方法。在該等所有圖式及以下的詳細說明中將使用相同的參考編號來代表相同或相似的部件。
根據本發明的具體實施例,可使用許多種作業系統、計算平台、電腦程式及/或一般用途機器,來實施本說明書所說明的組件、處理步驟及/或資料結構。此外,精通技術人士將了解,在不悖離本說明書所揭示本發明領域與精神之下,也可使用像是硬體裝置、場可程式閘陣列(FPGA,Field Programmable Gate Array)、應用專屬積體電路(ASIC,Application Specific Integrated Circuit)等這類較不通用裝置。在包含一系列處理步驟的方法由電腦或機器實施並且這些處理步驟可儲存為一系列該機器可讀取指令的情況下,這些步驟儲存在一有形媒體上,諸如一電腦記憶體裝置(例如唯讀記憶體(ROM,Read Only Memory)、可程式唯讀記憶體(PROM,Programmable Read Only Memory)、電可抹除可程式唯讀記憶體(EEPROM,Electrically Erasable Programmable Read Only Memory)、FLASH記憶體、Jump Drive等等)、磁性儲存媒體(例如磁帶、磁碟機等等)、光學儲存媒體(例如CD-ROM、DVD-ROM、紙卡以及紙帶等等)以及其他已知類型的程式記憶體。
術語「系統」或「裝置」在這里通常用於描述任何數量的組件、元件、子系統、裝置、封包交換元件、封包交換器、接入交換機、路由器、網絡、電腦及/或通訊裝置或機制或這些組件的組合。術語「電腦」包含可執行指令的一處理器、記憶體以及匯流排,其中該電腦代表電腦、個人電腦、工作站、主機電腦或這些電腦的組合之一者或叢集。
本發明的一具體實施例揭示一種可將資訊儲存在具有由一快閃轉譯層(FTL,Flash Translation Layer)處理所管理的多個命名空間(MNS,Multiple Namespace)之非揮發性記憶體(NVM,Non-volatile Memory)內之設備或處理。在一態樣中,該設備包括一轉譯表、一全域LBA表以及一FTL表,其中該轉譯表也就是已知的命名空間(「NS」)轉譯表。在一範例中,該轉譯表包括多個項目,其中每一項目都儲存與具有命名空間識別符 (NSID,Namespace Identifier)的一傳入邏輯區塊位址(LBA,logical block address)與一已轉譯LBA (TR_LBA)之間轉譯有關之已轉譯資訊。在一態樣中,該全域LBA表構成具有多個全域項目,其中每一全域項目都儲存為了回應一TR_LBA所產生的一全域LBA基本單元。該FTL表內含多個FTL項目,其中每一FTL項目都包含由一全域LBA索引的一實體分頁位址(PPA,Physical Page Address)。該設備可根據該PPA幫助記憶體存取。
在操作期間,SSD內促成MNS的處理使用FTL接收含第一NSID或NS(1)內一LBA之記憶體存取請求。在根據該第一NSID在該NS轉譯表內查找該第一LBA偏移時,至少部分根據第一LBA偏移以產生一第一TR_LBA。在根據由該第一TR_LBA的位元部分所產生的一索引來識別映射表內一第一LBA基本單元之後,則由該映射表的該等位元部分結合該TR_LBA的位元部分以產生一第一全域LBA。後續獲得一第一PPA或定位在該FTL表上,以回應該第一全域LBA。然後根據該PPA執行該記憶體存取請求。
第一圖為根據本發明的一具體實施例之例示內含一SSD可提供虛擬固態硬碟(VSSD,Virtual Solid State Drive)來使用多重命名空間(MNS,multi-namespace)支援虛擬機器(VM,Virtual Machine)的一電腦系統之方塊圖100。圖100包括電腦系統102、SSD 106和匯流排104,其中在一態樣中,匯流排104為高速記憶體匯流排,像是但不受限於高速周邊組件互連(PCIe,Peripheral Component Interconnect express)匯流排、序列先進技術附接(ATA,Advanced Technology Attachment)匯流排、萬用序列匯流排(USB,Universal Serial Bus)、並列ATA匯流排、小型電腦系統介面(SCSI,Small Computer System Interface)、FireWire、光纖、PCIe先進交換(PCIe-AS,PCIe Advanced Switching)匯流排、網路、Infiniband、SCSI RDMA等等。在一範例中,系統102包括主機中央處理單元(CPU,Central Processing Unit)以及管理程序112,並且可啟動多個虛擬機器(VM) 120-126。吾人應該注意,若在圖式100內新增或移除一或多個區塊(或裝置),不會改變本發明該(等)示範具體實施例的該基本概念。
在一範例中,電腦系統102可為個人電腦、伺服器、網路系統、智慧型手機、無線集線器、基地台、主機電腦及/或可執行指令的任何數位處理系統。系統102可使用虛擬機器韌體或軟體112,像是管理程序,同時動態啟動、維護及終止許多VM 120-126。在一態樣中,VM 120-126通過虛擬記憶體匯流排160-166使用不同的命名空間或NS,來虛擬分配自己的VSSD 130-136。
請注意,VM示模仿個別電腦系統的軟體模擬,可提供一般電腦系統所執行的功能。對於末端使用者,VM擁有自己的硬體、作業系統以及應用程式。若要啟動VM,其通常包括一虛擬硬體、虛擬作業系統(Guest Operating System)以及預期的應用程式。例如:一VM支援程式,像是管理程序,可使用原生執行來共享與管理硬體,並且促成同時操作來支援多重計算環境。該等多重計算環境或VM在由一實體機器支援時,彼此隔離。在本說書具體實施例中,像是VM 120的每一VM都透過像是匯流排160的一虛擬記憶體匯流排,以耦接至像是VSSD 130的一虛擬SSD或VSSD。
為了支援VSSD操作,使用MNS來促成虛擬SSD操作。在一具體實施例中,SSD 106構成透過MNS操作來操控VSSD。SSD 106例如包括多重NS 150-156,其中每一NS都由NSID定址。例如NS 150的ID可為一(1),或指定為NS-1、NS(1)或NS_1。SSD 106也包括一映射表158,其用來將VSSD 130-136映射至多個NS 150-156。例如:SSD 106內的NS-1 150映射至VSSD 130,如虛線箭頭108所示。
使用MNS的一優點在於能夠有效率地使用實體SSD儲存空間來支援VSSD操作。使用MNS的另一優點為其提供較佳的磁碟安全性以及資料整體性。
第二圖為根據本發明的一具體實施例,例示可透過FTL提供MNS的一非揮發性(NV)儲存裝置之方塊圖200。圖200包含輸入資料202、儲存裝置283、輸出連接埠288以及儲存控制器285。儲存控制器285進一步包含讀取模組286、FTL 284、MNS模組208及/或寫入模組287。FTL 284的功能為例如將LBA映射至實體位址。 吾人應該注意,若在圖式200內新增或移除一或多個區塊(或裝置),不會改變本發明該(等)示範具體實施例的該基本概念。
MNS模組208可為FTL 284的一部分,構成在一(1)實體儲存磁碟上實施及/或促成多個命名空間操作。為了促成多重命名空間,該磁碟內的該實體儲存空間分成多個儲存基本單元,其中可指定或分配一或多個基本單元給一命名空間。MNS模組208的功能為保持追蹤及/或映射一命名空間識別符或像是NS_1的NSID至一基本單元。
在一具體實施例中,儲存裝置283為快閃型NVM,其包括用來永久儲存資料的多個快閃記憶體單元陣列。該快閃記憶體一般具有小於200微秒(µs)的讀取延遲,以區塊與分頁組織而成,其中最小存取單元可例如根據該快閃記憶體技術,設定為四(4)千位元組(Kbyte)、八(8) Kbyte或十六(16) Kbyte記憶體容量。為了簡化再來的討論,所以使用四(4) Kbyte分頁或快閃記憶體分頁(FMP)。
請即重新參考第二圖,儲存裝置283被組織成多個NVM區塊或多個區塊290,其中像是區塊290的每一區塊都進一步包括一組分頁或FMP 291-296。像是分頁291的每一分頁都例如具有可儲存4096位元組或4 Kbyte資訊的容量或大小。在一範例中,像是區塊290的每一區塊可內含從128至512分頁(或區段) 291-296的分頁範圍。在一範例中,一分頁通常為一最小可寫入或可讀取單元,而一區塊則為執行抹除功能的最少數量。快閃記憶體283能夠在沒有電源的情況下持續長時間保留資訊或資料。
FTL 284(可實施於DRAM內)包括一FTL資料表或儲存映射資訊的表格。例如:FTL資料庫的大小一般與SSD儲存容量的總大小成正比。例如在SSD內實現FTL的一種方式為使用大小約等於SSD容量1/1000的DRAM。例如:因為每一分頁都有4-Kbyte容量,並且FTL資料庫的每一項目都具有4-byte的項目容量,所以FTL資料庫的大小可由SSD容量 /4KByte * 4Byte (SSD容量/1000)計算得出,大約是1比1000 (或1/1000)。
在操作中,在接收到內含NSID.LBA的資料輸入或資料封包202時,FTL 284使用NS轉譯表以及映射表將NSID.LBA轉譯成一實體分頁位址(PPA,Physical Page Address)。在識別PPA之後,寫入電路287將來自資料封包282的資料寫入由PPA所指向區塊之內的分頁。在一範例中,MNS 208可分配或分割儲存空間成為基本儲存單元,其中該等基本儲存單元的儲存容量基本上相同或相似。根據該命名空間的大小,可將一或多個基本儲存單元指定或分配給一NSID。
請注意,儲存裝置283也可包括NAND快閃記憶體、NOR快閃記憶體、相變記憶體(PCM,Phase Change Memory)、奈米隨機存取記憶體(NRAM,Nano Random Access Memory)、磁阻RAM (MRAM,Magneto-resistive RAM)、電阻式隨機存取記憶體(RRAM,Resistive Random-access Memory)、可程式金屬化單元(PMC,Programmable Metallization Cell)、磁性儲存媒體(例如硬碟、磁帶)、光學儲存媒體等等。為了簡化以下討論,在本說書使用該快閃記憶體或快閃記憶體型SSD當成一示範NVM或NV儲存裝置。
運用MNS 208將儲存空間區分成多個LBA基本單元的優點在於一旦已終止NSID,能夠更有效率循環及/或重新分配儲存空間。
第三A圖為根據本發明的一具體實施例之例示使用表格的MNS實施之邏輯方塊圖300。圖300包括一NS轉譯表316、映射表326、FTL表302以及NVM 306,其中NVM 306構成區塊與分頁308。在一態樣中,一記憶體控制器使用多個映射表來通過FTL促成MNS。吾人應該注意,若在圖式300內新增或移除一或多個區塊(或組件),不會改變本發明該(等)示範具體實施例的該基本概念。
在一具體實施例中,NS轉譯表316包括多個項目310-314,其中每一項目都儲存一LBA偏移,這在一範例中用來根據含NSID.LBA 304的傳入輸入來建立一已轉譯LBA。NSID.LBA 304例如為輸入中指出命名空間識別以及輸入位址的部分。在一具體實施例中,NS轉譯表316為一硬體表格,內含最多128列或項目來儲存最多128個命名空間。NS轉譯表316的每一列或項目都包括多個欄位,像是但不受限為有效位元、LBA偏移、Max_LBA、進階加密標準(AES,Advanced Encryption Standard)金鑰及/或金鎖。下表例示對每一欄位的示範位元分配。
在內含資料以及NSID.LBA 304的傳入輸入到達時,則產生內含偏移的一對應TR_LBA。例如:對於具有NS(1).LBA 304的輸入,MNS產生LBA_OS[NS(1)]+LBA[NS(1)] 310,其中LBA_OS[NS(1)]包括有關第一NS的LBA偏移。若NS轉譯表316內含128個項目,則MNS最多可處理128個不同的命名空間,這表示MNS最多可具有128個VSSD。請注意,此機制可用來將單一NSID.LBA轉譯成單一TR_LBA或相反地,可由精通技術人士修改來將一定範圍的NSID.LBA轉譯成一定範圍的TR_LBA。
在一具體實施例中,映射表或映射記憶體326包括多個項目,其中每一項目都分成兩個主要欄318和328。在一範例中,映射表326可包括指標器至1024 global_LBA (「GL」)基本單元320-324,其中GL基本單元320-324具有類似或相同大小。在一態樣中,欄318可為一索引,用來選擇該等1024 GL基本單元之一者。例如:欄318可內含索引資訊,將TR_LBA的範圍與GL基本單元連結。例如LBA_OS[NS(1)] (命名空間一的LBA偏移)加上LBA[NS(1)_size] 310代表一已轉譯LBA或TR_LBA。例如TR_LBA的10個最高有效位元可當成索引,用來選擇該映射表內一項目。在本說書範例中,該映射表內像是欄328的項目320這類項目,指示哪個GL基本單元已經指定給內含LBA_OS[NS(1)] + LBA[NS(1)] 310的LBA範圍。
在一態樣中,FTL表302用來以全域LBA方式提供PPA。FTL表302的功能為根據全域LBA產生PPA。FTL表302可實現於DRAM、NVM或DRAM和NVM的組合中。在獲得PPA時,MNS或控制器可依照PPA存取NVM 308。
NVM 306為像是可永久儲存資訊的快閃記憶體之類非揮發性儲存裝置的陣列。例如:根據應用,NVM 306的容量可從512 GB至128 TB。在一態樣中,NVM 306的容量可分成1024個相等的部分。像是GL基本單元320的每一GL基本單元都可為NVM 306的1024相等部分之一者。在一具體實施例中,全域LBA的最有效10位元指示該全域LBA在哪個GL基本單元內。進一步從該全域LBA中該等最有效10位元以外的剩餘位元中,獲取在該GL基本單內發現該全域LBA的位置。該全域LBA用來當成一索引,用來選擇FTL表302內的一項目。FTL表302內的該選定項目內含一PPA,其指向NVM 306處的一固定位置。
在一具體實施例中,內含可監控並促成MNS的一控制器之SSD之中包括NS轉譯表316、映射表326、FTL表302、與NVM 306。NS轉譯表316包括依據NSID的一組偏移。映射表326包括一組GL基本單元328。當NS轉譯表316儲存TR_LBA的偏差來回應該等傳入封包或輸入304,映射表326內含資訊來根據TR_LBA的高順序位元以定位FTL內的GL基本單元。利用將來自映射表326的GL基本單元結合TR_LBA的低順序位元,來獲取全域LBA。FTL 302內含定位來自全域LBA的PPA之資訊。
在操作中,一MNS處理促成多個命名空間接收一記憶體存取請求(即讀取或寫入操作)含像是NS(1)的NSID內之LBA。請注意,該記憶體存取請求可為一讀取或寫入操作。該記憶體存取請求的NSID.LBA 304使用來自NS轉譯表316的NSID之LBA以及NSID之LBA偏移,轉譯成一TR_LBA。 在根據來自像是已轉譯LBA的10個最高有效位元這類TR_LBA之位元部分產生一全域索引之後,搜尋或查找映射表326。在取代位元部分時,像是使用來自映射表326的10個位元取代已轉譯LBA的該等10個最高有效位元,則識別一全域LBA。該全域LBA大體上用於定位FTL表302內的PPA。該記憶體存取請求是根據該PPA來執行。
使用TR_LBA的優點在於可運用單一實體磁碟,同時處理多個命名空間。擁有統一的GL基本單元320-324容量之另一利益在於,在偵測到或終止一NS之後,容易循環使用儲存空間。
第三B圖為根據本發明的一具體實施例之例示使用表格的MNS實施之邏輯方塊圖380。圖380類似於圖300,除了LBA_OS[NS(1)] 310需要兩個像是單元350-352的GL基本單元以外。在識別NS(1)的大量LBA時,MNS將兩GL基本單元1-2 350-352分配給LBA_OS[NS(1)],如編號330-332所示。在一態樣中,映射表356的項目350內之GL基本單元1通過FTL表302指向實體區塊360,如編號334所示。此外,LBA_OS[NS(1)] 310進一步指向GL基本單元352,其通過FTL表302指向NVM區塊358,如編號336所示。請注意,在不改變以下本發明的概念之下,可使用其他方式指定及/或映射多個基本單元至一NSID。
第四圖為根據本發明的一具體實施例,例示構成提供MNS的一NVM儲存控制器402之方塊圖400。在一具體實施例中,NVM儲存控制器402包括NVMe (高速NVM)控制器404-406、NS控制器408以及許多週邊介面410-416。控制器404-408透過匯流排運用NVMoE(乙太網路上NVM)協定來互連。請注意,若在圖400內新增或移除一或多個區塊(或組件),或若使用NVMoE以外的互連匯流排,並不會改變本發明該(等)示範具體實施例的該基本概念。
在本說書範例中,像是NVMe控制器404的記憶體控制器為運用NVMe協定的PCIe型SSD。例如:NVMe控制器404或406係介接PCIe側介面412,來與其他裝置或主機通訊。像是NVMe控制器404之類的控制器也使用封裝化指令介面NVMoE來與命名空間控制器408通訊。在多NS或MNS支援的案例中,使用一實體磁碟來模擬多個獨立的NS操作。
在一態樣中,NVM控制器400構成最多支援128個NSID及/或最多支援128個虛擬磁碟或SSD。在NVMe標準之下,在子任務佇列項目內使用NSID的32位元欄位。在一範例中,該32位元欄位可是別「0」表示NVMe控制器本身、「1-n」表示一特定命名空間ID、及/或「FFFF_FFFFh」表示像是識別所有指令的廣播。
第五圖為根據本發明的一具體實施例之例示用於NSID轉譯的TR_LBA之邏輯表示邏輯圖500。圖500例示包括多個TR_LBA單元502-508的TR_LBA 510。TR_LBA單元502為例如一已轉譯NSID=1 (或NS(1)),並且TR_LBA單元504為一已轉譯NSID=2 (或NS(2))。LBA偏移[2]、LBA偏移[3]以及LBA偏移[128]用於例如指示TR_LBA單元502-508之間的邊界。吾人應該注意,若在圖式500內新增或移除一或多個區塊(或組件),不會改變本發明該(等)示範具體實施例的該基本概念。
在一具體實施例中,一使用者命名空間或NS使用一命名空間映射表映射至單一已轉譯命名空間,以減少儲存空間以及TR_LBA的不連續。例如:一種實現該映射表的方式為建構其中使用該NSID當成索引來選擇表格內一列之表格。該表格中該列內的一選取欄位指出來自該使用者NS所開始的TR_LBA空間開頭之偏移。例如:LBA_Offset[2]指出TR_LBA 504的開頭。
使用命名空間映射表的優點為可同時儲存關於該使用者命名空間的額外資訊並且/或同時定位於該命名空間映射表內。例如:該NS映射表包括像是使用者資料區塊大小(例如512B、4096B或其他區塊大小)、中繼資料大小、保護資訊大小、格式及位置這些資訊、加密金鑰識別符(用來識別該NS全域加密金鑰)、NS的寫入保護狀態、NS的讀取保護狀態、NS的「有效」位元、NS保留固定器的識別、NS上保留的類型、該已轉譯NS之內該使用者NS開始之處的偏移、該使用者NS的大小等等。
第六圖為根據本發明的一具體實施例之例示用於MNS操作的映射表或映射記憶體之圖式600。圖600例示NS轉譯表510、映射表610和FTL表302,其中映射表610內含GL基本單元。如第五圖內所例示,NS轉譯表510包括用於單元502-508內每一命名空間的一或多個偏移。吾人應該注意,若在圖式600內新增或移除一或多個區塊(或組件),不會改變本發明該(等)示範具體實施例的該基本概念。
映射表610包括GL基本單元的範圍,其中該範圍可從128至1024個單元。在一具體實施例中,每一GLS單元或GLS基本單元的該儲存容量都相同或大體上相同。每一GLS單元都可構成具有介於64 MB (百萬位元組)至8 GB (十億位元組)之間的儲存容量。具有統一GLS基本單元容量的一項優點為該基本單元相對容易分配以及重複使用或循環使用。
為了支援重複使用的一已刪除的NS,在一態樣中,可實現一索引規則,其容納以下步驟:(1) 讓一映射表從該TR_LBA值空間映射至一全域LBA;(2) 一固定大小的TR_LBA基本單元,其可映射至該相同大小的GL_LBA基本單元;(3) 該GL_LBA基本單元內一特定NS的該已刪除空間可重複使用,不必擔心是否符合新NS大小。在一範例中,此機制識別用於該NS的一「命名空間全域加密金鑰」。可請求一NVMe裝置提供額外金鑰,用於使用者命名空間之內的LBA範圍。這種範圍可稱為LBA鎖定範圍,並且每一者都需要獨一的加密金鑰。
在操作中,硬體邏輯(也可利用韌體來實現)應掃描該LBA鎖定範圍表,來決定一讀取貨寫入操作落在一LBA鎖定範圍之內。若發生「命中」,該命名空間全域金鑰(若存在)應該由一鎖定範圍金鑰所取代。請注意,根據應用,一命名空間可或不可具有全域命名空間加密金鑰。例如:若一命名空間具有一命名空間全域加密金鑰,但是該命名空間之內的一LBA鎖定範圍不具有加密金鑰,則將不會加密該LBA範圍。
當已刪除一使用者命名空間,則在該已轉譯命名空間內會產生未使用的空間或間隙。另外,若已刪除大量使用者命名空間,則在該已轉譯命名空間內會留下許多不連貫的間隙。這些間隙的大小可變,範圍從小到大。因此想要將已轉譯命名空間內這些間隙集中成單一間隙,其大小為該等不連貫間隙的大小加總。這在重新分配該已轉譯命名空間內該未使用空間給新使用者命名空間時具有彈性。
利用實現一映射表,其也稱為一全域LBA表,可達成該已轉譯命名空間內「孔」的連接。在一範例中,該映射表可定位於LBA鎖定範圍與FTL之間。這種映射表可構成將該已轉譯表分成固定數量的區段,例如:該表可分成1024個區段,不過根據不同應用,該數量可更大或更小。在該映射表內每一區段都對應至該已轉譯位址空間內位址的範圍。落在該映射表內一區段之內的一已轉譯位址可重新指向新命名空間內一範圍,稱為該全域命名空間。
在操作中,指定使用者命名空間以在該已轉譯命名空間或TR_LBA內偏移。在將該已轉譯命名空間的該等區段映射至該全域命名空間內類似大小的區段之後,一使用者NS可佔用該已轉譯命名空間內的1或多個區段,且同樣地,可佔用該全域命名空間內多個區段。使用者命名空間可佔用該已轉譯命名空間與全域命名空間內的區段數並無限制。
第七圖為根據本發明的一具體實施例之例示將TR_LBA的範圍映射至全域LBA的類似範圍之處理邏輯圖700。圖700例示TR_LBA範圍710以及GLS基本單元711,其中TR_LBA範圍710包括多個TR_LBA範圍702-708。Global_LBA 711包括多個GL-LBA基本單元712-718。在一具體實施例中,多個映射表用來將TR_LBA範圍702-708映射或指定至GL_LBA基本單元712-718,如箭頭722-728所示。例如:TR_LBA第一範圍702如箭頭722所示映射至GL-LBA第一單元712,而TR_LBA第二範圍704如箭頭724所示映射至GL-LBA第三單元716。例如:TR_LBA第三範圍706如箭頭726所示映射至GL-LBA第1024單元718,並且TR_LBA第1024範圍708如箭頭728所示映射至GL-LBA第二單元714。吾人應該注意,若在圖式200內新增或移除一或多個區塊(或組件),不會改變本發明該(等)示範具體實施例的該基本概念。
在全域LBA空間內,像是GL_LBA單元712-718之類的空間區分成許多基本單元。每一單元都可分配給新的NS,或可從特定NS解除分配。當第一次建立一NS時,將映射至連續TR_LBA空間內的一請求大小。屬於新NS的TR_LBA空間710可使用GL_LBA空間711內已釋放的基本單元來分配。當已刪除一NS,則將從TR_LBA空間710刪除NSID,並且將釋放該對應指向GL_LBA單元。一旦釋放已刪除NS的GL_LBA基本單元,則可返回到GL_LBA空間711重複使用。在一具體實施例中,該基本單元映射允許由一NSID獨立映射並使用每一GL_LBA基本單元。
請注意,一使用者命名空間在該已轉譯命名空間內的位置是短暫的,但是該使用者命名空間在該全域命名空間內的位置是永久的。換句話說,使用者命名空間內的一LBA可指向已轉譯命名空間內任意位置,但是已轉譯命名空間內的該位置必須總是指向全域命名空間內儲存該使用者LBA的永久位置。當已刪除一使用者命名空間,則利用重新定位剩餘使用者命名空間至已轉譯命名空間內連續位置,可將已轉譯命名空間內的結果間隙移動至已轉譯命名空間內不同位置。
在操作期間,一處理可改變該命名空間轉表內該剩餘使用者命名空間的該偏移指標器,以指向該已轉譯命名空間內的新位置。接著改變該映射表內該新位置的指標器,以指向該全域命名空間內該原始、永久位置。請注意,利用重新配置已轉譯命名空間,已轉譯命名空間內的間隙可結合至已轉譯命名空間的單一區域內。
第八A圖至第八D圖為根據本發明的一具體實施例之例示一示範處理顯示包括移除NSID的一MNS操作之邏輯圖。第八A圖顯示例示使用多個表格來顯示一MNS操作的一示範處理之邏輯圖800。圖800包括一NS轉譯表854、映射表或global_LBA表856、FTL 858以及NVM 306。在一具體實施例中,NS轉譯表854包括多個列或項目810-816,其中每一項目都代表或儲存關於獨一命名空間的資訊。例如:NS(0) (命名空間零)轉譯或指定至項目810,並且NS(1)轉譯或分配至項目812。像是項目810的每一項目都包括多個區段,像是偏移區段、LBA區段的編號以及欄位[x],其中欄位[x]可包括有效位元、鎖定位元及/或加密位元。在一態樣中,NS轉譯表856包括具有範圍從64至256項目的一些項目。在一具體實施例中,NS轉譯表854內的項目數量指示該MNS可處理的不同命名空間數量。
在一具體實施例中,Global_LBA表或映射表856包括多個項目,其中每一項目都儲存GL基本單元[x],其中x為整數。在一範例中,x可為0。在另一範例中,x可為1023。請注意,1024 GL基本單元為示範數量,可以更多或更少,但是不可改變具體實施例的範疇。在一範例中,所有GL基本單元都具有相同或類似大小或容量。在一態樣中,FTL表858包括多個PPA項目,可提供實體分頁位址或PPA給NVM。FTL表858的功能為根據全域LBA產生PPA。 NVM 306為像是可永久儲存資訊的快閃記憶體之類的非揮發性儲存裝置的陣列。
在操作中,在接收具有像是NS(0)、NS(1)和NS (2)這些許多NSID.LBA的輸入852時,該MNS控制器係使用來自NSID.LBA的LBA、及加入來自810-816內項目的偏移,如分別對應至NS(0)、NS(1)和NS(2)的NS_0、NS_1和NS_2所表示,以產生已轉譯LBA。含有在全域LBA表856內的GL_LBA[1]、GL_LBA[2]和GL_LBA[3]的三個GL_LBA項目820-824分別指定或分配至NS_0、NS_1和NS_2,如箭頭所示。GL_LBA[1]、GL_LBA[2]和GL_LBA[3]用來定址或指向FTL表858的FTL項目830-834內PPA範圍[x0]、PPA範圍[x1]和PPA範圍[x2],來識別NVM 306內的實體位置。記憶體存取(即讀取或寫入操作)可由該MNS控制器根據FTL項目830-834內的PPA範圍[x0]、PPA範圍[x1]和PPA範圍[x2]來執行。
第八B圖為根據本發明的一具體實施例之例示接續第八A圖內所示圖800在接收到用來刪除、結束或終止命名空間一(1)或NS(1)的一命令860時之邏輯圖802。在一具體實施例中,該MNS控制器從NS轉譯表854的項目862移除NS_1。在刪除NS_1之後,接著刪除GL_LBA表或映射表856的項目864上之該原始GL_LBA[2]。在從項目864移除GL_LBA[2]之後,終止或去除項目864與FTL表858的PPA範圍[x1] 866間之鏈結,如虛線868所示。
第八C圖為例示根據本發明的一具體實施例之接續第八B圖內所示圖802在接收到用來刪除、結束或終止命名空間一(1)或NS(1)的一命令860之後的邏輯圖804。在從NS轉譯表854移除NS_1以及從GL_LBA表856移除GL_LBA[2]之後,GL_LBA表或映射表856利用位移處理,以循環空的GL基本單元或重複使用用過的GL基本單元。例如:GL_LBA表856內的GL_LBA[3]往下位移來佔用LB_LBA[2]原來的空間,如位移箭頭870所示。請注意,鏈結872-874會與GL_LBA[3]一起位移,由此NS轉譯表854內NS_2的項目以及FTL表858內的PPA範圍[x1]維持不變。
第八D圖為根據本發明的一具體實施例之例示接續第八C圖內所示圖804在位移處理之後的邏輯圖806。在接收輸入890以建立新命名空間時,像是新NS(1),該MNS控制器在項目880內產生一新NS_1。因為該新NS_1需要兩(2) GL_LBA基本單元來執行該記憶體儲存請求,因此指定或分配在Global_LBA表856內含GL_LBA[x]和GL_LBA[y]的兩GL_LBA項目882-884給該新NS_1,如箭頭所示。GL_LBA[x]和GL_LBA[y]用來定址或指向FTL表858的FTL項目886-888內之PPA範圍[x1]和PPA範圍[y2],以識別在NVM 306內的實體位置。記憶體存取(即讀取或寫入操作)可由該MNS操作根據選自於FTL項目886-888內的PPA範圍[x1]或PPA範圍[y0]的PPA來執行。
在簡短說明其中操作本發明具體實施例的記憶體操作之一具體實施例之後,第九圖例示可為記憶體控制器、伺服器、路由器、交換器、節點、集線器、無線裝置或電腦系統的一數位處理裝置或系統900之範例。
第九圖為根據本發明的一具體實施例之例示可提供MNS操作的一數位處理系統之方塊圖。電腦系統或信號處理系統900可包含一處理單元901、一介面匯流排912以及一輸入/輸出(IO)單元920。處理單元901包含一處理器902、一主記憶體904、一系統匯流排911、一靜態記憶體裝置906、一匯流排控制單元905、一I/O元件930以及一NVM控制器985。吾人應該注意,若從第九圖內新增或移除一或多個區塊(電路或元件),將不會改變本發明該(等)示範具體實施例的該基本概念。
匯流排911用於在許多組件與處理器902之間傳遞資訊以供資料處理。處理器902可為許多種一般用途處理器、嵌入式處理器或微處理器之任一者,例如ARM®
嵌入式處理器、Intel®
CoreTM
Duo、CoreTM
Quad、Xeon®
、PentiumTM
微處理器、MotorolaTM
68040、AMD®系列處理器或Power PCTM
微處理器。
可包含多個快取記憶體層級的主記憶體904儲存頻繁使用的資料與指令。主記憶體904可為隨機存取記憶體(RAM)、MRAM (磁性RAM)或快閃記憶體。靜態記憶體906可為一連結至匯流排911而用於儲存靜態資訊及/或指令的唯讀記憶體(ROM)。匯流排控制單元905連結至匯流排911-912,並且控制像是主記憶體904或處理器902之類的哪個組件可使用該匯流排。匯流排控制單元905管理匯流排911與匯流排912之間的通訊。可為磁碟、光碟、硬碟機、軟碟、CD-ROM及/或快閃記憶體的大量儲存記憶體或SSD 106可用來儲存大量資料。
在一具體實施例中,I/O單元920包含一顯示器921、鍵盤922、游標控制裝置923以及通訊裝置925。顯示裝置921可為液晶裝置、陰極射線管(CRT)、觸控螢幕或其他合適的顯示裝置。顯示器921投射或顯示圖形規劃板的影像。鍵盤922可為傳統文數字輸入裝置,用來在電腦系統900與電腦操作員之間通訊資訊。用於系統900與使用者之間通訊資訊的其他種使用者輸入裝置為游標控制裝置923,像是傳統滑鼠、觸控滑鼠、軌跡球或其他種游標。
通訊裝置925連結至匯流排911,用於透過廣域網路102,存取來自像是伺服器或其他電腦這類遠端電腦或伺服器的資訊。通訊裝置925可包含一數據機或網路介面裝置,或其他有助於電腦900與網路之間通訊之類似裝置。電腦系統900可透過網路基礎設施連結至許多伺服器,以當成網路系統使用。
本發明的示範具體實施例包含許多處理步驟,將於以下說明。該具體實施例的該等步驟可用機器或電腦可執行指令具體實施。該等指令可用來導致一般用途或特殊用途系統(使用該等指令程式設計),以執行本發明該示範具體實施例的該等步驟。或者,本發明該示範具體實施例的該等步驟可由內含用於執行該等步驟之硬線邏輯的特定硬體組件,或由經程式設計之電腦組件與自訂硬體組件的任意組合來執行。
第十圖為根據本發明的一具體實施例之例示使用記憶體映射的MNS操作之流程圖1000。在步驟1002,一能夠使用FTL以促成SSD內的多重NS之處理係接收一第一NSID (即NS(1))內含LBA之記憶體存取請求。請注意,該記憶體存取請求可為寫入請求、讀取請求、刷新請求、刪除請求等等。
在步驟1004,根據該第一NSID以查找在一NS轉譯表內的一第一LBA偏移,在步驟1006,根據該第一LBA偏移以產生一第一TR_LBA。若要產生一第一已轉譯LBA,該第一LBA偏移係例如加入該第一LBA。
在步驟1008,根據該第一TR_LBA的至少一部分位元,在該映射表內識別一第一LBA基本單元。例如:使用第一TR_LBA的十個(10)最高有效位元產生一用來查找該映射表內的GL基本單元的索引。
在步驟1010,在一具體實施例中,該處理使用來自該映射表的十個(10)位元取代第一TR_LBA的十個(10)最高有效位元,以產生一第一全域LBA。在步驟1012,使用該全域LBA當成索引,從FTL表獲得一第一PPA。
在步驟1014,該處理係根據該第一PPA以執行該第一記憶體存取請求。請注意,該第一記憶體存取請求可包括將使用者資料寫入由該第一PPA所指示的一快閃記憶體分頁。在一具體實施例中,在接收一第二NSID (即NS(2))內含的一LBA的第二記憶體存取請求之後,該處理查找在該NS轉譯表內的一第二LBA偏移,以回應該第二NSID。在根據該第二LBA偏移以產生一第二TR_LBA時,根據從該第二TR_LBA的十個(10)最高有效位元所產生的一第二索引,在該映射表內識別一第二GL基本單元。後續在該FTL表內獲得一第二PPA,以回應該第二全域LBA。
雖然已經顯示並說明本發明的特定具體實施例,不過精通此技術的人士可瞭解,根據在本說明書的教示,在不悖離本發明的此示範具體實施例及其廣義態樣之下可進行變更與修改。因此,申請專利範圍將所有本發明示範具體實施例的精神與範疇內的這類變更與修改都含括在內。
100‧‧‧方塊圖
102‧‧‧電腦系統
104‧‧‧匯流排
106‧‧‧固態硬碟
108‧‧‧虛線箭頭
110‧‧‧主機CPU
112‧‧‧管理程序
120-126‧‧‧虛擬機器
130-136‧‧‧虛擬固態硬碟
150-156‧‧‧多重命名空間
158‧‧‧映射表
160-166‧‧‧虛擬記憶體匯流排
200‧‧‧方塊圖
202‧‧‧輸入資料
208‧‧‧多重命名空間
208‧‧‧多重命名空間模組
282‧‧‧資料封包
283‧‧‧儲存裝置
284‧‧‧快閃轉譯層
285‧‧‧儲存控制器
286‧‧‧讀取模組
287‧‧‧寫入模組
288‧‧‧輸出連接埠
290‧‧‧非揮發性記憶體區塊
291-296‧‧‧快閃記憶體分頁
300‧‧‧邏輯方塊圖
302‧‧‧FTL表
304‧‧‧NSID.LBA
306‧‧‧NVM
308‧‧‧區塊
310-314‧‧‧項目
316‧‧‧NS轉譯表
318‧‧‧欄
320-324‧‧‧GL基本單元
326‧‧‧映射表
328‧‧‧欄
350-352‧‧‧單元
360‧‧‧實體區塊
380‧‧‧邏輯方塊圖
400‧‧‧方塊圖
402‧‧‧NVM儲存控制器
404-406‧‧‧高速NVM控制器
408‧‧‧NS控制器
410-416‧‧‧週邊介面
500‧‧‧邏輯圖
502-508‧‧‧TR_LBA單元
510‧‧‧TR_LBA
600‧‧‧圖式
610‧‧‧映射表
700‧‧‧邏輯圖
702-710‧‧‧TR_LBA範圍
711‧‧‧GLS基本單元
712-718‧‧‧GL-LBA基本單元
722-728‧‧‧箭頭
800‧‧‧邏輯圖
802‧‧‧邏輯圖
804‧‧‧邏輯圖
806‧‧‧邏輯圖
810-816‧‧‧項目
820-824‧‧‧GL_LBA項目
830-834‧‧‧FTL項目
852‧‧‧輸入
854‧‧‧NS轉譯表
856‧‧‧映射表
858‧‧‧FTL表
860‧‧‧指令
862‧‧‧項目
864‧‧‧項目
866‧‧‧PPA範圍[x1]
880‧‧‧項目
882-884‧‧‧GL_LBA項目
886-888‧‧‧FTL項目
890‧‧‧輸入
900‧‧‧電腦系統
901‧‧‧處理單元
902‧‧‧處理器
904‧‧‧主記憶體
905‧‧‧匯流排控制單元
906‧‧‧靜態記憶體裝置
911‧‧‧系統匯流排
912‧‧‧介面匯流排
920‧‧‧輸入/輸出單元
921‧‧‧顯示器
922‧‧‧鍵盤
923‧‧‧游標控制裝置
925‧‧‧通訊裝置
930‧‧‧I/O元件
985‧‧‧NVM控制器
1000‧‧‧邏輯圖
從以下本發明許多具體實施例的詳細說明以及附圖中,可更完整瞭解本發明的該(等)示範具體實施例,不過不應將本發明限制在該等特定態樣,僅用於解釋與瞭解之用。
第一圖為根據本發明的一具體實施例之例示可提供虛擬固態硬碟(VSSD,Virtual Solid State Drives)來使用多命名空間(MNS,multi-namespace)支援其虛擬機器(VM,Virtual Machine)的一電腦系統之方塊圖;
第二圖為根據本發明的一具體實施例之例示可提供由一快閃轉譯層(FTL,Flash Translation Layer)所管理MNS的一非揮發性(NV)儲存裝置之方塊圖;
第三A圖至第三B圖為根據本發明的一具體實施例之例示使用表格的MNS實施之邏輯方塊圖;
第四圖為根據本發明的一具體實施例之例示構成提供MNS的一NVM儲存控制器之方塊圖;
第五圖為根據本發明的一具體實施例之例示用於NSID轉譯的已轉譯LBA (TR_LBA)之邏輯表示的邏輯圖;
第六圖為根據本發明的一具體實施例之例示用於MNS操作的映射表或映射記憶體之圖式;
第七圖為根據本發明的一具體實施例之例示將TR_LBA映射至GLB單元的處理之邏輯圖;
第八A圖至第八D圖為根據本發明的一具體實施例之例示顯示一MNS操作的示範處理之邏輯圖;
第九圖為根據本發明的一具體實施例之例示可提供MNS操作的一數位處理系統之方塊圖;及
第十圖為根據本發明的一具體實施例之例示使用記憶體映射的MNS操作之流程圖。
Claims (26)
- 一種透過快閃轉譯層(FTL)促成一固態硬碟(SSD)內的多重命名空間(NS)之方法,該方法包括: 接收一第一命名空間識別符(NSID)之內含一邏輯區塊位址(LBA)的一第一記憶體存取請求; 根據該第一NSID以識別一第一LBA偏移,並產生一第一已轉譯LBA(TR_LBA)以回應該第一LBA偏移; 根據該該第一TR_LBA查找一映射表內的一全域LBA (GL)基本單元; 接收一第二NSID之內含一LBA的一第二記憶體存取請求;及 根據該第二NSID以識別一第二LBA偏移,並產生一第二TR_LBA以回應該第二LBA偏移。
- 如申請專利範圍第1項之方,其進一步包括根據從該第一TR_LBA的一部分位元所產生的一索引,以識別該映射表內的一第一GL基本單元。
- 如申請專利範圍第2項之方,其進一步包括識別含該映射表內該第一GL基本單元以及該第一TR_LBA內的一部分位元的一第一全域LBA位址。
- 如申請專利範圍第3項之方法,其進一步包括識別一快閃轉譯層(FTL)內的一第一實體分頁位址(PPA),以回應該第一全域LBA位址。
- 如申請專利範圍第4項之方法,其進一步包括根據儲存在該快閃轉譯層(FTL)內的第一實體分頁位址(PPA)來處理該第一記憶體存取請求。
- 如申請專利範圍第1項之方法,其進一步包括從該第二TR_LBA識別一第二GL基本單元;從該第二GL基本單元以及從該第二TR_LBA的一部分位元以識別一第二全域LBA;根據該第二全域LBA,以識別一快閃轉譯層(FTL)內的一第二實體分頁位址(PPA);及根據該第二實體分頁位址(PPA),以處理該第二記憶體存取請求。
- 如申請專利範圍第1項之方法,其進一步包括從該轉譯查找表移除該第一NSID,以回應接收用於刪除該第一NSID的一刪除指令。
- 如申請專利範圍第7項之方法,其進一步包括: 位移該映射表的項目,以復原LBA位址空間;及 更新映射記憶體以反應該第一NSID的移除。
- 如申請專利範圍第1項之方法,其中接收一第一記憶體存取請求包括從一主機接收一寫入指令。
- 如申請專利範圍第1項之方法,其進一步包括: 根據該第二TR_LBA,以查找該映射表內的一GL基本單元;及 根據從該第一TR_LBA的一部分位元所產生的一索引以識別該映射表內的一第二GL基本單元。
- 如申請專利範圍第10項之方法,其進一步包括識別該FTL表內的一第二PPA,以回應該第二GL基本單元以及該第二TR_LBA的一部分位元。
- 一種構成永久儲存資訊的設備,該設備包括: 一轉譯表,其包括多個項目,其中每一項目都儲存有關具有命名空間識別符 (NSID)的一傳入邏輯區塊位址(LBA)與一已轉譯LBA (TR_LBA)之間的轉譯之資訊; 一映射表,其連結至該轉譯表並構成具有多重全域項目,其中每一全域項目都儲存一全域LBA (GL)基本單元;及 一快閃轉譯層(FTL)表,其連結至該映射表並構成具有多個FTL項目,其中每一FTL項目都包含由一全域LBA索引的一實體分頁位址(PPA)。
- 如申請專利範圍第12項之設備,其進一步包括一非揮發性記憶體(NVM)儲存裝置,其可由該FTL表內儲存的一PPA來定址。
- 如申請專利範圍第12項之設備,其中該等GL基本單元是以每一GL基本單元映射相同或大體上相同的儲存容量之方式來組織。
- 如申請專利範圍第12項之設備,其中該轉譯表為最多可儲存128或更多NSID的一NS轉譯表。
- 一種可促成多重命名空間用於包括如申請專利範圍第12項之設備的資料儲存裝置之固態硬碟(SSD)。
- 一種透過快閃轉譯層(FTL)促成一固態硬碟(SSD)內的多重命名空間(NS)之方法,該方法包括: 接收一第一命名空間識別符(NSID)之內含一邏輯區塊位址(LBA)的一第一記憶體存取請求; 查找一NS轉譯表內的第一LBA偏移以回應該第一NSID,並且根據該第一LBA偏移以產生一第一已轉譯LBA(TR_LBA); 根據從該第一TR_LBA的一部分位元所產生的一索引,以識別一映射表內的一第一全域LBA (GL)基本單元;及 獲得一快閃轉譯層(FTL)內的一第一實體分頁位址(PPA),以回應該第一GL基本單元以及該第一TR_LBA的一部分位元。
- 如申請專利範圍第17項之方法,其進一步包括根據該第一PPA以執行該第一記憶體存取請求。
- 如申請專利範圍第18項之方法,其中該第一記憶體存取請求包括將使用者資料寫入由該第一PPA所索引的一快閃記憶體分頁。
- 如申請專利範圍第17項之方法, 其中識別一第一GL基本單元包括根據第一TR_LBA的十個(10)最高有效位元以產生一索引;及 其中獲得一快閃轉譯層(FTL)表內的一第一實體分頁位址(PPA)包括使用來自該映射表的十個(10)位元取代第一TR_LBA的十個(10)最高有效位元,以產生一第一全域LBA。
- 如申請專利範圍第17項之方法,其進一步包括: 接收一第二NSID之內含一LBA的一第二記憶體存取請求; 查找該NS轉譯表內的第二LBA偏移以回應該第二NSID,並且根據該第二LBA偏移以產生一第二TR_LBA; 根據從該第二TR_LBA的十個(10)最高有效位元所產生的一第二索引,以識別該映射表內的一第二GL基本單元;及 獲得該FTL表內的一第二PPA,以回應該第二GL基本單元以及該第二TR_LBA的一部分位元。
- 一種透過快閃轉譯層(FTL)促成一固態硬碟(SSD)內的多重命名空間(NS)之方法,該方法包括: 根據該第一NSID的該第一LBA以及從有關該第一NSID的該NS轉譯表項目所獲得之該LBA偏移,將該第一NSID的LBA轉譯成一第一已轉譯LBA (TR_LBA); 根據該第一TR_LBA的一部分位元,以識別一映射表內的一第一項目,並且從該映射表獲得一第一全域LBA (GL)基本單元; 獲得一快閃轉譯層(FTL)內的一第一實體分頁位址(PPA),以回應該第一GL基本單元以及該第一TR_LBA的一部分位元;及 根據該第一PPA以執行該第一記憶體存取請求。
- 如申請專利範圍第22項之方法,其進一步包含: 接收一第二NSID內含一LBA的一第二記憶體存取請求;及 根據該第二NSID以及該第二LBA偏移,將該第二NSID的LBA轉譯成一第二已轉譯LBA (TR_LBA)。
- 如申請專利範圍第23項之方法,其進一步包括從該映射表獲得一第二全域LBA (GL)基本單元;獲得一快閃轉譯層(FTL)內的一第二實體分頁位址(PPA)以回應該第二GL基本單元以及該第二TR_LBA的一部分位元;及根據該第二PPA以執行該第二記憶體存取請求。
- 如申請專利範圍第22項之方法,其進一步包括從該轉譯查找表移除該第一NSID,以回應接收用於刪除該第一NSID的一刪除指令。
- 如申請專利範圍第22項之方法,其中記錄一第一全域LBA基本單元包括根據該第一TR_LBA的十個(10)最高有效位元產生一全域索引,並且使用來自該映射表的十個(10)位元取代第一TR_LBA的十個(10)最高有效位元, 以產生一第一全域LBA基本單元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/439,779 US20180239697A1 (en) | 2017-02-22 | 2017-02-22 | Method and apparatus for providing multi-namespace using mapping memory |
US15/439,779 | 2017-02-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201841118A true TW201841118A (zh) | 2018-11-16 |
Family
ID=63167212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107101572A TW201841118A (zh) | 2017-02-22 | 2018-01-16 | 採用映射記憶體提供多重命名空間的方法及設備 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20180239697A1 (zh) |
TW (1) | TW201841118A (zh) |
WO (1) | WO2018156249A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI602074B (zh) * | 2016-12-29 | 2017-10-11 | 慧榮科技股份有限公司 | 建立多重命名空間方法與存取多重命名空間的資料的方法 |
US20180260319A1 (en) * | 2017-03-10 | 2018-09-13 | Toshiba Memory Corporation | Writing ssd system data |
US10866732B2 (en) | 2017-03-10 | 2020-12-15 | Toshiba Memory Corporation | Namespace re-sizing |
US10782993B2 (en) * | 2017-10-13 | 2020-09-22 | Dell Products L.P. | Systems and methods for secure runtime dynamic resizing of memory namespaces |
US10642488B2 (en) | 2017-10-23 | 2020-05-05 | Micron Technology, Inc. | Namespace size adjustment in non-volatile memory devices |
US10437476B2 (en) | 2017-10-23 | 2019-10-08 | Micron Technology, Inc. | Namespaces allocation in non-volatile memory devices |
US10503404B2 (en) | 2017-10-23 | 2019-12-10 | Micron Technology, Inc. | Namespace management in non-volatile memory devices |
US10915440B2 (en) | 2017-11-16 | 2021-02-09 | Micron Technology, Inc. | Namespace mapping optimization in non-volatile memory devices |
US11580034B2 (en) | 2017-11-16 | 2023-02-14 | Micron Technology, Inc. | Namespace encryption in non-volatile memory devices |
US10678703B2 (en) * | 2017-11-16 | 2020-06-09 | Micron Technology, Inc. | Namespace mapping structual adjustment in non-volatile memory devices |
US10223254B1 (en) * | 2017-11-16 | 2019-03-05 | Micron Technology, Inc. | Namespace change propagation in non-volatile memory devices |
US10732889B2 (en) * | 2018-03-12 | 2020-08-04 | Dell Products, L.P. | Information handling system with multi-key secure erase of distributed namespace |
US10459845B1 (en) * | 2018-06-29 | 2019-10-29 | Micron Technology, Inc. | Host accelerated operations in managed NAND devices |
US10896002B2 (en) * | 2018-06-29 | 2021-01-19 | Seagate Technology Llc | Reverse directory structure in a garbage collection unit (GCU) |
US10691592B2 (en) * | 2018-10-30 | 2020-06-23 | Micron Technology, Inc. | Error-checking in namespaces on storage devices using a namespace table and metadata |
KR20200072639A (ko) | 2018-12-12 | 2020-06-23 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
CN109902033B (zh) * | 2019-02-13 | 2023-03-14 | 山东华芯半导体有限公司 | 应用于NVMe SSD控制器的namespace的LBA分配方法和映射方法 |
KR20210016184A (ko) * | 2019-08-01 | 2021-02-15 | 삼성전자주식회사 | 스토리지 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 |
US11144328B2 (en) * | 2020-02-03 | 2021-10-12 | Dell Products L.P. | System method to update failover process by running basic input/output (BIOS) system boot code from non-volatile memory express device (NVME) |
US11902184B2 (en) * | 2021-05-20 | 2024-02-13 | Pensando Systems Inc. | Methods and systems for providing a virtualized NVMe over fabric service |
US11854603B2 (en) | 2021-12-02 | 2023-12-26 | Western Digital Technologies, Inc. | Logical to encoded value table in data storage device |
CN115079957B (zh) * | 2022-07-20 | 2023-08-04 | 阿里巴巴(中国)有限公司 | 请求处理方法、装置、控制器、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7426734B2 (en) * | 2003-10-24 | 2008-09-16 | Microsoft Corporation | Facilitating presentation functionality through a programming interface media namespace |
US9208071B2 (en) * | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US9690694B2 (en) * | 2011-09-27 | 2017-06-27 | Sandisk Technologies, Llc | Apparatus, system, and method for an address translation layer |
US9805054B2 (en) * | 2011-11-14 | 2017-10-31 | Panzura, Inc. | Managing a global namespace for a distributed filesystem |
US10102144B2 (en) * | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
US9292434B2 (en) * | 2013-08-22 | 2016-03-22 | CNEXLABS, Inc. | Method and apparatus for restoring flash translation layer (FTL) in non-volatile storage device |
US20170010810A1 (en) * | 2015-07-06 | 2017-01-12 | CNEXLABS, Inc. a Delaware Corporation | Method and Apparatus for Providing Wear Leveling to Non-Volatile Memory with Limited Program Cycles Using Flash Translation Layer |
-
2017
- 2017-02-22 US US15/439,779 patent/US20180239697A1/en not_active Abandoned
-
2018
- 2018-01-05 WO PCT/US2018/012541 patent/WO2018156249A1/en active Application Filing
- 2018-01-16 TW TW107101572A patent/TW201841118A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20180239697A1 (en) | 2018-08-23 |
WO2018156249A1 (en) | 2018-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201841118A (zh) | 採用映射記憶體提供多重命名空間的方法及設備 | |
US10331364B2 (en) | Method and apparatus for providing hybrid mode to access SSD drive | |
US20230315290A1 (en) | Namespaces allocation in non-volatile memory devices | |
US20190004964A1 (en) | Memory system for controlling nonvolatile memory | |
TW201818249A (zh) | 操作對多重名稱空間進行管理的儲存裝置的方法 | |
US20170344430A1 (en) | Method and apparatus for data checkpointing and restoration in a storage device | |
US20120005451A1 (en) | Data storage device and bad block managing method thereof | |
JP7010667B2 (ja) | メモリシステムおよび制御方法 | |
KR20170038853A (ko) | 호스트-관리 비휘발성 메모리 | |
WO2017213908A1 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
TW201941197A (zh) | 混合式記憶體系統 | |
US11036427B2 (en) | Using content addressable memory to perform read-modify-write operations in non-volatile random access memory (NVRAM) | |
KR20210115954A (ko) | 컨트롤러 및 메모리 시스템 | |
US11513950B2 (en) | Wear leveling in non-volatile memory | |
US20190146926A1 (en) | Storage device and operating method of storage device | |
US11842082B2 (en) | Storage device including a plurality of zones having separate compression ratios and operating method thereof | |
KR20200076244A (ko) | 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법 | |
JP2022517481A (ja) | 大きいエクステント・プールから小さいエクステント・プールにデータを移行するための方法、システムおよびプログラム | |
US9792042B2 (en) | Systems and methods for set membership matching | |
CN113805792A (zh) | 存储器系统及其操作方法 | |
JP2015088069A (ja) | 情報処理装置、データ転送制御方法及びデータ転送制御プログラム | |
US10922268B2 (en) | Migrating data from a small extent pool to a large extent pool | |
CN116027965A (zh) | 存储装置和电子系统 | |
CN107003811B (zh) | 减少在固态驱动器中输入和输出操作的混杂 | |
US20230236737A1 (en) | Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same |