问题标签 [hyperthreading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - 多核 + 超线程 - 线程如何分布?
我正在阅读对新 Intel Atom 330 的评论,他们注意到任务管理器显示 4 个内核 - 两个物理内核,再加上两个由超线程模拟的内核。
假设你有一个有两个线程的程序。还假设这些是唯一在 PC 上做任何工作的线程,其他一切都是空闲的。操作系统将两个线程放在同一个内核上的概率是多少?这对程序吞吐量有很大的影响。
如果答案不是 0%,除了创建更多线程之外,还有其他缓解策略吗?
我预计 Windows、Linux 和 Mac OS X 会有不同的答案。
使用sk 的答案作为谷歌素材,然后按照链接,我在 Windows 中找到了GetLogicalProcessorInformation函数。它谈到“共享资源的逻辑处理器。这种类型的资源共享的一个例子是超线程场景。” 这意味着jalf是正确的,但它不是一个确定的答案。
intel - 超线程会导致系统不稳定吗?
我正在使用新的 Intel I7 四核处理器构建 PC。打开超线程后,它会在任务管理器中报告 8 个内核。
我的一些同事说超线程会使系统不可靠并建议将其关闭。
你们中的任何一个好人都可以启发我和其余的 stockoverflow 用户。
继续:我一直在使用超线程,并且一直在使用。一点不稳定都没有。我正在使用:
- 微软服务器 2008 64 位
- 微软 SQL Server 2008 64 位
- 微软视觉工作室 2008
- 管理员服务器
- 很多控件(Telerik、Dundas、Rebex、Resharper)
c# - 如何判断我的程序运行的机器是否使用超线程?(C#)
我有一些代码需要知道我的特定机器上有多少实际内核可用,以及是否启用了超线程。
有没有办法在 C# 中做到这一点?
更新:这些机器是 XP 和 Vista 的混合体
更新:访问“Win32_Processor.NumberOfCores”或“Win32_Processor.NumberOfLogicalProcessors”会在其中一台机器(但不是全部)上引发异常(带有消息“未找到”的 ManagmentException)
multicore - 多CPU、多核和超线程有什么区别?
谁能向我解释多 CPU、多核和超线程之间的区别?我总是对这些差异以及每种架构在不同场景中的优缺点感到困惑。
以下是我在网上学习和借鉴别人的评论后目前的理解。
- 我认为超线程是其中最劣质的技术,但价格便宜。它的主要思想是重复寄存器以节省上下文切换时间;
- 多处理器比超线程好,但是由于不同的CPU在不同的芯片上,不同CPU之间的通信比多核延迟更长,使用多芯片比多核成本和功耗更高;
- 多核将所有 CPU 集成在一个芯片上,因此与多处理器相比,不同 CPU 之间的通信延迟大大降低。由于它使用单个芯片来包含所有 CPU,因此与多处理器系统相比,它消耗的功率更少且成本更低。
它是否正确?
hyperthreading - 超线程编程语言
超线程可以用哪些语言实现?它只是面向对象系统的一部分还是可以在 C 中实现?
谢谢。
multithreading - 什么是 CPU 线程,它与代码中的逻辑线程有什么关系?
我在文献中看到了一些较新的 CPU,例如Intel Xeon “Nehalem-EX”,它们具有 8 个内核和 16 个线程。他们在这里谈论什么?我在参考文献中也看到了这一点,所以 SPARCS 也肯定这不是由代码产生的那种逻辑线程吗?这种超线程是否被重新命名?
simd - SSE 和超线程
SSE 寄存器是否在逻辑处理器(超线程)之间共享或复制?我能否期望 SSE 繁重程序的并行化与普通程序具有相同的加速(英特尔声称具有超线程的处理器为 30%)?
windows - 启用超标题的系统上的 CPU 编号
我试图找出操作系统(Windows,linux)如何在启用超线程的环境中将数字分配给逻辑 CPU。?
两个操作系统是否首先为物理 CPU 连续分配编号,然后开始对逻辑 CPU 进行编号,或者是否遵循其他规则..?例如,在具有超线程的 2 个物理 cpu 系统中,操作系统是否将编号 0,2 分配给第一个物理 cpu,然后将 1,3 分配给第二个物理 cpu ..?
任何参考将不胜感激。
提前致谢。
问候,-杰。
编辑:回答艾伦的问题:我需要知道这一点,因为在我的工作中,我需要将各种线程绑定到特定的 CPU 以避免上下文切换,并且我想确保某些任务(线程)绑定到单独的物理 CPU。谢谢
c# - 如何以编程方式确定是在多核、超线程还是多处理器上?
我知道如何获取处理器类型,也许这是唯一的方法,但我实际上正在寻找一种方法来确定应用程序是在多核处理器上运行还是在超线程单核处理器上运行。
(背景:我的一些客户的托管服务提供商对他们通过 VMWare 映像提供哪些资源非常模糊。这个应用程序应该在多核上运行,但自上次“移动”以来已经看到了不利的性能。通常,在多核,一个核心在一个线程上出现峰值,而另一个没有。在这个“多核”上,两个处理器都出现峰值,即使在单线程应用程序上也是如此。)
performance - 超线程对编译器性能的影响?
假设我们想尽可能快地编译一个大型项目(比如 GCC 或 Linux 内核)。具有超线程功能的 CPU(比如 Intel Core i7)在启用或禁用超线程的情况下运行编译器的速度是否更快?是否有任何已发布的基准测试这一点?
我对超线程的理解是每个内核都可以从两个(或多个进程)中选择指令。这通常会使核心更高效,因为功能单元空闲的可能性较小。但是,由于在同一内核上运行的进程共享缓存等资源并且可能相互干扰,因此可能会降低性能。性能是否真正提高取决于工作负载。
那么对于编译器工作负载,性能会提高吗?如果是这样,多少?