内容发布更新时间 : 2025/5/25 9:57:50星期一 下面是文章的全部内容请认真阅读。
Clk Clk-to-Q 寄存器输出开始有效 接通三态 总线传门时间 输时间 建立时间 保持 时间 Clk-to-Signal Riout Rjin
t0 t1 t2 t3 t4 (a) 当前周期内不执行ALU运算
Clk-to-Q 寄存器输出开始有效 接通三态 总线传门时间 输时间 ALU时延 建立时间 保持 时间
Clk
Clk-to-Signal Riout Zin
t0 t1 t2 t3 t4 t5 (b) 当前周期内执行ALU运算 图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
寄存器保持时间用来作为时间约束。
因为在这个过程中,需要经过两次总线传输,每次都将传输信息保存在某个寄存器中,所以需要两个时钟周期。
4. 右图6.30给出了某CPU内部结构的一部分,MAR和MDR直接连到存储器总线(图中省略)。在两个总线之间的所有数据传送都需经过算术逻辑部件ALU。ALU可实现的部分功能及其控制信号如下: MOVa:F=A; MOVb:F=B;
a+1:F=A+1; b+1:F=B+1 a-1:F=A-1; b-1:F=B-1
其中A和B是ALU的输入,F是ALU的输出。假定JSR(转子 IR指令)指令占两个字,第一个字是操作码,第二个字给出
MDR子程序的起始地址,返回地址保存在主存的栈中,用SP(栈 指示器)指向栈顶,按字编址,每次从主存读取一个字。请 MAR写出读取并执行JSR指令所要求的控制信号序列(提示:当前
PC指令地址在PC中)。
SP参考答案:
假定采用同步方式(若为异步,则只需在read和Write后加一个等待信Y号WMFC)
AB分三个阶段:
ALU1. 取指令操作码:PCout, MOVb, MARin F Read, b+1, PCin
图30 MDRout, MOVb, IRin 2. 取子程序首址:PCout, MOVb, MARin Read, b+1, Yin (返回地址在Y中) MDRout, MOVb, PCin(子程序首址在PC中) 3. 保存返址至栈:SPout, MOVb, MARin Yout, MOVb, MDRin
Write, SPout, b-1, SPin
(注:若按最长的存储访问时间作为CPU时钟周期,则上述每个阶段都需三个时钟周期) 能否用更少的时钟周期完成上述功能?不能!以下是另一种方式) 1. 取指令操作码:PCout, MOVb, MARin Read, b+1, Yin MDRout, MOVb, IRin 2. 取子程序首址:Yout, MOVb, MARin Read, a+1, Yin (用b+1也行) MDRout, MOVb, PCin 3. 保存返址