昌红科技拟参与投资设立医疗产业并购基金,总规模1亿元
06-18
最近看到一篇文章说FPGA可能会取代CPU和GPU成为未来机器人研发领域的主力芯片。
文章列出了很多表格和实验数据,证明FPGA在很多领域的性能都会大大优于CPU。
并预测未来FPGA可能会取代目前CPU和GPU的地位。
但事实真的是这样吗?要理解这个问题,我们首先要对CPU和FPGA都有足够的了解。
可能很多人都听说过FPGA这个词,尤其是理工科的学生。
他们中的大多数人应该是自愿或被迫接触过这个词的。
但我们必须真正研究一下什么是FPGA。
很多不是相关专业的人都会感到困惑。
但说到开发板,可能很多人都了解,也有人认为FPGA只是一块开发板。
但实际上FPGA仅指开发板上的小芯片(下图中黄色圆圈)。
整个开发板的其余组件的存在就是为了与它配合,让它发挥它的性能。
FPGA 开发板,来自 google.com/youtube。
即使有思想的同学查到这里,也可能不明白它和CPU的区别。
毕竟,如果它的位置换成CPU的话,整个开发板看起来就只是一块普通的电脑主板了。
感觉只要几分钟连接硬盘和显示器就可以开始LOL了。
确实,无论是从外观还是实际功能上,FPGA和CPU的表现都非常相似,但是在两者相似的外观下,它们的内部结构其实是有本质上的不同的,而这种差异也正是FPGA被很多人认为是CPU的原因。
适合机器人开发,因为它的结构决定了它可以处理机器人所需的很多操作,特别是在机器感知方面,比CPU快得多,而且它还可以将功耗保持在很低的水平。
在讲CPU的结构之前,我们先从大家熟悉的CPU的数据处理方式开始。
首先需要强调的是,处理我们指令的计算机组件本身无法理解我们的指令。
他们只能理解组成CPU的最基本元件晶体管所能实现的两种状态:“开”和“关”的含义对应着两个机器码数字1和0。
这就是为什么整个计算机系统是基于二进制的。
为了将我们发出的各种指令转换成CPU能够理解的0和1,CPU需要专门的解码器来翻译我们的指令。
这个过程分为两个步骤:“取指”(从专门存储指令的存储器中取出要执行的指令)和“解码”(按照特定规则将指令翻译成计算单元可以理解的数据)。
CPU的结构大致是这样的(来自wikipedia)。
Control部分是控制整个取数据和解码过程的部分。
Cache设置在高速CPU和速度相对较低的内存之间,以提高从内存获取指令的效率。
临时指令存储器,DRAM是指令存储器中速度较慢的部分。
可见,真正的计算单元ALU只占CPU结构的一小部分。
这种设计是有原因的。
CPU存在的目的是作为通用计算机的处理核心。
注意“通用”二字,这意味着块核必须具备处理各种奇怪的指令要求的能力,并且由于它要处理来自多个设备的请求,所以它必须具备中断当前操作的能力随时进行其他操作,完成后从中断点继续当前操作。
读完这些话你可能都快要睡着了,但在CPU中,这些都是需要瞬间完成的。
因此,CPU需要非常复杂的逻辑控制单元和这种独特的指令翻译结构。
这些都是确保CPU能够成功完成其使命所必需的东西。
可以说,在计算效率和通用性方面,CPU牺牲了前者而选择了后者。
FPGA的结构 FPGA是一种半定制的可编程电路,最初是从专用集成电路发展而来的。
从它诞生的那天起,它的生活经历就决定了它不能像CPU那样灵活地处理各种看不见的指令,而只能按照固定的模式处理输入数据,然后输出。
通过CSDN看FPGA的结构是这样的,非常简单。
其中大部分都是计算单元(上图中的黄色部分实际上相当于CPU结构图中的绿色部分),但是没有控制单元并不意味着FPGA不会执行指令。

