取代CPU/GPU? 剖析FPGA是否能独占机器人芯片
最近我们看到一篇文章,说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牺牲前者选择了后者。 取代CPU/GPU? 剖析FPGA是否能独占机器人芯片
页:
[1]