一个双发射处理器到底是什么?

37

我见过几个有关“双发射”处理器的概念的参考资料(我希望这在句子中甚至是有意义的)。 我找不到任何关于双发射究竟是什么的解释。 Google给我提供了微控制器规格的链接,但这个概念没有在任何地方得到解释。 这里有一个这样的参考示例。 我找错地方了吗?简短的段落说明它是什么将非常有帮助。


1
我认为您提供的链接似乎讨论的是双发射指令,而不是双发射处理器。它谈到了会导致下一周期需要第二条流水线的限制条件。这是一个关于R系列处理器文档的链接[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0363e/Cegbbffb.html],它讨论了(可能不同的)双发射指令。 - Abdul Hfuda
http://electronics.stackexchange.com/questions/145473/single-issue-and-dual-issue-architecture - Ciro Santilli OurBigBook.com
2个回答

55

双发射是指每个时钟周期,处理器可以将两个指令从流水线的一个阶段移动到下一个阶段。具体实现取决于处理器和公司术语:它可以意味着将两个指令从解码队列移动到重新排序队列(英特尔称之为“issue”),也可以意味着将指令(或微操作或其他内容)从重新排序队列移动到执行端口(我的理解是,IBM将其称为“issue”,而英特尔将其称为“dispatch”)。

但广义上来说,这通常意味着您可以在每个周期中维持执行两个指令。

由于您标记了ARM,我认为他们正在使用英特尔的术语。Cortex-A8和Cortex-A9每个周期可以获取两个指令(在Thumb-2中可以获取更多指令),解码两个指令,并“发出”两个指令。在Cortex-A8上,没有乱序执行,尽管我不记得是否仍然有解码队列供您发出指令-如果没有,您将直接从解码指令插入到两个执行流水线中。在Cortex-A9上,有发射队列,因此解码的指令被发出到那里-然后指令以每个周期最多4个的速度分派到执行流水线。


1
当然,ARM和Intel都搞错了。术语“dispatch”和“issue”可以追溯到60年代和CDC 6600。 - Mackie Messer

0
简单来说,双发问题意味着CPU核心的峰值指令执行速率为每个时钟周期两条指令。
这可以通过某种硬件指令级并行性来实现(如在其他答案中用一些很好的例子解释的那样)。超标量架构是实现指令级并行性并复制执行单元的典型方式。

1
在同一个执行单元中执行多个指令。 - 你是在说 Pentium 4 吗?它以双倍时钟速度运行其整数 ALU,因此每个 ALU 每个时钟周期可以处理 2 个 uop,即使它们彼此之间有依赖关系。这样就实现了不需要 ILP 的 IPC 提升。 - undefined
@PeterCordes 我更多地考虑的是更新的RISC-V架构。例如,可以在这里看到一个双发射执行单元的描述:https://www.scs.stanford.edu/~zyedidia/docs/sifive/sifive-u74mc.pdf(第34页)。引用:“S7执行单元是一个双发射、按顺序执行的流水线”。 - undefined
@PeterCordes 您的 Cortex-A53 示例与我指出的 RISC-V 示例非常相似。然而,在官方 ARM Cortex-A53 TRM 中我并没有看到任何关于超标量的提及。与我指出的 RISC-V 示例一样,ARM 只提到了双发射。这就是为什么我相信这是一种突出显示并非所有内容都是重复的方式,就像我在原始答案中解释的那样。虽然您可能不同意所提到的 RISC-V 规范,但您是否至少同意我的答案反映了他们的术语?(这也是我首次查看这个 StackOverflow 问题的原因) - undefined
1
无论如何,你的回答一开始使用了常规术语,其中超标量CPU具有多个“执行单元”,包括某些类型的多个执行单元。(例如,https://www.realworldtech.com/sandy-bridge/6/上有一个展示了SnB中各个端口上执行单元的图表)。但是,然后你提出了这个替代术语,其中“执行单元”是除前端之外的整个核心。你写得好像这是一种不同的硬件设计,而不仅仅是用不同的术语来描述同一件事。好像这是超标量CPU的某种替代方案一样。 - undefined
1
@PeterCordes 谢谢你的反馈!我同意,我已经删除了第二部分。 - undefined
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接