超執行緒

超线程（HT, Hyper-Threading）是英特尔研发的一种技术，于2002年发布。超线程技术原先只应用于Xeon 处理器中，当时称为“Super-Threading”。之后陆续应用在Pentium 4 HT中。早期代号为Jackson。
通过此技术，英特尔实现在一个实体CPU中，提供两个逻辑线程。之后的Pentium D纵使不支持超线程技术，但就集成了两个实体核心，所以仍会见到两个线程。超线程的未来发展，是提升处理器的逻辑线程。英特尔于2016年发布的Core i7-6950X便是将10核心的处理器，加上超线程技术，使之成为20个逻辑线程的产品。
英特尔表示，超线程技术让Pentium 4 HT处理器增加5%的裸晶面积，就可以换来15%~30%的性能提升。但实际上，在某些程序或未对多线程编译的程序而言，超线程反而会降低性能。除此之外，超线程技术亦要操作系统的配合，普通支持多处理器技术的系统亦未必能充分发挥该技术。例如Windows 2000，英特尔并不鼓励用户在此系统中利用超线程。原先不支持多核心的Windows XP Home Edition却支持超线程技术。

运作方式

每个单位时间内，一个单运行管线的CPU只能处理一个线程（操作系统：thread），以这样的单位进行，如果想要在一单位时间内处理超过一个线程是不可能的，除非是有两个CPU的实体单元。双核心技术是将两个一样的CPU放置于一个封装内（或直接将两个CPU做成一个芯片），而英特尔的HT技术是在CPU内部仅复制必要的资源、让两个线程可同时运行；在一单位时间内处理两个线程的工作，模拟实体双核心、双线程运作。
Intel自Pentium开始引入超标量、乱序运行、大量的寄存器及寄存器重命名、多指令解码器、预测运行等特性；这些特性的原理是让CPU拥有大量资源，并可以预先运行及平行运行指令，以增加指令运行效率，可是在现实中这些资源经常闲置；为了有效利用这些资源，就干脆再增加一些资源来运行第二个线程，让这些闲置资源可执行另一个线程，而且CPU只要增加少数资源就可以模拟成两个线程运作。
P4处理器需多加一个Logical CPU Pointer（逻辑处理单元）。因此P4 HT的die的面积比以往的P4增大了5%。而其余部分如ALU（整数运算单元）、FPU（浮点运算单元）、L2 Cache（二级缓存）并未增加，且是共享的。

使用HT技术的CPU

Pentium 4 CPU中，Northwood及其之后推出的版本内置超线程技术；但在早期的Northwood核心中，一些型号的HT技术被关闭，纵使有软件侦测到超线程技术的存在，用户并不可以激活；而双核心的Pentium D中也只有EE版提供HT技术。英特尔的Core 2 Duo处理器则没有HT技术。但处理器已集成了两个实体CPU核心，所以仍然支持两个线程。
而在2008年推出的Intel Core i7及Intel Atom处理器又支持类似HT的技术，在 Nehalem 中，Hyper-Threading 大举卷土重来。在 Intel NetBurst 架构的Northwood 版本中开始导入的Hyper-Threading－在 Intel 世界之外称为Simultaneous Multi-Threading (SMT)－是善用线程平行性的方法，让单一核心在应用软件层能运行两个逻辑线程。超线程技术在部分Intel Core i3/i5/i7/i9处理器中可用。从Kaby Lake Pentium开始，定位低级的Pentium（部分型号）也支持超线程技术。部分SoC设计的Pentium、Celeron、Atom也支持超线程技术。

顾虑

把运行管线的状态，想像成流水线，资源A→资源B→资源C，来了两条数据要计算，
一条需要消耗A的100%→B的50%→C的50%，另一条一样需要消耗A的100%→B的50%→C的50%，
一条单纯的（无HT）的运行管线的资源A需要先运用100%性能把第一条运算完才能再运算下一条，但后面的资源B跟C却都有50%性能的浪费；
如果把运行管线的资源A，变成两个，资源B跟C依然只有一个，
那这条管线就可以变成“两个资源A同时消耗100%性能运算两条数据，到了资源B跟C阶段时，两条数据再各自消耗50%的性能”，
即达成“不必增加一条完整的运行管线，却能在一样时间运算两条线程”
但实际应用时，运行管线不会都是收到这么完美的需运算数据，
可能会是需消耗“A的10%→B的70%→C的70%”+“A的30%→B的50%→C的70%”+......等多种不同性能需求的需运算数据，
依照文件的统计数字，整体能够提升的性能约为5~15%左右，且万一发生资源互抢的情形时，整体性能反而会下降。
(以上是非常简略地描述大略情形，实际的超线程架构从P4时代至i系列6代，每一代都有所进化)
要令计算机支持超线程技术，通常需操作系统和硬件的配合。芯片组需要支持具有HT技术之处理器。为此，当时的Intel推出了新的芯片组，i865PE和i875P。要充分发挥超线程的性能，用户要使用Windows 2000之后的操作系统，而Windows XP家用版亦支持超线程技术。除了微软的Windows外，Linux kernel 2.4.x亦开始支持该技术。软件方面，通常优化多线程的程序都可以支持到。早期，游戏软件的支持是比较少。但随着多核心技术的普及，愈来愈多游戏软件支持多线程的处理器。

示例：获取物理核心数与逻辑核心数

Windows API的GetLogicalProcessorInformation可获取当前计算机的物理核心数逻辑核心数：
DWORD GetProcessorCoreCount(DWORD &PhysicalProcessorCoreCount,DWORD &LogicalProcessorCoreCount ){
typedef BOOL(WINAPI *LPFN_GLPI)(
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,
PDWORD);

LPFN_GLPI glpi = (LPFN_GLPI)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "GetLogicalProcessorInformation");

if (NULL == glpi)
return 0;

PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer = NULL;
DWORD returnLength = 0;
 PhysicalProcessorCoreCount = 0;
 LogicalProcessorCoreCount = 0;
while (true)
{
DWORD rc = glpi(buffer, &returnLength);

if (FALSE == rc)
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
if (buffer)
free(buffer);

buffer = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc(
returnLength);

if (NULL == buffer)
return 0;
}
else
{
return 0;
}
}
else
{
break;
}
}

PSYSTEM_LOGICAL_PROCESSOR_INFORMATION ptr = buffer;

DWORD byteOffset = 0;
while (byteOffset + sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION) <= returnLength)
{
switch (ptr->Relationship)
{
case RelationProcessorCore:
{
++PhysicalProcessorCoreCount;

// count the logical processor, which is equal the count of digital 1's of ptr->ProcessorMask
ULONG_PTR   ProcessorMask = ptr->ProcessorMask;
while (ProcessorMask != 0)
{
ProcessorMask &= ProcessorMask - 1;
LogicalProcessorCoreCount++;
}
break;
}
default:
break;
}
byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
++ptr;
}
free(buffer);
return -1;}
上述代码在32位编译时最多能枚举32个逻辑核心，在64位编译时最多枚举64个逻辑核心。如果超过64，应该使用processor group.