6.1.3 硬件线程和软件线程
线程可以在硬件中实现,也可以在软件中实现。芯片生产商实现了有着多个硬件线程的内核,用作逻辑内核。有着多个硬件线程的内核被称作同时多线程(simultaneous multithreaded,SMT)内核。SMT将多线程的概念引入到硬件中,方式类似于软件线程。支持SMT的处理器在处理器内核中同时执行很多软件线程或进程。让软件线程同时在单独的处理器内核中执行,增加了内核的效率,因为类似I/O延迟等因素产生的等待时间被减到最短。操作系统将逻辑内核按照独特的处理器内核来对待。它们会要求一些冗余的硬件来存储线程的上下文信息,例如指令计数器和寄存器组。根据处理器内核的不同,其他硬件或结构将被复制或在多个线程的上下文之间共享。
Sun公司的UltraSparc T1、IBM公司的Cell Broadband Engine(CBE)以及各种Intel多核处理器利用SMT或芯片级多线程(chip-level multithreading,CMT),实现了每个内核上2个~8个线程。超线程是Intel对SMT的实现,其主要目的就是改善对多线程代码的支持。超线程或SMT技术通过在一个处理器内核上并行执行线程,在特定负载下提供了对CPU资源的有效使用。