习题
1. 给出以下概念的解释说明。
指令周期(Instruction Cycle)
机器周期(Machine Cycle) 时序信号(Timing signal) 执行部件(Execute Unit,EU)
同步系统(Synchronous system) 控制单元(Control Unit, CU)
组合逻辑元件(Combinational logic element)或操作元件(Operate element) 时序逻辑元件(Sequential logic circuit)或状态元件(State element) 多路选择器(Multiplexor) “零”扩展(0- extend) CPU总线(CPU Bus)
扩展器(Extension unit) “符号”扩展(Sign extend) 加法器(Adder)
寄存器堆(Register file) 边沿触发(Edge-triggered) 指令存储器(Instruction Memory) 程序计数器(Program Counter) 指令译码器(Instruction Decoder) 主频(CPU Clock Rate / Frequency 控制信号(Control signal) 微代码(Microcode) 微程序(Microprogram)
中断过程(Interrupt Processing) 故障(fault) 终止(Abort)
中断服务程序(Interrupt Handler) 关中断(Interrupt OFF) 中断响应(Interrupt Response) 中断向量(Interrupt vector) 向量地址(vector Address)
算术逻辑部件ALU(Arithmetic Logic Unit) 定时方式(Clocking methodology) 寄存器写信号(Register Write) 数据存储器(Data Memory) 时钟周期(Clock Cycle)
指令寄存器(Instruction Register)
转移目标地址(Branch target address)
微程序控制器(Microprogrammed control) 硬布线控制器(Hardwared control) 控制存储器(Control Storage,控存CS) 微指令(Microinstruction) 固件(Firmware)
异常(Exception) 自陷(Trap)
中断(Interrupt)
中断允许位(Interrupt Enable Bit) 开中断(Interrupt ON) 向量中断(Vector Interrupt) 中断类型号(Interrupt number) 2. 简单回答下列问题。
中断向量表(Interrupt vector table)
(1)CPU的基本组成和基本功能各是什么? (2)取指令部件的功能是什么? (3)控制器的功能是什么?
(4)为什么对存储器按异步方式进行读写时需要WMFC信号?按同步方式访问存储器时,
CPU如何实现存储器读写?
(5)单周期处理器的CPI是多少?时钟周期如何确定?为什么单周期处理器的性能差?元
件在一个指令周期内能否被重复使用?为什么?
? 156 ?
(6)多周期处理器的设计思想是什么?每条指令的CPI是否相同?为什么在一个指令周期
内某个元件可被重复使用?
(7)单周期处理器和多周期处理器的控制逻辑设计的差别是什么? (8)硬布线控制器和微程序控制器的特点各是什么?
(9)为什么CISC大多用微程序控制器实现,RISC大多用硬布线控制器实现? (10)水平型微指令和垂直型微指令的基本概念和优缺点是什么? (11)CPU检测内部异常和外部中断的方法有什么不同?
3. 在书中图6.9中,假定总线传输延迟和ALU运算时间分别是20ps和200ps,寄存器建立时间
为10ps,寄存器保持时间为5ps,寄存器的锁存延迟(Clk-to-Q time)为4ps,控制信号的生成延迟(Clk-to-signal time)为7ps,三态门接通时间为3ps,则从当前时钟到达开始算起,完成以下操作的最短时间是多少?各需要几个时钟周期? (1)将数据从一个寄存器传送到另一个寄存器 (2)将程序计数器PC加1
所示。
? 157 ?
Clk Clk-to-Q 寄存器输出开始有效 接通三态 总门时间 传线输保持 时间 Clk-to-Sig建立时Riout Rjin
t0 t1 t2 t (a) 当前周期内不执行ALU运算
t3
Clk
Clk-to-Q 寄存器输出开始有效 接通三态 总门时间 传线输ALU时延 建立时保持 时间 Clk-to-SigRiout Zin
t0 t1 t2 tt
(b) 当前周期内执行ALU运算
t3
图6.10 单总线数据通路中主要路径的定时
参考答案:
(1)寄存器的锁存延迟与控制信号的生成延迟的时间重叠,
且Clk-to-signal time> Clk-to-Q time,所以完成寄存器传送的时间延迟为:
7+3+20+10=40ps。
因为在这个过程中,只要最后保存一次信息到寄存器,所以只需要一个时钟周期。 (2)分两个阶段:
PC+1→Z :7+3+20+200+10=240ps; Z→PC:7+3+20+10==40ps 寄存器保持时间用来作为时间约束。
因为在这个过程中,需要经过两次总线传输,每次都将传输信息保存在某个寄存器中,所以需要两个时钟周期。
? 158 ?
4. 右图6.30给出了某CPU内部结构的一部分,MAR和MDR直接连到存储器总线(图中省略)。
在两个总线之间的所有数据传送都需经过算术逻辑部件ALU。ALU可实现的部分功能及其控制信号如下:
MOVa:F=A; MOVb:F=B; a+1:F=A+1; a-1:F=A-1;
b+1:F=B+1 b-1:F=B-1
IRMDRMARPCSPYABALUF图30其中A和B是ALU的输入,F是ALU的输出。假定JSR(转子 指令)指令占两个字,第一个字是操作码,第二个字给出 子程序的起始地址,返回地址保存在主存的栈中,用SP(栈 指示器)指向栈顶,按字编址,每次从主存读取一个字。请 写出读取并执行JSR指令所要求的控制信号序列(提示:当前 指令地址在PC中)。 参考答案:
假定采用同步方式(若为异步,则只需在read和Write后加一个等待信号WMFC)
分三个阶段:
1. 取指令操作码:PCout, MOVb, MARin
Read, b+1, PCin MDRout, MOVb, IRin
Read, b+1, Yin (返回地址在Y中)
MDRout, MOVb, PCin(子程序首址在PC中) Yout, MOVb, MDRin Write, SPout, b-1, SPin
2. 取子程序首址:PCout, MOVb, MARin
3. 保存返址至栈:SPout, MOVb, MARin
(注:若按最长的存储访问时间作为CPU时钟周期,则上述每个阶段都需三个时钟周期)
能否用更少的时钟周期完成上述功能?不能!以下是另一种方式) 1. 取指令操作码:PCout, MOVb, MARin
Read, b+1, Yin MDRout, MOVb, IRin
Read, a+1, Yin (用b+1也行) MDRout, MOVb, PCin Yout, MOVb, MDRin Write, SPout, b-1, Spin
? 159 ?
2. 取子程序首址:Yout, MOVb, MARin
3. 保存返址至栈:SPout, MOVb, MARin
5. 假定某计算机字长16位,CPU内部结构如书中图6.9所示,CPU和存储器之间采用同步方式
通信,按字编址。采用定长指令字格式,指令由两个字组成,第一个字指明操作码和寻址方式,第二个字包含立即数Imm16。若一次存储访问所花时间为2个CPU时钟周期,每次存储访问存取一个字,取指令阶段第二次访存将Imm16取到MDR中,请写出下列指令在指令执行阶段的控制信号序列,并说明需要几个时钟周期。
(1)将立即数Imm16加到寄存器R1中,此时,Imm16为立即操作数。
即:R[R1]←R[R1]+ Imm16
(2)将地址为Imm16的存储单元的内容加到寄存器R1中,此时,Imm16为直接地址。
即:R[R1]←R[R1]+ M[Imm16]
(3)将存储单元Imm16的内容作为地址所指的存储单元的内容加到寄存器R1中。此时,
Imm16为间接地址。即:R[R1]←R[R1]+ M[M[Imm16]] 参考答案:
(1) MDRout, Yin
R1out, add, Zin Zout, R1in 需3个时钟周期
(2) MDRout, MARin
Read1,(R1out, Yin也可以放在该控制信号所在的时钟周期中) Read2, R1out, Yin MDRout, add, Zin Zout, R1in 需5个时钟周期
(3) MDRout, MARin
Read1 Read2
MDRout, MARin
Read1,(R1out, Yin) Read2, R1out, Yin MDRout, add, Zin Zout, R1in 需8个时钟周期
? 160 ?