地址线 / 数据线 / 控制线 → 取指 / 寻址 / 读 / 写,信号级到过程级完整拆解
CPU 和内存之间通过 地址总线 数据总线 控制总线 三组线路通信。 无论取指、读数据、写数据,本质都是在这三组线上发出不同的信号组合。
CPU 在任何操作之前,必须先通过地址总线发送目标地址。地址线是单向的(CPU→内存), 每根线传输 1 个 bit(0 或 1),32根地址线可寻址 2³² = 4GB 空间。点击下方按钮查看不同位数能寻址多少空间。
数据总线是双向的:读操作时内存→CPU,写操作时 CPU→内存。 数据线的宽度决定了一次能传输多少 bit。64位 CPU 的数据总线有 64 根,一次可传 8 字节。 点击按钮看数据在线流动的过程。
控制线是指挥官。CPU 通过控制线告诉内存:"我要读还是写?"、"数据准备好了吗?"。
核心控制信号包括:
READ# 读信号
WRITE# 写信号
M/IO# 内存/IO选择
READY 就绪信号
CLK 时钟同步
内存内部像一个巨大的表格。地址经过行解码器和列解码器,定位到具体的存储单元。 点击任意一个单元格,查看地址如何一步步分解为 Bank/Row/Column。
读数据 = CPU 从内存取一个值。过程分 5 步:①CPU发地址 ②CPU拉低READ#信号 ③内存收到后查地址 ④内存把数据放到数据总线 ⑤CPU采样数据。点击"逐步播放"观看每一步的信号变化。
写数据 = CPU 往内存存一个值。过程分 5 步:①CPU发地址 ②CPU把数据放到数据总线 ③CPU拉低WRITE#信号 ④内存收到后把数据存到目标单元 ⑤内存拉高READY确认完成。
取指 = 读数据的特殊形式。CPU 把 PC(程序计数器)的值作为地址发到地址总线, 内存返回该地址处的机器码(指令)到指令寄存器(IR)。本质上就是一次读操作,但地址来源是 PC 而非通用寄存器。