gpt4 book ai didi

cpu - 超线程与超标量执行

转载 作者:行者123 更新时间:2023-12-03 17:14:03 26 4
gpt4 key购买 nike

想象一个超标量(多个执行单元)并且还具有超线程 (SMT) 支持的 CPU(或内核)。

为什么 CPU 可以真正并行执行的软件线程数量通常由它拥有的逻辑内核(即所谓的硬件线程)数量决定,而不是它拥有的执行单元总数?
如果我的理解是正确的,SMT 实际上并没有实现真正的并行执行,它只是通过复制 CPU 的某些部分(那些存储架构状态,但不是主要执行资源的部分)来使上下文切换更快/更有效。另一方面,超标量架构允许每个时钟周期真正同时执行多条指令,因为 CPU 具有多个执行单元,即多个并行流水线,每个流水线都可以以真正的并行方式处理单独的线程。

那么举个例子,如果一个CPU有2个内核,每个内核有2个执行单元,那么它的硬件并发(真正可以并行执行的线程数)不应该是4吗?为什么它的硬件并发性而不是由逻辑内核的数量给出,而 SMT 实际上并没有启用真正的并行执行?

最佳答案

您不能只是将指令插入执行单元。
如果您想要两个 2 路 SMT,您需要保持两个架构状态并获取两个指令流。

如果一个公司有 100 个开发人员,但只有两个项目经理,它只能并行开发两个项目(但如果让 PM 每天左右切换项目,它可以 concurrently 开发更多)。

如果 CPU 只能从两个指令流中获取数据(仅保留两个线程上下文),则您只能为其分配两个线程来并行执行。
但是,您可以进行时分并同时执行更多线程。

软件无法访问执行单元,这将产生循环参数(软件需要 EU 来执行,但 EU 需要软件来执行)。
CPU 将尝试使用尽可能多的 EU,利用乱序并推测任何可能的东西。
实际上,超线程只是一种让所有资源保持忙碌的方式(例如,当他们无事可做时,与另一个 PM 共享一个开发人员)。

但是,如果一切都失败了并且没有使用欧盟,那么这个可能的工作单元就白费了。

关于cpu - 超线程与超标量执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55636494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com