Tag: 超线程

以编程方式检测物理处理器/内核的数量,或者如果Windows,Mac和Linux上的超线程处于活动状态

我有一个multithreading的c + +应用程序,运行在Windows,Mac和一些Linux的风味。 长话短说:为了以最高效率运行,我必须能够实例化每个物理处理器/内核的单个线程。 创build比物理处理器/内核更多的线程会大大降低程序的性能。 我已经可以在所有这三个平台上正确检测到逻辑处理器/内核的数量。 为了能够正确检测物理处理器/内核的数量,我们必须检测是否支持超级执行并且处于活动状态。 因此,我的问题是,如果有一种方法来检测是否支持超线程和启用? 如果是这样,究竟如何。

多CPU,多核心和超线程

任何人都可以推荐一些文件来说明多CPU,多核和超线程之间的区别吗? 我总是对这些差异感到困惑,对于不同场景下每种架构的优缺点, 编辑:这是我现在的了解,在网上学习,并从他人的意见中学习; 任何人都可以评论评论吗? 我认为超线程是其中最差的技术,但价格便宜。 它的主要思想是复制寄存器来保存上下文切换时间; 多处理器优于超线程,但由于不同的CPU处于不同的芯片上,不同CPU之间的通信延时比多核更长,而且使用多个芯片的代价比多核多, ; 多核将所有CPU集成在一个芯片上,与多处理器相比,不同CPU之间的通信延迟大大降低。 由于它使用一个单芯片来容纳所有的CPU,所以消耗更less的功率并且比多处理器系统便宜。 在此先感谢乔治

生产者 – 消费者在超级同胞与非超级同胞之间共享内存位置的延迟和吞吐成本是多less?

单个进程中的两个不同的线程可以通过读取和/或写入共享一个共同的内存位置。 通常,这种(有意的)共享是通过使用x86上的lock前缀的primefaces操作来实现的,这对于lock前缀本身(即,无争议的成本)具有相当公知的成本,并且当高速caching行实际上具有额外的一致性成本共享 (真实或虚假分享)。 在这里,我感兴趣的是单线程P写入内存位置的产生消费者成本,另一个线程`C从内存位置读取,都使用普通读写。 在同一个套接字的不同内核上执行这种操作时的延迟和吞吐量是多less,而在最近的x86内核上的同一个物理内核上的同级超线程上执行时,则是​​如此。 在标题中,我使用的术语“超级同胞”是指在同一个内核的两个逻辑线程上运行的两个线程,而内核之间的同级是指在不同的物理内核上运行的两个线程的更常见的情况。