嵌入式处理器应用是完全嵌入或包含在控制设备内的特殊系统。与通用PC不同,嵌入式系统要执行预定任务,因此有一些特殊要求。
当今的系统设计人员面临许多挑战,特别是面临加快差异化产品上市速度的压力。此外,在高度竞争的全球市场环境中,提供更强大的功能和降低材料清单成本是关键。快速配置处理器及子系统单元的能力可帮助加快系统处理创新并克服许多设计障碍。
对于采用赛灵思FPGA的专用处理解决方案来说,首先要选择处理器。由于每个应用都有独特要求,因此处理器及相关系统的可配置能力对于嵌入式处理器设计非常关键。那么到底是需要软件处理器内核还是硬处理器呢?
图 1.MicroBlaze处理器构建模块
在FPGA内晶体管级实现的硬处理器具有许多优点,包括速度和性能。Xilinx Virtex?系列中的一些产品中提供了PowerPC?405硬处理器。
MicroBlaze" title="MicroBlaze">MicroBlaze? 或 PicoBlaze? 等软处理器内核是采用HDL语言编写并利用可用的FPGA资源实现的。软处理器内核也具有许多优点,特别是可移植性和可配置能力。32位RISC MicroBlaze软处理器内核可在Spartan? 和 Virtex系列器件中实现。
使用MicroBlaze软件处理器内核,可以对其进行定制来满足目标应用要求。有两种版本的MicroBlaze软处理器内核可供选择:较小的三级流水线MicroBlaze v4.0内核对于成本敏感的应用非常理想,而新的五级流水线MicroBlaze 5.0内核则针对注重性能的系统。
考虑到嵌入式处理的重要性,赛灵思公司的创新体现在多个层面。例如,Virtex-5中的六输入LUT等结构可帮助提高频率、降低功耗并提高逻辑密度。新的MicroBlaze 5.0架构则可帮助获得更高的性能水平。可选的外设和存储器控制器能够优化数据流。由紧密链接的编译器、调试器、仿真器、配置器(profiler)、库,以及来自越来越多合作伙伴的实时操作系统组成的套件为嵌入系统开发提供了全面支持。
MicroBlaze 5.0内核简介
第五代五级流水线MicroBlaze内核针对基于Virtex FPGA的高性能而优化。该内核与前一代保持二进制兼容。赛灵思在这一新版本中增加了更多选项,性能和灵活性都提高到了一个新的水平。
处理器子系统的拓扑是区分嵌入式设计的主要标志。赛灵思的MicroBlaze内核提供了足够的灵活性,允许用户定制内核本身、接口、外设和存储器资源。MicroBlaze内核提供了功能强大的基础架构和丰富的可配置选项,如图1所示。白色模块是基本处理器功能,是基本指令集架构的关键单元。灰色模块代表了可选功能,如FPU、除法器、乘法器以及桶式移位器等。同时还提供大多数应用通用的其它可选可配置单元(如缓存大小)。
二进制后向兼容能力很重要。每个MicroBlaze内核版本都建立在其前一代处理器的同一指令集架构(ISA)之上,因此软件移植所需要的工作量很少。保持二进制代码兼容性和编程模型,同时增加下一代功能,对于保护并维持用户在应用代码方面的投资非常关键。
那么新的MicroBlaze 5.0处理器流水线级对IP和接口有什么作用?答案就是遗留IP被保持,IP驱动程序没有受到影响。
更顺畅的流水线
五级流水线MicroBlaze内核填补了三级流水线MicroBlaze v4.0处理器和功能更强大的PowerPC 405处理器之间的差距。当针对高性能而配置时,MicroBlaze 5.0嵌入式处理器在Virtex-5" title="Virtex-5">Virtex-5 LX器件上的运行速度为210 MHz。为了获得更快的速度或减少每条指令执行所需要的时钟周期数(CPI),赛灵思将通常采用的三级流水线扩展为五级流水线,如图2所示。这一变化使得MicroBlaze 5.0内核可将CPI降低到1.25,比先前的版本提高了25%。
为了获得更低的CPI数值和更高的时钟频率,必须扩展流水线。前一版本MicroBlaze软处理器内核中拥挤的三级流水线在MicroBlaze 5.0内核流水线中扩展到执行、存储器读取和写回等过程。三级流水线MicroBlaze内核仍然是不错的软处理器引擎,但更适用于成本敏感的应用。五级流水线的新版MicroBlaze内核稍微变大了一些,但执行代码效率更高,更适用于要求高性能的应用。
更长的流水线级可以获得更大的指令吞吐能力。对三级流水线MicroBlaze内核,加载、存储、桶式移位、乘法、快速单向链路(FSL)PUT以及GET等功能就使三级流水线不堪重负了,从而必需要两或三个周期才能完成操作。而在五级流水的MicroBlaze 5.0内核中,加载和存储成为单周期指令,而其它多周期操作,如果不依赖于未结束的计算结果,没有资源冲突或访问冲突的话,也可以在单个周期内完成。当然,无论流水线长度如何,真正多周期的运算操作,如FPU或除法指令,仍然需要多个时钟周期来完成,对这些指令无法加速。
表1给出了三级和五级流水线MicroBlaze 内核的性能和功能差异。
这意味着什么?
对于嵌入式系统设计人员来说,拥有一个五级流水线的处理器真正意味着什么呢?这依赖于所执行的代码或指令组合类型。请注意,嵌入式代码是装载、存储以及许多其它汇编指令的组合。如果目标是减少(优化)程序的执行时间,则可以减少指令数量、缩短时钟周期(提高Fmax)或CPI。
简单来说,就是必须让T尽可能地小:
T= IE x CPI x CP
其中:
T = 程序执行时间
IE = 执行程序中的指令数量
CPI = 每条指令所需要的平均时钟周期数量
CP = 时钟周期
特点 |
MicroBlaze Cores for EDK 8.2 |
||
4.0版本 |
5.0 版本 |
|
|
流水线深度 |
3 |
5 |
|
最大整数性能 |
166 DMIPS |
240 DMIPS |
|
本地存储器 |
0或 2 - 128 KB |
0 或2 - 256 KB |
|
乘法器,桶式移位器 |
可选 |
可选 |
|
除法器 |
可选 |
可选 |
|
协处理器接口 |
FSL |
FSL |
|
数据和数据缓存 |
0或 2 - 64 KB |
0 或 2 - 64 KB |
|
专用缓存接口 |
Cache Link |
Cache Link |
|
浮点单元 |
单精度 |
单精度 |
|
最大FPU性能(峰值) |
33 MFLOPS |
50 MFLOPS |
|
调试接口 |
Debug + Trace |
Debug + Trace |
|
目标FPGA器件 |
Virtex-4, Spartan-3E |
Virtex-5 |
|
表1:MicroBlaze内核比较
以210 MHz的速度运行在Virtex-5 LX 器件上,MicroBlaze 5.0 的CP当然更短。新架构的CPI值更低,因此在执行Dhrystone基准测试时,处理器可以获得1.15 DMIPS/MHz的性能。这一配置要求启用桶式移位器和硬件乘法器选项,在使用Virtex-5 XC5VLX30-3 FPGA时需要占用960个LUT。
Dhrystone是一个综合基准指标,并不一定能够准确地表征当今的许多嵌入式应用。前面我们提到过处理器总体性能改进与依赖于指令混合的五级流水线相关。因此我们尝试以一系列内部“近实时(near-real)嵌入式应用”基准来看一下结果。
当使用诸如ADPCM编码/解码等电信基准时,五级流水线MicroBlaze内核的性能比三级流水线MicroBlaze 内核提升1.6% 至 5.2%。当采用包含AES编码/解码等运算的面向安全的应用时,五级流水线MicroBlaze内核的性能比三级流水线MicroBlaze 内核提升约30%。
AES编码/解码基准中的指令序列中有许多装载或存储等操作,这些指令对其它大运算量指令的依赖不怎么强,因此在五级流水线处理器中运行效率比较高。每个应用的具体性能提升都有所不同,要根据代码所生成的指令混合比例才能理解这一点。
除了MicroBlaze微架构中的改进,赛灵思还改进了许多存储控制器和外围模块。例如,特殊的缓存接口链路绕过了总线互连,直接从存储控制器馈送到MicroBlaze指令和数据缓存。在另一例子中,以太网相关的外设有多种选择。如图3所示,诸如检验和分流、数据重组或FIFO逻辑等优化都减轻了处理器内核的负担。再一次,设计人员可根据应用需要灵活选择合适的选项。利用面向赛灵思FPGA构造的软处理器内核和嵌入式开发套件(EDK)IP就可以做到这一点。
其它新特性?
设计人员可以选择每个缓存线四或八个字宽来帮助提高缓存性能和命中率(hit/miss ratio)。从外部存储器猝发传送较长的字序列特别有效,如果指令代码或数据“构造良好”和线性的话。尽量从本地缓存执行最好。我们在EDK中提供了剖析工具帮助您精细调整存储器缓存子系统。
赛灵思还增加了处理器版本寄存器(PVR)存储标记或处理器ID。在多内核或多处理器系统中,这非常有用。你可以选择在设计中不使用PVR、只使用一个PVR、或者全面的PVR配置。如果选择一个PVR,内核将有一个8位ID标记。你可以为其指定一个地址,以及处理器配置的基本信息。如果选用全面的PVR配置,在MicroBlaze多内核系统设计中,当系统询问每个内核时,每个结点可以提供更多的配置信息。
MicroBlaze 5.0 和 MicroBlaze v4.0内核都有完全集成的IEEE754兼容单精度FPU。配置了FPU的MicroBlaze 5.0内核在Virtex-5器件中200 MHz时可达到50 MFLOP,使用的资源为1,650 LUT(包括FPU和MicroBlaze内核)。在我们运行的一些实际应用测试中,MicroBlaze内核加FPU与MicroBlaze运行软件仿真浮点代码相比,FIR代码性能提升约40%,FFT代码提升约16%。
最后,我们做了一些易用性方面的改进。为方便编程,我们在MicroBlaze 5.0 ISA中实现了模式比较代码。我们还提供了处理器状态寄存器,包括一系列状态和使能位,在系统复位时可以自动配置。
第五代MicroBlaze内核在第五代Virtex FPGA器件中实现
我们一直在谈论流水线架构,现在我们来看一下FPGA构造的影响。与前一代Virtex系列产品相比,采用65nm工艺的Virtex-5(采用6输入LUT结构),功耗可降低约35%,工作频率提高约30%。MUX密度提高了一倍,LUT RAM密度是原来的4倍,同时还拥有了更多灵活的逻辑模块。
嵌入式处理内核如此重要,以至最新的FPGA芯片必须考虑到其架构需要。因此,利用Virtex-5 FPGA可以达到较高的性能和尺寸指标。例如,如果不选择任何MicroBlaze选项,在Virtex-5 XC5VLX30-3 器件中实现MicroBlaze 5.0,只需要800个LUT,Fmax达220 MHz。与此相比,在Virtex-4 XC4VLX40-12器件中则需要使用1,110个4输入LUT,Fmax达170 MHz。
系统部分包括MicroBlaze内核和32-Kb缓存、UART、定时器、中断控制器、存储控制器、以及三个不同的以太网控制器配置之一。
图 3.使用MicroBlaze 5.0内核和一些改进后网络外设的网络系统性能
结论
MicroBlaze 5.0集更高的性能和灵活性于一身。FPGA构造、微架构和处理器子系统创新,这一切共同提高了MicroBlaze的性能水平。与前一版MicroBlaze 相比,嵌入式处理器的CPI性能提高了25%,DMIPS性能提高45%,FPU峰值性能提高了50%。
由于提供了更多的处理器选项和处理器类型供选择,因此灵活性进一步提高。现在有两种版本的MicroBlaze软处理器内核可供选择:传统的低成本三级流水线MicroBlaze v4.0内核和新的针对性能而优化的五级流水线MicroBlaze 5.0内核。两个版本的内核都得到EDK开发套件的支持。EDK套件包括了Platform Studio IDE、Platform Studio Software开发套件、板支持套件、硬件/软件IP库、处理器以及其它工具。MicroBlaze内核没有沉没工程成本(NRE),不需要许可和使用费用。