CN107844267A - 缓冲区分配和存储器管理 - Google Patents
缓冲区分配和存储器管理 Download PDFInfo
- Publication number
- CN107844267A CN107844267A CN201710822901.2A CN201710822901A CN107844267A CN 107844267 A CN107844267 A CN 107844267A CN 201710822901 A CN201710822901 A CN 201710822901A CN 107844267 A CN107844267 A CN 107844267A
- Authority
- CN
- China
- Prior art keywords
- page
- buffering area
- memory
- address
- distributed
- 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.)
- Granted
Links
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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Abstract
本申请涉及缓冲区分配和存储器管理。描述了用于缓冲区分配和存储器管理的方法和装置。存储器的多个缓冲区可以通过存储器控制器进行分配,其中缓冲区具有可变大小。存储器控制器可以维持将多个访问密钥中的每一个访问密钥关联到存储器的多个页面中的多个页面地址中的相应的一个页面地址的映射表。缓冲区中的每一个可以分别包括存储器的多个页面中的一个或更多个连续页面。多个页面中的每个页面可以包括存储器的一个或更多个块。
Description
技术领域
本公开总体上涉及存储器分配,且更具体地涉及按需、高效率和高性能的大小可变的缓冲存储器分配。
背景
在其中使用存储器来存储数据的计算装置中,通常将存储器划分为分配给在计算装置上执行的程序的多个部分以存储用于程序的数据。当存储器的每个被分配部分不再被分配了存储器的部分的相应的程序需要时,该存储器的每个被分配的部分被解除分配以便重新使用。然而,存在与现有的缓冲区分配和管理方法相关联的若干问题。例如,存储器的每个部分的分配大小通常是预先指定的,并且有时可能大于所需的大小。根据现有方法进行的缓冲区分配的效率往往也不太理想,因为需要存储器的一部分的程序可能没有为其分配缓冲区的任何部分。在某些情况下,在访问存储器时存在长延迟和低吞吐量。
附图简述
参考以下附图,描述了本公开的非限制性和非穷尽的实施例,其中,除非以其它方式说明,在所有的各个附图中相似的参考数字指代相似的部分。
图1是可以实现根据本公开的各种实施例的示例方案的图示。
图2是可以根据本公开的实施例实现的示例场景的图示。
图3是根据本公开的实施例的示例装置的简化框图。
图4是根据本公开的实施例的示例过程的流程图。
详细描述
在以下描述中,参考了形成说明书的一部分的随附附图,并且其中以通过说明其中可实践本公开的具体示例性实施例的方式示出。对这些实施例进行足够详细的描述,以使本领域技术人员能够实践本文公开的概念,并且应当理解,可以对各种公开的实施例进行修改,并且可以利用其他实施例,而不脱离本公开的范围。因此,以下详细描述不被认为是限制性的意义。
概要
本公开旨在克服与现有的缓冲区分配和管理方法相关联的各种问题。在根据本公开的各种实施例中,用于大小可变的缓冲存储器分配的新方案提供了具有高效率和高性能的按需分配。根据本公开,句柄分配(handle allocation)与存储块支出(memory blockcommitment)分离,并且在句柄请求时间处不需要预先指定分配大小。此外,根据本公开的实施例允许确定性分配结果。例如,存储器的一个或更多个块的分配在一个块空闲时被保证,并且对现有存储器的完全使用提高了效率。此外,根据本公开的实施例呈现了快速分配、高吞吐量访问和有限的访问延迟。另外,根据本公开,客户端用于读取和/或写入的地址是连续的。也就是说,当客户端向客户端被分配的地址添加字节偏移(offsets)时,即使数据可能实际存储在彼此不连续的物理地址中,地址也是从一个块无缝地指向相同缓冲区中的下一个块。
本公开提出了一种关于在缓冲存储器中分配空间的方案、机制和技术以及相关联的系统。根据本公开的实施例可以在具有存储缓冲区的两种主要类型的存储器的集成电路(IC)芯片中实现,该两种主要类型的存储器即为片上存储器和片外存储器。片上存储器可以分布在核心和/或虚拟处理器的集群之中。片外存储器可以被划分成多个集合。存储器分区中的一些可能是由于物理设计中的限制,以至于提供片外存储器与核/虚拟处理器的紧密接近。
在根据本公开的各种实施例中,可以使用缓冲区分配器和存储器管理(BAM)机构来实现按需、高效率和高性能的缓冲区分配和存储器管理。对于片上存储器和片外存储器,存储器的物理组织和结构可能是不同的。然而,存储器的物理组织和结构对于外部客户端(如外部引擎)是隐藏的。这有利地允许外部客户端使用相同的应用程序接口(API)来与BAM机构连接,而与存储器的物理组织和结构无关。
在本公开所提出的方案中,外部客户端可以分配大小可变的且连续的缓冲存储器来存储数据。缓冲存储器可以是可扩展的或不可扩展的。例如,要存储的数据可以是诸如来自以太网端口的网络包的数据包、或表示从主机或持久性存储器控制器(例如,固态驱动器或SSD)获得的储存的包。BAM机构可以向外部客户端提供标识分配给外部客户端的特定缓冲区的唯一名称。随后,外部客户端可以使用唯一名称以及偏移与BAM机构通信,以访问被分配的缓冲区来进行读取和写入事务。在提出的方案下,物理存储器的地址对于外部客户端是不可见的,因为与缓冲区相关联的物理存储器的每个地址都包含在BAM机构中并由BAM机构管理。
示例方案
图1示出了其中可以实现根据本公开的各种实施例的示例方案100。方案100可以涉及根据本公开执行各种操作以呈现按需、高效率和高性能的缓冲区分配和存储器管理的BAM机构105。参考图1,BAM机构105可以包括各种功能块,诸如存储器控制器110、映射表120和存储器130。功能块中的每个可以以硬件、固件、软件或其任何组合的形式来实现。例如,存储器控制器110可以用硬件、固件和软件的组合来实现。映射表120可被实现为存储在存储器控制器110中的或由存储器控制器110存储的数据。存储器130可以以硬件的形式实现。
在本公开中,术语“块”是指用于存储用于读取和写入事务的数据的基本单元(和最小单元)。块大小对于存储器130可以是固定的。在一些实施例中,块大小可以是128B(128字节)。
在本公开中,术语“页面”是指分配和解除分配的单元。每个页面可包括一个或更多个块。例如,对于片上存储器,每个页面可以包括一个单个块。也就是说,对于片上存储器,页面大小可以与块大小相同。在其中块大小为128B的实施例中,对于片上存储器,页面大小也可以是128B。作为另一示例,对于片外存储器,每个页面可以包括多个块。换句话说,对于片外存储器,页面大小可以大于块大小。在一些实施例中,对于片外存储器,每个页面可以包括128个块,且因此,页面大小可以是16KB。用于片外存储器的分配额可以大于片上存储器,以便最小化BAM机构105中的控制结构的成本(例如,从静态随机存取存储器(SRAM)位的角度)。
在本公开中,术语“缓冲区”是指在相关联的缓冲区空间中连续的多个页面,或一个或更多个页面。
在本公开中,术语“缓冲区句柄”(bufferHandle)指的是指示标识已经被分配的特定缓冲区的唯一名称的字段。在一些实施例中,缓冲区的地址的一个或更多个最高有效位可用于表示相应的BAM号。
在本公开中,术语“页面偏移”(pageOffset)是指指示给定缓冲区中的页号的字段。
在本公开中,术语“块偏移”(blockOffset)是指指示给定页面中的块号的字段。在页面大小等于块大小的情况下(例如,对于片上存储器),块偏移的值为零。
在本公开中,术语“页面地址”(pageAddress)是指指示页面的字段的物理地址。数据实际存储在存储器中的物理地址对于外部客户端是不可见的。
回到方案100,与BAM机构105中的存储器130相关联的物理存储器可以用固定大小的页面来实现。例如,对于片上缓冲存储器,每个页面可以包括一个块。类似地,对于片外缓冲存储器,每个页面可以包括固定数量的块(例如,128个块)。作为示例,软件客户端用于访问数据的地址(例如,64位地址)可以由缓冲区句柄的多个位、用于页面或块的字节地址的多个位(例如,6位)、用于页面偏移的多个位(例如,5位)、用于块偏移的多个位(例如,5位)、以及用于字节偏移的多个位(例如,5位)构成。虽然图1中描绘了BAM机构105的一个实例,但是方案100不限于BAM机构105的单个实例的背景。相反,方案100可以适用于具有多个BAM机构105的实例的场景。下面的表1提供了在方案100下可实现的数据结构的示例。
表1:示例数据结构
片内存储器 | 片外存储器 | |
BAM机构的实例数 | 16 | 2 |
每个BAM机构的总存储器大小 | 2MB | 1GB |
块数 | 16K | 8M |
每页面的块数 | 1 | 128 |
页面的数量 | 16K | 128K |
缓冲区数量 | 16K | 128K |
在一些实施例中,存储器控制器110可以维持映射表120以将页面的页面地址与对于存储器130的被分配页号的相应访问密钥相关联或以其他方式相关联。映射表120可以是关联表,并且可以用例如内容可寻址存储器(CAM)来实现。参考图1,映射表120可以包括多个条目125(1)-125(N),其中N是大于或等于1的正整数。条目125(1)-125(N)中的每个条目可以存储访问密钥和页面地址的相应的对,以指示相应的访问密钥和页面地址之间的关联或相关性。在一些实施例中,访问密钥可以包括缓冲区句柄和页面偏移的字段,并且可以表示为{缓冲区句柄,页面偏移}。此外,可以使用页面地址和块偏移的两个字段访问给定页面中的特定块。页面地址字段在BAM机构105之外是不可见的,并通过映射表120导出。
在一些实施例中,BAM机构105可以包括额外的功能块,诸如签出块表(check-outblock table)140、有效页面向量(valid page vector)150、空闲页面向量(free pagevector)160和空闲页面计数器(free page counter)170。
存储器控制器110可以使用有效页面向量150来保持跟踪有效页面的数量。存储器控制器110可以使用空闲页面向量160来保持跟踪未被分配并且可用于分配的空闲页面。在一些实施例中,空闲页面向量160可以以位阵列的形式实现,使得向量中的位的位置可以确定给定页面的页面地址。在这种情况下,存储器控制器110可以在空闲页面向量160中找到用于空闲页面的地址的第一位组。
空闲页面计数器170可以用作计数器,并且可以由存储器控制器110用于保持跟踪在任何给定时间处的空闲页面的数量。在一些实施例中,空闲页面计数器170使得能够实现当数据块要写入页面时分配页面的“懒惰分配(lazy allocation)”方案。
在BAM机构105中,存储器控制器110可以从外部客户端接收各种命令。命令可以包括例如且不限于写入命令、读取命令、释放页面命令和补充(replenish)(或信用页面)命令。
外部客户端可以使用写入命令将数据写入块,并随写入命令提供缓冲区句柄、页面偏移和块偏移的字段。在一些实施例中,将数据写入一个或更多个块的写入命令可以表示为写入块(缓冲区句柄,页面偏移,块偏移,数据,标记(Flags))。存储器控制器110可以使用包括缓冲区句柄和页面偏移或{缓冲区句柄,页面偏移}的字段的访问密钥来在映射表120中查找对应的页面地址。在页面(或其对应的页面地址)与给定访问密钥相关联的情况下,存储器控制器110可以使用对应的页面地址来写入块。在没有页面(或其对应的页面地址)与给定访问密钥相关联的情况下,存储器控制器110可以利用对应于访问密钥的新的页面地址更新映射表120。在页面偏移字段的值为零的情况下,存储器控制器110可以使用缓冲区句柄字段作为可用于分配的空闲页面的地址。这是因为不需要对在缓冲区内的第一页面分配映射表120中的条目。可选地,存储器控制器110可以分配空闲页面并相应地更新映射表120。在一些实施例中,在方案100下,外部客户端可以在发出写入命令之前检查空闲页面。这保证了对于每个写入命令的可用空闲页面。
对于用于关于写入命令存储数据的缓冲区的一个或更多个块的最后一个块,写入命令中的标志字段可以设置至“最后一页”。这允许存储器控制器110在存储器控制器110接收到缓冲区的最后写入之后将缓冲区的状态设置为“有效”。当缓冲区的状态是“被分配但不是有效的”时,对该缓冲区的任何读取命令或释放页面命令可被存储器控制器110排队或挂起,并且当缓冲区的状态是“有效”时可以继续。在一些实现中,最后一个块的“最后一页”标志可以在所有先前的页面被写入之前到达BAM机构105的存储器控制器110。只要存储器控制器110维持每个句柄计数器来跟踪已写入的页面的数量以及“最后页”标志的最大数目,则这是可以接受的。因此,当计数器达到最大值时,存储器控制器110可以确定整组页面已被写入,并且可以发送回复以指示所有写入操作已经完成。
外部客户端可以使用读取命令从块中读取数据,并随读取命令提供缓冲区句柄、页面偏移和块偏移的字段。在一些实施例中,用于从一个或更多个块读取数据的读取命令可以表示为读取块(缓冲区句柄,页面偏移,块偏移)。在接收到读取命令时,存储器控制器110可以首先检查受读取命令影响的缓冲区的状态。当缓冲区的状态是“有效”时,存储器控制器110可继续执行读取命令;否则,当缓冲区的状态是“被分配但不是有效的”时,存储器控制器110可以排队或挂起读取命令的执行。存储器控制器110可以使用{缓冲区句柄,页面偏移}的访问密钥来查找映射表120。在映射表120中存在与访问密钥对应的页面地址的情况下,存储器控制器110可以使用页面地址和块偏移或{页面地址,块偏移}的字段从存储器130中读取特定块。在映射表120中不存在与访问密钥对应的页面地址的情况下,存储器控制器110可以响应于读取命令返回故障或错误消息。
外部客户端可以通过使用补充(或信用页面)命令来预取缓冲区句柄和多个关联的页面。在一些实施例中,补充(或信用页面)命令可以表示为信用页面(数字)(creditPages(number)),其中数字字段指示正在预取的页面的数量。例如,信用页面(数字=2)的补充命令指示外部客户端正在请求两个页面来存储数据包。在接收到补充命令时,如果计数器值大于请求页面的数量,则存储器控制器110可以将空闲页面计数器170的计数值减小补充命令中的数字字段的值。否则,在计数器值不大于请求页面的数量的情况下,存储器控制器110可以使补充命令排队并在足够的页面可用之后发送回复。由于可能存在多个外部客户端(例如,软件客户端)请求不同数量的页面(或信用)并且被分配所请求的页面的数量(或信用),存储器控制器110可以累积所分配的信用。因此,当写入数据到一个或更多个预取页面的写入操作完成时,存储器控制器110可以减少所分配的信用的累积计数。有利地,上述信用方案在根据本公开的各种实施例中是重要的,以便在分配N个页面时避免执行O(N)操作。这样,添加到BAM机构105的映射表120中的成本被散布到每个写入操作。因此,分配和写入花费了与大小无关的恒定时间量。
在一些实施例中,外部客户端可以发出信用页面(数字=0)的补充命令来接收缓冲区句柄但没有页面。因此,作为该特定命令的结果,空闲页面计数器170的计数器值可以保持不变并且不减小。此外,存储器控制器110可以从空闲页面向量160中分配一个空闲页面,并且响应于该特定的补充命令将其作为缓冲区句柄进行发送。
当外部客户端不再使用要被解除分配的缓冲区时,外部客户端可以发出释放页面命令来释放或以其他方式解除分配缓冲区。在一些实施例中,空闲页命令可以表示为释放(缓冲区句柄,数字)(Free(bufferHandle,number)),数字字段指示要解除分配的缓冲区中的页面的数量。在接收到释放页面命令时,存储器控制器110可以首先检查受读取命令影响的缓冲区的状态。当缓冲区的状态是“有效”时,存储器控制器110可继续执行读取命令。否则,当缓冲区的状态是“被分配但不是有效的”时,存储器控制器110可以使释放页面命令的执行排队或挂起释放页面命令的执行。在释放页面命令的执行期间页面不存在于映射表120中的情况下,存储器控制器110可以用错误消息进行回复。
在一些实施例中,可以建立和维持单独的表或数据库以支持不同的资源池。该特征允许在例如而不限于诸如网络计算和直接存储器访问(DMA)临时缓冲的不同功能之间更好地预留资源。这种表或数据库中的条目可以通过现有应用程序接口(API)的每个中指定的池标识字段来更新和检查。
在方案100的各种实施例中,分配的缓冲存储器的大小或数量可以在任何时间和在最小和最大范围内增加或减少。有利地,可以通过在映射表120中添加一个或更多个条目来增加分配的缓冲存储器的大小或数量,并且可以通过去除映射表120中的一个或更多个条目来减少所分配的缓冲存储器的大小或数量。相反,在传统的方法和设计中,需要提前确定分配的缓冲存储器的大小。此外,方案100从分配器的软件角度提供了良好匹配,其中标准是例如提供malloc()、free()和realloc()作为入口点的POSIX malloc()库。
此外,方案100允许远程客户端远程缓存和/或预留分配。通常,需要分配的地方(例如,客户端)与分配器不在同一位置,而这意味着,对于客户端发送请求到分配器并从分配器接收回复,某些通信延迟(例如,几个时钟周期的量级)可能是不可避免的。方案100支持远程客户端可以预先预留缓冲存储器分配的模型。在远程客户端侧进行的示例过程可能涉及以下项:(1)客户端可以向分配器抢先请求预留多个缓冲区句柄;(2)客户端还可以请求预留多个块;(3)当客户端需要新的分配时,客户端可以写入预留的缓冲区句柄中的一个预留的缓冲区句柄的分配的块并可以减少一个预留计数;(4)当缓冲区句柄已经被消耗或当预留低于某个阈值时,客户端可以请求更多的缓冲区句柄和更多的块来补充预留。值得注意的是,缓冲区句柄的数量和预留的块的数量可能彼此无关,而这非常适合于其中客户端提前不了解所需分配的大小的应用程序。在方案100下,当分配器向客户端供应可用句柄列表中的缓冲区句柄时,分配器可以从空闲的或可用句柄的列表中去除给定的缓冲区句柄。当分配器供应多个块(例如,多个块)用于预留时,分配器可以将表示预先预留的块的数量的计数器增加所供应的块的数量。该计数器可用于确保空闲的或可用块列表中的块数超过预留的块数。分配器可以在写入新块时的任何时间减量计数器以指示可用块数量的减少。例如,可以使用签出块表140来跟踪或以其他方式维持分配器供应给一个或更多个客户端的块的数量的计数。随着一个或更多个块分别被供应给客户端以及变得可用,签出块表140中的计数可以由分配器来增量和减量。
此外,方案100有利地限制了客户端需要预留的量。考虑具有64字节分配额的示例情况,客户端可能需要每个周期分配64个字节,可能从64字节到24*64字节(或1536字节)的可变大小,其中假设与分配器进行通信的往返时间是10个周期。在方案100下和根据本公开的各种实施例中,10个缓冲区句柄和24个块的高速缓存的预留可能是足够的。当缓冲区句柄和块被耦合时,需要预留最大大小的10个缓冲区句柄,因为客户端不能猜测客户端可能获得哪个,这意味着240个块的预留。
值得注意的是,根据本公开的各种实施例,缓冲区句柄的分配和页面的分配可以彼此解耦。也就是说,可以分配和解除分配页面,而不用关注缓冲区句柄。同样地,缓冲区句柄可以被分配和解除分配而不用关注页面。
在常规方法和设计中,常见的模式是分配看似连续的存储器区域,然后在发生任何读取或更新之前填充每个块。当写入块时,将确认发送回请求者,以让请求者(例如,客户端)知道写入完成。因此,初始填充过程通常包括可以在没有请求者等待回复的情况下发生的N个写入请求,随后是对于N个回复的等待。注意,如果通信结构不保证顺序,N个回复可能会无序地返回到请求者。直到收到N条回复,其余的处理(例如,读取和/或更新)才能发生。通常,客户端知道什么时候进行最后一次写入,并且可以使用诸如“这是初始的写入批次的最后一次写入”的信息来标记该最后一次写入。
在方案100的各种实施例中,分配器在其接收到所有初始写入之后发送一个回复而不是N个回复。有利地,这减少了通信流量并且简化了客户端,因为它仅需要等待一个回复而不是N个回复。在可以按顺序保持多次写入回复的通信网络的情况下,可以通过标记最后一次写入来完成。在不保证顺序的通信网络的情况下,方案100在接收到多个初始写入之后仍然可以实现发送一个回复。在一些实施例中,每个写入请求可以具有两个标志,即“初始写入”标志和“最后写入”标志,其中除非“初始写入”标志也被设置,否则不能设置“最后写入”标志。在一些实施例中,对于给定的缓冲区句柄,分配器可以保持跟踪以下内容:(a)分配器是否已经看到“最后写入”标志,(b)对于缓冲区句柄分配器已经看到最大块偏移,以及(c)已经用“初始写入”标志设置写入的偏移的数。在一些实施例中,当分配器接收到没有“初始写入”标志的请求时,分配器可以像往常一样发送回复。在一些实施例中,在接收到具有“初始写入”标志设置的请求并且最大块偏移等于偏移数减1之后,分配器可以确定已经接收了所有块,而不管到达的顺序,且因此可以发送一个回复。有利的是,这种方法的优点是强制直到分配被初始填充才发生正常写入。这是因为初始写入扩展分配,而非初始写入不扩展分配。
在方案100的各种实施例中,由于信息可根据缓冲区句柄进行存储并且由于存在有效和便宜地存储信息的根据句柄的计数器,因此根据句柄的元数据可以容易地存储。这样的元数据可以实现多种用途,包括参考计数和“颜色”。参考计数分配可以用于使几个共同所有者共享分配并且独立地释放分配。使用根据句柄侧的表来存储相关的根据句柄的元数据,这可能变得实现相对便宜。对于“颜色”,颜色可以表示分配给定缓冲存储器的人。在一些实施例中,颜色可以在分配请求中传递,并且可以被分配器隐藏。在颜色的示例使用中,在确定分配泄漏(例如,某人忘记解除分配)的情况下,可以通过调试协议请求颜色以帮助找到问题的根本原因。在另一个颜色的示例使用中,颜色可以用于强制隔离不同的活动。例如,某个活动可能会传递一个颜色用于分配以及所有的读取和写入。因此,在读取或写入的颜色与分配的颜色不匹配的情况下,可以确定存在错误并因此可能引起异常。有利的是,这可能有助于调试固件中的存储器超限和其他错误。
鉴于以上内容,本领域普通技术人员将认识到,根据本公开的各种实现允许分配多达16K缓冲区句柄,并且支持16K页面。对于片上BAM机构,页面大小可以等于128字节。在缓冲区使用存储器空间的一个以上的页面的情况下,可以相应地减少分配的缓冲区句柄的数量。可以基于最坏的可能情况来确定不同数据结构的深度。在一些实施例中,缓冲区句柄状态存储器可用于存储与给定缓冲区和地址字段相关联的页面的数量。基于页面的数量,地址字段可指向不同的数据结构。在一些实施例中,在分配单个页面的情况下,地址字段可以是空的,因为缓冲区句柄可以实际上是该单个页面的地址。在一些实施例中,在分配两个页面的情况下,地址字段可以包含两个页面的第二页面的地址。在一些实施例中,在分配三到五个页面的情况下,地址字段可以指向可能包含多达四个页面的四页(4P)存储器条目。4P存储器条目可以存储多达缓冲存储器的四个页面地址。这种结构的深度大小可以基于缓冲存储器中具有三个页面的缓冲区的最大数量(例如,16K除以3得到5462)。在一些实施例中,在分配六至十七个页面的情况下,地址字段可以指向十六页(16P)存储器条目。16P存储器条目可以存储高达4P存储器条目的四个地址。这种结构的深度的大小可以基于缓冲存储器中具有六个页面的缓冲区的最大数量(例如,16K除以6得到2731)。在一些实施例中,可以使用一百二十八页(128P)存储器来存储多达16P存储器条目的八个地址。这种结构的宽度可能足以存储大小为128页的缓冲存储器。这种结构的深度大小可以基于缓冲存储器中具有18页的缓冲区的最大数量(例如,16K除以18)。下面的表2提供了不同大小的缓冲存储器可以如何依据根据本公开的一些实施例的方案100来确定大小的示例的概述。
表2:不同大小的缓冲存储器的示例大小
在方案100的各种实施例中,每个存储器读取可以花费单个周期,而另一周期可以被预留用于纠错码(ECC)计算和下一个存储器地址的生成。在一些实施例中,可以在八个周期(例如,在四个顺序存储器读取中)生成页面地址。在一些实施例中,散列表设计存储器延迟可以是大约四个周期。
表3:示例管道
图2示出了可以实现根据本公开的实施例的示例场景200。应当理解,提供场景200作为非限制性示例来说明方案100的优点,且因此,本公开的范围不限于场景200或由场景200限制。在场景200中,基本存储器块的大小为64B。作为示例,第一分组(在图2中表示为“分组0”)具有64B的大小,并且第二分组(在图2中表示为“分组1”)具有1500B的大小。因此,在物理存储器空间210中用一个块来存储分组0的数据,而在物理存储器空间210中用多个块来存储分组1的数据。在物理存储器空间210中,用于存储分组1的数据的多个块可以由其他存储器块分开,且因此不是连续的。换句话说,物理存储器空间210中的分组1的多个块的物理地址不是连续的。
在场景200中,使用映射表220将用于分组的块的访问密钥映射到物理存储器空间210中的它们相应的物理地址。对于分组1,作为示例,映射表220将多个访问密钥与分组1的多个块的多个物理地址(尽管不是连续的)相关联或以其他方式相关联。有利地,利用根据本公开的实施例的映射表220,可以在恒定时间内分配可扩展或不可扩展的可变大小的缓冲区,并且具有多个块的给定分组的块可以看起来具有在物理缓冲空间中的连续地址,如图2中的物理缓冲空间230所示。
相比于物理缓冲区空间230,也在情景200中示出的是出现在虚拟空间240中的存储器中的缓冲区(例如,如图2所示的缓冲区0-缓冲区N)的集合。虚拟空间240可能看起来是非常大的空间,其中每个缓冲区以非常大的增量开始(例如,对于最大大小的分组)。虚拟空间240中的每个缓冲区可以包括多个页面,并且页面可以从每个缓冲区偏移开始连续分配。然而,在物理缓冲空间230中,与虚拟空间240相比,它可能非常紧凑。此外,可以随机地分配页面,并且总空间可以对应于虚拟空间240中实际可以使用的存储器的量。
示例装置
图3示出了根据本公开的实施例的示例装置300。装置300可以执行与本文描述的方案、机制、技术、过程和方法相关的各种功能,包括上述示例方案100和场景200以及下面描述的示例过程400。装置300可以是BAM机构105的示例实现,或者是全部或者是部分。因此,上面关于方案100描述的实施例和技术可应用于装置300。
在一些实施方案中,装置300可以是电子装置或其部件,并且电子装置可以是例如但不限于智能电话、智能可穿戴装置、移动或其它方式的便携式装置、成像装置或诸如平板计算机、膝上型计算机、笔记本计算机、台式计算机或服务器之类的计算装置。在一些实现中,装置300可以以一个或更多个IC芯片的形式实现,例如但不限于一个或更多个多核中央处理单元(CPU)和/或一个或更多个单核CPU。
装置300可以包括图3中所示的那些部件中的一些或全部,诸如存储器控制器310和相关联的存储器。存储器可以包括第一类型存储器和第二类型存储器。第一类型存储器可以包括片上存储器330,并且第二类型存储器可以包括片外存储器340。片上存储器330可以与一个或更多个核350(1)-350(M)共同定位在一个或更多个IC芯片(诸如IC芯片305)上,其中M是大于或等于1的正整数。片上存储器330可由至少一个或更多个核350(1)至350(M)中的第一核访问。片外存储器340可以位于一个或更多个IC芯片(诸如IC芯片305)之外,并且可以至少由一个或更多个核350(1)-350(M)中的第二核访问。
存储器控制器310可以通信地耦合到存储器(包括片上存储器330和片外存储器340),以通过一个或更多个核350(1)-350(N)和任何数量的外部客户端来控制对存储器的访问。存储器控制器310可以被配置为执行多个操作以根据本公开呈现按需、高效率和高性能的缓冲区分配和存储器管理。例如,存储器控制器310可以分配存储器的多个缓冲区,缓冲区具有可变大小。在一些实施例中,存储器控制器310可允许可扩展的缓冲区。可选地或附加地,存储器控制器310可以分配不可扩展的缓冲区。存储器控制器310还可以维持映射表320,其将多个访问密钥中的每一个关联到缓冲区的多个页面的多个页面地址中的相应的一个页面地址。缓冲区中的每一个可以分别包括缓冲区的多个页面中的一个或更多个连续的页面。多个页面中的每个页面可以包括用于数据储存的一个或更多个块。在一些实施例中,在片上存储器330中,每个页面可以包括单个存储器块,并且在片外存储器340中,每个页面可以包括多个存储器块。
在一些实施例中,在分配存储器的多个缓冲区时,存储器控制器310可以在恒定时间内分配可变大小的多个缓冲区中的每一个。在一些实施例中,对于具有多个页面的多个缓冲区的每个缓冲区,多个页面可以在缓冲区内具有连续页面地址。
在一些实施例中,在分配存储器的多个缓冲区时,存储器控制器310可以被配置为对于多个缓冲区的每个缓冲区执行多个操作。例如,存储器控制器310可以向缓冲区分派唯一的缓冲区句柄。此外,存储器控制器310可以分配缓冲区中包括的一个或更多个连续页面中的页面来存储数据,其中所分配的页面具有多个页面地址中的相应的页面地址。此外,存储器控制器310可以确定所分配的页面的页号,其中缓冲区的唯一缓冲区句柄和所分配的页面的页号形成用于缓冲区的多个访问密钥的相应的访问密钥。此外,存储器控制器310可以在映射表320中为缓冲区的所分配的页面创建相应的条目,其中该相应的条目将所分配的页面的相应的页面地址与相应的访问密钥相关联。如上所述,在根据本公开的各种实施例中,页面的分配和缓冲区句柄的分配可以彼此解耦。也就是说,页面可以被分配和解除分配,而不用关注缓冲区句柄。类似地,缓冲区句柄可以被分配和解除分配,而不关注页面。
在一些实施例中,存储器控制器310可被进一步配置为执行关于补充事务的操作。例如,存储器控制器310可以接收(例如,从外部客户端或一个或更多个核350(1)-350(M)中的任一个)请求缓冲区的多个页面的数量的补充命令。存储器控制器310可以确定所请求的页面的数量是否超过可用于分配的缓冲区的空闲页面的量。响应于确定所请求的页面的数量不超过可用于分配的缓冲区的空闲页面的量,存储器控制器310可以执行以下操作:(1)响应于补充命令选择用于分配的空闲页面,其中所选择的空闲页面具有多个页面地址中的相应的页面地址;(2)为所选择的空闲页面分配唯一缓冲区句柄;和(3)提供指示所选择的空闲空间的唯一缓冲区句柄的响应。此外,存储器控制器310可以确定所选择的空闲页面的页号,其中所选择的空闲页面的唯一缓冲区句柄和所选择的空闲页面的页号形成多个访问密钥中的相应的访问密钥。此外,存储器控制器310可以在映射表320中创建相应的条目,其中相应的条目将对应的访问密钥与所选择的空闲页面的相应的页面地址相关联。此外,存储器控制器310可以将空闲页面计数器减小补充命令所请求的页面的数量。
在一些实施例中,存储器控制器310还可被配置为执行关于写入事务的操作。例如,存储器控制器310可以接收(例如,从外部客户端或者一个或更多个核350(1)-350(M)中的任何一个)写入命令,以将数据写入到多个缓冲区中的缓冲区的一个或更多个页面的一个或更多个块中。存储器控制器310可以确定映射表320是否包括与写入命令相关联的一个或更多个页面中的一个页面的页面地址的条目。响应于确定映射表320包括与写入命令相关联的一个或更多个页面中的一个页面的页面地址的条目,存储器控制器310可以将数据写入缓冲区的一个或更多个页面的一个或更多个块中。响应于确定映射表320不包括与写入命令相关联的一个或更多个页面中的一个页面的页面地址的条目,存储器控制器310可以执行以下操作:(1)识别用于存储写入命令的数据的多个缓冲区中的缓冲区的唯一缓冲区句柄;(2)分配包括在缓冲区中的一个或更多个连续页面中的页面以存储数据,其中所分配的页面具有多个页面地址的相应的页面地址;(3)确定所分配的页面的页号,其中缓冲区的唯一缓冲区句柄和所分配的页面的页号形成用于缓冲区的多个访问密钥的相应的访问密钥;(4)在映射表320中针对缓冲区中的所分配的页面创建相应的条目,其中相应的条目将所分配的页面的相应的页面地址与相应的访问密钥相关联;和(5)将空闲页面计数器递减用于存储关于补充命令的数据的页面的数量。
在一些实施例中,存储器控制器310可以被进一步配置为执行关于读取事务的操作。例如,存储器控制器310可以(例如,从外部客户端或一个或更多个核心350(1)-350(M)中的任何一个)接收从多个缓冲区中的缓冲区的一个或更多个页面的一个或更多个块读取数据的读取命令。存储器控制器310可以确定缓冲区的状态是否有效。响应于确定缓冲区的状态有效,存储器控制器310可以从缓冲区的一个或更多个页面的一个或更多个块中读取数据。响应于确定缓冲区的状态不是有效的,存储器控制器310可以挂起读取命令的执行。
在一些实施例中,存储器控制器310可进一步被配置为执行关于释放页面事务的操作。例如,存储器控制器310可以(例如,从外部客户端或一个或更多个核350(1)-350(M)中的任何一个)接收释放页面命令来解除分配多个缓冲区中的缓冲区的一个或更多个页面。存储器控制器310可以确定缓冲区的状态是否有效。响应于确定缓冲区的状态有效,存储器控制器310可以通过执行以下操作来解除分配缓冲区:(1)去除映射表320中与被解除分配的缓冲区中的一个或更多个页面中的页面的页面地址相关的条目;和(2)将空闲页面计数器增加在被解除分配的缓冲区中的页面的数量。响应于确定缓冲区的状态不是有效的,存储器控制器310可以挂起释放页面命令的执行。
示例过程
图4示出了根据本公开的实施例的用于缓冲区分配和存储器管理的示例过程400。过程400可以包括一个或更多个显示为块的操作、动作或功能,例如410和420以及子块412、414、416和418。尽管被示为离散块,但是根据期望的实现,过程400的各个块可以被划分为另外的块,被组合成更少的块,或被消除。过程400的块可以按照图4所示的顺序执行,或以任何其他顺序执行,这取决于所需的实现。过程400可以由BAM机构105和装置300以及其任何变型和/或衍生来实现。仅仅为了说明的目的而非限制,下面以BAM机构105为背景描述了过程400。过程400可以在块410处开始。
在410处,过程400可以涉及BAM机构105的存储器控制器110,其分配存储器130的多个缓冲区,缓冲区具有可变大小。在分配缓冲区时,过程400可以涉及存储器控制器110对多个缓冲区中的每个缓冲区执行多个操作,如子块412、414、416和418所示。在412处,过程400可以涉及存储器控制器110向缓冲区分配唯一缓冲区句柄。在414处,过程400可以涉及存储器控制器110分配被包括在缓冲区中的一个或更多个连续页面的页面以存储数据,其中所分配的页面具有多个页面地址的相应的页面地址。在416处,过程400可以涉及存储器控制器110确定被分配的页面的页号,其中缓冲区的唯一缓冲区句柄和所分配的页面的页号形成对于缓冲区的多个访问密钥中的相应的访问密钥。在418处,过程400可以涉及存储器控制器110在映射表120中为缓冲区的所分配的页面创建相应的条目,其中相应的条目将分配的页面的相应的页面地址与相应的访问密钥相关联。过程400可以从410进行到420。
在420处,过程400可以涉及存储器控制器110维持映射表120,该映射表120将多个访问密钥中的每一个访问密钥关联到存储器130的缓冲区的多个页面中的多个页面地址中的相应一个页面地址。缓冲区中的每一个可以分别包括缓冲区的多个页面中的一个或更多个连续的页面。多个页面中的每个页面可以包括用于数据储存的一个或更多个块。
在一些实施例中,在分配存储器的多个缓冲区时,过程400可以涉及存储器控制器110在恒定时间内分配可变大小的多个缓冲区中的每一个。
在一些实施例中,对于具有多个页面的多个缓冲区中的每个缓冲区,多个页面可以在缓冲区内具有连续页面地址。
在一些实施例中,过程400可涉及存储器控制器110执行关于补充事务的进一步操作。例如,过程400可以涉及存储器控制器110从外部客户端接收请求缓冲区的一定数量的页面的补充命令。过程400还可以涉及存储器控制器110确定所请求的页面的数量是否超过可用于分配的缓冲区的空闲页面的量。响应于确定所请求的页面的数量不超过可用于分配的缓冲区的空闲页面的量,过程400可以涉及存储器控制器110执行以下操作:(1)响应于补充命令选择用于分配的空闲页面,其中所选择的空闲页面具有多个页面地址中的相应的页面地址;(2)为所选择的空闲页面分配唯一缓冲区句柄;和(3)提供指示所选择的空闲空间的唯一缓冲区句柄的响应。过程400可以另外涉及存储器控制器110确定所选择的空闲页面的页号,其中所选择的空闲页面的唯一缓冲区句柄和所选择的空闲页面的页号形成多个访问密钥中的对应的访问密钥。过程400还可以涉及存储器控制器110在映射表120中创建相应的条目,其中相应的条目将对应的访问密钥与所选择的空闲页面的相应的页面地址相关联。过程400还可以涉及存储器控制器110将空闲页面计数器递减掉由补充命令所请求的页面的数量。
在一些实施例中,过程400可涉及存储器控制器110执行关于写入事务的进一步操作。例如,过程400可以涉及存储器控制器110从外部客户端接收写入命令以将数据写入多个缓冲区中的缓冲区的一个或更多个页面的一个或更多个块中。过程400还可以涉及存储器控制器110确定映射表120是否包括对于与写入命令相关联的一个或更多个页面中的一个页面的页面地址的条目。响应于确定映射表120包括对于与写入命令相关联的一个或更多个页面中的一个页面的页面地址的条目,过程400可以涉及存储器控制器110将数据写入到缓冲区的一个或更多个页面的一个或更多个块中。响应于确定映射表120不包括对于与写入命令相关联的一个或更多个页面中的一个页面的页面地址的条目,过程400可以涉及存储器控制器110执行以下操作:(1)识别用于存储写入命令的数据的多个缓冲区中的缓冲区的唯一缓冲区句柄;(2)分配被包括在缓冲区中的一个或更多个连续页面中的页面来存储数据,其中所分配的页面具有多个页面地址中的相应的页面地址;(3)确定所分配的页面的页号,其中缓冲区的唯一缓冲区句柄和所分配的页面的页号形成用于缓冲区的多个访问密钥中的相应的访问密钥;(4)在映射表120中针对所分配的缓冲区的页面创建相应的条目,其中相应的条目将所分配的页面的相应的页面地址与相应的访问密钥相关联;和(5)将空闲页面计数器递减用于存储关于补充命令的数据的页面的数量。
在一些实施例中,过程400可涉及存储器控制器110执行关于读取事务的进一步操作。例如,过程400可以涉及存储器控制器110从外部客户端接收读取命令以从多个缓冲区中的缓冲区的一个或更多个页面的一个或更多个块读取数据。过程400还可以涉及存储器控制器110确定缓冲区的状态是否有效。响应于确定缓冲区的状态有效,过程400可以涉及存储器控制器110从缓冲区的一个或更多个页面中的一个或更多个块读取数据。响应于确定缓冲区的状态不是有效的,过程400可以涉及存储器控制器110挂起读取命令的执行。
在一些实施例中,过程400可涉及存储器控制器110执行关于释放页面事务的进一步操作。例如,过程400可以涉及存储器控制器110从外部客户端接收释放页面命令以解除分配多个缓冲区中的缓冲区的一个或更多个页面。过程400还可以涉及存储器控制器110确定缓冲区的状态是否有效。响应于确定缓冲区的状态有效,过程400可以涉及存储器控制器110通过执行以下操作来解除分配缓冲区:(1)去除映射表120中与被解除分配的缓冲区中的一个或更多个页面中的页面的页面地址有关的条目;和(2)将空闲页面计数器增加在被解除分配的缓冲区中的页面的数量。响应于确定缓冲区的状态不是有效的,过程400可涉及存储器控制器110挂起释放页面命令的执行。
在一些实施例中,存储器130可以包括片上存储器和片外存储器。片上存储器可以与一个或更多个核共同定位在一个或更多个IC芯片上,并且可以至少被一个或更多个核中的第一核访问。片外存储器可以位于一个或更多个IC芯片之外,并且可以至少被一个或更多个核中的第二核访问。
在一些实施例中,在片上存储器中,每个页面可以包括单个存储器块。此外,在片外存储器中,每个页面可以包括多个存储器块。
附加说明
如在本文使用的冠词“一(a)”和“一(an)”指冠词的语法对象的一个或多于一个(即,至少一个)。作为示例,“用户”是指一个用户或多于一个的用户。在整个该说明书中,提及的“一个实施例”、“实施例”、“一个示例”或“示例”意味着结合实施例或示例所描述的特定的特征、结构或特性被包括在本公开的至少一个实施例中。因此,在贯穿本说明书的各个地方中出现的短语“在一个实施例中”、“在实施例中”、“一个示例”或“示例”不一定都指相同的实施例或示例。此外,特定特征、结构、数据库或特性可以在一个或更多个实施例或示例中以任何适合的组合和/或子组合进行组合。此外,应当认识到,本文提供的附图是为了向本领域普通技术人员的解释目的,并且附图不一定按比例绘制。
根据本公开的实施例可以被体现为装置、方法或计算机程序产品。因此,本公开可采用完全包括硬件的实施例、完全包括软件的实施例(包括固件、驻留软件、微代码等等)或组合软件和硬件方面的实施例的形式,该软件和硬件方面可在本文中被称为“电路”、“模块”或“系统”。此外,本公开的实施例可采用计算机程序产品的形式,该计算机程序产品体现在具有在介质中体现的计算机可用程序代码的表达的任何有形介质中。
附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能的实施的架构、功能性和操作。就这点而言,在流程图或框图中的每个块可代表模块、程序段或代码的部分,该模块、程序段或代码的部分包括用于实现指定的逻辑功能的一个或更多个可执行指令。还要注意的是,框图和/或流程图中的每个块以及在框图和/或流程图中的块的组合可由执行指定功能或动作的专用的基于硬件的系统或专用的硬件和计算机指令的组合实现。这些计算机程序指令还可存储在计算机可读介质中,该指令可指导计算机或其他可编程数据处理装置以特定方式起作用,使得存储在计算机可读介质中的指令产生制造的物品,指令包括实现流程图和/或框图的一个或多个块中所指定的功能/动作的指令。
虽然根据某些实施例的方面描述了本公开,但是鉴于本公开的益处,其他实施例对于本领域普通技术人员也将是明显的,包括不提供本文所阐述的所有益处和特征的实施例,其也在本公开的范围内。要理解的是,其他的实施例可以被使用,而不偏离本公开的范围。
Claims (24)
1.一种缓冲区分配和存储器管理的方法,包括:
通过存储器控制器,分配存储器的多个缓冲区且所述缓冲区具有可变大小;和
通过所述存储器控制器,维持映射表,所述映射表将多个访问密钥中的每一个访问密钥关联到所述缓冲区的多个页面的多个页面地址中的相应的一个页面地址,
其中,所述缓冲区中的每个缓冲区分别包括所述缓冲区的所述多个页面中的一个或更多个连续的页面,以及
其中,所述多个页面中的每个页面包括用于数据储存的一个或更多个块。
2.根据权利要求1所述的方法,其中,所述存储器的所述多个缓冲区的分配包括在恒定时间内分配可变大小的所述多个缓冲区中的每个缓冲区。
3.根据权利要求1所述的方法,其中,对于所述多个缓冲区中具有多个页面的每个缓冲区,所述多个页面具有在所述缓冲区内的连续页面地址。
4.根据权利要求1所述的方法,其中,所述存储器的所述多个缓冲区的分配包括对所述多个缓冲区的每个缓冲区执行包括以下项的操作:
向所述缓冲区分配唯一缓冲区句柄;
分配被包括在所述缓冲区中的一个或更多个连续的页面中的页面以存储数据,其中所分配的页面具有所述多个页面地址中的相应的页面地址;
确定所分配的页面的页号,其中所述缓冲区的所述唯一缓冲区句柄和所分配的页面的所述页号形成用于所述缓冲区的所述多个访问密钥中的相应的访问密钥;以及
在所述映射表中为所述缓冲区的所分配的页面创建相应的条目,其中所述相应的条目将所分配的页面的相应的页面地址关联到所述相应的访问密钥。
5.根据权利要求1所述的方法,还包括:
接收补充命令,所述补充命令请求所述缓冲区的一定数量的页面;
确定所请求的页面的数量是否超过所述缓冲区的可用于分配的空闲页面的量;
响应于确定所请求的页面的数量不超过所述缓冲区的可用于分配的所述空闲页面的量,响应于所述补充命令选择用于分配的空闲页面,其中所选择的空闲页面具有所述多个页面地址中的相应的页面地址。
6.根据权利要求5所述的方法,还包括:
确定所选择的空闲页面的页号;
在所述映射表中创建相应的条目;以及
将空闲页面计数器减少由所述补充命令所请求的页面的数量。
7.根据权利要求1所述的方法,还包括:
接收写入命令以将数据写入所述多个缓冲区中的缓冲区的一个或更多个页面的一个或更多个块中;
确定所述映射表是否包括对于与所述写入命令相关联的所述一个或更多个页面中的一个页面的页面地址的条目;和
响应于确定所述映射表包括对于与所述写入命令相关联的所述一个或更多个页面中的一个页面的页面地址的条目,将所述数据写入所述缓冲区的所述一个或更多个页面的所述一个或更多个块中。
8.根据权利要求7所述的方法,还包括:
响应于确定所述映射表不包括对于与所述写入命令相关联的所述一个或更多个页面中的一个页面的页面地址的条目,执行包括以下项的操作:
识别用于存储关于所述写入命令的所述数据的所述多个缓冲区中的缓冲区的唯一缓冲区句柄;
分配被包括在所述缓冲区中的所述一个或更多个连续的页面的页面以存储所述数据,其中所分配的页面具有所述多个页面地址中的相应的页面地址;
确定所分配的页面的页号,其中所述缓冲区的唯一缓冲区句柄和所分配的页面的页号形成关于所述缓冲区的所述多个访问密钥中的相应的访问密钥;
在所述映射表中为所述缓冲区的所分配的页面创建相应的条目,其中所述相应的条目将所分配的页面的所述相应的页面地址关联到所述相应的访问密钥;和
将空闲页面计数器减去用于存储关于所述补充命令的数据的页面的数量。
9.根据权利要求1所述的方法,还包括:
接收读取命令以从所述多个缓冲区中的缓冲区的一个或更多个页面的一个或更多个块中读取数据;和
确定所述缓冲区的状态是否有效。
10.根据权利要求9所述的方法,还包括:
响应于确定所述缓冲区的状态有效,从所述缓冲区的所述一个或更多个页面的所述一个或更多个块中读取所述数据;和
响应于确定缓冲区的状态不是有效的,挂起所述读取命令的执行。
11.根据权利要求1所述的方法,还包括:
接收释放页面命令以解除分配所述多个缓冲区中的缓冲区的一个或更多个页面;和
确定所述缓冲区的状态是否有效。
12.根据权利要求11所述的方法,还包括:
响应于确定所述缓冲区的状态有效,通过执行包括以下项的操作来解除分配所述缓冲区:
在所述映射表中去除与在被解除分配的缓冲区中的一个或更多个页面中的页面的页面地址有关的条目;和
将空闲页面计数器增加在所述被解除分配的缓冲区中的页面的数量;和
响应于确定所述缓冲区的状态不是有效的,挂起所述释放页面命令的执行。
13.根据权利要求1所述的方法,其中,所述存储器包括片上存储器和片外存储器,其中,所述片上存储器与一个或更多个核共同定位在一个或更多个集成电路(IC)芯片上并且至少被所述一个或更多个核的第一核访问,并且其中,所述片外存储器位于所述一个或更多个IC芯片之外并且至少被所述一个或更多个核的第二核访问。
14.根据权利要求13所述的方法,其中,在所述片上存储器中,每个页面包括单个存储器块,并且其中,在所述片外存储器中,每个页面包括多个存储器块。
15.一种缓冲区分配和存储器管理的装置,包括:
存储器,所述存储器包括第一类型存储器和第二类型存储器;和
存储器控制器,所述存储器控制器通信地耦合到所述存储器以控制对所述存储器的访问,所述存储器控制器被配置为执行包括以下项的操作:
分配所述存储器的多个缓冲区,所述缓冲区具有可变大小;和
维持映射表,所述映射表将多个访问密钥中的每一个访问密钥关联到所述缓冲区的多个页面的多个页面地址中的相应一个页面地址,
其中,所述缓冲区中的每个缓冲区分别包括所述缓冲区的所述多个页面中的一个或更多个连续的页面,以及
其中,所述多个页面中的每个页面包括用于数据储存的一个或更多个块。
16.根据权利要求15所述的装置,其中,在分配所述存储器的所述多个缓冲区时,所述存储器控制器被配置为在恒定时间内分配可变大小的所述多个缓冲区中的每一个。
17.根据权利要求15所述的装置,其中,对于具有多个页面的所述多个缓冲区的每个缓冲区,所述多个页面具有在所述缓冲区内的连续页面地址。
18.根据权利要求15所述的装置,其中,在分配所述存储器的所述多个缓冲区时,所述存储器控制器被配置为对所述多个缓冲区中的每个缓冲区执行包括以下项的操作:
向所述缓冲区分配唯一缓冲区句柄;
分配被包括在所述缓冲区中的一个或更多个连续页面中的页面以存储数据,其中所分配的页面具有所述多个页面地址中的相应的页面地址;
确定所分配的页面的页号,其中所述缓冲区的所述唯一缓冲区句柄和所分配的页面的页号形成关于所述缓冲区的所述多个访问密钥中的相应的访问密钥;以及
在所述映射表中为所述缓冲区的所分配的页面创建相应的条目,其中所述相应的条目将所分配的页面的相应的页面地址关联到所述相应的访问密钥。
19.根据权利要求15所述的装置,其中,所述处理器控制器还被配置成执行包括以下项的操作:
接收补充命令,所述补充命令请求所述缓冲区的一定数量的页面;
确定所请求的页面的数量是否超过所述缓冲区的可用于分配的空闲页面的量;
响应于确定所请求的页面的数量不超过所述缓冲区的可用于分配的空闲页面的量,响应于所述补充命令选择用于分配的空闲页面,其中所选择的空闲页面具有所述多个页面地址中的相应的页面地址;
确定所选择的空闲页面的页号;
在所述映射表中创建相应的条目;和
将空闲页面计数器减去所述补充命令所请求的页面的数量。
20.根据权利要求15所述的装置,其中,所述存储器控制器还被配置成执行包括以下项的操作:
接收写入命令以将数据写入所述多个缓冲区中的缓冲区的一个或更多个页面的一个或更多个块中;
确定所述映射表是否包括对于与所述写入命令相关联的所述一个或更多个页面中的一个页面的页面地址的条目;
响应于确定所述映射表包括对于与所述写入命令相关联的所述一个或更多个页面中的一个页面的页面地址的条目,将所述数据写入所述缓冲区的所述一个或更多个页面中的所述一个或更多个块中;和
响应于确定所述映射表不包括对于与所述写入命令相关联的所述一个或更多个页面中的一个页面的页面地址的条目,执行包括以下项的操作:
识别用于存储关于所述写入命令的所述数据的所述多个缓冲区中的缓冲区的唯一缓冲区句柄;
分配被包括在所述缓冲区中的所述一个或更多个连续页面中的页面以存储所述数据,其中所分配的页面具有所述多个页面地址中的相应的页面地址;
确定所分配的页面的页号,其中所述缓冲区的唯一缓冲区句柄和所分配的页面的页号形成关于所述缓冲区的所述多个访问密钥中的相应的访问密钥;
在所述映射表中为所述缓冲区的所分配的页面创建相应的条目,其中所述条目将所分配的页面的相应的页面地址关联到所述相应的访问密钥;和
将空闲页面计数器减去用于存储关于所述补充命令的所述数据的页面的数量。
21.根据权利要求15所述的装置,其中,所述存储器控制器还被配置成执行包括以下项的操作:
接收读取命令以从所述多个缓冲区中的缓冲区的一个或更多个页面的一个或更多个块中读取数据;
确定所述缓冲区的状态是否有效;
响应于确定所述缓冲区的状态有效,从所述缓冲区的所述一个或更多个页面的所述一个或更多个块中读取所述数据;和
响应于确定缓冲区的状态不是有效的,挂起所述读取命令的执行。
22.根据权利要求15所述的装置,其中,所述存储器控制器还被配置成执行包括以下项的操作:
接收释放页面命令以解除分配所述多个缓冲区中的缓冲区的一个或更多个页面;
确定所述缓冲区的状态是否有效;
响应于确定所述缓冲区的状态有效,通过执行包括以下项的多个操作来解除分配所述缓冲区:
在所述映射表中去除与在被解除分配的缓冲区中的一个或更多个页面中的页面的页面地址有关的条目;和
将空闲页面计数器增加在所述被解除分配的缓冲区中的页面的数量;以及
响应于确定所述缓冲区的状态不是有效的,挂起所述释放页面命令的执行。
23.根据权利要求15所述的装置,其中,所述第一类型存储器包括片上存储器,其中所述第二类型存储器包括片外存储器,其中所述片上存储器与一个或更多个核共同定位在一个或更多个集成电路(IC)芯片上并且至少被所述一个或更多个核的第一核访问,并且其中所述片外存储器位于所述一个或更多个IC芯片之外并且至少被所述一个或更多个核的第二核访问。
24.根据权利要求23所述的装置,其中,在所述片上存储器中每个页面包括单个存储器块,并且其中,在所述片外存储器中每个页面包括多个存储器块。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/269,457 US10303375B2 (en) | 2016-09-19 | 2016-09-19 | Buffer allocation and memory management |
US15/269,457 | 2016-09-19 | ||
US15/347,547 | 2016-11-09 | ||
US15/347,547 US10209900B2 (en) | 2016-09-19 | 2016-11-09 | Buffer allocation and memory management using mapping table |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107844267A true CN107844267A (zh) | 2018-03-27 |
CN107844267B CN107844267B (zh) | 2020-07-24 |
Family
ID=61621002
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710822901.2A Active CN107844267B (zh) | 2016-09-19 | 2017-09-13 | 缓冲区分配和存储器管理 |
CN201710822528.0A Pending CN107844266A (zh) | 2016-09-19 | 2017-09-13 | 使用映射表的缓冲区分配和存储器管理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710822528.0A Pending CN107844266A (zh) | 2016-09-19 | 2017-09-13 | 使用映射表的缓冲区分配和存储器管理 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10209900B2 (zh) |
CN (2) | CN107844267B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835619A (zh) * | 2020-06-23 | 2021-12-24 | 美光科技公司 | 动态页激活 |
CN113867820A (zh) * | 2021-09-29 | 2021-12-31 | 深圳市智微智能软件开发有限公司 | 一种动态修改framebuffer的方法、装置、设备及存储介质 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3286640A4 (en) * | 2015-04-24 | 2019-07-10 | Optimum Semiconductor Technologies, Inc. | COMPUTER PROCESSOR HAVING SEPARATE RECORDS FOR ADDRESSING A MEMORY |
KR102540765B1 (ko) * | 2016-09-07 | 2023-06-08 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
US10228884B2 (en) * | 2017-03-08 | 2019-03-12 | Hewlett Packard Enterprise Development Lp | Issuing write requests to a fabric |
CN111913898A (zh) * | 2019-05-10 | 2020-11-10 | 恩智浦美国有限公司 | 使用端点的pcie根复合体消息中断产生方法 |
US11360946B2 (en) | 2019-05-17 | 2022-06-14 | International Business Machines Corporation | Tracking data transfers |
DE112019007482T5 (de) | 2019-06-21 | 2022-04-21 | Intel Corporation | Verfahren, systeme, fertigungartikel und vorrichtungen zur steuerung von adressraumisolierung in einer virtuellen maschine |
CN112181274B (zh) * | 2019-07-01 | 2023-06-20 | 北京忆恒创源科技股份有限公司 | 提升存储设备性能稳定性的大块的组织方法及其存储设备 |
CN111930643B (zh) * | 2020-09-28 | 2021-01-12 | 深圳芯邦科技股份有限公司 | 一种数据处理方法及相关设备 |
KR20220153330A (ko) * | 2021-05-11 | 2022-11-18 | 한국전자통신연구원 | 메모리 접근 방법 및 장치 |
CN116361234B (zh) * | 2023-06-02 | 2023-08-08 | 深圳中安辰鸿技术有限公司 | 内存管理方法、装置及芯片 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835959A (en) * | 1995-12-01 | 1998-11-10 | Sand Technology Systems International, Inc. | Memory management system and method using dual indexing structures |
CN1606097A (zh) * | 2003-10-08 | 2005-04-13 | 三星电子株式会社 | 闪速存储器控制装置、存储器管理方法、及存储器芯片 |
US20070136549A1 (en) * | 2005-12-09 | 2007-06-14 | Megachips Lsi Solutions Inc. | Information processing apparatus, controller and file reading method |
US7562205B1 (en) * | 2004-01-30 | 2009-07-14 | Nvidia Corporation | Virtual address translation system with caching of variable-range translation clusters |
US7577817B2 (en) * | 2001-01-11 | 2009-08-18 | Emc Corporation | Storage virtualization system and methods |
CN101739366A (zh) * | 2008-11-25 | 2010-06-16 | 联发科技股份有限公司 | 缓冲区管理装置及存储器的缓冲区管理方法 |
US20110258391A1 (en) * | 2007-12-06 | 2011-10-20 | Fusion-Io, Inc. | Apparatus, system, and method for destaging cached data |
US20130160121A1 (en) * | 2011-12-20 | 2013-06-20 | Advanced Micro Devices, Inc. | Method and apparatus for detecting intrusions in a computer system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US8140821B1 (en) * | 2009-12-18 | 2012-03-20 | Emc Corporation | Efficient read/write algorithms and associated mapping for block-level data reduction processes |
US8954700B2 (en) | 2011-08-02 | 2015-02-10 | Cavium, Inc. | Method and apparatus for managing processing thread migration between clusters within a processor |
US8850125B2 (en) | 2011-10-25 | 2014-09-30 | Cavium, Inc. | System and method to provide non-coherent access to a coherent memory system |
US8560757B2 (en) | 2011-10-25 | 2013-10-15 | Cavium, Inc. | System and method to reduce memory access latencies using selective replication across multiple memory ports |
US9571377B2 (en) * | 2014-12-11 | 2017-02-14 | Oracle International Corporation | Dynamic denial of service protection |
-
2016
- 2016-11-09 US US15/347,547 patent/US10209900B2/en active Active
-
2017
- 2017-09-13 CN CN201710822901.2A patent/CN107844267B/zh active Active
- 2017-09-13 CN CN201710822528.0A patent/CN107844266A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835959A (en) * | 1995-12-01 | 1998-11-10 | Sand Technology Systems International, Inc. | Memory management system and method using dual indexing structures |
US7577817B2 (en) * | 2001-01-11 | 2009-08-18 | Emc Corporation | Storage virtualization system and methods |
CN1606097A (zh) * | 2003-10-08 | 2005-04-13 | 三星电子株式会社 | 闪速存储器控制装置、存储器管理方法、及存储器芯片 |
US7562205B1 (en) * | 2004-01-30 | 2009-07-14 | Nvidia Corporation | Virtual address translation system with caching of variable-range translation clusters |
US20070136549A1 (en) * | 2005-12-09 | 2007-06-14 | Megachips Lsi Solutions Inc. | Information processing apparatus, controller and file reading method |
US20110258391A1 (en) * | 2007-12-06 | 2011-10-20 | Fusion-Io, Inc. | Apparatus, system, and method for destaging cached data |
CN101739366A (zh) * | 2008-11-25 | 2010-06-16 | 联发科技股份有限公司 | 缓冲区管理装置及存储器的缓冲区管理方法 |
US20130160121A1 (en) * | 2011-12-20 | 2013-06-20 | Advanced Micro Devices, Inc. | Method and apparatus for detecting intrusions in a computer system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835619A (zh) * | 2020-06-23 | 2021-12-24 | 美光科技公司 | 动态页激活 |
CN113867820A (zh) * | 2021-09-29 | 2021-12-31 | 深圳市智微智能软件开发有限公司 | 一种动态修改framebuffer的方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10209900B2 (en) | 2019-02-19 |
US20180081567A1 (en) | 2018-03-22 |
CN107844266A (zh) | 2018-03-27 |
CN107844267B (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107844267A (zh) | 缓冲区分配和存储器管理 | |
CN106462494B (zh) | 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法 | |
CN101493796B (zh) | 存储器内、页面内目录高速缓存一致性配置 | |
CN103218208B (zh) | 用于实施成形的存储器访问操作的系统和方法 | |
CN101689146B (zh) | 分层的高速缓存标签架构 | |
US20170242794A1 (en) | Associative and atomic write-back caching system and method for storage subsystem | |
US20230333980A1 (en) | Memory system and method of controlling nonvolatile memory | |
CN110096221B (zh) | 存储器系统及其控制方法 | |
US10929067B2 (en) | Nonvolatile memory system and method for controlling write and read operations in the nonvolatile memory by a host | |
JP5666722B2 (ja) | メモリ・インターフェース | |
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 | |
US20150356024A1 (en) | Translation Lookaside Buffer | |
CN103116555B (zh) | 基于多体并行缓存结构的数据访问方法 | |
US20230273750A1 (en) | Memory system and method of controlling nonvolatile memory with checking a total size indicative of a sum of data length specified by a write command | |
US7260674B2 (en) | Programmable parallel lookup memory | |
EP3287900B1 (en) | Write request processing method and memory controller | |
US10303375B2 (en) | Buffer allocation and memory management | |
US20220398198A1 (en) | Tags and data for caches | |
CN107562648A (zh) | 无锁ftl访问方法与装置 | |
CN107562654A (zh) | Io命令处理方法与装置 | |
US11847074B2 (en) | Input/output device operational modes for a system with memory pools | |
WO2024054232A1 (en) | Low-latency cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230906 Address after: Washington State Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC Address before: California, USA Patentee before: FUNGIBLE Inc. |
|
TR01 | Transfer of patent right |