现代英特尔处理器有多少种超标量? [英] How many ways-superscalar are modern Intel processors?

查看:18
本文介绍了现代英特尔处理器有多少种超标量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚了解了超标量处理器(https://en.wikipedia.org/wiki/Superscalar_processor)。

我还了解到,随着超标量处理器在宽度/方式数量上的增加,事情变得更加复杂,复杂性增加得如此之快,以至于最好添加更多的内核,而不是更多的宽度。我的教练说,在4路和8路超标量之间增加更多的方式是不值得的。

这让我想知道:英特尔从哪里停止增加方法,开始增加内核?我的英特尔第8代酷睿i7的每个内核有多少种方式?

路的概念是否适用于这些处理器?

推荐答案

有关管道的详细信息,请参阅Agner Fog's microarch guidehttps://www.realworldtech.com/haswell-cpu/和哈斯韦尔上的一次高空深潜,并附有方框图。(还有大卫·坎特关于瑞士央行和Core2,以及AMD Bulldozer和K8等其他网站的文章的链接。)https://stackoverflow.com/tags/x86/info中的其他链接

是的,现代x86内核是超标量无序执行。自PPRO以来,基本原理没有改变:将x86机器代码解码为可由RoB+RS调度的微操作(Uop)。


术语:英特尔使用"问题"表示"复制到无序的后端",使用"调度"表示"从调度程序发送到执行单元",分配资源并更新RAT。在计算机体系结构领域的许多其他领域,人们使用相反的术语。)

Intel因为酷睿2在发布/重命名/分配阶段是4微微宽的超标量,是最窄的瓶颈。(在此之前,PPRO到奔腾-M,它是3宽。)在实践中,由于有太多其他瓶颈,核心2很难维持这一点。Skylake在高吞吐量代码方面往往非常接近。

为了在每个融合的域uop中获得更多工作,需要将一个ALU uop与其内存源的负载进行微融合。以及例如CMP/TEST+JCC的宏融合,因此比较和分支指令一起解码为一个微处理器。(参见Agner Fog的《微弓指南》)。这包括您的Kaby或Coffee Lake CPU。未融合域持续的最大吞吐量为每时钟7个uop,achievable in practice on Skylake。在突发事件中,调度程序可以将uop调度到每个端口。

Ice Lake(Sunny Cove UArch)将发行阶段扩大至5。

AMD Zen有6个uop宽,但指令只有5个,所以在运行至少一些2-uop指令时,它只能达到6 uop/时钟。例如256位AVX SIMD指令,它将其解码为2x 128位的一半(或者对于车道交叉洗牌更糟)。


Skylake将传统解码器扩展到5个uop/时钟,uop缓存提取从通过Broadwell的SNB的4个/时钟增加到6个uop/时钟。这在更多的时间隐藏了前端气泡,并使问题/重命名阶段在高吞吐量代码中每个时钟更多地获得4个uop。(阶段之间有缓冲区/队列,例如,为问题/重命名阶段提供数据的64微级IDQ。)

这包括您的Kaby或Coffee Lake CPU:在微体系结构上,KBL中的IA内核与SKL相同,而Coffee Lake只是一个非常小的调整(修复了SKL在微码更新中由于部分寄存器合并uop错误而不得不禁用的循环缓冲区,也就是CPU错误)。KBL和CFL的GPU比SKL更好,但x86内核基本相同。


是的,对于大多数代码来说,超过3或4宽的回报是递减的,但SMT允许广泛的内核一次在两个(或4个或8个)执行线程中找到ILP。这使得更大的核心不会被浪费,但是核心的成本与宽度成线性关系,所以只有在有时单个线程可以使用该宽度的大部分时才这样做。否则,你只会建造更多更小的核心。(至少如果您有可扩展的互连以支持更多内核...)我在Why not make one big CPU core?上的回答是关于电子产品的。SE中有更多关于折衷和实际工作负载中有限的ILP的详细信息。

这篇关于现代英特尔处理器有多少种超标量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