计算机的大脑:实现简易的 CPU

咱们已经看了基本逻辑电路,运算电路,内存的概述。今天咱们用着几个东西来组装 CPU。编码

CPU 简易结构图

image

咱们看到这张图,咱们的简易 CPU 有运算逻辑部件、寄存器部件和控制部件(图中的指令解析)cdn

CPU 工做流程

CPU 的运行有读取指令,解析指令,运行三个阶段。 咱们模拟一下使用计算机来计算一个 1+1,看看计算机是如何工做的! 假设咱们已经写好了咱们的程序,并放到了内存中,以下图所示: blog

image

假如咱们 指令地址寄存器 的地址为 00000000内存

  1. CPU 通电首先读取指令地址寄存器的地址(能够理解成系统第一条指令),而后读取相应的内存数据。
  2. 获得 00010001 ,而后拆分命令是 0001 数据是 0001(假设 0001 是加载到 寄存器1 中)
  3. 执行命令把 0001 存储到 寄存器1 中,把下一个地址 00000001 存到 指令地址寄存器 中
  4. 而后开始第二轮 读取内存地址 00000001 的数据
  5. 获得 00110001 ,而后拆分命令是 0011 数据是 0001(假设 0011 是加载到 寄存器2 中)
  6. 执行命令把 0001 存储到 寄存器2 中,把下一个地址 00000011 存到 指令地址寄存器 中
  7. 而后开始第三轮 读取内存地址 00000011 的数据
  8. 获得 10000111 ,而后拆分命令是 1000 数据是 0111(假设 1000 是对两个寄存器进行加法运算)
  9. 执行命令把 寄存器1 寄存器2 的值进行相加。

OK! 咱们看了上边流程,咱们还有几个问题?虚拟机

  1. 咱们还隐约的发现还缺个东西没有说也就是「指令表」,每款 CPU 都须要必定的指令表,写好程序来让计算机去运算。
  2. 晶振的频率来推动 CPU 的运算速度,若是 CPU 早就计算完了晶振还不继续往下运算,就拖慢了总体运行速度。晶振这个词咱们可能听着比较生疏,咱们日常买 CPU 上面写的多少多少 HZ 就是指的这个。( 1GHZ = 十亿赫兹 现代的 CPU 运算速度都比较快)

小结

看完了上面,我就理解了为何 C 语言之类程序不一样的平台须要进行移植,由于不一样的 CPU 指令集不同。然而像 Java 这些虚拟机语言,是在虚拟机上提供了通用的指令表,虚拟机仍是须要针对不一样的 CPU 平台进行单独编码!工作流

大家还看了什么,欢迎留言一块儿讨论。it

相关文章
相关标签/搜索