这篇文章上次修改于 2243 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
我们已经看了基本逻辑电路,运算电路,内存的概述。今天我们用着几个东西来组装 CPU。
CPU 简易结构图
我们看到这张图,我们的简易 CPU 有运算逻辑部件、寄存器部件和控制部件(图中的指令解析)
CPU 工作流程
CPU 的运行有读取指令,解析指令,运行三个阶段。
我们模拟一下使用计算机来计算一个 1+1,看看计算机是如何工作的!
假设我们已经写好了我们的程序,并放到了内存中,如下图所示:
假如我们 指令地址寄存器 的地址为 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 平台进行单独编码!
你们还看了什么,欢迎留言一起讨论。
没有评论