新闻中心

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

ARM体系结构之:流水线

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

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

在图2.6中的指令序列中,处理器的每个逻辑单元在每个指令都是活动的。可以看出的执行与存储器访问密切相关。存储器访问限制了程序执行必须花费的指令周期数。

执行模式导致了一个结果,就是程序计数器PC(对使用者而言为r15)必须在当前指令执行前计数。例如,指令在其第一个周期为下下条指令取指,这就意味着PC必须指向当前指令的后8个字节(其后的第2条指令)。

当程序中必须用到PC时,程序员要特别注意这一点。大多数正常情况下,不用考虑这一点,它由汇编器或编译器自动处理这些细节。

例2.3显示了下程序计数器PC的使用情况。

【例2.3】

指令序列为:

0x8000 LDR pc,[pc,#0]

0x8004 NOP

0x8008 DCD jumpAdress

当指令LDR处于执行阶段时,pc=address+8即0x8008。

2.5级流水线组织

所有的处理器都要满足对高性能的要求。直到7为止,在ARM核中使用的3级流水线的性价比是很高的。但是,为了得到更高的性能,需要重新考虑处理器的组织结构。执行一个给定的程序需要的时间由下式决定:

Tprog= (Ninst×CPI)/fclk

式中:

Ninst:表示在程序中执行的ARM指令数;

CPI:表示每条指令的平均时钟周期;

fclk:表示处理器的时钟频率。

因为对给定程序(假设使用给定的优化集并用给定的编译器来编译)Ninst是常数,所以,仅有两种方法来提供性能。

第一,提高时钟频率。时钟频率的提高,必然引起指令执行周期的缩短,所以要求简化流水线每一级的逻辑,流水线的级数就要增加。

第二,减少每条指令的平均指令周期数CPI。这就要求重新考虑3级流水线ARM中多于1个流水线周期的实现方法,以便使其占有较少的周期,或者减少因指令相关造成的流水线停顿,也可以将两者结合起来。

3级流水线ARM核在每一个时钟周期都访问存储器,或者取指令,或者传输数据。只是抓紧存储器不用的几个周期来改善系统系统性能,效果是不明显的。为了改善CPI,存储器系统必须在每个时钟周期中给出多于一个的数据。方法是在每个时钟周期从单个存储器中给出多于32位数据,或者为指令或数据分别设置存储器。

基于以上原因,较高性能的ARM核使用了5级流水线,而且具有分开的指令和数据存储器。把指令的执行分割为5部分而不是3部分,进而可以使用更高的时钟频率,分开的指令和数据存储器使核的CPI明显减少。

注意

分开的指令和数据存储器。一般是分开的Cache连接到统一的指令和数据存储器上。

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




评论


相关推荐

技术专区

关闭