在第一篇做先做一个最基本的比较,就是比较Altera的LE和Xilinx的CLB在做数学运算时的速度。
这里我用的是自己设计的一个滤波器, 57阶FIR滤波器, 8比特输入数据, 8比特输出数据, 13比特系数, 滤波器采用直接形式的结构。Quartus II和ISE采用默认的设计,即不加各种约束。
下面是一些比较结果。如有不妥之处,欢迎各位高手指点。
从下面表中的结果来看,Stratix II 和 Virtex IV相比,速度略占优势。不过这跟设计有较大关系,欢迎有不同看法的人一起讨论。
FPGA Platform | FPGA Type | Speed (MHz) | 速度百分比 | 相邻速度等级比较 |
Stratix II | EP2S15F484C3 | 218 | 260% | 114% |
EP2S15F484C4 | 192 | 229% | 119% | |
EP2S15F484C5 | 162 | 193% | ||
Stratix | EP1S10F484C5 | 147 | 175% | 111% |
EP1S10F484C6 | 132 | 157% | 118% | |
EP1S10F484C7 | 112 | 133% | 108% | |
EP1S25F672C8 | 104 | 124% | ||
Statrix GX | EP1SGX10CF672C5 | 143 | 170% | |
Cyclone II | EP2C8T144C6 | 146 | 174% | 124% |
EP2C8T144C7 | 118 | 140% | 122% | |
EP2C8T144C8 | 97 | 115% | ||
Cyclone | EP1C3T144C6 | 146 | 174% | 121% |
EP1C3T144C7 | 121 | 144% | 111% | |
EP1C3T144C8 | 109 | 130% | ||
Virtex IV | xc4vlx15,-12 | 205 | 244% | 123% |
xc4vlx15,-11 | 166 | 198% | 111% | |
xc4vlx15,-10 | 149 | 177% | ||
Virtex II Pro | xc2vp2-7fg256 | 176 | 210% | 117% |
xc2vp2-6fg256 | 150 | 179% | 114% | |
xc2vp2-5fg256 | 132 | 157% | ||
Virtex II | xc2v500-6fg256 | 148 | 176% | 123% |
xc2v500-5fg256 | 120 | 143% | 115% | |
xc2v500-4fg256 | 104 | 124% | ||
Virtex | xcv600-6bg432 | 87 | 104% | 113% |
xcv600-5bg432 | 77 | 92% | 120% | |
xcv600-4bg432 | 64 | 76% | ||
Spartan III E | xc3s500e-5cp132 | 133 | 158% | 116% |
xc3s500e-4cp132 | 115 | 137% | ||
Spartan III | xc3s1000-5fg320 | 112 | 133% | 114% |
xc3s1000-4fg320 | 98 | 117% | ||
Spartan II E | xc2s600e-7fg456 | 94 | 112% | 112% |
xc2s600e-6fg456 | 84 | 100% |
一开始没想到这个比较会得到大家的关注,纯粹是出于自己的兴趣。两个厂商都会宣称自己某一方面比对方好,到底是谁的更好呢?这肯定是个仁者见仁,智者见智的问题。最近这段时间比较忙,项目到了比较关键的阶段,加上其他一些杂七杂八的事情,很难有比较完整的时间坐下来完成报告,直到今天才基本把一些文档整理完。在整理的过程中,越来越觉得很难比较两者之间的速度,因为相关的因素实在太多了。软件的好坏,器件本身的延迟,设计等等对最优的速度都有着相当大的影响。做速度比较用的滤波器很难代表其他的设计,算是抛砖引玉,希望能够和大家一起讨论FPGA的速度这个问题。在整理过程中,发现了很多很有趣的事情,比如Stratix III和Stratix II的速度区别等。为此,作者做了一些简单的实验,希望能够找到合理的解释,来分析出现这些现象的原因。
编译之前的考虑
根据作者自己的一些经验,作者把常用的一些开关打开了,以便更好的优化速度。另外,有一些选项作者拿不准是否两个软件都有相似的开关,就没有打开。
为了使得比较更加合理,作者尽可能选择门数和IO速度都比较接近的FPGA。
Xilinx采用ISE9.1 Service Pack1版本,Altera采用Quartus7.1 Service Pack1版本,
Xilinx:
Type | Option | Value |
Synthesis Option | Optimization Goal | Speed |
Optimization Effort | High | |
Use DSP48 | No | |
Map Option | Perform timing driven packing and placement | yes |
Map effort level | high | |
Optimization strategy | speed | |
Place & Route | Place and route effort level | high |
Altera
Type | Option | Value |
Synthesis Option | stratixii_optimization_technique | Speed |
Fit Option | Fitter_Effort | Standard (Highest) |
optimize_fast_corner_timing | on | |
physical_synthesis_combo_logic | on |
编译结果
作者采用了两种形式的滤波器来比较两者的速度。第一种实现形式是57阶FIR滤波器, 8比特输入数据, 8比特输出数据, 13比特系数, 滤波器采用转置形式的结构(上一篇文章写错了)。
下面是得到的测试结果。
表1 转置形式滤波器
逻辑资源运行速度 | |||||
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 330 | 269 | xc5vlx85-ff1153-3 | Virtex 5 |
EP3SE80F780C3 | 276 | 238 | xc5vlx85-ff1153-2 | ||
EP3SE80F780C4 | 245 | 203 | xc5vlx85-ff1153-1 | ||
Stratix II | EP2S90F1020C3 | 318 | 207 | xc4vlx100-ff1148-12 | Virtex 4 |
EP2S90F1020C4 | 279 | 182 | xc4vlx100-ff1148-11 | ||
EP2S90F1020C5 | 234 | 156 | xc4vlx100-ff1148-10 |
第二种实现方式是相同的滤波器,采用直接形式的结构,乘完之后的数据按照四输入加法的方式求和。
下面是得到的测试结果。
表2 直接形式滤波器
逻辑资源运行速度 | |||||
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 239 | 275 | xc5vlx85-ff1153-3 | Virtex 5 |
EP3SE80F780C3 | 212 | 243 | xc5vlx85-ff1153-2 | ||
EP3SE80F780C4 | 180 | 211 | xc5vlx85-ff1153-1 | ||
Stratix II | EP2S90F1020C3 | 223 | 189 | xc4vlx100-ff1148-12 | Virtex 4 |
EP2S90F1020C4 | 200 | 167 | xc4vlx100-ff1148-11 | ||
EP2S90F1020C5 | 171 | 150 | xc4vlx100-ff1148-10 |
一些简单的结论
1. 从表1可以看出,Altera的FPGA运行速度快不少。Stratix II 比 V4的速度高出尤其多。
2. 表1,2的结果表明Stratix III 的速度比 Stratix II的没有显著的增加。Xilinx的V5比V4速度提升了不少。
3. 对于直接形式的FIR滤波器,一个有趣的现象是Stratix II比V4快,但是V5比Stratix III快。
为了能够更好的理解造成这些差异的原因,下面对两个公司的FPGA做进一步的分析。首先,作者对32 bit的加法在两个FPGA进行编译,比较两者的速度。
表1 32-bit加法器速度
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 457 | 534 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 405 | 361 | xc4vlx100-ff1148-12 | Virtex 4 |
从上面的表格来看,Xilinx的V5比V4速度提高了不少,尤其是逻辑资源的加法器速度。Xilinx的V5一位进位逻辑延迟为 83ps,寄存器输出延迟为326ps, 最低位加法延迟为318ps。Xilinx的V4一位进位逻辑延迟为 66ps,寄存器输出延迟为258ps, 最低位加法延迟为433ps。Altera的Stratix III比Stratix II只提高了一些,但是并不是太大。暂时没有找到Altera的进位逻辑的延迟参数,Stratix II寄存器输出延迟为94ps, Stratix III为
下面我们来看看乘法器的情况。这里我比较了两种乘法器:两个输入可变(下面称为可变乘法器),一个输入可变(下面称为固定系数乘法器)。分别针对16bit 和8 bit情况做了比较,还是采用纯逻辑资源来实现上述运算。对于一个输入可变的情况,另外一个数我用的是有符号数的最大值,即8bit的0x7F和16bit的0x7FFF。
下面的一些表格给出了一些测试结果。
表2 两个输入可变16bit乘法器
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 193 | 140 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 182 | 115 | xc4vlx100-ff1148-12 | Virtex 4 |
表3 一个输入可变16bit乘法器
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 349 | 191 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 312 | 151 | xc4vlx100-ff1148-12 | Virtex 4 |
表4 两个输入可变8bit乘法器
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 265 | 203 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 255 | 166 | xc4vlx100-ff1148-12 | Virtex 4 |
表5 一个输入可变8bit乘法器
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 431 | 303 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 440 | 251 | xc4vlx100-ff1148-12 | Virtex 4 |
从以上的表格可以看出Altera的可变输入乘法器比Xilinx稍微快一些。固定系数乘法器比Xilinx速度高出不少(由于Quartus优化的缘故,下面会专门分析)。Xilinx的V5比V4速度有了较大的提高,而Stratix III的速度比Stratix II没有明显的提高。
Quartus软件可以对固定系数乘法器做优化,比如与0x7F相乘,等价于先与0x080相乘,然后减去被乘数。我使用了另外一个系数0x7D,结果发现速度明显下降,Stratix III C2的最高速度只有253MHz,而占用的资源却增加不少。因为这一点,也导致了在实现转置形式的FIR滤波器(速度主要局限在固定系数乘法器)上,Altera不仅可以少用一部分资源,速度比Xilinx快不少。
下面寻找直接形式滤波器Xilinx V5比Altera S3快的原因。
在对直接形式的滤波器做比较时,发现Xilinx的V5比Altera的S3要快一些,时序分析报告显示关键路径在乘完之后的求和运算。我单独把求和运算做了分析,下面是得到的结果。奇怪的是这种情况下Xilinx的V5比Altera的S3要慢一些。可能是其他原因造成了上述的差别,今后再继续研究这个问题。
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 304 | 255 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 264 | 208 | xc4vlx100-ff1148-12 | Virtex 4 |
下一个系列继续研究直接形式和转置形式滤波器采用DSP块的一些实现情况。
文章评论(0条评论)
登录后参与讨论