ros*_*ose 12 cpu architecture hyper-threading
我听说过超线程和多线程这两个术语,但它们之间究竟有什么区别?什么样的英特尔处理器使用它们?
all*_*tic 26
多线程是指在操作系统内运行多个执行线程的一般任务。多线程是更一般称为“多处理”,其中可以包括多个系统进程(Windows上的简单的例子是,例如,运行Internet Explorer和Microsoft Word在同一时间),或者它可以由具有多一个进程的线程内它。
多线程(或者我应该说,多处理)是一个软件概念。实际上,任何图灵完备 CPU 都可以执行多线程,即使计算机只有一个 CPU 内核并且该内核不支持超线程。为了支持多处理,CPU 将交错执行不同的执行线程,先执行一个,然后执行另一个,然后再执行另一个,其中操作系统会将可用时间划分为“片段”,并提供大致相等的时间来执行每个线程(时间不必相等,但这通常是完成的方式,除非进程请求更高的优先级)。
请注意,只要在任何给定时间尝试执行的软件线程数多于可用的硬件(同时)执行线程数,则这些软件线程将在可用内核之间“交错”。在“单处理器”(一个没有超线程的 CPU 核心)的情况下,如果您有多个软件线程,它们将始终被交错。如果你有一个带超线程的 4 核 CPU,那就是 8 个“硬件线程”,这意味着 CPU 可以同时执行 8 个同时执行的线程,所以如果你有 8 个软件线程试图运行,它们可以同时运行; 但是如果您有 9 个软件线程,其中一个硬件线程将不得不交错一对线程(所选择的确切线程对将取决于操作系统的调度程序实现)。
另一方面,超线程是指英特尔创建的一种非常特殊的硬件技术,它允许单个处理器内核更有效地交错执行多个线程。换句话说,具有超线程的 CPU 将提供略高于其他方面相同但没有超线程的 CPU 的性能,因为超线程 CPU 将能够同时平衡两个(有时更多,但超线程通常是 2-方式)在给定核心上的执行线程。
但是,超线程比完全独立的物理内核要慢得多,因为有些类型的操作会破坏超线程的性能优势,而完全独立的内核很少有操作会导致此类事件。
以以下示例为例,假设“1 核”在所有示例中的性能完全相同:
示例 1:2 个内核,没有超线程。
示例 2:4 核,无超线程。
示例 3:具有超线程的 2 个内核。
示例 4:具有超线程的 4 个内核。
在这种情况下,示例 4 将始终是最快的。对于极不适合利用超线程优化的工作负载,示例 2 有时可能与示例 4 一样快。
另一方面,示例 3 有时可能在超线程最有利的工作负载上几乎与示例 2 一样快,即使它的物理内核数量是示例 2 的一半。
当然,示例 1 将是所有示例中最慢的,但当运行不适合超线程的工作负载时,它有时可能与示例 3 一样快。
在现代英特尔 CPU 的现实世界基准测试中,我们通常会发现,与没有超线程相比,超线程的性能提高了 20% 到 40%(“无超线程”的情况是通过禁用超线程功能来进行基准测试的) BIOS)。偶尔会有禁用超线程显示性能优势的工作负载,但这些工作负载在实际使用中可能很少见。但是,如果让我在 4 核超线程或 8 核之间做出选择,假设每个核本身具有相同的性能,我每次都会选择 8 核 CPU。
多线程是操作系统级并行处理的术语。处理器与多线程无关。
超线程是英特尔的一个概念,它在单个处理器内核中实现多个线程的“同时”处理。操作系统看到两个处理器内核,尽管只有一个物理内核。
| 归档时间: |
|
| 查看次数: |
53817 次 |
| 最近记录: |