FPGA计算机?不是没有可能哦
本帖最后由 lcytms 于 2017-3-31 14:03 编辑FPGA计算机?不是没有可能哦
信息来源:http://www.gold678.com/dy/P/82472264
导读:目前的众多FPGA开发板为什么不是“FPGA计算机”?
目前也有不少基于ARM+FPGA、DSP+FPGA或异构SoC(如Zynq、FPGA SoC)的异构平台,在这些平台之上,用户往往需要从FPGA电路板设计、接口/驱动设计、内存访问设计到算法逻辑设计和软件设计进行全流程负责,导致开发难度大、开发周期长、研发成本高。
虽然高层综合技术使得我们可以用C开发FPGA应用,但其仍需要对硬件结构和系统的深入理解和把握,远不是仅熟悉算法的应用层开发人员可以胜任的,所以还无法称之为FPGA计算机。
只有能屏蔽所有底层物理细节,使应用层的开发人员可以方便使用,才称得上是一台FPGA计算机。
通俗地讲,只有一台软件程序员可以轻松开发的FPGA计算机,才是真正FPGA计算机。
关于这点,第三篇分析中有指出,赛灵思的SDSOC开发环境已经在接近这个目标了。
最少的周边I/O设备。
各种I/O控制器的数量将会大幅减少,因为一切都可以在FPGA内部做出来,并具备远远更高的灵活性。
需要外围电路的唯一理由,将会是对模拟信号的牵涉。
各种数字信号接口可以简单地通过电平转换直接连到FPGA的I/O引脚,甚至键盘的防抖动处理都不需要专门的芯片。
FPGA 内部与这些引脚直接连接的逻辑部分被称为硬件驱动,相关配置数据即是驱动软件。
普通应用编写者不需要对接口细节感兴趣,只需要与这些驱动软件交互。
如果说我们所用的“通用计算机”是以CPU为计算单元来处理部分或全部计算任务,并且应用程序员可以方便使用的计算机系统,
那么“FPGA计算机”就可以认为是由FPGA(现场可编程门阵列)完成部分或全部计算/处理功能的、应用层程序员可用的计算机系统。
2007年前后,业界曾经探讨过FPGA计算机的可能性,但是由于当时FPGA的性能还不是很强大,且开发门槛较高,这样的探索后来就销声匿迹了。
近日,随着英特尔收购Altera,关于FPGA计算机的话题也有走热的趋势,结合和产业朋友交流的心得和一些网上的资料,今天就分析分析FPGA计算机的发展趋势。
现在的通用计算机的基础架构是1946年冯诺依曼提出的,基于这样的架构,要把需要的程序和数据送至计算机中、而且系统必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。
随着目前深度学习、智能化、大数据的走热,需要对数据机型实时分析,通用计算机面临的挑战很大,甚至无法应对。
此外,在“物联网”环境中,外部事件的发生具有连续性、并发性、实时性等特点。
而传统的串行方式的计算机系统的特点是顺序执行、平均性能最佳。
因此,要更好地满足物联网应用的计算需求,计算机系统需要提供:
1)真正的硬件并行处理能力,对于外部并发的事件从硬件上提供真正的并行处理;
2)提供硬件级别的时间可预测性;
3)大数据的高速处理能力。
为特定应用提供最适合的硬件结构,最大限度地采用硬件并行处理,在保持较低频率的情况下大幅提升计算性能。
这样,一种基于FPGA的可重构计算机结构也许可以解决这个挑战。
如果说我们所用的“通用计算机”是以CPU为计算单元来处理部分或全部计算任务,并且应用程序员可以方便使用的计算机系统,
那么“FPGA计算机”就可以认为是由FPGA(现场可编程门阵列)完成部分或全部计算/处理功能的、应用层程序员可用的计算机系统。
FPGA计算机有如下几个优势:
1、与多核方式相比,基于FPGA的异构计算系统(FPGA计算机)具有可更好地满足特定计算的优势
多核方式是相同的多个CPU核同时工作来提高并行处理能力,是以软件的方式进行的任务级的并行。
而FPGA计算机由于包含可重构器件FPGA,能够以软硬件协同的方式支持多种不同的并行方式,因此可以为特定算法/应用提供最适合的运行方式。
打个比方:假如一件事情可以划分为若干可同时执行的不同的子任务。
对于多核,就像具有相同技能的若干工人,即使承担的是不同的任务,也无法发挥每个核最大的潜力;
而对于异构系统,就像具有不同特长的若干工人,通过恰当组合可以发挥各自的最大潜力,并使得整个任务以最高效的方式完成。
2、FPGA为什么具备了作为计算单元的条件
FPGA(现场可编程门阵列)可以看作一种‘空白’芯片,用户通过编程/逻辑设计可以使之形成‘特定’芯片,因此可以为特定算法/应用提供最佳的计算模式。
目前,随着工艺的进步,FPGA资源更为丰富,可以实现更复杂的算法;
同时,其性能、功耗、价格等指标也不断优化;
更重要的是,随着高层综合技术、OpenCL等的发展,我们已可以用C语言进行FPGA上的算法设计,大大提高了算法设计的效率。
因此使得FPGA可以更多地作为计算单元承担数据的处理任务。
3、目前的众多FPGA开发板为什么不是“FPGA计算机”
目前也有不少基于ARM+FPGA、DSP+FPGA或异构SoC(如Zynq、FPGA SoC)的异构平台,在这些平台之上,用户往往需要从FPGA电路板设计、接口/驱动设计、内存访问设计到算法逻辑设计和软件设计进行全流程负责,导致开发难度大、开发周期长、研发成本高。
虽然高层综合技术使得我们可以用C开发FPGA应用,但其仍需要对硬件结构和系统的深入理解和把握,远不是仅熟悉算法的应用层开发人员可以胜任的,所以还无法称之为FPGA计算机。
只有能屏蔽所有底层物理细节,使应用层的开发人员可以方便使用,才称得上是一台FPGA计算机。
通俗地讲,只有一台软件程序员可以轻松开发的FPGA计算机,才是真正FPGA计算机。
关于这点,第三篇分析中有指出,赛灵思的SDSOC开发环境已经在接近这个目标了。
4.新结构的主存和辅存。
主存一如既往由大量DRAM充当,但其结构细节和使用方式与传统将会有所改变。
典型之一是数据口的宽度,由于FPGA不再具备传统CPU的次序读写特征,而是以大块地读写配置数据为主,粒度在KB~MB级别。
而计算过程中的小规模、频度高的数据存储任务,则大量由FPGA内部的 SRAM单元担当。
这种使用方式使DRAM倾向于具备更宽的数据端口,和更粗粒度的编址方式。
比如主存可能按页(4KB)编址,给出页面号之后,即以高度优化的DMA方式一次完成整页数据的读写。
而主存的高速缓存也会做出类似改变。
系统的辅存和传统一样,以硬盘和闪存为主,只是可执行文件中保存的不再是指令序列,而是配置数据集合。
当我们双击可执行文件的图标,系统会加载代码段和数据段到主存,并根据进程调度,在合适的时刻将进程映像加载到FPGA中。
时间片到之后,映像会被写回主存,等待下次被调度。
鉴于进程调度牵涉到的数据传输量远大于传统系统,一种有效的新的进程切换机制将会被引入。 本帖最后由 lcytms 于 2017-3-31 14:03 编辑
5.最少的周边I/O设备。
各种I/O控制器的数量将会大幅减少,因为一切都可以在FPGA内部做出来,并具备远远更高的灵活性。
需要外围电路的唯一理由,将会是对模拟信号的牵涉。
各种数字信号接口可以简单地通过电平转换直接连到FPGA的I/O引脚,甚至键盘的防抖动处理都不需要专门的芯片。
FPGA 内部与这些引脚直接连接的逻辑部分被称为硬件驱动,相关配置数据即是驱动软件。
普通应用编写者不需要对接口细节感兴趣,只需要与这些驱动软件交互。
6.完善、分层次的新结构的软件系统。
由逻辑信号构成的API将会形成标准的文档,应用软件编写者可以以简单的方式直接调用这些API而不用考虑硬件时序等低层次信息。
程序设计的主导思想可以是状态机,也可以是更高层的抽象。
高度并行是不变的主题,传统的顺序执行的编程模型将成为一种高度抽象,或称为“面向顺序的编程(SOP)”。
以上是目前的思考结果,与传统系统的兼容性暂不考虑。望与大家讨论,结识同道。
如何使“FPGA开发板”升级为“FPGA计算机”
众所周知,基于通用CPU的计算系统之所以能被普遍使用,是因为采用了分层次的开发模式。
不同层次的开发人员只需要关注本层次的问题,有效降低了用户的开发难度。
比如,有专门的CPU提供商、整机制造商、操作系统提供商、编译器提供商以及大量的中间件(支持库)的开发商,从而使算法/应用的开发者只需要关注应用本身而无需投入更多精力在计算机系统本身的使用上。
因此,使“FPGA开发板”升级为“FPGA计算机”就需要填补FPGA系统中从裸片到应用之间存在的关键空白环节,解决现有基于FPGA的系统开发时存在的问题。
包括:
1)提供模块化、标准化的裸机设计,便于不同应用作为扩展模块使用;
2)系统的接口驱动;
3)对包括FPGA在内的硬件资源进行动态管理和配置,为用户屏蔽底层硬件细节;
4)提供面向领域的并行算法支持库给用户直接调用,避免重复开发并降低开发难度;
5)提供一套和具体芯片类型无关的可移植、可扩展系统架构,使得用户基于该架构的开发可更方便地移植到不同的FPGA计算机硬件平台而不需要繁琐的移植工作。
在FPGA计算机商业化方面,美国和中国的很多大学都在进行研究工作。
可喜的是,本土有家新创公司也做的很不错,这就是无锡虎甲虫计算技术有限公司,他们在可重构FPGA计算机方面已经研究了数年,而且有了一些新的成果。
据该公司总经理王芝斌介绍,可重构计算芯片(FPGA)的操作系统是FPGA计算机的关键,它可以让原先只能极少数专 家胜任的计算单元定制工作变成众多应用级软件/算法人员可以完成。
通过研发FPGA操作系统RELAX,虎甲虫已经初步解决了上述问题,大大降低了FPGA系统的开发难度,使开发人员可在应用层进行开发,将所有精力投入在自己最核心的算法上。
FPGA计算机,很厉害呀!
页:
[1]
2