91得票4回答
多CPU、多核和超线程有什么区别?

能否有人解释一下多CPU,多核和超线程之间的差异?我经常被这些差异困惑,并且关于每种架构在不同情况下的优缺点也感到不确定。 这是我的目前的理解,通过在线学习和他人的评论所得: 我认为超线程技术是它们中最低劣的技术,但价格便宜。它的主要思想是复制寄存器以节省上下文切换时间; 多处理器比超线程更...

53得票14回答
如何检测Windows、Mac和Linux系统上的物理处理器/核心数量?

我有一个多线程的C++应用程序,在Windows、Mac和几个Linux版本上运行。 简单地说,为了使其以最大效率运行,我必须能够针对每个物理处理器/核心实例化一个单独的线程。创建超过物理处理器/核心数量的线程会严重降低我的程序性能。在这三个平台上,我已经能够正确检测到逻辑处理器/核心的数量...

49得票4回答
RISC-V规范中提到“hart”这个词 - 它的意思是什么?

我在RISC-V 2.1规范的第35页找到了对hart的提及。但是,在这个文档中我找不到hart的定义。 hart是指硬件线程还是指更邪恶的东西?

27得票8回答
多核+超线程-线程如何分配?

我正在阅读新的Intel Atom 330评测,其中他们指出任务管理器显示4个内核-两个物理内核,加上另外两个通过超线程模拟的内核。 假设您有一个有两个线程的程序。同时也假设这些是在PC上执行任何工作的唯一线程,其他所有内容都处于空闲状态。操作系统将两个线程放在同一个内核上的概率是多少?这对...

26得票2回答
超线程兄弟姐妹间与非超线程兄弟姐妹间共享内存位置的生产者-消费者延迟和吞吐成本有何区别?

一个进程内的两个不同线程可以通过读取和/或写入共享内存位置来共享该位置。通常,这种(有意的)共享是使用x86上的lock前缀实现的原子操作,对于lock前缀本身(即未争用的成本)以及在实际共享缓存行时(真正的或伪共享)的额外一致性成本都有相当熟知的成本。 我主要关心的是生产者-消费者模式下的...

26得票4回答
为什么一个完全受限于 CPU 的进程在开启超线程后能工作得更好?

给定: 一个完全由CPU限制的非常大的任务(即,超过几个CPU周期),以及 一台具有四个物理核心和总共8个逻辑核心的CPU, 在这种情况下,8、16和28个线程是否比4个线程效果更好?我知道,对于具有四个物理核心的机器而言,四个线程的上下文切换和开销都会比8、16或28个线程少。然而,...

25得票7回答
在Java中是否可能检查CPU是否启用了超线程?

我想知道可以运行的最佳线程数。通常,这等于Runtime.getRuntime().availableProcessors()。 然而,在支持超线程的CPU上,返回的数字会高出一倍。现在,对于某些任务,超线程是有好处的,但对于其他任务则无用。在我的情况下,我怀疑它没有用,所以我想知道是否需要...

23得票2回答
超线程对编译器性能的影响?

假设我们想要尽快编译一个大项目(例如GCC或Linux内核),启用超线程功能的CPU(例如Intel Core i7)是否会在启用或禁用超线程时更快地运行编译器?是否有发表过测试这一点的基准测试数据? 我对超线程的理解是,每个核心可以从两个(或多个)进程中选择指令。通常情况下,这使得核心更有...

22得票4回答
线程 vs 核心

如果我有像这样的处理器,其说明#核心=4,#线程=4,且不支持超线程技术。 这是否意味着我可以同时运行4个程序/进程(因为一个核心只能运行一个线程)? 还是这意味着我可以同时运行4×4=16个程序/进程? 根据我的调查,如果没有超线程技术,每个核心只能运行1个线程(进程)。如果我错了,请指出。

22得票6回答
Linux查找超线程核心ID

今天上午我一直在尝试找出如何确定处理器 ID 是否为超线程核心,但没有成功。 我希望找到这个信息并使用set_affinity()将进程绑定到超线程线程或非超线程线程以分析其性能。