事实上,FPGA图中控制单元的作用是由图中的各个控制单元以及单元之间的可编程逻辑连接线来完成的。
通过FPGA编程,开发人员可以改变FPGA各单元的运算逻辑以及单元之间的连接。
方法,这样就可以达到和正常运行程序一样的效果。
它与CPU的不同之处在于它不能处理尚未编程的指令。
一旦编程方法确定,FPGA就只能按照编程的处理逻辑和方法来处理特定的数据输入。
但这种架构带来的是,FPGA内部几乎完全由计算单元组成,因此FPGA的实际计算能力会比看上去要强很多,尤其是在运行简单但重复性高的任务时。
由于其简单性,很少有几个逻辑单元,甚至一个逻辑单元能够独立输出这一运算的结果。
由于省略了CPU取指令和译码两个步骤,FPGA重复运行相同代码的效率得到了极大的提高。
有一个比喻非常恰当。
CPU就像是大学里德高望重的老教授。
他可以计算积分和微分。
但上面毕竟只有一个人。
当计算任务太重时,他就会疲倦并摔倒。
而FPGA是这样的结构,就像整个小学所有小学生的队列一样。
每个人都只会做简单的加减乘除,但一些大但不复杂的计算任务交给他们会更快。
具体在性能方面,显然一般CPU只能同时处理4到8条指令,但只要FPGA适当优化,它可以同时处理1条甚至更多条指令。
同时。
事实上,GPU的设计思想与FPGA类似,都是为了处理大量简单重复运算而设计的设备。
然而,GPU性能强大的同时,能耗也很高,而FPGA的能耗要低得多,因为编程和优化是直接在硬件层面进行的。
机器开发中的计算 现在我们可以开始正题了。
前面提到,在处理机器人所需的某些数据时,FPGA 比 CPU 具有更大的优势。
没错,就是感知计算。
我们不需要了解太多的专业知识,只需要想象一下就能明白其中的原理。
就像文中提到的主流位置跟踪算法SIFT的例子一样:SIFT主要有三个步骤:1:通过特定的算法找到图片中的关键点,2:给关键点附加详细的标识,3:找到通过不断比较新旧图片上每个关键点的位置来得出两张图片对应位置的差异。
不难发现,整个过程重复性极高,没有过于复杂的操作。
因此,使用FPGA来计算该算法会比使用CPU快得多。
事实上,文章称,根据加州大学洛杉矶分校的相关实验结果,FPGA在运行SIFT指令时的执行效率足足是CPU的30倍。
处理速度快得多,能耗却小得多。
难怪有人认为FPGA有能力取代CPU和GPU。
但FPGA真的能取代CPU和GPU吗?与CPU和GPU相比,FPGA在执行感知处理等简单、重复性任务方面具有明显优势。
按照目前的趋势,未来机器人开发中FPGA可能会取代GPU的工作。
因为虽然FPGA和GPU都擅长大量重复运算,但FPGA的能耗会比GPU低很多。
不过,FPGA或许永远无法取代CPU的地位。
事实上,在当前的各种应用中,FPGA大多作为CPU的协处理器出现,而不是真正的核心计算单元。
原因其实很简单。
这是我们之前多次提到过的一个词:设计目的。
人类设计机器人的最终目标是希望它们能够变得像我们一样,以与我们相似的方式思考,并具有独立判断情况和处理任务的能力。
我们对大脑工作的具体原理还不太了解,但无论从经验还是直觉来看,类人思维都不是无数逻辑的简单堆积。
因为思维的复杂性已经远远超出了计算的范围。
例如,如果你想计算x并且想简化它,你可以简单地将其分解为加法,甚至重复1的加法。
但是如果你想计算2的64次方怎么办?如果你想计算sin(27°)怎么办?即使要计算log?如果一定要分解成简单的计算,你会发现你需要的资源会以难以想象的速度增加,直到你甚至无法召集全市所有的小学生来完成任务。
从目前的表现来看,人脑显然不适合大规模并行计算。
它更像是一个擅长单一、深入思考(运算)的CPU。
而人脑的功能也更符合CPU的设计定位。
因此,无论怎样,在脑科学没有突破之前,人们仍然会倾向于使用看起来更有潜力的CPU作为机器人的核心计算部件。
也许随着FPGA的发展,越来越多的机器人感知部件的数据计算将由FPGA来承担(就像人类的小脑一样),但很明显,一个部件的地位是重要的、核心的,而不是以数量来判断。
的。
不可否认,FPGA确实可以在机器人开发中发挥很大的作用。
但综合起来看,它和CPU甚至GPU更像是各司其职的状态。
动不动就谈替代可能不太严谨。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-17
06-17
最新文章
Android旗舰之王的过去与未来
智能手表不被开发、AR眼镜被推迟,Meta的产品经历了一波三折
为什么Cybertruck是特斯拉史上最难造的车?
更新鸿蒙3后,文杰允许你在车里做PPT了
新起亚K3试驾体验:追求“性价比”,韩系汽车仍不想放弃
阿维塔15登场!汽车配备了增程动力,理想情况下会迎来新的对手吗?
马斯克宣布创建 ChatGPT 竞争对手! OpenAI的CEO给他泼了冷水, GPT-5可能会发生巨大变化
骁龙无处不在,是平台也是生态