目录
12.4.3.1 资源冒险(resource hazard)
12.1 CPU组成
CPU需完成的任务:
- 取指令:CPU必须从存储器(寄存器、cache、主存)读取指令。
- 解释指令:必须对指令进行译码,以确定所要求的动作。
- 取数据:指令的执行可能要求对数据完成某些算术或逻辑运算。
- 处理数据:指令的执行可能要求对数据完成某些算术或逻辑运算。
- 写数据:执行的结果可能要求写数据到存储器或I/O模块。
12.2 寄存器组成
CPU中的寄存器可分为两类:用户可见寄存器(user-visible register)和控制和状态寄存器(control and status register)。
12.2.1 用户可见寄存器
用户可见寄存器可分为:通用、数据、地址、条件码。
- 通用寄存器(general-purpose register):可被程序员指派各种用途。任何通用寄存器能为任何操作码容纳操作数。在某些情况下,通用寄存器可用作寻址功能。
- 数据寄存器(data register):仅可用于保持数据而不能用于操作数地址的计算。
- 地址寄存器(address register):可以是自身某些通用性,或是专用于某种具体的寻址方式。例如:段指针(segment pointer)、变址寄存器(index register)、栈指针(stack pointer)。
- 标志寄存器(flag register)
12.2.2 控制和状态寄存器
1. 对于指令执行,有4种寄存器是至关重要的:程序计数器(PC)、指令寄存器(IR)、存储器地址寄存器(MAR)、存储器缓冲寄存器(MBR)。
- 程序计数器(PC):存有待取指令的地址。通常,在每次取指令之后,PC的内容即被CPU更改,故它总是指向将被执行的下一条指令。
- 指令寄存器(IR):存有最近取来的指令。在IR分析操作码和操作数指定符。
- 存储器地址寄存器(MAR):存有存储器位置的地址。
- 存储器缓冲寄存器(MBR):存有将被写入存储器的数据字或最近从存储器读出的字。
▲① 与存储器的数据交换使用MAR和MBR。在总线组织的系统中,MAR直接与地址总线相连,MBR直接与数据总线相连,然后用户可见寄存器再与MBR交换数据。
② ALU可对MBR和用户可见寄存器直接存取。
2. 很多CPU设计都包括常称为程序状态字(program status word,PSW)的一个或一组寄存器。通常PSW包括下列字段或标志:
- 符号(sign):容纳最后算数运算结果的符号位。
- 零(zero):当结果是0时被置位。
- 进位(carry):若操作导致最高位有向上的进位(加法)或借位(减法)时被置位。用于多字算术运算。
- 等于(equal):若逻辑比较的结果相等,则置位。
- 溢出(overflow):用于指示算术溢出。
- 中断允许/禁止用于允许或禁止中断。
- 监管(supervisor):指出CPU是执行在监管模式中还是在用户模式中。某些特权的指令只能在监管模式中执行,某些存储区域也只能在监管模式中被访问。
12.3 指令周期
指令周期包括如下子周期:
- 取指(fe