优势一:
更大的并行度。这个主要是通过并发和流水两种技术实现。
A:并发是指重复分配计算资源,使得多个模块之间可以同时独立进行计算。这一点与现在的多核和SIMD技术相似。但相对与SIMD技术,FPGA的并发可以在不同逻辑功能之间进行,而不局限于同时执行相同的功能。举个简单例子说就是使用SIMD 可以同时执行多个加法,而FPGA可以同时执行多个加法和乘法和任何你能设计出来的逻辑。
B:流水是通过将任务分段,段与段之间同时执行。其实这一点和CPU相似,只是CPU是指令间的流水而FPGA是任务间流水或者可以说是线程间流水。
优势二:
可定制。FPGA 内部通过Lookup Table实现逻辑,可以简单理解为是硬件电路。可定制指的是在资源允许范围内,用户可实现自己的逻辑电路。通常情况下任务在硬件电路上跑是比在软件上快的,比如要比较一个64位数高32位和低32位的大小,在CPU下需要2条区数指令,两条位与指令,一条移位指令一条比较指令和一条写回指令,而在FPGA下只要一个比较器就行了。
优势三:
可重构。可重构指的是FPGA内部的逻辑可根据需求改变,减少开发成本。同时,使用FPGA复用资源比使用多个固定的ASIC模块为服务器省下更多的空间。
FPGA内部的RAM分为两部分,一部分就是你的分布式的RAM,用于LUT,还有一种是块ram(BLOCK RAM)是一块用于存储数据的专用RAM,也就是你的系统设计中需要用到容量较大的数据储存区域(比如FIFO,SRAM等)。
FPGA实现逻辑功能就是通过LUT来的,LUT最重要的部分就是RAM,用来保存你的设计转换成的真值表。比如你有4个输入,那么这4个输入产生的组合逻辑结果最多也就是2的4次方16种结果,FPGA把这个16种结果分别对应4个输入地址,输入产生一个4位地址,就在RAM里面找到对应的结果,从而输出相应的结果。
你的理解基本正确,用于LUT的RAM不是在一起的,而是分布式的。另外有一块大的RAM用于系统设计的。
这些ram里面的数据掉电后都会丢失,这也是FPGA和CPLD的区别,FPGA每次上电都要从外部的FLASH或者在线下载BIT流到 内部的RAM里面去。
你使用的是哪一种FPGA芯片。FPGA虽然内部是SRAM,但也有含有FLASH的FPGA,外部也可以存储程序(多种FLASH都可以,EPCS系列主要针对Altera的产品),建议你查看下其datasheet的配置方式那一章节。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)