CN107844266A - 使用映射表的缓冲区分配和存储器管理 - Google Patents

使用映射表的缓冲区分配和存储器管理 Download PDF

Info

Publication number
CN107844266A
CN107844266A CN201710822528.0A CN201710822528A CN107844266A CN 107844266 A CN107844266 A CN 107844266A CN 201710822528 A CN201710822528 A CN 201710822528A CN 107844266 A CN107844266 A CN 107844266A
Authority
CN
China
Prior art keywords
page
buffering area
tree construction
pointers
memory
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
Application number
CN201710822528.0A
Other languages
English (en)
Inventor
迪帕克·戈埃尔
韦尔·努尔丁
保罗·金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Finnish Bohr LLC
Original Assignee
Finnish Bohr LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US15/269,457 external-priority patent/US10303375B2/en
Application filed by Finnish Bohr LLC filed Critical Finnish Bohr LLC
Publication of CN107844266A publication Critical patent/CN107844266A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本申请涉及使用映射表的缓冲区分配和存储器管理。描述了用于缓冲区分配和存储器管理的方法和装置。存储器的多个缓冲区可以通过存储器控制器进行分配,其中缓冲区具有可变大小。存储器控制器可以维持将多个访问密钥中的每一个访问密钥关联到存储器的多个页面中的多个页面地址中的相应的一个页面地址的映射表。缓冲区中的每一个可以分别包括存储器的多个页面中的一个或更多个连续页面。多个页面中的每个页面可以包括存储器的一个或更多个块。映射表可以包括以树结构组织的一个或更多个条目。

Description

