meton-robean / PaperNotes

记录阅读各类paper的想法笔记(关注体系结构,机器学习系统,深度学习,计算机视觉)
23 stars 1 forks source link

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

Open meton-robean opened 4 years ago

meton-robean commented 4 years ago

Architectural Specialization for Inter-Iteration Loop Dependence Patterns

会议ppt

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

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

meton-robean commented 4 years ago

循环分类与建模

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

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

meton-robean commented 4 years ago

加速架构

Selection_120

meton-robean commented 4 years ago

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

meton-robean commented 4 years ago

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

image

meton-robean commented 4 years ago

有内存依赖的执行例子

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

Selection_002

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