CN117130955A - 用于管理相关联的存储器的方法和*** - Google Patents
用于管理相关联的存储器的方法和*** Download PDFInfo
- Publication number
- CN117130955A CN117130955A CN202310552438.XA CN202310552438A CN117130955A CN 117130955 A CN117130955 A CN 117130955A CN 202310552438 A CN202310552438 A CN 202310552438A CN 117130955 A CN117130955 A CN 117130955A
- Authority
- CN
- China
- Prior art keywords
- memory
- pages
- size
- memory pages
- pools
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 561
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000002093 peripheral effect Effects 0.000 claims description 8
- 239000007787 solid Substances 0.000 claims description 8
- 230000004044 response Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000017702 response to host Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- 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
- 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
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
-
- 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
- G06F2212/1024—Latency reduction
-
- 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/154—Networked environment
-
- 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/25—Using a specific main memory architecture
- G06F2212/254—Distributed 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/7202—Allocation control and policies
-
- 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
-
- 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
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)
- Memory System (AREA)
Abstract
一种用于管理与PCIe SSD相关联的存储器的方法,包括:从预定义大小的连续物理存储器生成相等大小的存储器池,每个存储器池管理不同大小的存储器请求并且与相应的预定义大小的存储器请求相关联;将每个存储器池划分为第一组存储器页,每个存储器页的大小等于与相应存储器池相关联的存储器请求的预定义大小中的最大大小;将第一组存储器页中的每一个划分为第二组存储器页,每个存储器页的大小等于与相应存储器池相关联的存储器请求的预定义大小;以及通过针对大小对应于第二组存储器页的存储器请求分配第二组存储器页中的存储器页来管理连续物理存储器。
Description
技术领域
本公开总体上涉及存储器管理,并且更具体地,涉及用于管理与***组件互连快速(PCIe)固态驱动(SSD)相关联的存储器的方法和***。
背景技术
非易失性存储器快速(NVMe)是一种开放的逻辑设备接口规范,用于访问通常经由***组件互连快速(PCIe)总线附接的计算机非易失性存储介质。PCIe是一种高速串行计算机总线扩展标准。NVMe通常是NAND闪存,其具有几种物理形状因素(form factor),诸如固态驱动(SSD)、PCIe SSD等。NVMe设备在标准大小的PCIe扩展卡中可用。PCIe SSD是一种附接到计算机的高速扩展卡。
NVMe SSD可以包括控制器存储器缓冲器(Controller Memory Buffer,CMB)、持久存储器区域(Persistent Memory Region,PMR)和对等(peer-to-peer,P2P)存储器,它们通过PCIe总线连接并用于计算存储。CMB、PMR和P2P存储器可以是额外的动态随机访问存储器(DRAM),其是受功率保护的存储类存储器。
当NVMe SSD存储器通过PCIe总线连接以在主机的控制下执行读取/写入操作时,可能会有大量的输入/输出开销,这会降低NVMe SSD的性能。输入/输出开销是不希望的,因为主机的中央处理单元(CPU)必须在等数据待从NVMe SSD存储器加载或卸载时停止操作。通过在读取/写入操作期间管理NVMe SSD存储器,可以减少输入/输出开销。
目前,存在多种在读取/写入操作期间管理NVMe SSD存储器的现有存储器管理器。这些现有***使用诸如genalloc/genpool、比特图的存储器分配技术来分配和解除分配NVMe SSD存储器。然而,这些现有存储器管理器没有提供存储器分配大小的上限,并且不能管理通过PCIe总线连接的NVMe SSD存储器以及减少由NVMe SSD存储器产生的输入/输出开销。
发明内容
在实施例中,本公开提供了一种用于管理与***组件互连快速(PCIe)固态驱动(SSD)相关联的存储器的方法,该方法包括:由存储器控制器从与PCIe SSD相关联的预定义大小的连续物理存储器生成多个相同大小的存储器池(memory pool),其中多个存储器池中的每一个管理不同大小的存储器请求,并且其中多个存储器池中的每一个与相应的预定义大小的存储器请求相关联;由存储器控制器将多个存储器池中的每一个划分为第一组存储器页(memory page),其中第一组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小中的最大大小;由存储器控制器将第一组存储器页中的每一个划分为第二组存储器页,其中第二组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小;以及由存储器控制器通过针对大小对应于第二组存储器页的大小的存储器请求分配来自第二组存储器页的至少一个存储器页来管理与PCIe SSD相关联的连续物理存储器。
在实施例中,本公开提供了一种用于管理与PCIe SSD相关联的存储器的存储器控制器,该存储器控制器包括:处理器,该处理器被配置为:从与PCIe SSD相关联的预定义大小的连续物理存储器生成多个相等大小的存储器池,其中多个存储器池中的每一个管理不同大小的存储器请求,并且其中多个存储器池中的每一个与相应的预定义大小的存储器请求相关联;将多个存储器池中的每一个划分为第一组存储器页,其中第一组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小中的最大大小;将第一组存储器页中的每一个分成第二组存储器页,其中第二组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小;以及通过针对大小对应于第二组存储器页的大小的存储器请求分配来自第二组存储器页的至少一个存储器页来管理与PCIeSSD相关联的连续物理存储器。
附图说明
并入本公开并构成其一部分的附图示出了本公开的实施例,并与描述一起用于解释所公开的原理。在所有附图中,相同的数字用于指代相似的特征和组件。现在参考附图,通过示例的方式描述根据本主题的实施例的一些***和/或方法,其中:
图1A和图1B示出了根据本公开的一些实施例的使用存储器控制器来管理与非易失性存储器快速(NVMe)固态驱动(SSD)相关联的存储器的环境;
图2示出了根据本公开的一些实施例的使用存储器控制器将与***组件互连快速(PCIe)SSD相关联的连续物理存储器划分为第二组存储器页;
图3A、图3B和图3C示出了根据本公开的一些实施例的通过分配和解除分配存储器页来管理连续物理存储器的技术;以及
图4示出了示出根据本公开的一些实施例的用于管理与PCIe SSD相关联的存储器的方法的流程图。
本领域技术人员应当理解,本文的任何框图都表示体现本主题的原理的说明性***的视图。类似地,应当理解,任何流程表、流程图、状态转移图、伪代码等都表示可以在计算机可读取介质中表示并由计算机或处理器执行的各种过程。
具体实施方式
尽管本公开容易受到各种修改和替代形式的影响,但是其具体实施例在附图中以示例的方式示出,并且将在下面详细描述。然而,应当理解,这并不旨在将本公开限制于所公开的形式,相反,本公开将覆盖落入本公开的精神和范围内的所有修改、等同物和替代物。
术语“包括”、“包含”或其任何其他变体可以涵盖非排他性的包括,使得包括一系列组件或步骤的设置、设备或方法不仅包括那些组件或步骤,还可以包括没有明确列出的或这种设置、设备或方法固有的其他组件或步骤。换句话说,在没有更多限制的情况下,***或装置中的在“包括……”的前面的一个或多个元件,并不排除该***或方法中存在其他元件或附加元件。
本公开涉及用于管理与***组件互连快速(PCIe)固态驱动(SSD)相关联的存储器的方法和存储器控制器。存储器控制器通过分配大小等于存储器请求的存储器页来管理PCIe SSD存储器。存储器控制器将与PCIe SSD相关联的存储器划分为存储器池、第一组存储器页和第二组存储器页。第二组存储器页以这样的方式被划分,即存储器控制器分派第二组存储器页来管理预定义大小的存储器请求。因此,存储器控制器管理针对PCIe SSD存储器的不同大小的存储器请求,并减少在分配和解除分配PCIe SSD存储器期间产生的输入/输出开销。
图1A示出了用于管理与PCIe SSD相关联的存储器的环境100。环境100包括主机***101和经由PCIe 102连接到主机***101的NVMe SSD 104。NVMe SSD 104包括用于管理与NVMe SSD 104相关联的存储器的存储器控制器103。与NVMe SSD 104相关联的存储器包括控制器存储器缓冲器(CMB)105、持久存储器区域(PMR)106和对等(P2P)存储器109。主机***101可以包括但不限于膝上型计算机、台式计算机、个人计算机(PC)、笔记本计算机、智能手机、平板、服务器、网络服务器、基于云的服务器等。一般地,主机***101可能需要连续的物理存储器区块(chunk)来准备用于存储/检索来自NVMe SSD 104的数据的物理区域页(Physical Region Page,PRP)和分散收集列表(Scatter Gather Lists,SGL)。NVMe SSD104中的连续物理存储器可以包括但不限于CMB 105、PMR 106、P2P存储器109等。如图1B所示,主机***101包括中央处理单元(CPU)107和动态随机访问存储器(DRAM)108。CMB 105、PMR 106、P2P 109等通过PCIe 102连接,以响应于主机***101执行读取/写入操作。PCIe102是高速串行计算机扩展总线。在本公开的实施例中,PCIe 102是用于个人计算机、图形卡、硬盘驱动、SSD等的通用主板接口。主机***101的DRAM 108用于存储CPU 107要处理或经常需要的数据。数据可以快速地从DRAM读取并写入DRAM,并且允许CPU 107在等待数据时保持空闲。一般地,主机***101的CPU 107经由双倍数据速率(Double Data Rate,DDR)与DRAM 108交互。此外,NVMe SSD104的存储器控制器103针对存储器请求管理连续的物理存储器,例如CMB105、PMR 106和P2P存储器109,以在主机***101的控制下执行读取/写入操作。
与NVMe SSD 104相关联的存储器控制器103可以从预定义大小的连续物理存储器(例如CMB 105、PMR 106和P2P存储器109)生成多个相同大小的存储器池。例如,连续物理存储器的预定义大小可以是4千兆字节(GB),这是执行一个或多个存储器操作(诸如读取/写入操作)所需要的。多个存储器池中的每一个管理不同大小的存储器请求,并且存储器池中的每一个都与相应的预定义大小的存储器请求相关联。在一个或多个存储器操作的编译期间配置针对多个存储器池中的每一个的存储器请求的预定义大小。此外,基于与NVMe SSD104(也被称为PCIe SSD)相关联的连续物理存储器的预定义大小,在一个或多个存储器操作的编译期间配置要生成的存储器池的数量。在生成多个存储器池时,存储器控制器103将多个存储器池中的每一个划分为第一组存储器页,例如,每一个存储器池被划分为一组存储器页。例如,第一存储器池被划分为一组存储器页,第二存储器池被划分为另一组存储器页,依此类推。此外,第一组存储器页中的每一个的大小等于存储器请求的预定义大小中的最大大小。在划分第一组存储器页时,存储器控制器103将第一组存储器页中的每一个划分为第二组存储器页。第二组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小。存储器控制器103通过针对大小对应于第二组存储器页的大小的存储器请求分配来自第二组存储器页的至少一个存储器页来管理与NVMe SSD 104相关联的连续物理存储器。例如,图2示出了将连续物理存储器划分为第二组存储器页。考虑连续物理存储器的大小为4GB。存储器控制器103基于大小将4GB连续物理存储器划分为多个存储器池。例如,在读取/写入操作的编译期间,连续物理存储器被划分为例如七个大小相等的存储器池。因此,4GB存储器被划分为七个存储器池,每个存储器池的大小为584兆字节(MB)。此外,存储器池中的每一个被配置为管理预定义大小的存储器请求,例如,第一存储器池201可以被配置为管理4k大小的存储器请求,第二存储器池202可以被配置为管理16k大小的存储器请求,第三存储器池203可以被配置为管理32k大小的存储器请求,第四存储器池204可以被配置为管理64k大小的存储器请求,第五存储器池205可以被配置为管理128k大小的存储器请求,第六存储器池206可以被配置为管理1MB大小的存储器请求,第七存储器池207可以被配置为管理2MB大小的存储器请求。在如图2所示的当前示例中,最后一个存储器池(例如第七存储器池207)被配置为管理2MB的存储器请求。因此,连续物理存储器被配置为管理的最大存储器请求大小是2MB。在将连续物理存储器划分为多个存储器池时,存储器控制器103将每个存储器池划分为大小等于最大存储器请求的第一组存储器页。考虑图2,为64k存储器请求配置的存储器池被划分为第一组存储器页,其中每个页的大小为2MB,因为最大存储器请求大小为2MB。因此,584MB大小的存储器池中的每一个都被划分为292个2MB大小的第一组存储器页。此外,第一组存储器页中的每一个都被存储器控制器103划分为第二组存储器页,其大小等于与相应存储器池相关联的存储器请求的预定义大小。例如,在图2中,第一组存储器页被划分为32个第二组存储器页,每个存储器页具有64k的大小,因为存储器池被配置为管理64k大小的存储器请求。类似地,作为另一个示例,为4k存储器请求配置的第一存储器池201包括512个第二组存储器页,每个存储器页的大小为4k。为16k存储器请求配置的第二存储器池202包括128个第二组存储器页,每个存储器页的大小为16k,依此类推。此外,存储器控制器103通过为多个存储器池中的每一个维护空闲列表和分配列表来分配第二组存储器页以管理不同大小的存储器请求。
图3A、图3B和图3C示出了通过分配和解除分配来自第二组存储器页的存储器页来管理连续物理存储器的示例实施例。存储器控制器103为多个存储器池中的每一个维护空闲列表和分配列表,以分配和解除分配第二组存储器页。空闲列表和分配列表与相应存储器池中的每一个内的第一组存储器页相关联。例如,图3A示出了与被配置为管理64k的存储器请求的存储器池相关联的空闲列表301和分配列表302。空闲列表301包括与相应的第二组存储器页相关联的第一组存储器页。第一组存储器页保留在空闲列表301中,因为相应的第二组存储器页没有被存储器控制器103分配。当第二组存储器页没有被分配用于读取/写入操作时,分配列表302最初为空(empty/null)。
例如,考虑从用户接收到64k的存储器请求以执行读取/写入操作。存储器控制器103分配来自第二组存储器页的存储器页来执行读取/写入操作。例如,在索引0处初始化来自第二组存储器页的第一存储器页,在索引1处初始化下一个存储器页(或第二存储器页),在索引2处初始化下一个存储器页(第三存储器页),依此类推。存储器控制器103开始分配来自第二组存储器页的存储器页。在本公开的实施例中,存储器控制器103将第二组存储器页分配给用户空间,用于执行读取/写入操作。用户空间是存储器的一部分,包含由用户运行的进程。在本公开的实施例中,存储器控制器103向用户空间提供加密的内核虚拟地址,用于执行读取/写入操作。内核虚拟地址类似于逻辑地址,其中从内核空间地址映射到物理地址。考虑上面图2的示例,其中64k存储器池包括32个第二组存储器页。考虑大小为64k的所有32个第二组存储器页都被分配用于读取/写入操作。在这种场景下,存储器控制器103将相应的第一组存储器页转移到分配列表302。图3B示出了一旦所有相应的第二组存储器页都被分配用于读取/写入操作,第一组存储器页的第一存储器页303被转移到分配列表302。类似地,一旦所有的第二组存储器页都被分配,相应的第一组存储器页被转移到分配列表302,并且空闲列表301为空,如图3C所示。此外,一旦读取/写入操作完成,存储器控制器103解除分配与存储器请求相关联的第二组存储器页。考虑与上面相同的示例,在这种情况下,当读取/写入操作完成时,存储器控制器103解除分配64k第二组存储器页。在解除分配第二组存储器页时,存储器控制器103将第一组存储器页中的每一个转移到空闲列表301,并且分配列表302再次为空。
在本公开的实施例中,考虑为64k存储器请求分配的第二组存储器页不足以执行读取/写入操作。在这种场景下,存储器控制器103可以识别来自与64k存储器请求相关联的第二组存储器页的每个存储器页是否被分配。在识别每个存储器页是否被分配后,存储器控制器103从与存储器请求的预定义大小中的最大大小的存储器请求相关联的存储器池中获得第一组存储器页。例如,存储器控制器103从被配置为管理2MB的存储器请求的存储器池中获得第一组存储器页。在获得第一组存储器页时,存储器控制器103改变与所获得的第一组存储器页相关联的第二组存储器页的大小。与所获得的第一组存储器页相关联的第二组存储器页的大小被改变为与存储器请求相关联的第二组存储器页的大小。例如,存储器控制器103获得2MB大小的第一组存储器页,其包括一个2MB大小的第二组存储器页。存储器控制器103将该2MB大小的第二组存储器页改变为32个64k大小的第二组存储器页。此外,存储器控制器103分配第二组存储器页以满足64k的存储器请求,并完成读取/写入操作。例如,如果在被配置为管理2MB的存储器请求的存储器池中没有空闲的2MB大小的第一组存储器页,则存储器控制器103从下一个更小大小的存储器池(例如,在本场景中为1MB存储器池)中获得第一组存储器页。类似地,考虑到1MB存储器池不包含空闲的第一组存储器页,存储器控制器103从下一个更小大小的存储器池(例如128k存储器池等)获得第一组存储器页。存储器控制器103继续搜索以获得2MB大小的第一组存储器页,直到存储器控制器103满足64k大小的存储器请求并完成读取/写入操作。
图4示出了示出根据本公开的一些实施例的用于管理与PCIe SSD相关联的存储器的方法的流程图。
如图4所示,方法400可以包括一个或多个步骤。可以在计算机可执行指令的上下文中描述方法400。计算机可执行指令可以包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、过程、模块和函数。
描述方法400的顺序不是限制性的,并且任何数量的所描述的方法块可以以任何顺序组合来实现该方法。此外,可以从一个或多个方法中删除单独的块。此外,该方法可以在任何合适的硬件、软件、固件或其组合中实现。
在块401,存储器控制器103从与PCIe SSD相关联的预定义大小的连续物理存储器生成多个相等大小的存储器池。多个存储器池中的每一个管理不同大小的存储器请求,并且多个存储器池中的每一个与存储器请求的相应的预定义大小相关联。在一个或多个存储器操作的编译期间配置针对多个存储器池中的每一个的存储器请求的预定义大小。类似地,基于与PCIe SSD相关联的连续物理存储器的预定义大小,在一个或多个存储器操作的编译期间配置存储器池的数量。
在块402,多个存储器池中的每一个被存储器控制器103划分为相应的第一组存储器页。第一组存储器页中的每一个的大小等于存储器请求的预定义大小中的最大大小。
在块403,第一组存储器页中的每一个被存储器控制器103划分为相应的第二组存储器页。第二组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小。
在块404,由存储器控制器103通过针对大小对应于第二组存储器页的大小的存储器请求分配来自第二组存储器页的至少一个存储器页,管理与PCIe SSD相关联的连续物理存储器。
具体地,多个存储器池中的每一个都维护与相应存储器池中的每一个内的第一组存储器页相关联的分配列表和空闲列表。在为存储器请求分配相应的第二组存储器页时,存储器控制器103将第一组存储器页中的每一个转移到分配列表。此外,在完成一个或多个存储器操作时,与存储器请求相关联的第二组存储器页被存储器控制器103解除分配。在解除分配时,存储器控制器103将第一组存储器页中的每一个转移到空闲列表。
本公开的实施例提供了一种通过将存储器划分为被配置为管理不同大小的存储器请求的池来管理与PCIe SSD相关联的存储器的方法。
本公开的实施例减少了分配和解除分配时间,因为存储器被划分为管理预定义大小的存储器请求。
本公开的实施例通过在第二组存储器页的分配期间向用户空间提供加密的内核虚拟地址来减少安全威胁。
术语“一实施例”、“实施例”、“多个实施例”、“该实施例”、“本实施例”、“一个或多个实施例”、“一些实施例”和“一个实施例”可以表示“本公开的一个或多个(但不是全部)实施例”,除非另有明确说明。
术语“包括”、“包含”、“具有”及其变体可以表示“包括但不限于”,除非另有明确说明。
列举的项目列表并不意味着任何或所有项目是相互排斥的,除非另有明确说明。
术语“一”、“一个”和“该”可以表示“一个或多个”,除非另有明确说明。
对具有若干个彼此通信的组件的实施例的描述并不意味着需要所有这样的组件。例如,描述了各种可选组件来说明本公开的各种可能的实施例。
当在本文中描述单个设备或物件时,显然可以使用一个以上的设备/物件(无论它们是否协作)来代替单个设备/物件。类似地,在本文中描述了一个以上的设备或物件的情况下(无论它们是否协作),显然可以使用单个设备/物件来代替一个以上的设备或物件、或者可以使用不同数量的设备/物件来代替一个以上的设备或物件。设备的功能和/或特征可替代地由没有被明确描述为具有这种功能/特征的一个或多个其他设备来体现。因此,本公开的其他实施例不需要包括设备本身。
图4所示的操作示出了以特定顺序发生的特定事件。在本公开的替代实施例中,某些操作可以以不同的顺序执行、修改或删除。此外,可以向上述逻辑添加步骤,并且仍然符合所描述的实施例。此外,本文描述的操作可以顺序发生、或者某些操作可以并行处理。此外,操作可以由单个处理单元或分布式处理单元来执行。
Claims (20)
1.一种用于管理与***组件互连快速PCIe固态驱动SSD相关联的存储器的方法,所述方法包括:
由存储器控制器从与PCIe SSD相关联的预定义大小的连续物理存储器生成多个相同大小的存储器池,其中,所述多个存储器池中的每一个管理不同大小的存储器请求,并且其中,所述多个存储器池中的每一个与相应的预定义大小的存储器请求相关联;
由存储器控制器将多个存储器池中的每一个划分为第一组存储器页,其中,所述第一组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小中的最大大小;
由存储器控制器将第一组存储器页中的每一个划分为第二组存储器页,其中,所述第二组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小;以及
由存储器控制器通过针对大小对应于第二组存储器页的大小的存储器请求分配来自第二组存储器页的至少一个存储器页,来管理与PCIe SSD相关联的连续物理存储器。
2.根据权利要求1所述的方法,其中,针对多个存储器池中的每一个的存储器请求的预定义大小是在一个或多个存储器操作的编译期间配置的。
3.根据权利要求1所述的方法,其中,存储器池的数量是基于与PCIe SSD相关联的连续物理存储器的预定义大小,在一个或多个存储器操作的编译期间配置的。
4.根据权利要求1所述的方法,其中,分配来自第二组存储器页的至少一个存储器页包括:
由存储器控制器为多个存储器池中的每一个池维护与存储器池中的每一个内的第一组存储器页相关联的分配列表和空闲列表;以及
在针对存储器请求分配第二组存储器页中的每一个时,由存储器控制器将第一组存储器页中的每一个转移到分配列表。
5.根据权利要求4所述的方法,还包括:
由存储器控制器解除分配与存储器请求相关联的第二组存储器页;以及
在解除分配与存储器请求相关联的第二组存储器页时,由存储器控制器将第一组存储器页中的每一个转移到空闲列表。
6.根据权利要求1所述的方法,还包括:
由存储器控制器识别来自与存储器请求相关联的第二组存储器页中的每个存储器页是否被分配;
由存储器控制器从与存储器请求的预定义大小中的最大大小的存储器请求相关联的存储器池中获得第一组存储器页;以及
由存储器控制器改变与所获得的第一组存储器页相关联的第二组存储器页的大小,其中,与所获得的第一组存储器页相关联的第二组存储器页的大小被改变为与存储器请求相关联的第二组存储器页的大小。
7.一种用于管理与***组件互连快速PCIe固态驱动SSD相关联的存储器的存储器控制器,包括:
处理器,被配置为:
从与PCIe SSD相关联的预定义大小的连续物理存储器生成多个相同大小的存储器池,其中,所述多个存储器池中的每一个管理不同大小的存储器请求,并且其中,所述多个存储器池中的每一个与相应的预定义大小的存储器请求相关联;
将多个存储器池中的每一个划分为第一组存储器页,其中,所述第一组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小中的最大大小;
将第一组存储器页中的每一个划分为第二组存储器页,其中,所述第二组存储器页中的每一个的大小等于与相应存储器池相关联的存储器请求的预定义大小;以及
通过针对大小对应于第二组存储器页的大小的存储器请求分配来自第二组存储器页的至少一个存储器页,来管理与PCIe SSD相关联的连续物理存储器。
8.根据权利要求7所述的存储器控制器,其中,针对所述多个存储器池中的每一个的存储器请求的预定义大小是在一个或多个存储器操作的编译期间配置的。
9.根据权利要求7所述的存储器控制器,其中,存储器池的数量是基于与PCIe SSD相关联的连续物理存储器的预定义大小,在一个或多个存储器操作的编译期间配置的。
10.根据权利要求7所述的存储器控制器,其中,所述处理器通过以下方式分配来自第二组存储器页的至少一个存储器页:
为多个存储器池中的每一个维护与存储器池中的每一个内的第一组存储器页相关联的分配列表和空闲列表;以及
在针对存储器请求分配第二组存储器页中的每一个时,将第一组存储器页中的每一个转移到分配列表。
11.根据权利要求10所述的存储器控制器,其中,所述处理器:
解除分配与存储器请求相关联的第二组存储器页;以及
在解除分配与存储器请求相关联的第二组存储器页时,将第一组存储器页中的每一个转移到空闲列表。
12.根据权利要求7所述的存储器控制器,其中,所述处理器:
识别来自与存储器请求相关联的第二组存储器页中的每个存储器页是否被分配;
从与预定义大小的存储器请求中最大大小的存储器请求相关联的存储器池中获得第一组存储器页;以及
改变与所获得的第一组存储器页相关联的第二组存储器页的大小,其中,与所获得的第一组存储器页相关联的第二组存储器页的大小被改变为与存储器请求相关联的第二组存储器页的大小。
13.一种用于管理与***组件互连快速PCIe固态驱动SSD相关联的存储器的方法,所述方法包括:
从存储器生成多个存储器池,其中,所述存储器池中的每一个具有相同的大小;
将存储器池中的每一个划分为第一组存储器页,其中,所述第一组存储器页的每个存储器页的大小等于所有存储器池的存储器请求的最大大小;
将第一组存储器页的每个存储器页划分为第二组存储器页,其中,所述第二组存储器页的每个存储器页的大小等于与其相应存储器池相关联的存储器请求的大小;以及
响应于大小对应于第二组存储器页的大小的读取/写入操作,分配来自第二组存储器页的至少一个存储器页。
14.根据权利要求13所述的方法,其中,所述存储器池中的每一个被配置为管理不同大小的存储器请求。
15.根据权利要求13所述的方法,还包括:针对存储器池中的每一个维护空闲列表和分配列表,其中,所述空闲列表包括其相应存储器池的第一组存储器页。
16.根据权利要求15所述的方法,其中,在响应于读取/写入操作分配第二组存储器页之前,所述分配列表为空。
17.根据权利要求15所述的方法,还包括:当来自第二组存储器页的所有存储器页都被分配时,将第一组存储器页的存储器页转移到分配列表。
18.根据权利要求17所述的方法,其中,一旦来自第二组存储器页的所有存储器页被分配并且第一组存储器页被移动到分配列表,所述空闲列表为空。
19.根据权利要求12所述的方法,还包括:一旦读取/写入操作完成,解除分配与读取/写入操作相关联的第二组存储器页。
20.根据权利要求12所述的方法,其中,当为读取/写入操作分配的第二组存储器页不足时,所述方法还包括从与最大大小的存储器请求相关联的存储器池中获得第一组存储器页,改变与所获得的第一组存储器页相关联的第二组存储器页的大小,以及分配所获得的第二组存储器页以完成读取/写入操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN202241030412 | 2022-05-27 | ||
IN202241030412 | 2022-05-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117130955A true CN117130955A (zh) | 2023-11-28 |
Family
ID=88861725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310552438.XA Pending CN117130955A (zh) | 2022-05-27 | 2023-05-16 | 用于管理相关联的存储器的方法和*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US11960723B2 (zh) |
CN (1) | CN117130955A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220100911A1 (en) * | 2021-12-10 | 2022-03-31 | Intel Corporation | Cryptographic computing with legacy peripheral devices |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760826B2 (en) * | 2000-12-01 | 2004-07-06 | Wind River Systems, Inc. | Store data in the system memory of a computing device |
US7149866B2 (en) * | 2004-06-04 | 2006-12-12 | International Business Machines Corporation | Free item distribution among multiple free lists during garbage collection for more efficient object allocation |
US9218135B2 (en) * | 2010-06-16 | 2015-12-22 | Microsoft Technology Licensing, Llc | Hierarchical allocation for file system storage device |
US20160335198A1 (en) * | 2015-05-12 | 2016-11-17 | Apple Inc. | Methods and system for maintaining an indirection system for a mass storage device |
US10204022B2 (en) * | 2016-08-15 | 2019-02-12 | Oracle International Corporation | Efficient memory management for persistent memory |
-
2022
- 2022-07-19 US US17/867,742 patent/US11960723B2/en active Active
-
2023
- 2023-05-16 CN CN202310552438.XA patent/CN117130955A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230384934A1 (en) | 2023-11-30 |
US11960723B2 (en) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11768632B2 (en) | Memory system and method of controlling nonvolatile memory | |
US9792227B2 (en) | Heterogeneous unified memory | |
US8909853B2 (en) | Methods and apparatus to share a thread to reclaim memory space in a non-volatile memory file system | |
EP3115903B1 (en) | File accessing method and related device | |
US20110246742A1 (en) | Memory pooling in segmented memory architecture | |
US11237756B2 (en) | System and method of writing to nonvolatile memory using write buffers | |
US10824555B2 (en) | Method and system for flash-aware heap memory management wherein responsive to a page fault, mapping a physical page (of a logical segment) that was previously reserved in response to another page fault for another page in the first logical segment | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
CN111930643B (zh) | 一种数据处理方法及相关设备 | |
US8429339B2 (en) | Storage device utilizing free pages in compressed blocks | |
US20140223072A1 (en) | Tiered Caching Using Single Level Cell and Multi-Level Cell Flash Technology | |
US11126553B2 (en) | Dynamic allocation of memory between containers | |
CN112286838A (zh) | 存储设备可配置的映射粒度*** | |
CN117130955A (zh) | 用于管理相关联的存储器的方法和*** | |
US20130173855A1 (en) | Method of operating storage device including volatile memory and nonvolatile memory | |
CN109213423A (zh) | 基于地址屏障无锁处理并发io命令 | |
CN110674051A (zh) | 一种数据存储方法及装置 | |
CN113986773A (zh) | 基于固态硬盘的写放大优化方法、装置及计算机设备 | |
CN113918087B (zh) | 存储装置以及用于管理存储装置中的命名空间的方法 | |
US20150134909A1 (en) | Managing read operations, write operations and extent change operations | |
CN114518962A (zh) | 内存的管理方法及装置 | |
CN115168317A (zh) | 一种lsm树存储引擎构建方法和*** | |
CN114546661A (zh) | 基于内存变换的动态内存分配方法及装置 | |
US10810016B2 (en) | Operating methods of computing devices comprising storage devices including nonvolatile memory devices, buffer memories and controllers | |
CN107643987B (zh) | 减少固态硬盘中dram使用的方法及使用其的固态硬盘 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |