处理器嵌入在FPGA中,需要什么样的温床?
的确,在推出Nios soft processor两年之后,在我们周边也开始陆续有开始吃螃蟹的了。但是,还是回到结构的老话题上,来谈论一下为什么这个时候出现了由FPGA制造商推出的CPU,实际上在1997年,就已经有什么FPGACPU的说法甚嚣尘上。而且也有人在Xilinx和Altera上面分别实现了原形。
开始在FPGA嵌入大块RAM的时候,很多人抨击这种结构,只是一个动物园里面的老虎,实际上就是和猫差不多的杀伤力。不可以否认,它不如分布式RAM来的灵活,但是它可以作为一些Cache(高速缓冲存储器),或者是紧耦合的RAM,还有就是它的规模在容量增加的时候,仍旧有很好的速度,那就可以作为CPU的Cache了。 Altera的RAM都是做在同一列的,很方便级联。另外总线宽度也很容易更改。
还有就是CPU里面总是有很多总线,内部总线。由于丰富的行联线的存在,在几列行资源里,就可以轻松集成RAM,CPU要的逻辑资源,以及总线的结构。这样,CPU也就顺利的在FPGA的世界里粉墨登场了。虽然起初只是16bit的。
2002年,Altera的开发软件已经趋于稳定,可以说已经很适合自己产品的结构,而且布线效率非常高。同时Altera的Nios也上升为NiosII,这个时候NiosII已经蜕变为美丽蝴蝶---一个32bit的RISC CPU(精简指令集计算机)。而且Altera又采用了非对称的机构实现了革命性的Avlon互联体系。关于这个体系的由非对称可以覆盖对称的,或不对称性的应用,我们以后详细聊。总而言之。如果再有一款更好结构的低成本的FPGA,那无异于在FPGA市场上刮起一场飓风!
Xilinx有Microblaze,其他的有ARM的核,实际上FPGA上实现的CPU,不是由一个CPU的内核来决定他的应用,而是谁有最好的互联体系,能和外围设备,和FPGA中的RAM,乘法器,以及其他定制逻辑更好桥接,粘合成一个SOPC,那才是真正意思上的软核。那究竟什么样子才好呢?
可以增加多个核来弥补自己速度上的缺陷,提高更多的并行处理 灵活的总线结构,可以连接高速,慢速,master,salve的模块 可以将客制化的逻辑,有效集成到CPU的指令体系。 有面向不同应用,可以进行裁剪的CPU core 方便片上调试的环境 可以快速自动实现外设资源冲突仲裁的机制 可以实现以软代硬,或者以硬代软,在软硬间转化速度与资源的偏重 如果有以上的特性,那相信留给设计者的只有是无限的遐想空间。
FPGA上的CPU,有太多的元素,你知道吗?
我们从哪里开始讲呢,准备从算盘开始讲CPU,很多人说,我是不是太无聊了呢?听我明天说给你听!看似简单的算盘,绝对孕育着无比的大智慧。看是简单的Avalon,也同样有很多玄机。那就是变变变。
来自Xilinx的消息,关于CPU在FPGA设计中的一些预测
神奇的算盘
上回说到算盘。实际上大家应该都见过这个了不起的发明,只是他出现在你的记忆中的次数越来越少,就忘记了,实际上,很多伟大之处在很早就有历史可以证明的。看看你平时见到的算盘。
算盘的妙处和Altera的LE排列布局非常相似,或许是巧合吧。 但是这里的偶然也有些必然。或许我们有一天说,FPGA的结构最早是源于我国的。哈哈,玩笑啊。 可以增加多个核来弥补自己速度上的缺陷,提高更多的并行处理 一个算盘是算盘,级联起来还是算盘,可以横向,也可以纵向 灵活的总线结构,可以连接高速,慢速,master,salve的模块 算盘是平行也是并行结构,上面的有两个珠子,下面5个,2也可以代表10,5也可以代表10,同时,进位时也可以暂时存储在高档位,也可以留在本档。进位链和Altera LE的进位布局也是一样。 看一个更久的照片,当然这个也可以代表Cyclone的layout了。
Avalon的奥秘
总线结构:
全交叉,部分交叉型(适合FPGA中的嵌入总线!) Xilinx的是共享总线型。仍旧属于传统型设计,只是将其搬移到了FPGA中。
处理器接口主要抽象为:
共享寄存器 RAMs FIFOs
回头看Avalon:
上面看起来,这两个softcore都差不多,看了下面的特点,你就有答案了。 Selecting HardwareArchitecture Bus achieve relatively high clock frequencies expense of little no concurrency common arbitration unit. all masters compete for access to Full Cros***arSwitch-NiosII Avalon concurrent transactions flexible high throughput large multiplexers more masters and slaves are added avoid large cros***ar switches Partial Cros***arSwitch--Avalon is okey connectivity to a subset of the slaves provides the optimal connectivity operates at higher clock frequencies interconnect fabric consumes fewer resources. ideal for ASIC or FPGA interconnect structures slave side arbitration. Streaming-AvalonStreaming Map high speed data transfers point-to-point connections between source and sink eliminating arbitration Dynamic Bus Sizing UnderstandingConcurrency Create MultipleMasters General purpose processors, such as Nios II DMA engines Communication interfaces, such as PCI Express Create SeparateDatapaths Use DMA Engines data width clock frequency more DMA engines Include MultipleMaster or Slave Ports increases the concurrency Create SeparateSub-Systems Increasing TransferThroughput increasing thetransfer efficienc lower frequencydevices can be used Using PipelinedTransfers Maximum Pending Reads Selecting the Maximum Pending Reads Value Pipelined ReadMasters Increasing SystemFrequency strategy introduce bridges to reduce the amount of logic increase the clock frequency. Tatic Use PipelineBridges Master-to-Slave Pipelining Slave-to-Master Pipelining waitrequest Pipelining Use a Clock Crossing Bridge Consequences ofUsing Bridges Increased Latency Limited Concurrency Address Space Translation Reducing LogicUtilization ReducingPower Utilization Reduce Clock Speedsof Non-Critical Logic Clock CrossingBridge Avalon-MM masterports operating at a higher frequency to slave ports running a alower frequency PIOs UARTs (JTAG or RS-232) System identification (SysID) Timers PLL (instantiated within SOPC Builder) Serial peripheral interface (SPI) EPCS controller Tristate bridge and the components connected to the bridge
总线结构是SOPC的最重要的战场,也是区分SOPC是否高效的关键因素!
1--说到SOPC,最基本的集成首先是CPU的内置,但是CPU的有下列因素决定总线结构。
CPU---冯诺依曼结构,CISC体系多采用这种方式,特点,就是指令功能强大,总线结构复杂,堆栈结构设计庞大。 因为要解决所有Master和Salve之间的运算和重写,另外寻址模式非常丰富。 缺点是酒?峁垢丛樱?面积偏大,面积偏大导致这类CPU的频率不能太高! CPU--哈佛结构,总线独立,能够提高并行,基本上以数据流加工为主。 所以DSP,以及一些RISC的体系也很多 。
这里声明,RISC,CISC和CPU结构无必然联系。
简单说来:RISC是以总线结构越少越好,通络尽可能简单。例如大部分指令面向寄存器,然后数据操作多数在寄存器完成。有很多甚至基于堆栈。 共享总线的速度设计与性能总结: 完成相对高的总线频率 相对低廉的成本 不能并行!(这个是缺点) 共用的仲裁结构(缺点,反应速度慢) 所有主设备对从设备的存取都存在竞争关系(同时访问时候) 当然在FPGA中,双向三态的实现是依靠多选一和DFF的隔离来实现的,而且,多数为同步设计。当然在现代分离系统的设计中,已经很早有这样的先例。
例如一个ARM和TI的DSP进行协同的系统,TI DSP中有对总线进行释放的功能机制,释放的时候,可以由ARM来对DSP中的数据结果进行交换,或者是操作参数的更新。然后再将总线控制权返回给主控的ARM.在FPGA中,也是同样的道理。
NIOS II的总线结构Avalon是具有全数字交叉的总线结构,支持多主并发的结构。
FPGA中,由于FPGA中丰富的互联结构,以及FPGA中本身的逻辑胶合的本身设计定位,决定了在FPGA中的SOPC的总线结构:全数字交叉的互联结构是SOPC在FPGA中性能发挥的调节棒!
很多人对此有以下担忧:
仲裁结构复杂, 规模过于庞大 对设计工具要求高(每次互联设计,可能要修改太多东西) Altera采用了一个折中的方式就是部分数字交叉结构。 而且将仲裁机制放在了从端,这样做的好处,就是有冲突访问可能的从设备,就对他增加仲裁,好处: 降低了总线规模 提高并行性 仲裁效率高 没有优良的总线结构,一切都是空谈,有效的机制,可以弥补CPU的性能的低能化!
总线接口的抽象!Xilinx和Altera志同道合
尽管总线接口的抽象不同,但是,不代表总线结构一致。 X是总线共享型,A是数字交叉型。 例如Avalon-MM,Avalon-SM Xilinx是PBv,和Fastlink来对应 MM是意思采用存储地址映射抽象,就是将所有端口定义为可以用内存地址来寻址操作。而SM是代表流媒体数据型,也就是一般和DMA都有一定的联系,当然,也是一种要不就是不断接收数据流,要不就是发送数据流的接口。例如,VGA的数据缓冲,DSP信号数据的输入和输出,例如AD数据的输入,以及DA的输出,同时具有FIFO功能。
并行,并行,再并行。
FPGA中用的设计语言,VHDL,Verilog HDL等,这些都是并行的,FPGA之所以能在很多DSP领域进行大显身手,也是因为他良好的并行扩展性。那同样。在SOPC中,要提高系统的整体性能,还是要并行,并行再并行!
上面就结构已经进行了简单的说明。那么在数据处理的单元上如何设置呢。 1---动态总线宽度的适应。 当你要将32bitNIOS和8bit,或者16bit的系统进行连接的时候,他应该能自动适应! 2--增加多个主控单元,对一些控制进行有效并发。 归纳为三点: 多增加CPU的个数,SOPC支持多CPU,而且现在很多CPU也在发展多核。商用PC已经很成熟了。 多增加DMA的通道个数,这样CPU可以干别的事情,至少数据吞吐加大 增加PCI-e的设备,这样,NIOS,FPGA不方便处理的,可以通过这样的接口进行功能上的折中。当然以后也可以增加RapidIO来和TIDSP进行数据的互换。 3--创建分离的数据通路 4--用多DMA进行辅助。例如
没有新的发明,只是新的组合!
实际上今天很多所谓的创新,也就是一些不同设计元素的合并和组合。 TSMC,在20年前开始代工的时候,有很多人质疑这种方式,实际上这个是一种商业模式的创新。Altera是前期一些Fabless的厂商之一,很多人也怀疑没有自己的工厂?怎么可以做好产品。但是回顾今天,大家不都是走这样的路吗。当然也有一些自己领域的佼佼者,内存,CPU还是自己开灶。 话题拉回,当你一个系统已经不方便的时候,或者是某种功能要求有很突出表现的时候,两个或者多个CPU的系统,或者是拆解再增加必要的子系统。也是一种创新。
分割为多个子系统的好处:
方便管理 由于分割后,从设备可以分在不同的有限个主设备中,提供并行,降低冲突。 从系统之间耦合较松,就是说可以 依靠共享内存,消息传递,信号灯互锁,FIFO等机制进行同步和信息交换。 一生二,二生三,三生万物。。。。。 现在的工具都很方便复制和例化多个功能单元。当你设计好一个上面的系统的时候,你也可以将他们又构成一个模块,然后复制这些模块来达到更大的系统。这种在DSLAM的设计,或者是多路以太网复用到光设备等经常应用。
因此, 一生二,二生三。。。。 当然这种思想是建立在大批量复制功能单元的策略。 另外,还有一种大家熟悉的方式, 就是提高局部的流水动作以提高系统吞吐。你不仅要有火尖枪,同时也要有混天绫。互相配合才是自然之道。
流水的数据操作分为两类: 读流水 写流水
读流水和写流水主要是针对目前的一些存储外设来设计的,就是一个主设备可以在第一读的动作发生,但是没有数据返回的前提下,连续发出多个读的动作,然后在适当的时钟延迟后,连续得到由连续发出读的指令而产生的返回数据序列。好处是,用个图来表达就明白了。
当然了,你可能说,这个说易行难,设计经验不足。没有关系,SOPCBuilder的master和Slave接口,已经将这些都做好了。如果你想自己设计一个,实际知道这样的时序,你也可以的。不外乎就是要做一个读和返回地址的计数器,计数器的差值是在Readdatavalid的返回时候发出的地址数目,当然你也要设计好数据的宽度
ARM Vs Nios II
大家对ARM和NiosII喜欢比较,今天就说上几句。 最快的NiosII (250Mhz)比ARM7快, 最小的NiosII比最小的ARM7要小 另外NiosII已经有了MMU,而且对Linux进行了支持
ARM7是把西瓜刀 NiosII是把瑞士军刀。NiosII做一个分型算法借助C2H,速度是ARM7的400倍,不算慢。但是ARM7的生态资源广,这两个应用实际上是相辅相成。
FPGA三国志-第四篇/工具篇
FPGA的公司实际上换而言之,也可以成为EDA的公司了,只是他们在这方面的能力是否强大而已。这3家公司中,拥有自己HDL的公司只有Altera.可能很多人不太清楚,就是AHDL,当然这种语言的辉煌期已经过去了。这里说这个,绝对不是鼓励大家用这个语言。
这3家主要的开发软件大家都知道,在中国应该以Quartus II用的最广.ISE次之。但是现在这两大软件的外观都已经有些一致的地方了。但是他们近乎同样外观的软件,却还是有很多地方非常不同。
Altera 在2000年前,在日本市场独领风骚。大家知道日本是漫画的国度,他们总是喜欢用图形表达,这可以证明Altera的图形输入做的是炉火纯青。但是,现在都是语言输入为主导了,因此Altera的这个优势才渐渐淡化。但是其他图形界面仍旧有其鲜明的特色,简单容易。
Altera的软件像Canon的相机,很傻瓜,对着景物按个快门。当然也有些地方,你也可以仔细微调。
Xilinx的软件洋洋洒洒,很专业,像部哈苏相机,你在照相前,先成为相机的专家,才能成为设计的专家。有人开玩笑了,这是拿东西来说事。那在这里引用Altera公司一些思想,给大家介绍一下。实际上,这个特点非常容易记忆。大家都知道TIPS这个单词吧,就是提示的意思。那在这里就给你一些提示,让你可以过目不忘!
TIPS---提高设计效能的秘方!
这几天准备一下,尽快让大家看到下面的章节!
从TIPS中的T开始说,FPGA的趋势如下
1--首先说一下眼前的大环境是怎么影响你的设计的。过去的设计规模应该是比较小,一个FPGA工程师,写个状态机,写个好的代码,这个就是相对来说的高手了。但是你要知道这种高手都是关起门来自称老大的。实际出门走多远很难说。因为现在器件的发展速度是很快的。 2---规模的变化 1998---一位当时的PLD的厂商说世界上有1000个宏单元的PLD就可以应付95%的设计了。今天你认为怎样? 1998---最大的FPGA内含10000LEs,今天的CycloneIII的第二小的家伙就是这个身段。 2008年---现今最大的FPGA内含530,000LEs,比1998年增大50倍!你还能用以前的设计方式来应付今天这个庞然大物吗? 3---规模的变化,带来复杂度的提高,调试也成为关键? 芯片规模大的时候,你就会要有些测试工程师的需求。因为人自己总是看不清自己的缺点。 4---一个模块跑个固定的速度,是否可以和其他模块都配合起来,还能保持性能? 目前EDA厂商众口一辞的话:20KLEs规模以上的设计,时序收敛是第一目标
当有问道Xilinx的软件设计者时候 ,他们也承认了这样的事实:
好了,第一个题目诞生了.T-IPS 中的T就是TimeQuest,以前FPGA的规模和设计ASIC不能相比,今天已经可以了。在FPGA中集成很多IP已经不是什么难题了.TimeQuest是依照SDC来进行工作的,SDC,是ASIC中设置约束的工具,换言之,也算是你如何指挥你的软件,将你设计的模块让他们统一协调好时间,然后保证最终的结构是你想要的。你不仅要看到设计,还要跑到那样的速度的时候,他还是你要的功能 ,有人说了,以前没有这样的工具吗?有,但是那不是针对大的设计的。当然大也是相对的,到了一定的规模,就必须使用另外的标准了!什么能帮助你达到时序收敛,什么可以加速你找到哪些地方不满足,TimeQuest!
目前支持这个SDC的有以下工具,当然Quartus支持的最完整。潜在的秘密是,Altera的器件的规模也是最大的了。
Altera -TimeQuest à SDC based Timing analysis Actel – Offers preliminary SDC support Xilinx & Lattice – No SDC support 可能你会问,能不能详细点说一下: TimeQuest是Altera第二代的时序分析工具 你不需要记忆什么语法,完全的GUI界面,而且也支持模板输入功能。 他生成的约束是基于Synopsys的工业标准的。
TIPS中的I是指“递增编译”,就是英文“Incremantalcompile”的第一个字母是I. 刚才说了,当你有时候改动了一部分设计的时候,你以前好不容易调好的时序,可能因为重新改动的影响,而在编译路由后,将没有改动的设计在布局和速度上发生了不期望的改变。那这个递增编译就是干这个的。他可以向制导武器一样,让你指哪里,打哪里。同时缩短编译时间,提高你的工作效率!当然这里绝非这么一句话就可以涵盖了。你也要有设计分离,规划布局等工作。 现在经常有提到我的产品是最好的Price,但是,现在由于系统规模增大,Power也是一个很重要的制约,功耗在某些设计中甚至是第一位的.Quartus中有关于根据Power的要求来智能编译设计的约束。就是TIPS中的P,也就是PowerPlay. 最后一个TIPS中的S就是指Systemlevel,或者是SOPC,因为你的设计可能要有各种接口,外部的,内部的,系统的互联。总线的对接,时钟域的交叉,这些,都可以用SOPC的工具SOPC builder来实现。不用内置处理器也可以。同时要求你在系统级的高度进行设计,这样就提高设计速度。在第三篇中有详细讲。
生产力发展的标志-生产工具,你现在和15年前设计方式的根本改变!
不管A,X,L,哪一家FPGA玩家,这三年来都在开发工具上投入了重兵。此前有网友争论-- Lattice用的是Synplify进行的综合,效果如何如何高。这个论调10年前是天经地义,颠覆不破的真理,但是今天再这样说,绝对偏颇! Synplicity公司不少人后来都转投Altera门下。当时Sy最先得到Xilinx的结构的时候,大力发展所谓物理综合等一系列亮点,但是却对Altera提及甚少,大家都知道Sy的发家史,失去了FPGA厂商的支持,基本上也就失去温床。在2004年QuartusII4以后,Quartus的综合能力就已经与S家的不相伯仲了.Xilinx在10年前收购多家EDA厂商,例如StateCAD,当时用流程图生成状态机的VHDL和其他的一些厂商的时候,Quartus都是建立在自己的固有体系下。如果单独从产品器件上,只有工艺和功耗是未来需要争斗的地方,那么,综合能力和相关路由(就是紧耦合的模块放在一起)能力,以及EDA工具的全面性才是真正FPGA厂商的绝对命门.S家一共有250个软件开发人员.A家可能就远远不止了。 另外Cadence,Synopsys,Magma,Mentor等大哥,也就是卖个综合和核对工具,价值点相信大家已经悟到几分吧。 QuartusII 在今天,作为FPGA摄影大师的工具来说,不仅是精密的哈苏,更是Canon门下Eos MarkII的便捷傻瓜的代表.QuartusII就是今天FPGA的第一生产力
|