CN108845958B - 一种交织器映射和动态内存管理***及方法 - Google Patents
一种交织器映射和动态内存管理***及方法 Download PDFInfo
- Publication number
- CN108845958B CN108845958B CN201810628634.XA CN201810628634A CN108845958B CN 108845958 B CN108845958 B CN 108845958B CN 201810628634 A CN201810628634 A CN 201810628634A CN 108845958 B CN108845958 B CN 108845958B
- Authority
- CN
- China
- Prior art keywords
- memory
- linear
- space
- interleaving
- interleaved
- 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.)
- Active
Links
Images
Classifications
-
- 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/0253—Garbage collection, i.e. reclamation of unreferenced 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
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明涉及一种交织器映射和动态内存管理***及方法,包括交织器映射方法和动态内存管理方法;交织器映射方法包括:为经由两个或更多个相应的内存通道访问的两个或更多个内存设备配置内存地址映射使之具有交织区域和线性区域,所述交织区域包括用于高性能使用情况的交织地址空间,以及所述线性区域包括用于低功率使用情况的线性地址空间;从一个或多个客户端接收内存请求,所述内存请求包括对节电或性能的偏好;以及根据所述对节电或性能的偏好来向所述线性区域或所述交织区域分配所述内存请求。
Description
技术领域
本发明实施例涉及内存数据处理技术,尤其涉及一种交织器映射和内存管理***及方法。
背景技术
许多计算设备(包括诸如移动电话的便携式计算设备)包括片上***(“SoC”)。SoC向内存设备(诸如,双数据速率(DDR)内存设备)要求不断增加的功率性能和容量。这些要求产生了更快的时钟速度和宽的总线,通常将宽的总线划分为多个较窄的内存通道,以便保持高效率。多个内存通道可以是地址交织在一起的,以在内存设备间均匀地分布内存业务和优化性能。通过向交替的内存通道分配地址来均匀地分布内存数据。这种技术通常被称为对称通道交织。
与对称内存通道交织相对应的普通内存空间排布被称为线性内存通道,在线性内存通道中,地址空间在单一内存通道中连续分布。针对高性能内存,通常使用对称内存通道交织技术,这是有意的并且是必要的以实现所期望的性能水平。针对低性能内存使用场景,线性内存通道则更为常见。
在实际应用场景中,常常出现同时需要使用高性能内存和低性能内存的需求。这对这种需求,现有的技术手段CN201480043948-用于具有选择性功率或性能优化的内存通道交织的***和方法,通常在***的初始化期间,通过设置配置文件或硬编码代码的方式,手工地静态划分交织内存空间和线性内存空间的大小,不能根据程序运行的实际情况来动态分配交织内存空间和线性内存空间大小,这导致功率浪费和空间使用上的低效率。因此,本领域中仍然存在对用于提供动态混合内存空间的***和方法的需求。
发明内容
本发明技术解决问题:克服现有技术的不足,提供一种交织器映射和动态内存管理***及方法,以解决现有的只能静态划分交织内存空间和线性内存空间的问题,以实现交织内存空间和线性内存空间的动态分配,优化计算机***性能。
本发明技术解决方案为:一种交织器映射方法和动态内存管理***,包括片上***(SoC),内存地址映射和内存通道交织器。所述SoC包括一个或多个处理单元,其用于生成访问两个或更多个外部内存设备的内存请求,所述两个或更多个外部内存设备连接到所述SoC并且经由两个或更多个相应的内存通道来访问。所述内存请求包括对节电或性能的偏好。所述内存地址映射与所述外部内存设备相连接,以及包括交织区域和线性区域。所述交织区域包括用于相对较高的性能使用情况的交织地址空间。所述线性区域包括用于相对较低的功率使用情况的线性地址空间。所述内存通道交织器位于所述SoC上,以及被配置为根据所述对节电或性能的偏好来向所述线性区域或所述交织区域分配所述内存请求。内存通道交织器提供同时访问交织空间和线性空间的支持,使用软件的方法来保证分配出去的两种不同的内存空间不会发生冲突。
本发明的一种交织器映射和动态内存管理方法,包括:为经由两个或更多个相应的内存通道访问的两个或更多个内存设备配置内存地址映射使之具有交织区域和线性区域,所述交织区域包括用于相对较高的性能使用情况的交织地址空间,以及所述线性区域包括用于相对较低的功率使用情况的线性地址空间;从一个或多个客户端接收内存请求,所述内存请求包括对节电或性能的偏好;以及根据所述对节电或性能的偏好来向所述线性区域或所述交织区域分配所述内存请求。本内存管理方法通过改进现有的内存管理算法,避免了线性区域和交织区域在内存分配时出现的空间冲突问题,并实现了混合内存空间的动态分配。
任何一块物理内存都可以被映射被交织内存或是线性内存,区别究竟是交织内存还是线性内存,取决于访问该物理内存的地址属于高位空间地址还是低位空间地址。所有交织内存都位于低位地址空间,所有线性内存都位于高位地址空间。换句话说,对于某一块物理内存空间,当使用高位空间地址去访问时,它属于线性内存;当使用低位空间地址去访问时,它属于交织内存。由于线性内存和交织内存的属性具有互斥性,一块物理内存在具体的某一时刻不能同时具有这两种属性。而且由于交织内存的特性,从交织内存空间的视角来看,被分配出去的线性内存会在交织内存池中出现“孔隙”现象,因为这些“孔隙”的存在,这一小块内存在被释放之前无法再被交织内存空间使用,但仍然可以继续分配给线性内存空间。本内存管理方法可以高效地利用这些“孔隙”内存,并且让线性内存和交织内存访问不发生冲突。
所述内存管理方法具体包括以下内容:
先将内存划分为固定大小的基本最小管理单元,为所述内存建立两个内存池,一个内存池是交织空间内存池,另一个内存池是线性空间内存池。线性空间内存池中的每个线性空间节点管理一个最小基本管理单元,用1个bit位来代表这个一个基本最小管理单元的分配情况;交织空间内存池中的每个交织空间节点管理N个最小基本管理单元,(N为内存通道的个数),分别用N个bit位来代表这N个基本最小管理单元的分配情况。交织空间内存池的分配以及释放;线性空间内存池的分配以及释放;在初始化时,线性空间内存池的总长度是所有物理内存之和除以最小基本管理单元的大小;交织内存池的总长度是所有物理内存之和除以最小基本管理单元的大小,再除以N。
在分配交织空间内存时,除了更新交织内存池中节点信息之外,还需要更新被分配出去的交织内存块在线性内存池对应的线性内存块的信息。
在释放交织空间内存时,除了更新交织内存池中节点信息之外,还需要更新被释放的交织内存块在线性内存池对应的线性内存块的信息。
在分配线性空间内存时,首先检查分配出去的内存块是否跨越以单个RAM内存容量大小界限定义的物理边界,倘若跨越了物理边界,则以物理边界为切割点,将内存块切割为长度满足物理边界条件的内存块,然后将切割出来的这些内存块在交织内存池中对应的交织内存块的N个bit位中对应的bit置位为0。
在释放线性空间内存时,首先检查要释放的线性空间内存块是否跨越物理边界,倘若跨越了物理边界,则以边界为切割点,将内存块切割为长度满足物理边界条件的内存块,然后将这些内存块在交织内存池中对应的交织内存块的N个bit位中对应的bit置位为1。
所述交织空间节点包含如下信息:
节点对应的内存区域的起始和终止端点:start和end;
节点管理的N个最小基本管理单元的比特位信息bits[N];
所述线性空间节点包含如下信息:
节点对应的内存区域的起始和终止端点:start和end;
节点管理的1个最小基本管理单元的比特位信息bit。
本发明与现有技术相比的优点在于:
(1)现有的技术手段通常在***的初始化期间,通过设置配置文件或硬编码代码的方式,静态划分交织内存空间和线性内存空间的大小,不能根据程序运行的实际情况来动态分配交织内存空间和线性内存空间大小,这导致功率浪费和空间使用上的低效率。而本发明的交织器映射方法可以在程序运行期间动态划分交织内存空间和线性内存空间的大小。
(2)对于动态划分的交织内存空间和线性内存空间,从交织内存空间的视角来看,被分配出去的线性内存会在交织内存池中出现“孔隙”现象,因为这些“孔隙”的存在,这一小块内存在被释放之前无法再被交织内存空间使用。本内存管理方法可以高效地利用这些“孔隙”内存,并且让线性内存和交织内存访问不发生冲突。
附图说明
图1是用于提供具有选择性功率或性能优化的内存通道交织的***的实施例的框图;
图2是示出了在图1的***中实现的用于提供具有选择性功率或性能优化的内存通道交织的方法的实施例的流程图;
图3是示出了在图1的***中的示例性的内存地址映射的结构和操作的数据/流图;
图4是示出了图1的内存通道交织器的实施例的数据/流图;
在附图中,除非另外指示,否则遍及各个视图,相似的附图标记指代相似的部分。对于具有诸如“100”或“102”的字母字符标记的附图标记,字母字符标记可以区分出现在同一附图中的两个相似的部分或元素。当旨在使附图标记涵盖在所有附图中具有相同附图标记的所有部分时,可以省略附图标记的字母字符标记。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式做进一步详细描述。以下实施例用于说明本发明,但不用来限制本发行的范围。
本文使用的词语“示例性”意味着“作为例子、实例或说明”。本文中描述为“示例性”的任何方面不必被解释为优选于其它方面或者比其它方面有优势。
在本描述中,术语“应用”还可以包括具有可执行内容(诸如:对象代码、脚本、字节代码、标记语言文件以及补丁)的文件。另外,本文中所引用的“应用”还可以包括本质上不可执行的文件(诸如可能需要被打开的文档或需要被访问的其它数据文件)。
术语“内容”还可以包括具有可执行内容(诸如:对象代码、脚本、字节代码、标记语言文件以及补丁)的文件。另外,本文中所引用的“内容”还可以包括本质上不可执行的文件(诸如可能需要被打开的文档或需要被访问的其它数据文件)。
如在本描述中使用的,术语“组件”、“模块”、“***”等旨在指代计算机相关的实体,要么是硬件、固件、硬件和软件的组合、软件,要么是执行中的软件。例如,组件可以是,但不限于是:在处理器上运行的过程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。通过说明的方式,在计算设备运行上的应用和计算设备二者可以是组件。一个或多个组件可以存在于过程和/或执行的线程中,以及组件可以位于一个计算机中和/或分布在两个或更多个计算机之间。
图1示出了可以使用本发明中提到方法的一种具有选择性功率或性能优化的内存通道交织的***100。***100可以在任何计算设备中实现,包括个人计算机、工作站、服务器、便携式计算设备(PCD)。
如图1的实施例所示,***100包括片上***(SoC)101,其包括多个片上组件和连接到SoC101的多个外部组件。SoC101包括通过SoC总线105互连的一个或多个处理单元、内存通道交织器106、存储控制器107和板上内存(例如,静态随机存取存储器(SRAM)103、只读存储器(ROM)104等)。存储控制器107电气地连接到外部存储设备112并且与其进行通信。如本领域已知的,内存通道交织器106接收与CPU102(或其它内存客户端)相关联的读取/写入内存请求,以及在两个或更多个内存控制器之间分布内存数据,所述两个或更多个内存控制器经由专用内存通道连接到相应的外部内存设备。在图1的示例中,***100包括两个内存设备110和111。内存设备110连接到内存控制器108以及经由第一内存通道(CH0)进行通信。内存设备连接到内存控制器109以及经由第二内存通道(CH1)进行通信。
应当认识到的是,在具有任何期望的类型、大小和配置的内存(例如,双数据速率(DDR)内存)的***100中可以使用任意数量的内存设备、内存控制器和内存通道。在图1的实施例中,经由通道CH0所支持的内存设备110包括一个动态随机存取内存(DRAM)设备:DRAM110。经由通道CH1所支持的内存设备也包括一个DRAM设备:DRAM111。
内存通道交织器106包括经特殊配置的用于选择性地提供性能和节电优化的内存通道交织器。内存通道交织器106被配置为选择性地提供高性能(交织的)和低性能(线性的)内存区域。图3示出了由内存通道交织器106控制的示例性的内存地址映射300。将描述内存地址映射300以说明***100和内存通道交织器106的一般操作、架构和功能。内存地址映射300对应于在图1中示出的具有包括DRAM110(经由内存通道CH0来存取)的内存设备和包括DRAM111(经由内存通道CH1来存取)的内存设备的示例性的***100。
内存地址映射300包括一个线性区域和两个交织区域。线性区域可以用于相对低的功率使用情况和/或任务,以及交织区域可以用于相对高的性能使用情况和/或任务。每个区域包括具有在两个内存通道CH0和CH1之间划分的相应的地址范围的单独分配的内存地址空间。
参照图3的示例以及考虑交织地址空间,可以将第一地址(地址0)分配给与DRAM110和内存通道CH0相关联的较低地址。可以将交织地址范围中的下一个地址(地址4)分配给与DRAM111和内存通道CH1相关联的较低地址。以这种方式,可以在内存通道CH0和CH1间“成带状形成”或交织成交替地址的模式,其上升到该交织区域的最后的地址,该地址限定了交织区域和线性区域之间的边界。在交织区域中,通道CH0和CH1之间的水平虚线箭头示出了地址如何在内存通道之间“往复”(“ping-pong”)。请求用于向内存设备读取/写入数据的内存资源的客户端(例如,CPU102)可以由内存通道CH0和CH1二者来服务,这是因为,数据地址可以被假设为是随机的从而可以在通道CH0和CH1间均匀地分布。
线性区域包括在相同的通道内的单独的连续的内存地址范围。如图3的实施例所示,在CH0中,可以将连续的内存地址的第一范围分配给DRAM110,以及在CH1中,可以将连续地址的第二范围分配给DRAM111。可以将线性地址空间中的地址(2N+C)分配给DRAM110中在交织/线性边界之上的下一个地址。垂直箭头示出的是在CH0内分配连续的地址,直到达到DRAM110中的交织区域和线性区域的边界(地址(2N-64))。可以将线性地址空间中的地址(3N+C)分配给DRAM111中在交织/线性边界之上的下一个地址。垂直箭头示出的是在CH1内分配连续的地址,直到达到DRAM111中的交织区域和线性区域的边界(地址(2N-60))。当达到CH0中线性区域(高地址空间)的最后一个可用的地址(3N-4)时,可以将线性地址空间中的下一个地址(3N)分配给DRAM111中的线性空间。(N为单个DRAM空间大小,C为在[0,N-1]之间的任意自然数)
在另一个交织区域,可以将DDRM110地址(2N-64)分配给线性空间和交织区域交织边界的起始地址,可以将交织地址范围中的下一个地址(地址2N-60)分配给与DRAM111和内存通道CH1相关联的较低地址。以这种方式,可以在内存通道CH0和CH1间“成带状形成”或交织成交替地址的模式,其上升到该交织区域的最后的地址,该地址限定了交织区域和线性区域之间的边界。在交织区域中,通道CH0和CH1之间的水平虚线箭头示出了地址如何在内存通道之间“往复”(“ping-pong”)。
以这种方式,应当认识到的是,低性能使用情况数据可以完全地包含在通道CH0或通道CH1中。在操作中,通道CH0和CH1中的仅一个通道可以是活动的,而另一个通道被置于不活动或“自刷新”模式以节约内存功率。这可以扩展到任意数量的N个内存通道。在这N个内存通道中,可以同时存在多个交织区域和多个线性区域。
图2示出了可以由***100(图1)实现的用于提供具有选择性功率或性能优化的内存通道交织的方法200。在块201处,为经由两个或更多个内存通道(例如,内存通道CH0和CH1)访问的可用的内存设备(例如,DRAM110和111)配置内存地址映射300使之具有交织区域和线性区域。可以基于所期望的内存占用或大小高和低性能使用情况来配置内存地址映射300。内存通道交织器106可以提供动态的交织和线性内存空间。在运行时,操作***可以针对高性能客户端请求(诸如,图形处理单元(GPU)、显示器、多媒体资源、照相机等)来分配交织区域。操作***可以针对相对较低的性能和/或所有其它客户端请求来分配线性内存。例如,线性区域可以被分配用于操作***资源、一般的低性能应用、服务等。
再次参照图2,在块202处,内存通道交织器106可以从一个或多个请求内存资源的客户端(例如,CPU102)接收内存请求。内存请求可以包括指示对节电或性能的偏好的“提示”、参数或其它数据。在实施例中,可以经由对操作***的***调用来指定功率/性能偏好。在这点上,***100可以包括提供对内存分配的支持的操作***(未示出)。操作***可以具有根据调用程序的指示从特定的堆来分配内存的能力。内存通道交织器106和***100提供根据例如节电相对于性能的偏好程度来指定内存类型(即,交织对线性)的能力,以及因此,实现内存节电和/或高带宽吞吐量。在块202处,内存通道交织器106根据在内存请求中指定的偏好(或其它方式)和内存地址映射300来向线性区域和交织区域分配所接收的内存请求。
图4是示出了内存通道交织器106的实施例的架构、操作和/或功能的示意/流程图。内存通道交织器106在SoC总线105上接收输入,以及将输出经由单独的内存控制器总线提供给内存控制器108和109(分别为内存通道CH0和CH1)。内存控制器总线可以以SoC总线105的速率一半的速率运行,以匹配净数据吞吐量。地址映射模块450可以经由SoC总线105被编程。地址映射模块450可以配置和访问具有线性区域和交织区域的地址内存映射300,如上所述。进入SoC总线105的数据业务路由至数据选择器470,数据选择器470基于由地址映射模块450提供的选择信号464来将数据分别地经由合并组件472和474转发至内存控制器108和109。针对每个业务分组,高地址456进入地址映射模块450。地址映射模块450将高地址456与预编程的线性和交织区域地址进行比较,执行地址位位置重新排序,以及随后基于交织参数来将其输出到CH0高地址460或CH1高地址462。选择信号464指定CH0还是CH1被选择。合并组件472和474可以包括高地址460和462、低地址405以及CH0数据466和CH1数据468的重新结合。
对应于动态内存管理方法来说,一个具体的实施例涵盖但不限于以下内容:
交织内存节点的start和end分别为所述内存的起始位置和终止位置,初始情况下默认所有交织内存区域全部为空闲状态,bits[N]的值全为0。指向上一个节点的last指针值为NULL,指向下一个节点的next指针值为NULL。
线性内存节点的start和end分别为所述内存的起始位置和终止位置,初始情况下默认所有线性内存区域全部为空闲状态,bit的值为0。指向上一个节点的last指针值为NULL。
当用户通过图2中的202模块请求分配高性能内存时,我们在交织内存池中搜索bits[N]的值全为0,并且(end-start+1)*N>=用户请求内存大小size的交织内存节点。倘若未搜索到满足条件的节点,返回NULL。倘若搜索到了满足条件的节点则将该节点切分为两个节点,将前一个节点的start设置为start,将end设置为start+size/N-1,bits[N]全部设置为1;将后一个节点的start设置为start+size/N,end设置为end,bits[N]全部设置为0。
设置完交织内存节点之后,将线性内存池中每隔single_ddr_size大小的N个线性内存块也分配出去,每个线性内存节点的大小为size/N,end为start+(i+N)*single_ddr_size+size/N,start为start+(i+N)*single_ddr_size,其中i=0...(N-1)。
当用户通过图2中的201模块请求释放高性能内存时,我们在交织内存池中搜索用户指定的交织内存节点。倘若未搜索到满足条件的节点,直接返回。倘若搜索到了满足条件的节点则将该节点的bits[N]全部设置为0,并检查该节点是否能跟前后节点合并。倘若能合并则合并。
释放完交织内存节点之后,将线性内存池中每隔single_ddr_size大小的N个线性内存块也释放,每个线性内存节点的大小为size/N,end为start+(i+N)*single_ddr_size+size/N,start为start+(i+N)*single_ddr_size,其中i=0...(N-1)。并检查N个线性内存节点是否能够跟前后节点合并,倘若能合并则合并。
当用户通过图2中的201模块请求分配节能内存时,本发明在线性内存池中搜索bit的值为0,并且(end-start+1)>=用户请求内存大小size的交织内存节点。倘若未搜索到满足条件的节点,返回NULL。倘若搜索到了满足条件的节点则将该节点切分为两个节点,将前一个节点的start设置为start,将end设置为start+size-1,bit设置为1;将后一个节点的start设置为start+size,end设置为end,bit设置为0。
设置完线性内存节点之后,将交织内存池对应的一块交织内存块也分配出去,节点的大小为size/N,start为(start%single_ddr_size),end为(start%single_ddr_size)+size/N,将bits[start/single_ddr_size]置位为1。
当用户通过图2中的201模块请求释放节能内存时,我们在线性内存池中搜索用户指定的线性内存节点。倘若未搜索到满足条件的节点,直接返回。倘若搜索到了满足条件的节点则将该节点的bit设置为0,并检查该节点是否能跟前后节点合并。倘若能合并则合并。
释放完线性内存节点之后,将交织内存池对应的(也许多块)交织内存块对应的bits[start/single_ddr_size]置位为0,内存块的大小为size,start为(start%single_ddr_size),end为(start%single_ddr_size)+size,将bits[start/single_ddr_size]置位为0。同时检查是否有节点的bits[N]全部为0。倘若有节点的的bits[N]全部为0,则尝试将该节点与前后节点合并。
在本说明书中描述的过程或处理流程中的某些步骤自然地先于其它步骤,以使本发明如所描述的运作。但是,本发明不限于所描述的步骤的次序,如果这样的次序或顺序不改变本发明的功能的话。即,认识到的是,在不脱离本发明的范围和本质的情况下,某些步骤可以在其它步骤之前、之后或与其它步骤并行地(大体同时地)执行。在一些实例中,可以在不脱离本发明的情况下省略或不执行某些步骤。此外,诸如“其后”、“随后”、“接下来”等的词语不旨在限制步骤的次序。这些词语仅用于引导读者完成示例性的方法的描述。
另外,编程领域的普通技术人员能够基于例如在本说明书中的流程图和相关联的描述,在没有困难的情况下编写计算机代码或识别适当的硬件和/或电路以实现所公开的发明。
因此,对程序代码指令的特定集合或详细的硬件设备的公开不被认为是获得对如何实现以及使用本发明的足够的理解所必须的。在上文描述中并且结合附图更加详细地解释了所要求保护的计算机实现的过程的发明性功能,所述附图可以说明各个处理过程。
在一个或多个示例性的方面中,所描述的功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质中或者通过其进行传输。计算机可读介质包括计算机存储介质和通信介质二者,所述通信介质包括促进计算机程序从一个地方传送到另一个地方的任何介质。存储介质可以是可由计算机存取的任何可用的介质。通过举例而非限制性的方式,这样的计算机可读介质可以包括RAM、ROM、EEPROM、NAND闪存、NOR闪存、M-RAM、P-RAM、R-RAM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或者可以用于以指令或数据结构的形式携带或存储期望的程序代码以及可以由计算机来存取的任何其它介质。
在不脱离本发明的本质和范围的情况下,替代的实施例对于与本发明相关的领域的技术人员将是显而易见的。因此,尽管详细地说明和描述了所选择的方面,但是将理解的是,如下面的权利要求书所限定的,可以在不脱离本发明的本质和范围的情况下在其中做出各种替代和改变。
Claims (7)
1.一种交织器映射和动态内存管理方法,其特征在于:所述方法包括交织器映射方法和动态内存管理方法,具体实现如下
所述交织器映射方法包括:为经由两个或更多个相应的内存通道访问的两个或更多个内存设备配置内存地址映射使之具有交织区域和线性区域,所述交织区域包括用于高性能使用情况的交织地址空间,以及所述线性区域包括用于低功率使用情况的线性地址空间;从一个或多个客户端接收内存请求,所述内存请求包括对节电或性能的偏好;以及根据所述对节电或性能的偏好来向所述线性区域或所述交织区域分配所述内存请求;
所述内存管理方法包括以下内容:将内存划分为固定大小的基本最小管理单元,为所述内存建立两个内存池,一个内存池是交织空间内存池,另一个内存池是线性空间内存池;线性空间内存池中的每个线性空间节点管理一个最小基本管理单元,用1个bit位来代表这个一个基本最小管理单元的分配情况;交织空间内存池中的每个交织空间节点管理N个最小基本管理单元,N为内存通道的个数,分别用N个bit位来代表这N个基本最小管理单元的分配情况;交织空间内存池的分配以及释放;线性空间内存池的分配以及释放;初始化时,线性空间内存池的总长度是所有物理内存之和除以最小基本管理单元的大小;交织内存池的总长度是所有物理内存之和除以最小基本管理单元的大小,再除以N。
2.根据权利要求1所述的交织器映射和动态内存管理方法,其特征在于:在分配交织空间内存时,要更新交织内存池中节点信息,还需要更新被分配出去的交织内存块在线性内存池对应的线性内存块的信息。
3.根据权利要求1所述的交织器映射和动态内存管理方法,其特征在于:在释放交织空间内存时,要更新交织内存池中节点信息,还需要更新被释放的交织内存块在线性内存池对应的线性内存块的信息。
4.根据权利要求1所述的交织器映射和动态内存管理方法,其特征在于:在分配线性空间内存时,首先检查分配出去的内存块是否跨越物理边界,倘若跨越了物理边界,则以边界为切割点,将内存块切割为长度满足物理边界条件的内存块,然后将这些内存块在交织内存池中对应的交织内存块的N个bit位中对应的bit置位为0。
5.根据权利要求1所述的交织器映射和动态内存管理方法,其特征在于:在释放线性空间内存时,首先检查要释放的线性空间内存块是否跨越物理边界,倘若跨越了物理边界,则以边界为切割点,将内存块切割为长度满足物理边界条件的内存块,然后将这些内存块在交织内存池中对应的交织内存块的N个bit位中对应的bit置位为1。
6.根据权利要求1所述的交织器映射和动态内存管理方法,其特征在于:交织空间节点包含如下信息:
节点对应的内存区域的起始和终止端点:start和end;
节点管理的N个最小基本管理单元的比特位信息bits;
所述线性空间节点包含如下信息:
节点对应的内存区域的起始和终止端点:start和end;
节点管理的1个最小基本管理单元的比特位信息bit。
7.一种实现权利要求1-6任意之一所述的交织器映射和动态内存管理方法的***,其特征在于:所述***包括:片上***SoC,内存地址映射部分和内存通道交织器;
所述SoC包括一个或多个处理单元,用于生成访问两个或更多个外部内存设备的内存请求,所述两个或更多个外部内存设备连接到所述片上***SoC并且经由两个或更多个相应的内存通道来访问;所述内存请求包括对节电或性能的偏好;
所述内存地址映射部分,与所述外部内存设备相连接,以及包括交织区域和线性区域;所述交织区域包括用于高性能使用情况的交织地址空间;所述线性区域包括用于低功率使用情况的线性地址空间;
所述内存通道交织器,位于所述片上***SoC上,以及被配置为根据所述对节电或性能的偏好来向所述线性区域或所述交织区域分配所述内存请求;内存通道交织器提供同时访问交织空间和线性空间的支持,使用软件的方法来保证分配出去的两种不同的内存空间不会发生冲突。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810628634.XA CN108845958B (zh) | 2018-06-19 | 2018-06-19 | 一种交织器映射和动态内存管理***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810628634.XA CN108845958B (zh) | 2018-06-19 | 2018-06-19 | 一种交织器映射和动态内存管理***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108845958A CN108845958A (zh) | 2018-11-20 |
CN108845958B true CN108845958B (zh) | 2022-05-17 |
Family
ID=64202633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810628634.XA Active CN108845958B (zh) | 2018-06-19 | 2018-06-19 | 一种交织器映射和动态内存管理***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108845958B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800089A (zh) * | 2019-01-24 | 2019-05-24 | 湖南国科微电子股份有限公司 | 一种缓冲资源分配方法、模块以及电子设备 |
CN113157602B (zh) * | 2020-01-07 | 2024-01-26 | 中科寒武纪科技股份有限公司 | 一种对内存进行分配的方法、设备及计算机可读存储介质 |
WO2023122127A1 (en) * | 2021-12-21 | 2023-06-29 | Sambanova Systems Inc | Non-uniform memory interleaving processor and method |
CN114443523B (zh) * | 2022-01-21 | 2023-05-09 | 中国船舶重工集团公司第七0九研究所 | 一种适用于gpu的地址动态切割交织方法及*** |
CN115344506B (zh) * | 2022-10-19 | 2023-06-16 | 瀚博半导体(上海)有限公司 | 内存地址的映射方法、内存访问方法和装置、芯片、设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101969310A (zh) * | 2010-10-22 | 2011-02-09 | 上海交通大学 | Turbo码并行译码器的QPP内交织器及其交织方法 |
CN105452986A (zh) * | 2013-08-08 | 2016-03-30 | 高通股份有限公司 | 用于具有选择性功率或性能优化的内存通道交织的***和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495290B2 (en) * | 2007-06-25 | 2016-11-15 | Sonics, Inc. | Various methods and apparatus to support outstanding requests to multiple targets while maintaining transaction ordering |
-
2018
- 2018-06-19 CN CN201810628634.XA patent/CN108845958B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101969310A (zh) * | 2010-10-22 | 2011-02-09 | 上海交通大学 | Turbo码并行译码器的QPP内交织器及其交织方法 |
CN105452986A (zh) * | 2013-08-08 | 2016-03-30 | 高通股份有限公司 | 用于具有选择性功率或性能优化的内存通道交织的***和方法 |
Non-Patent Citations (1)
Title |
---|
一种支持并发访问流的文件预取算法;吴峰光等;《软件学报》;20100815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108845958A (zh) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108845958B (zh) | 一种交织器映射和动态内存管理***及方法 | |
US9612648B2 (en) | System and method for memory channel interleaving with selective power or performance optimization | |
KR101665611B1 (ko) | 컴퓨터 시스템 및 메모리 관리의 방법 | |
US20170162235A1 (en) | System and method for memory management using dynamic partial channel interleaving | |
EP2645259B1 (en) | Method, device and system for caching data in multi-node system | |
KR101952562B1 (ko) | 홀수 계수 메모리 채널 인터리빙을 위한 시스템 및 방법 | |
US20170109090A1 (en) | System and method for page-by-page memory channel interleaving | |
US20170108914A1 (en) | System and method for memory channel interleaving using a sliding threshold address | |
CN108647155B (zh) | 一种基于深度学习的多级cache共享的方法和装置 | |
CN106055495B (zh) | 用于控制半导体装置的方法 | |
CN115729849B (zh) | 内存管理方法及计算设备 | |
US20170108911A1 (en) | System and method for page-by-page memory channel interleaving | |
US20180074964A1 (en) | Power aware hash function for cache memory mapping | |
CN117215485A (zh) | Zns ssd管理方法及数据写入方法、存储装置、控制器 | |
US8122208B2 (en) | System and method for memory architecture configuration | |
US11749332B2 (en) | Effective DRAM interleaving for asymmetric size channels or ranks while supporting improved partial array self-refresh | |
CN109634514A (zh) | 一种芯片存储器的读、写数据方法及*** | |
US20210255792A1 (en) | System and method for efficiently converting low-locality data into high-locality data | |
KR20210058609A (ko) | Numa 시스템에서 메모리 버스에 연결하여 사용하는 저장장치의 할당 방법 | |
CN111949721A (zh) | 实现Web数据库快速访问的方法、***和存储介质 |
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 |