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

LACore: A Large-Format Vector Accelerator for Linear Algebra Applications(2017) #17

Open
meton-robean opened this issue Nov 18, 2019 · 8 comments

Comments

@meton-robean
Copy link
Owner

meton-robean commented Nov 18, 2019

毕业论文 LACore: A Large-Format Vector Accelerator for Linear Algebra Applications 2017
发表论文 LACore: A Supercomputing-Like Linear Algebra Accelerator
for SoC-Based Designs

github项目 https://github.com/scale-lab/la-core

@meton-robean meton-robean changed the title LACore: A Large-Format Vector Accelerator for Linear Algebra Applications LACore: A Large-Format Vector Accelerator for Linear Algebra Applications(2017) Nov 18, 2019
Repository owner locked and limited conversation to collaborators Nov 18, 2019
@meton-robean
Copy link
Owner Author

整体架构

Selection_103

1.这是一个在gme5的risc-v cpu模型上拓展指令集,拓展了一个紧耦合的线性代数加速器。
2.LACfg用于用于获取标量数据,以及配置 INPUT/OUTPUT LAMemUnit的的取数模式(取数是从LACache中取数,不使用DMA)
3.LAExecUnit 是用来计算的部件。利用fifo做到运算-访问存分离。输入是三输入A B C 支持如下多种运算:
Selection_104

4.Private Scratchpad 用于保存中间结果。

@meton-robean
Copy link
Owner Author

提到了与gem5-aladdin区别

Selection_105

1 similar comment
@meton-robean
Copy link
Owner Author

提到了与gem5-aladdin区别

Selection_105

@meton-robean
Copy link
Owner Author

与向量处理器区别

Selection_106

@meton-robean
Copy link
Owner Author

支持三种输出模式,其中多流输出比较有趣

Selection_107

前两种很常见, 第三种可以冲矩阵乘法运算中抽象出来:一行要和多列做乘加,那么可以发那以后重复多次并结成很长一行向量,再将多列拼接成很长的向量,这样就符合上面所说的多流输出。例子见下面:

Selection_109

@meton-robean
Copy link
Owner Author

meton-robean commented Nov 19, 2019

取数配置寄存器组 和 取数单元 和 计算单元 (对应其自定义的LAcore ISA)

Selection_111
Selection_110
Selection_112

0.LAcore ISA其实在ricvc-v的ISA上拓展新增一些自己定制的指令
1.LACfg是取数配置寄存器。代表了访存模式(source ,dest, stride, skip, count) 由配置指令配置。
2.LAExecUnit是计算单元,由计算指令驱动,计算指令指定相应的LACfg号(代表输入输出),用以驱动LAMemUnit从对应的LACfg中读取访存信息,取数填入fifo,计算单元同时从fifo取数(可以exe/mem分离)
3.除此之外还有数据移动指令。

@meton-robean
Copy link
Owner Author

LCache的优化

Selection_114

疑问:cache居然可以一次同时从一个cache line取多个数?

@meton-robean
Copy link
Owner Author

StratchPad取数优化

Selection_113
其实就是多端口读数,利用了banking。

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