Loading

计算机组成原理(唐朔飞)——CPU结构和功能

CPU的结构和功能

CPU的结构

CPU功能

  • CPU实质:CPU包括运算器和控制器两大部分。
  • 控制器的基本功能:取指令、分析指令和执行指令

image

CPU的结构框图

image

CPU的寄存器

image

解释其中几种寄存器:

  1. MAR:存储器地址寄存器,存放将被访问的存储单元的地址。
  2. MDR:存储器数据寄存器,存放欲存入存储器种的数据或最近从存储器种读出的数据。
  3. PC:程序计数器,存放现行指令的地址,通常具有计数功能。
  4. IR:指令寄存器,存放当前欲执行的指令。
  5. PSW:程序状态字寄存器,用来存放条件码和其他状态信息。

指令周期

CPU每取出并执行一条指令所需的全部时间称为指令周期。
image

解释:

  • 取指周期:取指令
  • 间址周期:取有效地址
  • 执行周期:取操作数
  • 中断周期:保存程序断点

指令周期的数据流

1. 取指周期的数据流

image

描述:

  1. PC存放现行指令的地址,将地址送到MAR,由MAR送至地址总线到存储器;
  2. 控制部件CU通过控制总线向存储器发读命令;
  3. 存储器通过数据线把数据传给MDR,MDR把数据传给IR,IR存放现行指令;
  4. 然后让CU控制PC+1,形成下一条指令的地址。

2. 间址周期的数据流

image

描述:

  1. 取指结束后,Ad(IR)表示指令中的地址码部分,将指令IR中的形式地址传入MAR,再通过地址总线传到存储器中
  2. CU通过控制总线向存储器发送读命令
  3. 主存响应并通过数据线传送数据到MDR,MDR里存放的就是有效地址

3. 执行周期的数据流

  • 执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产 生执行结果。
  • 不同指令的执行周期操作不同,因此没有统一的数据流向

4. 中断周期的数据流

image

描述:

  1. CU把用于保存程序断点的存储器特殊地址送往MAR,如果特殊地址就是栈指针,那就将SP-1,并把SP送到MAR,再通过地址总线到存储器
  2. CU通过控制总线向主存发送写命令
  3. 将PC的内容送到MDR,通过数据总线存入存储器中
  4. CU控制PC+1,为下一个指令周期的取指周期做准备

课后题8.4

设CPU内有这些部件:PC、IR、SP、AC、MAR、MDR和CU。(1)画出完成间接寻址的取数指令“LDA@X”(将主存某地址单元的内容取至AC中)的数据流(从取指令开始)。

答案:image

数据通路

image

解释:首先d为PC,PC指向的是MAR,所以c为MAR,与主存储器双向传输的是数据线,能通过数据线与主存相连的是MDR,所以a是MDR,MDR指向IR,所以b是IR,OP(IR)指向微操作信号发生器。

取指令数据通路是从PC-MAR-MDR-IR

取数指令将地址中的地址码指出的存储器内容读到ACC中,图中MDR和ACC无直接通路,只能通过ALU进行传送,指令的地址码字段可能在IR中,也可能在MDR中,如果有间址周期的话就在MDR中。

(1) a=MDR , b=IR, c=MAR, d=PC

(2)数据通路:\(PC\rightarrow MAR\rightarrow MDR \rightarrow IR\)

也就是:\(d\rightarrow c\rightarrow a \rightarrow b\)

(3)取数指令执行阶段的数据通路:\(IR(MDR)\rightarrow MAR\rightarrow M\rightarrow MDR \rightarrow ALU\rightarrow ACC\)

也就是:\(b(a)\rightarrow c\rightarrow M\rightarrow a \rightarrow ALU\rightarrow ACC\)

中断系统

中断屏蔽技术:

优先级别高的中断源有权中断优先级别低的中断源。

image

例8.2:设某机有4个中断源1、2、3、4,其硬件排队优先次序按1->2->3->4降序排列,各中断服务程序对应的屏蔽字如表8.9.
(1)给出上述4个中断源的中断处理次序
(2)若4个中断源同时有中断请求,画出CPU执行程序的轨迹。

解答:

1)分析表8.9,对于中断源1,因为其屏蔽字为1101,只有中断源3为0,表明中断源3可以中断1级中断源的中断服务程序,所以3的优先级大于1;对于中断源2,屏蔽字为0100,所以1,3,4的优先级都大于2;对于中断源3,屏蔽字是1111,说明3的优先级最高;对于中断源4,屏蔽字是0101,说明1和3的优先级大于4。

