CPU 执行程序的秘密,藏在了这 15 张图里( 二 )
- 最后 , 运算单元将结果返回给控制单元 , 控制单元将结果传输给读写头 , 读写头向右移动 , 把结果 3 写入到纸带的格子中;
文章插图
通过上面的图灵机计算 1 + 2 的过程 , 可以发现图灵机主要功能就是读取纸带格子中的内容 , 然后交给控制单元识别字符是数字还是运算符指令 , 如果是数字则存入到图灵机状态中 , 如果是运算符 , 则通知运算符单元读取状态中的数值进行计算 , 计算结果最终返回给读写头 , 读写头把结果写入到纸带的格子中 。
事实上 , 图灵机这个看起来很简单的工作方式 , 和我们今天的计算机是基本一样的 。 接下来 , 我们一同再看看当今计算机的组成以及工作方式 。
文章插图
冯诺依曼模型在 1945 年冯诺依曼和其他计算机科学家们提出了计算机具体实现的报告 , 其遵循了图灵机的设计 , 而且还提出用电子元件构造计算机 , 并约定了用二进制进行计算和存储 , 还定义计算机基本结构为 5 个部分 , 分别是中央处理器(CPU)、内存、输入设备、输出设备、总线 。
文章插图
这 5 个部分也被称为冯诺依曼模型 , 接下来看看这 5 个部分的具体作用 。
内存我们的程序和数据都是存储在内存 , 存储的区域是线性的 。
数据存储的单位是一个二进制位(bit) , 即 0 或 1 。 最小的存储单位是字节(byte) , 1 字节等于 8 位 。
内存的地址是从 0 开始编号的 , 然后自增排列 , 最后一个地址为内存总字节数 - 1 , 这种结构好似我们程序里的数组 , 所以内存的读写任何一个数据的速度都是一样的 。
中央处理器中央处理器也就是我们常说的 CPU , 32 位和 64 位 CPU 最主要区别在于一次能计算多少字节数据:
- 32 位 CPU 一次可以计算 4 个字节;
- 64 位 CPU 一次可以计算 8 个字节;
之所以 CPU 要这样设计 , 是为了能计算更大的数值 , 如果是 8 位的 CPU , 那么一次只能计算 1 个字节 0~255 范围内的数值 , 这样就无法一次完成计算 10000 * 500, 于是为了能一次计算大数的运算 , CPU 需要支持多个 byte 一起计算 , 所以 CPU 位宽越大 , 可以计算的数值就越大 , 比如说 32 位 CPU 能计算的最大整数是 4294967295 。
CPU 内部还有一些组件 , 常见的有寄存器、控制单元和逻辑运算单元等 。 其中 , 控制单元负责控制 CPU 工作 , 逻辑运算单元负责计算 , 而寄存器可以分为多种类 , 每种寄存器的功能又不尽相同 。
CPU 中的寄存器主要作用是存储计算时的数据 , 你可能好奇为什么有了内存还需要寄存器?原因很简单 , 因为内存离 CPU 太远了 , 而寄存器就在 CPU 里 , 还紧挨着控制单元和逻辑运算单元 , 自然计算时速度会很快 。
常见的寄存器种类:
- 通用寄存器 , 用来存放需要进行运算的数据 , 比如需要进行加和运算的两个数据 。
- 程序计数器 , 用来存储 CPU 要执行下一条指令「所在的内存地址」 , 注意不是存储了下一条要执行的指令 , 此时指令还在内存中 , 程序计数器只是存储了下一条指令的地址 。
- 指令寄存器 , 用来存放程序计数器指向的指令 , 也就是指令本身 , 指令被执行完成之前 , 指令都存储在这里 。
- 地址总线 , 用于指定 CPU 将要操作的内存地址;
推荐阅读
- 程序员为教师妻子开发应用:将iPhone变成文档摄像头
- 飞书文档微信小程序审核被卡?字节跳动副总裁谢欣:希望腾讯停止无理由封杀
- 多家快递暂停发往河北省快件,顺丰表示先暂停三天,京东小程序已无法下单
- 2021年换手机哪个配置最重要,CPU只能排第三位
- 8核Zen3 AMD新CPU现身:锐龙7 5700G
- 全新8核国产CPU深入探秘:马上能买到
- 字节跳动高管喊话腾讯,称“飞书文档”小程序审核被卡近两月
- 悔哭!一程序员误把7500个比特币当垃圾扔掉,估算约2.4亿美元
- 苹果改变立场 称macOS实用程序Amphetamine可继续留在Mac应用商店中
- 2.4亿美元打水漂!程序员小哥把7500个比特币当垃圾扔掉 硬盘找不回