汇编语言01

181 阅读4分钟

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 需要从指定地址读取数据

  1. 存储器接收请求并准备数据(这里的存储器是指 RAM) (1)存储器芯片接收到地址和读命令后,在**数据总线(Data Bus)**上准备相应地址的数据。 (2)由于存储器的访问需要一定时间,可能会有等待周期(Wait States),直到数据准备好。

4.CPU 读取数据 CPU 通过数据总线接收存储器返回的数据,并将其存入寄存器(Register)或缓存(Cache).

简单类比 可以把 CPU 读取内存数据的过程比作借书: 地址总线 = 书架编号(告诉图书管理员你要哪本书) 控制总线 = 借书请求(告诉管理员你要借书) 数据总线 = 传递书的通道(把书送到你手上)

CPU 内部主要组成部分

  1. 寄存器(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)
  2. 算术逻辑单元(ALU, Arithmetic Logic Unit) ALU 负责执行算术运算和逻辑运算,是 CPU 的核心计算单元。 算术运算:加法、减法、乘法、除法 逻辑运算:与(AND)、或(OR)、非(NOT)、异或(XOR) 比较运算:大于、小于、等于 移位运算:左移、右移
  3. 指令流水线(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 的数据:

  1. 地址总线 发送 0x1000 到内存控制器。
  2. 控制总线 发送 Memory Read(读) 命令。
  3. 数据总线 传输 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)                 |   |
|  +--------------------------------------------+   |
+----------------------------------------------------+