具有存内/近存计算模块的SoC系统的制作方法

文档序号:29694465发布日期:2022-04-16 12:38阅读:197来源:国知局
具有存内/近存计算模块的SoC系统的制作方法
具有存内/近存计算模块的soc系统
技术领域
1.本发明涉及集成电路技术领域,特别涉及一种具有存内/近存计算模块的soc系统。


背景技术:

2.内存中处理(pim)技术由于其具有吸引力的特性、例如低计算延迟、大吞吐量和高能效,是aiot应用中最有前途的候选者之一。然而,如何有效利用片上系统(soc)架构的pim却鲜有讨论。
3.现有的存内/近存计算系统需要使用一款为存内/近存计算独立设计的软件及硬件系统,去调用存内/近存计算的单元来进行加速计算,这样的方式设计成本高,且设计的系统通用性低,一般只能为一种特定的算法去设计软件及硬件系统。系统将很难实现其他算法。


技术实现要素:

4.本发明的目的在于提供一种具有存内/近存计算模块的soc系统,以解决现有的片上系统的存内/近存计算系统设计成本太高,且设计的系统没有通用性的问题。
5.为解决上述技术问题,本发明提供一种具有存内/近存计算模块的soc系统,包括:
6.内存通用总线,其被配置为传输内存调用指令;以及
7.存内/近存计算模块,其被配置为存储数据以及对所存储的数据进行运算,其中所述存内/近存计算模块具有第一接口,所述第一接口连接在内存通用总线上,其中存内/近存计算模块和/或第一接口被构造为使得通过在内存通用总线上传输的内存调用命令能够调用存内/近存计算模块,以进行存内/近存计算模块的控制和使用。
8.可选的,在所述的具有存内/近存计算模块的soc系统中,还包括:
9.嵌入式内存,其被配置为存储数据,所述嵌入式内存具有第二接口,所述第二接口连接在内存通用总线上。
10.可选的,在所述的具有存内/近存计算模块的soc系统中,存内/近存计算模块包括异构存储器,所述异构存储器被配置为利用基于异构存储器的张量映射方法划分张量,并在存内/近存计算模块上部署通用矩阵乘法运算。
11.可选的,在所述的具有存内/近存计算模块的soc系统中,所述soc系统的内存通用总线包括ahb总线和/或axi总线。
12.可选的,在所述的具有存内/近存计算模块的soc系统中,存内/近存计算模块的工作模式包括内存模式和计算模式;
13.在内存模式下,通过r/w端口访问存内/近存计算模块的数据,以从存内/近存计算模块的内存阵列中读取和写入数据;
14.在计算模式下,向量中的输入数据v形成流进入pim存储器,输入数据v直接与pim存储器中的存储数据w交互,在锁存端口处输出计算结果i。
15.可选的,在所述的具有存内/近存计算模块的soc系统中,pim存储器以模拟处理方式计算通用矩阵乘法,由模数转换器作为计算电路接口:
16.i=vw,其中v为向量中的输入数据,w为pim存储器中的存储数据,i是计算结果,计算结果作为输出数据;
17.将pim存储器阵列与指令解码器和数据路径控制器平铺在一起形成pim加速器。
18.可选的,在所述的具有存内/近存计算模块的soc系统中,异构存储器模拟传统存储器在soc系统中附加的pim存储器;
19.pim输入缓冲器和pim输出缓冲器由静态随机存取存储器组成片上快速存储器,用于缓存pim存储器的输入数据和输出数据,pim存储器通过互连接口安装到系统总线;
20.计算模式输入通过物理金属总线连接,以使pim存储器直接访问pim输入缓冲器的数据;
21.pim输出缓冲器包括虚拟输出缓冲器,其包括输出数据锁存器、多路复用器/解码器和总线从属模块,以通过系统总线的可寻址输出数据块;
22.pim输出缓冲器包括额外输出缓冲器,其用于缓存完整gemm操作的中间部分和。
23.可选的,在所述的具有存内/近存计算模块的soc系统中,系统总线的可寻址包括常用地址分配方式,根据soc系统的形状、soc系统的总地址宽度以及片上存储器和pim存储器的规模划分常用地址,其包括:
24.系统地址位宽32位,每64mb形成一个block;
25.block0和block7中的地址保留用于cpu配置、指令存储器、内部外围电路i/o;
26.block1用于桥接到低速总线的片上sram和外部外围电路i/o;
27.block3用于pim相关缓存和pim存储器,以及用于gemm加速;
28.block4~6为可扩展地址。
29.可选的,在所述的具有存内/近存计算模块的soc系统中,基于向量/矩阵中的元素大多与线性分布的地址对齐,通过模拟ahb通信验证片上互连网络能够为与pim相关的双向数据传输提供足够的带宽,以使得常用的ahb能够进行一下操作:从pim输出缓冲器获取计算结果,将输入向量/矩阵馈送到pim输入缓冲器。
30.可选的,在所述的具有存内/近存计算模块的soc系统中,pim存储器中进行深度神经网络的高维矩阵运算,包括:
31.两层感知器权重矩阵及存储在内存中的权重数据进行分区并馈入pim内存,以提高计算效率;
32.将pim存储器中的所有矩阵乘法直接编译为通用内存调用命令,pim计算通过gcc工具链编译,并根据通用内存调用命令在软件中进行优化;
33.通用内存调用命令包括:ld.i(x,y)为从sram中导出输入矩阵、ld.w(x,y)为从sram中导出权重矩阵、sd.r(x,y)为将计算结果导入到sram中、sd.m为将权重矩阵导入pim中、sd.v为将输入数据导入inputbuffer、ld.o为从outputbuffer中导出计算结果;
34.通用内存调用命令中的(x,y)表示传统内存中矩阵左上角元素的地址偏差。
35.可选的,在所述的具有存内/近存计算模块的soc系统中,
36.使用多个pim和hma结构增强系统性能,多个pim内存并行调度,以在nn计算中,pim内存中存储的权重数据不频繁更改;
37.与已存储在pim矩阵中的某个权重相关的每个输入一起计算,以减少在pim存储器中重新加载权重数据的频率;
38.加载到同一行不同sram的计算结果对应叠加;当所有的乘法结果都准备好后,再进行加法运算;
39.将不同列的加法结果进行横向拼接,完成一次gemm操作。
40.本发明还提供一种soc系统的使用方法,包括:
41.在基于soc系统的内存的基础上设计存内/近存计算模块,使得存内/近存计算模块具有第一接口;
42.使得soc系统的嵌入式内存具有第二接口;
43.使得嵌入式内存通过第二接口连接在系统总线上,其中系统总线为soc系统的内存通用总线;
44.使得存内/近存计算模块通过第一接口连接在soc系统的内存通用总线上;
45.使得第一接口与第二接口相同,以通过通用内存调用命令调用存内/近存计算模块,进行存内/近存计算模块的控制和使用;
46.其中通用内存调用命令还用于soc系统调用嵌入式内存,进行嵌入式内存的控制和使用。
47.在本发明提供的具有存内/近存计算模块的soc系统中,通过将第一接口构造为与第二接口一样能够接收内存调用命令(如使用相同规格的接口)并将存内/近存计算模块构造为能够执行所接收的内存调用命令,由此可通过通用的内存调用命令来调用存内/近存计算模块,以进行存内/近存计算模块的操作、如控制和使用,由此可以实现利用存内计算的内存结构,即设计了一种使用方式,从而使得存内计算单元可以通用地在soc中被调用以在soc中执行各种存内运算,由此极大地扩展了soc的运算能力并降低了其功耗和芯片面积。在结构方面:利用已有的计算机内存总线结构,将pim系统搭载于其上,方面设计及使用,无需为pim系统进行一个定制化的接口设计。在功能方面:使用已经泛使用、统一标准的指令,完成pim的操作,简化了软硬协同设计的难度,解决编译器不容易找到最优指令执行调度的问题。基于存内计算与近存计算加速器在片上系统中使用,本发明提出了一种通用的调取方法,使得该类型加速器可以在传统常规的片上系统(soc)体系架构中使用。
附图说明
48.图1是本发明一实施例存内计算在soc系统应用方式示意图;
49.图2是本发明一实施例soc系统中的存内计算模块示意图;
50.图3是本发明一实施例pim宏的电路模块和机制示意图;
51.图4(a)~(b)是本发明一实施例hma的分层框图和异构存储器由总线下属管理示意图;
52.图5是本发明一实施例32位地址宽度soc上hma中的典型地址空间分配示意图;
53.图6是本发明一实施例计算模式下片上ahb总线的带宽和pim宏的吞吐量示意图;
54.图7是本发明一实施例矩阵乘法的优化过程示意图;
55.图8是本发明一实施例gemm操作的内存操作编译序列的可视化示意图。
具体实施方式
56.下面结合具体实施方式参考附图进一步阐述本发明。
57.应当指出,各附图中的各组件可能为了图解说明而被夸大地示出,而不一定是比例正确的。在各附图中,给相同或功能相同的组件配备了相同的附图标记。
58.在本发明中,除非特别指出,“布置在

