CPU 执行程序的秘密,藏在了这 15 张图里( 三 )
- 首先要通过「地址总线」来指定内存的地址;
- 再通过「数据总线」来传输数据;
文章插图
线路位宽与 CPU 位宽数据是如何通过线路传输的呢?其实是通过操作电压 , 低电压表示 0 , 高压电压则表示 1 。
如果构造了高低高这样的信号 , 其实就是 101 二进制数据 , 十进制则表示 5 , 如果只有一条线路 , 就意味着每次只能传递 1 bit 的数据 , 即 0 或 1 , 那么传输 101 这个数据 , 就需要 3 次才能传输完成 , 这样的效率非常低 。
这样一位一位传输的方式 , 称为串行 , 下一个 bit 必须等待上一个 bit 传输完成才能进行传输 。 当然 , 想一次多传一些数据 , 增加线路即可 , 这时数据就可以并行传输 。
为了避免低效率的串行传输的方式 , 线路的位宽最好一次就能访问到所有的内存地址 。 CPU 要想操作的内存地址就需要地址总线 , 如果地址总线只有 1 条 , 那每次只能表示 「0 或 1」这两种情况 , 所以 CPU 一次只能操作 2 个内存地址 , 如果想要 CPU 操作 4G 的内存 , 那么就需要 32 条地址总线 , 因为 2 ^ 32 = 4G 。
知道了线路位宽的意义后 , 我们再来看看 CPU 位宽 。
CPU 的位宽最好不要小于线路位宽 , 比如 32 位 CPU 控制 40 位宽的地址总线和数据总线的话 , 工作起来就会非常复杂且麻烦 , 所以 32 位的 CPU 最好和 32 位宽的线路搭配 , 因为 32 位 CPU 一次最多只能操作 32 位宽的地址总线和数据总线 。
如果用 32 位 CPU 去加和两个 64 位大小的数字 , 就需要把这 2 个 64 位的数字分成 2 个低位 32 位数字和 2 个高位 32 位数字来计算 , 先加个两个低位的 32 位数字 , 算出进位 , 然后加和两个高位的 32 位数字 , 最后再加上进位 , 就能算出结果了 , 可以发现 32 位 CPU 并不能一次性计算出加和两个 64 位数字的结果 。
对于 64 位 CPU 就可以一次性算出加和两个 64 位数字的结果 , 因为 64 位 CPU 可以一次读入 64 位的数字 , 并且 64 位 CPU 内部的逻辑运算单元也支持 64 位数字的计算 。
但是并不代表 64 位 CPU 性能比 32 位 CPU 高很多 , 很少应用需要算超过 32 位的数字 , 所以如果计算的数额不超过 32 位数字的情况下 , 32 位和 64 位 CPU 之间没什么区别的 , 只有当计算超过 32 位数字的情况下 , 64 位的优势才能体现出来 。
另外 , 32 位 CPU 最大只能操作 4GB 内存 , 就算你装了 8 GB 内存条 , 也没用 。 而 64 位 CPU 寻址范围则很大 , 理论最大的寻址空间为 2^64 。
文章插图
程序执行的基本过程在前面 , 我们知道了程序在图灵机的执行过程 , 接下来我们来看看程序在冯诺依曼模型上是怎么执行的 。
程序实际上是一条一条指令 , 所以程序的运行过程就是把每一条指令一步一步的执行起来 , 负责执行指令的就是 CPU 了 。
文章插图
那 CPU 执行程序的过程如下:
- 程序员为教师妻子开发应用:将iPhone变成文档摄像头
- 飞书文档微信小程序审核被卡?字节跳动副总裁谢欣:希望腾讯停止无理由封杀
- 多家快递暂停发往河北省快件,顺丰表示先暂停三天,京东小程序已无法下单
- 2021年换手机哪个配置最重要,CPU只能排第三位
- 8核Zen3 AMD新CPU现身:锐龙7 5700G
- 全新8核国产CPU深入探秘:马上能买到
- 字节跳动高管喊话腾讯,称“飞书文档”小程序审核被卡近两月
- 悔哭!一程序员误把7500个比特币当垃圾扔掉,估算约2.4亿美元
- 苹果改变立场 称macOS实用程序Amphetamine可继续留在Mac应用商店中
- 2.4亿美元打水漂!程序员小哥把7500个比特币当垃圾扔掉 硬盘找不回