论文标题:AC_ICAP灵巧的高速ICAP掌握器
论文择要:内部配置访问端口(ICAP)是基于Xilinx SRAM的现场可编程门阵列(FPGA)中实现的任何动态部分可重配置系统的核心组件。我们开拓了一种新的高速ICAP掌握器,名为AC ICAP,完备采取硬件实现。除了加速部分比特流和帧的管理的类似办理方案之外,AC ICAP还支持LUT的运行时重新配置,而无需预先打算的部分比特流。通过比拟特流实行逆向工程,可以实现末了的特性。此外,我们采取了这种基于硬件的办理方案,以供应可从MicroBlaze处理器访问的IP内核。为此,扩展了掌握器并实现了三个版本,以便在连接到处理器的外围本地总线(PLB),快速单工链路(FSL)和AXI接口时评估其性能。因此,掌握器可以利用处理器供应的灵巧性,但利用硬件加速。它在Virtex-5和Kintex7 FPGA中实现。重新配置韶光的结果表明,Virtex-5器件中单个LUT的运行时重新配置小于5us,这意味着与Xilinx XPS HWICAP掌握器比较,速率提升超过380倍。
现场可编程门阵列(FPGA)器件作为电子系统设计和评估的基本组件而存在。它们不断被报告为终极实现平台,而不仅仅是原型元素[1]。 FPGA已根据VLSI缩放技能的步伐而发展,使得可以在最前辈的制造工艺中开拓这些器件。例如,7系列基于Xilinx SRAM的FPGA基于28 nm,高k金属栅极工艺技能[2],Xilinx Virtex UltraScale +采取16 nm FinFET +,AlteraStratix 10器件采取Intel-14 nm Tri-栅极(FinFET)工艺技能[3]。这是有利于越来越多的这种设备作为ASIC的可编程替代品的缘故原由之一。
此外,FPGA的设计和制造方面的技能改进产生了更强大,更灵巧的元件,嵌入了更大的RAM存储器模块(BRAM),DSP模块,处理器和专用的硬连线组件.FPGA供应的固有可重配置特性是个中最主要的特性之一实际硬件实现和系统重新设计的上风。
我们专注于Xilinx器件,由于除了支持动态部分重配置(DPR)之外,还可以比拟特流进行改进。这意味着可以实行比拟特流构造的逆向工程,这对付我们在LUT上实行DPR的方法是必不可少的,这将在第3节中阐明。
基于Xilinx SRAM的FPGA通过内部配置访问端口(ICAP)支持DMA。如图1所示,这个硬连线元件许可在运行时访问配置存储器。因此,可以修正系统的特定部分,而别的部分连续运行而不受特定运行时修正的影响。动态部分重新配置可以在不同的粒度级别利用。考虑到设备的体系构造,它可以用于修正基本逻辑组件,例如查找表(LUT)或更大的块,例如IP核。因此,DPR广泛运用于自适应系统的设计和关键系统的评估,这些系统须要在最终生产之提高行详尽的测试。
图1:ICAP硬连线原语。
Xilinx工具(如PlanAhead或命令行“−”)将两个实现之间的差异用于天生部分比特流,以许可修正已定义为在运行时变动的特定部分。然后将部分比特流复制到FPGA的外部或内部存储器中,并在系统须要新的硬件任务时将其发送到ICAP。除了特殊适用于粗粒模块的这种类型的运行时重新配置之外,还存在利用在片上处理器中实行的某些软件功能来动态地修正诸如LUT的基本元件的替代方案。
考虑到这一点,硬连线ICAP原语及其干系掌握器成为动态运行时可重构系统设计中的根本和不可分割的模块.ICAP掌握器卖力实行访问和修正配置存储器的所有命令。因此,希望这种掌握器知足至少两个基本哀求:高重新配置吞吐量和灵巧性。
Xilinx工具供应通用掌握器来驱动ICAP,但它们将大部分处理作为处理器中的软件程序实行。它意味着灵巧性,但避免达到最大支持的重配置吞吐量。据宣布,这些掌握器的多种替代方案可以提高重新配置速率。它们中的大多数已经被定向为管理在设计时天生的部分比特流,并且还操纵作为最小可寻址配置存储器的帧。
深入理解设备的粒度,还该当可以利用已实现设计的LUT上的任何动态修正来增加系统的灵巧性。例如,它可以在加密模块中用于修正模块的逻辑行为并增加对某种类型的外部攻击的抵抗力。因此,还须要一种许可在运行时修正LUT的有效机制,由于LUT是在FPGA中实现任何逻辑功能的基本组件。 ICAP掌握器应供应一种以最大支持速率在LUT中实行DPR的方法,不仅限于预天生的部分比特流,而且呈现大略的接口,使得架构设备的繁芜性对用户透明。
在本文中,我们提出了一种新颖的运行时重配置掌握器,它完备在硬件中实现,并支持Xilinx FPGA中LUT的部分重配置。这项事情的紧张贡献是:
(1)设计和实现支持DPR的fLUTAC ICAP掌握器,并在Virtex5和Kintex7器件中验证
(2)将LUT坐标和LUT配置值透明地片上转换到帧位置
(3)对付位于BRAM或闪存中的部分比特流,LUT-DPR的加速和类似的重新配置速率(与现有办理方案比较)
(4)FSM独立操作和IP版本适用于不同的嵌入衰落处理器接口(PLB,FSL和AXI)。
本文的别的部分安排如下。在第2节中,我们回顾了ICAP掌握器设计中最干系的事情。在第3节中,我们提出了关于细粒度部分重构的紧张考虑成分。在第4节中,我们详细先容了新的AC ICAP掌握器。在第5节中,先容了可从片上处理器访问的掌握器扩展。在第6节中,我们描述了将掌握器移植到更新的设备系列时要遵照的把稳事变。在第7节中,我们给出了掌握器所需的重新配置韶光和区域的结果。接下来是第8节,个中掌握器用于在加密模块中对LUT进行修正,以实现针对外部攻击的对策。末了,第9节总结了论文并提出了未来的事情。
2.干系事情在本节中,我们概述了FPGA动态部分重配置中利用的一些最干系的ICAP掌握器实现。部分重新配置已广泛运用于各种运用[5-7],这些运用利用了在运行时调度硬件模块的可能性。利用这种技能时的一个共同哀求是,该当以最小的韶光开销实行硬件模块的切换。
实现具有DPR功能的系统的最常用方法是利用Xilinx工具中供应的ICAP掌握器。 XPS HWICAP [4],如图2所示,AXI HWICAP和OPB HWICAP分别是设计用于连接PLB [8],AXI和低速OPB总线的IP内核。它们用作嵌入式处理器系统(PicoBlaze或MicroBlaze)的一部分,并且通过处理器API供应的一系列软件功能供应对部分重新配置的支持。这些功能许可处理位于存储器中的部分比特流,访问配置帧(XHwIcap DeviceReadFrame,XHwIcapDeviceWriteFrame)和修正LUT(XHwIcap SetClbBits,XHwIcap GetClbBits)。在[9]中详细先容了利用函数修正特定LUT的示例,[10]中的作者利用函数tomodify帧来仿照配置存储器上的故障。
Xilinx功能将大部分操作作为处理器中的软件程序实行。然后,管理ICAP和处理在处理器中实行的部分比特流报头以及总线等待韶光的命令影响部分重新配置过程的速率。因此,已经开拓了各种替代掌握器来战胜这些限定。[11]中的作者探索了剖析重新配置速率的不同ICAP掌握器,并提出了三种变革来加速部分比特流的处理,但它们都须要存在处理器。
[12,13]也是如此。在后一种情形下,利用FSL链路将掌握器集成在处理器数据路径中,以最小化总线延迟。比较之下,[14,15]现有的Virtex-5器件掌握器能够从BRAM和闪存中加载部分比特流,完备由硬件实现,独立于处理器。以类似的办法,[7,16]报告了用于Virtex-4 FPGA的独立于处理器的ICAP掌握器的实现。 [17]中的作者利用DPR来设计容错系统。这些方法显示了在利用BRAM时可以达到最大支持吞吐量的重新配置速率的改进。此外,一些事情,例如[7,18]中提出的事情,通过对ICAP进行超频,实现了高于技能文档中指定速率的吞吐速率。
所有这些事情都面向有效地访问部分比特流并实行硬件切换任务,但不考虑完全掌握器应支持的一些其他操作。鲁棒掌握器该当能够回读和写入配置帧,并且除了仅掌握部分比特流之外,还可以修正LUT。这些末了的特色在关键系统的实现中至关主要,个中ICAP掌握器是设计的基本部分[21]。考虑到这一点,各种方法,如[20,22-24]中宣布的那些,利用改进的ICAP掌握器是基于SRAM的FPGA中容错系统的基本组成部分。在这样的系统中,ICAP用于检测和校正配置存储器中的故障。要做到这一点,掌握预先打算的部分比特流是不足的,它们实现了帧的读取和写入,由于在此级别实行故障检测。例如,一旦读取帧,就可以得到其CRC以检讨其组成位中是否存在缺点。在缺点值的情形下,可以校正帧并利用精确的值写回配置存储器。因此,这些报告的事情包括用于写入和读取配置帧的帧处理。
据我们所知,在[25]中先容了作为ICAP掌握器的一部分在LUT级实行运行时重新配置的唯一事情,但它仅适用于LUT具有四个输入的Xilinx Virtex-II器件该器件的架构与新的Xilinx系列有很大不同。这些框架覆盖了设备的全体高度,并未详细解释LUT配置值如何位于框架上。此外,这个家庭目前被认为已经由时。
在这项事情中,我们开拓了一个完备用硬件实现的新型ICAP掌握器,支持比特流管理,帧的读取和写入以及LUT修正。该方法供应了LUT重新配置速率的改进,并且在不须要预先打算的部分比特流的情形下实行。此外,它可以轻松适应各种Xilinx FPGA系列中的片上处理器。
3. LUT的动态部分重配置在本节中,我们将先容XilinxFPGA的一样平常架构以及部分重配置的干系观点,以Virtex-5 XC5VLX110T器件为参考。但是一样平常的想法也适用于较新的设备,特殊是在考虑LUT时,由于它们保持不变;它是6输入LUT,适用于Virtex-5,Virtex-6和7系列FPGA。
FPGA被组织为连接到开关矩阵的可配置逻辑块(CLB)阵列。图3显示了XC5VLX110T FPGA的配置,可以不雅观察到它被水平分成两半。在顶部(0)和底部(1)两半,我们创造固天命量的行取决于特定器件的大小。Virtex-5 LX110T FPGA分为8个水平时钟行(HCLK):每半个四个。每个HCLK包括确定数量的CLB,BRAM,DSP和I / O. CLB分布在160行×54列中,覆盖全体设备。每个CLB由两个Slice组成,每个Slice包含4个LUT,4个触发器,多路复用器和进位逻辑。因此,该FPGA具有17280个片,69120个LUT和69120个寄存器。
一个CLB列定义为超过HCLK高度的一组20×1 CLB。这意味着,在HCLK行内的每个CLB列中,有40个Slice和160个LUT。
配置存储器按帧组织。一帧是可以寻址的最小配置存储器大小。因此,该当以帧为参考对配置存储器实行任何操作。一帧由41个32位(1312位)组成.Virtex-5 LX110T须要23712个配置帧来配置全体芯片。因此,配置文件(比特流)由972464个32位字(3.7 MB)组成。它在头部包括272个字的掌握信息,别的对应于配置帧.(FPGA器件固定,配置文件的大小也就固定了)。
每次我们要配置全体器件时,3.7MB的比特流包含要实现的电路的描述该当加载到配置存储器中。
动态部分重配置许可修正系统的特定部分;结果,不须要完全的比特流,而是利用较小的部分比特流,个中具有要修正的特定区域的信息。利用基于差异的方法在设计时天生部分比特流。 PlanAhead [26]或bitgen命令行[27]用于天生它们。该命令− 1.2.2.将每个配置(1 and 2)的两个不同文件作为输入,结果是部分比特流2.,它们之间存在差异。部分比特流的最小尺寸对应于用一个额外的虚拟帧和掌握信息增加的一个配置帧。
要配置CLB列,须要36帧。在36帧内,我们拥有20个CLB中存在的每个元素的信息。我们关注LUT,由于这些是实现FPGA中所有组合逻辑的基本元素。
LUT或逻辑函数发生器是六输入元件,须要64位来定义要实行的功能。LUT的逻辑行为取决于在这64位中配置的值(INIT值)。要处理任何单个LUT,必须定义其位置和INIT值。该位置利用三个参数:(x,y,Bel)。 x和y是Slice的坐标,Bel是用于选择Slice内的单个LUT的索引。 x和y的范围取决于FPGA的大小(在所考虑的器件中为108×160)。 Bel索引的范围从0到3,用坐标(x,y)选择Slice内的4个LUT(LUT-A,LUT-B,LUT-C和LUTD)中的一个。一旦识别出特定的LUT,就可以通过64个配置位修正其INIT值。如第2节所述,由于Xilinx API供应的某些软件程序,可以在运行时修正此LUT参数。函数XHwIcap GetClbBits用于读回LUT的INIT值并将其存储在内存中。 XHwIcap SetClbBits将系统内存中的任何INIT值复制到LUT配置字段中。这两个函数都须要相同类型的参数:LUT(x,y和Bel)的坐标和用于定位INIT值的内存地址。我们创造有关这些函数及其实行的操作的信息非常有限。这些参数的格式目标文件(.o)及其源代码不可用。
此外,利用这些函数读取和写入LUT的配置值所需的韶光大约为2ms,而利用XHwIcap DeviceReadFrame和XHwIcapDeviceWriteFrame函数读取和写入帧的韶光大约为30 us。这些数字是利用基于MicroBlaze的100MHz系统实验得到的,为我们供应了改进LUT重新配置韶光的机会。因此,我们进行了实验以推断出LUT参数和配置帧之间的关系。通过组合XHwIcap SetClbBits函数以利用XHwIcap DeviceReadFrame写入特定LUT来剖析帧上的编程值,我们创造利用四个帧来重新配置单个LUT。
如图4所示,INIT值的64位超过四个连续帧,每帧包含16个INIT位。每个CLB列中的40个Slice可以看作是20列Slice的2列。一个Slice列包含20个Slice,在x坐标上具有偶数值,而其他20个Slice包含奇数值。帧26至29包围具有奇数x坐标的20个Slice的LUT配置值,而当32坐标为偶数时,帧32至35具有20个Slice的相应信息。以类似的办法,Slice-y坐标确定要利用的每个帧内的特定字。对付任何CLB列,y须要20个连续值。根据此值,帧中的特定字对应于单个LUT。两个连续的帧字具有片的4个LUT的部分信息。 16位INIT LUT-A和16位INIT LUT-B配置值在一个32位字中。类似地,LUT-C和LUT-D INIT值位于下一个字中。
4. AC_ICAP实现AC ICAP掌握器(如图5所示)供应与Xilinx工具中可用的XPS HWICAP和AXI HWICAP类似的功能,但AC ICAP完备在硬件中实现,而不是将大部分任务作为处理器中的软件例程。它包括支持ReadFrames,WriteFrames,Modify LUT,以及从闪存和BRAM内存加载部分比特流。与同样在硬件中实现帧读取和写入的类似方法[20]比较,我们的掌握器通过LUT的运行时重新配置得到改进,而无需预先打算的部分比特流。这末了一个特性与自适应的实现干系可能须要根据运行时天生的值对硬件进行微调的系统,而不仅仅是基于预先打算的值。第8节将更详细地谈论这方面的问题。
掌握器及其内部模块利用有限状态机(FSM)根据表1中指定的输入Op sel的值在不同的配置级别上操作。
AC ICAP最初利用配备了Virtex-5LX110T FPGA的电路板开拓,实现流程在Xilinx工具版本14.7中实行。只管Virtex-5系列供应了详细信息,但应把稳掌握器也按照第6节中的解释在7系列系列中实现。
如第3节所述,LUT的DPR须要修正帧的特定部分。因此,用于读写帧的两个模块在LUT运行时重新配置的实现中是必不可少的。我们设计了具有BRAM空间的AC ICAP掌握器,能够存储可以重新配置4个CLB列区域的部分比特流。然后,掌握器对设备中可用的总BRAM具有低影响(148)。因此,我们将7-36 Kbit BRAM元素(31.5KB)配置为双端口存储器。该存储空间用于存储读取的帧,并且还用作要发送到ICAP的帧的源。保留初始2800字节以实行LUT修正和帧任务。剩余的28.7KB可用于帧或部分比特流存储,如图6所示。当部分比特流适宜可用的BRAM时,BRAM任务的负载部分比特流可以达到最大指定吞吐量,由于它们之间的直接连接。片上BRAM和额外字虚拟帧数据帧1数据帧N数据帧或部分比特流位31位0 01 699 700 8063字1 41 42字41字1字41 82 BRAM地址图6:BRAM存储器映射。
ICAP通过32位链接。通过利用100MHz的时钟,每个时钟周期可以利用一个32位字,这相称于ICAP支持的最大吞吐量(3.2 Gbps)。我们遵守技能文件中规定的有关ICAP最大事情频率的限定:100MHz [4]。但是,该当考虑到汉森等人在文献 [18]报告了ICAP的精确操作,当它被超频以实现更好的重配置吞吐速率。
接下来详细解释AC ICAP掌握器的组成模块。
4.1 ReadFrames模块
ReadFrames模块利用两个参数来定义要读取的位置(FAddr)和帧数(Nf)。 Nf对付单帧读取取值1或对多帧读取取任何其他值。它受掌握器上可用BRAM内存的限定。该当把稳的是,对付LUT修公理务,一个BRAM块就足够了,但我们包括六个额外的块来存储帧或小的部分比特流。我们将所有读取帧存储在BRAM上,然后可以访问它们以对它们实行任何操作。或者,能够对读取帧进行顶部处理和存储的外部模块可以得到比由BRAM的大小限定的帧更多的帧。例如,所考虑的板中存在的DDR存储用具有256MB的容量。它可用于保存占用AC ICAP可用BRAM的31.5KB以上的配置帧。
在多帧(Nf> 1)的情形下,FAddr是读取过程开始的第一帧的地址。从那里,例程将读取Nf个连续帧。ReadFrames例程中涉及的步骤如图7所示。当op sel =“001”并且Start旗子暗记被置位时,ICAP被配置为读取指定的帧。这是通过写入ICAP的某些寄存器来完成的,详见[28]。主要的是指出CE和WRITE输入的精确断言以定义ICAP上的读取或写入操作。在CE之前,该当修正内容,以避免引起中止序列。它在图7中的两个框ICAPWRITE和ICAP READ中有详细解释。
输入FAddr和Nf用于用输入字标识的流程的两个步骤。这两个值适用于相应寄存器的格式。 FAddr应具有帧地址寄存器的格式,即一个32位字,个中包含字段:块类型,顶部,HCLK行,列和列内的帧。 Nf用于打算读取的字的数量(N)并天生要发送给ICAP的类型2字。用户可以通过输入Startaddr和NumFrames分别指定FAddr和Nf。或者它们可以由Lut2Frames模块天生,如第4.3节中所述。
我们必须考虑任何帧的读取都包括在过程开始时天生的一个额外虚拟帧以及一个额外的字。考虑到这一点,Virtex-5器件的读取字数可以打算为
公式(1)适用于任何Virtex-5FPGA,由于在这些器件中,所有配置帧都具有相同的大小。这是41个32位字。伪帧由1到Nf的加法表示。末了一个添加代表了最初的字。
来自FDRO的状态READNWords实行组成帧的N个32位字的实际读取。对付从ICAP的FDRO寄存器读取的每个字,增加BRAM地址以将帧存储在该存储器上。图6显示了帧的位置和其它字。
4.2 WriteFrames模块
该模块的设计遵照与ReadFrame中相同的方法。紧张差异在于准备ICAP写入配置存储器所需的配置命令。当表1中定义的Op sel输入为“010”且启动旗子暗记有效时,WriteFrames模块被激活。要达到最大吞吐速率,要写入的帧的首选源是BRAM。如果帧位于AC ICAP的BRAM中,则每个时钟周期都有一个32位字。
由于此模块常日与ReadFrames结合利用,因此要写入的帧已经被读取并存储在BRAM上。然后,WriteFrames模块利用相同的存储空间,如图6所示,个中ReadFrames放置了回读帧。
与ReadFrames模块须要考虑一个虚拟帧的办法相同,在每个写帧例程中,虚拟帧该当在进程的末了部分发送到ICAP。因此,数据帧从BRAM地址= 42开始并在地址41 (Nf + 1)。发送数据帧后,应立即跟随虚拟帧。为此,起始地址变动为1,并在发送41个字(1帧)时结束。地址0处的额外字不用于写入过程。
我们天生Op完成输出以指示写入过程的结束。有必要担保ICAP任务精确完成。发送完所有字后,必须发送DESYNC命令并禁用ICAP。当ICAP吸收并处理DESYNC命令时,操作完成。当输出端口O从0xDF变为0x9F时不雅观察到。该过程具有6个时钟周期的延迟,与输入CE上的值无关。
4.3 DPR of LUTs with LUT2Frames 模块
LUT2Frames模块通过将LUT参数转换为帧表示来许可LUT的动态部分重配置。如第3节所述,LUT的特色在于坐标(x,y,Bel)和INIT值。 LUT2Frames模块,如图8所示,实行两个紧张任务:(1)将x,y,Bel坐标转换为FAR格式,以及(2)将INIT(64位)LUT函数转换为4个16位的字。
x,y,Bel输入合并为一个32位字,当设置Start输入时,LUT2Frames模块利用INIT值。基于坐标值,天生一个具有帧地址寄存器(FAddr)格式的32位字,以定义读写开始的帧。此外,x,y和Bel值确定字偏移量,它是须要操作的每个帧(2-41个字中的第一个)的详细字。
从32位字开始,只有16位对应于特定的LUT。因此,旗子暗记msb lsb指示应修正32位字的哪一部分:0为字的LSB部分(LUT-A或LUT-C) 16个MSB(LUT-B或LUT-D)为1。
与先前的处理并行地,LUT2Frames模块天生四个16位字(fword1⋅⋅⋅fword4),其对应于变换并适应四个帧的INIT值。
帧位置和寻址的所有繁芜性对用户是透明的。 LUT2Frames模块实现所有转换并打算适当的地址和内存管理,以便在须要修正全体设备中的任何LUT时许可用户进行大略操作。
当须要进行LUT修正时,实行由FSM掌握的步骤,如图9所示。该过程由启动旗子暗记触发;然后,激活LUT2Frames模块。利用此空闲备份字天生的值修正帧写入帧读取帧LUT2帧模块,从FAddr开始的4帧被读取并存储在BRAM(读取帧)中。字偏移和msb lsb表示应修正的特定字。备份这4个字(备份字),利用LUT2Frames天生的四个字进行修正,并复制回BRAM。此时,BRAM包含具有新字的帧,并且WriteFrames模块实行对应于LUT的4帧的写入。
Recover LUT例程利用在备份字阶段得到的四个备份值将LUT规复到其先前的配置值。考虑图9,它仅实行LUT修正例程的末了两个步骤。
它修正了BRAM上的4个帧,然后通过WriteFrames模块发送这些帧以将LUT规复到其先前的INIT值。此例程在须要在修正LUT之前规复LUT的先前功能的运用程序中非常有用。通过遵照这种方法,我们避免再次读取四帧,由于这些已经在BRAM上。
利用ChipScope Pro Debugger [29]验证了掌握器的精确操作。图10显示了LUT修正过程的详细信息。我们指定了要修正的LUT的x,y,Bel和INIT值。图10中所示的步骤可以在图10中标识。LUT2Frames模块仅须要两个时钟周期,并且它天生的信息用于寻址四个帧以读取和修正这些帧中的四个特定字。
4.4 Load Partial Bitstreams模块
该模块遵照类似于第2节中描述的方法,关于通过加载部分比特流来加速部分重新配置。负载部分比特流模块实行三个紧张任务:(1)从闪存加载部分比特流,(2)将部分比特流从闪存复制到BRAM,以及(3)从BRAM加载部分比特流。为此,该模块包括一个存储器访问掌握器,用于从闪存中读取部分比特流。因此,从闪存读取的数据可以直接发送到ICAP I端口,也可以复制到内部BRAM中。当部分比特流在BRAM上时,可以达到ICAP上的最大配置速率。如果部分比特流在外部存储器上,则重新配置韶光取决于访问存储器的延迟。在这种情形下,我们利用Intel StrataFlash存储器28F256P30,它须要在100MHz的26个时钟周期才能得到32位字。
可以放置在BRAM上的部分比特流的大小受掌握器上可用的BRAM存储器的限定。从AC ICAP中存在的7-36Kbit BRAM,我们保留了2800字节来实行LUT修正和帧任务。因此,可放置的部分比特流的最大大小为28.7KB。它可以增加,由于FPGA包含更多的BRAM(LX110T器件中有148个)但它取决于运用限定。
部分比特流是按照标准X ilinx流程天生的;它利用的是PlanAhead或bitgen工具。这些配置文件包括关于设备类型的标题信息,配置数据的大小,比特流的天生的日期和韶光等。我们调度部分比特流以从头部移除不必要的信息,并且仅保留与不包括头部的部分比特流的大小(以字节为单位)对应的末了的头部字段。因此,我们的掌握器首先读取包含部分比特流大小的字,并利用该信息打算从内存中读取的字数(闪存为16位字,BRAM为32位字)。利用这种方法,唯一须要的参数是部分比特流所在的初始地址。
掌握器自动打算结束地址并实行读取过程。根据输入Op sel选择的操作,数据将发送到ICAP或BRAM。以类似的办法,当Op sel设置为“111”时,该模块配置ICAP掌握旗子暗记和BRAM地址以许可高吞吐量部分重新配置。
5. AC_ICAP适用于片上处理器为了使掌握器能够连接到基于处理器的设计,它适用于MicroBlaze系统利用的外围本地总线和快速单工链路接口。为此,AC ICAP被认为是具有图5中所示的I / O端口的黑盒子,并且这些端话柄用于各自的总线。这种方法供应了更大的灵巧性,由于掌握器可以随意马虎地从处理器命令。我们创建了一系列适用于每个接口的函数,以实行表1中所示的任务。这些函数(如代码1所示)利用XilinxAPI中的特定例程来访问PLB和FSL接口。
代码1、驱动AC ICAP IP的功能如下:
StartAddr参数指的是应根据op sel值进行调度的唯一输入。在读取和写入帧的情形下,它对应于初始帧的地址(FAddr)。对付其他功能,它是存储数据的存储器地址。 NumFrames是要读取或写入的帧数,x,y bel,INIT是掌握单个LUT的参数。这些是命令AC ICAP掌握器所需的唯一值,由于它在内部实行所有操作,例如将x,y bel和INIT转换为帧格式,在读取部分比特流的大小后打算结束地址,等等。
5.1 PLB IP
PLB总线用于将外围设备连接到MicroBlaze处理器。以VHDL设计的原始AC ICAP在PLB包装器中实例化以天生定制PLBAC ICAP IP。掌握器的输入和输出连接到PLB总线的旗子暗记,然后处理器可以利用寄存器地址访问它们。因此,PLB AC ICAP可以连接到任何基于MicroBlaze的系统,如图11所示。该架构包括闪存,个中修正可重配置区域的全部和部分比特流位于个中。通过将闪存的AC ICAP连接定义为外部端口,也可以在IP设计中实行与闪存的直接连接。一旦包含在EDK的硬件设计中,处理器中运行的软件就能够通过利用代码1中列出的功能来掌握PLB AC ICAP外设。因此,部分重配置干系任务利用代码1中指定的任何功能。并监视输出操作,直到它变高为确认任务已完成。
5.2 FSL Coprocessor
Fast Simplex Link是MicroBlaze处理器的一个接口,许可包含具有高实行优先级的专用硬件例程,因此意味着与处理器通信的低延迟。在这种方法中,我们采取了类似于[13]中提出的办理方案,以便由于总线延迟而得到最小的掌握器性能低落。因此,基于VHDL的AC ICAP适用于FSL接口,可以作为协处理器轻松连接,从而利用处理器的所有灵巧性,但利用ICAP干系任务中的硬件加速。图12显示了利用FSL AC ICAP协处理器的系统。
FSL AC ICAP协处理器的访问办法与PLB AC ICAPIP中考虑的办法类似,即通过代码1中供应的功能凑集。紧张差异在于这些例程的类型功能须要todrive theFLS。在这种情形下,我们将壅塞例程putfsl和getfsl与Xilinx API结合利用,由于我们认为重新配置任务具有高优先级。
6.在较新的设备系列中利用AC_ICAP为了验证7系列器件中的掌握器,我们利用配备Kintex7 XC7325T FPGA的KC705板[30]。
该FPGA包含50,950个Slice,在每个Slice内部,有4个6输入LUT和8个FF .445个BRAM对应2002 KB,比特流大小为10.9MB。为了使针对Virtex-5设计的AC ICAP适应7系列器件,须要进行某些变动。紧张差异总结如下:
(1)7系列系列中每帧的字数为101而不是41(Virtex-5)。这是由于7系列FPGA中的CLB列高50宽1宽,这意味着CLB列中存在100个Slice。同样,HCLK行的数量也不同;对付这个特定的设备,它是7(3顶部和4底部)。
(2)开始读或写的帧的地址由FAR寄存器定义。对付7系列,该寄存器利用32位中的26位,而在Virtex5 FAR中,它利用24位。这是由于FPGA的大小增加。
(3)与Virtex-5相反,对付7系列,在读取帧任务开始时不须要额外的字。因此,可以根据对任何7系列FPGA有效的(2)来打算从这些设备读取/写入的字数(Nwords 7),由于在这些设备中所有配置帧具有相同的大小。伪帧由帧数(Nf)加1表示:
(4)指示在LUT-DPR过程中该当修正帧上的特定字的字偏移现在具有0到100的范围。对付Virtex-5,它在0到40之间变革。以类似的办法,跳过列(包含不同于CLB的资源的列:BRAM,DSP I / O)和紧张列编号须要更新.Kintex7中的第一列的紧张地址为2,而它为1 Virtex-5的。
(5)在7系列中,原始ICAPE2没有BUSY输出。相反,我们该当在CE断言后考虑3个时钟周期来得到有效数据。
(6)WriteFrames模块还须要进行一些变动。在Virtex-5中,可以通过设置配置寄存器(COR0-bit28)并在每次修正FAR时将值0xDEFC加载到CRC寄存器来绕过CRC打算。在7系列中,此类寄存器不存在;默认情形下,新的掌握寄存器(COR1-bits15-16)设置为许可在打算CRC后对系统进行连续操作,因此删除了这些步骤。
(7)该电路板中可用的闪存与Virtex-5中的闪存类型相同,但由于尺寸不同,闪存掌握器经由修正后还包含两条额外的地址线。
配置CLB列所需的帧数保持不变(36),包含LUT信息的特定帧也是如此。我们利用22个BRAM块占用与Virtex-5类似的百分比(5%)。
一旦在AC ICAP中实行了所提出的变动,它就在Kintex7 FPGA中实现,并利用它支持的所有操作进行测试。在图13中,我们再次供应了一个LUT的DPR细节,由于它涉及掌握器中可用的各种任务。
这个新的AC ICAP适用于AXI接口,由于它用于所有newXilinx系列。该IP被标识为AXI AC ICAP,并支持代码1中供应的适用于AXI API的相同功能。
基于前面的描述,我们有不同的掌握器变体来评估:AC ICAP,独立硬件版本; PLB AC ICAP和AXI AC ICAP,分别适用于PLB和AXI总线;和FSL AC ICAP,用作协处理器。我们利用PlanAhead 14.7和Vivado 2015.3来定义不同大小的可重新配置分区(从1到10个CLB列)并天生不同的部分比特流。
对付基于Xilinx的掌握器,我们实现了如图11所示的架构,但我们不是利用PLB AC ICAP,而是添加了XPS HWICAP或AXI HWICAP,其参数可以实现重配置吞吐量的最佳性能(写入FIFO深度= 1024,读FIFO深度= 256,并启用FIFO类型)。对付这两种情形,还包括Xilinx闪存掌握器,以访问位于该存储器中的部分比特流。在这样做时,我们可以得到准确的比较,由于我们利用相同的工具版本和综合选项。
7. 实验结果本节总结了有关AC ICAP掌握器的各种版本的重新配置速率和资源利用率的紧张结果。我们认为比较用于Virtex5的Xilinx XPS HWICAP和用于Kintex7的AXI HWICAP的紧张参考,由于这些是报告的替代方案中的一个,支持大多数DPR任务的那些。我们考虑到,对付配置多达4个CLB列的部分比特流,可以将它们复制到BRAM中,由于Virtex-5限定为28.7KB,Kintex7限定为99 KB。为了记录AC ICAP(独立版本)的韶光性能,利用了ChipScope Pro。对付适用于处理器接口的版本,系统中包含的定时器用于记录特界说务所需的时钟周期数。这些数字在表2中报告。这里,我们想提一些关于Kintex7 FPGA得到的值的问题.AXI HWICAP包含的LUT功能不支持7系列。利用最新版本的工具进行实验(Vivado 2015.3和驱动程序hwicap v10 0),仅支持Virtex6和以前的设备,我们无法修正它们,由于源代码不可用。功能对付利用AXI HWICAP的读写帧,须要修正一些头文件,由于它们会涌现一些缺点的值。文件xhwicap ih:利用7系列中的Virtex6值,但这些值不应该相同。例如,声明两个族的帧中字的数量是81.但是对付7系列族,精确的值是101. FAR创建时会发生类似的情形。驱动程序利用一些对Virtex-6有效但不对Kintex7有效的参数创建FAR,并对这些参数进行了修正以得到精确的操作。
从表2可以看出,据我们所知,利用AC ICAP的LUT的重新配置韶光是报告最快的替代方案。与Virtex-5中的XPS HWICAP比较,它意味着PLB AC ICAP的速率提升超过320倍,这是最慢的版本,独立的AC ICAP改进了LUT的重配置韶光超过380次。以类似的办法,考虑到Virtex-5和Kintex7,读写帧任务的加速分别经历了超过18次和21次的改进。
对付Virtex-5和Kintex7,来自BRAM的负载部分比特流(对付AC ICAP)的重新配置吞吐量分别为380.47和381.03 MB / s。它靠近400MB / s的最大支持吞吐量和[15,20]上的报告值。对付[15]报告的事情,该当指出的是,估计的代价并不是在实际实行中衡量的;由于该掌握器不包括BRAM。我们的掌握器与400 MB / s值的偏差是由于ICAP开始读取BRAM和处理DESYNC命令(0x0D)所需的额外时钟周期。对付每个与ICAP干系的任务,我们认为在确认DESYNC命令时它就完成了。它是通过监视ICAP的O端口来完成的,该端口在Vinterex-5中从0xDF变为0x9F,在Kintex7中从0xFFFFFFDB变为0xFFFFFF9B,以确认完成任务是否成功。这意味着在末了一个数据发送到的后6个额外的时钟周期ICAP。
对付PLB,AXI和FSL版本,由于接口的延迟,韶光会有一些降级,但在所有情形下,它们对来自闪存的负载部分比特流供应了超过11倍的改进。
将部分比特流从闪存复制到BRAM的韶光与从闪存加载部分比特流所需的范围相同。这些存储在BRAM上,而不是向ICAP发送数据。因此,当运用程序可以在实行开始之前(例如,在勾引时)将部分比特流复制到BRAM时,它尤其有用。
关于资源利用率,表3列出了AC ICAP掌握器的每个模块的详细信息。该当把稳的是,AC ICAP包括闪存掌握器,而XPS HWICAP和AXI HWICAP则不是这种情形。表4总结了掌握器的各种选项所需的资源。 AC ICAP的PLB,AXI和FSL版本的额外资源是由于使掌握器适应这些接口所需的包装逻辑。可以看出,资源需求最大的方法利用了5%的Slice,这可以被认为是合理的大小,由于所有操作都是在硬件中完成的。
末了,在表5中,我们比较了完全的基于MicroBlaze的架构所需的资源,包括不同版本的ICAP掌握器。我们可以看到,利用适用于PLB和FSL的AC ICAP的系统均匀须要比XPS HWICAP替代方案多3%的Virtex-5 FPGA资源。这是为了加速所有重新配置任务而支付的区域开销,例如当利用FSL AC ICAP时,LUT的重新配置韶光在356x中得到改进。当我们看到Kintex7的数据时,面积百分比随着设备的增大而降落。
因此,随着要管理的配置数据量变得越来越大,任务的加速变得越来越主要,但ICAP原语支持的速率和总线宽度自Virtex-4天生(32位@ 100MHz)以来保持不变。从供应的数据中,我们可以总结出最佳的性能区域权衡由AC ICAP给出,它利用3%的FPGA资源但在LUT DPR中供应380x的加速。
利用该方法的LUT的动态部分重新配置供应了以下优点:对付要实行的每个修正,它不须要预先打算的部分比特流。它许可利用任何布尔值修正运行时LUT,并且不受内存中部分比特流可用性的限定。这种风雅的部分运行时重新配置在诸如故障注入平台和密码实现的运用中具有越来越大的干系性,个中硬件可以在LUT级别被修正以避免某些类型的攻击。这些细粒度修正的案例运用将不才一节中先容。
8. 用于LUT评估AES模块的AC_ICAP在本节中,我们利用AC ICAP来评估[31]中供应的AES模块。我们的想法是找到一种方法来识别LUT的关键配置值。有了这些信息,就可以设计出针对外部攻击的对策。例如,可以采取这种方法来修正某些LUT的逻辑行为,以在一直止系统的情形下产生缺点值。在这样做时,AES可以持续事情,给出错误的精确操作感,可以将其用为难刁难抗诸如差分功率剖析之类的攻击的对策。
如果利用部分比特流方法来修正LUT,则每个LUT tomodify都须要部分比特流。这些该当在设计时天生并复制到存储器中。因此,LUT的所有可能修正都该当在设计时定义,一旦系统运行,很难包含任何变革,例如新的LUT修正,由于它意味着天生新的部分比特流的耗时过程。 AC ICAP支持的LUT的DPR的优点是不须要部分比特流,并且可以动态地实行任何逻辑修正。为了评估这种方法,我们利用伪随机数发生器(PRNG)来产生64位配置存储器,以便对要修正的LUT进行修正。我们不关注AES或PRNG的细节。我们的目标是供应一种方法来轻松识别LUT及其关键值,以用于评估和设计关键模块。
该系统的架构如图14所示,并在Virtex-5 FPGA中实现。我们包括两个AES模块的副本,用于在线比较结果,BRAM存储LUT的信息。 AES的单个副本须要8360 FF和13952 LUT。 DUT副本在区域中受到约束,并定义为要利用的分区,以保持在初始实现中定义的路由。定义了88个CLB列(14080 LUT)的区域来放置AES。由于我们可以在其他设计中重用已实现的分区,因此利用LUT的DPR得到的值对付不同的实现仍旧有效。由FSM掌握的系统利用PRNG得到随机配置值以配置LUT,并且AC ICAP用于通过利用Slice的x,y坐标来修正DUT区域上的LUT。一旦修正了LUT,就会对黄金和DUT组件运用一些测试台输入,并剖析输出以确定LUT修恰是否产生缺点值。在运用所有输入模式之后,对这种修正的效果进行分类。如果产生缺点值,则存储LUT地址和配置值。 LUT规复到先前的值并测试新的LUT。如果没有产生缺点的值,可以绕过它或利用新的配置值进行测试。因此,这种方法许可灵巧的替代方案来彻底地或以更轻松的办法评估系统。然后,利用存储在BRAM中的信息来确定在系统受到攻击时可以采取哪些LUT及其干系配置值来故意修正逻辑功能。
9.结论和未来事情我们先容了AC ICAP,这是一种在Virtex-5和Kintex7 FPGA中验证的新ICAP掌握器。它能够加载部分比特流,读取和写入帧,以及修正FPGA中的任何LUT,在末了一种情形下无需预天生的部分比特流。该掌握器适用于利用PLB,FSL和AXI链路的嵌入式处理器系统。与Virtex-5 FPGA的XPS HWICAP功能比较,独立于处理器的版本的重配置速率剖析显示LUT的运行时重新配置提高了380多倍。由于我们的掌握器完备采取硬件实现,因此显然须要更多资源,但无论如何它霸占了XC5VLX110T器件上可用元件的5%以上。因此,AC ICAP供应了一个完全的高速办理方案,可以实行多种动态部分重配置任务。可接管的FPGA足迹。它被用于设计AES模块,可以修正特定的LUT作为可能的攻击对策。
作为未来的事情,我们操持利用DDR掌握器扩展AC ICAP,以加速重新配置任务,当这些任务基于预先打算的部分比特流由于其大小而无法复制到BRAM中时。因此,DDR存储器是战胜BRAM可用限定的替代方案。
参考文献
[1] Keysight Technologies, M9451A-DPD PXIeMeasurementAccelerator, 2015.
[2] Xilinx, 7 Series FPGAs Overview DS180 (v1.16.1), Xilinx, 2014.
[3] Altera, A New FPGA Architecture and Leading-Edge FinFETProcess Technology Promise to Meet Next Generation System RequirementsWP-01220-1.1, Altera, SanJose, Calif, USA, 2015.
[4] Xilinx, LogiCORE IP XPS HWICAP (v5.01a) DS586, Xilinx, 2011.
[5] L. A. Cardona, J. Agrawal, Y. Guo, J. Oliver, and C. Ferrer, “Performance-areaimprovement by partial reconfiguration for an aerospace remote sensingapplication,” in Proceedings of the International Conference onReconfigurable Computing and FPGAs (ReConFig ’11), pp. 497–500, Cancun, Mexico, November-December 2011.
[6] C. Claus, R. Ahmed, F. Altenried, and W. Stechele, “Towards rapiddynamic partial reconfiguration in video-based driver assistance systems,” in Reconfigurable Computing: Architectures, Tools and Applications, P. Sirisuk,F.Morgan,T.Elhazawi, and H.Amano, Eds., vol. 5992 of Lecture Notes inComputer Science, pp. 55–67, Springer, Berlin, Germany, 2010.
[7] S. Bhandari, S. Subbaraman, S. Pujari et al., “High speed dynamicpartial reconfiguration for real timemultimedia signal processing,” in Proceedings of the 15th Euromicro Conference on Digital System Design(DSD ’12), pp. 319–326, Izmir, Turkey, September 2012.
[8] IBM, 128-Bit Processor Local Bus Architecture Specifications, IBMCorporation, Armonk, NY, USA, 2007.
[9] K. Glette and P. Kaufmann, “Lookup table partial reconfiguration foran evolvable hardware classifier system,” in Proceedings ofthe IEEE Congress on Evolutionary Computation (CEC ’14), pp. 1706–1713, Beijing, China, July 2014.
[10] L. Sterpone and M. Violante, “A new partial reconfigurationbased fault-injectionsystem to evaluate SEU effects in SRAM based FPGAs,” IEEE Transactionson Nuclear Science, vol. 54, no. 4, pp. 965–970, 2007.
[11] M. Liu, W. Kuehn, Z. Lu, and A. Jantsch, “Run-time partial reconfigurationspeed investigation and architectural design space exploration,” in Proceedings of the International Conference on Field Programmable Logicand Applications (FPL ’09),
pp. 498–502, August 2009.
[12] C. Claus, B. Zhang, W. Stechele, L. Braun, M. H¨ubner, and J. Becker,“A multi-platform controller allowing for maximum dynamic partialreconfiguration throughput,” in Proceedings of theInternational Conference on Field Programmable Logic and Applications (FPL ’08), pp. 535–538, Heidelberg, Germany, September2008.
[13] M. H¨ubner, D. G¨ohringer, J. Noguera, and J. Becker, “Fast dynamicand partial reconfiguration data path with low hardware overhead on XilinxFPGAs,” in Proceedings of the IEEE International Symposium on Parallel andDistributed Processing, Workshops and Phd Forum(IPDPSW’10), pp. 1–8, IEEE,Atlanta, Ga, USA, April 2010.
[14] S. Lamonnier, M. Thoris, and M. Ambielle, “Accelerate partial reconfigurationwith a 100% hardware solution,” Xcell Journal, no. 79, pp.44–49, 2012.
[15] J. Tarrillo, F. A. Escobar, F. L. Kastensmidt, and C. Valderrama, “Dynamicpartial reconfiguration manager,” in Proceedings of the IEEE 5thLatin American Symposium on Circuits and Systems (LASCAS ’14), pp. 1–4, IEEE, Santiago, Chile, February2014. International Journal of Reconfigurable Computing 15
[16] V. Lai and O. Diessel, “ICAP-I: a reusable interface for the internalreconfiguration of Xilinx FPGAs,” in Proceedings of theInternational Conference on Field-Programmable Technology (FPT ’09), pp. 357–360, Sydney, Australia, December 2009.
[17] M. Straka, J. Kastil, and Z. Kotasek, “Generic partial dynamic reconfigurationcontroller for fault tolerant designs based on FPGA,” in Proceedings of the 28th Norchip Conference (NORCHIP ’10), pp. 1–4, IEEE, Tampere, Finland, November
2010.
[18] S. G. Hansen, D. Koch, and J. Torresen, “High speed partial run-timereconfiguration using enhanced ICAP hard macro,” in Proceedings ofthe 25th IEEE International Parallel and Distributed Processing Symposium,Workshops and Phd Forum (IPDPSW ’11), pp. 174–180, Shanghai,China, May 2011.
[19] Xilinx, AXI HWICAP v3.0, Xilinx, San Jose, Calif, USA, 2015.
[20] A. Ebrahim, K. Benkrid, X. Iturbe, and C. Hong, “A novelhighperformance
fault-tolerant ICAP controller,” in Proceedings of theNASA/ESA Conference on Adaptive Hardware and Systems (AHS ’12), pp. 259–263, IEEE, Erlangen, Germany, June2012.
[21] A. Ebrahim, T. Arslan, and X. Iturbe, “On enhancing the reliabilityof internal configuration controllers in FPGAs,” in Proceedings ofthe NASA/ESAConference onAdaptiveHardware and Systems (AHS ’14), pp. 83–88, IEEE, Leicester, UK, July 2014.
[22] J. Heiner, N. Collins, and M. Wirthlin, “Fault tolerant ICAP controllerfor high-reliable internal scrubbing,” in Proceedings ofthe IEEE Aerospace Conference, pp. 1–10, IEEE, BigSky,Mont, USA, March 2008.
[23] A. Ebrahim, K. Benkrid, X. Iturbe, and C. Hong, “Multipleclone configurationof relocatable partial bitstreams in Xilinx Virtex FPGAs,” in Proceedings of the NASA/ESA Conference on Adaptive Hardware and Systems(AHS ’13), pp. 178–183, Torino, Italy, June 2013.
[24] U. Legat, A. Biasizzo, and F. Novak, “SEU recovery mechanism for SRAM-BasedFPGAs,” IEEE Transactions on Nuclear Science, vol. 59, no. 5, pp. 2562–2571, 2012.
[25] C. Schuck, B. Haetzer, and J. Becker, “An interface for a decentralized2D reconfiguration on Xilinx Virtex-FPGAs for organic computing,” International Journal of Reconfigurable Computing, vol.2009,Article ID 273791, 11 pages, 2009.
[26] Xilinx, Partial Reconfiguration User Guide UG702(V14.7), Xilinx, 2013.
[27] Xilinx, Command Line Tools User Guide UG628 (v 14.7), Xilinx, SanJose, Calif, USA, 2013.
[28] Xilinx, Virtex-5 FPGA Configuration Guide UG191 (V3.11), Xilinx, 2012.
[29] Xilinx,ChipScope Pro Software and Cores, Xilinx,SanJose, Calif, USA, 2012.
[30] Xilinx, Xilinx Kintex-7 FPGA KC705 Evaluation Kit, Xilinx, San Jose,Calif, USA, 2015.
[31] Opencores,“AES project,” 2015, http://opencores.org/project.
如有同学未便利下载英文原文,可把邮箱留言给我。
全文完。