指令周期与存储程序:计算机系统到底是如何工作的 📅 2026/7/23 23:17:43 指令周期与存储程序计算机系统到底是如何工作的核心要点Key Takeaways计算机能自动工作的本质是存储程序指令顺序存放PC 自动递增机器陷入永不停歇的取指—执行循环。一条指令的完整指令周期分为若干机器周期每个机器周期分为若干时钟周期——这是程序—指令—机器—时钟四级时间层次。取指阶段对任何指令都一样执行阶段因操作码而异——这是流水线重叠不同阶段的前提。总线是各部件共享的通信干道分时复用必须靠总线仲裁协调否则数据会撞车。时序控制把所有动作钉在时钟节拍上确保信号稳定后才采样——这是可靠性的底层保障。一、把自动工作拆开看计算机能自动运行程序这句话人人会说但很少有人追问靠什么自动答案不是 CPU 本身而是存储程序 PC 自增 时序驱动三件事合在一起。存储程序指令与数据同放主存CPU 不需要知道下一条指令是什么只要按地址去取。PC 自增取完一条指令后 PC 自动指向下一条机器由此进入循环。时序驱动每个动作都被节拍约束不会做完就停而是被时钟推着进入下一拍。三者缺一不可。早期 ENIAC 需要插拔线缆编程正是缺了存储程序它每次换任务都要重新接线因此不算自动。实践建议Best Practices论述题答计算机如何自动工作时三要素缺一不得分。只答CPU 执行指令是无效答案。二、指令周期四级时间层次计算机的时间层次有一套清晰的尺度阶梯408 几乎每年都考层次含义关系指令周期执行一条指令的全过程1 指令周期 若干机器周期机器周期完成一个基本操作如访存1 机器周期 若干时钟周期时钟周期最小节拍单位由主频决定不同指令的机器周期数不同取指周期任何指令都要且步骤完全一致。间址周期只有访存类、操作数在内存的指令才需要。执行周期因操作码而异是差异最大的部分。中断周期响应中断时插入CPU 保存现场。这是流水线为什么能加速的根本原因既然取指阶段对所有指令都一样就可以在指令 A 执行时让指令 B 取指。流水线加速的本质不是并行算得更快而是重叠不同阶段。⚠️注意事项Common Pitfalls流水线和并行是两件事。单条指令不会被流水线加速。流水线吞吐率提升来自时间重叠不是单条指令变快。三、取指—执行的数据通路详解以一条加法指令ADD R1, [0x100]把内存 0x100 的值加到 R1为例它包含取指、间址、执行、写回四个机器周期1. 取指周期PC → MAR → 地址总线 → 主存主存把指令经数据总线 → MDR → IRPC 自增指向下一条2. 间址周期IR 中的地址码 0x100 → MAR → 主存主存取操作数 → MDR3. 执行周期MDR 与 R1 送入 ALUALU 执行加法4. 写回周期ALU 结果写回 R1⚠️注意事项Common Pitfalls间址周期并不是所有指令都有。寄存器—寄存器型指令操作数全在寄存器没有间址周期只有操作数在内存直接寻址、间接寻址才涉及。四、总线共享干道的分时复用各部件之间靠总线传输。总线按功能分三类数据总线双向宽度决定一次能传几位。地址总线单向宽度决定寻址空间n 位 → 2^n。控制总线传输控制信号读/写/中断请求等。总线按结构又分单总线结构CPU、主存、I/O 共享一条总线结构简单但争用严重。双总线结构以 CPU 为中心一条 M 总线连主存、一条 I/O 总线连 I/O。三总线结构主存总线、I/O 总线、DMA 总线分离吞吐高但复杂。既然共享就必须仲裁。总线仲裁决定谁能在下一拍占用总线集中仲裁链式查询、计数器查询、独立请求由总线仲裁器集中决定。分布仲裁各模块自行竞争决策。⚠️注意事项Common Pitfalls地址总线宽度 N 能寻址 2^N 字节而非 2^N 位。单位是字节。五、时序控制把动作钉在节拍上机器周期的进一步细分就是节拍。每个节拍对应一个时钟周期控制器在固定节拍发出固定控制信号确保地址稳定后再读、数据稳定后再写。时序控制的标志是机器周期信号、节拍信号、脉冲信号的组合。它保证了三件事信号在建立时间之后才被采样避免读到乱码。各部件按统一节拍走不会某个部件跑得太快。总线分时复用有明确边界不会撞车。实践建议Best Practices考时序时记住一句话——时序不是为了让机器变快而是为了让它对。可靠性优先于速度。常见误区归纳⚠️注意事项Common Pitfalls以为存储程序只是把程序存起来忽略了CPU 按地址自动取指才算自动。把流水线加速误解为单条指令变快。忽略间址周期只有访存类指令才有。混淆地址总线位与字节单位。把总线仲裁理解成谁先来谁用忽略集中/分布两种策略。延伸阅读Further Reading《计算机组成原理》唐朔飞“系统总线”存储器章节。Patterson,Computer Organization and Design的 MIPS 单周期/多周期 datapath。常见问题Q1计算机为什么能自动地连续执行程序因为指令与数据同放主存PC 自动递增指向下一条时序电路按节拍循环产生控制信号三者共同构成了永不停歇的取指—执行循环。Q2指令周期、机器周期、时钟周期是什么关系指令周期是执行一条指令的全过程包含若干机器周期每个机器周期完成一个基本操作如取指、访存又包含若干时钟周期。时钟周期是机器最小的节拍单位由主频决定。Q3间址周期何时出现当指令的操作数在主存中直接寻址或间接寻址时取指后需要一次访存取出操作数这一步就是间址周期。寄存器—寄存器型指令没有间址周期。Q4流水线为什么能提升吞吐率因为取指阶段对所有指令完全一致可以让相邻指令的不同阶段在同一时刻重叠执行。加速来自时间重叠单条指令的执行时间并不变短。Q5总线仲裁解决什么问题多个部件争用同一共享总线时仲裁决定下一拍由谁占用避免数据撞车确保总线分时复用有序进行。