在采用数值处理技术创建嵌入式应用时,通常以整数或定点表示法来确保算术运算尽量简单,这一点至关重要。因其不仅有助于使成本和功耗降至,而且还能尽可能地加速硬件部署。嵌入式处理器是嵌入式系统的,是控制、辅助系统运行的硬件单元。FPGA 现场可编程门阵列, 是嵌入式处理器一种。目前嵌入式系统的软件主要有两大类:实时系统和分时系统。其中实时系统又分为两类:硬实时系统和软实时系统。 FPGA产品(含FPGA嵌入式处理器)开发有 实时性好,处理速度快,开发周期短,研发成本低等优势。
FPGA 非常适用于执行定点运算,并能在逻辑或基于软件或硬件处理器的实施方案中创建高度并行的数据路径解决方案。Virtex-5 FPGA 产品系列中 FXT 系列的硬件处理器 Xilinx PowerPC 440 可提供超标量功能,让用户能够对器件编程,使其以高达 550 MHz 的时钟速率并行执行一个或两个定点运算。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
尽管用户能通过对器件进行编程来执行大多数采用整数或定点算术的运算,但通常须重新运算并插入比例运算以确保计算结果足够。对于复杂运算而言,这不仅耗时,而且还会导致程序变为专用型且不可重用。这样人们就无需修改算法即可获得适用于任何特定应用或操作环境的定点实施方案,也无需为随后的项目及应用而大范围地修改代码。
Xilinx(赛灵思)是的可编程逻辑完整解决方案的供应商。Xilinx研发、制造并销售范围广泛的集成电路、软件设计工具以及作为预定义系统级功能的IP(Intellectual Property)核。在某些控制应用方面CPLD通常比FPGA速度快,但其提供的逻辑资源较少。Xilinx可编程逻辑解决方案缩短了电子设备制造商开发产品的时间并加快了产品面市的速度,从而减小了制造商的风险。与采用传统方法如固定逻辑门阵列相比,利用Xilinx可编程器件,客户可以更快地设计和验证他们的电路。
虽然赛灵思(Xilinx)为基于 IBM 浮点性能库的 PowerPC 440 处理器提供了一种行之有效的仿真浮点解决方案,但处理器内核仍需占用数十个周期来执行每条运算。而采用浮点运算单元 (FPU) 形式的浮点运算硬件加速功能可缩短该运算周期。Virtex-5 FXT 系列中的 PowerPC 440 处理器提供了有效接口,能够将赛灵思软 FPU 等硬件加速器连接至该处理器内核。该方案可通过结构协处理器总线 (FCB) 将 PowerPC 440 处理器上的 128 位辅助处理器单元 (APU) 接口桥接至协处理器。使用该类协处理器,Virtex-5 FXT 用户可以选择软件仿真或者专用软逻辑 FPU 在 PowerPC 上自如地实现浮点运算。
图1,包含 APU-FPU 内核的嵌入式处理器系统
关于 PowerPC 440 FPU
赛灵思针对嵌入在 Virtex-5 FXT FPGA 中的 PowerPC 440 处理器专门设计了 APU-FPU.FPU 通过 APU 接口与处理器的紧密结合可让浮点运算单元直接执行原生 PowerPC 浮点指令,这相对软件仿真而言,速度一般可提高 6 倍。
除少数情况外,赛灵思 PowerPC FPU 一般符合单和双浮点运算的 IEEE-754 标准。自发性指令发送不仅会隐藏运算时延,而且还会减少每条指令的周期。赛灵思在其嵌入式开发套件 (EDK) 中支持 APU-FPU 流。
图2,Virtex-5 FXT PowerPC 440 浮点协处理器架构
图 2 为 FPU 架构的整体框架图。APU-FPU 由执行单元、寄存器文件、总线接口以及所有管理浮点指令执行情况所必需的控制逻辑组成。
FPU 含有两个变量。双变量可执行除 PowerPC ISA 图形子集(fsel、fres 和 frsqrte)以外的所有浮点指令,其中也包括单变量执行的指令。这意味着您能使用带各种商用编译器和操作系统的 FPU)。
赛灵思编译器支持的 APU-FPU 单变量使用的资源较少。当 FPU 被占用时,双操作将通过软件仿真来执行。软 FPU 比软件仿真法平均快 6 倍。单 FPU 通常比双快 13%.
将 APU-FPU 连接至 PowerPC 440有两种方法可将 APU-FPU 连接至 PowerPC 440 处理器:1、利用赛灵思 Platform Studio 设计工具中的 Base System Builder 向导;2、将 APU-FPU 单元添加至当前设计方案中即可。
您首先需利用 BSB 向导确定目标板和所期望的处理器,然后通过一系列复选框和下拉菜单选择设计中所需的 IP.您只需勾选您要选择的 FPU 。该向导可实现一个经过优化能以处理器时钟三分之一速率运行的双 FPU.您也可定制更高时钟速率的FPU 和单 FPU.
图3,通过 BSB 向导(顶部)以及系统组装视图将 FPU 添加至现有 PowerPC 处理器设计方案中
如果不想使用向导,您也可通过另一种方法来实现,即按照系统组装视图拖动 IP Catalog 下的 APU- FPU IP,然后对 FPU 进行配置即可。右击 FPU 并选择 Configure IP,然后您便可选取想要的并确定您希望该 FPU 是针对低时延或是高速率而进行优化;将 FPU 连接至 FCB 并将 FPU/FCB 时钟链接至适当的时钟。
让浮点尽在掌握之中
Virtex-5 APU-FPU 提供的 Platform Studio,支持浮点定制。您可分别采用约 2500 个或约 4900 个 LUT 寄存器对来实现单或双 FPU,也可在无需添加 FPGA 逻辑的情况下运行具有浮点仿真功能的软件应用。
性能水平可预先选择:选择适当的 FPU,或实施设计并确定软件仿真是否满足要求;如未满足,可升级软 FPU.
显而易见,如果能从软件仿真中获得足够的性能,则无需 FPU.但如果需要更高的性能,可使用 APU-FPU.如果应用需要 FPU 或正在使用与之配套的编译器,可选择双 FPU.如果应用仅需单运算且您正在使用赛灵思 GNU 编译器,则单 FPU 会降低逻辑要求。如果选择双 FPU,它将执行单运算,然后将运算结果进行四舍五入,以提供单 FPU 的度。
典型性能增益
当您在评估是需要硬 FPU 还是软 FPU 时,应首先确定代码的浮点密集程度。代码通常包括不同浮点、整数、存储器以及逻辑运算等。因此,尽管基准可作为潜在性能提升的指示器,但运行您自己的代码会更好。
表 1 列出了 400 MHz Virtex-5 FXT PowerPC 440 处理器、软件仿真以及与该处理器相连的 200 MHz 双 APU-FPU 的基准数据,透过该表可清晰了解 APU-FPU 执行浮点密集代代码的性能表现。
表中所列数据是赛灵思用于评估处理器浮点单元性能的一组基准数据的子集。平均而言,软 FPU 可比软件仿真快6倍,而单 FPU 可比双 FPU 快13倍。
在浮点占主导地位的情况下,可通过优化代码来提高软 FPU 的性能,以充分利用 FPU 管线。然而,通过实施循环展开、限度地延长 FPU 寄存器中常数的保留时间,以及交叉存取其他代码与浮点指令,设计方案的性能可得到显着提高。在本例中,优化滤波器代码比未经优化的代码快 3.8 倍,比软件仿真快 30 倍。
总之,Virtex-5 FXT 借助其 PowerPC 440 处理器可为嵌入式应用提供众多选择。您可在有无 FPU 的情况下执行设计方案、用性能较高的 FPU来替代软件仿真技术、为 Virtex-5 FXT 量身定制处理能力资源。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。