咱们已经看了基本逻辑电路,运算电路,内存的概述。今天咱们用着几个东西来组装 CPU。编码
CPU 简易结构图
咱们看到这张图,咱们的简易 CPU 有运算逻辑部件、寄存器部件和控制部件(图中的指令解析)cdn
CPU 工做流程
CPU 的运行有读取指令,解析指令,运行三个阶段。 咱们模拟一下使用计算机来计算一个 1+1,看看计算机是如何工做的! 假设咱们已经写好了咱们的程序,并放到了内存中,以下图所示: blog
假如咱们 指令地址寄存器 的地址为 00000000内存
- CPU 通电首先读取指令地址寄存器的地址(能够理解成系统第一条指令),而后读取相应的内存数据。
- 获得 00010001 ,而后拆分命令是 0001 数据是 0001(假设 0001 是加载到 寄存器1 中)
- 执行命令把 0001 存储到 寄存器1 中,把下一个地址 00000001 存到 指令地址寄存器 中
- 而后开始第二轮 读取内存地址 00000001 的数据
- 获得 00110001 ,而后拆分命令是 0011 数据是 0001(假设 0011 是加载到 寄存器2 中)
- 执行命令把 0001 存储到 寄存器2 中,把下一个地址 00000011 存到 指令地址寄存器 中
- 而后开始第三轮 读取内存地址 00000011 的数据
- 获得 10000111 ,而后拆分命令是 1000 数据是 0111(假设 1000 是对两个寄存器进行加法运算)
- 执行命令把 寄存器1 寄存器2 的值进行相加。
OK! 咱们看了上边流程,咱们还有几个问题?虚拟机
- 咱们还隐约的发现还缺个东西没有说也就是「指令表」,每款 CPU 都须要必定的指令表,写好程序来让计算机去运算。
- 晶振的频率来推动 CPU 的运算速度,若是 CPU 早就计算完了晶振还不继续往下运算,就拖慢了总体运行速度。晶振这个词咱们可能听着比较生疏,咱们日常买 CPU 上面写的多少多少 HZ 就是指的这个。( 1GHZ = 十亿赫兹 现代的 CPU 运算速度都比较快)
小结
看完了上面,我就理解了为何 C 语言之类程序不一样的平台须要进行移植,由于不一样的 CPU 指令集不同。然而像 Java 这些虚拟机语言,是在虚拟机上提供了通用的指令表,虚拟机仍是须要针对不一样的 CPU 平台进行单独编码!工作流
大家还看了什么,欢迎留言一块儿讨论。it