如图,假定总线传输延迟和ALU运算时间分别是20ps和200ps,寄存器建立时间为10ps,寄存器保持时间为5ps,寄存器的锁存延迟(Clk-to-Q time)为4ps,控制信号的生成延迟(Clk-to-signal time)为7ps,三态门接通时间为3ps,则从当前时钟到达开始算起,完成以下操作的最短时间是多少?各需要几个时钟周期?
器寄存器的锁存延迟与控制信号的生成延迟的时间重叠,且Clk-to-signal time> Clk-to-Q time,所以完成寄存器传送的时间延迟为:7+3+20+10=40ps。 因为在这个过程中,只要最后保存一次信息到寄存器,所以只需要一个时钟周期。
问答题以下是一个计算阶乘的C语言递归过程,请按照MIPS过程调用协议写出该递归过程对应的MIPS汇编语言程序,要求目标代码尽量短(提示:乘法运算可用乘法指令“mul rd,rs,rt”来实现,功能为“rd←(rs)×(rt)”)。
问答题说明beq指令的含义,并解释为什么汇编程序在对下列汇编源程序中的beq指令进行汇编时会遇到问题,应该如何修改该程序段?
问答题以下程序段是某个过程对应的MIPS指令序列,其功能为复制一个存储块数据到另一个存储块中,存储块中每个数据的类型为float,源数据块和目的数据块的首地址分别存放在$a0和$a1中,复制的数据个数存放在$v0中,作为返回参数返回给调用过程。在复制过程中遇到0则停止,最后一个0也需要复制,但不被计数。已知程序段中有多个Bug,请找出它们并修改。
问答题用一条MIPS指令或最短的指令序列实现以下C语言语句:b=25|a。假定编译器将a和b分别分配到$t0和$t1中。如果把25换成65536,即b=65536|a,则用MIPS指令或指令序列如何实现?
问答题下列指令序列用来对两个数组进行处理,并产生结果存放在$v0中。假定每个数组有2500个字,其数组下标为0到2499。两个数组的基地址分别存放在$a0和$a1中,数组长度分别存放在$a2和$a3中。要求为以下MIPS指令序列加注释,并简单说明该过程的功能。假定该指令序列运行在一个时钟频率为2GHz的处理器上,add、addi和sll指令的CPI为1;lw和bne指令的CPI为2,则最坏情况下运行所需时间是多少秒?