- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
流水线指令和RISC
一.流水线
概念:
处理器按照一系列步骤来执行每一条指令.典型的步骤如下:
从存储器读取指令(fetch).
译码以鉴别它是那一类指令(dec).
从寄存器堆取得所需的操作数(reg).
将操作数进行组合以得到结果或存储器地址(ALU).
如果需要,则访问存储器以存取数据(mem).
将结果写回到寄存器堆(res).
并不是所有的指令都需要每一个步骤,但是,多数指令需要其中的多数步骤.这些步骤往往使用不同的硬件功能,例如,ALU可能只在第四步中用到.因此,如果一条指令不是在前一条结束之前就开始,那么在每一个步骤内处理器只有少部分的硬体被使用.
有一个明显的方法可以改善硬件资源的使用率和处理器的吞吐量,这就是在当前指令结束之前就开始执行下一条指令.该技术被称为流水线,是在通用处理器中采用并行算法且非常有效的途径.
采用上述操作顺序,处理器可以这样来组织:当一条指令刚刚执行完步骤1并转向步骤2时,下一条指令就开始执行步骤1.图1.13说明了这个过程.从原理上来说,这样的流水线应该比没有重叠的指令执行快6倍,但实际上事情并没有这么好,下面我们将会看到原因.
fetchdecrge
fetch
dec
rge
alu
mem
res
1
fetchdec
fetch
dec
rge
alu
mem
res
2
fetchdecrge
fetch
dec
rge
alu
mem
res
指令 时间
图1.13 流水线的指令执行
流水线中的冒险
要点:后一条指令要用到前一条指令。
在典型的计算机程序中经常会遇到这样的情形,即一条指令的结果被用做下一条指令的操作数.当这种情形发生时,图1.13所示的流水线操作就中断了,因为第一条指令的结果在第二条指令取操作数时还没有产生.第二条指令必须停止,直到结果产生为止.这是流水线的行为如图1.14所示.这是流水线的”写后读”冒险(hazard).
fetchdecrge
fetch
dec
rge
alu
mem
res
rgealumemresdecfetch
rge
alu
mem
res
dec
fetch
2.
图 1.14 先写后读的流水线冒险
转移指令更会破坏流水线的行为,因为后续指令的取指步骤受到转移目标计算的影响,因而必须推迟.不幸的是,当转移指令正在被译码时,在它被确认为是转移指令之前,后续的取指操作就发生了.这样一来,读取到的指令就不得不丢弃.如果转移目标计算是在图1.13中流水线的ALU阶段完成的,那么,在得到转移目标之前已经有3条指令按照原有的指令流读取(见图1.15).如果有可能,最好早一些计算转移目标,尽管这可能需要专门的硬件.如果转移指令具有固定的格式,那么可以(也就是说在确认该指令是转移指令之前)在dec阶段预测计算转移目标,从而将转移的执行时间减少到单个周期.
但是要注意,由于条件转移与前一条指令的条件码结果有关,在这个流水线中还会有条件转移的冒险.
一些RISC体系结构(尽管不是ARM)规定,不管是否进行了转移,转移之后的指令都要执行.这个技术称为延迟转移.
1 (转移)
2
3
4
5(转移目标)
指令 时间
图1.15 流水线的转移行为
流水线效率
尽管有些技术可以减少这些流水线问题的影响,但是,不能完全消除这些困难.流水线越深(就是流水线的级数越多),问题就说严重.对于相对简单的处理器,使用3~5即流水线效果会更好.但是,超过了这个级数,收益递减的法则开始生效,增加的成本和复杂度将超过收益.
例:ARM7 3级流水线 ARM9 是5级 ARM10是 6-7级 StrongArm是5级
显然,只有当所有指令都依相似的步骤执行时,流水线才能带来好处.如果处理器的指令非常复杂,每一条指令的行为都与下一条指令不同,那么就很难用流水线实现.1980年,因为有限的硅资源,有限的设计资源,以及设计一个复杂指令集的流水线的高度复杂性,当时的复杂指令集微处理器没有采用流水线.
二.精简指令计算机
RISC体系结构
固定的(32位)指令长度,指令类型很少.而CISC处理器指令集的长度一般可变,指令类型也很多.
Load-Store结构,数据处理指令访问寄存器,与
文档评论(0)