sp4*_*497 6 multithreading cpu-architecture hyperthreading
我想知道是否有人可以解释这两个不同的原因?它与intel硬件架构(HT)有关吗?
超线程是硬件和英特尔品牌.大多数人称之为同时多线程(SMT).对于程序员来说,两个超线程看起来像两个CPU核心.在硬件方面,多个超线程共享一个核心.(在intel的情况下,每个核心有两个超线程).
多线程(或多线程编程)通常被认为是在单个程序中使用多个线程上下文(指令指针,寄存器,堆栈等)的概念.(通常在相同的进程或虚拟地址空间中).
小智 8
物理处理器 (PP) 是单个处理单元的硬件实现。从这个角度来说,一个“核心”就是基本的PP。有时,多处理器、多核等术语用于区分芯片中处理单元的组织方式,以及它们之间共享哪些其他物理资源,例如 L2、总线等。 但是对于这个答案,我们感兴趣的是最基本的处理单元。
当 PP 支持超线程时(让我们暂时使用这个术语),PP 被拆分为两个或多个逻辑处理器 (LP)。这是通过加强执行管道、复制寄存器集、PC、中断处理机制等 PP 资源来完成的。这允许 PP 在“同时”持有和执行多个“执行上下文”。这些执行上下文有时称为硬件线程 (HT)。如果 PP 不支持超线程(或已关闭),则 LP 与 PP 相同。
软件线程 (ST) 是由软件创建的执行上下文,例如使用 pthread_create() 或 clone()。这些实体由操作系统调度到处理器上。多线程程序是程序员在其中显式创建 ST 的代码。多线程程序可以在不支持超线程的处理器中运行。在这种情况下,ST 之间的上下文切换是昂贵的,因为它需要调度程序的干预以及使用内存来存储和加载执行上下文。
当超线程打开时,操作系统将多个 ST 调度到一个 PP。通常每个 LP 一个 ST。操作系统将 LP 视为真正的 PP。因此,每个 ST 将在不同的 LP 上运行。一旦 ST 被调度,我们可以说它们变成了硬件线程 (HT)(粗略地说),因为 PP 取得了控制权。当一个 HT 停止时,例如缓存未命中或流水线刷新,PP 执行另一个 HT。这种“上下文切换”几乎没有任何成本,因为 HT 的上下文已经在 PP 中。操作系统不参与这些上下文切换。最相关的是,这些停顿和相应的上下文切换可能发生在管道的许多阶段。这与基于调度程序的上下文切换不同,后者发生在基于中断的事件上,例如量子到期、I/O 中断、中止、系统调用等。
正如 Nathan 在之前的回答中所说,超线程是一个非常具体的术语。一个更通用且不可知的术语是“同步多线程 (SMT)”。
最后,我强烈推荐阅读:1) 操作系统支持并发多线程处理器。詹姆斯·R·布尔平
2) 最大化处理效率的微架构选择和权衡。Deborah T. Marr(博士论文)
| 归档时间: |
|
| 查看次数: |
12876 次 |
| 最近记录: |