流水线技术对PC值的影响

        CPU的内部结构主要有三部分:指令寄存器、指令译码器、指令执行单元(包括ALU和通用寄存器)

        CPU在执行一条指令的时候,主要有三个步骤:取指(将指令从内存或者指令Cahe中取出,放到指令寄存器),译码(指令译码器对指令寄存器中的指令进行译码操作从而辨识出所具体什么指令,从而产生各种时序信号),执行(指令执行单元根据译码的结果进行计算和存储结果)

        根据电路的结构我们发现:取指阶段占用的CPU硬件是指令通路和指令寄存器;译码阶段占用的是CPU硬件是指令译码器;执行阶段占用的是CPU硬件的执行单元和数据通路。三者占用的CPU硬件完全不同,这就形成列三级的流水线,如下:在对第一条指令译码的时候,可以同时对第二条指令进行取指操作;在对第一条指令进行执行的时候,可以同时对第二条进行译码,对第三条进行取指。可见:流水线技术的本质是利用指令运行时间不同阶段使用不同的硬件相互不同,并发运行多条指令,从而提高了时间效率。

        对PC值的具体影响。寄存器PC的值是即将被取指的指令的地址,正常情况下,在该条指令被取入CPU后执行期间,PC的值保持不变,在该条指令完成的点上,硬件会自动的将PC的值加一个单位的大小,这样PC就指向列下一条将被取指和执行的指令。而在引入流水线技术后,PC的值的变化发生了变化,假定第一条指令的内存地址为X,则在时刻T,PC值变为X,并在T到T+1时期内维持不变;在T+1时刻,PC的值变为X+1个单位,并在T+1到T+2期间维持不变;在T+2时刻,PC的值变为X+2个单位,并在T+2到T+3期间(第一条指令的执行阶段)内维持不变;在T+3时刻,P的值将变为X+3.由此可见,在第一条指令的执行阶段,PC的值不再是该指令在内存的位置了,而是该指令在内存中的位置+2个单元.对于ARM指令集而言,每条指令的长度为32bit,占4B,所以,一条指令在内存中需要4B存储。

        指令执行时,PC值=当前正在运行的指令在内存的地址+8

转载于:https://my.oschina.net/u/246816/blog/59525

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值