我正在阅读一些关于操作系统的材料。我读到了这句让我有些困惑的话:
"Multicore指的是拥有多个逻辑CPU核心并且可以同时执行多个指令的计算机或处理器。"
什么是“逻辑CPU核心”,它是处理器吗?它是否对应于某些物理部件,或者是操作系统看到的逻辑CPU核心,但实际上比逻辑CPU核心更少的物理处理器?
我正在阅读一些关于操作系统的材料。我读到了这句让我有些困惑的话:
"Multicore指的是拥有多个逻辑CPU核心并且可以同时执行多个指令的计算机或处理器。"
什么是“逻辑CPU核心”,它是处理器吗?它是否对应于某些物理部件,或者是操作系统看到的逻辑CPU核心,但实际上比逻辑CPU核心更少的物理处理器?
逻辑CPU核心包含单处理器的完整架构上下文。这是操作系统可以进行调度和控制架构状态(例如,对于没有硬连线的架构异常地址)的单位。
有两种常见情况下,逻辑CPU核心与物理核心不会一一对应。首先,单个物理核心可以实现多个虚拟处理器,例如英特尔的超线程技术。在这种情况下,操作系统调度程序应该意识到虚拟处理器可能共享各种资源,例如指令获取、指令调度硬件和执行单元,这通常意味着任务应该被调度到不同的物理核心以最大化性能。(这个问题也在较小程度上适用于共享L2高速缓存的不同核心。这些问题与为多CPU计算机优化NUMA有些相关。)
在第二种情况下,虚拟化软件可以向操作系统提供任意数量的核心。虚拟化软件通常不会向客户操作系统显示比硬件提供的逻辑处理器更多的处理器(即包括与硬件多线程相关联的虚拟处理器),但从理论上讲,虚拟化软件可以向操作系统提供任意数量的处理器(就像操作系统通过使用时间分片来向应用程序层提供任意数量的处理器印象一样)。在这种软件虚拟化环境中,虚拟化软件可能不会向操作系统公开处理器的性质,因此操作系统只能将它们视为调度的抽象单元。
有点复杂的是,硬件也可以实现多线程,而不为每个线程提供完整的虚拟处理器。例如,MIPS多线程应用特定扩展区分虚拟处理元素(在架构状态方面表现为不同的处理器)和线程上下文(在相同VPE中的线程之间共享系统协处理器)。更进一步的是,线程上下文可能被迁移到VPE之间。例如,物理处理器核心可能有两个VPE和五个线程上下文,操作系统可以允许将给定的TC分配给任何一个VPE,以便任何一个VPE都可以具有1到4个TC。此外,在可用空闲硬件线程的情况下,非特权软件可以FORK和YIELD线程(在FORK的情况下),或者至少还有一个线程处于活动状态(在YIELD的情况下),而无需涉及操作系统。
对于MIPS MT-ASE,操作系统通常只需要关注线程上下文,但是如果了解实际硬件配置,则可能存在一些优化问题,如果将线程上下文视为虚拟处理元素,则可能存在一些正确性问题。
以下是关于IT技术方面的背景知识:
处理器可以指单个执行核心或单个物理多核芯片。使用环境将定义该术语的含义。例如,普通PC电脑应该只有一个处理器。
芯片是指计算机上的物理集成电路(IC)。芯片通常指的是单核或多核技术的执行单元。
插座 插座是指计算机主板上的物理连接器,可接受单个物理芯片。许多主板可以具有多个插座,反过来可以接受多核芯片。
自多核技术问世以来,如双核和四核等。本质上,一个内核包括一个逻辑执行单元,其中包含L1缓存和功能单元。内核能够独立地执行程序或线程。超级计算机被列为拥有数千个内核。
超线程是英特尔技术,最初在多核系统之前出现,并用于使单个内核在同一芯片上逻辑上显示为多个内核。超线程通过在可能的情况下在多个内核之间共享计算工作量来提高性能,使操作系统能够同时安排多个进程。有关更多信息,请参见英特尔超线程技术。
如图所示,您有2个插座,每个插座有4个内核,每个内核当前可以执行4个线程(由于超线程)。在这种情况下,如果在Linux上使用命令lscpu,则可能会看到您拥有32个CPU。实际上,您只有1个芯片,2个插座,8个内核和32个CPU(从Linux角度来看)。
我猜它指的是CPU的ALU(算术逻辑单元)。
任何处理器的ALU单元都是CPU的一部分,负责执行所有算术和逻辑操作。