我正在阅读一些操作系统材料。我读到这句话让我有点困惑:
“多核是指具有多个逻辑 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,操作系统通常只关心线程上下文,但通过更完整地了解实际硬件配置,可以进行一些优化,并且如果将线程上下文视为虚拟处理元素,则可能会出现一些正确性问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)