PaperNotes icon indicating copy to clipboard operation
PaperNotes copied to clipboard

XLOOP: Architectural Specialization for Inter-Iteration Loop Dependence Patterns(MICRO2014)

Open meton-robean opened this issue 5 years ago • 5 comments

Architectural Specialization for Inter-Iteration Loop Dependence Patterns

会议ppt

这个项目没有开源,但是公布了benchmark: https://github.com/cornell-brg/xloops-bmarks

创新点是根据循环的分类,自定义两种指令,其实本质是: 不是简单的新加指令,而是从指令的角度去看待,给指令增加一点新的语义信息,可以看做是一种语义标签,来使得后面的加速硬件可以识别循环内那几条特殊标记的指令,从而调度循环加速。 参考借鉴点是其对各种循环的分类角度 以及 对循环内的某些指令的区分(例如特别区分了循环中用于地址计算的 迭代计算指令 ,标记为addi.xi)

meton-robean avatar Nov 21 '19 07:11 meton-robean

循环分类与建模

Selection_118 将循环分成几大类,包含可以全并行的,含有寄存器依赖的,内存依赖的,动态边界的。根据这个新增两种指令: Selection_119

所以一个创新点是根据循环的分类,自定义两种指令,其实本质是: 不是简单的新加指令,而是从指令的角度去看待,给指令增加一点新的语义信息,可以看做是一种语义标签,来使得后面的加速硬件可以识别循环内那几条特殊标记的指令,从而调度循环加速。

meton-robean avatar Nov 22 '19 02:11 meton-robean

加速架构

Selection_120

  • 发掘迭代间的并行. 每个Lane负责某次循环迭代的执行,也就是每个lane需要执行某次迭代内的循环内的指令,类似多核的感觉,实际上每个Lane里面也确实就只有一个核通用CPU一样的ALU。

  • 但是其实这种多核加速的加速比大致取决于核的数目,并不高。 好处是每个lane负责一次迭代,就算循环内有分支啥的条件语句啥的也可以想像普通CPU一样执行.

meton-robean avatar Nov 22 '19 02:11 meton-robean

XLOOP是利用 PyMTL和Pydgin来进行硬件实现和模型仿真

meton-robean avatar Nov 23 '19 13:11 meton-robean

无依赖可全并行的执行例子

image

meton-robean avatar Jan 10 '20 09:01 meton-robean

有内存依赖的执行例子

例如 A[ i] = A[i] +A[i-k]

Selection_002

有内存依赖的情况, 某个Lane如果check到在其负责的迭代里面,它需要的那个数在其他lane没有算好送到它这里,那么要终止本次迭代的执行,下一次再重新执行这一次迭代的指令们

meton-robean avatar Jan 10 '20 09:01 meton-robean