CPU 访问内存(RAM)的过程
1.CPU 通过地址线发送地址信息
(1)CPU 需要从内存读取数据,因此它首先通过地址总线(Address Bus)发送目标内存单元的地址,例如“3”这个地址。发送到内存控制器或直接对应的内存单元
(2)地址总线的宽度决定了 CPU 能够访问的最大内存空间。例如,16 位地址总线可以寻址 2的16次方=65536 个地址
2.CPU 通过控制线发送内存读命令 (1)控制总线(Control Bus)用于发送控制信号,CPU 通过它发出“内存读取(Memory Read)”命令。 (2)这个信号告诉存储器芯片,CPU 需要从指定地址读取数据
- 存储器接收请求并准备数据(这里的存储器是指 RAM) (1)存储器芯片接收到地址和读命令后,在**数据总线(Data Bus)**上准备相应地址的数据。 (2)由于存储器的访问需要一定时间,可能会有等待周期(Wait States),直到数据准备好。
4.CPU 读取数据 CPU 通过数据总线接收存储器返回的数据,并将其存入寄存器(Register)或缓存(Cache).
简单类比 可以把 CPU 读取内存数据的过程比作借书: 地址总线 = 书架编号(告诉图书管理员你要哪本书) 控制总线 = 借书请求(告诉管理员你要借书) 数据总线 = 传递书的通道(把书送到你手上)
CPU 内部主要组成部分
- 寄存器(Registers) (1)通用寄存器(General Purpose Registers) EAXRAX(累加器):主要用于算术运算,函数返回值也通常存放在此。 EBXRBX(基址寄存器):用于存储内存地址,也可以作为一般用途使用。 ECXRCX(计数寄存器):常用于循环中的计数器,以及字符串操作和移位指令。 EDXRDX(数据寄存器):辅助EAXRAX进行乘除法运算,也可用于IO寻址。 ESIRSI(源变址寄存器):用于字符串或数组操作时指向源数据。 EDIRDI(目的变址寄存器):用于字符串或数组操作时指向目的数据。 ESPRSP(堆栈指针寄存器):指向当前堆栈顶部。 EBPRBP(基址指针寄存器):用于保存当前函数帧的基地址,帮助访问局部变量和函数参数。 (2)段寄存器(Segment Registers CS(代码段寄存器):包含当前执行代码所在的段的起始地址。 DS(数据段寄存器):指向程序的数据段。 SS(堆栈段寄存器):指向程序的堆栈段。 ES, FS, GS:额外的数据段寄存器,可以用于不同的目的。 (3)指令指针(Instruction Pointer) EIPRIP:指示下一条要执行的指令的位置。 (4)标志寄存器(Flags Register)
- 算术逻辑单元(ALU, Arithmetic Logic Unit) ALU 负责执行算术运算和逻辑运算,是 CPU 的核心计算单元。 算术运算:加法、减法、乘法、除法 逻辑运算:与(AND)、或(OR)、非(NOT)、异或(XOR) 比较运算:大于、小于、等于 移位运算:左移、右移
- 指令流水线(Pipeline
现代 CPU 采用指令流水线(Pipeline)来提高执行效率,相当于“工厂流水线” ,将一条指令的执行拆分成多个阶段并行执行。
📌 典型的 5 级流水线:
1️⃣ 取指令(IF, Instruction Fetch) :从内存读取指令
2️⃣ 指令解码(ID, Instruction Decode) :解析指令
3️⃣ 执行(EX, Execute) :ALU 进行计算
4️⃣ 访存(MEM, Memory Access) :访问内存(如果需要)
5️⃣ 写回(WB, Write Back) :把计算结果存回寄存器
5. 缓存(Cache)
-
L1 缓存(一级缓存) :每个 CPU 核心独有,速度最快,容量最小(KB 级)。
-
L2 缓存(二级缓存) :每个核心独立或多个核心共享,速度比 L1 缓慢但容量更大(MB 级)。
-
L3 缓存(三级缓存) :通常由所有 CPU 核心共享,容量最大(MB 级),但速度比 L2 慢。
6. 总线接口单元(BIU, Bus Interface Unit)
BIU 负责 CPU 与外部设备(如 RAM、I/O 设备)之间的通信。
📌 主要类型:
- 地址总线(Address Bus) :CPU 发送内存地址。
- 数据总线(Data Bus) :传输数据。
- 控制总线(Control Bus) :发送控制信号,如读/写命令。
💡 示例:
当 CPU 需要读取 RAM 地址 0x1000 的数据:
- 地址总线 发送
0x1000到内存控制器。 - 控制总线 发送 Memory Read(读) 命令。
- 数据总线 传输 RAM 读取到的数据返回 CPU。
7. 内存控制器(Memory Controller)
现代 CPU 内部集成了内存控制器(IMC, Integrated Memory Controller) ,负责管理 CPU 与 RAM 之间的数据交换。
📌 作用:
- 解析 CPU 发送的内存请求。
- 选择正确的内存模块(如 DDR4、DDR5)。
- 管理 RAM 的时序和数据传输。
💡 示例:
如果 CPU 需要从 RAM 读取数据,它会通过内存控制器发送请求,并等待 RAM 返回数据。
总结:CPU 内部结构图
+----------------------------------------------------+
| CPU |
| +--------------------------------------------+ |
| | 1. 寄存器(Registers) | |
| +--------------------------------------------+ |
| | 2. 算术逻辑单元(ALU) | |
| +--------------------------------------------+ |
| | 3. 控制单元(CU) | |
| +--------------------------------------------+ |
| | 4. 指令流水线(Pipeline) | |
| +--------------------------------------------+ |
| | 5. 缓存(L1, L2, L3) | |
| +--------------------------------------------+ |
| | 6. 总线接口单元(BIU) | |
| +--------------------------------------------+ |
| | 7. 内存控制器(IMC) | |
| +--------------------------------------------+ |
| | 8. 多核架构(Multi-Core) | |
| +--------------------------------------------+ |
+----------------------------------------------------+