寄存器
← 存储器导航 | ← 计算机组成原理知识地图 | → 操作系统:PSW 应用 | ← 主页
它是什么
寄存器是最靠近 CPU 控制单元和运算单元的一层存储器。CPU 真正在执行指令时,最希望数据就在寄存器里,因为这里读写最快。
核心特点
- 速度最快,通常要求在半个 CPU 时钟周期内完成读写。
- 数量很少,一般只有几十到几百个。
- 单个寄存器能放的数据也不多,32 位 CPU 常见是 4 字节,64 位 CPU 常见是 8 字节。
为什么它这么重要
CPU 执行一条指令时,不只是做加减乘除,还要取指、译码、控制执行。如果寄存器访问慢,整条指令的节奏都会被拖慢,所以寄存器虽然小,却是整台机器里最“值钱”的位置之一。
程序状态字(PSW)
PSW 是一种特殊寄存器,集中存放 CPU 当前运行状态的一堆标志位。它不存数据,存的是 CPU 此刻”是什么状态”。
常见标志位
| 标志/字段 | 作用 |
|---|---|
| 模式位 (Mode Bit) | 区分 CPU 当前是内核态(0) 还是用户态(1)。特权指令只能在特定模式执行 |
| 条件码 / 算术标志 | ALU 运算结果特征:零标志(ZF)、进位标志(CF)、溢出标志(OF)、符号标志(SF),供条件跳转指令判断 |
| 中断使能位 (IF) | 控制 CPU 是否响应可屏蔽中断。关中断时硬件中断被暂时屏蔽 |
| 中断屏蔽字 | 更精细地控制哪些优先级的中断可以打断当前执行 |
不同架构叫法不同:x86 叫 EFLAGS/RFLAGS,ARM 叫 CPSR(Current Program Status Register),本质都是 PSW。
在操作系统中的角色
| 场景 | PSW 怎么参与 |
|---|---|
| 系统调用入口 | 硬件自动把当前 PSW 压栈 → 切模式位到内核态 → 跳转内核处理程序;返回时弹出恢复用户态 |
| 上下文切换 | PSW 随 PC、通用寄存器一起保存到进程 PCB,恢复进程时一起弹回 |
| 关/开中断 | 临界区关中断本质就是在改 PSW 的中断使能位 |
操作系统只是 PSW 的使用者,PSW 本身是 CPU 硬件提供的机制。详见 CPU 运行模式与特权指令。
通用寄存器 vs PSW
| 通用寄存器 (GPR) | PSW | |
|---|---|---|
| 存什么 | 数据、地址、中间结果 | CPU 状态标志 |
| 谁读写 | 程序指令直接读写 | 硬件自动更新 + 特权指令修改 |
| 典型数量 | 几十个 | 1 个 |
| 上下文切换 | 保存/恢复 | 同样保存/恢复 |
继续看
- [CPU Cache](./CPU Cache.md)
- 存储器层次结构