Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
meton-robean opened this issue Nov 21, 2019 · 5 comments

Comments

@meton-robean
Copy link
Owner

meton-robean commented Nov 21, 2019

Architectural Specialization for Inter-Iteration Loop Dependence Patterns

会议ppt

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

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

@meton-robean meton-robean changed the title Architectural Specialization for Inter-Iteration Loop Dependence Patterns Architectural Specialization for Inter-Iteration Loop Dependence Patterns(MICRO2014) Nov 21, 2019
Repository owner locked and limited conversation to collaborators Nov 21, 2019
@meton-robean
Copy link
Owner Author

循环分类与建模

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

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

@meton-robean
Copy link
Owner Author

meton-robean commented Nov 22, 2019

加速架构

Selection_120

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

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

@meton-robean meton-robean changed the title Architectural Specialization for Inter-Iteration Loop Dependence Patterns(MICRO2014) XLOOP: Architectural Specialization for Inter-Iteration Loop Dependence Patterns(MICRO2014) Nov 22, 2019
@meton-robean
Copy link
Owner Author

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

@meton-robean
Copy link
Owner Author

meton-robean commented Jan 10, 2020

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

image

@meton-robean
Copy link
Owner Author

meton-robean commented Jan 10, 2020

有内存依赖的执行例子

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

Selection_002

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant