当前位置:首页 > 嵌入式 > 嵌入式动态
[导读]最近我们看到一篇文章,说FPGA可能会取代CPU和GPU成为将来机器人研发领域的主要芯片。文章列举了很多表格和实验数据,证明了在很多领域 FPGA的性能会极大优于CPU。并且预言

最近我们看到一篇文章,说FPGA可能会取代CPU和GPU成为将来机器人研发领域的主要芯片。文章列举了很多表格和实验数据,证明了在很多领域 FPGA的性能会极大优于CPU。并且预言FPGA将来可能会取代CPU和GPU现在的地位。但事实真的是这样吗?要搞清楚这个问题,我们首先得对CPU 和FPGA都有足够的了解。

FPGA这个词可能很多人都有所耳闻,尤其是理工科的同学们大多数应该都自愿或被迫被这个词刷屏过。但要真追究起来FPGA到底是个什么东西。很多非相关专业的人都会陷入一脸迷茫。不过说起开发板,可能知道的人就很多了,有些人会以为FPGA就是开发板。但实际上FPGA指的只是开发板上面的那一小块芯片而已(下图黄圈处),整个开发板的其余部件都是为了协同它工作,让它发挥出它的性能而存在的。

 

FPGA开发板,via google.com/youtube

可即使有心的同学曾经查到了这里,或许也搞不懂它和CPU到底有什么区别,毕竟把它的位置换成CPU,整个开发板看起来就变成一块普通的电脑主板了嘛,感觉简直分分钟接上硬盘和显示器就可以开始LOL了。确实,不管从外形上来看还是实际的功能上来看,FPGA和CPU都表现得太像了,但在这两者相似的外表之下,其内部构造其实有着根本性的差别,而这种差别也正是FPGA会被很多人认为适合机器人开发的原因,因为它的构造决定了它在处理机器人需要的很多运算,尤其是在机器感知这方面的处理时的速度会比CPU快很多,同时还能将功耗控制在很低的水平。

CPU的构造

在讲FPGA之前,我们先从大家比较熟悉的CPU的数据处理方式讲起。首先需要强调的一点是,处理我们指令的计算机元件本身是无法理解我们的指令的,它们只能理解作为组成CPU最基本的元件——晶体管能实现的两种状态:“开”和“关”的含义,对应的就是1和0这两个机器码数字,这也是计算机的整个体系都基于二进制建立的原因。而为了让我们下达的各种各样的指令变成CPU能理解的0和1,CPU需要一个专门的译码器来翻译我们的指令。这个过程分为两步: “取指”(从一个专门存放指令的存储器中将需要执行的指令提取出来)和“译码”(根据特定的规则将指令翻译成计算单元能够理解的数据)。CPU的结构大概是这样的

 

via wikipedia

其中的Control部分就是控制取指、译码等整个流程的部分,Cache是在高速的CPU与相对低速的内存间为了提高从内存获得指令的效率而设置的一个临时指令存储器,DRAM则是速度比较慢的那一部分指令存储器。可以看到,真正的计算单元ALU只占了CPU结构中不大的一部分。这样的设计是有原因的。CPU存在的目的是作为通用计算机的处理核心,注意“通用”二字,这意味着块核心必须具备处理各式各样千奇百怪的指令要求的能力,并且因为要处理来自多个设备的请求,它必须拥有随时中止目前的运算转而进行其他运算,完成后再从中断点继续当前运算的能力。把这些话看完你可能都快睡着了,但在CPU内这些都要求在一瞬间完成。所以CPU需要有非常复杂的逻辑控制单元和这套独特的指令翻译结构。这都是保证CPU能顺利完成它的使命的必须的东西。可以说,在计算效率和通用性上CPU牺牲前者选择了后者。

FPGA的结构

而FPGA最早是从专用集成电路发展而来的半定制化的可编程电路。从诞生的那一天起它的身世就决定了它不像CPU那样可以灵活的处理各种没有见过的指令,而只能根据一个固定的模式来处理输入的数据然后输出,FPGA的结构是这样的。

 

via CSDN

很简单,绝大部分都是计算单元(上图中黄色部分其实就相当于CPU结构图中绿色的部分),但没有控制单元并不代表FPGA就不会执行指令了,事实上 FPGA里控制单元的角色就是由图中的每个控制单元和单元之间可编程的逻辑连接线来完成的,通过FPGA编程,开发者可以更改FPGA的每个单元的运算逻辑和单元之间的连接方式,从而使其达到和一般的运行程序差不多的效果。它与CPU的不同,在于它无法应对没有被编程过的指令。编程方式一旦确定,FPGA 就只能根据被编程的处理逻辑和方式来处理特定的数据输入。但这样的架构换来的是FPGA内部几乎全是计算单元,因此FPGA的实际运算能力会比看起来强得多,尤其是在运行简单但重复性高的任务的时候,由于简单,因此很少的几个逻辑单元,甚至一个就能独立输出这个运算的结果。而由于省去了CPU的取指和译码两个步骤,FPGA重复运行相同代码的效率得到了极大的提高。

有一个比喻打得很恰当,CPU就像大学里一位德高望重的老教授,积分微分啥都会算,但毕竟它只有一个人,当计算任务太重的时候也会被累趴下,而FPGA这样的结构,就像是整个小学里所有小学生组成的队列,每个人都只会算简单的加减乘除,但有些量大但不复杂的运算任务交给他们就是会比较快。

具体表现在性能上,很明显的一点就是一般的CPU只能同时处理4到8个指令,而不算太差的只要FPGA优化得当,可以同时处理256个甚至更多的指令。其实GPU的设计思路同FPGA类似,都是为了处理大量简单重复的运算而出现的设备。但GPU的性能强悍的同时耗能也很高,而FPGA因为编程和优化都是直接在硬件层面进行的,能耗会低很多。

机器开发中的计算

现在我们可以叙述正题了。前文提到,FPGA在处理机器人需要的某些数据的时候的优势会比CPU大很多。没错,就是感知计算。我们不需要懂得太多专业知识,只需要想象一下就可以明白其中原理。就像文章中提到的那套主流的位置追踪算法SIFT的例子:SIFT的主要工作步骤有三步:1:通过特定的算法找出图片中的关键点,2:对关键点附加一个详细的标识,3:通过不断的对比新旧两幅图片上每个关键点的位置求出两幅图之间对应位置的差别。[!--empirenews.page--]

不难发现,整个过程重复性极高,并且其中并没有过于复杂的运算。因此使用FPGA进行该算法的计算会比使用CPU快很多。事实上,文章中表示根据加州大学洛杉矶分校的一项相关的实验结果,FPGA在运行SIFT指令时的执行效率是CPU的足足30倍。处理速度快这么多,耗能又如此小。也难怪有些人会认为 FPGA拥有取代CPU和GPU的能力了。

但FPGA真的能取代CPU和GPU吗?

FPGA相对于CPU和GPU,在进行感知处理等简单重复的任务的时候的优势很明显,按照现在的趋势发展下去,FPGA或许会在未来取代机器人开发中 GPU的工作。因为FPGA和GPU虽然都精于大量的重复运算,但FPGA的能耗会远低于GPU。可是FPGA或许永远没有办法取代CPU的地位,而事实上目前的各类应用中,FPGA也多作为CPU的协处理器而出现,而不是真正的核心运算单元。而个中原因其实也很简单,正是我们之前提到过数次的一个词:设计目的。

人类设计机器人的最终目的是希望它们能变得像我们一样,用跟我们类似的方式思考,拥有独立判断形势、处理任务的能力。我们目前还不是很了解大脑工作的具体原理,但无论从经验还是直觉来看,类似人类的思维都不是由无数逻辑简单的堆积起来的。因为思维这件事物的复杂程度已经远远超出了运算的范畴。比如说,如果你想计算213 x 312而你想将它简化,你只需要很简单的将它分解成213个312相加,甚至是重复213次312个1相加。但如果你想算2的64次方呢?如果你想算 sin(27°)呢?甚至如果你想算log230呢?如果你一定要将其分拆成简单的运算,你就会发现你需要的资源会以难以想象的速度增长,直到就连把全市的小学生都叫来也做不完的程度。

就目前的表现来看,人脑显然不适合大规模并行计算。而更像是CPU那样精于单一且深度的思考(运算)。并且人脑的功能也与CPU的设计定位更吻合。因此无论如何,在脑科学有突破性进展之前,人们还是会倾向于使用看起来更有潜力的CPU来作为机器人的核心运算部件。或许随着FPGA的发展,机器人的越来越多感知部件的数据运算会由FPGA来承担(就像人类的小脑),但很明显,一个部件的地位主要、核心与否,不是靠数量来判断的。

不能否认FPGA确实能在机器人开发中发挥很大的作用。但综合来看,它和CPU,甚至GPU更像是一种各司其职的地位,动不动就谈替代,或许有失严谨。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