# 处理器结构

# 普林斯顿/冯·诺依曼架构

普林斯顿架构(又称冯·诺依曼架构)的特点是指令和数据共用同一个存储器。在这种架构中,CPU 处理器由控制单元和计算单元组成。

# 哈佛架构

与普林斯顿架构不同,哈佛架构指令存储器和数据存储器分开,使得 CPU 可以同时获取指令和数据,从而提高处理效率。


# 程序执行流程

程序通常通过以下两种方式转化为机器可以执行的指令:

  1. 编译:高级语言 -> 编译器 -> 汇编语言 -> 汇编器 -> 机器语言。这种方式将整个程序一次性编译成可执行文件。
  2. 解释:高级语言 -> 解释器 -> 机器语言。这种方式逐行解释并执行程序,不产生独立的编译文件。

# 寄存器与存储器的比较

特性 寄存器 存储器
访问方式 编号形式访问 地址形式访问
并行访问 可以同时访问不同的寄存器 不可同时访问不同的地址
数量/容量 数量少 地址范围大
访问速度

# 指令集与寻址方式

# 指令集分类

指令集根据设计理念分为三类:

  • 精简指令集(RISC):指令数量较少,每条指令功能简单。
  • 复杂指令集(CISC):指令数量较多,每条指令功能复杂。
  • 最简指令集(URISC):一种理论上存在的指令集,只有极少数指令。

# 寻址方式

寻址方式决定了处理器如何找到操作数的位置。常见的寻址方式包括:

  • 寄存器寻址:直接在指定的寄存器中读取或写入数据。
  • 立即数寻址:指令中包含的操作数就是可以直接使用的立即数
  • 基址-偏移寻址:通过“基址 + 立即数偏移量”计算出目的地址。例如,lw $s0, 4($t0) 表示从 $t0 寄存器地址加上 4 字节偏移量后的内存位置加载数据到 $s0
  • PC 相对寻址:通过“程序计数器(PC)+ 立即数”计算出目标地址。主要用于跳转指令,如 beq $t0, $t1, imm
  • 伪直接寻址:用于绝对地址跳转。它将 PC 的高 4 位固定,并用指令中的低 28 位指定目标地址。例如,j imm 属于此类。

# 其它

# 可计算性与图灵完备

  • 停机问题表明,计算机不可能求解所有问题。
  • 图灵完备性是判断一个计算系统是否能够支持通用算法的能力。一个系统如果是图灵完备的,理论上它就能模拟任何图灵机可以完成的计算。

# 多周期处理器控制信号

  • 为什么需要 IRWrite IR(指令寄存器)需要保存当前指令,直到该指令执行结束,以便在后续周期中读取和译码。
  • 为什么不需要 ALUOutControl ALU(算术逻辑单元)的输出内容只在下一个周期被读取并使用,因此不需要一个独立的控制信号来控制它的输出。

# 异常与中断

  • 异常:由内部的、可预测的事件触发,例如算术溢出(如除以零)、非法指令访存错误。它们是同步的,即在执行特定指令时发生。
  • 中断:由外部的、不可预测的事件触发,通常由 I/O 设备引起。它们是异步的,与当前正在执行的指令无关。

# 异常/中断处理

当异常或中断发生时,处理器会执行以下步骤:

  1. 跳转到异常处理程序:处理器会暂停当前程序,跳转到预先设定的异常/中断处理程序。
  2. 记录异常原因:使用一个通用异常处理器原因寄存器来记录异常发生的原因。
  3. 保存并恢复地址:保存当前程序的执行地址,以便在异常处理完成后能恢复到中断前的状态。