免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2848 | 回复: 6
打印 上一主题 下一主题

像这个样子分支是不是就不会打乱流水线了? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-09 01:41 |只看该作者 |倒序浏览
流水处理器都会预取指令,分支是会打乱流水线的,奔腾处理器的分支预测功能是改进方法之一。

我在http://218.98.38.18/weijiyuanli/chapter4/c1-4-2-1.htm看到
  1. 另一主要问题是指令流中会有转移指令,转移发生时必须到转移目标处开始取指令、执行指令,指令流水线必须排空并重注入,这会给指令流水线的性能带来严重损失。转移指令的影响及处理技术是指令流水线的特有问题,我们将在4.2.2节予以介绍。

  2.   三. 改进办法

  3.   为了使取指段不造成延迟,普遍采用的不是单一的指令缓冲器而是一个FIFO指令预取队列,并且往往是两路,一路用作预取顺序指令,一路用作预取转移目标处的指令序列,如图4.4所示。这些指令预取队列作为附加段变为指令流水线的一部分。
复制代码


有处理器用这种机制吗?这个样子分支是不是打不乱流水线了?请各位讲解一下。

img4-4.gif (22.16 KB, 下载次数: 31)

img4-4.gif

论坛徽章:
0
2 [报告]
发表于 2007-10-10 08:57 |只看该作者
这里转移目标指令的预取队列应该是指 branch target buffer, 如果是跳转指令可以通过匹配直接获得跳转地址,前提是匹配成功等一些逻辑条件.
量化研究一书对现代体系结构有很多介绍,  国内的资料太老.

论坛徽章:
0
3 [报告]
发表于 2007-10-10 14:37 |只看该作者

回复 #2 Guang-Yuan.Wang 的帖子

谢谢LS,我就是问问这种方法是不是不会打乱流水线。
这种方法MS很费资源。

论坛徽章:
0
4 [报告]
发表于 2007-10-10 17:16 |只看该作者
感觉确实很费资源

因为这不仅仅是“预取指令”的问题
在“确定分支的方向”之前,两个分支上的操作都必须进行。
如果是在流水线的第N级确定跳转地址,那么从预取指令到N-1级的流水线部件都要准备两份。

还有两种方法也可以减少分支损失。1是用新的汇编指令避免使用分支,2是如LS所说,尽量早一点确定分支的方向

论坛徽章:
0
5 [报告]
发表于 2007-10-10 17:24 |只看该作者

回复 #4 dxcnjupt 的帖子

谢谢。
也看了你的ELF Loader,学习。:wink:

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2007-10-11 12:47 |只看该作者
处理器的设计,人只要想的到的办法都拿去用过了。
这种方法应该也拿来用过,但是确实很费。还是有一些别的手段来解决这一问题的。但是单buffer一旦出现预测错误,损失还是比较大的。

论坛徽章:
0
7 [报告]
发表于 2007-10-11 19:53 |只看该作者
看来避免分支还是必要的,但分支总是不可避免的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP