![核心和逻辑处理器之间的区别](https://linux22.com/image/219373/%E6%A0%B8%E5%BF%83%E5%92%8C%E9%80%BB%E8%BE%91%E5%A4%84%E7%90%86%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB.png)
答案1
核心和线程之间的这种区别是由于某些 CPU 的设计而存在的。
英特尔推出了一项技术,称为超线程在他们的一些CPU中。这利用了 CPU 的一些内部工作原理,其中执行流程可能会突然被迫等待,例如:数据从 RAM 加载到 CPU 中。超线程不是强迫核心浪费时间等待 IO,而是寻求利用核心做其他有用的事情。
为此,他们引入了“逻辑处理器”的概念。多个(通常是 3 个)处理器使用相同的芯片。当一个正在等待时,另一个正在使用相同的电路进行处理。
因此,处理器(插入主板上的芯片)可能有两个内核和四个逻辑内核。对于操作系统来说,这看起来很像有 4 个 CPU。从电子角度来看,两个 CPU 核心各自假装是两个。
值得理解的是,同一核心上的两个逻辑处理器会频繁地相互等待。因此,一个内核上的两个逻辑处理器在性能上并不等同于两个独立的内核。
甚至在某些情况下,已知超线程会降低整体性能,因为两个逻辑处理器共同实现的性能低于一个单核的性能。据说非常高的内存 IO 就是这些情况之一。
线程是一个编程概念。无论您拥有多少个逻辑处理器,您都可以拥有更多的线程。线程按时间切片:它们运行几毫秒,然后被操作系统暂停,以便另一个线程可以运行。
拥有四个逻辑处理器意味着操作系统可以要求 CPU 同时运行四个线程。
答案2
核心是 CPU 的一个单元,可以对数据执行所有操作(加法、减法、乘法……)。
逻辑CPU分析当前程序并在需要计算时引导核心。我们可以让多个逻辑CPU共享一个核心。在这种情况下,如果 2 个逻辑 CPU 同时需要核心,则某些线程可能会休眠在核心上执行计算的时间。