CN114398308A - 基于数据驱动粗粒度可重构阵列的近内存计算系统 - Google Patents
基于数据驱动粗粒度可重构阵列的近内存计算系统 Download PDFInfo
- Publication number
- CN114398308A CN114398308A CN202210053673.8A CN202210053673A CN114398308A CN 114398308 A CN114398308 A CN 114398308A CN 202210053673 A CN202210053673 A CN 202210053673A CN 114398308 A CN114398308 A CN 114398308A
- Authority
- CN
- China
- Prior art keywords
- configuration information
- memory
- data
- interface
- operand
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
Abstract
本发明公开了基于数据驱动粗粒度可重构阵列的近内存计算系统,属于高能效比的近内存计算架构领域。所述计算系统为异构加速系统,分为三个层次,分别为片外主控层、三维加速器的逻辑层和存储层;所述片外主控层由主处理器和处理器主内存组成,主处理器通过总线将需要计算的数据从处理器主内存搬运至近内存计算架构的存储层,将配置信息通过总线搬运至逻辑层各可重构阵列的配置信息寄存器,将配置任务参数通过总线发送至各可重构阵列的配置信息调度器,在搬运完成后通过总线发出开始计算信号,可重构阵列开始进行计算任务;所述逻辑层由16个粗粒度可重构阵列作为计算逻辑,阵列通过内部总线连接到各内存控制器,实现对不同内存通道的访问。
Description
技术领域
本发明涉及高能效比的近内存计算架构领域,特别地,本发明涉及基于数据驱动粗粒度可重构阵列的近内存计算系统。
背景技术
随着互联网服务的爆炸式发展,大量数据在互联网用户的日常使用中产生,对海量数据的分析工作为计算系统带来了巨大的压力,传统计算架构的性能逐渐无法满足大量数据密集型应用对计算性能的需求。数据密集型应用的瓶颈在于内存墙,传统计算架构通过总线将数据从内存搬运到片上存储器,在处理器中进行大量数据运算后将结果通过总线写回内存,随着数据规模不断变大,为了加速数据处理速度,计算资源规模随之增加,但是内存带宽无法随计算系统规模增加,成为了制约现代数据中心计算架构的瓶颈点。数据搬运在数据分析算法过程中造成了巨大的时间与功耗开销,近期研究表明在广泛使用的移动应用中,62%的能耗被用于数据移动。传统架构中的多级缓存结构将读取的数据暂存在速度较快的缓存中,可以减少经总线的数据搬运次数,但经过研究很多应用的访存模式导致大量缓存中的数据得不到复用,反而带来了额外的延迟和功耗开销。
近几年半导体系统的集成技术进一步提高,内存和逻辑可以紧密集成。在此技术前提下,由于新型数据密集型应用对内存系统需求的提高,存内计算(Processing InMemory,PIM)的概念又一次被提出。存内计算的主要思路是将大量的计算将在存储器芯片内部进行,避免了数据搬运的开销,实现方法是直接使用存储介质本身的物理特性进行数据计算或者将数据的计算逻辑集成在数据存储芯片中。PIM的概念被提出至今已有近50年时间,但是在过去没有被广泛采纳和研究,主要是由于以下原因(1)过去的半导体制造技术无法将存储部分和逻辑部分紧密集成(2)过去的应用不是数据密集型的,PIM的特性对这些应用性能的提升较小。而如今众多数据密集型应用已成为应用的主流,PIM作为攻克内存墙的可能技术之一,再一次引起了广泛关注。现今PIM主要分为两类,第一类被称为PUM(Processing Using Memory),该方法对内存芯片进行最小化的改变以执行简单而强大的通用操作,即该芯片本身固有的特性或经过微小改变后使其具有高效计算的能力。第二类被称为PNM(Processing Near Memory),该方法将计算逻辑集成到传统DRAM的内存控制器中或集成到新型3D-DRAM的逻辑层中。
粗粒度可重构架构(Coarse-Grained Reconfigurable Architecture,CGRA)是一种区别于传统通用处理器和专用集成电路(ASIC,Application Specific IntegratedCircuit)的特殊计算架构。前者保证了架构的可编程性,但同时受限于简单通用处理器的有限性能,后者提升了架构的执行效率,但是架构使用场景单一,无法按照需求进行配置重构,亦无法有效摊销高额研发费用。现场可编程门阵列(Field Programmable GateArrays,FPGA)就是一种可重构计算架构,其特性介于通用处理器和专用集成电路之间,其重构单位以位(bit)为最小单位进行重构,因此FPGA的配置信息量巨大,配置时间开销长(平均需要十到几十毫秒),只能实现静态可重构,无法实现运行时动态可重构。CGRA的配置信息以处理单元(PE,Process Element)为最小配置单位,大大降低了可重构配置信息的数据量,电路重构的开销较FPGA也大大降低,因此可以在运算过程中动态改变电路结构,这使得粗粒度可重构架构比FPGA在任务执行时更具灵活性。
近内存计算架构是为了减少数据搬运在传统计算架构中的开销而被提出的新型计算架构,将计算逻辑集成在DRAM内存电路中,在读取数据的同时进行数据计算,避免了数据在处理器与内存间总线的搬运开销。现有技术中存在针对图算法开发的近内存计算架构,在3D-DRAM底部逻辑层的每一条通道下配置了一个简单结构的顺序配置信息处理器,每个处理器只负责运算其对应通道中的数据,但这种计算逻辑的算力不足,能效比较低,无法充分发挥存内计算的带宽优势。PIM-Enabled Instructions(PEI)以配置信息为粒度将计算任务布置到PIM上进行运算,与传统处理器为核心的架构粒度相同,编程模型仅需很小改动就能使用基于三维存储器的PIM进行加速,但其缺点是其计算逻辑碎片化处理中央处理器的部分配置信息,执行缺乏连贯性,无法最大化利用存内计算架构带宽。GRIM-Filter是为了加速基因组种子筛选算法的存内加速器。该架构将基因组种子筛选算法负载到三维存储器的逻辑层计算引擎中;NATSA是用于时间序列分析的近内存计算加速器。NATSA在加速器上实现了matrix profile算法,这是一种完全通过PNM进行时间序列分析的最新算法。这两种计算架构的缺点是应用领域过于单一化,缺乏通用性。本发明通过结合CGRA作为计算逻辑使本架构的性能与通用性都达到了较高的程度。
国内外对于粗粒度可重构架构处理器的研究主要集中在针对算法特性优化与重构开销降低,计算过程中较少考虑内存系统对计算性能与功耗的影响。Y.Park,J.J.K.Park,and S.Mahlke在2012年针对运算单元(PE)的异构性,复杂度和整合方式,研究了异构阵列结构对整体计算架构的能效提升。也有一些研究人员研究可重构阵列内PE间的互联结构,探索不同互联方式对架构可编程性、性能、能耗、面积的影响。Z.Kwok andS.J.E.Wilton和Bouwensetal探索阵列内部共享存储器,全局寄存器,本地寄存器,阵列规模大小的合适配比,使性能、功耗、面积综合达到最优。与本发明结构类似,但是其研究的重点在于如何最小化改变现有DRAM电路结构使CGRA与三维存储器结合。
现有近内存计算架构大多使用传统顺序处理器作为逻辑层计算逻辑,无法发挥近内存计算架构存储层的巨大带宽优势,少数架构采用专用加速器作为近内存计算逻辑层,性能提升,但限制了该架构的通用性。极少数架构使用可重构阵列作为计算逻辑,但其存在访存范围仅限于片上共享存储器,不支持间接访存、对编译器要求高、处理单元利用率不高等问题。
因此,本领域的技术人员致力于开发一种基于数据驱动粗粒度可重构阵列的近内存计算系统和构建方法。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是现有架构通用性差、不支持间接访存、对编译器要求高、处理单元利用率不高等问题。
基于数据驱动粗粒度可重构阵列的近内存计算系统,所述计算系统为异构加速系统,所述系统分为三个层次,分别为片外主控层、三维加速器的逻辑层和存储层;
所述片外主控层由主处理器和处理器主内存组成,主处理器通过总线将需要计算的数据从处理器主内存搬运至近内存计算架构的存储层,将配置信息通过总线搬运至逻辑层各可重构阵列的配置信息寄存器,将配置任务参数通过总线发送至各可重构阵列的配置信息调度器,在搬运完成后通过总线发出开始计算信号,可重构阵列开始进行计算任务;
所述逻辑层由16个粗粒度可重构阵列作为计算逻辑,阵列通过内部总线连接到各内存控制器,实现对不同内存通道的访问;
所述逻辑层中的内存控制器与存储层存储分块之间使用硅通孔连接,形成三维堆叠结构的加速器,以减少访存物理距离。
进一步的,所述的粗粒度可重构阵列包括8行8列的64个处理单元,共享存储器、访存合并器、全局配置信息存储器、阵列配置信息调度器,处理单元为异构设计,分别完成数据计算与数据存取,处理单元间的数据传输由处理单元间数据路由完成,路由组成Mesh片上网络;粗粒度可重构阵列的阵列配置信息调度器通过行总线对全局配置信息寄存器中的配置信息进行分配,访存合并器以及共享存储器通过列总线与存取单元直连,实现可重构阵列对内存的直接访问以及对片上存储器的访问;阵列有两个交互接口,其中之一将全局配置信息寄存器与阵列配置信息调度器相连,完成配置信息的交互,另一个接口与CrossBar总线直连,负责阵列与内存的数据交互;阵列配置信息调度器通过行总线中的处理单元状态信号对全局配置信息寄存器中的配置信息进行动态分配,通过行总线将配置信息分发给各个处理单元进行任务处理;共享数据存储器通过直接存储器访问将预置数据从内存搬运到共享数据存储器,随后阵列通过列总线对数据进行快速的数据访问;内存访存合并器收集阵列中LSU对内存的直接访问,通过内存直接访问接口与内存进行数据交换,收到内存数据后由内部逻辑将数据分发到各LSU;阵列第一行与最后一行各设计为8个LSU,以与内存的突发访问长度对应,在对内存的直接访问时充分发挥内存的最高带宽;中间6行共48个处理单元为算术逻辑单元,负责根据配置信息进行数据计算。
进一步的,所述处理单元分为2种结构,分别为存取单元和算术逻辑单元;
所述存取单元包括令牌缓存器、地址生成器、存储/读取配置信息队列,向外的接口有7个,分别为处理单元路由输入、输出接口,阵列配置信息调度器接口、内存访问接口、内存回复接口、共享存储器访问接口和共享存储器回复接口,接口数据位宽为4Bytes;所述算术逻辑单元包括令牌缓存器、执行电路、数据发射电路和3个接口,分别为处理单元路由输入、输出接口和配置信息输入接口,接口数据位宽为4Bytes。
进一步的,所述令牌缓存器用于存储LSU的配置信息,记录配置信息当前操作数的状态,当配置信息操作数全部处于就绪状态时将对应操作的操作数发往地址生成器,并根据配置信息中的操作数自增信息改变缓存器中的对应操作数;所述地址生成器将输入的操作数进行计算,生成访存地址;LSU根据访存操作类型,选择对应接口进行存储器访问,若存储器成功接收配置信息,则将访存配置信息存入存储/读取配置信息队列;所述存储/读取配置信息队列记录所有已发出的访存配置信息的完成状态,当队列最前方的配置信息处于完成状态后,存储/读取配置信息队列根据配置信息的发送信息部分向处理单元路由接口发出数据发送请求,将访存结果发送至目的地处理单元;LSU的操作配置信息分为读操作与写操作,读操作的操作数1与操作数2输入地址生成器生成访存地址;写操作的操作数1为需要存储的数据,操作数2和操作数3输入地址生成器生成访存地址;配置信息操作数来源有2个,一是由令牌缓存器自动管理的立即数,二是别的处理单元的输出结果,由配置信息中的操作数相关字段决定;所述令牌缓存器存储ALU的配置信息,记录配置信息执行操作以及当前操作数的状态,当配置信息操作数全部处于就绪状态时将对应操作的操作数发往执行电路进行计算,执行电路流水化设计,每个周期发射一条配置信息,当连续进行执行计算配置信息时,隐藏计算延迟;数据发射电路计算结果从执行电路取出,根据配置信息中的结果传输配置信息将结果发往通过处理单元路由接口发往处理单元路由,配置信息操作数来源与存取单元操作数来源相同。
进一步的,所述令牌缓存器设置4个配置信息缓存位,当其中一条或多条配置信息因操作数未就绪而不能执行时,处理单元优先处理其他已就绪指令;4个配置信息缓存位通过接口与处理单元的阵列配置信息调度器相连,当配置信息完成信号接口发出完成信号时,阵列配置信息调度器通过配置信息寄存器端口对处理单元进行配置信息设置;配置信息缓存位记录配置信息的操作指令OP,操作数相关信息,包括操作数的匹配信息,操作数的就绪状态,操作数自变量,配置信息目前执行的迭代周期IterID,配置信息在整个程序中的ID,执行结果传输目标地址;所述令牌缓存器根据操作数匹配信息判断处理单元路由数据接口传输的数据是否与当前缓存配置信息匹配,若匹配则接收操作数;所述令牌缓存器引入仲裁器进行多配置信息就绪时的执行仲裁,仲裁器根据执行单元反馈信号接口以及此时指令状态表各指令的就绪状态,通过仲裁算法决定下一周期执行的指令,通过指令输出端口输出对应指令与操作数,优先执行迭代周期小的配置信息。
进一步的,所述共享存储器采用非对称的两套端口,包括共享存储器与三维内存的接口及共享存储器与可重构阵列的接口,共享存储器与可重构阵列通过交叉开关CrossBar连接;共享存储器采用多bank的设计,共分为8个bank,每一个bank配置了单独的访问端口,共享存储器访问最多可以读入8个32bits的操作数,当发生访存冲突时,仲裁器会将冲突的配置信息延后一个周期执行。
进一步的,所述处理单元路由采用16通道设计,每一通道对应目标处理单元的对应令牌缓存器ID与操作数ID,通道选择根据函数DC_ID*4+OP_ID-1确定,比如本地处理单元的输出为目标处理单元的令牌缓存器缓存的配置信息0的操作数1,则使用0号通道传输;每一通道传输方向分为东、南、西、北、本地5个方向,每个方向设置了对应的输入输出队列与接口、传输控制器以及5x5的CrossBar;处理单元通过对应接口向处理单元路由的本地接口发送传输请求,若路由本地方向输入队列未满则返回接收信号,请求被加入本地输入队列;每个周期路由算法处理器检查所有输入队列的第一条配置信息的传输目的地址,根据路由算法决定信息通过CrossBar传输的目的输出队列,当不同输入队列的目的输出队列为同一输出队列发生冲突时,路由算法处理器充当仲裁器的作用,将其中一个请求延后一个周期发送;每个周期路由的所有输出队列尝试将输出队列的第一个信息包通过相应方向的接口进行发送。
进一步的,所述全局配置信息寄存器的结构采用非对称设计的两套端口,在与主处理器和内存进行数据交换时,采用64位总线接口;在主处理器的请求信号到来之后,发送响应信号,表示传输顺利通过DMA接口执行配置信息搬运;由于配置信息中迭代相关配置信息、输出配置信息、输入配置信息由配置信息调度器在运行时动态指定,所以对整个架构中的16个阵列,全局配置信息寄存器保存1份配置信息,为每个处理单元提供66bits的基础配置信息,全局配置信息寄存器与配置信息调度器进行交互时采用宽度达528bits的配置信息寄存器输出接口;全局配置信息寄存器内部单元每528bits作为一个单元,每一单元的地址设置相应id,在检索和传输时根据对应id配置通过端口传输到可重构阵列PEA中。
进一步的,所述配置信息包括迭代周期偏移量、立即数自增量、分支指令;
所述迭代周期偏移量使迭代周期间存在依赖的配置信息正确执行;
所述立即数自增量配合迭代次数上限,使处理单元在到达指定迭代次数前根据配置信息自动调整指令立即数部分;
所述分支指令通过配置信息中的输入操作数4需求位决定该操作是否处于分支,若操作数4为True则执行该操作,若操作数4为False则不执行该操作。
基于数据驱动粗粒度可重构阵列的近内存计算系统的实现方法,包括:
步骤1:对接口行为进行抽象,将接口的基本行为,包括发送请求、接收回复、绑定接收端口,通过C++函数实现;
步骤2:移植开源平台中的CPU、内存、交叉总线等模型,在模型中加入步骤1实现的端口模型;
步骤3:使用vector数据结构实现配置信息缓存位,定义仲裁函数、配置信息匹配函数、配置信息刷新函数;
步骤4:利用步骤1定义的接口和步骤3实现的令牌缓存器,将处理单元3段流水线行为抽象为3个函数,实现tick()函数依次调用3个流水线函数,实现2种处理单元的周期仿真。
步骤5:使用C++数据结构实现共享存储器、处理单元路由和全局配置信息寄存器的存储结构;在tick()函数中定义这些组件的周期行为;加入步骤1定义的接口。
步骤6:将步骤4~5实现的所有组件通过接口形成互连结构,组成可重构阵列;
步骤7:根据附图1将步骤1~6所有模块集成成为最终的近内存可重构阵列架构。
步骤8:编写配置信息,将配置信息通过总线发送至16个全局配置信息寄存器,运行程序。
技术效果
1、相比于现有的近内存计算架构,本发明能够充分发挥近内存计算的高带宽优势,提高整个架构的能效比。
2、本发明相比其他的可重构架构有着更好的程序通用性,对编程者友好,更高的处理单元利用率,对编译器的依赖小。
3、本发明利用访存单元使可重构阵列与内存单元在计算过程中直接发生数据交换,扩大访存范围,实现间接访存。
4、本发明使用动态执行结构的处理单元,将可重构架构对编译器的依赖度降低,增加程序通用性。
5、本发明使用令牌缓存器实现不同迭代周期指令的同时执行,提高可重构阵列中处理单元的利用率。
附图说明
图1为本发明近内存架构示意图;
图2可重构阵列架构示意图;
图3为访存单元和算术逻辑单元示意图;
图4为令牌缓存器结构示意图;
图5为共享存储器结构示意图;
图6为多通道处理单元路由结构示意图;
图7为配置信息寄存器结构示意图;
图8为配置信息结构示意图。
具体实施方式
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件的厚度。
本发明的整体架构如图1所示,整体架构是基于动态CGRA的近内存处理架构,整体是一个异构加速系统,可以分为3个层次,片外主控层、三维加速器的逻辑层和存储层。片外主控层由主处理器和处理器主内存组成。主处理器通过总线将需要计算的数据从处理器主内存搬运至近内存计算架构的存储层,将配置信息通过总线搬运至逻辑层各可重构阵列的配置信息寄存器,将配置任务参数通过总线发送至各可重构阵列的配置信息调度器,在搬运完成后通过总线发出开始计算信号,可重构阵列开始进行计算任务。逻辑层由16个粗粒度可重构阵列作为计算逻辑,阵列通过内部总线连接到各内存控制器,实现对不同内存通道的访问。逻辑层内存控制器与存储层存储分块之间使用硅通孔(Through Silicon Via,TSV)技术连接,形成三维堆叠结构的加速器,减少访存物理距离,可提供高带宽和更高的资源效率。
粗粒度可重构阵列(Coarse-Grained Reconfigurable Architecture,CGRA)由8行8列的64个处理单元(Process Element,PE)组成,处理单元为异构设计,分别完成数据计算与数据存取,处理单元间的数据传输由PE间数据路由负责,路由组成Mesh片上网络,如图2所示。阵列的阵列配置信息调度器通过行总线对全局配置信息寄存器中的配置信息进行分配,访存合并器以及共享存储器通过列总线与存取单元(Load/Store Unit,LSU)直连,实现可重构阵列对内存的直接访问以及对片上存储器的访问。阵列如图所示有两个交互接口,其中之一将全局配置信息寄存器与阵列配置信息调度器相连,完成配置信息的交互,另一个接口与CrossBar总线直连,负责阵列与内存的数据交互。阵列配置信息调度器通过行总线中的处理单元状态信号对全局配置信息寄存器中的配置信息进行动态分配,通过行总线将配置信息分发给各个处理单元进行任务处理。共享数据存储器通过直接存储器访问(Direct Memory Access,DMA)将预置数据从内存搬运到共享数据存储器,随后阵列通过列总线对数据进行快速的数据访问。内存访存合并器收集阵列中LSU对内存的直接访问,通过内存直接访问接口与内存进行数据交换,收到内存数据后由内部逻辑将数据分发到各LSU。阵列第一行与最后一行各设计为8个LSU,以与内存的突发访问长度对应,在对内存的直接访问时充分发挥内存的最高带宽。中间6行共48个处理单元(PE)为算术逻辑单元,负责根据配置信息进行数据计算。
处理单元(PE)分为2种结构,分别为存取单元和算术逻辑单元(Algorithm LogicUnit,ALU)。
存取单元如图3所示,由令牌缓存器,地址生成器,存储/读取配置信息队列组成,向外的接口有7个,分别为处理单元路由输入、输出接口,阵列配置信息调度器接口、内存访问接口、内存回复接口、共享存储器访问接口和共享存储器回复接口,接口数据位宽为4Bytes。其中令牌缓存器存储LSU的配置信息,记录配置信息当前操作数的状态,当配置信息操作数全部处于就绪(Ready)状态时将对应操作的操作数发往地址生成器,并根据配置信息中的操作数自增信息改变缓存器中的对应操作数。地址生成器将输入的操作数进行计算,生成访存地址。LSU根据访存操作类型,选择对应接口进行存储器访问,若存储器成功接收配置信息,则将访存配置信息存入存储/读取配置信息队列。存储/读取配置信息队列记录所有已发出的访存配置信息的完成状态,当队列最前方的配置信息处于完成状态后,存储/读取配置信息队列根据配置信息的发送信息部分向处理单元路由接口发出数据发送请求,将访存结果发送至目的地处理单元。LSU的操作配置信息分为读操作与写操作,读操作的操作数1与操作数2输入地址生成器生成访存地址;写操作的操作数1为需要存储的数据,操作数2和操作数3输入地址生成器生成访存地址。配置信息操作数来源有2个,一是由令牌缓存器自动管理的立即数,二是别的处理单元的输出结果,由配置信息中的操作数相关字段决定。
算术逻辑单元如图3所示,由令牌缓存器、执行电路和数据发射电路组成,有3个接口,分别为处理单元路由输入、输出接口和配置信息输入接口,接口数据位宽为4Bytes。令牌缓存器存储ALU的配置信息,记录配置信息执行操作以及当前操作数的状态,当配置信息操作数全部处于就绪(Ready)状态时将对应操作的操作数发往执行电路进行计算。执行电路流水化设计,每个周期可以发射一条配置信息,当连续进行执行计算配置信息时,可隐藏计算延迟。数据发射电路将计算结果从执行电路取出,根据配置信息中的结果传输配置信息将结果发往通过处理单元路由接口发往处理单元路由。配置信息操作数来源与存取单元操作数来源相同。
令牌缓存器的物理结构如图4所示,为了提高处理单元利用率,设置了4个配置信息缓存位,当其中几条配置信息因操作数未就绪而不能执行时,处理单元可以优先处理其他已就绪指令。4个配置信息缓存位通过接口401与处理单元的阵列配置信息调度器相连,当配置信息完成信号接口402发出完成信号时,阵列配置信息调度器通过配置信息寄存器端口401对处理单元进行配置信息设置。配置信息缓存位记录配置信息的操作指令OP,操作数相关信息(操作数的匹配信息,操作数的就绪状态,操作数自变量),配置信息目前执行的迭代周期IterID,配置信息在整个程序中的ID,执行结果传输目标地址等。令牌缓存器根据操作数匹配信息判断处理单元路由数据接口403传输的数据是否与当前缓存配置信息匹配,若匹配则接收操作数。令牌缓存器引入了仲裁器来进行多配置信息就绪时的执行仲裁,仲裁器根据执行单元反馈信号接口404以及此时指令状态表各指令的就绪状态,通过仲裁算法决定下一周期执行的指令,通过指令输出端口405输出对应指令与操作数,本发明目前采用的算法是优先执行迭代周期小的配置信息。
共享存储器的设计与全局配置信息寄存器类似,采用了非对称的两套端口,如图5所示。共享存储器与三维内存的接口501,宽度为32bits;共享存储器与可重构阵列的接口502,其与可重构阵列通过交叉开关CrossBar连接。为了提高访问共享存储器的速度,采用了多bank的设计,共分为8个bank,每一个bank配置了单独的访问端口,这样每次共享存储器访问最多可以读入8个32bits的操作数,并且可以进一步扩展。当发生访存冲突时,仲裁器会将冲突的配置信息延后一个周期执行。
处理单元路由如图6所示,为了彻底避免负载均衡问题导致的路由传输死锁问题,路由采用16通道设计,每一通道对应目标处理单元的对应令牌缓存器ID与操作数ID,通道选择根据函数DC_ID*4+OP_ID-1确定,比如本地处理单元的输出为目标处理单元的令牌缓存器缓存的配置信息0的操作数1,则使用0号通道传输,每一配置信息的每一操作数使用单独通道进行传输,保证了动态可重构阵列的执行正确性。每一通道传输方向分为东、南、西、北、本地5个方向,每个方向设置了对应的输入输出队列与接口,此外还有传输控制器以及5x5的CrossBar。处理单元通过对应接口向处理单元路由的本地接口发送传输请求,若路由本地方向输入队列未满则返回接收信号,请求被加入本地输入队列。每个周期路由算法处理器检查所有输入队列的第一条配置信息的传输目的地址,根据路由算法决定信息通过CrossBar传输的目的输出队列,当不同输入队列的目的输出队列为同一输出队列发生冲突时,路由算法处理器充当仲裁器的作用,将其中一个请求延后一个周期发送。每个周期路由的所有输出队列尝试将输出队列的第一个信息包通过相应方向的接口进行发送。
全局配置信息寄存器的结构如图7所示,采用了非对称设计的两套端口,在与主处理器和内存进行数据交换时,采用64位总线接口,保证系统的良好兼容性。在主处理器的请求信号701到来之后,发送响应信号702,表示传输顺利通过DMA接口703执行配置信息搬运。由于配置信息中迭代相关配置信息、输出配置信息、输入配置信息由配置信息调度器在运行时动态指定,所以对整个架构中的16个阵列,全局配置信息寄存器仅需保存1份配置信息,仅需为每个处理单元提供66bits的基础配置信息,全局配置信息寄存器与配置信息调度器进行交互时采用宽度达528bits的配置信息寄存器输出接口704,以满足重构时的速度。全局配置信息寄存器内部单元每528bits作为一个单元,每一单元的地址设置相应id,在检索和传输时根据对应id配置通过704端口传输到可重构阵列PEA中。
本发明配置信息格式考虑了多个方面来保证程序的通用性和正确性:
1)迭代次数上限设计:以往CGRA的执行过程中,每个机器周期都需要重新从配置信息寄存器中重新读取配置信息,因此造成了大量的配置信息读取开销,以及配置信息寄存器开销,但往往同一配置信息在这个计算过程中被重复使用,为配置信息设计迭代次数上限可以减少无效配置信息读取,同时减少配置信息寄存器开销。
2)迭代周期偏移量:引入迭代周期概念使阵列执行效率增加,但是造成操作数匹配只能接收相同迭代周期的结果,因此配置信息中引入迭代周期偏移量使迭代周期间存在依赖的配置信息可以正确执行。
3)立即数自增量:以往CGRA的配置信息中大部分内容相同,差别在于立即数的微小变化,因此带来了配置信息重读的开销,同时增加了配置信息寄存器存储开销。本发明在配置信息中设置立即数自增量,配合迭代次数上限,使处理单元在到达指定迭代次数前根据配置信息自动调整指令立即数部分,避免了对配置信息寄存器的无效读取,减轻了配置信息寄存器的存储压力。
4)实现分支指令:为了实现分支指令,为配置信息设置了第四个输入操作数,该操作数通过配置信息中的输入操作数4需求位决定该操作是否处于分支,若操作数4为True则执行该操作,若操作数4为False则不执行该操作。
在上述基础上,130bits配置字的具体内容如图8所示:
1)801:第129~114位,共16位,表示配置信息迭代次数上限;
2)802:第113~84位,共30位,表示为配置信息计算/访存结果预留的3个输出方向,每个方向10bits,其中高位6bits表示目的地PE_ID,中间2bits代表目标PE的令牌缓存器通道ID,最后2bits表示目标PE的操作数ID。
3)803:第83~82位,共2位,表示输出目标PE的数量。
4)804:共16位,表示逻辑判断操作数4的配置信息,当操作数被需求时,高8bits表示PE_ID,低8bits表示配置信息执行周期与数据来源配置信息的迭代周期可能存在的偏移量,该偏移量由指令的跨周期依赖产生。
5)805:操作数4表示逻辑判断操作数,共1位,表示逻辑判断操作数4的需求情况,0表示不需要该操作数,1表示该操作数来源是其他处理单元。
6)806/808/810:共16位,表示操作数3/2/1的配置信息,当操作数来源是其他PE时,高8bits表示PE_ID,低8bits表示配置信息执行周期与数据来源配置信息的迭代周期可能存在的偏移量,该偏移量由程序的跨周期依赖产生;当操作数来源是立即数时,高8bits表示立即数初始值,低8bits表示立即数的自增量。
7)807/809/811:共1位,表示操作数3/2/1的来源情况,0表示该操作数来源是立即数,1表示该操作数来源是其他处理单元。
8)812:第13~6位,共8位,表示该配置信息在全局寄存器中的ID,用于匹配配置信息间的依赖。
9)813:第5~0位,共6位,表示处理单元所执行的存储配置信息/算术逻辑操作的类型。
本发明最终通过C++对硬件进行建模的方式实现,C++模拟组件的行为模式,并将组件通过接口进行互联,最终组件协同进行仿真,具体步骤如下:
步骤1:对接口行为进行抽象,将接口的基本行为(发送请求、接收回复、绑定接收端口)通过C++函数实现。
步骤2:移植开源平台中的CPU、内存、交叉总线等模型,在模型中加入步骤1实现的端口模型。
步骤3:根据附图4,使用vector数据结构实现配置信息缓存位,定义仲裁函数、配置信息匹配函数、配置信息刷新函数。
步骤4:根据附图3方案,加入步骤1定义的接口和步骤3实现的令牌缓存器,将处理单元3段流水线行为抽象为3个函数,实现tick()函数依次调用3个流水线函数,实现2种处理单元的周期仿真。
步骤5:根据附图5、附图6和附图7使用C++数据结构实现共享存储器、处理单元路由和全局配置信息寄存器的存储结构;在tick()函数中定义这些组件的周期行为;加入步骤1定义的接口。
步骤6:根据附图2将步骤4~5实现的所有组件通过接口形成互连结构,组成可重构阵列。
步骤7:根据附图1将步骤1~6所有模块集成成为最终的近内存可重构阵列架构。
步骤8:按照附图8的配置信息格式编写配置信息,将配置信息通过总线发送至16个全局配置信息寄存器,运行程序。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (10)
1.基于数据驱动粗粒度可重构阵列的近内存计算系统,其特征在于,所述计算系统为异构加速系统,所述系统分为三个层次,分别为片外主控层、三维加速器的逻辑层和存储层;
所述片外主控层由主处理器和处理器主内存组成,主处理器通过总线将需要计算的数据从处理器主内存搬运至近内存计算架构的存储层,将配置信息通过总线搬运至逻辑层各可重构阵列的配置信息寄存器,将配置任务参数通过总线发送至各可重构阵列的配置信息调度器,在搬运完成后通过总线发出开始计算信号,可重构阵列开始进行计算任务;
所述逻辑层由16个粗粒度可重构阵列作为计算逻辑,阵列通过内部总线连接到各内存控制器,实现对不同内存通道的访问;
所述逻辑层中的内存控制器与存储层存储分块之间使用硅通孔连接,形成三维堆叠结构的加速器,以减少访存物理距离。
2.根据权利要求1所述的基于数据驱动粗粒度可重构阵列的近内存计算系统,其特征在于所述的粗粒度可重构阵列包括8行8列的64个处理单元,共享存储器、访存合并器、全局配置信息存储器、阵列配置信息调度器,处理单元为异构设计,分别完成数据计算与数据存取,处理单元间的数据传输由处理单元间数据路由完成,路由组成Mesh片上网络;粗粒度可重构阵列的阵列配置信息调度器通过行总线对全局配置信息寄存器中的配置信息进行分配,访存合并器以及共享存储器通过列总线与存取单元直连,实现可重构阵列对内存的直接访问以及对片上存储器的访问;阵列有两个交互接口,其中之一将全局配置信息寄存器与阵列配置信息调度器相连,完成配置信息的交互,另一个接口与CrossBar总线直连,负责阵列与内存的数据交互;阵列配置信息调度器通过行总线中的处理单元状态信号对全局配置信息寄存器中的配置信息进行动态分配,通过行总线将配置信息分发给各个处理单元进行任务处理;共享数据存储器通过直接存储器访问将预置数据从内存搬运到共享数据存储器,随后阵列通过列总线对数据进行快速的数据访问;内存访存合并器收集阵列中LSU对内存的直接访问,通过内存直接访问接口与内存进行数据交换,收到内存数据后由内部逻辑将数据分发到各LSU;阵列第一行与最后一行各设计为8个LSU,以与内存的突发访问长度对应,在对内存的直接访问时充分发挥内存的最高带宽;中间6行共48个处理单元为算术逻辑单元,负责根据配置信息进行数据计算。
3.根据权利要求2所述的基于数据驱动粗粒度可重构阵列的近内存计算系统,其特征在于所述处理单元分为2种结构,分别为存取单元和算术逻辑单元;
所述存取单元包括令牌缓存器、地址生成器、存储/读取配置信息队列,向外的接口有7个,分别为处理单元路由输入、输出接口,阵列配置信息调度器接口、内存访问接口、内存回复接口、共享存储器访问接口和共享存储器回复接口,接口数据位宽为4Bytes;所述算术逻辑单元包括令牌缓存器、执行电路、数据发射电路和3个接口,分别为处理单元路由输入、输出接口和配置信息输入接口,接口数据位宽为4Bytes。
4.根据权利要求3所述的基于数据驱动粗粒度可重构阵列的近内存计算系统,其特征在于所述令牌缓存器用于存储LSU的配置信息,记录配置信息当前操作数的状态,当配置信息操作数全部处于就绪状态时将对应操作的操作数发往地址生成器,并根据配置信息中的操作数自增信息改变缓存器中的对应操作数;所述地址生成器将输入的操作数进行计算,生成访存地址;LSU根据访存操作类型,选择对应接口进行存储器访问,若存储器成功接收访问请求,则将访存配置信息存入存储/读取配置信息队列;所述存储/读取配置信息队列记录所有已发出的访存配置信息的完成状态,当队列最前方的配置信息处于完成状态后,存储/读取配置信息队列根据配置信息的发送信息部分向处理单元路由接口发出数据发送请求,将访存结果发送至目的地处理单元;LSU的操作配置信息分为读操作与写操作,读操作的操作数1与操作数2输入地址生成器生成访存地址;写操作的操作数1为需要存储的数据,操作数2和操作数3输入地址生成器生成访存地址;配置信息操作数来源有2个,一是由令牌缓存器自动管理的立即数,二是别的处理单元的输出结果,由配置信息中的操作数相关字段决定;所述令牌缓存器存储ALU的配置信息,记录配置信息执行操作以及当前操作数的状态,当配置信息操作数全部处于就绪状态时将对应操作的操作数发往执行电路进行计算,执行电路流水化设计,每个周期发射一条配置信息,当连续进行执行计算配置信息时,隐藏计算延迟;数据发射电路计算结果从执行电路取出,根据配置信息中的结果传输配置信息将结果发往通过处理单元路由接口发往处理单元路由,配置信息操作数来源与存取单元操作数来源相同。
5.根据权利要求4所述的基于数据驱动粗粒度可重构阵列的近内存计算系统,其特征在于所述令牌缓存器设置4个配置信息缓存位,当其中一条或多条配置信息因操作数未就绪而不能执行时,处理单元优先处理其他已就绪指令;4个配置信息缓存位通过接口与处理单元的阵列配置信息调度器相连,当配置信息完成信号接口发出完成信号时,阵列配置信息调度器通过配置信息寄存器端口对处理单元进行配置信息设置;配置信息缓存位记录配置信息的操作指令OP,操作数相关信息,包括操作数的匹配信息,操作数的就绪状态,操作数自变量,配置信息目前执行的迭代周期IterID,配置信息在整个程序中的ID,执行结果传输目标地址;所述令牌缓存器根据操作数匹配信息判断处理单元路由数据接口传输的数据是否与当前缓存配置信息匹配,若匹配则接收操作数;所述令牌缓存器引入仲裁器进行多配置信息就绪时的执行仲裁,仲裁器根据执行单元反馈信号接口以及此时指令状态表各指令的就绪状态,通过仲裁算法决定下一周期执行的指令,通过指令输出端口输出对应指令与操作数,优先执行迭代周期小的配置信息。
6.根据权利要求5所述的基于数据驱动粗粒度可重构阵列的近内存计算系统,其特征在于所述共享存储器采用非对称的两套端口,包括共享存储器与三维内存的接口及共享存储器与可重构阵列的接口,共享存储器与可重构阵列通过交叉开关CrossBar连接;共享存储器采用多bank的设计,共分为8个bank,每一个bank配置了单独的访问端口,共享存储器访问最多可以读入8个32bits的操作数,当发生访存冲突时,仲裁器会将冲突的配置信息延后一个周期执行。
7.根据权利要求6所述的基于数据驱动粗粒度可重构阵列的近内存计算系统,其特征在于所述处理单元路由采用16通道设计,每一通道对应目标处理单元的对应令牌缓存器ID与操作数ID,通道选择根据函数DC_ID*4+OP_ID-1确定,比如本地处理单元的输出为目标处理单元的令牌缓存器缓存的配置信息0的操作数1,则使用0号通道传输;每一通道传输方向分为东、南、西、北、本地5个方向,每个方向设置了对应的输入输出队列与接口、传输控制器以及5x5的CrossBar;处理单元通过对应接口向处理单元路由的本地接口发送传输请求,若路由本地方向输入队列未满则返回接收信号,请求被加入本地输入队列;每个周期路由算法处理器检查所有输入队列的第一条配置信息的传输目的地址,根据路由算法决定信息通过CrossBar传输的目的输出队列,当不同输入队列的目的输出队列为同一输出队列发生冲突时,路由算法处理器充当仲裁器的作用,将其中一个请求延后一个周期发送;每个周期路由的所有输出队列尝试将输出队列的第一个信息包通过相应方向的接口进行发送。
8.根据权利要求7所述的基于数据驱动粗粒度可重构阵列的近内存计算系统,其特征在于所述全局配置信息寄存器的结构采用非对称设计的两套端口,在与主处理器和内存进行数据交换时,采用64位总线接口;在主处理器的请求信号到来之后,发送响应信号,表示传输顺利通过DMA接口执行配置信息搬运;由于配置信息中迭代相关配置信息、输出配置信息、输入配置信息由配置信息调度器在运行时动态指定,所以对整个架构中的16个阵列,全局配置信息寄存器保存1份配置信息,为每个处理单元提供66bits的基础配置信息,全局配置信息寄存器与配置信息调度器进行交互时采用宽度达528bits的配置信息寄存器输出接口;全局配置信息寄存器内部单元每528bits作为一个单元,每一单元的地址设置相应id,在检索和传输时根据对应id配置通过端口传输到可重构阵列PEA中。
9.根据权利要求8所述的基于数据驱动粗粒度可重构阵列的近内存计算系统,其特征在于所述配置信息包括迭代周期偏移量、立即数自增量、分支指令;
所述迭代周期偏移量使迭代周期间存在依赖的配置信息正确执行;
所述立即数自增量配合迭代次数上限,使处理单元在到达指定迭代次数前根据配置信息自动调整指令立即数部分;
所述分支指令通过配置信息中的输入操作数4需求位决定该操作是否处于分支,若操作数4为True则执行该操作,若操作数4为False则不执行该操作。
10.一种基于权利要求9的基于数据驱动粗粒度可重构阵列的近内存计算系统的实现方法,其特征在于,包括:
步骤1:对接口行为进行抽象,将接口的基本行为,包括发送请求、接收回复、绑定接收端口,通过C++函数实现;
步骤2:移植开源平台中的CPU、内存、交叉总线等模型,在模型中加入步骤1实现的端口模型;
步骤3:使用vector数据结构实现配置信息缓存位,定义仲裁函数、配置信息匹配函数、配置信息刷新函数;
步骤4:利用步骤1定义的接口和步骤3实现的令牌缓存器,将处理单元3段流水线行为抽象为3个函数,实现tick()函数依次调用3个流水线函数,实现2种处理单元的周期仿真;
步骤5:使用C++数据结构实现共享存储器、处理单元路由和全局配置信息寄存器的存储结构;在tick()函数中定义这些组件的周期行为;加入步骤1定义的接口;
步骤6:将步骤4~5实现的所有组件通过接口形成互连结构,组成可重构阵列;
步骤7:根据附图1将步骤1~6所有模块集成成为最终的近内存可重构阵列架构;
步骤8:编写配置信息,将配置信息通过总线发送至16个全局配置信息寄存器,运行程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210053673.8A CN114398308A (zh) | 2022-01-18 | 2022-01-18 | 基于数据驱动粗粒度可重构阵列的近内存计算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210053673.8A CN114398308A (zh) | 2022-01-18 | 2022-01-18 | 基于数据驱动粗粒度可重构阵列的近内存计算系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114398308A true CN114398308A (zh) | 2022-04-26 |
Family
ID=81231496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210053673.8A Pending CN114398308A (zh) | 2022-01-18 | 2022-01-18 | 基于数据驱动粗粒度可重构阵列的近内存计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114398308A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114996205A (zh) * | 2022-07-21 | 2022-09-02 | 之江实验室 | 辅助3d架构近存计算系统的片内数据调度控制器及方法 |
-
2022
- 2022-01-18 CN CN202210053673.8A patent/CN114398308A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114996205A (zh) * | 2022-07-21 | 2022-09-02 | 之江实验室 | 辅助3d架构近存计算系统的片内数据调度控制器及方法 |
CN114996205B (zh) * | 2022-07-21 | 2022-12-06 | 之江实验室 | 辅助3d架构近存计算系统的片内数据调度控制器及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
JP4713080B2 (ja) | 単一のオペレーティングシステムイメージ下で動作する再構成可能なプロセッサを用いるウェブサーバのためのシステムおよび方法 | |
KR101647907B1 (ko) | 내부 프로세서를 구비한 메모리 및 메모리 내의 데이터 통신 방법 | |
CN104699631A (zh) | Gpdsp中多层次协同与共享的存储装置和访存方法 | |
CN112463719A (zh) | 一种基于粗粒度可重构阵列实现的存内计算方法 | |
CN105468568B (zh) | 高效的粗粒度可重构计算系统 | |
CN112149369A (zh) | 基于芯粒架构的多核封装级系统及其面向芯粒的任务映射方法 | |
CN111433758A (zh) | 可编程运算与控制芯片、设计方法及其装置 | |
CN111124675A (zh) | 一种面向图计算的异构存内计算设备及其运行方法 | |
CN111630505A (zh) | 深度学习加速器系统及其方法 | |
Biookaghazadeh et al. | Toward multi-fpga acceleration of the neural networks | |
CN112732639B (zh) | 一种粗粒度动态可重构处理器及其数据处理方法 | |
CN100489830C (zh) | 面向科学计算的64位流处理器芯片 | |
JP2021507386A (ja) | ニューラルネットワーク処理のための共用メモリの集中型−分散型混合構成 | |
CN114356840A (zh) | 具有存内/近存计算模块的SoC系统 | |
CN114564434B (zh) | 一种通用多核类脑处理器、加速卡及计算机设备 | |
CN114398308A (zh) | 基于数据驱动粗粒度可重构阵列的近内存计算系统 | |
TW202227979A (zh) | 用於檢測串流相容及廣播相容的資料存取型樣的編譯時邏輯 | |
US11782760B2 (en) | Time-multiplexed use of reconfigurable hardware | |
EP2132645A1 (en) | A data transfer network and control apparatus for a system with an array of processing elements each either self- or common controlled | |
JP4860891B2 (ja) | ビット順次手法により大容量並列プロセッサアレイをメモリアレイに接続する方法及び装置 | |
CN112486908A (zh) | 层次化的多rpu多pea的可重构处理器 | |
Liu et al. | Accelerating large-scale DEVS-based simulation on the cell processor | |
Li et al. | An efficient multicast router using shared-buffer with packet merging for dataflow architecture | |
CN115328850A (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 |