Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
X86 现代英特尔处理器有多少种超标量方式?_X86_Intel_Cpu Architecture_Micro Architecture - Fatal编程技术网

X86 现代英特尔处理器有多少种超标量方式?

X86 现代英特尔处理器有多少种超标量方式?,x86,intel,cpu-architecture,micro-architecture,X86,Intel,Cpu Architecture,Micro Architecture,我刚刚学习了超标量处理器() 我还了解到,随着超标量处理器在宽度/方式数量上的增加,事情变得更加复杂,复杂性增长如此之快,最好添加更多的内核,而不是增加宽度。我的导师说,在4路和8路超标量之间添加更多的方法不再值得 这让我不禁要问:英特尔是从哪里停止添加内核的?我的Intel第8代core i7的每个核心有多少种方式 “方式”的概念是否适用于这些处理器?请参阅以获取类似于此的管道详细信息。还可以在哈斯韦尔进行uarch深度潜水,并绘制方框图。(还有大卫·坎特关于其他UARCHE的一些文章的链接,

我刚刚学习了超标量处理器()

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

这让我不禁要问:英特尔是从哪里停止添加内核的?我的Intel第8代core i7的每个核心有多少种方式

“方式”的概念是否适用于这些处理器?

请参阅以获取类似于此的管道详细信息。还可以在哈斯韦尔进行uarch深度潜水,并绘制方框图。(还有大卫·坎特关于其他UARCHE的一些文章的链接,如SnB和Core2,AMD推土机和K8)还有

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


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

英特尔,因为Core 2在发布/重命名/分配阶段是4 uops宽的超标量,这是最窄的瓶颈。(在此之前,奔腾M的PPro是3宽的)。Core 2在实践中很难维持这一点,因为还有太多其他瓶颈。Skylake通常在高吞吐量代码方面非常接近

为了在每个融合域uop中获得更多的工作,有一个ALU uop与其内存源负载的微融合。和宏融合,例如cmp/test+jcc,因此比较和分支指令一起解码为一个uop。(请参阅Agner Fog的微通道指南)。这包括您的卡比或咖啡湖CPU。最大未使用的域持续吞吐量为每个时钟7 uops。在突发事件中,调度程序可以向每个端口发送UOP

冰湖(Sunny Cove uarch)将发行阶段扩大至5。

AMD Zen的宽度为6 uops,但只有5条指令宽,因此,当运行至少一些2 uops指令时,它只能达到6 uops/时钟。e、 g.256位AVX SIMD指令,将其解码为2倍128位的一半(或更糟的车道交叉混洗)


Skylake将传统解码器扩展到5 uops/时钟,Uopcache从SnB通过Broadwell的4 uops/时钟提升到6 uops/时钟。这会在更多的时间隐藏前端气泡,并在高通量代码中使issue/rename阶段在更多的时间内以每时钟4个UOP的形式提供。(各阶段之间存在缓冲区/队列,例如为发布/重命名阶段提供数据的64 uop IDQ。)

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



是的,大多数代码在3或4宽范围内的收益递减,但SMT允许宽内核同时在两个(或4或8个)执行线程中找到ILP。这使得更宽的内核不会被浪费,但是内核的成本与宽度成线性关系,所以只有在单个线程可以使用大部分宽度的情况下才可以这样做。否则,您只需构建更多更小的内核。(至少如果您有一个可扩展的互连以容纳更多的内核…)我在on electronics.SE上的回答提供了更多关于权衡和实际工作负载中有限的ILP的详细信息。

这是一个很好的答案。我认为如果你提到4/5/6重命名瓶颈是你提到的最窄的瓶颈,那么提取标题答案会更容易——因为这是标题答案,我认为“4宽,因为重命名是4宽,它是最窄的瓶颈,等等”。