多核处理器和多线程处理器 (SMT) 的优缺点是什么

What are the pros n cons of Multicore Processors and Multithreaded Processors (SMT)

对于 SMT,一个处理器的部分在线程之间共享,而其他部分在它们之间复制 另一方面,多核处理器将两个或多个独立的执行核心嵌入到单个处理器封装中。

我的问题:每种架构在不同场景下的优缺点是什么。

没有真正的主要缺点,为了获得高性能,您需要两者兼而有之。

为了获得高单线程性能为了获得更高的吞吐量,您需要 SMT。

但是你不能把单核做的特别宽;它不会线性扩展,因此添加更多物理内核是一种更好的方式来消耗超过特定管线宽度的晶体管/功率。

这就是为什么所有高端现代 CPU 每个芯片都是多核,每个核都支持 SMT。它允许您进行交易每线程性能以获得更高的总吞吐量,让更多的执行单元在每个核心上忙碌。

  • 自 Nehalem 以来的英特尔:采用 2 路 SMT 的多核
  • Intel Xeon Phi(Knight's corner/landing/mill)许多 个内核,每个内核都有 4 路 SMT
  • AMD Zen:多核 2 路 SMT
  • IBM POWER8:多核 8 路 SMT

SPARC Niagara 有点例外:它可能不被认为是真正的 SMT,而是细粒度的多线程,因为每个内核只能发出一个指令/时钟 (wikipedia)。

AMD 在 Bulldozer 中试验了 CMT:一组共享 SIMD / FPU 的弱整数内核。当有足够的线程来保持所有内核忙碌时,这具有不错的吞吐量,但不能像普通 SMT 那样 运行 更快地减少线程。

对于 SMT,一个处理器的部分在线程之间共享,而其他部分在它们之间复制。最重要的共享资源之一是实际的执行引擎。该引擎通过为一个线程在另一个线程未使用的资源上执行指令,同时在两个线程上工作。当两个线程都处于 运行ning 时,SMT 技术实际上是交错执行管道中的指令。何时插入哪些指令完全取决于在执行时处理器的哪些执行资源可用。此外,如果一个线程忙于从磁盘读取大型数据文件或等待用户在键盘上键入,则另一个线程将接管所有处理器资源——无需操作系统切换任务——直到第一个线程准备好恢复处理。这样,每个线程都获得最大的可用资源,处理器也尽可能保持繁忙。

SMT 技术通过延迟隐藏实现性能提升。从根本上说,单个执行核心在多个线程之间共享。因此,线程执行不是并行的。因此,性能结果因应用程序和硬件平台而异。 SMT优势 • 一般:更好地利用系统资源 • 在多处理器机器上并行化任务并增强性能 缺点 • 共享资源(对象、数据)的同步 • "starvation":某些线程可能无法使用糟糕的设计

另一方面,多核处理器将两个或多个独立的执行核心嵌入到单个处理器封装中。通过提供多个执行核心,每个指令序列或线程都拥有一个完全属于自己的硬件执行环境。这使每个线程 运行 以真正并行的方式启用。一个

请注意,双核处理器提供每个线程的真正并行执行。应该注意的是,SMT 技术并不试图提供多核性能,理论上双核系统的性能可以接近 100% 或 2 倍的提升。 SMT 技术更像是一种设施,程序员可以利用空闲 CPU 资源来完成更多工作。当与多核技术结合时,SMT技术可以提供强大的优化机会,大幅提高系统吞吐量。