Answers:
多线程是指在一个操作系统中运行多个执行线程的一般任务。多线程是更一般称为“多处理”,其中可以包括多个系统进程(Windows上的简单的例子是,例如,运行Internet Explorer和Microsoft Word在同一时间),或者它可以由具有多一个进程的线程内它。
多线程(或者应该说多处理)是一个软件概念。实际上,即使计算机只有一个CPU内核并且该内核不支持超线程,任何具有Turing功能的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一样快,即使它的物理核心数量只有一半。
示例1在所有示例中当然是最慢的,但是在运行不适合超线程的工作负载时,示例3有时可能与示例3一样快。
在使用现代Intel CPU的现实基准测试中,我们通常会发现,与没有超线程相比,超线程通常可以将性能提高20%到40%(通过在测试中禁用超线程功能来对“无超线程”情况进行基准测试) BIOS)。有时,在某些工作负载中,禁用超线程会显示性能优势,但是这些工作负载在实际使用中很少见。但是,如果我可以在4个具有超线程的内核或8个内核之间进行选择,假设每个内核本身具有相同的性能,那么我每次都会选择8个内核的CPU。
多线程是在操作系统级别进行并行处理的术语。处理器与多线程无关。
超线程是Intel的一个概念,可在单个处理器内核中实现多个线程的“同时”处理。操作系统有两个处理器核心,尽管只有一个物理核心。