使用映射表的缓冲区分配和存储器管理
相关申请的交叉引用
本公开是2016年9月19日提交的美国专利申请第15/269,457号的部分继续案(CIP)并要求该美国专利申请第15/269,457号的优先权益,该美国专利申请通过引用以其整体并入。
技术领域
本公开总体上涉及存储器分配,且更具体地涉及按需、高效率和高性能的大小可变的缓冲存储器分配。
背景
在其中使用存储器来存储数据的计算装置中,通常将存储器划分为分配给在计算装置上执行的程序的多个部分以存储用于程序的数据。当存储器的每个被分配部分不再被分配了存储器的部分的相应的程序需要时,该存储器的每个被分配的部分被解除分配以便重新使用。然而,存在与现有的缓冲区分配和管理方法相关联的若干问题。例如,存储器的每个部分的分配大小通常是预先指定的,并且有时可能大于所需的大小。根据现有方法进行的缓冲区分配的效率往往也不太理想,因为需要存储器的一部分的程序可能没有为其分配缓冲区的任何部分。在某些情况下,在访问存储器时存在长延迟和低吞吐量。
附图简述
参考以下附图,描述了本公开的非限制性和非穷尽的实施例,其中,除非以其它方式说明,在所有的各个附图中相似的参考数字指代相似的部分。
图1是可以实现根据本公开的各种实施例的示例方案的图示。
图2是根据本公开的实施例的示例场景的图示。
图3是根据本公开的实施例的示例装置的框图。
图4是根据本公开的实施例的各种示例缓冲存储器的图示。
图5是根据本公开的实施例的第一示例树结构的图示。
图6是根据本公开的实施例的第二示例树结构的图示。
图7是根据本公开的实施例的第三示例树结构的图示。
图8是根据本公开的实施例的示例过程的流程图。
详细描述
在以下描述中,参考了形成说明书的一部分的随附附图,并且其中以通过说明其中可实践本公开的具体示例性实施例的方式示出。对这些实施例进行足够详细的描述,以使本领域技术人员能够实践本文公开的概念,并且应当理解,可以对各种公开的实施例进行修改,并且可以利用其他实施例,而不脱离本公开的范围。因此,以下详细描述不被认为是限制性的意义。
概要
本公开旨在克服与现有的缓冲区分配和管理方法相关联的各种问题。在根据本公开的各种实施例中,用于大小可变的缓冲存储器分配的新方案提供了具有高效率和高性能的按需分配。根据本公开,句柄分配(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可以包括BAM指针管理器115。功能块中的每个可以以硬件、固件、软件或其任何组合的形式来实现。例如,存储器控制器110可以用硬件、固件和软件的组合来实现。映射表120可被实现为存储在存储器控制器110中的或由存储器控制器110存储的树结构中的数据。后续将进行描述映射表120的树结构。存储器130可以以硬件的形式实现。
在本公开中,术语“块”是指用于存储用于读取和写入事务的数据的基本单元(和最小单元)。块大小对于存储器130可以是固定的。在一些实施例中,块大小可以是128B(128字节)。
在本公开中,术语“页面”是指分配和解除分配的单元。每个页面可包括一个或更多个块。可用页面可以被认为是在分配后可以被重新分配的资源池。例如,对于片上存储器,每个页面可以包括一个单个块。也就是说,对于片上存储器,页面大小可以与块大小相同。在其中块大小为128B的实施例中,对于片上存储器,页面大小也可以是128B。作为另一示例,对于片外存储器,每个页面可以包括多个块。换句话说,对于片外存储器,页面大小可以大于块大小。在一些实施例中,对于片外存储器,每个页面可以包括128个块,且因此,页面大小可以是16KB。用于片外存储器的分配额可以大于片上存储器,以便最小化BAM机构105中的控制结构的成本(例如,从静态随机存取存储器(SRAM)位的角度)。
在本公开中,术语“缓冲区”是指在相关联的缓冲区空间中连续的多个页面,或一个或更多个页面。可用缓冲区(buffers)可以被认为是在分配后可以被重新分配的资源池。
在本公开中,术语“缓冲区句柄”(bufferHandle)指的是指示标识已经被分配的特定缓冲区的唯一名称的字段。在一些实施例中,缓冲区的地址的一个或更多个最高有效位可用于表示相应的BAM号。
在本公开中,术语“页面偏移”(pageOffset)是指指示给定缓冲区中的页号的字段。
在本公开中,术语“块偏移”(blockOffset)是指指示给定页面中的块号的字段。在页面大小等于块大小的情况下(例如,对于片上存储器),块偏移的值为零。
在本公开中,术语“页面地址”(pageAddress)是指指示页面的字段的物理地址。数据实际存储在存储器中的物理地址对于外部客户端是不可见的。
根据本公开,BAM机构105可以执行地址转换,从而提供用于在恒定时间内访问被分配的缓冲区的任何页面偏移的抽象层。BAM机构105可以实现在各种应用中,包括处理集群和网络单元。在方案100中,针对不同的客户端及针对本地和远程发起的块的读取和写入以及分配和解除分配的请求,存储器控制器110可以提供仲裁逻辑。BAM指针管理器115可以管理与缓冲区分配和解除分配相关的事务。BAM机构105可以提供给定页面的物理地址以用于在集群缓冲存储器中进行块的读取或写入。
在方案100中,在操作期间,BAM机构105可以首先执行关于指示页面数量的缓冲区句柄的分配请求。然后,BAM机构105可以使用缓冲区句柄、页面偏移和页面内的块偏移执行对缓冲存储器的读取和写入。BAM机构105可以将缓冲区句柄和页面偏移转换为物理页面地址。页面内所期望的块可以被访问以用于读取或写入事务。随后,缓冲存储器可以被解除分配且相关联的页面返回到空闲(可用)页面的池。
在方案100中,BAM机构105可以使用不可扩展的方法或可扩展的方法管理页面分配。在不可扩展的方法下,BAM机构105可以将分配的页面数量与在相同分配请求中创建的缓冲区句柄相关联。针对超出缓冲存储器的范围的访问可以执行边界检查。由于对于读取和写入访问的边带信号发送限制,不可扩展的方法可以可用于处理核。在不可扩展的方法下,与缓冲区相关联的页面数量可以在分配时间处进行声明。类似地,来自对于缓冲区超出所分配的页面数量的页面偏移的读取可能导致故障。
在可扩展的方法下,BAM机构105可以对于写入访问放弃检查任何页面分配边界,且可以按需要动态扩展缓冲区大小。例如,可扩展的方法可能对于在网络单元中的使用是有益的。在可扩展的方法下,与缓冲区的集合相关联的页面数量可以在集合中分配任何缓冲区的时刻进行声明。BAM机构105可以将访问边界的检查留给客户端,且可以在写入访问请求时扩展映射表120中的分配节点的树结构。在可扩展的方法下,对在被分配的缓冲区内的大的页面偏移的任何写入可能不由BAM机构105进行标记,但是可以被认为是过度使用被分配给客户端的资源。可由客户端决定适当地管理所使用的总的页面指针的数量。客户端可能需要解除分配缓冲区句柄以将页面指针返回到通用池(a general pool)。
在方案100中,可以使用许多的基本API函数调用。出于说明的目的,而非限制性,以下提供了分配、解除分配、块_写入(或写入)和块_读取(或读取)的API函数调用的详细描述。
关于“分配”的函数调用,对应的示例命令可以表示如下:allocate(num_pages[6:0],expandable);returns pass_fail,bufH[12:0]。当以上命令被调用时,BAM机构105可以检查空闲页面指针数并可在存在可用于分配的足够量的空闲页面时递减该数。对于单个页面分配,可以分配一个页面指针且值可以被返回作为缓冲区句柄或bufH。用于bufH的对应的数据结构可以用其是否是可扩展的指示和实际分配的页面指针的数量进行更新。例如,值1可以用于指示可扩展的缓冲区,且被请求用于不可扩展的缓冲区的页面指针的数量可以被指示。
关于“解除分配”的函数调用,对应的示例命令可以表示如下:deallocate(bufH[12:0];returns pass_fail。当以上命令被调用时,BAM指针管理器115可以顺序地经过若干步骤以“遍历树(walk the tree)”且每次按多个页面指针来解除分配页面指针(如,每次八个页面指针)。BAM指针管理器115可以在分配的缓冲区句柄被发现且解除分配成功时返回“通过”,否则返回“失败”。
关于“写入”的函数调用,对应的示例命令可以表示如下:write(bufH[12:0],page_offset[5:0],block_offset[1:0],data[64B],first,last);returns pass_fail。写入操作可以提供缓冲区句柄、在存储器缓冲区内的页面偏移和块偏移以及对应于块大小的量的数据。注意,所提供的写入数据不一定经历BAM转换逻辑。BAM机构105可以试图发现所请求的页面节点且如果其存在的话则返回物理地址。如果页面还没有被分配,则BAM机构105可以将页面节点添加到所提供的树,如果这样做不违背被分配的资源计数,或者缓冲区句柄被标记为可扩展的。
对于“写入”函数调用,“第一”和“最后”标志可以用作优化特征。远程发起的写入(如,来自不同的集群或子系统)可以无序到达。为了降低针对每次写入访问而发送回确认的开销,BAM机构105可以采用计数系统来对被执行“第一”次的页面的写入事务的数量进行计数。具有最大偏移的写入也以“最后”指示进行标记。当“第一”写入事务的数量匹配“最后”事务的偏移,则BAM机构105可以确定其已经接收到所有对缓冲区的初始写入,且可以确认被断言的具有“最后”信号的最终写入,以指示单个确认现在可以被发回到发起者。缓冲区类型也可以从可扩展的改变为不可扩展的。此外,BAM机构105可以试图转换地址,且如果物理页面地址存在的话返回物理页面地址。如果其未被分配,则结果为失败。
关于“读取”的函数调用,对应的示例命令可以表示如下:read(bufH[12:0],page_offset[5:0],block_offset[1:0],deallocate);returns pass_fail,data[64B]。读取操作可以提供缓冲区句柄以及关于事务的页面偏移和块偏移。注意,块偏移和块的访问量对于BAM机构105可以不是直接可见的。具有解除分配标志设置的读取也可以在读取事务已经被提交完成之后发起对缓冲区存储器的解除分配序列。BAM机构105可以试图转换地址且如果物理页面地址存在的话返回物理页面地址。如果页面未被分配,则结果为失败。
在方案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)。图4示出了根据本公开的实施例的各种示例缓冲存储器。下面的表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、片上存储器310和一个或更多个核350(1)-350(M)可以共同定位在一个或更多个IC芯片(诸如IC芯片305)上。片上存储器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可以挂起释放页面命令的执行。
示例映射表的实现
根据本公开的各种实施例,映射表(如,映射表120、映射表220和映射表320)可以使用一堆间接表来实现。这样的实现对于关于缓冲存储器的读取和写入事务允许有保证的分配(如果空间可用)和恒定的时间。有利的是,该方案提供了有保证的插入和查找时间。如以上所述,根据本公开的映射表至少支持分配、解除分配、块_读取和块_写入的命令。在一些实例中,一读一写(1R1W)端口存储器可以被用于每个时钟周期处理一个命令。此外,根据本公开的映射表支持确定性的查找、插入和删除。虽然映射表(如,用于{缓冲区句柄,偏移}到页面地址的映射)也可以使用哈希表来实现,但是哈希表并不提供插入保证。即,如果条目试图插入哈希表,则要插入的条目可能会与哈希表中现有的条目冲突。由于哈希表中的多个条目冲突,条目可能不被插入哈希表。尽管存在各种处理哈希表中的冲突的方法,但是这些方法都不提供恒定的插入时间。
根据本公开的各种实施例,可能存在多种设计的映射表(针对设计)以适应于各种分配大小。图4示出的是支持从一个页面到128个页面的缓冲存储器的分配的多个示例映射表。
图5-图7示出了作为根据本公开的一些实施例的映射表的示例实现的第一示例树结构500、第二示例树结构600和第三示例树结构700。在这些示例中,树结构500是一页树结构,树结构600是二至九页树结构,而树结构700是十至64页树结构。
参照图5,一页树结构500是最简单的情况,其中缓冲区句柄用作单个页面的物理地址。所有新分配的缓冲区以一页树开始直到写入被执行,且树动态地生长至适当的(以及可允许的)大小。
在图5中,顶行示出的是三个主要数据结构以及对于一页树它们本质上如何为空。实际上,缓冲区句柄或缓冲区句柄阶段被初始化并被存储在缓冲存储器(如,顶行的左手侧上并被标记为“BH”的存储器块)中,具有关于缓冲区是否是可扩展的以及如果其不是可扩展的话的最大大小的配置。通过允许页面指针被加载在缓冲区句柄级中有可能得到两页树结构,但是这个特征可能由于需要在八指针(8P)级处的两个读取-修改-写入(RMW)事务或在六十四指针(64P)级处加载页面指针的能力而增加了复杂性。因此,在某些情况下,出于简化的理由,这个特征可能不被实现。
在图5中,中间行示出的是在可允许的写入进行至需要2-9页面节点的树的偏移的情况下所需要的转变。在该情形下,8P指针被分配且加载在缓冲区句柄存储器中。该8P指针引用8P存储器中的对应的8P数据结构(如,在顶行的右手侧上并被标记为“8P”的存储器块)。新页面指针被分配用于写入事务且被加载于新创建的8P数据结构中。
在图5中,底部行示出的是在进行从一页树结构到创建支持10-64页面节点的树的初始改变时所需的转变。在这种情况下,64P指针被分配且被加载于缓冲区句柄存储器中。8P指针被分配且被加载于64P存储器中的新64P数据结构中(如,顶行的中间中并标记为“64P”的存储器块),以及页面指针被分配并被加载于新8P数据结构中。
参照图6,对于2-9页面数据结构600,缓冲区句柄本身仍然用作0页面偏移节点,但是缓冲存储器包含8P指针(如,顶行的左手侧上并标记为“BH”的存储器块),该8P指针引用包含剩余的(多达八个)指针的8P存储器中的8P数据结构(如,顶行的右手侧上并标记为“8P”的存储器块)。
在图6中,中间行示出的是在树还没有被完全填充时用于创建相同的基本2-9页面结构中的另一个节点的转变。此处,新偏移被访问,且根据所访问的条目的有效性,新页面指针可以被分配且被加载以填充条目。图6中的示例示出的是最终状态,其中,作为写入的结果,第二页面指针被加载于8P数据结构中。
在图6中,底部行示出的是2-9页面树结构被扩展到10-64页面树结构。在这种情形下,64P指针被分配且被加载于64P存储器中的缓冲区句柄条目(如,底部行的中间中并被标记为“64P”的存储器块)中。缓冲存储器中的原始8P指针被移动到64P数据结构。第二8P指针和页面指针被分配且被加载用于新写入的页面。
参考图7,10-64页面树结构是最大的类型且需要被加载在三个数据结构中的每一个中的指针。不存在能够在这个阶段发生的树结构扩展;然而,新节点仍然可以被加载于部分填充的树中。在图7中,顶行示出的是开始树结构的示例。在图7中,中间行示出的是新页面节点在已经存在的8P存储器中的8P数据结构(如,顶行的右手侧上并被标记为“8P”的存储器块)内的加载。新页面指针被分配并被加载于8P数据结构中。在图7中,底部行示出的是其中新8P指针需要被分配以容纳新页面指针的情况。
因此,树结构500和树结构600中的每一个是示例性的结构在于树结构500可以根据需要被扩展至树结构600或树结构700,且树结构600可以根据需要被扩展至树结构700。此外,树结构500、树结构600和树结构700中的每一个可以至少初始地被分别看作一级树结构、二级树结构和三级树结构。特别地,树结构500可以初始从一级树(用于1页)开始,但是可以扩展至二级树(用于2-9页)且甚至扩展至三级树(用于10-64页)。类似地,树结构600可以初始从二级树(用于2-9页)开始,但是可以扩展至三级树(用于10-64页)。因此,当一级树扩展至二级树时,8P指针被创建于缓冲区句柄中以引用新创建的8P数据结构中的多达八个页面指针。随后,当有必要将二级树扩展至三级树时,初始在8P数据结构中的八个页面指针中的每一个变为新创建的64P数据结构中的相应的8P指针以引用8P数据结构中的多达八个页面指针。在图5-图7中所示的所有事务中,在每个数据结构中仅需要单个RMW事务。值得注意的是,所提出的方案是灵活的且可以用于构建比树结构700具有更多数量的级的多级的树结构(如,多级树)。即,在所提出的方案下,具有在2和N之间的任意情况的多个级别的多级树结构是可能的,其中N是大于1的正整数。换句话说,虽然在图5-7中示出的是一级树、二级树和三级树,但是高于三级的树结构也在本公开的范围内。
示例过程
图8示出了根据本公开的实施例的用于缓冲区分配和存储器管理的示例过程800。过程800可以包括一个或更多个显示为块的操作、动作或功能,例如810和820以及子块812、814、816和818。尽管被示为离散块,但是根据期望的实现,过程800的各个块可以被划分为另外的块,被组合成更少的块,或被消除。过程800的块可以按照图8所示的顺序执行,或以任何其他顺序执行,这取决于所需的实现。过程800可以由BAM机构105和装置300以及其任何变型和/或衍生来实现。仅仅为了说明的目的而非限制,下面以BAM机构105为背景描述了过程800。即,以下描述的操作可以由BAM机构105的存储器控制器110以及装置300的存储器控制器310来执行。过程800可以开始于块810。
在810处,过程800可以涉及BAM机构105的存储器控制器110,其分配存储器130的多个缓冲区,缓冲区具有可变大小。在分配缓冲区时,过程800可以涉及存储器控制器110对多个缓冲区中的每个缓冲区执行多个操作,如子块812、814、816和818所示。在812处,过程800可以涉及存储器控制器110向缓冲区分配唯一缓冲区句柄。在814处,过程800可以涉及存储器控制器110分配被包括在缓冲区中的一个或更多个连续页面的页面以存储数据,其中所分配的页面具有多个页面地址的相应的页面地址。在816处,过程800可以涉及存储器控制器110确定被分配的页面的页号,其中缓冲区的唯一缓冲区句柄和所分配的页面的页号形成对于缓冲区的多个访问密钥中的相应的访问密钥。在818处,过程800可以涉及存储器控制器110在映射表120中为缓冲区的所分配的页面创建相应的条目,其中相应的条目将分配的页面的相应的页面地址与相应的访问密钥相关联。映射表120可以包括以树结构组织的一个或更多个条目。过程800可以从810进行到820。
在820处,过程800可以涉及存储器控制器110维持映射表120,该映射表120将多个访问密钥中的每一个访问密钥关联到存储器130的缓冲区的多个页面中的多个页面地址中的相应一个页面地址。缓冲区中的每一个可以分别包括缓冲区的多个页面中的一个或更多个连续的页面。多个页面中的每个页面可以包括用于数据储存的一个或更多个块。
在一些实施例中,在维持映射表时,过程800可以涉及存储器控制器110将唯一缓冲区句柄分配给缓冲区。此外,过程800还可以涉及存储器控制器创建一级树结构作为映射表的树结构以适应于单个页面。缓冲区句柄可以用作单个页面的物理地址。
在一些实施例中,在维持映射表时,过程800还可以涉及存储器控制器110用指示缓冲区是否是可扩展的配置来初始化缓冲区句柄。在缓冲区不是可扩展的情况下,配置可以也指示缓冲区的最大大小。
附加地,在维持映射表时,过程800可以涉及存储器控制器110将一级树结构扩展至二级树结构以适应于第一数量的多个页面。在将一级树结构扩展至二级树结构时,过程800可以涉及存储器控制器110在树结构的顶部级处创建多页指针以引用在树结构的底部级处的一个或更多个单页指针。此外,过程800可以涉及存储器控制器110在树结构的底部级处创建一个或更多个单页指针,其中一个或更多个单页指针中的每一个引用相应的页面。
此外,在维持映射表时,过程800可以涉及存储器控制器110将二级树结构扩展至三级树结构以适应于第二数量的多个页面,其中第二数量大于第一数量。在将二级树结构扩展至三级树结构时,过程800可以涉及存储器控制器110在树结构的顶部级处创建多页指针以引用在树结构的中间级处的一个或更多个多页指针。附加地,过程800可以涉及存储器控制器110在树结构的中间级处创建一个或更多个多页指针,其中一个或更多个多页指针中的每一个引用在树结构的底部级处的多个单页指针中的一个或更多个单指针。此外,过程800可以涉及存储器控制器110在树结构的底部级处创建多个单页指针,其中多个单页指针中的每一个引用相应的页面。
在一些实施例中,在维持映射表时,过程800可以涉及存储器控制器110将唯一缓冲区句柄分配给缓冲区。此外,过程800可以涉及存储器控制器110创建二级树结构作为映射表的树结构以适应于第一数量的多个页面,其中缓冲区句柄用作多个页面中的第一页面的物理地址。在创建一级树结构时,过程800可以涉及存储器控制器110在树结构的顶部级处创建多页指针以引用在树结构的底部级处的一个或更多个单页指针。此外,过程800可以涉及存储器控制器110在树结构的底部级处创建一个或更多个单页指针,其中一个或更多个单页指针中的每一个引用相应的页面。附加地,在维持映射表时,过程800可以涉及存储器控制器110将二级树结构扩展至三级树结构以适应于第二数量的多个页面,其中第二数量大于第一数量。在将二级树结构扩展至三级树结构方面,过程800可以涉及存储器控制器110在树结构的顶部级处创建多页指针以引用在树结构的中间级处的一个或更多个多页指针。而且,过程800可以涉及存储器控制器110在树结构的中间级处创建一个或更多个多页指针,其中一个或更多个多页指针中的每一个引用在树结构的底部级处的多个单页指针中的一个或更多个单指针。此外,过程800可以涉及存储器控制器110在树结构的底部级处创建多个单页指针,其中多个单页指针中的每一个引用相应的页面。
在一些实施例中,在维持映射表时,过程800可以涉及存储器控制器110将唯一缓冲区句柄分配给缓冲区。附加地,过程800可以涉及存储器控制器110创建二级树结构作为映射表的树结构以用于第一页面和第二页面。此外,过程800可以涉及存储器控制器110创建从第一页面指向第二页面的页面指针。缓冲区句柄可以用作第一页面的物理地址。
在一些实施例中,在分配存储器的多个缓冲区时,过程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 (21)

1.一种缓冲区分配和存储器管理的方法,包括:
通过存储器控制器,分配存储器的多个缓冲区且所述缓冲区具有可变大小;和
通过所述存储器控制器,维持映射表,所述映射表将多个访问密钥中的每一个访问密钥关联到所述缓冲区的多个页面的多个页面地址中的相应的一个页面地址,
其中,所述缓冲区中的每个缓冲区分别包括所述缓冲区的所述多个页面中的一个或更多个连续的页面,
其中,所述多个页面中的每个页面包括用于数据储存的一个或更多个块,以及
其中,所述映射表包括以树结构组织的一个或更多个条目。
2.根据权利要求1所述的方法,其中,维持所述映射表包括:
将唯一缓冲区句柄分配给所述缓冲区;以及
创建一级树结构作为所述映射表的所述树结构以适应于单个页面,
其中,所述缓冲区句柄用作所述单个页面的物理地址。
3.根据权利要求2所述的方法,还包括:
以指示所述缓冲区是否是可扩展的配置来初始化所述缓冲区句柄,
其中,在所述缓冲区是不可扩展的情况下,所述配置还指示所述缓冲区的最大大小。
4.根据权利要求2所述的方法,还包括:
将所述一级树结构扩展到二级树结构以适应于第一数量的多个页面,
其中,将所述一级树结构扩展到所述二级树结构包括:
在所述树结构的顶部级处创建多页指针以引用在所述树结构的底部级处的一个或更多个单页指针;以及
在所述树结构的所述底部级处创建所述一个或更多个单页指针,其中所述一个或更多个单页指针中的每一个单页指针引用相应的页面。
5.根据权利要求4所述的方法,还包括:
将所述二级树结构扩展到多级树结构以适应于第二数量的多个页面,
其中,所述第二数量大于所述第一数量,以及
其中,将所述二级树结构扩展到所述多级树结构包括:
在所述树结构的顶部级处创建多页指针以引用在所述树结构的中间级处的一个或更多个多页指针;
在所述树结构的所述中间级处创建所述一个或更多个多页指针,其中所述一个或更多个多页指针中的每一个多页指针引用在所述树结构的所述底部级处的多个单页指针中的一个或更多个单指针;以及
在所述树结构的所述底部级处创建所述多个单页指针,其中所述多个单页指针中的每一个单页指针引用相应的页面。
6.根据权利要求1所述的方法,其中,维持所述映射表包括:
将唯一缓冲区句柄分配给所述缓冲区;以及
创建二级树结构作为所述映射表的所述树结构以适应于第一数量的多个页面,
其中,所述缓冲区句柄用作所述多个页面中的第一页面的物理地址,以及
其中,创建所述一级树结构包括:
在所述树结构的顶部级处创建多页指针以引用在所述树结构的底部级处的一个或更多个单页指针;以及
在所述树结构的所述底部级处创建所述一个或更多个单页指针,其中所述一个或更多个单页指针中的每一个单页指针引用相应的页面。
7.根据权利要求6所述的方法,还包括:
将所述二级树结构扩展到三级树结构以适应于第二数量的多个页面,
其中,所述第二数量大于所述第一数量,以及
其中,将所述二级树结构扩展到所述三级树结构包括:
在所述树结构的顶部级处创建多页指针以引用在所述树结构的中间级处的一个或更多个多页指针;
在所述树结构的所述中间级处创建所述一个或更多个多页指针,其中所述一个或更多个多页指针中的每一个多页指针引用在所述树结构的所述底部级处的多个单页指针中的一个或更多个单指针;以及
在所述树结构的所述底部级处创建所述多个单页指针,其中所述多个单页指针中的每一个单页指针引用相应的页面。
8.根据权利要求1所述的方法,其中,维持所述映射表包括:
将唯一缓冲区句柄分配给所述缓冲区;
创建二级树结构作为所述映射表的所述树结构以用于第一页面和第二页面;以及,
创建从所述第一页面指向所述第二页面的页面指针,
其中,所述缓冲区句柄用作所述第一页面的物理地址。
9.根据权利要求1所述的方法,其中,所述存储器的所述多个缓冲区的分配包括在恒定时间内分配可变大小的所述多个缓冲区中的每个缓冲区,且其中,对于所述多个缓冲区中具有多个页面的每个缓冲区,所述多个页面具有在所述缓冲区内的连续页面地址。
10.根据权利要求1所述的方法,其中,所述存储器的所述多个缓冲区的分配包括对所述多个缓冲区的每个缓冲区执行包括以下项的操作:
向所述缓冲区分配唯一缓冲区句柄;
分配被包括在所述缓冲区中的一个或更多个连续的页面中的页面以存储数据,其中所分配的页面具有所述多个页面地址中的相应的页面地址;
确定所分配的页面的页号,其中所述缓冲区的所述唯一缓冲区句柄和所分配的页面的所述页号形成用于所述缓冲区的所述多个访问密钥中的相应的访问密钥;以及
在所述映射表中为所述缓冲区的所分配的页面创建相应的条目,其中所述相应的条目将所分配的页面的相应的页面地址关联到所述相应的访问密钥。
11.根据权利要求1所述的方法,还包括:
接收写入命令以将数据写入所述多个缓冲区中的缓冲区的一个或更多个页面的一个或更多个块中;
确定所述映射表是否包括对于与所述写入命令相关联的所述一个或更多个页面中的一个页面的页面地址的条目;和
响应于确定所述映射表包括对于与所述写入命令相关联的所述一个或更多个页面中的一个页面的页面地址的条目,将所述数据写入所述缓冲区的所述一个或更多个页面的所述一个或更多个块中。
12.根据权利要求11所述的方法,还包括:
响应于确定所述映射表不包括对于与所述写入命令相关联的所述一个或更多个页面中的一个页面的页面地址的条目,执行包括以下项的操作:
识别用于存储关于所述写入命令的所述数据的所述多个缓冲区中的缓冲区的唯一缓冲区句柄;
分配被包括在所述缓冲区中的所述一个或更多个连续的页面的页面以存储所述数据,其中所分配的页面具有所述多个页面地址中的相应的页面地址;
确定所分配的页面的页号,其中所述缓冲区的唯一缓冲区句柄和所分配的页面的页号形成关于所述缓冲区的所述多个访问密钥中的相应的访问密钥;
在所述映射表中为所述缓冲区的所分配的页面创建相应的条目,其中所述相应的条目将所分配的页面的所述相应的页面地址关联到所述相应的访问密钥;和
将空闲页面计数器减去用于存储关于所述补充命令的数据的页面的数量。
13.根据权利要求1所述的方法,还包括:
接收释放页面命令以解除分配所述多个缓冲区中的缓冲区的一个或更多个页面;和
确定所述缓冲区的状态是否有效。
14.根据权利要求13所述的方法,还包括:
响应于确定所述缓冲区的状态有效,通过执行包括以下项的操作来解除分配所述缓冲区:
在所述映射表中去除与在被解除分配的缓冲区中的一个或更多个页面中的页面的页面地址有关的条目;和
将空闲页面计数器增加在所述被解除分配的缓冲区中的页面的数量;和
响应于确定所述缓冲区的状态不是有效的,挂起所述释放页面命令的执行。
15.一种缓冲区分配和存储器管理的装置,包括:
存储器,所述存储器包括第一类型存储器和第二类型存储器;和
存储器控制器,所述存储器控制器通信地耦合到所述存储器以控制对所述存储器的访问,所述存储器控制器被配置为执行包括以下项的操作:
分配所述存储器的多个缓冲区,所述缓冲区具有可变大小;和
维持映射表,所述映射表将多个访问密钥中的每一个访问密钥关联到所述缓冲区的多个页面的多个页面地址中的相应一个页面地址,
其中,所述缓冲区中的每个缓冲区分别包括所述缓冲区的所述多个页面中的一个或更多个连续的页面,
其中,所述多个页面中的每个页面包括用于数据储存的一个或更多个块,
其中,所述映射表包括以树结构组织的一个或更多个条目。
16.根据权利要求15所述的装置,其中,在维持所述映射表时,所述存储器控制器被配置为执行包括以下项的操作:
将唯一缓冲区句柄分配给所述缓冲区;以及
创建一级树结构作为所述映射表的所述树结构以适应于单个页面,
其中,所述缓冲区句柄用作所述单个页面的物理地址。
17.根据权利要求16所述的装置,其中,所述存储器控制器还被配置为执行包括以下项的操作:
以指示所述缓冲区是否是可扩展的配置来初始化所述缓冲区句柄,
其中,在所述缓冲区是不可扩展的情况下,所述配置还指示所述缓冲区的最大大小。
18.根据权利要求16所述的装置,其中,所述存储器控制器还被配置为执行包括以下项的操作:
将所述一级树结构扩展到二级树结构以适应于第一数量的多个页面,
其中,将所述一级树结构扩展到所述二级树结构包括:
在所述树结构的顶部级处创建多页指针以引用在所述树结构的底部级处的一个或更多个单页指针;以及
在所述树结构的所述底部级处创建所述一个或更多个单页指针,其中所述一个或更多个单页指针中的每一个单页指针引用相应的页面。
19.根据权利要求18所述的装置,其中,所述存储器控制器还被配置为执行包括以下项的操作:
将所述二级树结构扩展到多级树结构以适应于第二数量的多个页面,
其中,所述第二数量大于所述第一数量,以及
其中,将所述二级树结构扩展到所述多级树结构包括:
在所述树结构的顶部级处创建多页指针以引用在所述树结构的中间级处的一个或更多个多页指针;
在所述树结构的所述中间级处创建所述一个或更多个多页指针,其中所述一个或更多个多页指针中的每一个多页指针引用在所述树结构的所述底部级处的多个单页指针中的一个或更多个单指针;以及
在所述树结构的所述底部级处创建所述多个单页指针,其中所述多个单页指针中的每一个单页指针引用相应的页面。
20.根据权利要求15所述的装置,其中,在维持所述映射表时,所述存储器控制器还被配置为执行包括以下项的操作:
将唯一缓冲区句柄分配给所述缓冲区;以及
创建二级树结构作为所述映射表的所述树结构以适应于第一数量的多个页面,
其中,所述缓冲区句柄用作所述多个页面中的第一页面的物理地址,以及
其中,创建所述一级树结构包括:
在所述树结构的顶部级处创建多页指针以引用在所述树结构的底部级处的一个或更多个单页指针;以及
在所述树结构的所述底部级处创建所述一个或更多个单页指针,其中所述一个或更多个单页指针中的每一个单页指针引用相应的页面。
21.根据权利要求20所述的装置,其中,所述存储器控制器还被配置为执行包括以下项的操作:
将所述二级树结构扩展到多级树结构以适应于第二数量的多个页面,
其中,所述第二数量大于所述第一数量,以及
其中,将所述二级树结构扩展到所述多级树结构包括:
在所述树结构的所述顶部级处创建多页指针以引用在所述树结构的中间级处的一个或更多个多页指针;
在所述树结构的所述中间级处创建所述一个或更多个多页指针,其中所述一个或更多个多页指针中的每一个多页指针引用在所述树结构的所述底部级处的多个单页指针中的一个或更多个单指针;以及
在所述树结构的所述底部级处创建所述多个单页指针,其中所述多个单页指针中的每一个单页指针引用相应的页面。
CN201710822528.0A 2016-09-19 2017-09-13 使用映射表的缓冲区分配和存储器管理 Pending CN107844266A (zh)

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 US10209900B2 (en) 2016-09-19 2016-11-09 Buffer allocation and memory management using mapping table
US15/347,547 2016-11-09

Publications (1)

Publication Number Publication Date
CN107844266A true CN107844266A (zh) 2018-03-27

Family

ID=61621002

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710822528.0A Pending CN107844266A (zh) 2016-09-19 2017-09-13 使用映射表的缓冲区分配和存储器管理
CN201710822901.2A Active CN107844267B (zh) 2016-09-19 2017-09-13 缓冲区分配和存储器管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201710822901.2A Active CN107844267B (zh) 2016-09-19 2017-09-13 缓冲区分配和存储器管理

Country Status (2)

Country Link
US (1) US10209900B2 (zh)
CN (2) CN107844266A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913898A (zh) * 2019-05-10 2020-11-10 恩智浦美国有限公司 使用端点的pcie根复合体消息中断产生方法
CN111930643A (zh) * 2020-09-28 2020-11-13 深圳芯邦科技股份有限公司 一种数据处理方法及相关设备
WO2020252779A1 (en) * 2019-06-21 2020-12-24 Intel Corporation Methods, systems, articles of manufacture and apparatus to control address space isolation in a virtual machine
CN112181274A (zh) * 2019-07-01 2021-01-05 北京忆恒创源科技有限公司 提升存储设备性能稳定性的大块的组织方法及其存储设备

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10514915B2 (en) * 2015-04-24 2019-12-24 Optimum Semiconductor Technologies Inc. Computer processor with address register file
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
US11360946B2 (en) 2019-05-17 2022-06-14 International Business Machines Corporation Tracking data transfers
US20210397380A1 (en) * 2020-06-23 2021-12-23 Micron Technology, Inc. Dynamic page activation
KR20220153330A (ko) * 2021-05-11 2022-11-18 한국전자통신연구원 메모리 접근 방법 및 장치
CN113867820B (zh) * 2021-09-29 2024-05-28 深圳市智微智能软件开发有限公司 一种动态修改framebuffer的方法、装置、设备及存储介质
CN116361234B (zh) * 2023-06-02 2023-08-08 深圳中安辰鸿技术有限公司 内存管理方法、装置及芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562205B1 (en) * 2004-01-30 2009-07-14 Nvidia Corporation Virtual address translation system with caching of variable-range translation clusters
CN102473139A (zh) * 2009-07-24 2012-05-23 超威半导体公司 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元
US20130036274A1 (en) * 2011-08-02 2013-02-07 Cavium, Inc. On-chip memory (ocm) physical bank parallelism
US20130103904A1 (en) * 2011-10-25 2013-04-25 Cavium, Inc. System and method to reduce memory access latencies using selective replication across multiple memory ports

Family Cites Families (10)

* Cited by examiner, † Cited by third party
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
WO2002065275A1 (en) * 2001-01-11 2002-08-22 Yottayotta, Inc. Storage virtualization system and methods
KR100562906B1 (ko) * 2003-10-08 2006-03-21 삼성전자주식회사 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩
JP4895262B2 (ja) * 2005-12-09 2012-03-14 株式会社メガチップス 情報処理装置、コントローラおよびファイル読み出し方法
US9104599B2 (en) * 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8433859B2 (en) * 2008-11-25 2013-04-30 Mediatek Inc. Apparatus and method for buffer management for a memory operating
US8140821B1 (en) * 2009-12-18 2012-03-20 Emc Corporation Efficient read/write algorithms and associated mapping for block-level data reduction processes
US8850125B2 (en) 2011-10-25 2014-09-30 Cavium, Inc. System and method to provide non-coherent access to a coherent memory system
US9141800B2 (en) 2011-12-20 2015-09-22 Advanced Micro Devices, Inc. Method and apparatus for detecting intrusions in a computer system
US9571377B2 (en) * 2014-12-11 2017-02-14 Oracle International Corporation Dynamic denial of service protection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562205B1 (en) * 2004-01-30 2009-07-14 Nvidia Corporation Virtual address translation system with caching of variable-range translation clusters
CN102473139A (zh) * 2009-07-24 2012-05-23 超威半导体公司 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元
US20130036274A1 (en) * 2011-08-02 2013-02-07 Cavium, Inc. On-chip memory (ocm) physical bank parallelism
US20130103904A1 (en) * 2011-10-25 2013-04-25 Cavium, Inc. System and method to reduce memory access latencies using selective replication across multiple memory ports
CN103959255A (zh) * 2011-10-25 2014-07-30 凯为公司 跨多个内存口使用选择性复制降低内存访问延迟的系统及方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913898A (zh) * 2019-05-10 2020-11-10 恩智浦美国有限公司 使用端点的pcie根复合体消息中断产生方法
WO2020252779A1 (en) * 2019-06-21 2020-12-24 Intel Corporation Methods, systems, articles of manufacture and apparatus to control address space isolation in a virtual machine
US11971827B2 (en) 2019-06-21 2024-04-30 Intel Corporation Methods, systems, articles of manufacture and apparatus to control address space isolation in a virtual machine
CN112181274A (zh) * 2019-07-01 2021-01-05 北京忆恒创源科技有限公司 提升存储设备性能稳定性的大块的组织方法及其存储设备
CN112181274B (zh) * 2019-07-01 2023-06-20 北京忆恒创源科技股份有限公司 提升存储设备性能稳定性的大块的组织方法及其存储设备
CN111930643A (zh) * 2020-09-28 2020-11-13 深圳芯邦科技股份有限公司 一种数据处理方法及相关设备
CN111930643B (zh) * 2020-09-28 2021-01-12 深圳芯邦科技股份有限公司 一种数据处理方法及相关设备

Also Published As

Publication number Publication date
CN107844267A (zh) 2018-03-27
CN107844267B (zh) 2020-07-24
US10209900B2 (en) 2019-02-19
US20180081567A1 (en) 2018-03-22

Similar Documents

Publication Publication Date Title
CN107844266A (zh) 使用映射表的缓冲区分配和存储器管理
CN106462494B (zh) 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法
CN103218208B (zh) 用于实施成形的存储器访问操作的系统和方法
CN100399300C (zh) 用于数据处理的系统和方法和用于分配资源的系统和方法
JP5401676B2 (ja) マルチスレッドアプリケーション用のハッシュテーブルのコンカレントリハッシュの実行
CN103959257B (zh) 用于持久性指针管理的软件转换后备缓冲器
CN1786927B (zh) 应用层高速缓存映像知晓和再分配的系统和方法
CN106462501A (zh) 基于混合存储器立方体系统互连目录的高速缓冲存储器一致性方法
CN100541665C (zh) 可编程并行查找存储器
US7590802B2 (en) Direct deposit using locking cache
CN106415522A (zh) 存储器内轻量一致性
CN103116555B (zh) 基于多体并行缓存结构的数据访问方法
CN107111455A (zh) 使用虚拟地址的缓存访问
CN101606130A (zh) 在处理器系统的指令级使能资源分配标识的方法和装置
CN107256196A (zh) 基于闪存阵列的支持零拷贝的缓存系统及方法
CN105917319A (zh) 存储器单元和方法
US20180336140A1 (en) Method and system for flash-aware heap memory management
JP2012506581A (ja) 複数のメモリ要素に分配されたメモリ空間内でデータ・バッファを管理する装置
CN115168247B (zh) 用于并行处理器中动态共享存储空间的方法及相应处理器
US20200334168A1 (en) Virtual memory pool within a network which is accessible from multiple platforms
CN103106150A (zh) 一种实现存储系统自动精简配置和精简分配的方法
WO2024045586A1 (zh) 支持simt架构的高速缓冲存储器及相应处理器
EP3287900B1 (en) Write request processing method and memory controller
US20030196024A1 (en) Apparatus and method for a skip-list based cache
US10303375B2 (en) Buffer allocation and memory management

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180327

WD01 Invention patent application deemed withdrawn after publication