|
 
- 帖子
- 517
- 积分
- 1075
- 注册时间
- 2006-3-9
|
4#
发表于 2006-8-26 15:12
| 只看该作者
5、Core的分支预测单元
在性能与能耗的平衡决策中,INTEL最终在Core的BP分支预测单元(Branch Predictor)上投入了大量的晶体管。
作为连接内存和CPU的重要环节,在BP分支预测上投入宝贵的晶体管资源是十分值得的。相对于预测错误后让CPU浪费时间和电耗来等待再次预测,一次准确的预测不仅仅节约了处理时间、提高了性能,也同样降低了CPU的功耗。
Core的三重分支预测单元实际上与Pentium M的预测单元是一样的,在Core的分支预测核心中存在一个双模态预测器和一个球型预测器,这些预测器记录下过去的执行历史并随时通知内核前端的ROB和RS,ROB和RS从BTB分支目标缓冲器(Branch Target Buffer)中快速取回所需要的数据地址,常规预测如通知一个分支在循环中仅在奇次迭代发生, 而不在偶次迭代中发生等, 这些在动态执行(P6系列)处理器上的静态预测技术还有有着长远的发展空间。
Core的分支预测单元拥有新的预测器- 循环回路预测(Loop Detector)与间接分支预测(Indirect Branch Predictor)。
循环回路预测
分支历史表(Branch History Tables)不能够记录下足够详细的循环回路历史来准确预测下次的运算,所以每次循环回路的运行都浪费了大量的亢余时间。 循环回路预测(Loop Detector)则可以记录下每个循环回路结束前的所有的详细分支地址,当下一次同样的循环回路程序需要运算时,内核前端的ROB和RS就可以以100%的准确度来快速完成任务,Core构架拥有一个专门的运算法则来进行这种循环回路预测。
间接分支预测
间接分支预测(Indirect Branch Predictor)在运用时并不是立即分支,而是从寄存器中装载需要的预测目标,它实际上是一个首选目标地址的历史记录表。在ROB和RS需要间接分支的时候它就可以提供帮助,ROB和RS就可以快速提取到适用的结果,这与P6构架用可预测的条件分支替换间接分支来改善性能是相反的。
6、Core的存储器改进
乱序执行OOOE必须有序输出BIO的一个简单原因就是:存储器未确定其它操作全部结束前是不能轻易修改一个存储单元的。

类似之前SIMD的8位、16位、 32位读写操作与MMX64位读写操作相混淆,及对同一存储区域先大数据量存贮然后小数据量读取或对同一存储区域先小数据量存贮再大数据量读取的情况,多种操作都可导致动态执行处理器的阻塞,虽然总体上只有3%的机率会出现存储混淆的错误,但过去的构架为预防存储混淆和堵塞采用了极其保守的方法-等待,这样就有大量的周期都浪费在存储器等待上。

在新的Core构架中,INTEL的设计师们使用了成熟的Memory Disambiguation技术,可以让存数和取数指令同时进行乱序执行而不用等待前排取数/存数指令的完成。这一优化使Core构架节约了大量的亢余周期,使其浮点存储器环节速度显著加快。 |
|