因此可以推出4个中断源的处理次序是:3—>1—>4—>2

2)硬件排队的优先次序是1->2->3->4,所以CPU先执行1,但因为3的优先级大于1,所以中断1然后去执行3,执行完3之后再执行1,1执行完之后,按照排队的顺序需要执行2,但4的优先级比2高,所以中断2先去执行4,4执行完之后再去执行2。
image

微操作命令

1. 取指周期

image

操作:

➀ 现行指令地址送至存储器地址寄存器,记作\(PC\rightarrow MAR\)

➁ 向主存发送读命令,启动主存做读操作,记作\(1\rightarrow R\)

➂ 将MAR通过地址线所指的主存单元的内容经数据总线读至MDR内,记作\(M(MAR)\rightarrow MDR\)

➃ 将MDR中的内容送至IR,记作\(MDR\rightarrow IR\)

➄ 指令的操作码送至CU译码,记作\(OP(IR)\rightarrow CU\)

➅ 形成下一条指令的地址,记作\((PC)+1\rightarrow PC\)

2. 间址周期

image

操作:

➀ 将指令的地址码部分(形式地址)送至存储器地址寄存器,记作\(Ad(IR)\rightarrow MAR\)

➁ 向主存发送读命令,启动主存做读操作,记作\(1\rightarrow R\)

➂ 将MAR通过地址总线所指的主存单元的内容(有效地址)经数据总线读至MDR内,记作\(M(MAR)\rightarrow MDR\)

➃ 将有效地址送至指令寄存器的地址字段,记作\(MDR\rightarrow Ad(IR)\)

3. 执行周期

访存指令:

  • 加法指令 ADD X

将累加器内容与对应主存X地址单元的内容相加,结果送到累加器的操作。

➀ 将指令的地址码部分送至存储器地址寄存器,记作\(Ad(IR)\rightarrow MAR\)

➁ 向主存发送读命令,启动主存做读操作,记作\(1\rightarrow R\)

➂ 将MAR通过地址总线所指的主存单元的内容(操作数)经数据总线读至MDR内,记作\(M(MAR)\rightarrow MDR\)

➃ 给ALU发送加命令,将ACC的内容和MDR的内容相加,结果存于ACC,记作
\((ACC)+(MDR)\rightarrow ACC\)

  • 存数指令 STA X

将累加器ACC的内容存于主存X地址单元中。

➀ 将指令的地址码部分送至存储器地址寄存器中,记作\(Ad(IR)\rightarrow MAR\)

➁ 向主存发送写命令,启动主存做写操作,记作\(W\rightarrow W\)

➂ 将累加器的内容送至MDR,记作\(ACC\rightarrow MDR\)

➃ 将MDR中的内容通过数据总线写入MAR通过地址总线所指的主存单元中,记作\(MDR\rightarrow M(MAR)\)

  • 取数指令 LDA X

将主存X地址单元的内容取至累加器ACC中

➀ 将指令中的地址码部分送至存储器地址寄存器,记作\(Ad(IR)\rightarrow MAR\)

➁ 向主存发读命令,启动主存作读操作,记作\(1\rightarrow R\)

➂ 将MAR通过地址总线所指的主存单元的内容(操作数)经数据总线读至MDR内,记作\(M(MAR)\rightarrow MDR\)

➃ 将MDR的内容送至ACC,记作\(MDR\rightarrow ACC\)

  • 无条件转移指令JMP X

将指令的地址码部分X送至PC:\(Ad(X)\rightarrow PC\)

4. 中断周期

image

操作:

➀ 将特定地址“0”送至存储器地址寄存器,记作\(0\rightarrow MAR\)

如果程序断点存入堆栈,则➀ 改为:\((SP)-1\rightarrow SP\),\(SP\rightarrow MAR\)

➁ 向主存发写命令,启动存储器作写操作,记作\(1\rightarrow W\)

➂ 将PC的内容(程序断点)送至MDR,记作\(PC\rightarrow MDR\)

➃ 将MDR的内容通过数据总线写入MAR通过地址总线所指的主存单元中,记作\(MDR\rightarrow M(MAR)\)

➄ 将向量地址形成部件得输出送至PC,记作\(向量地址\rightarrow PC\),为下一条指令得取指周期做准备

➅ 关中断,将允许中断触发器清零,记作\(0\rightarrow EINT\)

控制单元的功能

控制单元外特性:

image

控制单元的输入信号:

  • 时钟:为了使控制单元有先后顺序,控制单元必须受时钟控制,每个时钟脉冲使控制单元发送一个操作命令。

    1. 完成每次操作都需占用一定时间
    2. 各个操作是有先后顺序的
  • 指令寄存器 IR :现行指令的操作码决定了不同指令在执行周期所需完成的不同操作,故指令的操作码字段是控制单元的输入信号。

  • 标志:控制单元有时需依赖CPU当前所处的状态产生控制信号。

  • 来自系统总线的控制信号:例如:中断请求,DMA请求。

控制单元的输出信号:

  • CPU内的控制信号:主要用于CPU内的寄存器之间的传送和控制ALU实现不同的操作

  • 送至系统总线的信号:例如:命令主存读/写/中断响应。

控制信号

1. 不采用内部总线

image

例9.1
(1)写出取指周期的全部微操作。
(2)写出取值指令“LDA M”、存数指令“STA M”、
加法指令“ADD M”在执行阶段所需的全部微操作。
(3)当上述指令均为间址寻址时,写出执行这些指令所需的全部微操作。
(4)写出无条件转移指令“JMP Y”和
结果为零则转移指令“BAZ Y”在执行阶段所需的全部微操作。

答案:

image

image

3. 采用内部总线

image

例9.2:
某单总线计算机结构如图9.5,其中M为主存,XR为变址寄存器,EAR为有效地址寄存器,LATCH为锁存器。图中个寄存器的输入输出均受控制信号控制,例如,PCi表示PC的输入控制信号,MDR0表示MDR的输出控制信号。假设指令地址已存在PC,画出“ADD X,D”(X为变址寄存器XR,D为形式地址)和“STA * D”(*表示相对寻址,D为相对位移量)两条指令的指令周期信息流程图,并列出相应的控制信号序列。

“ADD X,D”:

取指的过程:PC输出到MAR,从主存中读取MAR的内容到MDR,MDR通过总线到IR,然后PC+1

Ad(IR)是取出指令的地址码字段,也就是形式地址D的值,因为指令采用的是变址寻址,所以EA=Ad(IR)+(XR),然后用地址加法器EAR接收EA,通过地址总线传到MAR中,读取MAR中EA的内容到MDR,MDR通过地址总线传送操作数到X寄存器中,读取X中的内容和ACC中的内容,在ALU中完成加法计算,并将结果通过总线传到ACC中。

image

“STA * D”:

Ad(IR)中存放的是相对位移量D的机器代码

寻址方式是相对寻址 EA=(PC)+D=(PC)=Ad(IR),将有效地址EA送到MAR中;

STA是存数指令,从ACC中取出数到MDR中,将MDR中的内容写入MAR所指的主存单元中。

image

CPU主频

一般来说,CPU的主频越快,机器运行速度也越快。

例9.3:设某计算机的CPU主频为8Hz,每个机器周期平均含2个时钟周期,每条指令的指令周期平均有2.5个机器周期,试问该机的平均指令执行速度为多少MIPS?若CPU主频不变,但每个机器周期平均含4个时钟周期,每条指令的指令周期平均有5个机器周期,则该机的平均指令执行速度又是多少MIPS?
由此可以得出什么结论?

image

微操作的节拍安排

原则:

  1. 有些微操作的次序不容改变,故安排微操作节拍时必须注意微操作的先后顺序。
  2. 凡是被控制对象不同的微操作,若能在一个节拍内执行,尽可能安排在同一个节拍内。
  3. 如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,允许微操作有先后次序。

1. 取指周期微操作的节拍安排

内容:

\(T_0: PC\rightarrow MAR,1\rightarrow R\)

//根据原则2
\(T_1: M(MAR)\rightarrow MDR,PC+1\rightarrow PC\)

//根据原则3,指令译码时间很短
\(T_2: MDR\rightarrow IR,OP(IR)\rightarrow ID\)

2. 间址周期微操作的节拍安排

内容:

\(T_0: Ad(IR)\rightarrow MAR,1\rightarrow R\)
\(T_1: M(MAR)\rightarrow MDR\)
\(T_2: MDR\rightarrow Ad(IR)\)

