论文阅读之
Analyzing and Modeling In-Storage Computing Workloads On
EISC — An FPGA-Based System-Level Emulation Platform
关于最近调研的In-Storage Computing(ISC)的一片基于FPGA的系统级仿真平台EISC存储计算工作负载分析与建模
获得了2019 ICCAD Best paper
摘要
为了解决数据墙问题,研究者们提出了存内计算(In-storage computing)的概念减少主从之间的数据搬运。尽管目前已经有一些ISC的特定应用,但仍有两方面的问题亟待解决:(1)由于ISC的研究尚在起步阶段,业界没有专门的ISC平台用来统一比较不同应用下的各种性能;(2)何种具体应用适合采用ISC?何种具体应用不适合ISC? 本文就回答了上述问题。首先我们搭建了一个基于FPGA的ISC测试仿真平台,这是目前首个开源的ISC测试平台;其次基于此平台我们测试了12种特定应用使用ISC的效果,也显示出哪些应用适合使用存内计算框架。
Section I Introduction
近年来大热的一个话题是近数据计算,而存内计算这一想法来自于host/drive interconnection与storage drive之间的gap.存储带宽每两年翻倍但是PCIe总线扩增的速度却赶不上,ISC就是来弥补二者之间这一gap的。这样用于数据搬运的实践就大大减少了。
但现在市面上还没有成品的ISC驱动,许多研究工作都是在自己的平台上、参数也都是固定的。为了学术界和工业界开发一款开元的ISC仿真平台十分有必要,一方面学者缺少统一的评价系统,导致要重复大量他人的工作不利于ISC的研究进展;对于业界来说就面临一个“先有鸡还是先有蛋”的问题。只有当有一定成效的ISC架构提出他们才会投资。
为了解决这一两难的问题,本文提出了EISC,一个基于FPGA的ISC系统级仿真平台,尤其讨论了如何对虚拟的ISC drive进行仿真,EISC使用了带有DRAM的FPGA板子,DRAM就用来模拟存储芯片以及控制器的实现drive controller,FPGA则用来实现具体的应用,其中要满足的一点就是“可配置,EISC则是通过对一些idel signal的声名来实硬件实现的。
另一个问题就是哪些应用适合ISC架构,本文也基于EISC平台仿真了12中具体应用并进行了分析、总结。
Section III MOTIVATION
市面上还没有通用的ISC驱动,原因主要有:
(1)有限的ISC应用实现:目前基于ISC实现了一些特定应用,但一没有揭示不适于ISC的例子,另一方面将某些应用换用新的结构也要费不少工夫,因此急需对ISC统一的的量化和评判标准。
(2)固定的系统设定。现在一些ISC的实现都是基于一些固定的参数,但不同的storage driver、host system等都会高度影响ISC的性能,目前的ISC架构都是基于固定的实现,极不灵活也没有可比性
(3)未提供开源支持。都是基于自己搭建的平台实现的,没有公开的仿真平台也导致了工作之间不好哦进行统一的对比。
Section IV 设计与实现
EISC仿真平台实现了:
(1)端到端的系统仿真。比只进行功能仿真更具有实际意义;可以创建一个真实的系统模型,与软件配合应用到实际的应用场景中
(2)系统参数的可配置性。比如bus的带宽和时延。EISC通过下面两部分完成:1是采用PCIe接口二是在DMA controller和storage controller中加入了延时和throttle unit
(3)易于端口应用
(4)开源
Part B EISC 驱动设计
Fig2的上半部分展示了驱动结构,包含DMA controller,storage controller以及drive controller.
(1)PCIe接口
(2)DMA controller:位于drive controller和PCIe总线之间,主存发送的数据和指令通过DMA controller送到硬件驱动上,为了完成“可配置”这一目标还引入了delay & throttle units
(3)Storage controller。EISC中用DRAM芯片模仿存储阵列,然后storage controller是用来辅助drive controller访问存储阵列的,然后采用了多组互不相连的DRAM用于模仿存储阵列的多通道
(4)Drive Controller:包含firmware和加速核两部分,其中firmware完成指令到地址的映射,加速核用来完成ISC逻辑,是EISC独有的部分,加速核通过firmware完成与storage和DMA controller之间的通信完成数据的读写。
Part C Host Stack
EISC kernal: read kernal&write kernal
read kernal:input_channel存储从storage chip读取的数据,output-channel存储将要通过bus送回host的数据
随后通过HLS高级综合初RTL级代码
最终硬件实现平台是AWS F1,通过该FPGA实现EISC的驱动部分,随后通过PCIe接口完成和host之间的连接
随后F1板子上配备的四块16G DRAM用来模拟存储芯片+accelerator kernel,两块用来模拟storage chip两块用来作为accelerator,并把加速部分地址空间限定在4G;最后EISC驱动的所有硬件逻辑部署在F1 FPGA上。
时钟频率250MHz
Section V EVALUATION
主要解决以下问题:
Q1:编程改动量?
Q2:不同的系统配置对加速的影响?
Q3:哪些应用适合使用ISC架构?这是通过将同样的应用采用ISC和解构了的(就是将FPGA于存储通过PCIe连接)进行对比
Q4:做出特定应用适合不适合ISC的定性或量化指标是什么?
Q5:对于适合使用ISC架构的应用所需的合适带宽是多少,因为不希望冗余。
Table II展示了12中应用,其实有好多我都没接触过过。能看到有最近邻、3*3的Conv,特征提取算法,还有密码加密算法、文本匹配、数据连接等。
并且TABLE III展示了需要改动的代码量,并且进一步分了哪些是ISC友好的哪些是ISC不友好的。不友好的有压缩、卷积等。
存内计算还是很多看不懂,总的来说通过这篇论文和之前不同之处在于,不是一个完整的存内计算芯片的设计,比如从前面ref8-9会涉及到数字部分和模拟用cadence画版图之类的。
这篇主要是通过FPGA来模拟整个架构,一般存储阵列是用DRAM模拟,然后聚焦于一堆controller如何实现,这大概就是“驱动”?还是不太懂,需要多找几篇看下去
(1)直观感受就是减少了storage和controller之间PCIe的部分减少数据通过PCIe传输
(2)基于FPGA平台实现的好处:与CPU用来处理相比COU太弱了;与GPU相比能耗是最大优势