提问者不是计算机专业的学生,学的是自动化专业,做相关计算机实验时,想到可编程晶元可以帮助计算机主cpu完成一些简单操作,可不可以将cpu与可编程晶元类比为人的大脑和脑干呢,大脑负责思考,脑干控制简单的生命活动。


对于自动化来说,没必要纠结 CPU 的概念,那纯粹是个学术问题。

如果你只纠结是否可编程,那么FPGA跟CPU都可编程,把它当作CPU并无不可。

如果非要纠结可编程逻辑器件是否符合CPU的定义,我觉得这是魔怔了,除了学究考试,没有实际意义。


CPU如果是一张计算卡。你在卡纸上写下你要计算的东西,根据这张卡就能得到答案。但是必须按照这张卡的流程操作。

可编程晶元(单纯指 FPGA)更像一张白纸,你可用它做任何事,但是你要自己写算式,自己设计计算过程。设计的好的话可以比计算卡还好用,但是方便来说还是计算卡比较好。

或者计算卡中间有一些计算你可以拿出来自己用白纸自己的演算法算一下,让整个计算过程既方便又快速。


看你怎么定义CPU吧...

如果按照冯诺依曼的定义, 只要你能做出来计算器, 存储器和控制器就算计算机

如果不具备这些组件, 哪怕功能再强也不能叫做计算机


可编程晶元比如说FPGA可以完成任意数字电路, CPU也是数字电路的一种

所以可编程晶元可以实现CPU, 但并不仅仅能实现CPU

同时还能实现例如数字锁相环, 数字滤波器, 硬体视频编解码器等数字电路


另外, FPGA那不叫编程, 那叫做描述硬体

你写一个乘法那就是描述了一个乘法器出来, 多描述几个...硬体资源就不够了

一般也不会用浮点, 因为描述一个符合IEEE 754的浮点运算单元多占资源啊, 在允许的精度范围内做定点数运算就好了

不像软体, 你写多少个乘法那都是在处理器上按时间顺序执行的指令

所以, ACM里的位魔法都是硬体描述里的基本操作了, 移位以及基本逻辑门硬体实现起来多简单


可编程晶元,我狭义定义为fpga。

下面用大白话和例子来说明。大白话基于你理解基本数字电路的实现。

FPGA,是给了一堆通用数字电路单元(logic cell),以及连线断路器的晶元。所以FPGA编程的过程到了最底层就是把数字电路单元选成你要的功能以及对各个单元进行连线。说白了,你做的就是创造了一堆有特定用处的数字电路。

CPU本身,就是一堆前人设计好的数字电路。所以CPU的编程到了最底层就是通过机器码去控制前人设计好的电路。机器码哪里来?就是你写的软体代码,通过编译器变成汇编,再从汇编变成机器码,映射到硬体上。说白了,你做的事情是在控制一个人家设计好的数字电路。

所以其实这俩玩意最大的区别,是抽象级别不一样。cpu是更高级的抽象,他是一堆按照特殊需求设计出来的数字电路。而可编程晶元,你可以理解为就是数字电路本身。

要类比的话,cpu如果是大脑,那fpga就是一堆排列整齐,但是各自独立的神经元。

至于你说的,可编程晶元可以帮助计算机主cpu完成一些简单操作,不太确定具体是啥玩法,有点异构计算的意思?


可编程一般是fpga那种的,它分为电路和载入程序。电路为模块,比如一个里面有多路选择器,flipflop,门电路等等。载入程序会控制打开这个模块中你需要的硬体。最终这些模块组成了一个定值硬体。

还有就是cpld,原理类似,但是只有门阵列。写入程序用来控制连接开关。

另外如果你指的是单片机这类,那么原理与电脑相同。


不算,但是你可以用fpga的资源用实现一个cpu的功能


https://www.intel.cn/content/www/cn/zh/products/programmable/fpga/new-to-fpgas/resource-center/overview.html


看你说的是哪种可编程晶元了。单片机那些,内部本身有一个CPU。

FPGA这些可编程晶元,它能做的事情可不比什么CPU少(毕竟,FPGA可是能变成一个CPU的呢~),听说n月前某公司还拿来替代CPU做计算来著。如此看来,比作大脑脑干的比喻,并不合理。它们可以像左右脑,也可以像大脑脑干。


那么具体区别呢?CPU就像一个翻译机器,把代码扔给它,它帮忙翻译,什么add x, y翻译为加法等等。而FPGA、CPLD这类,更像你去设计一款专门的IC,指定它该做什么。不然FPGA用的语言怎么会叫硬体描述语言呢(笑)。

题外话,和题主同专业hhhhhhhh,咱们自动化还是不要在乎这些细节吧~FPGA这种东西,在一些地方喜欢的话把它作为主力都行,然后拿个单片机为辅,听起来是不是反过来了~可编程晶元变成了大脑,CPU变成了脑干


CPU其实是一个计算机单元的称呼,Center Processing Unit,它是计算机的核心运算模块,CPU这个词就是主要用来描述这个单元,而不是单个晶元,现代的CPU也有核数,这更能表明CPU是一个整体的单元概念,指代计算机中负责核心计算的一个(一群)晶元。

而编程晶元就是一个控制中枢(可以这么比喻吧),编程者提前写好程序,然后编程晶元执行。其实CPU中每个核就是一个编程晶元。

我不是专业人士,如果有错,请在评论区提醒,我会第一时间修改


因为题主不是本专业的。所以这么理解也没错。

但有个更加符合现实的比喻:

可编程晶元,你可以把它看成是还没搭建起来的积木,具体什么样子和功能你可以自己定制。而cpu就是大神手里已经完成的积木神作,可以观赏,可以通过各种手段完成各种功能,但是太大了,不太方便。

cpu 中央处理器,他很厉害但是也很贵(主要原因) 所以在有些时候cpu和可编程晶元都能做的情况下,优先考虑可编程晶元。

还有有些事情cpu也干不好

最常见的我们现在用的电脑CPU和GPU的功能就是分开的,GPU负责各种显示。


看怎么定义cpu,中央处理器,系统的中心位置的处理单元,都可以这么称呼。可编程也有处理能力,也可以独当一面,所以。


CPU只是晶元中的一个,晶元编程属于硬体开发


推荐阅读:
相关文章