3. 执行周期微操作的节拍安排

  • 访存指令:
    • 加法指令 ADD X
      \(T_0: Ad(IR)\rightarrow MAR,1\rightarrow R\)
      \(T_1: M(MAR)\rightarrow MDR\)
      \(T_2: (AC)+(MDR)\rightarrow AC\)

    • 存数指令 STA X
      \(T_0: Ad(IR)\rightarrow MAR,1\rightarrow W\)
      \(T_1: AC\rightarrow MDR\)
      \(T_2: MDR\rightarrow M(MAR)\)

    • 取数指令 LDA X
      \(T_0: Ad(IR)\rightarrow MAR,1\rightarrow R\)
      \(T_1: M(MAR)\rightarrow MDR\)
      \(T_2: MDR\rightarrow AC\)

    • 无条件转移指令 JMP X

      $T_0: $

      $T_1: $

      \(T_2: Ad(IR)\rightarrow PC\)

4. 中断周期微操作的节拍安排

内容:

\(T_0: 0\rightarrow MAR,1\rightarrow W\)
\(T_1: PC\rightarrow MDR\)
\(T_2: MDR\rightarrow M(MAR),向量地址\rightarrow PC\)

例10.1

image

(1)假设要求在取指周期由ALU完成 (PC)+1——>PC的操作,要求以最少的节拍写出取指周期全部微操作命令及节拍安排。
(2)写出指令“ADD # a”(#表示立即寻址特征,隐含的操作数在ACC中)在执行阶段所需的微操作命令及节拍安排。

答案:

image

例10.2

设CPU内部总线如图10.2,PC有自动加1的功能,此外还有B、C、D、E、H、L 6各寄存器,它们各自的输入端和输出端都与内部总线Bue相连,并分别受控制信号控制。要求写出下列指令组合逻辑控制单元所发出的微操作命令及节拍安排。
(1)ADD B,C; (B)+(C)——>B
(2)SUB E,@H; (E)-((H))——>E 寄存器间接寻址
(3)STA @ mem;ACC——>((mem)) 存储器间接寻址

答案:

image

image

微指令编码

image

  1. 直接编码(直接控制)方式

image

每一位代表一个微操作命令。

  1. 字段直接编码方式

image

将一组互斥的微操作命令放在一个字段内。

  1. 字段间接编码方式

image

某些微命令还需由另一个字段中的某些微命令来解释。

例10.4

某机的微指令格式中,共有8个控制字段,每个字段可分别激活5,8,3,16,1,7,25,4种信号。分别采用直接编码和字段直接编码方式设计微指令的操作控制字段,并说明两种方式的操作控制字段各取几位?

答案:

(1)采用直接编码的方式,微指令的操作控制字段的总位数等于控制信号数,即 5+8+3+16+1+7+25+4=69位

(2)采用字段直接编码方式,需要的控制位少,根据题目给出的8个控制字段可激活的控制信号数,加上每个控制字段至少留一个码字表示不激活任何一条控制线,也就对应8个字段分别给出6,9,4,17,2,8,26,5种状态,对应3,4,2,5,1,3,5,3位,加起来就是3+4+2+5+1+3+5+3=26位

微指令格式

例10.6

某机共有52个微操作控制信号,构成5个相斥类的微命令组,各组分别包括5,8,2,15,22个微命令。已知可判定的外部条件有两个,微指令字长28位。
(1)按水平型微指令格式设计微指令,要求微指令的下地址字段直接给出后续微指令地址。
(2)指出控制存储器的容量。

解析:

(1)有5个相斥微命令组,每组必须增加一个不发命令的情况,则5个控制字段分别给出6,9,3,16,23种状态,对应3,4,2,4,5位,共18位,条件测试有两个,取2位。

image

(2) 根据下地址字段有8位,微指令字长28位,得控制器存储器容量为2^8 × 28位,也就是256 × 28位。

题目

  • 几组概念

image

image

  • 微程序控制器的组成

image

  • 微程序控制器的工作过程

image

image

中断向量地址是中断服务程序入口地址的地址

  • 其他

image

在取指操作完成后,PC+1,被修改一次,在跳转到目标指令时,PC又被修改一次,修改为要跳转到的目标地址。所以一共修改了两次。

posted @ 2024-08-02 09:55  江侠  阅读(261)  评论(0)    收藏  举报