×

如何使用FPGA进行面向密码应用的关键技术研究

消耗积分:0 | 格式:rar | 大小:2.92 MB | 2019-01-10

分享资料个

  高性能计算正经历着根本性的变化。能耗和散热的需求也逐渐成为限制了大型数据中心的不断扩张的瓶颈。这些变化推动着高性能计算不断发展新的计算技术。可编程逻辑阵列技术是一项能够在提高性能的同时降低能耗技术。但是FPGA开发面临多重挑战,在硬件上开发并行的应用程序,超过了许多现有开发人员的知识,因而我们需要更加方便地编程工具来挖掘FPGA 的高性能计算潜力。高级综合是项将高级语言的描述转换成硬件结构的行为描述的技术。

  本文提出了基于数据驱动的应用类IP 核高级综合的设计方法。课题从实际出发,设计一个可以实现的系统框架,而且要保证这个系统不仅使用方便,还能够生成出高性能的加密硬件代码。根据用户的模块化描述,生成软件流程图。将加密算法实现成为FPGA 可重构的参数化IP 核,构建参数化的IP 核库。通过搜索算法,根据软件流程图和IP 核库,生成并优化硬件节点图。最后,根据硬件节点图,生成Verilog 代码。

  本文构建了高效的IP 核库,IP 核的表示和实现是可重构加速器的硬件实现基础。我们利用数据结构来描述这些硬件IP 核的属性和计算行为,为生成硬件流程图的搜索算法提供了IP 核。本文将典型的密码算法通过硬件实现,并由此构建了面向密码应用的高性能加密模板库。另外,还针对程序的循环、分支和其他结构,设计了相应的参数化模块。

  本文研究了面向硬件结构的数据流图优化算法。根据前端生成的数据流图,利用硬件模块绑定算法生成硬件流图。面向基于模块的硬件流图,本文主要通过重用模块,以减少流水线的资源消耗;采用了公共子表达式消除,来优化分支结构;采用资源最佳算法来实现设计空间的探索。

  最后通过构建FPGA 原型系统,验证了本文提出的高级综合框架。针对目标FPGA 芯片对硬件系统的总体结构进行了设计。目标系统中高级综合生成的硬件代码与顶层控制模块一起集成到FPGA 中,构成完整的FPGA 实现。最后对多个应用程序的高级综合进行了示例,并进行性能实现对比,实验结果显示本文的高级综合框架及优化算法有着良好的效果。

  高性能计算正经历着根本性的变化。新推出的通用处理器往往提供更多的核而不是更快的频率。开发人员再也不能依赖提高处理器频率来提升现有的串行程序的性能。能耗和散热的需求也逐渐成为限制大型数据中心不断扩张的瓶颈。这些变化推动着高性能计算不断发展新的计算技术。

  可编程逻辑阵列技术是一项能够在提高性能的同时降低能耗的技术。FPGA(Field Programmable Gate-Array,现场可编程门阵列)通过多种途径开发程序的并行性,大大提高了性能表现,并能够降低能耗,从而直接地降低了计算成本。但是FPGA 开发面临多重挑战,在硬件上开发并行的应用程序,超过了许多现有开发人员的知识,因而需要更加方便地编程工具来挖掘FPGA 的高性能计算潜力。

  高级综合是一项将高级语言的描述转换成硬件结构的行为描述的技术。它允许开发人员可以侧重于抽象的功能设计和结构描述。高级综合技术可以显著提高开发人员的设计效率,缩短了产品的开发周期,提高模块重用。

  FPGA 是高度可重构的芯片。它由可编程逻辑块和互联模板组成。逻辑块可以通过编程形成任意的算术运算数字电路,任意地联接。FPGA 通过多种途径开发程序的并行性,从而大大地提高了性能表现。其中,多个逻辑块能够组成众多的专门处理单元(PE)来开发数据级和任务级并行。此外,PE 还可以通过深度流水线的方法来开发流水线型并行。例如,通过Celoxica[2]描述的FPGA 实现方法,以1/10甚至1/100 于CPU 的频率,达到了20~300 倍的加速比。

  FPGA 的能耗很低。通常情况下,FPGA 开发板能耗的峰值小于30W,这只有当前商用处理器的1/4~1/10 左右。降低能耗能直接降低计算成本,并且能够在一个数据中心部署更多的计算节点。然而,这些性能的改善以及能耗的降低都取决于计算节点中的FPGA 可重构芯片。因而高性能应用的开发人员必须能够方便地编程来挖掘这种潜力。

  高效利用FPGA 的芯片资源面临诸多挑战。FPGA 可重构硬件具有大量的硬件资源,而且随着技术的不断发展,单片FPGA 芯片集成的器件数量急剧增长,如何充分发挥这些硬件的能力也成为一个重要的问题。设计完成的特定算法加速器,往往具有极强的针对性,只能在特定应用中使用。所设计实现的算法加速器,并没有考虑到硬件资源重用等问题,每个FPGA 仅负责一个特定的算法加速,不利于降低系统成本、能耗,也不利于系统可靠性的提高。此外,高性能可重构计算需求日新月异,对系统性能、可靠性、能耗等方面的约束不断变化,仅采用一些简单的手工设计方法,已经不能应对这些约束变化。这给高性能计算系统的开发、维护、再开发带来了一系列的难题。

  硬件描述语言对面向应用开发的人员来说是个门槛。应用开发人员运用C 语言或matlab 等高级语言编程,通常对硬件描述语言比较陌生。相反,FPGA 使用硬件描述语言(HDL),例如Verilog 和VHDL,这与C 语言的差距不单单是语法上的。虽然FPGA 能够带来诸多的好处,但是学习编程所需要花费的努力,使得利用这项技术非常困难。

  硬件并行开发的思路不同。FPGA 开发人员需要跳出原有的编程模式,去理解如时钟管理,状态机,流水线以及设备专门存储等硬件设计。虽然Verilog 语言也提供了许多高层次的语言抽象,但是基于FPGA 的硬件系统的并行程序开发设计与基于通用处理器或GPU 等的并行程序设计有这本质的不同。由于FPGA 通常使用硬件描述语言进行设计,例如VHDL 或者Verilog 等,这样的设计不同于常规的使用C 语言或者Matlab 进行设计,这也导致了较长的开发设计周期。

  一些研究人员试图通过提供程序员类C 语言的开发环境,在付出的努力和性能表现之间取得平衡。但这些项目都提供了特有的指令与方法,要求现有的程序根据其开发环境,进行大量改写。尽管程序员能够通过努力得到良好的性能提升,但是重写代码工作量大,依然是进行FPGA 开发的一个很大障碍。

  高级综合是指将寄存器传输级(RTL 级)以上的描述语言,例如C 语言等等,自动生成转换成FPGA 的硬件代码实现。我们的目标是通过提供开发者熟悉便捷的开发环境,降低FPGA 的使用难度,从而促进FPGA 在高性能计算领域的应用。我们研究的设想假定开发者按照一条简单熟悉的路径去加速应用,而不用放弃他们原有的编程模型和代码风格。只需较少地改动C 源程序,就能够达到相当的加速比。对于有相当硬件开发经验的专家,高级综合同时提供了类似C 语言的规范,从而可以得到更高的性能提升。但针对一些应用程序即使经过了调整,高级综合编译器还是不能与基于硬件描述语言的开发过程取得同样的加速比。然而,他们两者的目标是不一样的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !