可编程晶元也算是一个cpu吗,他们有什么联系?
提问者不是计算机专业的学生,学的是自动化专业,做相关计算机实验时,想到可编程晶元可以帮助计算机主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的功能