CPU是如何执行程序的

简介: CPU是如何执行程序的

在 1945 年冯诺依曼和其他计算机科学家们提出了计算机具体实现的报告,其遵循了图灵机的设计,⽽且还提出⽤电⼦元件构造计算机,并约定了⽤⼆进制进⾏计算和存储,还定义计算机基本结构为 5 个部分,分别是中央处理器(CPU)、内存、输⼊设备、输出设备、总线。

我们的程序和数据都是存储在内存,存储的区域是线性的。

数据存储的单位是⼀个⼆进制位(bit) ,即 0 或 1。最⼩的存储单位是字节(byte) , 1 字节等于 8 位。内存的地址是从 0 开始编号的,然后⾃增排列,最后⼀个地址为内存总字节数 - 1,这种结构好似我们程序⾥的数组,所以内存的读写任何⼀个数据的速度都是⼀样的。
中央处理器也就是我们常说的 CPU, 32 位和 64 位 CPU 最主要区别在于⼀次能计算多少字节数据:

  • 32 位 CPU ⼀次可以计算 4 个字节;
  • 64 位 CPU ⼀次可以计算 8 个字节;

这⾥的 32 位和 64 位,通常称为 CPU 的位宽。

之所以 CPU 要这样设计,是为了能计算更⼤的数值,如果是 8 位的 CPU,那么⼀次只能计算 1 个字节0~255 范围内的数值,这样就⽆法⼀次完成计算 10000 * 500 ,于是为了能⼀次计算⼤数的运算,CPU 需要⽀持多个 byte ⼀起计算,所以 CPU 位宽越⼤,可以计算的数值就越⼤,⽐如说 32 位 CPU 能计算的最⼤整数是 4294967295 。

CPU 内部还有⼀些组件,常⻅的有寄存器、控制单元和逻辑运算单元等。其中,控制单元负责控制 CPU⼯作,逻辑运算单元负责计算,⽽寄存器可以分为多种类,每种寄存器的功能⼜不尽相同。

CPU 中的寄存器主要作⽤是存储计算时的数据,你可能好奇为什么有了内存还需要寄存器?原因很简单,因为内存离 CPU 太远了,⽽寄存器就在 CPU ⾥,还紧挨着控制单元和逻辑运算单元,⾃然计算时速度会很快。

常⻅的寄存器种类:

  • 通⽤寄存器,⽤来存放需要进⾏运算的数据,⽐如需要进⾏加和运算的两个数据。
  • 程序计数器,⽤来存储 CPU 要执⾏下⼀条指令「所在的内存地址」,注意不是存储了下⼀条要执⾏的指令,此时指令还在内存中,程序计数器只是存储了下⼀条指令的地址。
  • 指令寄存器,⽤来存放程序计数器指向的指令,也就是指令本身,指令被执⾏完成之前,指令都存储在这⾥。

总线是⽤于 CPU 和内存以及其他设备之间的通信,总线可分为 3 种:

  • 地址总线,⽤于指定 CPU 将要操作的内存地址;
  • 数据总线,⽤于读写内存的数据;
  • 控制总线,⽤于发送和接收信号,⽐如中断、设备复位等信号, CPU 收到信号后⾃然进⾏响应,这时也需要控制总线;

当 CPU 要读写内存数据的时候,⼀般需要通过两个总线:

  • ⾸先要通过「地址总线」来指定内存的地址;
  • 再通过「数据总线」来传输数据;

输⼊设备向计算机输⼊数据,计算机经过计算后,把数据输出给输出设备。期间,如果输⼊设备是键盘,按下按键时是需要和 CPU 进⾏交互的,这时就需要⽤到控制总线了。

相关文章
|
数据采集 安全 Windows
解决关于Windows Defender Antivirus Service自启造成运行python程序时,Windows的cpu和内存占用过高问题
启用“关闭Windwos defender”服务解决阿里云Windows服务器的卡顿问题,并列举了网上一些错误的解决方法。
11576 3
解决关于Windows Defender Antivirus Service自启造成运行python程序时,Windows的cpu和内存占用过高问题
|
5月前
|
C++
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
55 0
|
7月前
|
缓存 C语言 计算机视觉
程序与技术分享:CPU0处理器的架构及应用
程序与技术分享:CPU0处理器的架构及应用
|
6月前
|
缓存 弹性计算 数据库
阿里云2核4G服务器支持多少人在线?程序效率、并发数、内存CPU性能、公网带宽多因素
2核4G云服务器支持的在线人数取决于多种因素:应用效率、并发数、内存、CPU、带宽、数据库性能、缓存策略、CDN和OSS使用,以及用户行为和系统优化。阿里云的ECS u1实例2核4G配置,适合轻量级应用,实际并发量需结合具体业务测试。
107 0
阿里云2核4G服务器支持多少人在线?程序效率、并发数、内存CPU性能、公网带宽多因素
|
Java Go 开发工具
如何排查Go 程序 CPU 占用过高问题
如何排查Go 程序 CPU 占用过高问题
1797 0
如何排查Go 程序 CPU 占用过高问题
|
C++ 索引 Windows
调试实战——程序CPU占用率飙升,你知道如何快速定位吗?
程序CPU占用率飙升,你知道如何快速定位吗?
|
缓存 算法 Linux
程序绑定 CPU 核心
程序绑定 CPU 核心
489 0
|
数据可视化 Java Windows
windows系统启动java程序限制cpu核心数
windows系统启动java程序限制cpu核心数
660 0
windows系统启动java程序限制cpu核心数
|
存储 消息中间件 Kafka
【操作系统入门到成神系列 一】CPU 是如何执行程序的?
【操作系统入门到成神系列 一】CPU 是如何执行程序的?
【操作系统入门到成神系列 一】CPU 是如何执行程序的?
|
存储 缓存 JavaScript
CPU如何执行程序
1. CPU = 运算单元 + 数据单元 + 控制单元 2. CPU 只能识别「二进制」的指令 3. 总线像连接 CPU 和内存这两个设备的高速公路 4. 执行高级语言的两种方式:1. 解释执行 2. 编译执行 5. 汇编语言和机器语言是一一对应的 6. 内存中的每个存储空间都有其对应的独一无二的地址 7. CPU时钟周期:取出指令、分析指令、执行指令这三个过程
210 0