TWI791647B - 非揮發性記憶體設備中的命名空間分配 - Google Patents
非揮發性記憶體設備中的命名空間分配 Download PDFInfo
- Publication number
- TWI791647B TWI791647B TW107137155A TW107137155A TWI791647B TW I791647 B TWI791647 B TW I791647B TW 107137155 A TW107137155 A TW 107137155A TW 107137155 A TW107137155 A TW 107137155A TW I791647 B TWI791647 B TW I791647B
- Authority
- TW
- Taiwan
- Prior art keywords
- namespace
- block
- blocks
- free
- partial
- Prior art date
Links
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一種電腦儲存設備,具有一主機介面、一控制器、一非揮發性儲存媒體及韌體。該韌體指示該控制器:經由該主機介面接收來自主機的用於分配一定量的非揮發性記憶體的一命名空間的一請求;回應於該請求產生一命名空間映射,該命名空間映射識別:位址的複數個區塊,其具有一相同預定區塊大小;以及位址的一部分區塊,其大小小於預定區塊大小;並且使用該命名空間映射,將自該主機傳送的命名空間中的邏輯位址轉換為該一定量的非揮發性記憶體的實體位址。例如,用於分配命名空間的請求可以根據一NVMe協定。
Description
本發明揭示的至少一些實施例大體上係關於電腦儲存設備,並且更具體地但不限於非揮發性儲存設備中的命名空間分配(namespace allocation)。
典型的電腦儲存設備諸如硬碟機(HDD)、固態硬碟(SSD)及混合式磁碟機具有自主電腦(host computer)接收資料存取請求並執行程式化的運算任務以便以如下方式實施該請求的控制器:可以特定於儲存設備中配置的媒體及結構,諸如在硬碟機中塗覆有磁性材料的剛性旋轉盤、具有固態硬碟中的記憶體單元的積體電路以及混合式磁碟機中的兩者。
標準化邏輯設備介面協定允許主電腦以獨立於儲存設備的特定媒體實施的方式定址電腦儲存設備。
例如,非揮發性記憶體主機控制器介面規範(NVMHCI)、也被稱為NVM Express(NVMe),指定用於經由周邊組件互連高速(PCI Express或PCIe)匯流排存取非揮發性儲存設備的邏輯設備介面協定。
為了有效地實施將在多個命名空間中定義的LBA位址映射到儲存設備中的實體記憶體元件中以及有效地使用儲存設備的儲存容量態樣,本發明提供電腦儲存設備,在電腦儲存設備中實施之方法以及儲存指令的非暫時性電腦儲存媒體,能夠藉由自分配的命名空間中定義的LBA位址到在儲存設備的整個儲存容量上定義的LBA位址的逐區塊映射來解決挑戰。
在第一態樣,提供一種電腦儲存設備,包含:主機介面;控制器;非揮發性儲存媒體;以及韌體,其包含指令,該指令在由該控制器執行時指示該控制器來至少:經由該主機介面接收來自主機的用於分配一定量的非揮發性記憶體的命名空間的請求;回應於該請求產生命名空間映射,該命名空間映射識別:位址的複數個區塊,其具有相同預定區塊大小;以及位址的部分區塊,其大小小於預定區塊大小;並且使用該命名空間映射,將自該主機傳送的命名空間中的邏輯位址轉換為該一定量的非揮發性記憶體的實體位址。
在一實施例中,用於分配該命名空間的請求是根據非揮發性記憶體主機控制器介面規範(NVMHCI)的。
在一實施例中,該電腦儲存設備是固態硬碟。
在第二態樣,提供一種在電腦儲存設備中實施之方法,該方法包含:在與非揮發性記憶體耦接的控制器中接收來自主機的用於建立或保留一定量的非揮發性記憶體的命名空間的請求;回應於該請求,該控制器產生命名空間映射,該命名空間映射識別:位址的複數個區塊,其具有相同預定區塊大小;以及位址的部分區塊,其大小小於該預定區塊大小;並且該控制器使用該命名空間映射將自該主機傳送的命名空間中的邏輯位址轉換為該一定量的非揮發性記憶體的實體位址。
在一實施例中,該請求是根據非揮發性記憶體主機控制器介面規範(NVMHCI)。
在一實施例中,藉由起始單元的識別而在該命名空間映射中表示該複數個區塊中的每個區塊。
在一實施例中,藉由為該命名空間分配的單元的識別及區塊大小而在命名空間映射中表示該部分區塊。
在一實施例中,方法進一步包含:在該電腦儲存設備中維持識別位址的至少一個部分區塊的空閒區塊集區。
在一實施例中,產生該命名空間映射包含:為該命名空間分配該複數個區塊;判定介於為該命名空間請求的非揮發性記憶體的量與該複數個區塊的總大小之間的差值;並且在該空閒區塊集區中搜尋等於或大於該差值的位址的部分區塊。
在一實施例中,產生該命名空間映射進一步包含:回應於判定出該空閒區塊集區具有大小大於該差值的位址的第一部分區塊,來:為該命名空間分配該第一部分區塊的部分;並且更新該空閒區塊集區中的第一部分區塊,以表示並未為該命名空間分配的第一部分區塊的剩餘部分。
在一實施例中,產生該命名空間映射進一步包含:回應於判定出該空閒區塊集區具有大小等於該差值的位址的第一部分區塊,來:自該空閒區塊集區中移除該第一部分區塊;並且為該命名空間分配該第一部分區塊。
在一實施例中,產生該命名空間映射進一步包含:回應於判定出該空閒區塊集區沒有大小等於或大於該差值的位址的部分區塊,來:將具有相同預定區塊大小的位址的第一區塊新增到該空閒區塊集區;為該命名空間分配該第一區塊的部分;並且更新該空閒區塊集區中的第一區塊,以表示並未為該命名空間分配的第一區塊的剩餘部分。
在一實施例中,方法進一步包含:在該控制器中接收來自該主機的用於刪除該命名空間的請求;並且該控制器將在該命名空間中識別的部分區塊新增到該空閒區塊集區。
在一實施例中,方法進一步包含:在該空閒區塊集區中識別連續的空閒部分區塊;並且在該空閒區塊集區中將該連續的空閒部分區塊組合成單個空閒部分區塊。
在一實施例中,方法進一步包含:判定單個空閒部分區塊是否具有預定區塊大小;並且回應於判定出該單個空閒部分區塊具有該預定區塊大小,自該空閒區塊集區中移除該單個空閒部分區塊。
在一實施例中,該空閒區塊集區中的每個區塊由起始單元的識別及區塊大小表示。
在第三態樣,提供一種儲存指令的非暫時性電腦儲存媒體,該指令在由電腦儲存設備的控制器執行時致使該控制器執行方法,該方法包含:在與非揮發性記憶體耦接的控制器中接收來自主機的用於建立或保留一定量的非揮發性記憶體的命名空間的請求;回應於該請求,該控制器產生命名空間映射,其識別:位址的複數個區塊,其具有相同預定區塊大小;以及位址的部分區塊,其大小小於該預定區塊大小;並且該控制器使用該命名空間映射將自該主機傳送的命名空間中的邏輯位址轉換為該一定量的非揮發性記憶體的實體位址。
在一實施例中,藉由起始單元的識別而在該命名空間映射中表示該複數個區塊中的每個;並且藉由起始單元的識別及區塊大小而在該命名空間映射中表示該部分區塊。
在一實施例中,非暫時性電腦儲存媒體進一步包含:在該電腦儲存設備中維持識別位址的至少一個部分區塊的空閒區塊集區,其中產生該命名空間映射包含:分配該複數個區塊;判定介於為該命名空間請求的非揮發性記憶體的量與該複數個區塊的總大小之間的差值;並且在該空閒區塊集區中搜尋等於或大於該差值的位址的部分區塊。
在一實施例中,非暫時性電腦儲存媒體進一步包含:在該控制器中接收來自該主機的用於刪除該命名空間的請求;該控制器將該命名空間中識別的部分區塊新增到該空閒區塊集區;在該空閒區塊集區中識別連續的空閒部分區塊;並且在該空閒區塊集區中將該連續的空閒部分區塊組合成單個空閒的部分區塊。
本文揭示的至少一些實施例提供在儲存設備中實施邏輯儲存分配及管理的有效且靈活的方式。
儲存設備的實體記憶體元件可以被佈置為經由邏輯區塊定址(LBA)而定址的邏輯記憶體區塊。邏輯記憶體區塊是最小的LBA可定址記憶體單元;並且每個LBA位址識別單個邏輯記憶體區塊,該邏輯記憶體區塊可以被映射到儲存設備中的記憶體單元的特定實體位址。
儲存設備的命名空間的概念類似於用於建立邏輯儲存的硬碟機中的分區的概念。儲存設備的不同部分可以被分配給不同的命名空間,並且因此可以具有在它們相應的命名空間內彼此獨立配置的LBA位址。每個命名空間識別經由LBA可定址的儲存設備的一定量的記憶體。可以在不同的命名空間中使用相同的LBA位址來識別儲存設備的不同部分中的不同記憶體單元。例如,在具有n個記憶體單元的儲存設備的第一部分上分配的第一命名空間可以具有範圍自0到n-1的LBA位址;並且在具有m個記憶體單元的儲存設備的第二部分上分配的第二命名空間可以具有範圍自0到m-1的LBA位址。
儲存設備的主電腦可以向儲存設備發送用於建立、刪除或保留命名空間的請求。在將儲存設備的一部分儲存容量分配給命名空間之後,相應命名空間中的LBA位址邏輯上表示儲存媒體中的特定記憶體單元,儘管由命名空間中的LBA位址邏輯地表示的特定記憶體單元可以在不同的時間實例下實體地對應於不同的記憶體單元(例如,如在SSD中)。
在有效地實施將在多個命名空間中定義的LBA位址映射到儲存設備中的實體記憶體元件中以及有效地使用儲存設備的儲存容量態樣存在挑戰,特別是當期望在儲存設備上動態地分配、刪除及進一步分配具有不同、變化的大小的多個命名空間時。例如,分配給已刪除命名空間的儲存容量的部分可能不足以容納大小上大於已刪除命名空間的後續命名空間的分配;並且分配及刪除的重複循環可能導致儲存容量的碎片化(fragmentation),這可能導致LBA位址到實體位址的低效映射及/或儲存設備的成碎片的儲存容量的低效使用。
本文揭示的本發明的至少一些實施例藉由自分配的命名空間中定義的LBA位址到在儲存設備的整個儲存容量上定義的LBA位址的逐區塊映射來解決挑戰。在將分配的命名空間中定義的LBA位址映射到在儲存設備的整個儲存容量上定義的LBA位址之後,可以以獨立於設備上的命名空間的分配的方式將在儲存設備的整個儲存容量上定義的對應LBA位址進一步映射到實體儲存元件。當LBA位址的逐區塊映射基於預定大小的區塊大小時,可以使用有效的資料結構而自分配的命名空間中定義的LBA位址有效地運算在儲存設備的整個儲存容量上定義的LBA位址。
例如,為了命名空間管理的靈活性及效率,可以根據預定區塊大小將儲存設備的整個儲存容量劃分為LBA位址的區塊。區塊大小表示區塊中的LBA位址的數量。預定區塊大小的區塊在下文中可稱為L區塊、完整L區塊、完整LBA區塊、LBA區塊、或有時簡稱為完整區塊或區塊。自分配的命名空間中定義的LBA位址到在儲存設備的整個儲存容量上定義的LBA位址的逐區塊命名空間映射允許將在整個儲存上定義的非連續LBA位址分配給命名空間,這可以減少由命名空間分配及刪除的循環引起的儲存容量的碎片,並且提高儲存容量的使用效率。
較佳地,L區塊的區塊大小是預定並且是二(2)的冪,以簡化L區塊的位址映射中涉及的運算。在其他情況下,可以使用人工智能技術,藉由自儲存設備及/或其他類似使用的儲存設備中的命名空間使用歷程中的機器學習來預測或計算最佳化後的區塊大小。
為了提高L區塊的使用效率,這裡揭示的一個實施例包括用於識別作為完整區塊的一部分的部分區塊的資料結構,使得可以以一個或多個完整區塊及一個部分區塊的形式分配具有不是區塊大小的倍數的大小的命名空間,以平衡LBA位址映射計算的效率及儲存使用效率。
圖 1
展示可以實施本文揭示的發明的實施例的電腦系統。
在圖 1
中,主機(101)經由具有預定協定通信通道與儲存設備(103)通信。主機(101)可以是具有一個或多個中央處理單元(CPU)的電腦,電腦周邊設備(諸如儲存設備(103))可以經由諸如電腦匯流排的互連(例如,周邊組件互連(PCI)、PCI擴展(PCI-X)、PCI Express(PCIe))、通信部分及/或電腦網路而附接到該主機(101)。
電腦儲存設備(103)可用於儲存主機(101)的資料。電腦儲存設備的實例通常包括硬碟機(HDD)、固態硬碟(SSD)、快閃記憶體、動態隨機存取記憶體、磁帶、網路附加儲存設備等。儲存設備(103)具有主機介面(105),其使用通信通道實施與主機(101)的通信。例如,在一個實施例中,主機(101)及儲存設備(103)之間的通信通道是PCIe匯流排;並且主機(101)及儲存設備(103)使用NVMe協定相互通信。
在一些實施方式中,主機(101)與儲存設備(103)之間的通信通道包括電腦網路,諸如區域網路、無線區域網路、無線個人區域網路、蜂巢式通信網路、寬頻高速始終連接的無線通信連接(例如,當前或下一代行動網路鏈路);並且主機(101)及儲存設備(103)可以被配置為使用類似於NVMe協定中的彼等的資料儲存管理及使用命令而相互通信。
儲存設備(103)具有控制器(107),其運行韌體(104)以回應於來自主機(101)的通信執行操作。韌體通常是一種電腦程式,其提供對工程運算設備的控制、監視及資料操縱。在圖 1
中,韌體(104)在操作儲存設備(103)時控制控制器(107)的操作,諸如用於儲存及存取儲存設備(103)中的資料的命名空間的分配,如下面進一步討論的。
儲存設備(103)具有非揮發性儲存媒體(109),諸如塗覆在剛性碟上的磁性材料,以及積體電路中的記憶體單元。儲存媒體(109)是非揮發性的,這是因為不需要電力來維持儲存在非揮發性儲存媒體(109)中的資料/資訊,在非揮發性儲存媒體(109)斷電並且然後再次通電之後可以檢索該資料/資訊。記憶體單元可以使用各種記憶體/儲存技術來實施,諸如基於NAND閘的快閃記憶體、相變記憶體(PCM)、磁記憶體(MRAM)、電阻式橢機存取記憶體及3D XPoint,使得儲存媒體(109)是非揮發性的並且可以保持儲存在其中的資料長達數天、數月及/或數年而無需電力。
儲存設備(103)包括揮發性動態隨機存取記憶體(DRAM) (106),用於儲存運行時資料(run-time data)及由控制器(107)使用的指令,以改善控制器(107)的運算性能及/或為在主機(101)及非揮發性儲存媒體(109)之間傳輸的資料提供緩衝區。DRAM (106)是揮發性的,這是因為它需要電力來維持儲存在其中的資料/資訊,當電力中斷時,此等資料/資訊立即或快速地丟失。
揮發性DRAM (106)典型地具有比非揮發性儲存媒體(109)更少的延遲,但是在移除電力時快速丟失其資料。因此,有利的是使用揮發性DRAM (106)將用於控制器(107)的指令及資料臨時儲存在其當前運算任務中以提高性能。在某些情況下,使用揮發性靜態隨機存取記憶體(SRAM)來代替揮發性DRAM (106),該SRAM在一些應用中使用比記憶體更少的電力。當非揮發性儲存媒體(109)具有堪比揮發性DRAM (106)的資料存取性能(例如,等待時間、讀/寫速度)時,可以排除揮發性DRAM (106);並且控制器(107)可以藉由在非揮發性儲存媒體(109)上操作指令及資料而不是在揮發性DRAM (106)上操作指令及資料來執行運算。
例如,交叉點儲存及記憶體設備(例如,3D XPoint記憶體)具有堪比揮發性DRAM (106)的資料存取性能。交叉點記憶體設備使用無晶體管記憶體元件,每個無晶體管記憶體元件具有在一起堆疊為列的記憶體單元及選擇器。記憶體元件列經由兩個垂直的導線層連接,其中一個層位於記憶體元件列上方,而另一個層位於記憶體元件列下方。每個記憶體元件可以在兩個層中的每個層上的一條導線的交叉點處獨立地選擇。交叉點記憶體設備是快速且非揮發性的,並且可以用作用於處理及儲存的統一記憶體集區。
在一些情況下,控制器(107)具有處理器內高速緩衝記憶體,其具有比揮發性DRAM (106)及/或非揮發性儲存媒體(109)更好的資料存取性能。因此,較佳地在控制器(107)的運算操作期間將當前運算任務中使用的指令及資料的部分快取在控制器(107)的處理器內高速緩衝記憶體中。在某些情況下,控制器(107)具有多個處理器,每個處理器具有其自己的處理器內高速緩衝記憶體。
可選地,控制器(107)使用在儲存設備(103)中組織的資料及/或指令來執行資料密集的記憶體內處理。例如,回應於來自主機(101)的請求,控制器(107)對儲存在儲存設備(103)中的資料的集合執行實時分析,並將減少的資料集作為回應傳送給主機(101)。例如,在一些應用中,儲存設備(103)連接到實時感測器以儲存感測器輸入;並且控制器(107)的處理器被配置為基於感測器輸入執行機器學習及/或模式識別,以支援至少部分地經由儲存設備(103)及/或主機(101)實施的人工智能(AI)系統。
在一些實施方式中,控制器(107)的處理器與電腦芯片製造中的記憶體(例如,106或109)積體以使能在記憶體中的處理,並且因此克服由於以下原因而限制運算性能的馮諾依曼瓶頸:根據馮諾依曼架構單獨配置的處理器及記憶體之間的資料移動的延遲引起的吞吐量限制。處理及記憶體的積體提高處理速度及記憶體傳輸速率,並減少延遲及電力使用。
儲存設備(103)可以用在各種運算系統中,諸如雲端運算系統、邊緣運算系統、霧運算系統及/或獨立電腦。在雲端運算系統中,遠端電腦服務器連接在網路中以儲存、管理及處理資料。邊緣運算系統藉由在靠近資料源的電腦網路的邊緣處執行資料處理來最佳化雲端運算,並且因此減少與集中服務器及/或資料儲存的資料通信。霧運算系統使用一個或多個終端用戶設備或近用戶邊緣設備來儲存資料,並且因此減少或消除將資料儲存在集中式資料倉庫中的需要。
可以使用由控制器(107)執行的電腦指令來實施本文揭示的本發明的至少一些實施例,諸如韌體(104)。在某些情況下,硬體電路可用於實施韌體(104)的至少一些功能。韌體(104)可以最初儲存在非揮發性儲存媒體(109)或另一個非揮發性設備中,並載入到揮發性DRAM(106)及/或處理器內高速緩衝記憶體中以由控制器執行(107)。
例如,韌體(104)可以被配置為使用下面討論的技術來管理命名空間。然而,下面討論的技術不限於用在圖 1
的電腦系統及/或上面討論的實例中。
圖 2
展示根據所請求的命名空間的大小直接分配多個命名空間的實例。
例如,圖 2
的方法可以在圖1中展示的儲存設備(103)中實施。儲存設備(103)的非揮發性儲存媒體(109)具有可以由LBA位址的範圍(222、224、...)識別的記憶體單元,其中該範圍對應於非揮發性儲存媒體(109)的記憶體容量(220)。
在圖 2
中,命名空間(221、223)直接自容量(220)的連續可用區域分配。當刪除先前分配的命名空間(221、223)之一時,可空閒地分配給另一個命名空間的剩餘容量(220)可能變得碎片化,這限制用於選擇後續新命名空間的大小的選項。
例如,當刪除圖 2
中展示的命名空間(221)並且命名空間(223)仍然在如圖 2
中展示的區域中被分配時,使容量(220)的空閒部分成碎片,將後續新命名空間的大小的選擇限制為與命名空間(221)的大小相同或小於命名空間(221)的大小。
為了提高動態命名空間管理的靈活性並支援建立及刪除不同大小的命名空間的迭代,可以使用邏輯位址的逐區塊(block-wise)映射/分配,如下面進一步討論的。
圖 3
展示經由映射邏輯位址的區塊來分配命名空間的實例。
在圖 3
中,儲存設備(103)的容量(220)被劃分成L區塊或在儲存設備(103)的整個容量上定義的LBA位址的區塊(231、233、...、237、239)。為了提高位址映射的效率,L區塊(231、233、...、237、239)被設計成具有相同的大小(133)。較佳地,區塊大小(133)是二(2)的冪,使得涉及區塊大小(133)的除法、模及乘法的操作可以經由移位操作有效地執行。
在將容量(220)劃分為圖 3
中展示的L區塊(231、233、...、237、239)之後,命名空間(例如,221或223)的分配不必來自容量(220)的連續區域。可以自命名空間(例如,221或223)分配來自容量(220)的非連續區域的L區塊(231、233、...、237、239)的集合。因此,消除或減少碎片對建立新命名空間中的大小可用性的影響,該影響可能由於刪除所選的先前建立的命名空間而產生。
例如,容量(220)中的非連續L區塊(233及237)可以藉由逐區塊映射分配給命名空間(221)的連續區域(241及243);並且容量(220)中的非連續L區塊(231及239)可以經由逐區塊映射分配給命名空間(223)的連續區域(245及247)。
當區塊大小(133)減小時,系統在動態命名空間管理中的靈活性增加。然而,減小的區塊大小(133)也增加要映射的區塊的數量,這降低位址映射中的運算效率。最佳區塊大小(133)平衡靈活性及效率之間的權衡;並且可以為特定運算環境中的給定儲存設備(103)的特定用途而選擇特定區塊大小(133)。
圖 4
展示用於命名空間映射的資料結構的實例。
例如,圖 4
的命名空間映射的資料結構可用於實施圖 3
中展示的逐區塊位址映射。圖 4
的資料結構在記憶體佔用態樣是精益的並且運算效率最佳。
在圖 4
中,命名空間映射(273)儲存L區塊(例如,231、233、...、237、239)的識別的陣列,此等區塊已被分配給命名空間資訊(271)中識別的命名空間(例如,221、223)的集合。
在命名空間映射(273)的陣列中,為每個命名空間(281、283、285或287)分配的L區塊(301、…、302;303、…、304;305、… 308;或309、…、310)的識別儲存在陣列的連續區域中。因此,除了陣列中的區塊識別的起始位址(291、293、295及297)的識別之外,可以告知為不同命名空間(281、283、285及287)分配的L區塊(301、…、302;303、…、304;305、… 308;及309、…、310)的識別的部分。
可選地,針對命名空間(281、283、285或287)中的每個,命名空間資訊(271)識別為相應命名空間(281、283、285或287)分配的L區塊(301、…、302;303、…、304;305、… 308;或309、…、310)在容量(220)中的邏輯位址上是否是連續的。
例如,當容量(220)被劃分為80個區塊時,L區塊可以被識別為L區塊0到79。由於連續區塊0到19 (301及302)被分配給命名空間1(281),因此命名空間1 (281)的連續指示符(292)具有以下值,該值指展示:經由自命名空間映射(273)的陣列中的起始位址(291)開始的區塊識別符所識別的L區塊的序列佔用邏輯位址空間/容量(220)中的連續區域。
類似地,為命名空間2 (283)分配的L區塊41至53 (303及304)是連續的;並且因此,命名空間2 (283)的連續指示符(294)具有以下值,該值指展示:經由自命名空間映射(273)的陣列中的起始位址(293)開始的區塊識別符所識別的L區塊的清單處於邏輯位址空間/容量(220)中的連續區域中。
類似地,為命名空間4 (287)分配的L區塊54至69 (309及310)是連續的;並且因此,命名空間4 (287)的連續指示符(298)具有以下值,該值指展示:經由自命名空間映射(273)的陣列中的起始位址(297)開始的區塊識別符所識別的區塊的清單佔用邏輯位址容量(220)中的連續區域。較佳的,但不是必需的,為命名空間分配的L區塊處於映射的邏輯位址空間/容量(220)中的連續區域中。
圖 4
展示為命名空間3(285)分配的區塊22、25、30及31 (305、306、307及308)是非連續的;並且命名空間3 (285)的連續指示符(296)具有以下值,該值指展示:經由自命名空間映射(273)的陣列中的起始位址(295)開始的區塊識別符所識別的區塊的清單是自映射的邏輯位址空間/容量(220)中的非連續區域分配。
在一些情況下,儲存設備(103)可以分配至多預定數量的命名空間。空位址可以用作尚未分配的命名空間的起始位址。因此,命名空間資訊(271)具有預定資料大小,其是允許在儲存設備(103)上分配的預定數量的命名空間的函數。
可選地,資料結構包括空閒清單(275),其具有儲存尚未分配給命名空間資訊(271)中識別的任何分配的命名空間(281、283、285、287)的L區塊(321-325、...、326-327、...、328-329、...、330)的識別符的陣列。
在一些情況下,空閒清單(275)中的L區塊(321-330)的識別符的清單被附加到當前分配給命名空間資訊(271)中識別的命名空間(281、283、285、287)的L區塊(301-310)的識別符的清單的末尾。可以將空閒區塊起始位址字段新增到命名空間資訊(271)以識別位於空閒清單(275)中的L區塊(321-330)的識別符的清單的開始。因此,命名空間映射(273)具有與容量(220)上的L區塊的總數相對應的預定大小的陣列。
圖 5
展示用於轉譯非揮發性記憶體設備中的位址以支援命名空間管理的系統。例如,圖 5
的系統可以使用圖 1
中展示的儲存設備(103)、圖 3
中展示的邏輯位址映射技術以及類似於圖 4
中展示的資料結構來實施。
在圖 5
中,管理管理器(225)、資料管理器(227)(或稱為I/O管理器)及本端管理器(229)被實施為儲存設備(例如,圖 1
中展示的103)的韌體(例如,104)的部分。
管理管理器(225)自主機(例如,圖 1
中的101)接收用於建立(261)、刪除(263)或改變(265)命名空間(例如,221或223)的命令(例如,261、263、265)。作為回應,管理管理器(225)產生/更新命名空間映射(255)諸如命名空間映射(273)以實施圖 2
或圖 9
中展示的映射。可以改變命名空間(例如,221或223)以擴展或縮小其大小(例如,藉由為命名空間分配更多區塊,或將其區塊中的一些返回到空閒區塊集區)。
資料管理器(227)接收資料存取命令。來自主機(例如,圖 1
中的101)的資料存取請求(例如,讀取、寫入)識別命名空間ID (251)及命名空間ID (251)中的LBA位址(253)以讀取、寫入或擦除來自由空閒命名空間ID (251)及LBA位址(253)識別的記憶體單元的資料。使用命名空間映射(255),資料管理器(227)將命名空間ID (251)及LBA位址(253)的組合轉換為對應的L區塊(例如,231、233、...、237、239)中的映射的邏輯位址(257)。
本端管理器(229)將映射的邏輯位址(257)轉譯為實體位址(259)。L區塊(例如,231、233、...、237、239)中的邏輯位址可以映射到儲存媒體(例如,圖 1
中的109)中的實體位址(259),就如同映射的邏輯位址(257)被虛擬地分配給覆蓋整個非揮發性儲存媒體(109)的虛擬命名空間。
因此,可以看到命名空間映射(255)用作在儲存設備(103)上建立/分配的命名空間(221、223)的當前集合中定義的邏輯位址到虛擬命名空間上定義的映射的邏輯位址(257)的逐區塊映射。由於虛擬命名空間在當前分配的命名空間(221、223)的當前集合改變時不改變,因此當前命名空間(221、223)的細節在將映射的邏輯位址(例如,257)轉譯成實體位址(例如,259)時完全擺脫本端管理器(229)。
較佳地,命名空間映射(255)的實施在記憶體佔用態樣是精益的並且運算效率最佳(例如,使用類似圖 4
中展示的資料結構)。
在某些情況下,儲存設備(103)可以不具有為期望的區塊大小(133)的倍數的儲存容量(220)。此外,所請求的命名空間大小可以不是期望的區塊大小(133)的倍數。管理管理器(225)可以偵測期望的區塊大小(133)與儲存容量(220)的未對準及/或所請求的命名空間大小與期望的區塊大小(133)的未對準,從而導致用戶調整期望的區塊大小(133)及/或所請求的命名空間大小。替代地或組合地,管理管理器(225)可以將完整區塊分配給未對準的命名空間的部分及/或不使用所分配的完整區塊的剩餘部分。
圖 6
展示基於邏輯位址的區塊的管理命名空間的方法。例如,圖 6
的方法可以使用上面結合圖 3
至圖 6
討論的L區塊技術在圖 1
中展示的儲存設備(103)中實施。
在圖 6
中,該方法包括:根據預定區塊大小(133)將非揮發性儲存媒體(例如,109)的連續邏輯位址容量(220)劃分為區塊(例如,231、233、...、237、239) (341),並維持具有識別空閒區塊(例如,312-330)及分配給使用中的命名空間(281-285)的區塊(例如,301-310)的內容的資料結構(例如,圖 4
中展示的)(343)。
回應於接收被判定為建立新命名空間(347)的請求(345),該方法進一步包括將多個空閒區塊分配給命名空間(349)。
回應於接收被判定為刪除現有命名空間(347)的請求(345),該方法進一步包括將先前分配給命名空間的區塊作為空閒區塊返回到空閒區塊清單(275) (351)。
回應於建立或刪除命名空間的請求,該方法進一步包括更新資料結構的內容(353)以識別當前可用的空閒區塊(例如,312-330)及分配給當前存在的命名空間(281-285)的區塊(例如,301- 310)。
回應於接收存取特定命名空間中的邏輯位址的請求(355),該方法進一步包括使用資料結構的內容將邏輯位址轉譯成實體位址(357)。
例如,圖 1
中展示的儲存設備(103)具有:主機介面(105);控制器(107);非揮發性儲存媒體(109);包含指令的韌體(104),該指令在由控制器(107)執行時指示控制器(107)至少:儲存邏輯位址的區塊大小(133);根據區塊大小(133)將非揮發性儲存媒體(109)的邏輯位址容量(220)劃分為L區塊(例如,231、233、...、237、239);並維持資料結構以識別:可用於分配給新命名空間的L區塊的空閒子集(例如,L區塊312-330);以及已分配給現有命名空間的L區塊(例如,L區塊301-310)的分配的子集。較佳地,區塊大小(133)是二的冪。
例如,電腦儲存設備(103)可以是固態硬碟,其根據用於命名空間管理及/或存取的非揮發性記憶體主機控制器介面規範(Non-Volatile Memory Host Controller Interface Specification,NVMHCI)與主機(101)通信。
在主機介面(105)接收到來自主機(101)的用於分配一定量的非揮發性記憶體的特定命名空間(221)的請求之後,執行韌體(104)的控制器(107)分配自空閒子集到特定命名空間(221)的區塊(233及237)的集合並更新資料結構的內容。被分配給特定命名空間(221)的區塊(233及237)的集合不必在邏輯位址容量(220)中是連續的,這提高動態命名空間管理的靈活性。
使用資料結構的內容,執行韌體(104)的控制器(107)將在第一命名空間中定義的邏輯位址轉譯成映射的邏輯位址(257),並且然後轉換為用於非揮發性儲存媒體(109)的實體位址(259)。
在主機介面(105)自主機(101)接收到刪除(263)特定命名空間(221)的請求之後,執行韌體(104)的控制器(107)更新資料結構的內容以將分配給特定命名空間(221)的區塊(233及237)的集合自資料結構中的分配的子集(例如,273)返回到資料結構中的空閒子集(例如,275)。
較佳地,資料結構包括分配的子集中的區塊(301-310)的識別的陣列及指向該陣列的部分(301-302、303-304、305-308、309-310)的指針(291、293、295、297),該陣列包含被分配給現有命名空間(281、283、285、287)中的相應一個的區塊(301-310)的識別的對應集合。
可選地,資料結構進一步包括用於現有命名空間(281、283、285、287)中的相應一個的指示符(292、294、296、298)的集合,其中指示符(292、294、296、298)中的每個指展示分配給現有命名空間(281、283、285、287)中的對應一個的區塊(301-302、303-304、305-308、209-310)的識別的相應集合在邏輯位址容量(220)或空間中是否是連續的。
可選地,資料結構包括空閒子集中的空閒區塊(321-330)的識別的陣列。
邏輯位址容量(220)不必是區塊大小(133)的倍數。當邏輯位址容量(220)不是區塊大小(133)的倍數時,可以不使用不足以成為全尺寸(full-size)的區塊的L區塊(例如,239)。
為命名空間(例如,221)的建立(261)請求的非揮發性記憶體的量不必是區塊大小(133)的倍數。當該量不是區塊大小的倍數(133)時,可能無法充分利用分配給命名空間的完整區塊之一。
圖 7
展示命名空間未與區塊邊界對齊並且可以使用圖 8
至圖 11
的技術來實施的實例圖。
當主機(例如,圖 1
中的101)請求建立或保留具有所請求的命名空間大小(131)的命名空間(111)時,控制器(例如,圖1中的107)分配其非揮發性儲存媒體(例如,圖 1
中的109)的部分以經由命名空間(111)下的LBA位址被定址。
在圖 7
中展示的場景中,所請求的命名空間大小(131)不是區塊大小的倍數(133)。結果,若表示位於命名空間(111)中的記憶體單元的命名空間(111)中的第一LBA位址與L區塊(例如,121)的第一LBA位址對齊(例如,映射到該L區塊的第一LBA位址),則命名空間(111)中的最後一個LBA位址不能與L區塊(例如,123)的最後一個LBA位址對齊(例如,不能映射到該L區塊的最後一個LBA位址),如圖 7
中展示的。因此,命名空間(111)不與L區塊的邊界對齊以為了分配。由於所請求的命名空間大小(131)不是區塊大小(133)的倍數,因此所請求的命名空間大小(131)最好由複數個完整區塊(121、...、123)及完整區塊(127)的部分(113)滿足。該部分(113)也稱為部分區塊(113)。
在圖 7
中,為命名空間(111)分配完整區塊(127)的部分(113)(或部分區塊(113));並且沒有為命名空間(111)分配完整區塊(127)的剩餘部分(115) (或部分區塊(115))。剩餘部分(115)或其一部分可以隨後分配給另一個也需要部分區塊的命名空間。不同的命名空間可以使用完整區塊(127)的不同部分(例如,113、115)。
圖 8
展示用於實施未與區塊邊界對齊的命名空間的命名空間映射的實例方塊圖。
在圖 8
中,命名空間映射(135)連結到命名空間(111)以識別為命名空間(111)分配的LBA位址的區塊。用於識別兩個項的關聯性的任何技術可用於將命名空間映射(135)連結到命名空間(111)。例如,命名空間映射(135)的識別符可以與命名空間(111)的識別符相關聯地儲存,以連結命名空間映射(135)及命名空間(111)。例如,與已分配命名空間的清單對應的指針的清單可用於識別命名空間映射的資料結構的起始記憶體位置,以將命名空間映射與其命名空間連結。L區塊(例如,(121、...、123))中的位址可以藉由韌體(104)的單獨層(例如,用於固態硬碟(SSD)的快閃轉譯層(FTL))而進一步轉譯成實體儲存位置的對應位址。
命名空間映射(135)包括為命名空間(111)分配的完整區塊(121、...、123)的識別符(141、...、143)及為命名空間(111)分配的部分區塊(113)的識別符(147)。
由於完整區塊(121、...、123)具有相同的預定區塊大小(133),因此可以使用完整區塊(121、...、123)的起始單元(或結束單元)的識別符的陣列或清單來識別完整區塊識別符(141、...、143)的清單。這種佈置簡化命名空間映射(135)並使能有效的位址轉譯。然而,部分區塊(113)不能以這種方式表示。
圖 9
展示可用於實施圖 8
的命名空間映射的實例性部分區塊識別符。
在圖 9
中,部分區塊識別符(151)包括起始單元識別符(153)及區塊(chunk)大小(155)。起始單元識別符(153)是由部分區塊識別符(151)表示的部分區塊(例如,113或115)中的第一邏輯記憶體單元的識別符。當在記憶體單元的區塊上分配部分區塊(113)時,區塊大小(155)表示分配給部分區塊(113)的記憶體單元的量。因此,可以將區塊大小(155)新增到起始單元識別符(153)以運算結束單元識別符,該結束單元識別符是由部分區塊識別符(151)表示的部分區塊(例如,113或115)中的最後一個單元。組合地,部分區塊識別符(151)識別完整區塊(例如,127)的唯一部分(例如,113或115)。當區塊大小(155)等於區塊大小(133)時,部分區塊識別符(151)實際上表示完整區塊。因此,可以使用部分區塊識別符(151)來表示完整區塊(其可以隨後被劃分為複數個部分區塊(例如,113或115);並且可以將複數個連續的部分區塊(例如,113或115)組合成完整的區塊(例如,127)。
例如,具有指定部分區塊(113)的區塊大小(155)及起始單元識別符(153)的對應資料的部分區塊識別符(151)可以用作圖 8
的命名空間映射(135)中的部分區塊識別符(147)以表示為命名空間(111)分配的圖 7
中的部分區塊(113)。
例如,具有指定部分區塊(115)的區塊大小(155)及起始單元識別符(153)的對應資料的部分區塊識別符(151)可用於表示空閒的並且可用於分配給另一個命名空間的圖 7
中的未分配的部分區塊(115)。未分配的部分區塊(例如,115)的連結表可用於追蹤空閒部分區塊的集區。
替代地,可以用對應的部分區塊的結束單元識別符替換部分區塊識別符(151)中的區塊大小(155)。部分區塊識別符(151)也可以由區塊大小(155)及結束單元識別符的組合等效地表示。
由韌體(104)程式化的控制器(107)儲存資料(例如,在揮發性DRAM (106)及/或非揮發性儲存媒體(109)中)以使用如圖 10
中展示的部分區塊的連結表來追蹤空閒區塊集區。
較佳地,每個命名空間映射(135)使用不多於一個的部分區塊(113)來進行有效的位址轉譯。然而,在一些實例中,當沒有單個空閒部分區塊(例如,113)來滿足請求時,命名空間映射(例如,135)可以包括多個部分區塊(例如,113)。
圖 10
展示使用圖 8
的技術來管理可用於命名空間分配的空閒區塊集區的實例資料結構。
空閒區塊集區(160)的資料結構包括空閒區塊(161、163、...、165)的識別符。
在一個實施方式中,空閒區塊集區(160)用於追蹤可以分配給新命名空間的可用空閒部分區塊(例如,115)。可以使用圖 9
中展示及/或結合圖 9
討論的部分區塊識別符(151)來識別空閒區塊(161、163、...、165)中的每個。
在一些實施方式中,空閒區塊集區(160)進一步可選地追蹤可用的空閒完整區塊(161、163、...、165),其中使用圖 9
中展示的部分區塊識別符(151)的資料結構方便地表示每個完整區塊,其中區塊大小(155)等於區塊大小(133)。
在其他實施方式中,空閒區塊集區(160)以類似於在命名空間映射(135)中使用的完整區塊識別符的清單的方式使用完整區塊識別符的清單來追蹤可用的空閒完整區塊(161、163、...、165),其中考慮到完整區塊的已知的、統一的區塊大小(133),每個完整區塊識別符由代表性單元識別符(例如,起始單元或結束單元)表示。
管理管理器(225)可以使用上面結合圖 7
至圖 10
討論的部分區塊識別技術來有效地處理所請求的命名空間大小(131)及/或容量(220)與區塊大小(133)的不匹配,其具有增加的靈活性及對位址轉譯性能的最小影響,如圖 11
中展示的。
圖 11
展示使用部分區塊來分配命名空間的實例。
例如,圖 11
的技術可以用於使用圖 8
至圖 10
的部分區塊識別技術來促進圖 1
中展示的儲存設備(103)上的動態命名空間管理。
在圖 11
中,非揮發性儲存媒體(109)的儲存容量(220)被劃分為相同大小的LBA位址的區塊(L區塊)(231、233、...、237)(例如,圖 7
中展示的133),除了最後一個區塊(239)的大小小於預定區塊大小(133)之外。在圖 11
中,管理管理器(225)可以虛擬地擴展最後一個區塊(239)以包括虛擬容量(249),使得最後一個區塊(239)也可以被視為具有相同的大小(133)。然而,由於虛擬容量(249)不可用於分配給任何命名空間,因此管理管理器(225)將最後一個區塊(239)的空閒部分放在空閒區塊集區(160)中作為可用的部分區塊(例如,由圖 9
的部分區塊識別符(151)表示,就如同虛擬容量(249)的部分已經被分配給現有命名空間)。
較佳地,區塊大小(133)是二的冪,這有利於最佳化涉及區塊大小的運算(133)。例如,當區塊大小(133)是二的冪時,可以經由移位操作簡化涉及區塊大小(133)的除法、模及/或乘法的操作。
L區塊(231、233、...、237、239)中的邏輯位址可以被轉譯成非揮發性儲存媒體(109)的實體位址,而與命名空間(例如,221、223)的分配無關(例如,藉由被配置為固態硬碟(SSD)的儲存設備(103)的韌體(104)的快閃轉譯層)。
利用可能的部分區塊(239)將儲存容量(220)劃分為(L區塊)(231、233、...、237)允許在區塊級別處的命名空間的動態管理。在命名空間(例如,221、223)中定義的邏輯位址被映射到在容量(220)上定義的L區塊(231、233、237、239),使得命名空間實施細節擺脫自L區塊(231、233、237、239)中的映射的邏輯位址(257)到非揮發性儲存媒體(109)的實體位址(259)的轉譯。
例如,命名空間A (221)中的邏輯位址的全尺寸的區塊(241)被線性地映射到一個L區塊(233)中的映射的邏輯位址(257)。類似地,命名空間B (221)中的邏輯位址的全尺寸的區塊(245)被線性地映射到另一個L區塊(231)中的映射的邏輯位址(257)。邏輯位址的逐區塊映射提高位址轉譯的效率。
當命名空間(221、223)的大小不是區塊大小(133)的倍數時,命名空間(221、223)的部分(243、247)可以如圖 7
至圖 11
中展示的方式被映射到一個或多個完整區塊(例如,237)的部分區塊。可以修改圖 4
的資料結構以包括分配給命名空間(221)的部分L區塊(113)的部分區塊識別符(147),該命名空間(221)具有小於預定區塊大小(133)的最後部分(例如,243),並包括空閒部分區塊的清單。
藉由維持命名空間映射(例如,圖 8
中展示的135、圖 4
中展示的273,其可被進一步修改以包括部分區塊識別符)及空閒區塊集區(例如,圖 10
中展示的160、圖 4
中展示的275,其可以被進一步修改以包括部分區塊識別符),儲存設備(103)的控制器(107)允許命名空間的動態管理,其中命名空間可以在需要時被建立/分配、在不再使用時被刪除及/或被調整大小,其中減少或消除碎片影響。自命名空間(例如,221、223)中的邏輯位址到用於轉譯成實體位址的邏輯位址的映射可以回應於來自主機(101)的命令來動態調整以建立/分配命名空間、刪除命名空間及/或調整命名空間大小(例如,縮小或擴大)。
可選地,當主機(101)請求具有未與區塊邊界對齊的大小的命名空間(例如,111、221或223)時,可以提示主機(101)修改命名空間(例如,111、221或223)的大小以用於與區塊邊界對齊。
圖 12
展示根據一個實施例的在儲存設備上分配命名空間的方法。
例如,可以經由藉由儲存設備(103)的控制器(107)執行韌體(104)來實施圖 12
的方法。
該方法包括接收為具有所請求的命名空間大小(131)的命名空間(111)分配儲存設備(103)的非揮發性儲存媒體(109)的部分的請求(201),該所請求的命名空間大小(131)可以是或者可以不是儲存設備(103)上的完整L區塊的大小(133)的倍數。
回應於該請求,該方法進一步包括將一個或多個完整空閒L區塊(121、...、及/或123)分配給命名空間(111),直到介於所請求的命名空間(131)大小與分配的一個或多個完整空閒L區塊(121、...、及/或123)之間的差值小於完整L區塊(例如,121、......、123或127)的大小(133)為止(203)。
當差值小於完整區塊大小(133)時,該方法進一步包括搜尋空閒區塊集區(160)以尋找具有等於或大於差值(113)的總可用大小的一個或多個空閒部分區塊(161、163、165)(205)。較佳地,針對差值使用不超過一個部分區塊。
若找到具有等於或大於差值(113)的可用儲存容量的總大小的一個或多個空閒部分區塊(例如,161) (207),則該方法進一步包括分配來自一個或多個空閒部分區塊(例如,161)的差值(113) (209)。若可用儲存容量大於差值(113),則剩餘的未分配的一個或多個部分區塊是空閒的並保留在集區(160)中。若可用儲存容量等於差值,則一個或多個空閒部分區塊(例如,161)的全部被分配給命名空間(111),並且因此自空閒區塊集區(160)中移除。
若未找到具有等於或大於差值的可用儲存容量的總大小的一個或多個空閒部分區塊(207),則該方法進一步包括:識別完整空閒區塊(例如,127) (211);自識別的完整空閒區塊(例如,127)分配差值(113)(213);將識別的完整空閒區塊的剩餘部分區塊(115)新增到集區(160) (215)。
在一些實施方式中,當沒有可用的完整空閒區塊來成功執行識別針對差值的完整空閒區塊(211)的操作時,該方法可以報告錯誤或警告,及/或嘗試使用多於一個的空閒部分區塊(例如,161及163)來滿足差值。
當刪除命名空間(111)時,為命名空間(111)分配的部分區塊(113)被釋放並被新增到空閒區塊集區(160);並且為命名空間(111)分配的完整區塊(121、...、123)也被釋放,並變得可用於分配給其他命名空間。韌體(104)的常式偵測並組合連續的空閒部分區塊(例如,113及115)以減少集區(160)中的部分空閒區塊的數量。當集區(160)中的部分空閒區塊(例如,113及115)被組合成完整空閒區塊(127)時,部分空閒區塊(例如,113及115)被轉換為空閒區塊表示(例如,由代表性單元諸如起始或結束單元的識別表示)。
例如,一個實施例的電腦儲存設備(103)包括:主機介面(105);控制器(107);以及非揮發性儲存媒體(109)。電腦儲存設備(103)具有包含指令的韌體(104),該指令(104)在由控制器(107)執行時指示控制器(107)至少:經由主機介面(105)自主機(101)接收用於分配非揮發性記憶體的所請求的命名空間大小(131)的命名空間(111)的請求;回應於該請求,產生識別複數個L區塊(121、...、123)的命名空間映射(135),每個L區塊具有相同的預定區塊大小(133),並且部分L區塊(113)的大小小於預定區塊大小(133);並且,使用命名空間映射(135)將自主機(101)傳送的命名空間(111)中的邏輯位址轉換為針對一定量的非揮發性記憶體的實體位址(259)。
例如,可以使用符合非揮發性記憶體主機控制器介面規範(NVMHCI)或NVMe的協定來進行用於分配命名空間(111)的請求。
例如,電腦儲存設備(103)可以是固態硬碟(SSD)。
例如,在電腦儲存設備(103)中實施之方法包括:在與非揮發性儲存媒體(例如,109)耦接的控制器(107)中接收來自主機(101)的請求以自電腦儲存設備(103)的非揮發性儲存媒體(例如,109)建立或者保留非揮發性記憶體的所請求的命名空間大小(131)的命名空間(111) (例如,根據NVMe)。回應於該請求,該方法進一步包括由控制器(107)產生命名空間映射(135),其識別:具有相同預定區塊大小(133)的複數個L區塊(121、...、123),以及具有小於預定區塊大小(133)的大小的部分L區塊(113)。L區塊(121、...、123、113)被進一步轉譯成非揮發性儲存媒體(例如,109)的特定部分(例如,經由轉譯層)。在為命名空間(111)產生命名空間映射(135)之後,該方法進一步包括由控制器(107)使用命名空間映射(135)將自主機(101)傳送的命名空間(111)中的邏輯位址轉換為針對一定量的非揮發性記憶體的實體位址。
較佳地,鑒於完整區塊(121、...、123、127)的已知的、統一的區塊大小(133),使用包括不多於代表性單元(例如,起始單元或結束單元)的識別的完整區塊識別符(例如,141、...、或143)在命名空間映射(135)中表示複數個L區塊(121、...、123)中的每個。可選地,完整區塊識別符(例如,141、...、或143)可以包括區塊大小(133)的指示(例如,藉由包括起始單元的識別及結束單元的識別兩者)。
較佳地,使用為命名空間(111)分配的起始單元的識別符(153)及區塊大小(155)在命名空間映射(135)中表示部分L區塊(113)。起始單元不一定是自其分配部分區塊(113)的完整L區塊(127)中的第一單元。例如,當後續命名空間需要大小小於或等於剩餘區塊(115)的部分區塊時,為後續命名空間分配的部分區塊可以具有跟隨L區塊(127)中的部分區塊(113)的結束單元的起始單元。
替代地,可以藉由為命名空間(111)(或另一代表性單元)分配的結束單元的識別及區塊大小(155)在命名空間映射(135)中表示部分L區塊(113)。
可選地,該方法進一步包括在電腦儲存設備(103)中維持空閒區塊集區(160),其識別可用於分配給另一個命名空間的任何一個或多個部分L區塊(例如,127)。
較佳地,電腦儲存設備(103)將命名空間映射(135)及空閒區塊集區(160)的拷貝儲存在儲存設備(103)的非揮發性儲存媒體(例如,109)中以用於持久儲存,並使用揮發性DRAM (106)中的命名空間映射(135)及空閒區塊集區(160)的拷貝進行運算。
作為實例,產生命名空間映射(135)可以經由以下來執行:為命名空間(111)分配複數個L區塊(121、...、123),使得介於命名空間(111)的所請求的命名空間大小(131)及複數個L區塊(121、...、123)之間的大小差值小於區塊大小(133)。在判定介於為命名空間(111)請求的非揮發性記憶體的量(133)與複數個完整L區塊(121、...、123)的總大小之間的差值之後,該方法進一步包括在空閒區塊集區(160)中搜尋等於或大於該差值的部分L區塊。
若在空閒區塊集區(160)中找到具有大小大於差值的第一部分L區塊(例如,161),則該方法進一步包括:為命名空間(111)分配第一部分L區塊(例如,161)的部分(例如,藉由為命名空間映射(135)建立部分區塊識別符(147));並且更新空閒區塊集區(160)中的第一部分L區塊(161)以表示未分配給命名空間(111)的第一部分L區塊(例如,161)的剩餘部分並且可以空閒地分配給另一個命名空間。
若在空閒區塊集區(160)中找到具有等於差值的大小的第一部分L區塊(例如,161),則該方法進一步包括:自空閒區塊集區(160)移除第一部分L區塊(例如,161);並為命名空間(111)分配第一部分L區塊(例如,161)。
若在空閒區塊集區(160)中沒有找到具有等於或大於差值的大小的部分L區塊,則可以為集區(160)分配全尺寸空閒區塊(例如,127),並且其暫時被視為部分空閒區塊(例如,161)。例如,該方法進一步包括:將具有相同預定區塊大小(133)的第一L區塊(例如127)新增到空閒區塊集區(160)(例如,作為空閒區塊(161));為命名空間(111)分配第一L區塊的部分(113);並且更新空閒區塊集區(160)中的第一L區塊(161)以表示第一L區塊(例如,127)的剩餘部分(115),其沒有為命名空間(111)分配並且可以空閒地分配給另一個命名空間。
可選地,該方法進一步包括在控制器(107)中接收來自主機(105)的刪除命名空間(111)的請求,以及回應於該請求,由控制器(107)向空閒區塊集區(160)新增由命名空間(111)的命名空間映射(135)中的部分區塊識別符(147)識別的部分L區塊(113)。
當空閒區塊集區(160)具有多於一個的部分空閒區塊(例如,113及115)時,該方法可選地進一步包括:在空閒區塊集區(160)中識別連續的空閒部分區塊(例如,113及115);並且在空閒區塊集區(160)中將連續的空閒部分區塊(例如,113及115)組合成單個空閒部分區塊。
可選地,該方法進一步包括:在空閒區塊集區(160)中組合空閒部分區塊(例如113及115)之後,判定組合的空閒部分區塊(例如127)是否是具有預定區塊大小(133)的完整空閒區塊;並且回應於判定出組合的空閒部分區塊(例如,127)具有預定區塊大小(133),自空閒區塊集區(160)中移除組合的空閒部分區塊(例如,127),使得空閒區塊集區(160)僅包含部分空閒區塊的識別;並且可以由完整區塊識別符的清單更有效地表示空閒完整區塊,其中空閒區塊集區(160)中的每個區塊由具有區塊中的單元的識別及區塊大小的部分區塊識別符來表示。
非暫時性電腦儲存媒體可用於儲存韌體(104)的指令。當該指令由電腦儲存設備(103)的控制器(107)執行時,該指令致使控制器(107)執行上面討論的方法。
在本說明書中,各種功能及操作可以被描述為由電腦指令執行或由電腦指令引起以簡化描述。然而,熟習此項技術者將認識到此等表達的含義是此等功能是由一個或多個控制器或處理器(諸如微處理器)執行電腦指令產生的。替代地或組合地,可以使用有或沒有軟體指令的專用電路來實施功能及操作,諸如使用專用積體電路(ASIC)或場可程式化閘陣列(FPGA)。可以使用沒有軟體指令的硬連線電路或者與軟體指令組合來實施實施例。因此,此等技術既不限於硬體電路及軟體的任何特定組合,也不限於由資料處理系統執行的指令的任何特定源。
雖然一些實施例可以在功能完備的電腦及電腦系統中實施,但是各種實施例能夠以各種形式被分發為運算產品,並且能夠被應用而不管用於實際實施分發的特定類型的機器或電腦可讀媒體。
所揭示的至少一些態樣可以至少部分地以軟體實施。也就是說,可以在電腦系統或其他資料處理系統中執行此等技術,以回應其處理器、諸如微處理器或微控制器,執行包含在記憶體中的指令序列,該記憶體諸如ROM、揮發性RAM、非揮發性記憶體、快取或遠端儲存設備。
執行以實施實施例的常式可以被實施為作業系統的一部分或被稱為「電腦程式」的特定應用程式、組件、程式、物件、模組或指令序列。電腦程式典型地包含在電腦中的各種記憶體及儲存設備中的不同時間處的一個或多個指令集,並且當由電腦中的一個或多個處理器讀取及執行時,致使電腦實施執行涉及各個態樣的元件所必需的操作。
有形的非暫時性電腦儲存媒體可用於儲存軟體及資料,該軟體及資料在由資料處理系統執行時致使系統執行各種方法。可執行軟體及資料可以儲存在各種位置,包括例如ROM、揮發性RAM、非揮發性記憶體及/或高速快取。該軟體及/或資料的部分可以儲存在此等儲存設備中的任何一個中。此外,資料及指令可以自集中式伺服器或對等網路獲得。可以在不同時間及不同通信工作階段中或在相同通信工作階段中自不同的集中式伺服器及/或對等網路獲得資料及指令的不同部分。在執行應用程式之前,可以完整地獲得資料及指令。替代地,當需要執行時,可以及時地動態地獲得資料及指令的部分。因此,不要求資料及指令在特定時刻全部位於機器可讀媒體上。
電腦可讀儲存媒體的實例包括但不限於可記錄及不可記錄類型的媒體,諸如揮發性及非揮發性記憶體設備、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、快閃記憶體設備、軟碟及其他可移動磁碟、磁碟儲存媒體及光儲存媒體(例如,光碟唯讀記憶體(CD ROM)、數位通用碟(DVD)等)及其他。指令可以體現在暫時性媒體中,諸如電、光、聲或其他形式的傳播信號,諸如載波、紅外信號、數位信號等。暫時性媒體典型地用於發送指令,但不被視為能夠儲存指令。
在各種實施例中,硬連線電路可以與軟體指令組合使用以實施此等技術。因此,此等技術既不限於硬體電路及軟體的任何特定組合,也不限於由資料處理系統執行的指令的任何特定源。
儘管一些附圖展示以特定順序的多個操作,但是可以重新排序不依賴於順序的操作,並且可以組合或分解其他操作。雖然具體提到一些重新排序或其他分組,但是其他對熟習此項技術者來說是顯而易見的,並且因此不提出備選方案的詳盡清單。此外,應該認識到,此等階段可以用硬體、韌體、軟體或其任何組合來實施。
以上描述及附圖是說明性的而不應解釋為限制性的。描述許多具體細節以提供透徹理解。然而,在某些情況下,不描述眾所周知的或常規的細節以避免模糊描述。對本發明中的一個或一實施例的參考不一定是對同一實施例的參考;並且,這樣的引用意味著至少一個。
在前述說明書中,已經參考本發明的特定示例性實施例描述本發明。顯而易見的是,在不脫離申請專利範圍中闡述的更廣泛的精神及範疇的情況下,可以對其進行各種修改。因此,說明書及附圖應被視為說明性意義而非限制性意義。
2‧‧‧二
22、25、30、31、305、306、307、308‧‧‧區塊
101‧‧‧主機
103‧‧‧儲存設備
104‧‧‧韌體
105‧‧‧主機介面
106‧‧‧記憶體
107‧‧‧控制器
109‧‧‧非揮發性儲存媒體
111‧‧‧命名空間
113、115‧‧‧部分(區塊)
121、123‧‧‧L區塊
127‧‧‧完整區塊
131‧‧‧命名空間大小
133‧‧‧倍數
135‧‧‧命名空間映射
141、143、147‧‧‧識別符
151‧‧‧部分區塊識別符
153‧‧‧起始單元識別符
155‧‧‧區塊大小
160‧‧‧集區
161、163、165‧‧‧空閒區塊
201‧‧‧請求
205‧‧‧空閒部分區塊
207‧‧‧空閒部分區塊
211‧‧‧完整區塊
213‧‧‧分配差值
215‧‧‧集區
220‧‧‧容量
221、223、281、283、285、287‧‧‧命名空間
222、224‧‧‧範圍
225‧‧‧管理管理器
227‧‧‧資料管理器
229‧‧‧本端管理器
231、233、237、239‧‧‧L區塊
241、243、245、247‧‧‧連續區域
249‧‧‧虛擬容量
251‧‧‧命名空間ID
253‧‧‧LBA位址
255‧‧‧命名空間映射
257‧‧‧邏輯位址
259‧‧‧實體位址
261‧‧‧建立
263‧‧‧刪除
265‧‧‧改變
271‧‧‧命名空間資訊
273‧‧‧命名空間映射
275‧‧‧空閒清單
281、283、285、287‧‧‧命名空間
291、293、295、297‧‧‧起始位址
292‧‧‧指示符
294、296、298‧‧‧連續指示符
301、302、303、304、305、308、 309、310、341‧‧‧L區塊
312、313、314、315、316、317、318、319、320、321、322、
323、324、325、326、327、328、329、330‧‧‧識別空閒區塊
321、322、232、324、325、326、327、328、329、330‧‧‧L區塊
343‧‧‧資料結構
345‧‧‧請求
347‧‧‧命名空間
349‧‧‧命名空間
351‧‧‧空閒區塊清單
353‧‧‧內容
355‧‧‧請求
357‧‧‧實體位址
實施例藉由實例展示,而不侷限於附圖的視圖中,其中相同的附圖標記指示類似的元件。
圖 1
展示其中可以實施本文揭示的發明的實施例的電腦系統。
圖 2
展示根據所請求的命名空間的大小直接分配多個命名空間的實例。
圖 3
展示經由映射邏輯位址的區塊來分配命名空間的實例。
圖 4
展示用於命名空間映射的資料結構的實例。
圖 5
展示用於轉譯非揮發性記憶體設備中的位址以支援命名空間管理的系統。
圖 6
展示基於邏輯位址的區塊來管理命名空間的方法。
圖 7
展示命名空間未與區塊邊界對齊並且可以使用圖 8- 圖 10
的技術來實施的實例圖。
圖 8
展示用於實施未與區塊邊界對齊的命名空間的命名空間映射的實例性方塊圖。
圖 9
展示可用於實施圖 8
的命名空間映射的實例性部分區塊識別符。
圖 10
展示使用圖 8
的技術來管理可用於命名空間分配的空閒區塊集區的實例資料結構。
圖 11
展示使用部分區塊來分配命名空間的實例。
圖 12
展示根據一個實施例的在儲存設備上分配命名空間的方法。
111‧‧‧命名空間
141‧‧‧完整區塊識別符A
143‧‧‧完整區塊識別符B
147‧‧‧部分區塊識別符
Claims (20)
- 一種電腦儲存設備,其包含:一主機介面;一控制器;非揮發性儲存媒體;以及韌體,其包含指令,該等指令在由該控制器執行時指示該控制器來至少:經由該主機介面接收來自一主機的用於分配一定量(a quantity)的非揮發性記憶體的一命名空間的一請求;回應於該請求產生一命名空間映射,該命名空間映射識別:位址的複數個區塊,其具有一相同預定區塊大小;以及位址的一部分區塊(a partial block of addresses),其大小小於該預定區塊大小;以及使用該命名空間映射,將自該主機傳送的命名空間中的邏輯位址轉換為該一定量的非揮發性記憶體的實體位址。
- 如請求項1之電腦儲存設備,其中用於分配該命名空間的請求是根據一非揮發性記憶體主機控制器介面規範(NVMHCI)。
- 如請求項1之電腦儲存設備,其中該電腦儲存設備是一固態硬碟。
- 一種在一電腦儲存設備中實施之方法,該方法包含: 在與一非揮發性記憶體耦接的一控制器中接收來自一主機的用於建立或保留一定量的非揮發性記憶體的一命名空間的一請求;回應於該請求,該控制器產生一命名空間映射,該命名空間映射識別:位址的複數個區塊,其具有一相同預定區塊大小;以及位址的一部分區塊,其大小小於該預定區塊大小;以及該控制器使用該命名空間映射將自該主機傳送的命名空間中的邏輯位址轉換為該一定量的非揮發性記憶體的實體位址。
- 如請求項4之方法,其中該請求是根據一非揮發性記憶體主機控制器介面規範(NVMHCI)。
- 如請求項4之方法,其中藉由一起始單元的一識別而在該命名空間映射中表示該複數個區塊中的每個區塊。
- 如請求項6之方法,其中藉由為該命名空間分配的一單元的一識別及一區塊大小(chunk size)而在該命名空間映射中表示該部分區塊。
- 如請求項7所述的方法,其進一步包含:在該電腦儲存設備中維持識別位址的至少一個部分區塊的一空閒區塊集區。
- 如請求項8之方法,其中產生該命名空間映射包含: 為該命名空間分配該複數個區塊;判定介於為該命名空間請求的非揮發性記憶體的量與該複數個區塊的一總大小之間的一差值;以及在該空閒區塊集區中搜尋等於或大於該差值的位址的一部分區塊。
- 如請求項9之方法,其中產生該命名空間映射進一步包含:回應於判定出該空閒區塊集區具有大小大於該差值的位址的一第一部分區塊,來:為該命名空間分配該第一部分區塊的一部分;以及更新該空閒區塊集區中的該第一部分區塊,以表示並未為該命名空間分配的第一部分區塊的一剩餘部分。
- 如請求項9之方法,其中產生該命名空間映射進一步包含:回應於判定出該空閒區塊集區具有大小等於該差值的位址的一第一部分區塊,來:自該空閒區塊集區中移除該第一部分區塊;以及為該命名空間分配該第一部分區塊。
- 如請求項9之方法,其中產生該命名空間映射進一步包含:回應於判定出該空閒區塊集區沒有大小等於或大於該差值的位址的部分區塊,來:將具有一相同預定區塊大小的位址的一第一區塊新增到該空閒區塊集區;為該命名空間分配該第一區塊的一部分;以及更新該空閒區塊集區中的該第一區塊,以表示並未為該命名空間分配的該第一區塊的一剩餘部分。
- 如請求項8之方法,其進一步包含:在該控制器中接收來自該主機的用於刪除該命名空間的一請求;以及該控制器將在該命名空間中識別的部分區塊新增到該空閒區塊集區。
- 如請求項13之方法,其進一步包含:在該空閒區塊集區中識別連續的空閒部分區塊;以及在該空閒區塊集區中將該等連續的空閒部分區塊組合成一單個空閒部分區塊。
- 如請求項14之方法,其進一步包含:判定該單個空閒部分區塊是否具有該預定區塊大小;以及回應於判定出該單個空閒部分區塊具有該預定區塊大小,自該空閒區塊集區中移除該單個空閒部分區塊。
- 如請求項15之方法,其中該空閒區塊集區中的每個區塊由一起始單元的一識別及一區塊大小表示。
- 一種儲存指令的非暫時性電腦儲存媒體,該等指令在由一電腦儲存設備的一控制器執行時致使該控制器執行一方法,該方法包含:在與非揮發性記憶體耦接的該控制器中接收來自主機的用於建立或 保留一定量的非揮發性記憶體的一命名空間的一請求;回應於該請求,該控制器產生一命名空間映射,其識別:位址的複數個區塊,其具有一相同預定區塊大小;以及位址的一部分區塊,其大小小於該預定區塊大小;以及該控制器使用該命名空間映射將自該主機傳送的命名空間中的邏輯位址轉換為該一定量的非揮發性記憶體的實體位址。
- 如請求項17之非暫時性電腦儲存媒體,其中藉由一起始單元的一識別而在該命名空間映射中表示該複數個區塊中的每個;以及藉由一起始單元的一識別及一區塊大小而在該命名空間映射中表示該部分區塊。
- 如請求項18之非暫時性電腦儲存媒體,其進一步包含:在該電腦儲存設備中維持識別位址的至少一個部分區塊的一空閒區塊集區,其中產生該命名空間映射包含:分配該複數個區塊;判定介於為該命名空間請求的非揮發性記憶體的量與該複數個區塊的一總大小之間的一差值;以及在該空閒區塊集區中搜尋等於或大於該差值的位址的一部分區塊。
- 如請求項19之非暫時性電腦儲存媒體,其進一步包含:在該控制器中接收來自該主機的用於刪除該命名空間的一請求;該控制器將該命名空間中識別的部分區塊新增到該空閒區塊集區; 在該空閒區塊集區中識別連續的空閒部分區塊;以及在該空閒區塊集區中將該等連續的空閒部分區塊組合成一單個空閒的部分區塊。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/790,882 US10437476B2 (en) | 2017-10-23 | 2017-10-23 | Namespaces allocation in non-volatile memory devices |
US15/790,882 | 2017-10-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201923587A TW201923587A (zh) | 2019-06-16 |
TWI791647B true TWI791647B (zh) | 2023-02-11 |
Family
ID=66169302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107137155A TWI791647B (zh) | 2017-10-23 | 2018-10-22 | 非揮發性記憶體設備中的命名空間分配 |
Country Status (4)
Country | Link |
---|---|
US (5) | US10437476B2 (zh) |
CN (1) | CN111344683B (zh) |
TW (1) | TWI791647B (zh) |
WO (1) | WO2019083775A1 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656833B (zh) * | 2017-10-12 | 2022-11-11 | 慧荣科技股份有限公司 | 数据储存装置 |
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 |
US10642488B2 (en) | 2017-10-23 | 2020-05-05 | Micron Technology, Inc. | Namespace size adjustment in non-volatile memory devices |
US11240306B2 (en) * | 2017-11-06 | 2022-02-01 | Vast Data Ltd. | Scalable storage system |
US11580034B2 (en) | 2017-11-16 | 2023-02-14 | Micron Technology, Inc. | Namespace encryption in non-volatile memory devices |
US10915440B2 (en) | 2017-11-16 | 2021-02-09 | Micron Technology, Inc. | Namespace mapping optimization 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 |
KR20200106739A (ko) * | 2019-03-05 | 2020-09-15 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
US10942881B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
US11768613B2 (en) | 2019-06-25 | 2023-09-26 | Micron Technology, Inc. | Aggregation and virtualization of solid state drives |
US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
US11256621B2 (en) * | 2019-06-25 | 2022-02-22 | Seagate Technology Llc | Dual controller cache optimization in a deterministic data storage system |
US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
US11573708B2 (en) | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy in aggregated and virtualized solid state drives |
US11055249B2 (en) | 2019-06-25 | 2021-07-06 | Micron Technology, Inc. | Access optimization in aggregated and virtualized solid state drives |
US10942846B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
US10963396B1 (en) * | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11262923B2 (en) | 2020-07-08 | 2022-03-01 | Samsung Electronics Co., Ltd. | Method for managing namespaces in a storage device using an over-provisioning pool and storage device employing the same |
WO2022047619A1 (en) * | 2020-09-01 | 2022-03-10 | Micron Technology, Inc. | Dynamically tuning host performance booster thresholds |
US11314428B1 (en) * | 2020-10-09 | 2022-04-26 | Western Digital Technologies, Inc. | Storage system and method for detecting and utilizing wasted space using a file system |
TWI844891B (zh) * | 2021-01-07 | 2024-06-11 | 慧榮科技股份有限公司 | 儲存裝置、快閃記憶體控制器及其控制方法 |
TWI775268B (zh) | 2021-01-07 | 2022-08-21 | 慧榮科技股份有限公司 | 儲存裝置、快閃記憶體控制器及其控制方法 |
CN112799592A (zh) * | 2021-01-29 | 2021-05-14 | 苏州浪潮智能科技有限公司 | 一种多命名空间的分配方法、装置、设备及可读介质 |
US20220391091A1 (en) * | 2021-06-04 | 2022-12-08 | Micron Technology, Inc. | Management of Namespace Block Boundary Alignment in Non-Volatile Memory Devices |
US20230042551A1 (en) * | 2021-08-03 | 2023-02-09 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for the management of device local memory |
US11656778B2 (en) | 2021-08-17 | 2023-05-23 | Micron Technology, Inc. | Selection of block size for namespace management in non-volatile memory devices |
CN113675952A (zh) * | 2021-09-08 | 2021-11-19 | 江苏林洋能源股份有限公司 | 一种多元储能融合控制终端及其控制系统 |
CN114238195A (zh) * | 2021-10-28 | 2022-03-25 | 合肥科大智能机器人技术有限公司 | 一种边缘计算终端 |
US20240086071A1 (en) * | 2022-09-12 | 2024-03-14 | Western Digital Technologies, Inc. | Ssd use of host memory buffer for improved performance |
US11947816B1 (en) * | 2022-09-19 | 2024-04-02 | Kioxia Corporation | Solid state drives with improved format handling |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009005981A2 (en) * | 2007-06-29 | 2009-01-08 | Microsoft Corporation | Flexible namespace prioritization |
US20100262583A1 (en) * | 2004-09-09 | 2010-10-14 | Microsoft Corporation | Method, system, and apparatus for creating an archive routine for protecting data in a data protection system |
US20130080732A1 (en) * | 2011-09-27 | 2013-03-28 | Fusion-Io, Inc. | Apparatus, system, and method for an address translation layer |
TW201316170A (zh) * | 2011-06-03 | 2013-04-16 | Apple Inc | 非揮發記憶體系統中未使用之邏輯位址之掛載時間解映射 |
US20150278397A1 (en) * | 2014-03-31 | 2015-10-01 | Amazon Technologies, Inc. | Namespace management in distributed storage systems |
TW201546717A (zh) * | 2014-05-02 | 2015-12-16 | Cavium Inc | 用於支援經由nvme控制器的、通過網路的用於遠端存放設備的本地快取記憶體的系統和方法 |
US20170024137A1 (en) * | 2015-07-23 | 2017-01-26 | Kabushiki Kaisha Toshiba | Memory system for controlling nonvolatile memory |
Family Cites Families (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05165715A (ja) * | 1991-12-12 | 1993-07-02 | Nec Corp | 情報処理装置 |
US6529921B1 (en) | 1999-06-29 | 2003-03-04 | Microsoft Corporation | Dynamic synchronization of tables |
TWI240861B (en) | 2002-01-11 | 2005-10-01 | Integrated Circuit Solution In | Data access method and architecture of flash memory |
PL351779A1 (en) | 2002-01-18 | 2003-07-28 | Advanced Digital Broadcast Ltd | Apparatus for storing data and method of subdividing te data storage area |
US7181588B2 (en) | 2003-05-22 | 2007-02-20 | International Business Machines Corporation | Computer apparatus and method for autonomic adjustment of block transfer size |
US7509473B2 (en) | 2003-08-27 | 2009-03-24 | Adaptec, Inc. | Segmented storage system mapping |
US8607016B2 (en) | 2004-07-21 | 2013-12-10 | Sandisk Technologies Inc. | FAT analysis for optimized sequential cluster management |
US20080010449A1 (en) | 2006-07-07 | 2008-01-10 | Michael Holtzman | Content Control System Using Certificate Chains |
US8190919B2 (en) | 2006-11-07 | 2012-05-29 | Spansion Llc | Multiple stakeholder secure memory partitioning and access control |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
CA2684229A1 (en) | 2007-04-12 | 2008-10-23 | Ncipher Corporation Ltd. | Method and system for identifying and managing keys |
US8498417B1 (en) | 2007-12-27 | 2013-07-30 | Emc Corporation | Automation of coordination of encryption keys in a SAN based environment where an encryption engine, device management, and key management are not co-located |
JPWO2009096180A1 (ja) | 2008-01-30 | 2011-05-26 | パナソニック株式会社 | メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム |
CN101981545B (zh) | 2008-01-31 | 2014-08-20 | 甲骨文国际公司 | 用于事务缓存的系统和方法 |
US8392361B2 (en) | 2008-08-11 | 2013-03-05 | Vmware, Inc. | Centralized management of virtual machines |
US8650355B2 (en) | 2008-10-15 | 2014-02-11 | Seagate Technology Llc | Non-volatile resistive sense memory on-chip cache |
US8738621B2 (en) | 2009-01-27 | 2014-05-27 | EchoStar Technologies, L.L.C. | Systems and methods for managing files on a storage device |
KR20100115583A (ko) | 2009-04-20 | 2010-10-28 | 삼성전자주식회사 | 데이터 저장 시스템 |
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
EP2476079A4 (en) | 2009-09-09 | 2013-07-03 | Fusion Io Inc | APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION |
WO2011044154A1 (en) | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
US8533161B2 (en) | 2009-10-30 | 2013-09-10 | Hitachi Data Systems Corporation | Fixed content storage within a partitioned content platform, with disposition service |
US20120079229A1 (en) | 2010-09-28 | 2012-03-29 | Craig Jensen | Data storage optimization for a virtual platform |
US8996842B2 (en) * | 2010-12-09 | 2015-03-31 | Seagate Technology Llc | Memory stacks management |
US9355031B2 (en) | 2011-04-21 | 2016-05-31 | International Business Machines Corporation | Techniques for mapping device addresses to physical memory addresses |
US9501392B1 (en) | 2011-05-12 | 2016-11-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of a non-volatile memory module |
US20130019057A1 (en) | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
KR102015053B1 (ko) | 2013-02-20 | 2019-08-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 데이터 처리 방법 |
US9003071B2 (en) | 2013-03-13 | 2015-04-07 | Futurewei Technologies, Inc. | Namespace access control in NVM express PCIe NVM with SR-IOV |
US9116904B2 (en) | 2013-03-14 | 2015-08-25 | Microsoft Technology Licensing, Llc | File system operation on multi-tiered volume |
US9804960B2 (en) * | 2013-03-14 | 2017-10-31 | Western Digital Technologies, Inc. | Overprovision capacity in a data storage device |
US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
US9245140B2 (en) | 2013-11-15 | 2016-01-26 | Kabushiki Kaisha Toshiba | Secure data encryption in shared storage using namespaces |
US9430480B1 (en) | 2013-12-31 | 2016-08-30 | Emc Corporation | Active-active metro-cluster scale-out for unified data path architecture |
KR20150081635A (ko) | 2014-01-06 | 2015-07-15 | 삼성전자주식회사 | 불휘발성 반도체 메모리를 포함하는 저장 장치 및 그것의 관리 방법 |
US9875180B2 (en) | 2014-02-24 | 2018-01-23 | Sandisk Technologies Llc | Systems and methods for managing storage compression operations |
KR20160027805A (ko) | 2014-09-02 | 2016-03-10 | 삼성전자주식회사 | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 |
US10102118B2 (en) | 2014-10-30 | 2018-10-16 | Toshiba Memory Corporation | Memory system and non-transitory computer readable recording medium |
US20160210241A1 (en) * | 2015-01-21 | 2016-07-21 | HGST Netherlands B.V. | Reducing a size of a logical to physical data address translation table |
US10268355B2 (en) * | 2015-01-30 | 2019-04-23 | Target Brands Inc. | User interface design system |
US20160283124A1 (en) | 2015-03-25 | 2016-09-29 | Kabushiki Kaisha Toshiba | Multi-streamed solid state drive |
US20160342463A1 (en) | 2015-05-20 | 2016-11-24 | Kabushiki Kaisha Toshiba | Data protection in a namespace |
US9990304B2 (en) * | 2015-11-13 | 2018-06-05 | Samsung Electronics Co., Ltd | Multimode storage management system |
US10291739B2 (en) | 2015-11-19 | 2019-05-14 | Dell Products L.P. | Systems and methods for tracking of cache sector status |
US20170153843A1 (en) | 2015-11-27 | 2017-06-01 | Western Digital Technologies, Inc. | Monitoring and managing elastic data storage devices |
US9916110B2 (en) | 2016-02-23 | 2018-03-13 | Red Hat, Inc. | Size adjustable volumes for containers |
JP6448571B2 (ja) | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP6523193B2 (ja) | 2016-03-08 | 2019-05-29 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US20170344430A1 (en) | 2016-05-24 | 2017-11-30 | Intel Corporation | Method and apparatus for data checkpointing and restoration in a storage device |
US10402092B2 (en) | 2016-06-01 | 2019-09-03 | Western Digital Technologies, Inc. | Resizing namespaces for storage devices |
KR102523377B1 (ko) | 2016-07-15 | 2023-04-20 | 삼성디스플레이 주식회사 | 유기 발광 표시 장치 및 이를 포함하는 두부 장착 표시 시스템 |
US9921956B2 (en) | 2016-07-20 | 2018-03-20 | Sandisk Technologies Llc | System and method for tracking block level mapping overhead in a non-volatile memory |
JP6553566B2 (ja) | 2016-09-23 | 2019-07-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP6524039B2 (ja) | 2016-09-23 | 2019-06-05 | 東芝メモリ株式会社 | メモリシステム及び制御方法 |
US10176116B2 (en) | 2016-09-28 | 2019-01-08 | Intel Corporation | Computer product, method, and system to provide discovery services to discover target storage resources and register a configuration of virtual target storage resources mapping to the target storage resources and an access control list of host nodes allowed to access the virtual target storage resources |
KR20180047402A (ko) | 2016-10-31 | 2018-05-10 | 삼성전자주식회사 | 멀티 네임스페이스를 관리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US20180239697A1 (en) | 2017-02-22 | 2018-08-23 | CNEXLABS, Inc. a Delaware Corporation | Method and apparatus for providing multi-namespace using mapping memory |
US10866732B2 (en) * | 2017-03-10 | 2020-12-15 | Toshiba Memory Corporation | Namespace re-sizing |
US20180260319A1 (en) | 2017-03-10 | 2018-09-13 | Toshiba Memory Corporation | Writing ssd system data |
US10296454B2 (en) * | 2017-03-14 | 2019-05-21 | Vmware, Inc. | Granular unmapping with variable addressing in a data store |
US20180275871A1 (en) | 2017-03-22 | 2018-09-27 | Intel Corporation | Simulation of a plurality of storage devices from a single storage device coupled to a computational device |
US10459636B2 (en) | 2017-03-24 | 2019-10-29 | Sandisk Technologies Llc | System and method for managing data in non-volatile memory systems having multiple mapping layers |
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 |
KR102411290B1 (ko) | 2017-10-24 | 2022-06-22 | 삼성전자주식회사 | 선택적으로 퍼지 동작을 수행하도록 구성되는 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템 |
US10223254B1 (en) | 2017-11-16 | 2019-03-05 | Micron Technology, Inc. | Namespace change propagation in non-volatile memory devices |
US11580034B2 (en) | 2017-11-16 | 2023-02-14 | Micron Technology, Inc. | Namespace encryption in non-volatile memory devices |
US10915440B2 (en) | 2017-11-16 | 2021-02-09 | Micron Technology, Inc. | Namespace mapping optimization 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 |
-
2017
- 2017-10-23 US US15/790,882 patent/US10437476B2/en active Active
-
2018
- 2018-10-16 WO PCT/US2018/056076 patent/WO2019083775A1/en active Application Filing
- 2018-10-16 CN CN201880073117.9A patent/CN111344683B/zh active Active
- 2018-10-22 TW TW107137155A patent/TWI791647B/zh active
-
2019
- 2019-07-23 US US16/520,204 patent/US10969963B2/en active Active
-
2021
- 2021-02-24 US US17/184,487 patent/US11520484B2/en active Active
-
2022
- 2022-11-11 US US18/054,666 patent/US11714553B2/en active Active
-
2023
- 2023-06-08 US US18/331,842 patent/US20230315290A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100262583A1 (en) * | 2004-09-09 | 2010-10-14 | Microsoft Corporation | Method, system, and apparatus for creating an archive routine for protecting data in a data protection system |
WO2009005981A2 (en) * | 2007-06-29 | 2009-01-08 | Microsoft Corporation | Flexible namespace prioritization |
TW201316170A (zh) * | 2011-06-03 | 2013-04-16 | Apple Inc | 非揮發記憶體系統中未使用之邏輯位址之掛載時間解映射 |
US20130080732A1 (en) * | 2011-09-27 | 2013-03-28 | Fusion-Io, Inc. | Apparatus, system, and method for an address translation layer |
US20150278397A1 (en) * | 2014-03-31 | 2015-10-01 | Amazon Technologies, Inc. | Namespace management in distributed storage systems |
TW201546717A (zh) * | 2014-05-02 | 2015-12-16 | Cavium Inc | 用於支援經由nvme控制器的、通過網路的用於遠端存放設備的本地快取記憶體的系統和方法 |
US20170024137A1 (en) * | 2015-07-23 | 2017-01-26 | Kabushiki Kaisha Toshiba | Memory system for controlling nonvolatile memory |
Also Published As
Publication number | Publication date |
---|---|
US20210181950A1 (en) | 2021-06-17 |
WO2019083775A1 (en) | 2019-05-02 |
TW201923587A (zh) | 2019-06-16 |
CN111344683A (zh) | 2020-06-26 |
US20230071161A1 (en) | 2023-03-09 |
US20230315290A1 (en) | 2023-10-05 |
US11714553B2 (en) | 2023-08-01 |
CN111344683B (zh) | 2023-12-22 |
US10437476B2 (en) | 2019-10-08 |
US20190121547A1 (en) | 2019-04-25 |
US10969963B2 (en) | 2021-04-06 |
US11520484B2 (en) | 2022-12-06 |
US20190347010A1 (en) | 2019-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI791647B (zh) | 非揮發性記憶體設備中的命名空間分配 | |
US11928332B2 (en) | Namespace size adjustment in non-volatile memory devices | |
US11640242B2 (en) | Namespace management in non-volatile memory devices | |
US11994984B2 (en) | Namespace mapping optimization in non-volatile memory devices | |
US11983119B2 (en) | Namespace mapping structural adjustment in non-volatile memory devices | |
US11687446B2 (en) | Namespace change propagation in non-volatile memory devices | |
CN115705168A (zh) | 非易失性存储器装置中的名称空间管理的块大小的选择 | |
US20220391091A1 (en) | Management of Namespace Block Boundary Alignment in Non-Volatile Memory Devices |