上”、“布置在

上方”以及“布置在

之上”并未排除二者之间存在中间物的情况。此外,“布置在

上或上方”仅仅表示两个部件之间的相对位置关系,而在一定情况下、如在颠倒产品方向后,也可以转换为“布置在

下或下方”,反之亦然。
59.在本发明中,各实施例仅仅旨在说明本发明的方案,而不应被理解为限制性的。
60.在本发明中,除非特别指出,量词“一个”、“一”并未排除多个元素的场景。
61.在此还应当指出,在本发明的实施例中,为清楚、简单起见,可能示出了仅仅一部分部件或组件,但是本领域的普通技术人员能够理解,在本发明的教导下,可根据具体场景需要添加所需的部件或组件。另外,除非另行说明,本发明的不同实施例中的特征可以相互组合。例如,可以用第二实施例中的某特征替换第一实施例中相对应或功能相同或相似的特征,所得到的实施例同样落入本技术的公开范围或记载范围。
62.在此还应当指出,在本发明的范围内,“相同”、“相等”、“等于”等措辞并不意味着二者数值绝对相等,而是允许一定的合理误差,也就是说,所述措辞也涵盖了“基本上相同”、“基本上相等”、“基本上等于”。以此类推,在本发明中,表方向的术语“垂直于”、“平行于”等等同样涵盖了“基本上垂直于”、“基本上平行于”的含义。
63.另外,本发明的各方法的步骤的编号并未限定所述方法步骤的执行顺序。除非特别指出,各方法步骤可以以不同顺序执行。
64.以下结合附图和具体实施例对本发明提出的具有存内/近存计算模块的soc系统作进一步详细说明。根据下面说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
65.本发明涉及人工智能和物联网领域,人工智能和物联网(aiot)的结合催生了各种特定领域的加速器,以实现低功耗的设备智能。aiot设备在传感器附近本地执行数据分析,并且通常使用低于10mw的电池或能量收集电源运行。因此,aiot技术需要低成本和小尺寸的片上系统(soc),其中包含通用cpu和可编程机器学习(ml)加速器,以利用可编程性和执行效率,如图1所示,展示了具有不同计算接口电路的pim设计,嵌入式数据存储器用于存被处理的数据,嵌入式指令存储器用于存编译好的指令,存内计算模块可以存可以算,这个是之前有的加速器没有的功能。本发明优化了具有内存处理(pim)技术的嵌入式soc来处理具有大量通用矩阵乘法(gemm)运算的任务,使得pim实现直接在存储器阵列中进行计算操作。
66.此外,尽管已经对电路级的pim设计进行了很好的探索,但将pim连接到soc的方法仍然模糊不清。在现有技术最先进的pim硬件设计中,它已被视为变异的向量处理单元以形成加速器,即与定制指令集架构(isa)集成的pim。然而发明人发现,soc级别的架构效率可能不高,因为额外的定制指令和与主处理器的共享内存分配会导致编译困难。因此,在大多数情况下很少能达到峰值效率。
67.本发明的目的在于提供一种具有存内/近存计算模块的soc系统,以解决现有的片
上系统的存内/近存计算系统设计成本太高,且设计的系统没有通用性的问题。
68.为实现上述目的,如图1所示,本发明提供了一种具有存内/近存计算模块的soc系统,内存通用总线,其被配置为传输内存调用指令;以及存内/近存计算模块,其被配置为存储数据以及对所存储的数据进行运算,其中所述存内/近存计算模块具有第一接口,所述第一接口连接在内存通用总线上,其中存内/近存计算模块和/或第一接口被构造为使得通过在内存通用总线上传输的内存调用命令能够调用存内/近存计算模块,以进行存内/近存计算模块的控制和使用。
69.如图2所示,总线接口一般是流行的amba总线协议接口,比如ahb,axi,axi-lite之类的,总线接口和读写电路之间存储mode下读写数据的交流(作为存储器用),时序控制模块与译码器(选通控制逻辑)对读写电路和计算电路进行时序控制,控制存内计算单元阵列的地址。
70.在本发明的一个实施例中,具有存内/近存计算模块的soc系统,还包括嵌入式内存,其被配置为存储数据,所述嵌入式内存具有第二接口,所述第二接口连接在内存通用总线上。
71.本发明提供了一种soc系统的使用方法,包括:在基于soc系统的内存的基础上设计存内/近存计算模块,使得存内/近存计算模块具有第一接口;使得soc系统的嵌入式内存具有第二接口;使得嵌入式内存通过第二接口连接在系统总线上,其中系统总线为soc系统的内存通用总线;使得存内/近存计算模块通过第一接口连接在soc系统的内存通用总线上;使得第一接口与第二接口相同,以通过通用内存调用命令调用存内/近存计算模块,进行存内/近存计算模块的控制和使用;其中通用内存调用命令还用于soc系统调用嵌入式内存,进行嵌入式内存的控制和使用。本发明提出了从硬件架构到算法的一系列解决方案,以最大限度地发挥pim设计的优势。
72.为了解决上述技术问题,本发明提出了一种异构存储器(hma),它通过高吞吐量的片上总线优化具有pim的现有soc。然后,基于给定的hma结构,本发明还提出了一种hma张量映射方法来划分张量并在pim结构上部署通用矩阵乘法运算。
73.为了解决上述技术问题,本发明的hma硬件和hma张量映射方法都利用了成熟的嵌入式cpu解决方案堆栈的可编程性,并最大限度地发挥了pim技术的高效率。与设计领域44.6%的其他加速器解决方案(如puma)进行比较,整个hma系统可省电416倍。本发明的实验还表明,与最先进的基线和未经优化的pim相比,本发明的设计可以将tinyml应用程序的操作延迟分别减少430倍和11倍。
74.为了解决上述技术问题,本发明提出了一种异构内存架构(hma),以适应现成的嵌入式soc架构上的pim。特此提出“异构内存”的概念,表示这种架构在一个soc上同时拥有pim内存和传统内存(只能存储和读取数据的内存)。在提议的hma中,pim存储器与传统存储器一样连接到片上高吞吐量系统总线。随着hma显著简化程序接口,本发明还开发了hma张量映射方法作为将gemm部署到建议架构的软件到硬件优化。
75.本发明的主要贡献包括:
76.·
本发明提出了一种新颖的异构内存概念和架构,以通过pim内存扩展内存空间。
77.本发明提议的hma方案是第一个阐明如何将pim连接到现成soc的架构。
78.·
本发明设计了hma张量映射方法来划分张量并将gemm任务部署到建议的硬件架
构。
79.本发明不仅为开发pim硬件提供了一种与硬件无关的方式,而且可以用作预设计规格估计。
80.·
本发明为pim创建了一个软件到硬件的开发流程,以使用现成的gcc编译器,弥合硬件和软件工具链之间的差距,以在soc中开发pim。
81.本发明重点介绍由嵌入式非易失性存储器技术制成的pim,以利用其零待机功耗特性。本发明对提议的hma的评估基于电阻式随机存取存储器(rram)。
82.本发明着重于解决以下技术问题:
83.首先,soc中的专用集成电路(asic)加速器如图1所示。图1显示了在soc中连接专用集成电路(asic)加速器的现有方案。发明人经研究发现,asic加速器专为具有特定应用优化硬件实现的某些任务而设计。asic加速器或协处理器经常与主处理器并行工作,并与它们共享总线和内存。完全定制的指令集架构(isa)或公共标准的扩展isa,例如risc-v,用作软件到硬件的程序接口。保存指令的内存(“指令内存”)通常通过连接到系统总线加载到加速器之外。在这样的soc中,片上总线(例如axi、ahb等)不仅负责数据通信,还负责传输由加速器执行的指令。这种在同一总线上共享内存和混合传输加速器指令的范例使得编译和调度非常复杂,并随后导致设计工作和开销。
84.其次,pim技术通过添加计算接口电路来改造存储器电路。如图3所示,pim有两种工作模式:内存模式和计算模式。在内存模式下,可以通过r/w端口访问数据,以便从内存阵列中读取和写入数据;在计算模式下,向量中的输入数据“v”形成流进入pim内存。输入直接与pim存储单元中存储的数据交互,输出可以在输出处锁存端口“i”。pim存储器以模拟处理方式计算gemm,由模数转换器(adc)作为计算电路接口:i=vw,其中v是流入输入,w是存储在pim存储器中的数据,i是计算结果。将pim存储器阵列与指令解码器和数据路径控制器平铺在一起形成pim加速器。最先进的pim加速器根据pim的新型编程模型定制指令。然而,将软件程序编译和部署到pim硬件上是一个非常复杂的问题并且仍在研究和开发中。
85.另外,对于大多数aiot应用,ml加速器,尤其是深度神经网络(dnn),任务集中在gemm操作的加速上,因为它们占整体操作的70%以上。优化gemm的执行速度是计算机科学中的经典问题。在算法层面,矩阵乘法的时间复杂度可以通过strassen算法从o(n3)降低到o(n
log27
),通过winograd算法可以降低到o(n
2.376
)。在微架构层面,优化多见于冯诺依曼计算机,包括提高内存访问局部性和使用向量指令,以减少内存访问次数和提高缓存命中率。相比之下,在本发明中,本发明使用硬件/软件协同设计方法在pim技术的帮助下加速gemm。
86.为了解决上述挑战,本发明提出了异构内存架构(hma),这是一种极简设计,可使用pim内存升级现有的soc设计,以提高性能和效率。
87.本发明的hma的核心思想是像传统存储器一样在soc上附加pim存储器,如图3所示,而不是用pim存储器构建独立的加速器。图4说明了整个hma结构如何在soc上工作,包括存内计算在系统中应用方式,以及数据传输的两个方向,图4(a)为cpu获取存内计算模块出来的计算结果,图4(b)为cpu将输入送入存内计算模块去开始做计算。pim存储器内的硬件组件如图3所示。pim输入/输出缓冲器(由静态随机存取存储器sram实现的片上快速存储器,用于缓存pim中的计算输入/输出数据)和pim存储器都通过互连接口安装到系统总线。计算模式输入通过物理金属总线连接,因此pim内存可以直接访问pim输入缓冲区中的数
据。输出数据锁存器,加上额外的多路复用器/解码器和一个总线从属模块,形成一个“虚拟输出缓冲器”,即通过系统总线的可寻址输出数据块。额外的pim输出缓冲区是必须的,以缓存完整gemm操作的中间部分和。通过这种硬件结构,cpu指示pim进行编程以及执行内存中的gemm计算。
88.图5说明了hma内地址分配的典型情况,包括可能的地址分配,这里左边的数字需要按应用的时候设置。整个地址空间可以分为几个块。本发明以aiot小型soc为例进行soc设计。地址的总宽度设置为32位。每个64mbyte形成一个块。块0和块7中的地址保留用于cpu配置、指令存储器、内部外围设备等。块1包括片上sram和桥接到低速总线的外部外围设备。pim相关的缓冲区和pim存储器拥有仅用于gemm加速的块3。本实施例中剩余的块4~6可用于将来的扩展。请注意,soc的不同形状因素可能会导致基于其独特的总地址宽度以及片上存储器和pim存储器的规模的不同划分方法。
89.hma实施的一个关键先决条件是,片上互连网络能够为与pim相关的双向数据传输提供足够的带宽,即(a)情况a:从pim输出缓冲区获取pim计算结果;(b)情况b:将输入向量/矩阵馈送到pim输入缓冲区。本发明通过模拟ahb通信来验证这一点。寄存器传输级(rtl)代码在28nm技术节点上合成和模拟,片上时钟为1ghz,总线宽度为128位。pim相关信息汇总在表1中。
90.表1 pim存储器阵列规格
91.容量/内存阵列256kb计算延迟@4b精度18.3ns最大pim阵列数/芯片8
92.结果如图6所示。y轴是数据传输率。上x轴是突发增量模式下ahb总线的事务大小,下x轴是pim存储器阵列的数量。本发明模拟这种模式是因为向量/矩阵中的元素大多与线性分布的地址对齐。如表1所示,每个pim内存阵列的大小为256kb。多个pim存储器阵列并行工作,使输入/输出数据传输速率呈线性。图6(a)和(b)显示了两种情况的结果。它们分别对应于ahb管理器读取(情况a)和写入(情况b)的操作。它表明,同时工作的pim存储器阵列越多,总线的数据传输速率越高。事务大小应提高到64字节,以覆盖8个pim内存阵列时高达3000mbyte/s的高pim输出吞吐量。这样,常用的ahb可以处理pim输入和输出,而无需额外的拥塞或互连缓冲。
93.另外,基于hma硬件基础设施,本发明提出了一种软硬件协同设计方法,即hma张量映射方法,以提高计算效率并最大限度地发挥hma结构的优势。
94.深度神经网络需要大量的高维矩阵运算,这些都发生在本发明设计的pim存储器中。在大多数情况下,操作数矩阵的大小大于提供的单个pim内存的单元大小。更具体地说,在本发明的一个实施例中,pim内存在i为1
×
16、v为1
×
64和w为64
×
16的维度中执行i=vw。而经典的简单两层感知器涉及784
×
100的权重矩阵,远大于64
×
16。因此,所有相关的高维大规模输入数据以及存储在传统内存中的权重数据都需要进行分区并馈入pim内存,以提高计算效率。基于本发明的方法,本发明将pim存储器中的所有矩阵乘法直接编译为一系列普通的存储器操作指令,相比于传统的pim加速器属性pim中的gemm由定制指令控制,这项创新可以使pim计算通过gcc工具链轻松编译,并根据这些指令在软件中进行优化。pim内存指令的详细说明见表2,指令中的注(x,y)表示传统内存中矩阵左上角元素的地址偏
差。
95.表2说明清单
96.操作说明描述ld.i(x,y)从传统内存中加载矩阵ald.w(x,y)从传统内存加载矩阵bsd.r(x,y)将pim结果存储到传统内存sd.m将矩阵b存储到pim存储器中sd.v将矩阵a存储到pim输入缓冲区ld.o从pim输出缓冲区加载计算结果
97.对于大多数设计,可以使用多个pim和hma结构来增强系统性能。这些pim内存应该并行调度,以利用这样一个事实,即在nn计算中,pim内存中存储的权重数据不需要频繁更改。因此,如何分解这些操作取决于有多少hma架构可供访问。如果pim内存的数量足够大以覆盖整个矩阵权重,那么权重数据可以简单地保持未分割并部署在每个pim内存中。将所有对应的子矩阵乘法结果拼接起来就可以得到最终的结果。然而,在大多数现实情况下,pim和hma结构不足以直接覆盖nn计算中的矩阵权重。由于这样的硬件限制,这些pim中的权重数据不能保持不变。本发明不像传统的gemm那样逐个矩阵运行gemm矩阵并频繁交换权重数据,而是将操作拆分为乘法和加法组。与已存储在pim矩阵中的某个权重相关的每个输入都需要一起计算,从而可以减少在pim存储器中重新加载权重数据的频率。加载到同一行不同sram的计算结果对应叠加。当所有的乘法结果都准备好后,再进行加法运算。最后一步,将不同列的加法结果进行横向拼接,完成一次gemm操作。
98.图7示出了优化前后gemm的伪代码,以及hma张量映射方法的图模型。例如,在pim结构中计算矩阵乘法c=a
×
b,其中操作数矩阵a和b的大小分别为100
×
400和400
×
80。pim输入的大小为1
×
64,每次操作时pim内存gemm的大小为64
×
16。为简单起见,本发明假设只有一种hma结构。可以使用hma-pim(如图8所示)在以下步骤中完成此类操作:
99.1.“ld w(0,0)”&“sd.m”:从b矩阵的(0,0)位置取出大小为64
×
16的数据,存入hma的pim存储器中;
100.2.“ld i(0,0)”&“sd.v”:从a矩阵的(0,0)位置取1*16大小的数据存入hma的输入缓冲区;
101.3、“ld o”&“sd r(0,0)”:从输出缓冲区中取出结果,存入传统内存;
102.4.“ld i(1.0);ld i(2.0);

