技术领域
[0001] 本发明实施例涉及嵌入式可重构技术领域,尤其涉及一种可重构处理器和可重构处理器系统。
相关背景技术
[0002] 信息处理设备中包含了大量的专门计算单元,这些计算单元用于完成各种不同的算法处理任务。这些计算单元根据是否可以通过软件灵活改变功能,大致可以分为基于通用处理架构的信号处理器以及为特定算法定制的供专门应用的集成电路(Application Specific Integrated Circuit,ASIC)。随着通用处理器架构研究的深入、能耗效率的提高,以及算法演进需求和复杂度增加,基于通用处理架构的信号处理器越来越受到人们的重视。
[0003] 基于通用处理架构的信号处理器按照技术路线又大致分为基于传统中央处理器(Central Processing Unit,CPU)方案、基于传统图形处理器(Graphics Processing Unit,GPU)方案、基于传统数字信号处理器(Digital signal processor,DSP)方案、基于可重构计算方案和基于领域定制处理器方案等。虽然这些方案各有其自己的优势和应用场景,但对于嵌入式终端来说,在做通信信号处理、图像语音信号处理以及人工智能(Artificial Intelligence,AI)推理时,基于传统CPU的方案、基于传统GPU的方案以及基于传统DSP的方案,它们的主要PPA(Performance Power Area)指标相比ASIC都有很大的差距。但是采用ASIC方案又有着不能灵活修改演进算法的缺陷。
[0004] 而基于可重构计算方案以及基于领域定制处理器方案,是当前嵌入式终端中研究较多的方案,上述方案的灵活性与PPA指标相比ASIC,达到了很好的平衡。基于领域定制处理器方案,其为每一类的应用定制一个专门的处理器,每一个定制处理器在硬件支持的数据类型、特色指令、流水长度以及包含最小的指令集集合都是不一样,但是这也使得多个定制处理器之间不能相互替代,造成设计“零碎”化、计算能力不易扩展的新问题。基于可重构计算方案则是采用统一的硬件架构和配置指令,数据流驱动和指令流驱动相结合的方式,既能够获取很好的PPA性能,又能够保持足够的灵活性,但是现有技术中的基于可重构计算方案在功耗和处理性能上还不能满足需求。
具体实施方式
[0030] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0031] 实施例一
[0032] 图1为本发明实施例中提供的一种可重构处理器的结构示意图。如图1所示,该可重构处理器10包括硬件消息管理模块110、内存管理单元120和算术逻辑运算单元130,内存管理单元120分别与硬件消息管理模块110、算术逻辑运算单元130连接;
[0033] 其中硬件消息管理模块110用于读取和解析至少一个硬件消息,并对各硬件消息的优先级进行配置,将硬件消息通过内存管理单元120存储至内存中;
[0034] 算术逻辑运算单元130用于按照配置的优先级执行硬件消息。
[0035] 本实施例中提供的可重构处理器10,又称通用加速装置(General Accelerator Unit,GAU),是一种通过对可重构的颗粒度、基本计算单元和计算单元拓扑关系等的重构完成各种不同的算法处理任务的处理器。可重构处理器10中还设置有外部接口,用于实现与外部内存的访问。
[0036] 本实施例中的可重构处理器10采用的是硬件消息驱动机制。可重构处理器10在工作之前需要进行配置,具体参见图2。图2为本发明实施例一中提供的一种可重构处理器的配置示意图。具体配置过程可以为:微控制单元(Microcontroller Unit,MCU)30配置可重构处理器10中的复位寄存器,复位可重构处理器10;微控制单元30初始化硬件消息,并配置硬件消息的地址,赋值给对应的寄存器;微控制单元30解复位可重构处理器10。其中硬件消息中可以包括可重构处理器10所需的配置流信息和数据空间信息,硬件消息在可重构处理器10内存中的地址通过其中的寄存器进行配置。可重构处理器10平时处于复位(RESET)状态,解复位状态后立即开始工作。
[0037] 进一步的,可重构处理器10的工作流程具体参见图3。图3为本发明实施例一中提供的一种可重构处理器的工作示意图,图中工作流程除自身工作流程之外,还包括可重构处理器工作之前的配置流程。配置流程为:微控制单元30复位可重构处理器10,配置可重构处理器10的复位寄存器;微控制单元30在触发可重构处理器10工作之前要初始化完相应的硬件消息;微控制单元30配置硬件消息地址,即起始地址寄存器;微控制单元30解复位可重构处理器10,可重构处理器10核心模块上电、恢复时钟;硬件消息管理模块110控制专用通道将硬件消息拷贝到可重构处理器10内部。
[0038] 工作流程为:硬件消息管理模块110根据当前激活的硬件消息中的数据空间信息,配置内存管理单元120中的内存访问子单元,以触发专用通道搬移可重构处理器10对应的内存中的第一条配置流信息;可重构处理器10开始工作,通过数据驱动算术逻辑运算单元130执行硬件消息,直到完成当前硬件消息的处理;硬件消息管理模块110预取下一条配置流信息到可重构处理器10内部,继续重复上述工作过程,直到可重构处理器10完成所有配置执行和完成所有硬件消息的执行;可重构处理器10完成全部任务后自动断电、断时钟进入低功耗状态。
[0039] 其中,硬件消息管理模块(Hardware Message Management,HMM)110可以读取外部总线20传输的硬件消息,具体通过设定通道进行读取,该硬件消息可以包括可重构处理器10所需的配置流信息和数据空间信息。本实施例中的硬件消息管理原则通过硬件消息管理模块110执行,具体的硬件消息管理原则包括:一条硬件消息一旦执行,则不允许被打断;一条硬件消息可以由中断触发执行,或按硬件消息序号顺序执行;硬件消息按照优先级进行执行;每个外部中断触发一条硬件消息;任何时候只能有一条硬件消息处于准备(Ready)状态,且只有一条硬件消息处于执行(Run)状态。
[0040] 图4为本发明实施例一中提供的一种硬件消息的状态示意图,图中硬件消息的状态可以包括初始化(Init)状态、准备(Ready)状态、执行(Run)状态和结束(Finish)状态,其中初始化状态时,由外部的中央处理器(Central Processing Unit,CPU)配置完一条合法的硬件消息,当有一个外部中断信号到达或者前一条硬件消息执行完毕,则触发当前的硬件消息处于准备状态;如果前一条消息已经执行完毕,则将当前消息由准备状态转为执行状态,否则当前消息一直处于准备状态,等待前一条消息执行完毕;之后,在执行状态执行当前消息所指示的配置流信息,直至全部执行完成,转入结束状态;清除硬件消息队列中的相关标志位,若运行自动停止当前消息的执行,则置当前消息为无效标志。
[0041] 进一步的,算术逻辑运算单元(Arithmetic and Logic Unit,ALU)130用于通过重构生成计算模式,计算模式的数量为至少一个。算术逻辑运算单元130包括乘法器、加法器和比较器等中的至少一个基本运算单元,可以完成多种不同的计算模式的重构。
[0042] 计算模式中可以包括各种常用的信号处理基本算子,例如可以包括卷积、相关、矢量Scale操作、矢量点乘、矢量乘法、矩阵乘法、插值/抽取、蝶形运算、多项式运算、查找表、累加、比较、sin、cos、除法和平方根倒数等运算。具体的,卷积对应算子公式为FIR(Finite Impulse Response)滤波器是一种常见的卷积运算,其滤波器系数常具有对称性,在乘法器数量一定条件下,为支持更高阶的FIR滤波器,常采用一些特殊结构,比如K为偶数时, 当K为
奇数时,
相关对应的算子公式为 矢量Scale操作对应的算子公式为ka=
[ka(0) … ka(N-1)]。矢量点乘对应的算子公式为ab=c=[a(0)b(0) … a(N-1)b(N-1)]。
矢量乘法对应的算子公式为ab=a(0)b(0)+…+a(N-1)b(N-1)。矩阵乘法针对2x2,4x4矩阵的运算进行优化,可以减小外部内存的访问量,以2x2矩阵为例,对应的算子公式为矩阵乘法是否需要支持,可以根据
实际情况设定。插值/抽取,插值操作一般是在一个序列中每一个元素之间插入N个0,抽取操作一般是从一个序列中按照一定图样抽取出所需要的值。蝶形运算因子如图5所示,图5为本发明实施例一中提供的一种蝶形运算因子的示意图,一般地,输入两个矢量a=[a(0) … a(N-1)]和b=[b(0) … b(N-1)],经过蝶形因子输出结果为两个新的矢量和[a(0)+b(0) … a(N-1)+b(N-1)]与[a(0)-b(0) … a(N-1)-b(N-1)];蝶形运算的一种增强形式是输出再归一化两个乘法系数,如图6所示,图6为本发明实施例一中提供的另一种蝶形运算因子的示意图。多项式运算对应的算子公式为y=aK-1xK-1+aK-2xK-2+…+a0。查找表运算主要有下面两种情形:根据索引(index)从表中查找到相应元素和输出矢量中非0元素对应的索引。累加对应的算子公式为 比较,矢量a和矢量b的对应元素相比较,考虑下面两种结果输出以满足不同的应用场合 其他常见的数学
运算,比如sin、cos、除法和平方根倒数等运算,也可以直接重构得到,而不需要增加专门的计算逻辑。
[0043] 示例性的,算术逻辑运算单元130在蝶形运算的计算模式下,可以将两路输入数据流FIFO0和FIFO1通过多路选择开关(MUX)分别送到各个输入寄存器,各个寄存器的输出通过MUX送到相应的加法器,加法器的结果最后通过MUX送到输出寄存器,输出寄存器中的数据最终通过输出FIFO写到内存。
[0044] 本实施例中的内存管理单元(Memory Management System,MMS)120可以包括内存访问(General Direct Memory Access,GDMA)子单元、通道仲裁器和数据流管理子单元,用于进行数据传输。其中,内存访问子单元用于针对计算模式进行输入输出数据流的操作,通道仲裁器用于进行内存访问冲突和优先级的管理,数据流管理子单元用于实现数据流驱动。参见图7,图7为本发明实施例一中提供的一种内存管理单元的结构示意图,图中除内存管理单元120之外,还包括了内存管理单元120与可重构处理器10中硬件消息管理模块110、算术逻辑运算单元130、以及外部总线20之间的连接和访问关系,内存管理单元120具体用于进行输入数据和输出数据的管理,实现数据流驱动。图中外部总线20可以为AXI(Advanced eXtensible Interface)总线,仅为示例,其他总线也可以适用。
[0045] 具体的,内存管理单元120的特性如下:可以支持与位宽可变的外部总线之间进行数据传输;支持多个内存访问子单元通道分时复用并行工作;每个传输通道可以支持传输优先级设定;支持通过内存管理单元120监测片外数据实现数据流触发的工作方式;支持与内存管理单元120输入输出FIFO的管理;支持片内设定固定大小的TCM与内存管理单元120输入输出FIFO之间的数据传输;支持通道仲裁器响应通道请求后各通道的执行力度(burst size)可配。
[0046] 如图1所示,本实施例中的可重构处理器10还包括寄存器(Register File,RF)组140,寄存器组140分别与内存管理单元120、算术逻辑运算单元130连接。进一步的,寄存器组140用于配置内存管理单元120传输的硬件消息在内存中的地址,且为算术逻辑运算单元
130提供运算所需的寄存器。
[0047] 进一步的,本实施例中的可重构处理器10还包括功耗管理单元150,功耗管理单元150分别与硬件消息管理模块110、内存管理单元120、算术逻辑运算单元130连接,用于执行功耗管理。示例性的,本实施例提供的可重构处理器10能效比可以达到0.743TOPS/W,相较于现有技术中277GOPS/W,能效比表现更加优秀。
[0048] 本实施例提供的可重构处理器,通过硬件消息管理模块可以读取和解析外部的多个硬件消息,并进行优先级的配置,进而按照优先级执行硬件消息,使得可重构处理器的处理性能得到提高,并且降低了功耗;且内存管理单元基于基本计算单元重构计算模式,采用数据流驱动方式,相较于现有技术,在满足各种信号处理场景需求的基础上,减小了配置开销。
[0049] 实施例二
[0050] 本发明实施例还提供了一种可重构处理器系统,包括至少两个级联的如上述实施例一所述的可重构处理器10。进一步的,至少两个可重构处理器10可以通过预设的读通道和写通道进行数据访问。
[0051] 图8为本发明实施例二中提供的一种可重构处理器的通道示意图,可重构处理器10的数据访问通道(即端口)可以抽象为图8所示,其中RI_0和RI_1为内部互联时的数据读访问端口,WI_0和WI_1是内部互联时的数据写访问端口,RE为可重构处理器10访问外部内存时的数据读端口,WE为可重构处理器10访问外部内存时的数据写端口。
[0052] 考虑到可重构处理器10内部还有紧耦合内存(Tightly Coupled Memories,TCM)数据的访问,因此可重构处理器10的读通道和写通道的访问可能有三个源头,如图9和图10所示,图9为本发明实施例二中提供的一种可重构处理器的读通道示意图,图9中读通道源头分别为RI、RE和RT,图中通过可重构处理器中的多路选择开关和RC(Read Channel)CTRL进行读通道数据的管理,其中RC CTRL表示读通道控制器。图10为本发明实施例二中提供的一种可重构处理器的写通道示意图,图10中写通道源头分别为WI、WE和WT,图中通过可重构处理器中的多路选择开关和WC(Write Channel)CTRL进行写通道数据的管理,其中WC CTRL表示写通道控制器。
[0053] 进一步的,图11为本发明实施例二中提供的一种可重构处理器的内部通道连接示意图,图11中示出了完整可重构处理器10的读通道和写通道连接示意图,其中也画出了可重构处理器10的外部数据访问端口和内部TCM的访问端口关系,图中假设有4个TCM BLOCK,其中RA(Read Arbiter)表示读仲裁器,WA(Write Arbiter)表示写仲裁器,外部输入的RI_0、RI_1端口直接连到读通道0和通道1的RI_0、RI_1端口,读通道0、1的端口RE_0和RE_1通过读仲裁器后连接到外部RE端口,写通道0和通道1的WI_0、WI_1端口连接到外部输出WI_0、WI_1端口,写通道0、1的端口WE_0和WE_1通过写仲裁器后连接到外部WE端口。
[0054] 本实施例提供的一种可重构处理器系统,多个可重构处理器可以通过级联扩展得到更大规模的计算能力,能够满足不同应用场景需求,通过预设的读写通道进行数据访问,提高了数据访问的效率,采用统一的硬件架构和配置指令,数据流驱动和指令流驱动相结合的方式,既能够获取很好的PPA性能,又能够保持足够的灵活性。
[0055] 注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。