赞
踩
寻址范围扩展到32位(目前已废弃),主要改进如下:
程序计数器R15(PC)总是指向取指的指令,而不是指向正在执行的指令或正在译码的指令。 一般情况下,习惯把正在执行的指令作为参考点,称为当前第1条指令,因此,PC总是指向第3条指令
ARM指令有:PC值=当前程序执行位置+8
Thumb指令则有:PC值=当前程序执行位置+4
当处理器执行简单的数据处理指令时,流水线使得平均每个时钟周期能完成一条指令。但一条指令需要3个时钟周期来完成,因此,有3个时钟周期的延时(latency),但吞吐率(throughput)是每个周期一条指令。下面通过一个简单的例子说明流水线的机制。
指令序列为:
ADD r1 r2
SUB r3 r2
CMP r1 r3
在第一个周期,内核从存储器取出指令ADD;在第二个周期,内核取出指令SUB,同时对ADD译码;在第三个周期,指令SUB和ADD都沿流水线移动,ADD被执行,而SUB被译码,同时又取出CMP指令。可以看出,流水线使得每个时钟周期就可以执行一条指令。
ARM的流水线执行模式导致了一个结果,就是程序计数器PC(对使用者而言为r15)必须在当前指令执行前计数。例如,指令在其第一个周期为下下条指令取指,这就意味着PC必须指向当前指令的后8个字节(其后的两条指令)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。