0

如果我在设计代码时不使用多线程范例,超线程会自动将负载分配到逻辑核心上,还是必须专门编写以利用其他核心,就像物理核心一样?

4

1 回答 1

2

根据@us2012 的建议,我从我的评论中将其发布在这里...

没有这样的魔法。超标量 CPU,尤其是OOO(乱序执行)处理器具有魔力——但那是在一个核心内。

相反,超线程可以被认为是(非常简化的)一个完整内核前面的两条管道。

AMD Bulldozer CPU也有类似的一点,但更进一步:整数核也被拆分为两个,但两个流水线 + 整数核共享一个浮点单元。这个整体被称为“模块”,有两个线程。

TL;博士

超标量(来自 Wiki)

超标量 CPU 架构在单个处理器中实现了一种称为指令级并行的并行形式。因此,它允许比在给定时钟速率下可能实现的更快的 CPU 吞吐量。超标量处理器在一个时钟周期内通过同时向处理器上的冗余功能单元分派多条指令来执行多条指令。每个功能单元不是单独的 CPU 内核,而是单个 CPU 内的执行资源,例如算术逻辑单元、移位器或乘法器。

乱序执行(来自 Wiki)

在计算机工程中,乱序执行(OoOE 或 OOE)是大多数高性能微处理器中使用的一种范例,用于利用指令周期,否则这些指令周期会因某种类型的代价高昂的延迟而被浪费。在这个范例中,处理器按照由输入数据的可用性决定的顺序执行指令,而不是按照它们在程序中的原始顺序。这样做,处理器可以避免在为程序中的下一条指令检索数据时处于空闲状态,而是处理能够立即运行的下一条指令。

超线程(来自……你知道在哪里……)

超线程(官方称超线程技术或 HT 技术,缩写为 HTT 或 HT)是英特尔专有的同步多线程 (SMT) 实现,用于改进在 PC 微处理器上执行的计算的并行化(一次执行多个任务)。它于 2002 年 2 月首次出现在 Xeon 服务器处理器上,并于 2002 年 11 月出现在 Pentium 4 桌面 CPU 上。1后来,英特尔在 Itanium、Atom 和 Core 'i' 系列 CPU 等中加入了这项技术。

推土机(不是来自非维基)

Bulldozer 是自 2003 年 AMD 推出 K8 处理器以来首次对 AMD 处理器架构进行重大重新设计,并且还具有两个支持 FMA 的 128 位 FPU,可以组合成一个 256 位 FPU。这种设计伴随着两个整数簇,每个簇有 4 个管道(获取/解码阶段是共享的)。Bulldozer 还将在新架构中引入共享 L2 缓存。AMD 的营销服务将这种设计称为“模块”。16 线程处理器设计将包含其中的八个“模块”[7],但操作系统会将每个“模块”识别为两个逻辑内核。

于 2013-09-09T13:01:30.213 回答