CN113157602B - 一种对内存进行分配的方法、设备及计算机可读存储介质 - Google Patents

一种对内存进行分配的方法、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN113157602B
CN113157602B CN202010014955.8A CN202010014955A CN113157602B CN 113157602 B CN113157602 B CN 113157602B CN 202010014955 A CN202010014955 A CN 202010014955A CN 113157602 B CN113157602 B CN 113157602B
Authority
CN
China
Prior art keywords
channel
memory
memory allocation
allocation
inter
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
Application number
CN202010014955.8A
Other languages
English (en)
Other versions
CN113157602A (zh
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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
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
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202010014955.8A priority Critical patent/CN113157602B/zh
Priority to PCT/CN2021/070708 priority patent/WO2021139733A1/zh
Publication of CN113157602A publication Critical patent/CN113157602A/zh
Application granted granted Critical
Publication of CN113157602B publication Critical patent/CN113157602B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本发明涉及一种用于对内存进行分配的方法、设备及计算机可读存储介质,其中该设备可以包括组合处理装置,该组合处理装置还可以包括通用互联接口和其他处理装置。该设备的主设备与其他处理装置进行交互,共同完成指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与主设备和其他处理装置连接,用于主设备和其他处理装置的数据存储。

Description

一种对内存进行分配的方法、设备及计算机可读存储介质
技术领域
本披露一般地涉及计算机领域。更具体地,本披露涉及用于对内存进行分配的方法、设备及计算机可读存储介质。
背景技术
双倍速率同步动态随机存储器(DDR SDRAM)在当今的电脑应用越来越广泛,其配备有多通道内存控制技术,能有效地提高内存总带宽,从而适应高速处理器的数据传输与处理的需要。但有些多通道DDR技术不能在通道间实现交织分配内存;有些无法在通道内实现内存块级的交织;有些只能并联两个通道,访问带宽有限。因此,如何获得一种对内存进行高效分配的技术方案仍是现有技术中需要解决的问题。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本披露的方案提供了一种用于对内存进行分配的方法、设备及计算机可读存储介质。
在一个方面中,本披露提供一种用于对内存进行分配的方法,包括:接收针对于多通道DDR的内存分配申请;根据所述内存分配申请,执行:在所述多通道DDR的多个通道上执行通道间交织的内存分配;以及在分配内存的每个通道上,执行通道内交织的内存分配。
在另一个方面中,本披露提供一种用于执行数据读写操作的设备,包括:收发器,其配置用于接收来自于与所述设备形成主从关系的主设备的内存分配申请;多通道DDR,其配置用于存储数据;处理器,其配置用于根据接收到的所述内存分配申请,对所述多通道DDR进行如下的内存分配操作:在所述多通道DDR的多个通道上执行通道间交织的内存分配;以及在分配内存的每个通道上,执行通道内交织的内存分配。
在另一个方面中,本披露提供一种计算机可读存储介质,其上存储有用于对内存进行分配的计算机程序代码,当所述计算机程序代码由处理器运行时,可以执行前述的方法。
利用本披露的方法、设备及计算机可读存储介质,能在多通道与多内存块间实现交织分配内存,大大提升访问带宽。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出以两通道为例说明本披露的多通道交织方案的示意图;
图2是示出根据本披露实施例同一个通道内的相邻2个内存块的示意图;
图3是示出根据本披露实施例对内存进行分配的方法的流程图;
图4是示出根据本披露实施例多通道交织的示意图;
图5是示出根据本披露实施例多内存块交织的示意图;
图6是示出根据本披露另一实施例对内存进行分配的方法的流程图;
图7是示出根据本披露另一实施例对内存进行分配的方法的流程图;
图8是示出根据本披露实施例在临近两个通道间进行多通道交织的示意图;
图9是示出根据本披露另一实施例对内存进行分配的方法的流程图;
图10是示出根据本披露另一实施例多内存块交织的示意图;
图11是示出根据本披露另一实施例对内存进行分配的设备的架构图;
图12是示出根据本披露实施例的集成电路装置的结构图;以及
图13是示出根据本披露实施例的板卡的结构图。
具体实施方式
利用本披露的方法、设备及计算机可读存储介质,能使多通道多内存块的记忆体在通道与内存块间都实现交织分配内存,进而提升访问带宽,并增加并行度。
记忆体在现今的计算机设备中是不可或缺的,随着科技的发展,许多记忆体可以支援多通道或是多内存块(bank),例如DDR SDRAM,行业中简称DDR。
DDR可以支援多通道的存取。DDR在多通道之间的交织方式是将同一块内存分布到不同的通道中去,这样可以增加并联多个DDR的带宽,提升内存访问的性能。如果数据分布在不同通道上的内存块上,内存控制器可以透过这些多通道并行地读取这些数据,以四通道的DDR来说,存取速度几乎是增加四倍。
DDR在进行存储时,可以让同一块内存分布到不同的通道中去,以进行所谓的交织(interleaving),使得同一块内存并行地被访问,提高***的效率。
图1以两通道为例,说明本披露的多通道交织方案。如图所示,本披露实施例具有第一通道102与第二通道104,每个通道会有相当多的页面大小(page size),为说明方便,在此实施例中每个通道仅示出32个页面大小106,且每个页面大小是16KB,这样的大小作为通道间交织的粒度来说已经足够了,不会影响到上层正常的跳转指令。在进行多通道交织分配时,会先分配至第一通道102的第一页面大小108,接着分配至第二通道104的第一页面大小110,再分配至第一通道102的第二页面大小112,依序分配存储空间。
本披露的DDR在实现多内存块交织方案时,是在同一个通道内进行多内存块交织访问,在上层业务存在指令跳转时,可以实现每个计算单元只访问同一通道内的内存块。图2是示出同一个通道内的相邻2个内存块:第一内存块202及第二内存块204,在本披露中,内存块交织访问是在临近两个内存块中进行的。每个内存块均示出有8个位址空间,位址是addr0至addr7。在本披露的实施例中,位址空间小于页面大小,例如在页面大小为16KB的情况下,位址空间可以是1KB,即在同一个通道内进行两内存块交织访问时,每次访问的记忆体单元为一个位址空间。例如,在0x000时,分配至第一内存块202的位址addr0;在0x400时,分配至第二内存块204的位址addr0;在0x800时,分配至第一内存块202的位址addr1;在0xc00时,分配至第二内存块204的位址addr1。依此方式分配,直到所有页面大小均分配完毕。
在多个计算单元访问且上层业务存在指令跳转的时候,利用多内存块交织访问可以实现每个计算单元只访问同一通道内的内存块,在这种情况下能够减少对远程通道的访问,亦能够减少各计算单元在不同通道间的访问冲突。
本披露的一个实施例是一种用于对内存进行分配的方法,特别是当主机侧下发命令给加速卡设备时,这命令可以是动态内存分配(memory allocation,malloc)函数。
此实施例的内存共有4个通道,分配的方式是在这4个通道间交织进行,其分配方法的流程如图3所示。
在执行步骤302时,接收针对于4通道DDR的内存分配申请。更详细来说,便是收到动态内存分配函数的命令,该命令可以是在加速卡设备中动态分配一部分内存,设备侧会根据指定的大小对齐后,在物理内存中先申请一块物理内存。
在执行步骤304时,在4通道DDR上执行通道间交织的内存分配。更详细来说,设备侧会基于页面大小对所述4个通道平均分配内存空间。图4是示出此步骤的示意图,如图所示,本实施例的4通道DDR包括:第一通道402、第二通道404、第三通道406及第四通道408,每个通道包括多个位址空间,为说明方便,图中的每个通道仅示出32个位址空间,地址为addr00至addr31(未显示于图中),每个位址空间为8KB。如果页面大小为16KB,则每2个位址空间形成一个页面大小。
在执行通道间交织的内存分配时,当前设备是以页面大小的通道间粒度循环地在各个通道上执行通道间交织的内存分配的。例如,在0x000时,分配至第一通道402的第一个页面大小410,其位址为addr00及addr01;在0x400时,分配至第二通道404的第一个页面大小412,其位址为addr00及addr01;在0x800时,分配至第三通道406的第一个页面大小414,其位址为addr00及addr01;在0xc00时,分配至第四通道408的第一个页面大小416,其位址为addr00及addr01;在0x1000时,分配至第一通道402的第二个页面大小418,其位址为addr02及addr03。依此方式进行分配。
需特别说明的是,在页面大小为16KB的前提下,如果所需的空间仅14KB,在分配时为了对齐,仍会以一个完整的页面大小的粒度指定空间。如果所需的空间为20KB,则会以2个页面大小的粒度指定空间。
在执行步骤306时,基于分配内存的每个通道上,执行通道内交织的内存分配。在此实施例中,是可以以小于页面大小的通道内粒度循环地在临近两个内存块上执行交织的内存分配的,例如以位址空间为单位进行交织分配。图5是示出以图4的第一通道402为例来进行说明,该通道可以被切割成4个内存块:第一内存块502、第二内存块504、第三内存块506、第四内存块508,假设第一内存块502的前4个页面大小在步骤304中已被分配占用(如灰色区块所示),此步骤的内存块交织分配在第一内存块502及第二内存块504中进行。在0x000时,分配至第一内存块502的位址空间510;在0x400时,分配至第二内存块504的位址空间512;在0x800时,分配至第一内存块502的位址空间514;在0xc00时,分配至第二内存块504的位址空间516,如图中虚线箭头的顺序分配之。依此方式分配,反复执行直至分配完申请的内存。
本披露另一个实施例的内存同样有4个通道,分配的方式是在这4个通道间交织进行,其分配方法的流程如图6所示。
在执行步骤602时,接收针对于4通道DDR的内存分配申请。
在执行步骤604时,判断涉及此次动态内存分配函数的命令的计算单元的个数是否为1个。
根据内存分配申请,如果涉及此次动态内存分配函数的命令的计算单元的个数为1,此时采用多通道交织分配较有效率,因此执行步骤606,在4通道DDR上执行通道间交织的内存分配,其操作方式同前一个实施例的步骤304,不再赘述。
根据内存分配申请,如果在步骤604中,判断涉及此次动态内存分配函数的命令的计算单元的个数超过1个,此时同时结合多通道与多内存块交织分配较有效率,因此在执行步骤608时,执行通道间和通道内交织的内存分配,其操作方式与图3的实施例相同,不再赘述。
在另一个实施例中,步骤608亦可以仅进行内存块交织访问,例如,计算单元为4个,而通道亦为4个,本披露可以将每个通道分配给一个计算单元,每个计算单元只访问同一通道内的内存块,在这种情况下能够减少对远程通道的访问,亦能够减少各计算单元在不同通道间的访问冲突。
本披露的实施方案可以针对通道间及内存块间进行交织访问,当只有一个计算单元进行访问的时候,可以享有多个通道交织的带宽,而在多个计算单元进行访问的时候,每个计算单元可以访问特定通道的内存块,和/或享有多个通道交织,不仅提升访问带宽,同时增加并行度。
以单个图像计算单元(IPU)发送一个集群(cluster)的访问给DDR通道做测试,该集群共有64个字符段,每个字符段的大小为16KB。在不作任何交织的情况下,完成分配耗时55876微秒,频宽为18.76GB/s;单纯只进行多通道间交织的情况下,完成分配耗时71080微秒,频宽为14.756GB/s;而采用本披露多通道多内存块交织的方式,完成分配耗时44057微秒,频宽为23.8GB/s。明显地速度提升许多。
本披露的另一个实施例是一种用于对内存进行分配的方法,此实施例的内存共有4个通道,分配的方式是在两两通道间进行,其分配方法的流程如图7所示。
在执行步骤702时,接收待分配于4通道DDR的多条业务指令,所述业务指令包括业务数据,是需要存入到加速卡设备中的。在此实施例中,多条业务指令包括第一业务数据、第二业务数据、第三业务数据及第四业务数据,每个业务数据的大小为30KB。
在执行步骤704时,接收针对于4通道DDR的内存分配申请。更详细来说,响应前述的业务指令,收到动态内存分配函数的命令,该命令要求将前述4个业务数据存储至加速卡设备的内存。
在执行步骤706时,将所述多条业务指令以通道间粒度逐个地分配到4个通道上。此实施例的DDR的通道间粒度(即页面大小)为16KB,表示每个业务数据需要2个页面大小的空间,因此将每个业务数据拆分成第一子数据(16KB)及第二子数据(14KB),并以下表方式分配到4个通道上。
在执行步骤708时,在4通道DDR的2个通道上执行通道间交织的内存分配。更详细来说,此实施例在进行交织时,是以页面大小为单位执行通道间的交织,且分配仅会发生在临近两个通道间。如图8所示,本实施例的DDR包括:第一通道802、第二通道804、第三通道806及第四通道808,每个通道包括多个页面大小。
在执行通道间交织的内存分配时,以当前设备可以支持的页面大小的粒度,循环在每两个通道上申请内存,也就是第一通道802与第二通道804进行交织,第三通道806与第四通道808进行交织。
如上表所示,第一业务数据与第二业务数据将在第一通道802与第二通道804间交织分配,第三业务数据与第四业务数据将在第三通道807与第四通道808间交织分配。更详细来说,将第一业务数据的第一子数据分配至第一通道802的第一页面大小810;将第一业务数据的第二子数据分配至第二通道804的第一页面大小812;将第二业务数据的第一子数据分配至第一通道802的第二页面大小814;将第二业务数据的第二子数据分配至第二通道804的第二页面大小816;将第三业务数据的第一子数据分配至第三通道806的第一页面大小818;将第三业务数据的第二子数据分配至第四通道808的第一页面大小820;将第四业务数据的第一子数据分配至第三通道806的第二页面大小822;将第四业务数据的第二子数据分配至第四通道808的第二页面大小824。
执行步骤710时,基于分配内存的每个通道上,执行通道内交织的内存分配。举例来说,在计算单元有4个的情况下,可以将每个通道分配给1个计算单元。
在执行步骤712时,在每个通道内,将分配的业务指令以通道内粒度逐个地分配到内存块上。在此实施例中,如果还有其他业务指令尚未分配完毕,例如第五业务数据、第六业务数据等等,可以在此步骤中依图5所示方式进行内存块交织分配,不再赘述。
在其他实施例中,可以针对不同数量的计算单元采取不一样的内存交织分配方式。例如在步骤704之后,增加判断涉及此次动态内存分配函数的命令的计算单元的个数是否为1个的步骤。如果涉及此次动态内存分配函数的命令的计算单元的个数为1,此时采用多通道交织分配较有效率,便在4通道DDR上执行两两通道间交织的内存分配。如果判断涉及此次动态内存分配函数的命令的计算单元的个数超过1个,此时结合多通道与多内存块交织分配较有效率,因此执行两两通道间和通道内交织的内存分配。其操作方式与图3和图6的实施例类似,该技术领域人员可以轻易基于这些实施例的描述进行操作,故不再赘述。
本披露的另一个实施例是一种用于对4个通道的内存进行分配的方法,分配的方式是在这4个通道间进行,其分配方法的流程如图9所示。
在执行步骤902时,接收针对于4通道DDR的内存分配申请。
根据内存分配申请,在执行步骤904时,在4个通道上执行通道间交织的内存分配。与前述实施例相同,在执行通道间交织的内存分配时,以当前设备是以页面大小的通道间粒度循环地在各个通道上执行通道间交织的内存分配。以图10为例,其显示单个通道1002临近的两内存块:第一内存块1004、第二内存块1006。在步骤904中,假设第一内存块1004有部分空间被分配,即灰色部分的占用空间1008。
根据内存分配申请,在执行步骤906时,在分配内存的每个通道上,执行通道内交织的内存分配。更详细来说,以通道上的未分配空间为基础逐个地分配通道间粒度的内存,且优先以未被使用的内存块进行交织分配。在此实施例中,第二内存块1006为主要内存区,由于第一内存块1004在步骤904中已参与分配,故其仅作为备用内存区。
如主要内存区(即第二内存块1006)空间不足以供存储,在执行步骤908时,根据所述内存分配申请,额外地使用备用内存区(第一内存块1004)来进行内存分配,也就是在第一内存块1004中的未占用空间内进行分配。
前述实施例可以针对通道间及内存块间进行交织访问,不仅可以享有多个通道交织的带宽,更能善用各内存块的空间。
本披露另一实施例是一种计算机可读存储介质,其上存储有用于对内存进行分配的计算机程序代码,当所述计算机程序代码由处理器运行时,可以执行前述实施例的方法,例如图3、图6、图7、图9所示的技术方案。
图11是示出本披露另一个实施例用于对内存进行分配的***1100,***1100包括主设备1102及设备1104,主设备1102可以是一个主机。设备1104可以是加速卡,其包括多个计算单元1106、收发器1108、处理器1110、缓冲器1112及多通道DDR 1114,图中的4个计算单元1106为示例,并非限制仅能有4个计算单元1106,同样地,图中的4个DDR 1114为示例,并非限制仅能有4个DDR 1114。收发器1108配置用于接收来自于与设备1104形成主从关系的主设备1102的内存分配申请;处理器1110配置用于根据接收到内存分配申请,对多通道DDR1114进行如下的内存分配操作:在多通道DDR 1114的多个通道上执行通道间交织的内存分配,以及在分配内存的每个通道上,执行通道内交织的内存分配,其中处理器1110内含***内存管理单元(System Memory Management Unit,SMMU);缓冲器1112可以是终极缓存(Last Level Cache,LLC),配置用于实现所述通道内交织的内存分配;多通道DDR 1114配置用于存储数据。
处理器1110自主设备1102处接收动态内存分配函数的命令,在申请内存空间时,目标是设备1104中的一块内存地址。收发器1108接收到内存申请后,通过处理器1110将内存申请转换成物理地址,并得到在DDR上真实的内存地址,根据内存地址进行交织分配给多通道DDR 1114。
更详细来说,此实施例是以处理器1110和缓冲器1112实现内存的申请的。处理器1110通过驱动程序实现申请的内存以页面大小的粒度进行多通道DDR 1114间的交织分配,同时通过缓冲器1112在通道内实现多内存块的交织分配。进一步来说,在内存申请过程中,内存地址的分配需要驱动程序中的内存管理模块和***内存管理单元共同参与,其中内存管理模块负责对申请的大小做对齐,并根据本次申请的通道信息,像是单通道或多通道,对DDR 1114的通道进行物理内存的分配。而***内存管理单元负责虚拟地址的管理,并通过铺设页表的方式,负责管理申请到的物理地址和虚拟地址的映射。
每一个多通道DDR 1114都包括一个DDR控制器(未绘出),连接缓冲器1112。处理器1110在发送的物理地址给缓冲器1112后,会根据虚拟地址的管理,申请一段相应的虚拟地址,并通过铺设页表实现物理地址到虚拟地址的映射,之后通过收发器1108向主设备1102发送与此次内存分配申请相关的虚拟地址。
主设备1102收到虚拟地址后,便可以进行内存访问,主设备1102根据返回的虚拟地址,将数据发送给收发器1108,处理器1110基于虚拟地址转化成物理地址,将数据通过缓冲器1112得到在多通道DDR 1114上真实的内存地址,以进行多通道间及/或多内存块间交织分配。
如果需要自设备1104向主设备1102写入数据时,处理器1110配置成通过收发器1108向主设备1102申请内存,在收到来自于主设备1102的虚拟地址后,基于虚拟地址,处理器1110转换成物理地址,将多通道DDR 1114内存储的数据取出,通过收发器1108发送到主设备1102。
在主设备1102向设备1104写入数据的情况下,以在4个通道的DDR 1114间交织分配为例,收发器1108接收针对于4通道DDR的内存分配申请,处理器1110基于计算单元1106的状态,如果采用多通道交织分配较有效率,例如只有一个计算单元1106,处理器1110选择在4通道DDR上执行通道间交织的内存分配,并将虚拟地址转化成物理地址,将数据通过缓冲器1112得到在多通道DDR 1114上真实的内存地址,以进行多通道交织分配。接着处理器1110可以继续采用多内存块交织分配,基于分配内存的每个通道上,执行通道内交织的内存分配。
此实施例的架构可以执行如图3、图6、图7及图9所示的技术方案,该技术领域人士在不需要创造性投入的前提下能轻易理解技术细节,故不赘述。
此实施例可以针对通道间及内存块间进行交织访问,在一个计算单元访问的时候,可以享有多个通道交织的带宽,在多个计算单元访问的时候,每个计算单元同时在通道间和特定通道的内存器进行访问,不仅减少对远程通道的访问,亦可减少计算单元间的访问冲突。
图12是示出根据本披露实施例的集成电路装置1200的结构图。如图所示,集成电路装置1200包括主设备1202,主设备1202可以是图11的主设备1102。另外,集成电路装置1200还包括通用互联接口1204和设备1206,设备1206可以是图11的设备1104。
在此实施例中,主设备1202可以是中央处理器、图形处理器、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目不做限制而是依实际需要来确定。
根据此实施例的技术方案,通用互联接口1204可以用于在主设备1202与设备1206间传输数据和控制指令。例如,主设备1202可以经由通用互联接口1204从设备1206中获取所需的输入数据,写入主设备1202片上的存储装置。进一步,主设备1202可以经由通用互联接口1204从设备1206中获取控制指令,写入主设备1202片上的控制缓存。替代地或可选地,通用互联接口1204也可以读取主设备1202的存储模块中的数据并传输给设备1206。
可选地,集成电路装置1200还可以包括存储装置1208,其可以分别与主设备1202和设备1206连接。在一个或多个实施例中,存储装置1208可以用于保存主设备1202和设备1206的数据,尤其适用于所需要运算的数据在主设备1202或设备1206的内部存储中无法全部保存的数据。
根据应用场景的不同,本披露的集成电路装置1200可以作为手机、机器人、无人机、视频采集、视频采集设备等设备的SOC片上***,从而有效地降低控制部分的核心面积,提高处理速度并降低整体的功耗。在此情况下,集成电路装置1200的通用互联接口1204与设备的某些部件相连接。此处所指的某些部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。
在一些实施例里,本披露还公开了一种芯片或集成电路芯片,其包括了集成电路装置1200。在另一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图13,其提供了前述的示例性板卡1300,板卡1300除了包括上述芯片1302以外,还可以包括其他的配套部件,该配套部件可以包括但不限于:存储器件1304、接口装置1306和控制器件1308。
存储器件1304与芯片封装结构内的芯片1302通过总线1314连接,用于存储数据。存储器件1304可以包括多组存储器1310。每一组存储器1310与芯片1302通过总线1314连接。每一组存储器1310可以是DDR SDRAM(“Double Data Rate SDRAM”,双倍速率同步动态随机存储器)。
不同于图13所示,在一个实施例中,存储器件1304可以包括4组存储器1310。每一组存储器1310可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片1302内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中的64比特用于传输数据,8比特用于ECC校验,DDR4控制器可以是前述的处理器1110。
在一个实施例中,每一组存储器1310可以包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在芯片1302中设置控制DDR的控制器,用于对每个存储器1310的数据传输与数据存储的控制。芯片1302与存储器1310间可以采用如前述实施例的方式进行交织分配。
接口装置1306与所述芯片封装结构内的芯片1302电连接。接口装置1306用于实现芯片1302与外部设备1312(例如服务器或计算机)之间的数据传输。在一个实施例中,接口装置1306可以为标准PCIE接口。例如,待处理的数据由服务器通过标准PCIE接口传递至芯片1302,实现数据转移。在另一个实施例中,接口装置1306还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,能够实现转接功能即可。另外,芯片1302的计算结果仍由接口装置1306传送回外部设备1312。
控制器件1308与芯片1302电连接,以便对芯片1302的状态进行监控。具体地,芯片1302与控制器件1308可以通过SPI接口电连接。控制器件1308可以包括单片机(“MCU”,Micro Controller Unit)。芯片1302可以包括多个处理芯片、多个处理核或多个处理电路,并且可以带动多个负载。由此,芯片1302可以处于多负载和轻负载等不同的工作状态。通过控制器件1308可以实现对芯片1302中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡1300。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
依据以下条款可更好地理解前述内容:
条款A1、一种用于对内存进行分配的方法,包括:接收针对于多通道DDR的内存分配申请;根据所述内存分配申请,执行:在所述多通道DDR的多个通道上执行通道间交织的内存分配;以及在分配内存的每个通道上,执行通道内交织的内存分配。
条款A2、根据条款A1所述的方法,其中执行所述通道间交织的内存分配包括在所述多通道DDR的每两个通道上执行通道间交织的内存分配。
条款A3、根据条款A1所述的方法,其中执行所述通道间交织的内存分配包括基于页面大小对所述多个通道执行通道间交织的内存分配。
条款A4、根据条款A3所述的方法,其中基于页面大小对多个通道执行通道间交织的内存分配包括以页面大小的通道间粒度循环地在各个通道上执行通道间交织的内存分配。
条款A5、根据条款A4所述的方法,其中以所述通道间粒度循环地在各个通道上执行通道间交织的内存分配包括:按顺序在所述多个通道上逐个地分配通道间粒度的内存;以及反复执行上述按顺序的分配直至分配完申请的内存。
条款A6、根据条款A3所述的方法,其中执行通道内交织的内存分配包括将基于所述页面大小分配在各个通道上的内存交织地分配到通道内的多个内存块上。
条款A7、根据条款A6所述的方法,其中交织地分配到通道内的多个内存块上包括以小于所述页面大小的通道内粒度循环地在各个内存块上执行交织的内存分配。
条款A8、根据条款A7所述的方法,其中循环地在各个内存块上执行交织的内存分配包括:按顺序在所述通道内的所述多个内存块上逐个地分配所述通道内粒度的内存;以及反复执行上述按顺序的分配直至分配完所述通道通过所述通道间交织获得的内存。
条款A9、根据条款A6所述的方法,其中所述通道内还包括已参与内存分配的一个或多个内存块作为备用内存区,所述方法进一步包括根据所述内存分配申请,额外地使用所述备用内存区来进行内存分配。
条款A10、根据条款A1-9的任意一项所述的方法,进一步包括:接收待分配于多通道DDR的多个通道上的多条业务指令;将所述多条业务指令以所述通道间粒度逐个地分配到多个通道上;以及在每个通道内,将分配的业务指令以通道内粒度逐个地分配到多个内存块上。
条款A11、根据条款A10所述的方法,其中所述业务指令包括业务数据,所述方法进一步包括将所述业务指令中的业务数据以通道内粒度逐个地交织分配到多个内存块上。
条款A12、一种用于执行数据读写操作的设备,包括:收发器,其配置用于接收来自于与所述设备形成主从关系的主设备的内存分配申请;多通道DDR,其配置用于存储数据;处理器,其配置用于根据接收到的所述内存分配申请,对所述多通道DDR进行如下的内存分配操作:在所述多通道DDR的多个通道上执行通道间交织的内存分配;以及在分配内存的每个通道上,执行通道内交织的内存分配。
条款A13、根据条款A12所述的设备,其中在内存分配操作中,所述处理器还配置成利用驱动程序来实现所述通道间交织的内存分配,在内存分配操作中,所述处理器还配置成利用缓冲器来实现所述通道内交织的内存分配。
条款A14、根据条款A12-13的任意一项所述的设备,其中当完成所述内存分配后,所述处理器配置成通过所述收发器向所述主设备发送与此次内存分配申请相关的虚拟地址,所述收发器配置成接收所述主设备基于所述虚拟地址发送到所述设备的数据,并且处理器配置成将所述数据存储于分配有相应内存的多通道DDR上。
条款A15、根据条款A13所述的设备,其中在向主设备写入数据的过程中,所述处理器配置成通过所述收发器向所述主设备申请内存,并且在收到来自于所述主设备的虚拟地址后,将所述DDR存储器内存储的数据通过所述收发器发送到所述主设备。
条款A16、一种计算机可读存储介质,其上存储有用于对内存进行分配的计算机程序代码,当所述计算机程序代码由处理器运行时,执行根据条款A1-11的任意一项所述的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (14)

1.一种用于对内存进行分配的方法,包括:
接收针对于多通道DDR的内存分配申请;
根据所述内存分配申请,执行:
在所述多通道DDR的多个通道上执行通道间交织的内存分配,其中执行所述通道间交织的内存分配包括基于页面大小对所述多个通道执行通道间交织的内存分配;以及
在分配内存的每个通道上,执行通道内交织的内存分配,其中执行通道内交织的内存分配包括将基于所述页面大小分配在各个通道上的内存交织地分配到通道内的多个内存块上。
2.根据权利要求1所述的方法,其中执行所述通道间交织的内存分配包括在所述多通道DDR的每两个通道上执行通道间交织的内存分配。
3.根据权利要求1所述的方法,其中基于页面大小对多个通道执行通道间交织的内存分配包括以页面大小的通道间粒度循环地在各个通道上执行通道间交织的内存分配。
4.根据权利要求3所述的方法,其中以所述通道间粒度循环地在各个通道上执行通道间交织的内存分配包括:
按顺序在所述多个通道上逐个地分配通道间粒度的内存;以及
反复执行上述按顺序的分配直至分配完申请的内存。
5.根据权利要求1所述的方法,其中交织地分配到通道内的多个内存块上包括以小于所述页面大小的通道内粒度循环地在各个内存块上执行交织的内存分配。
6.根据权利要求5所述的方法,其中循环地在各个内存块上执行交织的内存分配包括:
按顺序在所述通道内的所述多个内存块上逐个地分配所述通道内粒度的内存;以及
反复执行上述按顺序的分配直至分配完所述通道通过所述通道间交织获得的内存。
7.根据权利要求1所述的方法,其中所述通道内还包括已参与内存分配的一个或多个内存块作为备用内存区,所述方法进一步包括根据所述内存分配申请,额外地使用所述备用内存区来进行内存分配。
8.根据权利要求1-7的任意一项所述的方法,进一步包括:
接收待分配于多通道DDR的多个通道上的多条业务指令;
将所述多条业务指令以所述通道间粒度逐个地分配到多个通道上;以及
在每个通道内,将分配的业务指令以通道内粒度逐个地分配到多个内存块上。
9.根据权利要求8所述的方法,其中所述业务指令包括业务数据,所述方法进一步包括将所述业务指令中的业务数据以通道内粒度逐个地交织分配到多个内存块上。
10.一种用于执行数据读写操作的设备,包括:
收发器,其配置用于接收来自于与所述设备形成主从关系的主设备的内存分配申请;
多通道DDR,其配置用于存储数据;
处理器,其配置用于根据接收到的所述内存分配申请,对所述多通道DDR进行如下的内存分配操作:
在所述多通道DDR的多个通道上执行通道间交织的内存分配,其中执行所述通道间交织的内存分配包括基于页面大小对所述多个通道执行通道间交织的内存分配;以及
在分配内存的每个通道上,执行通道内交织的内存分配,其中执行通道内交织的内存分配包括将基于所述页面大小分配在各个通道上的内存交织地分配到通道内的多个内存块上。
11.根据权利要求10所述的设备,其中在内存分配操作中,所述处理器还配置成利用驱动程序来实现所述通道间交织的内存分配,在内存分配操作中,所述处理器还配置成利用缓冲器来实现所述通道内交织的内存分配。
12.根据权利要求10-11的任意一项所述的设备,其中当完成所述内存分配后,所述处理器配置成通过所述收发器向所述主设备发送与此次内存分配申请相关的虚拟地址,所述收发器配置成接收所述主设备基于所述虚拟地址发送到所述设备的数据,并且处理器配置成将所述数据存储于分配有相应内存的多通道DDR上。
13.根据权利要求11所述的设备,其中在向主设备写入数据的过程中,所述处理器配置成通过所述收发器向所述主设备申请内存,并且在收到来自于所述主设备的虚拟地址后,将所述DDR存储器内存储的数据通过所述收发器发送到所述主设备。
14.一种计算机可读存储介质,其上存储有用于对内存进行分配的计算机程序代码,当所述计算机程序代码由处理器运行时,执行根据权利要求1-9的任意一项所述的方法。
CN202010014955.8A 2020-01-07 2020-01-07 一种对内存进行分配的方法、设备及计算机可读存储介质 Active CN113157602B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010014955.8A CN113157602B (zh) 2020-01-07 2020-01-07 一种对内存进行分配的方法、设备及计算机可读存储介质
PCT/CN2021/070708 WO2021139733A1 (zh) 2020-01-07 2021-01-07 一种对内存进行分配的方法、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010014955.8A CN113157602B (zh) 2020-01-07 2020-01-07 一种对内存进行分配的方法、设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN113157602A CN113157602A (zh) 2021-07-23
CN113157602B true CN113157602B (zh) 2024-01-26

Family

ID=76787755

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010014955.8A Active CN113157602B (zh) 2020-01-07 2020-01-07 一种对内存进行分配的方法、设备及计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN113157602B (zh)
WO (1) WO2021139733A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116434821B (zh) * 2023-03-14 2024-01-16 深圳市晶存科技有限公司 一种测试lpddr4颗粒的***及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105452986A (zh) * 2013-08-08 2016-03-30 高通股份有限公司 用于具有选择性功率或性能优化的内存通道交织的***和方法
CN108845958A (zh) * 2018-06-19 2018-11-20 中国科学院软件研究所 一种交织器映射和动态内存管理***及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170108911A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated System and method for page-by-page memory channel interleaving
US11036642B2 (en) * 2019-04-26 2021-06-15 Intel Corporation Architectural enhancements for computing systems having artificial intelligence logic disposed locally to memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105452986A (zh) * 2013-08-08 2016-03-30 高通股份有限公司 用于具有选择性功率或性能优化的内存通道交织的***和方法
CN108845958A (zh) * 2018-06-19 2018-11-20 中国科学院软件研究所 一种交织器映射和动态内存管理***及方法

Also Published As

Publication number Publication date
CN113157602A (zh) 2021-07-23
WO2021139733A1 (zh) 2021-07-15

Similar Documents

Publication Publication Date Title
US11809360B2 (en) Network-on-chip data processing method and device
CN111258935B (zh) 数据传输装置和方法
CN103077123A (zh) 一种数据写入和读取方法及装置
US20140068125A1 (en) Memory throughput improvement using address interleaving
CN113051195A (zh) 存储器、gpu及电子设备
CN110737618B (zh) 内嵌处理器进行快速数据通信的方法、装置及存储介质
CN206946471U (zh) 一种多通道共享读写sdram的电路装置
CN113157602B (zh) 一种对内存进行分配的方法、设备及计算机可读存储介质
CN108713193A (zh) 混合并行串行存储器***中的多序列冲突减少
CN115883022B (zh) Dma传输控制方法、装置、电子设备及可读存储介质
EP4312131A1 (en) Tensor transfer through interleaved data transactions
CN111258769B (zh) 数据传输装置和方法
CN105095108A (zh) 输入输出存储器管理单元及控制方法、装置
CN112513824B (zh) 一种内存交织方法及装置
US20120159024A1 (en) Semiconductor apparatus
US20230195368A1 (en) Write Request Buffer
CN110928682B (zh) 外部设备访问计算机内存的方法
CN114238156A (zh) 处理***以及操作处理***的方法
CN116418848A (zh) 网络节点的配置和访问请求的处理方法、装置
EP4150467B1 (en) Two-way interleaving in a three-rank environment
CN117851290B (zh) 页表管理方法、***、电子组件及电子设备
CN117591037B (zh) 一种虚拟化数据访问***、方法、装置及服务器
CN116151345B (zh) 数据传输方法、装置、电子设备及存储介质
US20020174290A1 (en) Memory accelerator, acceleration method and associated interface card and motherboard
CN111210011B (zh) 数据处理装置及相关产品

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