其他分享
首页 > 其他分享> > Computer Architectrure: Quantitative Approch 第三章第十二节

Computer Architectrure: Quantitative Approch 第三章第十二节

作者:互联网

Putting It All Together: The Intel Core i7 6700 and ARM Cortex-A53

在本节中,我们将探讨两个多重问题处理器的设计:ARM Cortex-A53内核(用作数款平板电脑和手机的基础)和Intel Core i7 6700(高端,动态计划的,推测性的) 适用于高端台式机和服务器应用程序的处理器。 我们从更简单的处理器开始。

The ARM Cortex-A53

A53是具有动态问题检测功能的双事件静态调度超标量,它允许处理器每个时钟发出两个指令。 图3.34显示了流水线的基本结构。 对于非分支整数指令,有8个阶段:F1,F2,D1,D2,D3 / ISS,EX1,EX2和WB,如标题所述。 流水线是有序的,因此一条指令只有在其结果可用且执行了后续指令时才可以启动执行。 因此,如果接下来的两条指令是相关的,则它们都可以继续执行适当的执行管道,但是当它们到达该管道的开头时,它们将被序列化。 当基于记分板的发布逻辑指示第一条指令的结果可用时,第二条指令可以发布。

在这里插入图片描述
取指令的四个周期包括一个地址生成单元,该地址生成单元通过递增最后一个PC或从四个预测变量之一生成下一个PC:

  1. 单项分支目标高速缓存,其中包含两个指令高速缓存的提取(假设预测正确,分支之后的下两个指令)。 如果目标高速缓存命中,它将在第一个提取周期中对其进行检查。 然后从目标缓存中提供接下来的两条指令。 在命中和正确的预测的情况下,无延迟执行分支。
  2. 3072个条目的混合预测变量,用于所有未在分支目标高速缓存中命中的指令,并在F3期间运行。 此预测变量处理的分支会产生2个周期的延迟。
  3. 在F4期间运行的256项间接分支预测器; 当正确预测时,此预测器预测的分支会导致三个周期的延迟。
  4. 8个深度的返回堆栈,在F4期间运行,并产生三个周期的延迟。

在这里插入图片描述
在这里插入图片描述

在ALU管道0中做出分支决策,从而导致8个周期的分支错误预测损失。 Figure3.35显示了SPECint2006的错误预测率。 浪费的工作量取决于错误预测率和遵循错误预测分支时所维持的发布率。 如Figure3.36所示,浪费的工作通常遵循错误预测率,尽管它可能更大或更小。

Performance of the A53 Pipeline

A53流水线的性能由于具有双重问题结构,A53的理想CPI为0.5。 流水线停顿可能来自以下三个方面:

  1. 功能冲突,因为选择的两个相邻发布指令同时使用相同的功能流水线而发生。 由于A53是静态调度的,因此编译器应尽量避免此类冲突。 当这些指令顺序出现时,它们将在执行管道的开始处被序列化,此时只有第一条指令将开始执行。
  2. 数据冲突,在管道中较早发现,可能会使两个指令(如果第一个不能发出指令,第二个指令总是被阻塞)或一对指令中的第二个指令停顿。 同样,编译器应在可能的情况下尝试防止此类停顿。
  3. 控制冲突,仅在分支预测错误时才会出现。

TLB未命中和缓存未命中也都会导致停顿。 在指令方面,TLB或高速缓存未命中会导致填充指令队列时出现延迟,这很可能导致流水线的下游停顿。 当然,这取决于是L1未命中(如果未命中时指令队列已满,则可能在很大程度上被隐藏),还是L2未命中(这会花费更长的时间)。 在数据方面,缓存或TLB未命中将导致流水线停顿,因为导致未命中的加载或存储无法沿流水线继续进行。 因此,所有其他后续指令将被暂停。 Figure3.37显示了CPI和各种来源的估计贡献。

在这里插入图片描述
A53使用浅管线和合理的分支预测器,从而导致较小的管线损耗,同时允许处理器以较低的功耗实现较高的时钟速率。 与i7相比,A53的四核处理器功耗大约为1/200!

The Intel Core i7

i7使用具有深度流水线的积极的无序投机微体系结构,其目标是通过结合多个问题和高时钟速率来实现高指令吞吐量。 首款i7处理器于2008年问世。 i7 6700是第六代。 i7的基本结构相似,但是连续几代通过更改缓存策略(例如,预取的主动性),增加内存带宽,扩展运行中的指令数量,增强分支预测并改善图形支持来提高性能。 早期的i7微体系结构使用预留站和重新排序缓冲区来解决其混乱的推测性流水线。 后来的微架构(包括i7 6700)使用寄存器重命名,保留站充当功能单元队列,而重排序缓冲区仅跟踪控制信息。

Figure3.38显示了i7流水线的整体结构。 我们将按照图中标记的步骤,从提取指令开始,然后继续执行指令,以检查流水线。
在这里插入图片描述

在这里插入图片描述

Performance of the i7

在前面的部分中,我们检查了 i7 分支预测器的性能以及 SMT 的性能。 在本节中,我们将了解单线程流水线性能。 由于存在激进的推测以及非阻塞缓存,因此很难准确归因理想化性能与实际性能之间的差距。 6700 上的大量队列和缓冲区显着降低了由于缺少保留站、重命名寄存器或重新排序缓冲区而导致的停顿概率。 事实上,即使在缓冲区明显更少的早期 i7 920 上,也只有大约 3% 的加载被延迟,因为没有可用的预留站.

因此,大多数损失来自分支预测错误或缓存未命中。 分支错误预测的成本是 17 个周期,而 L1 未命中的成本大约是 10 个周期。 L2 未命中的成本是 L1 未命中的三倍多,而 L3 未命中的成本约为 L1 未命中成本的 13 倍(130-135 个周期)。 尽管处理器会尝试在 L2 和 L3 未命中期间寻找替代指令来执行,但很可能某些缓冲区会在未命中完成之前填满,从而导致处理器停止发出指令。

在这里插入图片描述

图 3.40 显示了 19 个 SPECCPUint2006 基准测试的总体 CPI 与早期 i7 920 的 CPI 相比。i7 6700 的平均 CPI 为 0.71,而 i7 920 的平均 CPI 为 1.06,几乎高出 1.5 倍。 这种差异源于改进的分支预测和需求未命中率的降低(参见第 135 页的图 2.26)

在这里插入图片描述

要了解 6700 如何实现 CPI 的显着改进,让我们看看实现最大改进的基准测试。 图 3.41 显示了 920 上的 CPI 比至少比 6700 高 1.5 倍的五个基准。有趣的是,其他三个基准显示分支预测精度有显着提高(1.5 或更高); 然而,这三个基准测试(HMMER、LIBQUANTUM 和 SJENG)在 i7 6700 上显示出相同或略高的 L1 需求未命中率。这些未命中的出现可能是因为主动预取正在替换实际使用的缓存块。 这种类型的行为提醒设计人员在复杂的推测性多问题处理器中最大限度地提高性能所面临的挑战:仅通过调整微体系结构的一个部分很少能实现显着的性能!

标签:i7,命中,Approch,Computer,指令,流水线,缓冲区,Quantitative,分支
来源: https://blog.csdn.net/qq_33146555/article/details/117278971