什么是"逻辑CPU核心"

时间:2014-05-29 14:16:04

标签: operating-system preprocessor cpu multicore

我正在阅读一些操作系统资料。我把这句话搞砸了,让我有点困惑: "多核是指具有多个逻辑CPU核心并且可以同时执行多个指令的计算机或处理器。"

什么是"逻辑CPU内核",它是处理器吗?它是否与物理内容相对应,或者操作系统是否看到了逻辑CPU内核,但实际上物理处理器的数量却少于逻辑CPU内核?

3 个答案:

答案 0 :(得分:2)

逻辑CPU核心包含单处理器的完整架构上下文。这是操作系统可以调度和控制架构状态的单元,例如异常地址(对于没有硬连线的架构)。

有两种常见情况,它不会与物理核心一对一对应。首先,单个物理核可以实现多个虚拟处理器,例如,英特尔的超线程。在这种情况下,OS调度程序应该知道虚拟处理器可以共享各种资源,例如指令获取,指令调度硬件和执行单元,这通常意味着应该将任务调度到不同的物理内核以最大化性能。 (此问题在较小程度上也适用于共享L2缓存的不同核心。此类问题与多CPU计算机的NUMA优化有些相关。)

在第二种情况下,管理程序的硬件虚拟化可以向OS呈现任意数量的核。虽然管理程序通常会使客户操作系统看不到比硬件提供的更多逻辑处理器(即包括与硬件多线程相关的虚拟处理器),但理论上管理程序可以向操作系统提供任意数量的处理器(就像操作系统一样)通过使用时间切片向应用层呈现任意数量的处理器的印象。在这样的软件虚拟化环境中,管理程序可能不会向操作系统公开处理器的性质,因此操作系统只能将它们视为用于调度的抽象单元。

这种划分有些复杂,硬件也可以在不为每个线程提供完整虚拟处理器的情况下实现多线程。例如,MIPS多线程应用程序特定扩展区分虚拟处理元素(在架构状态方面表现为不同的处理器)和线程上下文(在同一VPE中的线程之间共享系统协处理器)。作为进一步的复杂性,可以在VPE之间迁移线程上下文。例如,物理处理器核心可能具有两个VPE和五个线程上下文,并且可以允许OS将给定TC分配给VPE,使得VPE可以具有一个到四个TC。此外,如果备用硬件线程可用(在FORK的情况下)或至少一个线程仍然有效(在YIELD的情况下),非特权软件可以在没有OS参与的情况下使用FORK和YIELD线程。

对于MIPS MT-ASE,操作系统通常只关注线程上下文,但是如果对实际硬件配置有更全面的了解,可以进行一些优化,如果将线程上下文视为虚拟,则可能出现一些正确性问题。处理元素。

答案 1 :(得分:0)

我猜这是指CPU的ALU(算术逻辑单元)。

任何进程的ALU单元都是CPU负责执行所有算术和逻辑运算的部分。

答案 2 :(得分:0)

拥有一些背景知识可能会有所帮助:

处理器

处理器可以描述单个执行核心或单个物理多核芯片。使用的上下文将定义该术语的含义。例如普通PC计算机应该只有一个处理器

芯片

芯片是指计算机上的物理集成电路(IC)。芯片通常被称为执行单元,可以是单核或多核技术。

套接字 套接字是指计算机主板上接受单个物理芯片的物理连接器。许多主板可以有多个插座,而这些插座又可以接受多核芯片。

自多核技术问世以来,如双核和四核。本质上,核心包括包含L1高速缓存和功能单元的逻辑执行单元。核心能够独立执行程序或线程。超级计算机被列为拥有数千个核心。

超线程

超线程是一种最初位于多核系统之前的英特尔技术,用于使单个核心在逻辑上显示为同一芯片上的多个核心。超线程通过尽可能在多个核之间共享计算工作负载来提高性能,允许操作系统一次安排多个进程。有关更多信息,请参阅英特尔超线程技术。

物理/逻辑核心

sockets and cores

如图所示,您有2个插槽,每个插槽有4个内核,每个内核当前可以执行4个线程(由于超线程)。在这种情况下,如果在Linux上使用命令 lscpu ,您可能会看到有32个CPU。实际上,你有1个芯片,2个插槽,8个内核和32个CPU(从Linux角度来看)