一、概述
1.虽然两者都是在底层通过0/1开关来实现功能,但是这两者控制的开关不太一样
2.CPU的0/1开关是控制CPU的基本工作单元的,FPGA开关级的0/1是用来描述mos管的
二、差异
1.操作目标不同
cpu机器码编程是用于控制指令流,用于告诉CPU下一步进行什么操作;
fpga开关级描述电路是描述电路的mos管的开关;
CPU的硬件电路(包括ALU、寄存器堆、缓存等)是固定不变的。机器码的作用是选择在何时、以何种方式使用这些固定单元。程序员是在指挥一个现成的、复杂的硬件工厂。
FPGA在烧录前是一堆未连接的、原始的硬件资源(LUT、触发器、布线)。HDL代码的作用是告诉工具如何用这些“乐高积木”搭建出一个你想要的专用电路。开发者是在从零开始设计和建造一个硬件电路。
CPU和机器码 就像你指挥一个交响乐团。乐手(CPU硬件单元)和乐器(ALU、寄存器)都是现成的、固定的。你(程序)拿着一份乐谱(机器码),指挥家(指令译码器)根据乐谱,告诉小号手何时吹、小提琴手何时拉。你控制的是时间序列和协调。
FPGA和HDL 就像你设计和建造一个音乐盒。你不仅要设计旋律(算法),还要亲自雕刻音筒上的凸点(配置LUT)、安装齿轮和簧片(连接触发器和布线)。完成后,摇动把手,音乐盒直接发出音乐。你创造的是一个为单一旋律优化的物理装置。
2.抽样层次
FPGA开关级的层次比CPU机器码编程的层级更低。
3.执行模式
CPU顺序(或乱序但结果一致)地取指、译码、执行。一条指令执行完才处理下一条。
fpga电路一旦烧录,所有部分同时工作。信号到达,相关电路立即响应,高度并行。
4.设计焦点
CPU侧重于算法、流程控制、数据结构。
FPGA侧重于时序、时钟域、数据通路、资源利用率。
5.“开关”控制方式
CPU程序员编写指令,CPU的译码器将这些指令翻译成对内部ALU、寄存器等现有硬件单元的控制信号(即打开/关闭某些数据通路);
FPGA开发者编写硬件描述语言(HDL)代码,综合工具将其翻译成对FPGA内部可编程逻辑块(CLB)、布线资源的具体配置,即确定每个“开关”的连接关系。
三、编程思维
CPU编程 = 时间域编程(随时间推移做不同的事)。
FPGA编程 = 空间域编程(先搭建一个专用的硬件结构)。
四、CPU构成
CPU的核心想象成一个由数十亿个(甚至上百亿个)微小开关(晶体管)构成的、按精密逻辑连接起来的巨型“数字城市”。这些晶体管被组织成上述逻辑单元,共同协作来执行“取指、译码、执行、访存、写回”这一系列操作。
CPU是一个以数字电路为绝对核心、但集成了必要模拟辅助电路的“片上系统”。