2014 Micro. Architectural Specialization for Inter-Iteration Loop Dependence Patterns

动机

专门的硬件加速器需要有明确对源码进行软硬件抽象,分裂出硬件能够执行的代码,然后使用硬件去加速。软硬件分离的过程是比较耗费人力或者硬件的,比如专用加速器需要人工的方式抽象硬件执行的代码,乱序处理器能够处理循环内的迭代,但硬件开销相比顺序处理器大的多。
本文作者提出了xloop(explicit loop specialization)来编码循环迭代间的依赖关系,指示硬件去执行循环。这些重新编码的循环可以根据加速的硬件执行的快慢来调整执行的载体,即当CPU、加速硬件那个执行的快由谁去执行。

实现

1、编码循环间的迭代

xloop ISA扩展指令的目的是,使用xloop指令对循环数据依赖和控制依赖模式进行编码,刻画出循环固有的并行性
在这里插入图片描述
在这里插入图片描述

2、编译器支持

这部分将的比较粗糙
a、输入源码的循环注释,说明了xloop指令是{uc/ ua/o}依赖关系的
b、通过修改loop-strength reduction pass 生成xi指令编码MIV(归纳变量的线性函数)
c、使用analysis pass确定迭代间的依赖关系,确定{or/om/orm}

3、硬件实现

在这里插入图片描述
IDQ(index queue) : 保存循环的索引

laneRF 的大小和GPP不同是为了减少lane中寄存器堆的大小,因此保存循环指令到Inst Buf时,需要对每条指令做寄存器映射

CIB(cross-iteration buffers) 用于保存CIR(cross-iteration register) 解决寄存器依赖模式(xloop.or):当源操作数为CIR时,因为CIR数据保存在前面的lane中,当前面的CIR有效时当前的lane才可以去执行

LSQ(load-store queue) 用于解决xloop.om模式,store的结果保存LSQ,load时广播到所有的LSQ查询是否存在于LSQ当中。

xloop 加速硬件执行包括了如下两个步骤:
scan phase
当遇到xloop指令时,会将循环的指令提取到Inst Buf,GPP 寄存器转移到laneRF(需要做寄存器映射)
specialized execution phase
LMU 分发迭代索引到各lane IDQ, 开始执行循环,当整个xloop循环执行完,内存更新完毕,LMU通知GPP继续执行

结果

在这里插入图片描述

收获启发

访存stall和squash的分析,贯穿整个实验设计和分析。也是发现性能瓶颈,优化加速硬件的好方法。
在这里插入图片描述

"设计和平铺四边形的建筑自由曲面"是指将自由曲面的设计和面板化通过平铺四边形的方法实现。 传统的建筑设计通常是基于直线和平面的几何图形,但自由曲面具有复杂的形状和曲线,不能简单地用直线和平面几何来描述。因此,设计和面板化自由曲面是一项具有挑战性的任务。 在这种方法中,首先需要将自由曲面划分为多个小块,这些小块要具有四边形的形状。然后,通过将这些小块沿着曲面的方向平铺,并进行适当的旋转和缩放,使它们能够拼接成一个平面。 这种方法的优势在于,可以简化自由曲面的制作和安装过程。首先,面板可以在工厂中预制,减少现场加工的需求。其次,平铺四边形的形状使得面板之间的连接更加紧密,可以减少曲面上的缝隙和不匹配。最后,面板化的自由曲面可以更容易地完成细节和装饰的设计,并且可以更容易地进行维护和修复。 然而,这种方法也存在一些挑战和限制。首先,将自由曲面平铺的过程需要耗费较多的时间和精力。其次,面板化可能会限制设计师在自由曲面上实现复杂的形状和曲线。此外,平铺四边形的面板必须在曲面上进行适当的旋转和缩放,以确保其完全覆盖曲面,并与相邻面板相吻合。 总之,设计和面板化自由曲面是一项复杂而具有挑战性的任务,通过平铺四边形的方法可以简化制作和安装过程,但也需要在设计和制作过程中克服一些限制和难题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值