新闻中心

EEPW首页>嵌入式系统>设计应用> ARM体系结构之:流水线

ARM体系结构之:流水线

作者: 时间:2013-09-13 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/257092.htm

1.3级组织

3级组织如图2.2所示,其主要的组成如下:

① 处理器状态寄存器堆(Rigister Bank)。它有两个读端口和一个写端口,每个端口都可以访问任意寄存器。另外还有附加的可以访问PC的一个读端口和一个写端口。

注意

PC的附加写端口可以在取指地址增加后更新PC,读端口可以在数据地址发出之后从新开始取指。

② 桶形移位寄存器(Barrel Shifter)。它可以把一个操作数移位或循环移位任意位数。

③ ALU。完成指令集要求的算术或逻辑功能。

图2.2 3级的组织

④ 地址寄存器(Address Register)和增值器(Incrementer)。可选择和保存所用的存储器地址并在需要时产生顺序地址。

⑤ 数据输出寄存器(data-out register)和数据输入寄存器(data-in register)。用于保存传输到存储器和从存储器输出的数据。

和相关的控制逻辑(instruction decode and control)。

例2.1显示了一条单周期指令在流水线上的执行过程。

【例2.1】

ADD r1,r2

指令在流水线上的执行过程如图2.3所示。

图2.3 单周期指令在流水线上的执行过程

在ADD指令中,需要访问两个寄存器操作数,B总线上的数据移位后与A总线上的数据在ALU中组合,再将结果写回寄存器堆。在指令执行过程中,程序计数器的数据放在地址寄存器中,地址寄存器的数据送入增值器。然后将增值后的数据拷贝到寄存器堆的r15(程序计数器),同时还拷贝到地址寄存器,作为下一次取指的地址。

到ARM7为止的ARM处理器使用简单的3级流水线,包括下列流水线级:

· 取指(fetch):从寄存器装载一条指令。

· 译码(decode):识别被执行的指令,并为下一个周期准备数据通路的控制信号。在这一级,指令占有译码逻辑,不占用数据通路。

· 执行(excute):处理指令并将结果写回寄存器。

图2.4显示了3级流水线指令执行过程。

图2.4 3级流水线

注意

在任一时刻,可能有3种不同的指令占有这3级中的每一级,因此,每一级中的硬件必须能够独立操作。

当处理器执行简单的数据处理指令时,流水线使得平均每个时钟周期能完成1条指令。但1条指令需要3个时钟周期来完成,因此,有3个时钟周期的延时(latency),但吞吐率(throughput)是每个周期一条指令。例2.2通过一个简单的例子说明了流水线的机制。

【例2.2】

指令序列为:

ADD r1 r2

SUB r3 r2

CMP r1 r3

流水线指令序列如图2.5所示。

图2.5 流水线指令顺序

在第一个周期,内核从存储器取出指令ADD;在第二个周期,内核取出指令SUB,同时对ADD译码;在第三个周期,指令SUB和ADD都沿流水线移动,ADD被执行,而SUB被译码,同时又取出CMP指令。可以看出,流水线使得每个时钟周期都可以执行一条指令。

当执行多条指令时,流水线的执行不一定会如图2.5那么规则,图2.6显示了有STR指令的流水线状态。

图2.6 含有存储器访问指令的流水线状态

图2.6中在单周期指令ADD后出现了一条数据存储指令STR。访问主存储器的指令用阴影表示,可以看出在每个周期都使用了存储器。同样,在每一个周期也使用了数据通路。在执行周期、地址计算和数据传输周期,数据通路都是被占用的。在译码周期,译码逻辑负责产生下一周期用到的数据通路的控制信号。

注意

对于STR这种存储器访问指令,实际是在地址计算时由译码逻辑产生下一周期数据传输所需要的数据通路控制信号。

存储器相关文章:存储器原理




评论


相关推荐

技术专区

关闭