今天给大侠带来FPGA Xilinx Zynq 系列第十篇,本篇内容目录简介如下:
4. 芯片比较(“ 为什么我需要Zynq”)
4.1 芯片选择的条件
4.2 比较一:Zynq 对 FPGA
4.2.1 MicroBlaze 处理器
4.2.2 MicroBlaze 单片机系统
4.2.3 PicoBlaze
4.2.4 ARM Cortex-M1
4.2.5 其他处理器类型
4.2.6 总结说明
本系列分享来源于《The Zynq Book》,Louise H. Crockett, Ross A. Elliot,Martin A. Enderwitz, Robert W. Stewart. L. H. Crockett, R. A. Elliot, M. A. Enderwitz and R. W. Stewart, The Zynq Book: Embedded Processing with the ARM Cortex-A9 on the Xilinx Zynq-7000 All Programmable SoC, First Edition, Strathclyde Academic Media, 2016。
芯片比较(“ 为什么我需要Zynq”)
就像处理器或FPGA可以用于多种不同的问题一样,Zynq 也是这样。适合于 Zynq 的应用有很多,并不单一。可能的应用包括有线和无线通信、汽车、图像和视频处理、高性能计算,还有不计其数的其他应用。稍后我们会在第 5 章中更仔细地讨论其中的某些应用。
在那之前,有必要和其他可用的芯片比较一下 Zynq 的特性,这样就能清晰地理 解它对于这些可能的应用的适用性。要考虑的因素有并行处理资源、处理能力、带宽、延迟和灵活性。除了架构方面,还有重要的实践和商业考量要做考虑,包括物料表 (Bill of Materials,BOM)成本、物理尺寸和功耗。
接下去的几节,我们要拿其他的处理器和 FPGA 来和 Zynq 做比较。要做三个比 较:Zynq 和 FPGA、Zynq 和处理器以及 Zynq 和处理器与 FPGA 的组合。最后一种比较用了一种等价于 Zynq 的直接用分立元件搭的组合。在每种比较中,都会观察到Zynq 具有大量的优势。
在本章最后,我们要介绍在 Vivado 软件中对把软件功能快速移植到硬件实现上的特别支持。我们会看到这样的 “ 高层合成 ” 方法有助于快速实现硬件和软件部分合理的划分,从而能充分利用 Zynq 的架构。
4.1 芯片选择的条件
在开始将 Zynq 与其他芯片进行比较之前,有必要简单概述一下要评估的参数。这些参数可以被分成 5 个主题类目,如表 4.1 所示:
表 4.1: 在选择芯片时所涉及的因素
某个特定的设计任务的技术和商业需求会要求这些因素有不同的优先级。换句话说,对于 A 公司的 X 计划 (可能是设计地面军用雷达系统)最重要的指标,和 B公司的 Y 计划(在开发管理绿色建筑用的低成本嵌入式传感器结点)可能是不一致的。我们稍后会在第 5 章深入讨论应用问题和相关的考虑。
尽管存在上述的现象,有一个因素通常会和技术性能指标一起位于评价指标的前列,那就是成本。这包括:(一)BOM 成本和(二)在基于目标芯片做产品开发中所涉及的开发成本。本章接下去就要讨论的就是,Zynq 的能力是可替换掉两个芯片,这样就能节省成本。而且,由于有新的 Vivado Design Suit 和相关的流程所带来的极大的效率提升,就使得比以前的方法更节省开发时间和成本。
4.2 比较一:Zynq 对 FPGA
需要重点重申的是,Zynq 的可编程逻辑部分和 FPGA 里的是等价的。较小的 Zynq 芯片里的 PL 对应于 Artix-7 FPGA,而较大的等价于 Kintex-7。我们接下去几页的讨论会关注于在这些芯片上实现嵌入式处理的几种可能。
在嵌入式应用中,常常会需要一个或多个处理器来组成系统、支持软件并协调 与外设部件的交互。FPGA 普遍用于实现软处理器已经十逾年了,由于这些芯片被部署于更为精密的应用上,因此对基于处理器的系统的要求也不断增长。
正如第 2 章中所提到的,Zynq 架构包含了一个硬处理器,但是也还是可以用可 编程逻辑来构建一些软处理器出来。目前标准的 FPGA 是由不带硬处理器部分的可编程逻辑组成的,因此有理由来更深入地探究一下软处理器的可能性。这会有助于我们理解为什么 Zynq 可能被认为在某些应用上,比有软处理器的全 FPGA 解决方案要“ 更好 ”。
实际上,这里的问题是:“ 什么是 Zynq 可以做,而有软处理器的 FPGA 不能做 的?”. 为了做出正确的比较来回答这个问题,我们首先必须定义可用的标准 FPGA 软处 理器。这里有一个主要的型号 MicroBlaze,它是一个 32 位软处理器,并在 Xilinx工具流中有丰富的支持,另外还有其他一些处理器。
?
4.2.1 MicroBlaze 处理器
MicroBlaze 是一个主要的软处理器类型,在 Xilinx 的 ISE 和 Vivado 的大多数新版本的设计流中都支持。如果需要,单个芯片上可以部署多个 MicroBlaze。无论是在商业的还是其他的系统设计中使用 MicroBlaze处理器都没有隐含的许可成本。
配置
使用软处理器的好处之一是可以灵活配置。MicroBlaze 有很多不同的架构选项,可以根据目标应用的需求纳入或排除出处理器的具体实现中。比如,如果系统不会做浮点运算,FPU 就可以被排除,这样就减少了在 FPGA 上实现这个处理器时所需的面积 (也就是所需的资源的数量)。在一般情况下,MicroBlaze 的配置可以定制来优化工作频率、性能或范围;或者说,它可以被定义成实现这三者的合适的平衡。这个可以通过 Vivado 中的配置精灵轻易实现。
MicroBlaze 的资源使用是随配置而变化的,从 “ 最小面积 ” 类型的大约 900 个 LUT、700 个 FF 和 2 个 RAM 块,到 “ 最大性能 ” 配置的大约 3800 个 LUT、3200个FF、6个DSP48E1和21个RAM块。图4.1显示了在Zynq XC7Z020上这些的例子布局。
图 4.1: “ 最小面积 ” (上)和 “ 最大性能 ” (下) 的MicroBlaze 软处理器实现的布局图
前面提到过,所实现的 MicroBlaze 实例的数量也是可配置的,这就给灵活性又 增加了另一个维度。比如,和 (双核)的 ARM Cortex-A9 处理器最接近的等价品可 以由两个 MicroBlaze 实例组成。
处理器性能
MicroBlaze 可以达到的最高频率取决于它的配置,是可以定制的,也和其他因 素诸如位置及到 PL 的路由有关。给个大致的指标,典型的 MicroBlaze 配置可能达到 PL 的最高频率的 70% 左右,也就是最高等于 200MHz 到 300MHz —— 对比之下 ARM 处理器的最高工作频率是 800MHz 到 1GHz。
处理器性能通常是用基准测试(benchmark)来评估的。为了量化 ARM CortexA9 和 MicroBlaze 的性能,从而来比较它们,可以用两种广泛使用的基准测试。
- DMIPs (Dhrystone,每秒百万指令, Millions of Instructions Per second) [19] — DMIP 数字表示了运行 Dhrystone 标准测试程序时,这个处理器每秒能做的运算的数量。Dhrystone 是合成的应用(就是说并非表示真实的工作),特别设计通过使用处理器有代表性的运算来检验处理器。
- CoreMark 分值 [6] — CoreMark 用一个简单的数值的 “ 分值 ” 来表征处理器的性能,这样就可以直接和另一个处理器的分值做比较了。CoreMark 程序提供了和 Dhrystone一样的目的,但是它的测试内容更专门针对嵌入式处理器用途。
DMIPS 和 CoreMark 都是处理器能力的量化测量指标(而不是计算得到的)。尽 管它们都是通过在所评估的处理器上运行特定的、免费提供的测试程序来得到的,两者之间还是有一些基础性的差异的。由于某些原因,CoreMark 一般被认为是比较老的 Dhrystone 方法更为稳固和实际,而且确实 ARM 也推荐使用 CoreMark[1][5]。
根据 Xilinx 文献 [8],表 4.2 中所列的三个 MicroBlaze 配置,当 PS 时钟频率为 1GHz 时,可以在 -3 级速度的 Zynq 上实现不超过 260DMIPS,而那个双核 ARM 预计可以达到 5000DMIPS (每个核 2500DMIPS)[17]。这表明 ARM 处理器能比单个MicroBlaze 核提升大约 20 倍的性能。不过使用 DMIPS 指数的时候要稍微有点小心,这些指数被认为是 “ 最佳状态 ” 下的结果。
表 4.2: 在 Zynq 上,MicroBlaze 和 ARM Cortex-A9 的最高性能 (DMIPS)
比较 Zynq ARM 处理器和 MicroBlaze 处理器也可以得到 CoreMark 指数。不过, 在写本书的时候,最新可用的 MicroBlaze 分值是从 Virtex-5 的 FPGA 实现上得到的,而不是 Zynq 或 7 系列的 FPGA,而且只是单个 MicroBlaze 核的 [6]。表 4.3 所给的数据标明了工作频率 (另外也有 CoreMark/MHz 的指数)。这些数字表明 Zynq上的 ARM Cortex-A9 处理器和 MicroBlaze 的能力有巨大的差异。
表 4.3: Zynq 上的 MicroBlaze 和 ARM Cortex-A9 的最高性能 (CoreMark)
其他特性和因素
MicroBlaze 和 ARM Cortex-A9 处理器之间有几个重要的差异。其中包括:MicroBlaze 是单核处理器而 ARM 是双核的;ARM 的指令集比 MicroBlaze 丰富;MicroBlaze 的 FPU 只实现了单精度浮点,而 ARM 还支持双精度;以及 MicroBlaze的 cache 的配置实现了单级 cache,而 ARM 有两级而且容量更大。这些架构及功能上的差异也是导致两种处理器类型之间性能差异的原因。
把所有这些因素综合起来考虑,明显 ARM Cortex-A9 处理器的配置是优于 MicroBlaze 的。尽管如此,MicroBlaze 对于很多应用还是非常恰当的选择。单就Zynq 而言,MicroBlaze 可以成为 ARM 处理器有用的 “ 副官 ”。比如,MicroBlaze可以用来控制 PL 系统功能的一部分。因为是软资源实现的,如果需要而且逻辑资源足够,还可以在 PL 中实现多个 MicroBlaze 处理器。这些因素加上它们固有的可配置性,使得 MicroBlaze 是非常灵活的处理器资源。
对 Zynq 的 ARM 处理器和 FPGA 上实现的 MicroBlaze 处理器做了简单直接的比较 之后,明显 ARM 的处理器能力和性能具有极大的优势。因此,可以看出 Zynq 给处理器密集型应用的实现带来了一个清晰的优势:它提供了标准 FPGA 无可企及的性能级别。
?
4.2.2 MicroBlaze 单片机系统
2012 年出现了 MicroBlaze 的轻量级版本:MicroBlaze 单片机系统(MCS)[7]。这是设计用于控制器应用的,具有一个包含面积优化的 MicroBlaze 处理器的固定的架构,加上数据和程序存储器及一组标准的外设。尽管基本架构是预先定义的,还是具有某些低层次上的配置选项,会影响到 FPGA 上 MCS 的实现的版图。大致的成本是 550 - 700 个 LUT 和 300 - 600 个 FF,如果加入了调试功能则还会更多 [7]。时间性能则与具体的目标芯片和系统实现的其他因素有关。
和 MicroBlaze 处理器的情况一样,MCS 也是兼容 Zynq PL 的。MCS 实例可能构 成基于 Zynq 的 SoC 设计的一部分,通常用于实现由运行在更强大的 ARM 上的应用所监管的底层控制功能。
?
4.2.3 PicoBlaze
PicoBlaze 是单片机而不是处理器 (就是说它在处理器部件之外包含了其他功能,并支持一组有限但有用的操作)。不过,为了完整起见,值得把 PicoBlaze 放进来,来看和它名字很像的 MicroBlaze 之间有什么差别。这个 8 位的软单片机 IP具有非常小的版面 (几十个 slice 加上程序存储器),并能实现有限状态机和其他简单控制功能 [10]。PicoBlaze 的设计可以直接从 Xilinx 网站下载得到,文件包里包括 PicoBlaze 控制器的核心 VHDL 和 Verilog,加上可选的功能,比如 UART 和 SPI接口。
作为一个 8 位的控制器,PicoBlaze 的功能是有限的,也无法与一个 Zyna 的 ARM 处理器相提并论。不过,PicoBlaze 的实现可以在 Kintex-7 的逻辑片上运行到超过 200MHz,大多数情况下和它可能要控制的逻辑部分一样快 [4]。因此,PicoBlaze 可以被看作是另一种有价值的资源。这个紧凑的控制器有可能在基于Zynq 或 MicroBlaze 的嵌入式系统中发挥有用的作用,来做底层控制的功能。
?
4.2.4 ARM Cortex-M1
ARM 提供了一个 “ 软核 ” 单片机,ARM Cortex-M1,被优化于做 FPGA 实现。因此在 Zynq 中,这个核可以在芯片的 PL 部分实现出来,来辅助 ARM Cortex-A9 处理器。和 MicroBlaze 类似,这个 Cortex-M1 的配置可以根据用户的需求定制,意味着需要用来实现这个核的逻辑资源可以做到最小。
?
4.2.5 其他处理器类型
还有一些其他的 FPGA 嵌入式处理器值得了解,它们可以被分类为软的和硬的处理器。我们已经详细讨论了 Zynq ARM 处理器 (硬处理器)和 MicroBlaze (软处理 器),下面我们将在这两种不同分类下简单回顾其他处理器。
软处理器
MicroBlaze 是 Xilinx FPGA 和 SoC 设计中最流行的软处理器,因为对它有集成的和扩展的支持,也是因为它出色的实现和性能。不过,这并非是唯一的软处理器,还有第三方的处理器 IP 可以替代它,或是满足某个垂直领域的专用设计需要。
作为例子的第三方处理器包括 LEON4 和 OpenRISC。举例来说,LEON4 的产品数 据表明它的性能是 1.7DMIPs/MHz 或 2.1 CoreMark/MHz,在 Virtex-5 芯片上可以达 到 125MHz,而所需的面积是 4000 个 LUT[3]。OpenRISC 是一个由 OpenCores 主持的合作开源项目,性能和面积统计数据尚未发布。这两种处理器核都并非只能用于FPGA,也可以用于 ASIC 实现。OpenSparc 项目也是这样。OpenSparc 是 SunMicroSystems 开发的开源的、64 位精简指令集计算机(Reduced Instriction Set Computer,RISC),它的一个特殊版本是专门用于 FPGA 实现的。迄今为止 OpenSparc有过两个主要的版本:T1 (2006 年)和 T2 (2008 年)。OpenSparc 的 64 位架构使它和其他一般是 32 位的软处理器截然不同,可是尽管研究者们很感兴趣,它还没有被业界广泛地接受。这可能反映了更成熟的 32 位处理器满足了当前的基于 FPGA 的嵌入式处理器的主要需求。
硬处理器
这里要讨论的唯一的硬处理器是 IBM 的 PowerPC®,它曾被用在 Virtex-II Pro (2002 年发布 [11])和后续的 Virtex-4 及 Virtex-5 的部分型号中作为硬处理器[12][13]。这些 FPGA 中每片带有一个或两个 PowerPC (PPC)单元。
和 Zynq 中的 ARM 处理器类似,PowerPC 硬处理器实现的性能比同一芯片中的逻辑部分中实现的 MicroBlaze 要高级。拿最高级的配备了 PowerPC 的 FPGA 为例,在Virtex-5 里的 PowerPC 可以实现高达 1000DMIPS(也就是说用较大的两单元的芯片时可以达到 2000DMIPS),而 MicroBlaze 的性能是大约 240DMIPS[14][15]。拿这些指标与表 4.2 中 Zynq 的那些比较,就可以看出 Zynq 的 ARM 处理器具有超过 Virtex-5 里的 PowerPC 两倍的处理器能力。由于缺乏公开发布的性能指标,在写本书的时候还无法直接用 CoreMark 基准测试比较。
过去基于 PowerPC的嵌入式解决方案让人们觉得在 FPGA的通用逻辑旁组合硬处 理器是值得的,因此它们可以被看作是 Zynq 的全可编程 SoC 的直系长辈。那些旧芯片,尽管在写书的时候还在生产,但是已经不被最新的设计工具和流程所支持了,所以对于新的设计并不推荐,Zynq 更好。Zynq 代表了新一代的技术,在硬处理器性能、功耗、可编程逻辑部分、芯片集成和工具支持上有了显著的提升。
?
4.2.6 总结说明
本节我们比较了 Zynq 处理器和实现了软核处理器的其他 FPGA。要指出的是有多种类型的软处理器可用,包括 Xilinx 提供的核以及第三方提供的。当然,也可能经过巨大的设计努力来自己设计自己的软处理器。
迄今为止最主要的软处理器类型是 Xilinx 的 MicroBlaze,它具有可定制的功能,并可以被配置来优化它的处理器性能、工作频率或面积(或这些指标的组合)。MicroBlaze 被集成进了 Vivado,具有丰富的支持。尽管 MicroBlaze 具有大量有用的特性,但是还是无法提供与 Zynq 的 ARM Cortex-A9 处理器相提并论的处理器性能。不过单就 MicroBlaze 本身而言是非常灵活和有用的资源,这两种不同的处理器类型应该被视为互补的。图 4.2 是本节所作的架构比较的简要图形化总结,其中MicroBlaze 被用作 FPGA 上实现的软处理器的代表。
图 4.2: 带有软处理器 (MicroBlaze)的 FPGA 与带有硬处理器 (ARM)和可选的软处理器 (MicroBlaze)的 Zynq 芯片的比较
我们也讨论了其他基于 FPGA 的嵌入式处理器,可以看出 Zynq 的处理器部分比之前的基于 FPGA 的处理器技术,就是那些基于 PowerPC 的,有了显著的提升。图4.3 是基于已公开的性能指标(以 DMIPS 为单位)做的处理器类型的图形化比较。
图 4.3: 硬和软处理器的性能比较 (只是以最佳情况数据定性说明)
可以看到,左边和中间的组表示的是硬处理器,而右边的组对应的是一种软处理器。显然在两者之间存在巨大的性能差异。基于 Zynq 的 ARM 处理器 (最左边的组)可以工作到高达 866MHz(在基于 Artix 的芯片上)或高达 1GHz(在基于 Kintex的芯片上) ,形成了两个不同的性能级别。与最近在 Virtex-5 FPGA 里嵌入的 PowerPC 硬处理器相比,它们的性能都有了显著的提升,而这些 Virtex-5 FPGA 实 际上已经被 Zynq 所取代了。
如果需要,Zynq 中的高性能的 ARM Cortex-A9 硬处理器可以和 MicroBlaze 或 其他软处理器一起有效地形成两层处理器结构。这就是图4.2的右侧所描绘的架构。
第十篇到此结束,下一篇将带来第十一篇,芯片比较(“ 为什么我需要Zynq?”)之比较二:Zynq 对标准处理器等相关内容。欢迎各位大侠一起交流学习,共同进步。
END
后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。
大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!