哪些应用程序在Windows 10中使用超线程?

HT不是应用程序可见的功能,因此所有应用程序都使用HT(大多数甚至不知道它)。 HT是一个内核伪造另一个内核的时候。 这是在硬件初始化时选择的(由BIOS决定),并在OS中显示为另一个内核,必须单独启动(就像其他真正的非HT内核一样)。 我在这里使用“ fake”是因为两个虚拟HT内核永远无法同时执行同一件事:它们被复用到单个物理内核上。 复用是逐周期进行的,但从原理上讲与OS如何将多个线程复用到内核上相似。 应用程序可能支持HT,并且可以专门使用其线程,以最大程度地减少HT带来的效率低下。 例如,在共享物理内核的HT内核上运行的线程将争用缓存和其他片上资源。 如果应用程序知道两个线程的大部分时间都花在一个紧密的,资源受限的循环中(例如DAXPY或图像处理内核,或者可能是视频压缩),则应用程序可能会请求其线程位于不同的物理内核上。 这些都与特定的OS无关:此描述完全基于硬件功能,没有OS可以绕过。 (当然,操作系统可能不了解HT,因此可能无法避免HT的某些危害。) 从某种意义上说,当代码最差时,HT的效果最佳。 例如,编译器通常基于高度链接的结构,这意味着遍历指针。 如果目标位于高速缓存中,则指针会很快,但是大型的链接结构将大部分时间都花在DRAM上。 这意味着一个线程将在大多数时间处于停滞状态–这对于HT来说是完美的,因为可以将两个停滞的线程有效地插入到同一物理核心上。 当然,我并没有责怪编译器依赖链接结构,但是从HT中获得的任何好处都取决于停顿的代码,这很可笑……