论文设计了一个名为FlexCore的框架,该框架支持多种动态监视技术在与主处理器紧耦合的FPGA上实现。
传统的动态监视技术大致可分为两种。第一种是软件实现方式,以软件方式实现的动态监视技术不能和被监视任务并行执行,并且软件实现方式不适合处理位操作,因此会引入很大的额外开销。另一种是硬件实现方式(ASIC),该实现方式虽然效率很高,但是灵活性很差,无法支持监视技术的更新。本论文提出的FlexCore框架可以兼顾动态监视的效率和灵活性。
论文的贡献有如下三项:
1、计算模型。提出了一个指令粒度监视的通用模型,并研究了如何将动态监视扩展映射到该模型上。
2、FlexCore体系结构。这个基于FPGA的协处理器体系结构可以有效地实现一系列监视技术。
3、原型系统的实现和评估。
论文接下来的部分主要围绕这三方面展开。
图1 计算模型
图1是论文为指令粒度监视过程提出的模型。其中,左半部分表示主处理器,右半部分表示协处理器,元数据(Meta-Data)保存的是处理器的历史记录。协处理器在运行过程中监视主处理器的指令级运行情况,更新元数据,并检查主处理器的运行特征。一旦检查过程失败,则引发异常。主处理器通过显式地指令和协处理器通信,用于配置协处理器或是读取协处理器的状态。
动态监视扩展的模型可以分为元数据、操作和软件接口三部分。下图说明了四种动态监视扩展如何映射到该模型上。
图2 动态监视模型的实现举例
UMC:Uninitialized Memory Check
DIFT:Dynamic Information Flow Tracking
BC:Array Bound Check
SEC:Soft Error Check
图3 FlexCore的结构框图
FlexCore的体系结构如上图所示,其中RCF完成图1中check1~check3的功能,Flex Cache和Flex TLB相当于图1中的Meta-Data。
Core-Fabric Interface的细节如下图所示:
图4 通信接口的结构框图
FFIFO连接到主处理器的commint阶段,在CFGR的控制下,协处理器有选择地将指令读取到FFIFO里。主处理器有类似read from co-processor的指令,协处理器将该指令的返回值保存在BFIFO中。此外,主从处理器之间还有一些CTRL信号。
论文基于FlexCore模型,实现了UMC、DIFT、BC和SEC四种动态监视扩展,并对频率、面积和功耗参数进行了评估,结果如下表所示:
下表所示是FlexCore和ASIC实现方式的性能比较:
文章评论(0条评论)
登录后参与讨论