• 美文
  • 文章
  • 散文
  • 日记
  • 诗歌
  • 小说
  • 故事
  • 句子
  • 作文
  • 签名
  • 祝福语
  • 情书
  • 范文
  • 读后感
  • 文学百科
  • 当前位置: 柠檬阅读网 > 范文 > 正文

    一种指令级动态可重构浮点处理器设计

    时间:2023-01-16 17:25:06 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

    聂言硕, 张多利, 孟晓飞, 魏 可, 宋宇鲲

    (1.合肥工业大学 电子科学与应用物理学院,安徽 合肥 230601; 2.合肥工业大学 教育部IC设计网上合作研究中心,安徽 合肥 230601)

    在高密度计算领域,应用程序中存在大量的数据级并行(data level parallelism,DLP),目前单指令多数据流(single instruction multiple data,SIMD)技术常用来提高处理器执行高DLP程序的速度。向量处理器属于Flynn分类法中SIMD类并行计算机[1],以多处理单元空间并行的方式加速数据密集型应用,但数据访存开销大和能耗高是SIMD类处理器的特点,减少数据访存是SIMD类处理器的一项重要研究工作。

    在指令层,运算表达式通常被拆分为若干与基础指令对应的基础运算,这些基础运算产生的中间数据仍需要进行存储和加载过程,而在硬件中实现复合运算可以减少冗余的中间数据访存。一种实现复合运算的方式是通过合并多个数据流图(data flow graph,DFG)创建一个可重构的复合电路[2],但复合电路的通用性较差。复合运算的另一种实现方式是具有高计算吞吐量、高能效和硬件可编程等优点的粗粒度可重构架构(coarse grained reconfigurable architecture,CGRA)。传统的CGRA以配置流和数据流为驱动[3],基于任务调度可重构阵列的计算,适合执行无控制分支且具有大量指令级并行的程序[4]。

    因为本课题组研究的异构多核系统面向高密度计算领域,但其集成的浮点处理器仍有执行控制密集型和非规则寻址模式任务的需求,所以该处理器存在高性能和高适用性的双重需求。基于这2种需求的折衷,本文设计了一种指令级动态可重构浮点处理器(dynamically reconfigurable floating-point processor,DRFP),该处理器以指令流和数据流为驱动,既能够从指令流驱动中获得灵活性,又能够从数据流驱动中获得高能效。本文提到的融合指令指静态层面的融合,即融合指令显式地指明生产者指令与消费者指令间的数据依赖关系。每条融合指令对应复合运算中的一条基础运算,实现一条完整流水线路径(复合功能单元)的若干条融合指令称为融合指令簇。

    已有CGRA的研究工作集中在整型计算领域,特别是有高密度计算需求的应用领域[5]。传统的可重构处理器MorphoSys[6]以配置流和数据流为驱动,在软件层对应用程序优化后提取出用于重构硬件的配置信息。区别于MorphoSys,本文引入了一种基于融合指令的实现方式。

    文献[7]提出了融合指令链的概念,链中的每条指令只与序列中的下一条指令通信,并且链之间不交错操作,链之间通信需要旁路寄存器提供支持。相比于文献[7],本文使用多条融合指令组成“树形”结构的融合指令簇,并将指令簇映射至可重构线性阵列,从而具有连续数据流驱动的运算能力。

    RGFA[8]是本课题组已有的研究工作,其以指令流为驱动,具备动态重构的能力。相比于RGFA,本文使用较小规模的互连网络实现了若干基础功能单元间的直接互连。另外相比于RGFA在软件层面规避并行执行的路径间的数据冲突,DRFP能够在运行时自动地检测并解决这种数据冲突。

    DRFP的整体结构如图1所示。

    DRFP由指令解析单元(instruction analysis unit,IAU)、指令发射单元(instruction launch unit,ILU)、可重构浮点单元(reconfigurable floating-point unit,RFU)、存储器管理单元(memory manage unit,MMU)和寄存器文件(REGFILE)5个主要模块组成,通过数据网络接口(data net interface,DNI)与多核系统的片上网络通信,其作为协处理单元与通用处理器(RISC-V)紧耦合。RISC-V是整个处理器的控制核心,主要执行程序中的分支控制和整型计算,浮点计算在DRFP上执行。IAU接收RISC-V发送的重构指令,对部分重构指令进行相关性解析,并将相关的多条指令动态融合。ILU负责指令到配置的动态转换以及访存通道的建立。RFU是DRFP的计算核心,由异构的基础功能单元(basic functional unit,BFU)阵列组成。MMU为RFU提供了4个读通道和4个写通道。MMU的地址生成单元(address generating unit,AGU)负责多端口存储器(MEM)的读写,具有连续的数据流读写能力。REGFILE包括一些通用寄存器和访存相关的特殊寄存器等。

    2.1 重构指令

    DRFP有2种重构指令:一种是普通指令,其不包括指令间的相关性信息,IAU能够动态地融合多条相关的普通指令;另一种是融合指令,其静态地指定指令间的相关性。融合指令不会被IAU解析,其与前序指令的相关性信息已在指令中明确指出。分支附近常存在一些运行时才能确定的数据相关关系,融合指令无法静态地指定这种相关性,动态解析指令相关性的目的是为了弥补这一点。

    重构指令的编码格式如图2所示。当普通指令或融合指令的某一源或目的操作数为存储器时,该操作数的寻址地址根据RFGFILE中的某些特殊寄存器确定,这些寄存器能够提供的信息包括访存首地址、步进值和访存次数。如果一条融合指令的源数据来自于前序指令,那么该源数据的sd-type设置为存储器类型,pin编码为非0值(pin为0表示该源数据来自于存储器)。

    2.2 可重构浮点单元

    浮点计算适用异构阵列。大多数CGRA通常采用同构的可重构单元,每个基础单元包括一个算术逻辑单元(arithmetic and logic unit,ALU)[5],这种使用同类硬件资源的结构易于实现大型计算的映射[9]。相较于整型计算,浮点计算硬件实现的规模较大,并且各种浮点指令的使用频率存在很大差异。如果每个基础单元包括所有的浮点计算功能,那么在资源效率方面不是好的选择。

    互连灵活性决定了异构阵列映射的难易程度,应作为互连网络设计时主要考虑的技术点。在小型的异构阵列中,因为过往的工作通常采用交叉开关网络将所有的基础单元直接互连,但交叉开关网络的规模随结点数呈指数式扩张,所以可扩展性较差[5]。

    基于互连灵活性和网络可扩展性的双重需求,本文设计了一个使用多总线网络将所有基础单元直接互连的可重构浮点单元。RFU的结构如图3所示。SPECfp2006中5种基本浮点算术指令的百分比见表1所列[10]。根据表1中各种指令的使用比例确定RFU内BFU的种类和数量,见表2所列。每个BFU具有一种或多种基础功能,通过一个总线接口(bus interface,BIf)挂载在多组输入、输出总线上,只要通信不相交,每个总线都可建立多个通信。不同BFU的计算延迟各异,数据中转站(data hub,DHub)用于BFU间的数据同步。DHub在所有BFU间共享,当某个DHub被释放后,该DHub可被再次使用。RFU使用valid & ready协议实现下游消耗部件与上游生产部件之间的数据握手,使用eof标志数据流的结束,已激活的BFU、DHub和总线在eof有效时释放。

    表1 SPECfp2006中5种基本浮点算术指令百分比

    表2 RFU内BFU的种类和数量 单位:个

    相较于RGFA所采用的交叉开关网络,本文中的互连网络具有较小的规模和可扩展性。同样实现N个BFU的直接互连,交叉开关网络需要N条输出总线和N×N条输入总线,多总线网络需要M条输出总线和M×N条输入总线,其中M为DHub的个数。本文分析了雷达成像、矩阵求解和空间谱估计等算法,发现通常没有将表2中所有BFU同时互连在一条或多条流水线路径中的需求,又由于DHub动态分配的缘故,N/2个DHub就能满足大多数情况下的互连需求,该种情况下多总线网络的规模只有交叉开关网络规模的1/2。

    2.3 动态重构

    本文提到的动态重构表征的是指令到配置的动态转换,这个转换过程有赖于DHub分配表、DHub状态表、BFU状态表和访存通道状态。

    本文硬件层的依赖关系通过DHub分配表构建。每条非路径终点的融合指令都会被分配一个DHub用于暂存所属指令的计算结果,该DHub的编号被写入到DHub分配表写指针所指向的位置。后续融合指令将根据pin去读取DHub分配表,从而确定其依赖数据存放的DHub。

    特别地,DHub分配表写指针的行为如下:在路径起点,写指针指向首地址;每当分配一个DHub,写指针向下移动一个位置;在路径终点,写指针重新指向首地址;当路径还未到达终点时,如果分配表的最后一个表项已被使用,那么写指针重新指向首地址。在理想情况下,如此重复地利用分配表可以实现无限长路径的构建。

    融合指令簇内的指令同样按指令发射的顺序循环编号。当同一簇内存在多个相同编号的指令时,如果指令在编号时不存在约束条件,那么在运行时就有可能构建错误的相关关系。指令在编号时应满足的约束条件如下:所有编号小于等于当前指令编号的上一轮指令已经与簇内已编号或当前编号的指令构建相关关系。

    指令到配置的动态转换由重构控制器管理,在满足指令发射条件时进行。指令发射条件为:

    (1) 当前待发射指令所需的BFU至少有一个空闲。

    (2) 如果当前待发射指令不是路径的终点,那么至少有一个DHub空闲。

    (3) 当前空闲的读通道数大于等于当前待发射指令所需的读通道数。

    (4) 如果当前待发射指令有数据写回需求,那么至少有一个写通道处于空闲状态。

    当以上条件都满足时,在T周期,重构控制器将待发射指令转换成配置,分配和建立指令所需的数据访存通道,记录指令被分配的DHub编号,以及从指令队列中弹出下一条指令;在T+1周期,配置驱动到RFU的配置总线上(发射指令)以实现1个BFU的重构;在T+2周期BFU开始计算。

    任务划分与RFU的动态重构过程如图4所示。

    因为目前RFU不支持一对多数据通信,所以数据流图中一对多数据通信的节点为指令簇划分的边界。图4a中类似于“树形”结构的指令簇1使用了9条融合指令。图4b中BFU的调度优先级从高到低依次为:BFU1、BFU2、BFU0,BFU3、BFU4;DHub的调度优先级为编号越小优先级越高。图4b最右侧标记了指令发射的时刻。最先重构的Path-1与Path-3同时撤销,在Path-1之后重构的Path-2先于Path-1撤销,多条路径并行执行所牵涉的数据冲突将在下节介绍。

    2.4 数据冲突的解决策略

    RFU同时执行多条路径相较于一条路径能够提升处理器的性能,但多条路径同时执行需要解决路径间的数据冲突。指令发射条件没有考虑多条路径在执行时是否存在数据冲突,并且数据冲突也没有在软件层规避,如果硬件中也没有考虑数据冲突的化解,那么多条路径可能以错误的顺序访问同一存储器地址或寄存器,这会导致计算错误,甚至程序崩溃。

    多路径并行执行时的3种数据冲突如图5所示。

    图5中:Path_n的n为路径优先级,n越小路径优先级越高;src为路径的源数据;dst为路径的目的数据。RAW冲突,即低优先级路径正在访问高优先级路径未写回的地址范围;WAR或WAW冲突,即低优先级路径正在访问高优先级路径未访问的地址范围。

    本文多路径乱序执行的数据冲突由各访存通道根据通道优先级自行地检测和解决。路径间的数据冲突实际上是各访存通道间的数据冲突,只要确定了各访存通道的优先级,各访存通道可以明确对同一存储器地址或寄存器的访问顺序。因为访存通道优先级与所属路径优先级一致,所以本文根据路径的建立和撤销情况为每个访存通道进行动态标识,从而确定各访存通道的优先级。某一通道优先级动态标识的伪代码如下:

    if this channel is established then

    if a full path undo then

    priority=complete-path-num-undo-path-num;

    else

    priority=complete-path-num;

    end if

    else if a full path undo then

    priority=priority-undopri-gt-thispri-num;

    else

    priority=priority;

    end if

    初始时刻,通道的priority为0,这代表最高优先级;此后,当该通道建立时,priority需要根据当前存活的完整路径数和正在撤销的路径数确定;当路径撤销时,priority需要根据撤销路径中路径优先级大于该通道优先级的路径数目确定。

    RAW冲突在读通道中检测和解决,WAR或WAW冲突在写通道中检测和解决。当读通道的访存地址与写通道发生RAW冲突时,数据读取被暂停;当写通道的访存地址与读通道发生WAR冲突或与其他写通道发生WAW冲突时,数据写回被暂停。

    各访存通道能够自行地检测和解决并行执行的路径间的数据冲突,从而使得DRFP具有多路径乱序执行和写回的能力。

    DRFP作为主要计算核心集成于异构多核系统芯片上,并在Xilinx Ultrascale系列xcvu440的FPGA芯片上进行了原型验证,系统可以稳定工作在120 MHz。为了评估DRFP相较于通用处理器的性能,本文将相同的计算任务加载到CPU(R5 3500U)与DRFP上,并在它们之间作频率归一化对比。

    为了对比不同类型任务在DRFP上的加速效果,本文将多种类型的任务加载到DRFP上,并分别分析它们的加速效果。

    矩阵运算的加速效果如图6所示。任务1~任务7依次为:2个16阶矩阵乘、2个32阶矩阵乘、32×64矩阵与64×32矩阵乘、2个64阶矩阵乘、64×16矩阵协方差、64×64矩阵协方差、256×16矩阵协方差。从图6可以看出,同属于计算密集型应用的矩阵乘和协方差在DRFP上可以得到较好的加速。当矩阵规模变大时,加速比增加,这是由于乘累加操作的数据流长度增加对计算流水线有利。32×64矩阵与64×32矩阵乘的加速比与2个64阶矩阵乘的加速比一致,协方差计算中64×16矩阵的加速比与64×64矩阵的加速比一致,它们都是由于乘累加的数据流长度没有变化,仅乘累加次数的变化对加速比没有影响。

    快速傅里叶变换(fast Fourier transform,FFT)被广泛应用于现代信号处理、数字通信及图像处理等实时处理领域[11],适合使用专用硬件进行加速。

    FFT的加速效果如图7所示。因为本文可重构硬件的规模较小,FFT算法只能逐级映射到DRFP上,而每一级蝶乘都能使用计算流水线,所以FFT算法仍可以得到较好的加速。

    雅克比算法(求矩阵特征值/特征向量)是一种控制复杂度较高的应用,常用于空间谱估计和机器学习中的数据降维。雅可比算法的加速效果如图8所示。雅克比算法的特点如下:当阶数变大时,确定旋转矩阵的时间占总任务时间的比例减少,旋转操作的时间占总任务时间的比例相应增加。因为旋转操作能使用计算流水线,所以当阶数较大时,雅克比算法更适合在DRFP上加速。

    任务加速效果与寻址规则度的关系如图9所示。任务1~任务10依次如下:16 384点加、16 384点乘、16 384点复数取模、4 096点点积、4 096点FFT、64阶实矩阵乘、64阶复矩阵乘、64×16矩阵协方差、多重信号分类(multiple signal classification,MUSIC)[12]算法和32阶雅克比。

    从图9可以看出,因为任务的加速效果基本遵循寻址规则度越高加速效果越好的规律,所以寻址规则度越高的应用越适合在DRFP上执行。FFT第1级蝶乘的地址可以使用反向加法器生成,第1级蝶乘也能使用计算流水线。

    因为4 096点FFT的数据流长度最小为64,最大为2 048,而64阶矩阵运算的数据流长度为64,所以4 096点FFT的寻址规则度较64阶矩阵运算高。因为取模运算的开平方只能单路执行,而乘法运算可以两路并行,所以乘法的加速效果比复数取模好。

    以上实验表明DRFP执行寻址模式规则的计算密集型和数据密集型任务具有较高的性能。为了证明DRFP在兼顾高性能的同时相较于已有工作能更好地适应非规则运算,本文将文献[8]中的任务映射到DRFP上。同一任务在DRFP与RGFA[8]上的执行周期见表3所列。从表3可以看出,除复乘和包含复乘的FFT之外,DRFP较RGFA具有明显的性能优势。特别地,DRFP在兼顾高性能的同时相较于已有工作还能更好地加速雅克比算法(非规则运算)。

    表3 同一任务在DRFP和RGFA上的执行周期和加速比

    针对高性能计算中存在非规则寻址模式任务的加速需求,本文设计了一种具有动态重构和乱序执行能力的浮点处理器,基于融合指令实现的可重构处理器,以指令流和数据流为驱动,在兼顾高性能的同时相较于已有工作能够更好地适应非规则运算,实验结果较好地印证了这一点。

    猜你喜欢 数据流指令重构 优先级驱动的泛化航电网络实时性能分析航空学报(2022年7期)2022-09-05“双减”能否重构教育生态?当代陕西(2022年4期)2022-04-19长城叙事的重构摄影世界(2022年1期)2022-01-21汽车维修数据流基础(上)汽车维修与保养(2020年10期)2021-01-22高盐肥胖心肌重构防治有新策略中国生殖健康(2020年7期)2020-12-10汽车维修数据流基础(下)汽车维修与保养(2020年11期)2020-06-09《单一形状固定循环指令G90车外圆仿真》教案设计学校教育研究(2020年11期)2020-06-08基于XML的数据流转换在民航离港系统中应用计算机技术与发展(2020年5期)2020-05-22关于ARM+FPGA组建PLC高速指令控制器的研究科技与创新(2019年2期)2019-02-14基于Qt和OpenDDS的船舶电力模拟训练系统指令处理方法船海工程(2018年6期)2019-01-08
    相关热词搜索: 浮点 指令 处理器

    • 文学百科
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章