标签: hyperthreading

超线程、多线程、多处理和多任务 - 理论

我对不同术语及其实际差异感到困惑。它们各自是什么以及它们的实际含义是什么?我在学校的 IT 老师前一天给了我们一个定义,第二天又给了我们另一个定义,所以请您为我解释一下。

谢谢。

multithreading multiprocessing hyperthreading multitasking

2
推荐指数
1
解决办法
2462
查看次数

关于缓存未命中的 x86 超线程说明

如果我对 x86 cpu 的理解正确,超线程是有益的,尤其是当我们有 IO 调用时,这样当阻塞线程空闲时,另一个线程可以廉价地在同一个 CPU 上工作。我的问题是缓存未命中是否也会发生同样的事情。那么在等待数百个周期从主内存中获取数据的同时,其他线程可以在同一个物理 CPU 上执行一些代码吗?

cpu multithreading cpu-architecture hyperthreading

2
推荐指数
1
解决办法
298
查看次数

在超线程 CPU 上运行第二个线程是否会在整个管道中引入额外的开销?

工作中有一个与超线程至强机器相关的讨论。我对超线程如何工作的(肤浅的)理解是 CPU 在物理上多路复用来自两个“线程”的指令。也就是说,执行单元是共享的,但是有两个不同的架构集(寄存器集、指令队列,甚至可能是分支预测器等)——每个线程一个。执行单元及其缓冲区/队列总是准备好接收新的指令/数据,从这个角度来看,禁用一个线程而不是保留两个线程没有任何优势。

我的同事暗示通过关闭超线程我们可以实现加速,因为运行单线程的 CPU 不再需要“查看”另一个线程是否也有一些工作要做。我的理解是,所有这些电路都已经硬连线以多路复用来自两个线程的传入数据/指令,并且禁用超线程只会关闭其中一个线程,不允许它接收任何指令/数据,但实际上没有其他不同。这是超线程如何工作的一个很好的心理模型吗?

我确实理解有很多因素在起作用,例如内存工作集、共享缓存的问题等,可能会影响 2 线程超线程 CPU 与禁用超线程的同一 CPU 相比的表现,但是我的问题更多地是针对禁用超线程是否以某种方式使整个数据/指令流通过管道更快?例如,在尝试填充后端前端的缓冲区时是否会出现争用问题?

我同事的解释也以某种方式包括管理程序,但我看不到两者之间的关系?它们似乎是正交的概念。

谢谢!

performance x86 cpu-architecture hyperthreading

2
推荐指数
1
解决办法
239
查看次数

如何在C++程序中以拓扑考虑实现多核HT的亲和性?

我正在开发一些具有可变数量线程的C++多核程序,我想知道如何设置一个合适的(实际上是"最好的")亲和力.我使用Boost-threads,所以我可以调用get_hardware_concurrency()来了解有多少逻辑内核.到目前为止,我写了一个映射"第n个线程到第n个逻辑核心",但由于多插槽处理器和超线程,它并不是最聪明的事情.我的程序总是像SIMD一样,所以线程之间没有任何共享,如果是HT计算机,我想以我能想象的最聪明的方式将线程绑定到逻辑核心:第一个物理上的第一个逻辑核心,第2个物理上的第1个逻辑,...,第1个物理上的第1个逻辑,第1个物理上的第2个逻辑,依此类推.

我发现了很多内容,讨论了如何发现HT是否启用(CPUID)以及如何确定逻辑和物理内核PER包.我知道我必须处理一些汇编代码,它并没有吓到我,但我真的找不到如何知道有关逻辑内核,物理内核和软件包的完整信息以及操作系统如何处理所有这些信息.

作为最简洁的我可以:我怎么知道OS(Windows和Linux)引用的线程的确切位置(物理核心和包)为N-th?

c++ multicore affinity hyperthreading

1
推荐指数
1
解决办法
1681
查看次数

多线程(超线程)v/s多核处理器

我正在我的大学做一个并行计算课程,显然我们需要了解程序员级别的架构.谁能说出开发多核处理器的动机是什么?为什么多线程处理器不够用?为什么我们需要在多个内核上分配管道而不是将它们放在一个大型内核上?

multicore computer-architecture hyperthreading

1
推荐指数
1
解决办法
1718
查看次数

CPU/微处理器中的物理核心和逻辑核心有什么区别?

我尝试理解以下术语,但仍然感到困惑

  • 微处理器

  • 处理器

  • 核心

  • 处理器核心

  • 物理核心

  • 逻辑核心

据我所知

微处理器(CPU)==处理器

每个系统只有一个处理器,但我们可以有更多核心

但处理器和核心有什么区别呢?

什么是物理核心和逻辑核心?

请解释一下。

terminology processor cpu-architecture hyperthreading cpu-cores

1
推荐指数
1
解决办法
902
查看次数

超线程处理器核心可以在同一时间执行两个线程吗?

我很难理解超线程.如果逻辑核心实际上不存在,那么使用超线程有什么意义呢?在维基百科的文章指出:

对于物理上存在的每个处理器核心,操作系统寻址两个虚拟(逻辑)核心,并在可能的情况下共享它们之间的工作负载.

如果两个逻辑内核共享相同的执行单元,这意味着其中一个线程必须被保持而另一个执行,这就是说,我不明白超线程如何有用,因为你是实际上没有引入新的执行单元.我无法绕过这个

multithreading cpu-architecture multiprocessing hyperthreading

1
推荐指数
1
解决办法
528
查看次数

为什么我的电脑更喜欢偶数核心?

我的电脑配备了启用虚拟化的第 10 代 Core i7 vPRO。8核+8虚拟核。(i7-10875H,彗星湖)

每个物理核心都分成几对,因此核心 1 托管虚拟核心 0 和 1,核心 2 托管虚拟核心 2 和 3。我注意到在任务管理器中,每个核心对的第一项似乎是首选核心,从使用率较高来看。我确实为某些繁重的程序手动设置了一些亲和力,但我总是将它们设置为 4 组,从 0-3、4-7、8-11、12-15,并且永远不会与不同的逻辑处理器不匹配。

我想知道为什么会发生这种行为 - 偶数核心是否等于物理核心,这可能会稍微快一些?如果是这样,如果我运行的程序没有高线程数,我会在没有虚拟化的情况下获得稍微更好的时钟速度吗?

在此输入图像描述 在此输入图像描述

windows x86 scheduler cpu-architecture hyperthreading

1
推荐指数
1
解决办法
584
查看次数

超线程能否影响32位处理器上32位int读/写的原子性?

我已经读过某些地方,超线程可以使32位int(在32位处理器上)读取和写入非原子,即使它是边界对齐的.任何人都可以解释超线程如何影响这个?

multithreading hyperthreading atomicity

0
推荐指数
1
解决办法
742
查看次数

线程是在CPU上运行还是在核心上运行?

单线程是运行在单核还是单CPU上?

另外,我有i7。它说我有 4 个核心,但有 8 个线程。核心和线程不是1-1的比例吗?怎么翻倍了?

cpu multithreading cpu-architecture hyperthreading cpu-cores

0
推荐指数
1
解决办法
1395
查看次数