;ld i(99,0)”:重复这个过程,依次从一个矩阵中取出数据,在pim中计算;
103.5.“sd r(1.0);sd.r(2.0);

;sd r(99.0)”:写回pim的计算结果,
104.6.“ld w(0,16)”:更新pim内存中的数据,重复1-5的步骤。
105.频繁的内存访问会导致额外的开销。因此本发明通过pim减少它内存访问频率。本发明给出了gemm中内存访问的分析。对于给定的矩阵乘法问题,计算c=a
×
b,写成逐元素表达式:
106.107.其中a、b和c的矩阵大小分别为m
×
k、k
×
n和m
×
n。使用cpu循环的内存访问总数rt
classic
为:
108.rt
classic
=(2+1+1)
·m·n·
k=4
·m·n·kꢀꢀꢀ
(2)
109.其中m、n、k为累计求和的循环数;2+1+1是c、a、b需要访问的频率之和,涉及到数据传输延迟。基于上式,内存访问次数为4
×
100
×
400
×
80=1.28
×
107。
110.如果使用pim进行计算,则内存访问频率rt
pim
可以描述为:
[0111][0112]
parrowa、parcola、parrowb、parcolb分别表示pim输入缓冲区和pim存储器中的分区矩阵a和b的数量。input
col
是输入缓冲区的大小,而pim
row
和pim
col
是pim内存的大小。
[0113]
回到上面的例子,内存访问次数减少到6*100*400/64*80/16=2.1*104(pim内存带来的访问次数减少100倍)。通过使用多核和建议的拼接方法,内存访问频率进一步降低为:
[0114]
rt
opt
=par roub
·
parcolb
·
(2+4
·
parrowa)
ꢀꢀ
(4)
[0115]
然后,上述相同示例中的内存访问次数可以进一步减少到400/64*80/16*(2+4*100)=1.407*104(由于提出的拼接方法,又减少了1.5倍)。
[0116]
该工具包将矩阵乘法编译为pim兼容指令系列,如图8所示,给定任意大小的矩阵a、b、输入缓冲区和pim内存的大小以及同时工作的pim内存数量。
[0117]
本发明提出了一种异构存储器,以提高传统小规模嵌入式soc上pim的效率。在此基础上,本发明进一步提出了一种映射算法,以更好地利用pim的加速。在几个常见的aiot应用中充分探索了功耗和操作延迟。该分析可为pim相关soc设计的早期设计阶段的顶级软硬件协同设计提供很好的指导。
[0118]
综上,上述实施例对具有存内/近存计算模块的soc系统的不同构型进行了详细说明,当然,本发明包括但不局限于上述实施中所列举的构型,任何在上述实施例提供的构型基础上进行变换的内容,均属于本发明所保护的范围。本领域技术人员可以根据上述实施例的内容举一反三。
[0119]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0120]
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1