全球旧事资料 分类
。在取指阶段,指令机器码被取到指令寄存器,控制单元通过译码知道这是个什么样的指令,需要执行什么样的操作,需要什么操作数;在执行阶段当前指令以及取指完毕,上一条指令被执行。这样按顺序第1条指令执行完再取第2条指令,第2条执行完在取第3条指令的顺序执行方式执行一条指令最少需要两个时钟周期,如果执行10条指令那么就得需要10个时钟周期,显然这样指令的执行效率不高。为了解决这个问题,本次设计中引入了流水线pipeli
e操作。8位CPU采用两级流水线技术,指令的流水线可以用图24来简单的示意:
图24流水线指令执行
由图可以看出,尽管每条指令的完成需要两个周期的时间,但是在流水线结构中,当前指令的取值周期和上一条指令的执行周期在时间上是重叠的,对于这种并行操作,从平均角度来看,相当于一个周期内完成一条指令,因此可以大大提高指令的运行速度15。RISC架构的处理器,每条指令有固定的长度,指令格式只有简单的几种,指令功能不交叉,寻址方式也简单,所以更加有利于实现流水结构。为了降低执行每条指令所需时钟数,本文也采用两级流水,其功能分别定义为:第一级,取指;第二级,时钟前半周期控制器译码、发出控制信号,时钟后半周期进行对寄存器堆TRAM进行读操作、ALU计算。这样,很显然也能降低执行指令所需的时钟数,取指、执行只用了一个时钟。在时钟上升沿PC产生
f进入PCRAM的地址,由于PCRAM有反应时间,经过一段很短的时间读出指令,在下一个时钟上升沿到来时,指令寄存器锁存指令,然后开始对指令进行译码,并产生操作数、目的存储器寄存器地址、写信号及各种控制信号。232程序计数器与流水线程序计数器(PC)是程序中寻址取得指令的特殊单元。正是靠PC的移动,CPU才能一条一条的执行指令。同时,程序计数器也是和流水线密切相关的单元。在程序开始执行前,CPU将它的起始地址送入PC,当指令执行时,CPU将自动修改PC的内容,所以PC中的内容总是下一条指令的地址。由于指令通常是顺序执行的,所以修改的过程通常只是简单的PC加1。表2说明了在引入流水线后PC的具体工作情况:
表3指令执行中PC值的变化情况
时钟周期PC
Reset
周期1
周期2
周期3
周期4
0
1
2
3
4
第一条指令第二条指令第三条指令
读取指令0
执行指令0
读取指令1
执行指令1
读取指令2
执行指令2
表3表明,在系统复位时,PC内的值清0,第一个时钟周期,指令寄存器取PC为0的地址的指令,同时PC的值加1;第二个时钟周期,执行0地r
好听全球资料 返回顶部