缓冲区分配和存储器管理制造技术

技术编号:17561369 阅读:28 留言:0更新日期:2018-03-28 11:59
本申请涉及缓冲区分配和存储器管理。描述了用于缓冲区分配和存储器管理的方法和装置。存储器的多个缓冲区可以通过存储器控制器进行分配,其中缓冲区具有可变大小。存储器控制器可以维持将多个访问密钥中的每一个访问密钥关联到存储器的多个页面中的多个页面地址中的相应的一个页面地址的映射表。缓冲区中的每一个可以分别包括存储器的多个页面中的一个或更多个连续页面。多个页面中的每个页面可以包括存储器的一个或更多个块。

Buffer allocation and memory management

This application involves buffer allocation and memory management. The methods and devices used for buffer allocation and memory management are described. The multiple buffer areas of the memory can be allocated by the memory controller, where the buffer has a variable size. The memory controller can maintain the mapping table of one corresponding page address to each access key in multiple access keys to multiple page addresses in multiple pages of memory. Each of the buffers can include one or more consecutive pages in multiple pages of the memory, respectively. Each page in multiple pages can include one or more blocks of the memory.

【技术实现步骤摘要】
缓冲区分配和存储器管理
本公开总体上涉及存储器分配,且更具体地涉及按需、高效率和高性能的大小可变的缓冲存储器分配。背景在其中使用存储器来存储数据的计算装置中,通常将存储器划分为分配给在计算装置上执行的程序的多个部分以存储用于程序的数据。当存储器的每个被分配部分不再被分配了存储器的部分的相应的程序需要时,该存储器的每个被分配的部分被解除分配以便重新使用。然而,存在与现有的缓冲区分配和管理方法相关联的若干问题。例如,存储器的每个部分的分配大小通常是预先指定的,并且有时可能大于所需的大小。根据现有方法进行的缓冲区分配的效率往往也不太理想,因为需要存储器的一部分的程序可能没有为其分配缓冲区的任何部分。在某些情况下,在访问存储器时存在长延迟和低吞吐量。附图简述参考以下附图,描述了本公开的非限制性和非穷尽的实施例,其中,除非以其它方式说明,在所有的各个附图中相似的参考数字指代相似的部分。图1是可以实现根据本公开的各种实施例的示例方案的图示。图2是可以根据本公开的实施例实现的示例场景的图示。图3是根据本公开的实施例的示例装置的简化框图。图4是根据本公开的实施例的示例过程的流程图。详细描述在以下描述中,参考了形成说明书的一部分的随附附图,并且其中以通过说明其中可实践本公开的具体示例性实施例的方式示出。对这些实施例进行足够详细的描述,以使本领域技术人员能够实践本文公开的概念,并且应当理解,可以对各种公开的实施例进行修改,并且可以利用其他实施例,而不脱离本公开的范围。因此,以下详细描述不被认为是限制性的意义。概要本公开旨在克服与现有的缓冲区分配和管理方法相关联的各种问题。在根据本公开的各种实施例中,用于大小可变的缓冲存储器分配的新方案提供了具有高效率和高性能的按需分配。根据本公开,句柄分配(handleallocation)与存储块支出(memoryblockcommitment)分离,并且在句柄请求时间处不需要预先指定分配大小。此外,根据本公开的实施例允许确定性分配结果。例如,存储器的一个或更多个块的分配在一个块空闲时被保证,并且对现有存储器的完全使用提高了效率。此外,根据本公开的实施例呈现了快速分配、高吞吐量访问和有限的访问延迟。另外,根据本公开,客户端用于读取和/或写入的地址是连续的。也就是说,当客户端向客户端被分配的地址添加字节偏移(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提供了在方案本文档来自技高网...
缓冲区分配和存储器管理

【技术保护点】
一种缓冲区分配和存储器管理的方法,包括:通过存储器控制器,分配存储器的多个缓冲区且所述缓冲区具有可变大小;和通过所述存储器控制器,维持映射表,所述映射表将多个访问密钥中的每一个访问密钥关联到所述缓冲区的多个页面的多个页面地址中的相应的一个页面地址,其中,所述缓冲区中的每个缓冲区分别包括所述缓冲区的所述多个页面中的一个或更多个连续的页面,以及其中,所述多个页面中的每个页面包括用于数据储存的一个或更多个块。

【技术特征摘要】
2016.09.19 US 15/269,457;2016.11.09 US 15/347,5471.一种缓冲区分配和存储器管理的方法,包括:通过存储器控制器,分配存储器的多个缓冲区且所述缓冲区具有可变大小;和通过所述存储器控制器,维持映射表,所述映射表将多个访问密钥中的每一个访问密钥关联到所述缓冲区的多个页面的多个页面地址中的相应的一个页面地址,其中,所述缓冲区中的每个缓冲区分别包括所述缓冲区的所述多个页面中的一个或更多个连续的页面,以及其中,所述多个页面中的每个页面包括用于数据储存的一个或更多个块。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.一种缓冲区分配和存储器...

【专利技术属性】
技术研发人员:迪帕克·戈埃尔普拉迪普·辛杜贝特朗·塞莱特韦尔·努尔丁保罗·金
申请(专利权)人:芬基波尔有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1