问题标签 [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.
cpu - 一秒钟能执行多少条指令?
- 一个处理器有 4 个内核
- 每个核心有 2 个 - 超线程
- 其时钟频率为 2 GHz
- 平均而言,一条指令需要 4 个 CPU 周期才能在每个超线程上执行
一秒能执行多少条指令?我需要关于使用哪些方程式的帮助。我知道 1 GHz 在 1 纳秒有 1 个 cpu 周期,因此 2 GHz 将在 0.5 纳秒内完成一个 cpu 周期。
caching - 超线程和游戏(以及其他计算应用程序)?
我想知道在不同情况下超线程(每个物理核心有多个逻辑核心)对现实世界的性能影响是什么。英特尔宣称这在执行线程等待 I/O 时有效,但在内存密集型应用程序中,它可能无效,因为当逻辑内核之间发生切换时,处理器缓存中的局部性丢失。第二个应用程序的数据被加载到缓存中,迫使第一个应用程序的内存超出缓存。在返回到第一个应用程序时,它的引用都是缓存未命中并且性能损失。我认识几个超级计算机管理员,他们声称他们关闭了超线程,因为在他们的情况下这样做更有效。有没有“正常” 禁用超线程更有效的用户案例?游戏可能会占用大量内存——如果没有超线程会更好吗?
c - Best gcc optimization switches for hyperthreading
Background
I have an EP (Embarassingly Parallell) C application running four threads on my laptop which contains an intel i5 M 480 running at 2.67GHz. This CPU has two hyperthreaded cores.
The four threads execute the same code on different subsets of data. The code and data have no problems fitting in a few cache lines (fit entirely in L1 with room to spare). The code contains no divisions, is essentially CPU-bound, uses all available registers and does a few memory accesses (outside L1) to write results on completion of the sequence.
The compiler is mingw64 4.8.1 i e fairly recent. The best basic optimization level appears to be -O1 which results in four threads that complete faster than two. -O2 and higher run slower (two threads complete faster than four but slower than -O1) as does -Os. Every thread on average does 3.37 million sequences every second which comes out to about 780 clock cycles for each. On average every sequence performs 25.5 sub-operations or one per 30.6 cycles.
So what two hyperthreads do in parallell in 30.6 cycles one thread will do sequentially in 35-40 or 17.5-20 cycles each.
Where I am
I think what I need is generated code which isn't so dense/efficient that the two hyperthreads constantly collide over the local CPU's resources.
These switches work fairly well (when compiling module by module)
as do these when compiling one module which #includes all the others
there is no discernible performance difference between the two.
Question
Has anyone experimented with this and achieved good results?
multithreading - 超线程/SMT 是一个有缺陷的概念吗?
HT/SMT 背后的主要思想是,当一个线程停止时,同一内核上的另一个线程可以选择该内核的剩余空闲时间并透明地运行。
2013 年,英特尔放弃了 SMT,转而支持其 Silvermont 处理器内核的乱序执行,因为他们发现这可以提供更好的性能。
ARM 不再支持 SMT(出于能源原因)。AMD 从不支持它。在野外,我们仍然有各种支持它的处理器。
从我的角度来看,如果构建数据和算法是为了不惜一切代价避免缓存未命中和后续处理停滞,那么 HT 肯定是多核系统中的冗余因素吗?虽然我很欣赏由于两个超线程的离散硬件存在于同一个物理内核中,所涉及的上下文切换开销很低,但我看不出这总比没有上下文切换要好。
我建议对超线程的任何需求都指向有缺陷的软件设计。我在这里有什么遗漏吗?
operating-system - 即时禁用和启用超线程
我想知道理论上是否可以在 BIOS 中禁用超线程后启用超线程,反之亦然。事实证明,如果超线程被禁用,它们仍然会在 ACPI 的 MADT 表中显示为禁用的内核。这是 MADT 的示例输出,处理器具有 4 个内核和每个内核 2 个线程,并且禁用了超线程。
我想知道(a)是否有一个选项可以在运行时启用这些内核(无需重新启动并通过 BIOS)。并且(b)如果未启用超线程/处理器(例如,它是否在本地 APIC 禁用的情况下执行 hlt 或 mwait 指令?),超线程/处理器处于什么(定义明确的)状态。
我在 ACPI 规范(5.2.12.2 处理器本地 APIC 结构)中读到的启用标志如下:
如果为零,则此处理器不可用,并且操作系统支持不会尝试使用它。
但是,如果有人知道,我很想知道禁用的超线程的实际状态是什么。例如,英特尔软件开发人员手册第 3 卷(第 8.4.3 节)中描述的 MP 初始化协议算法是否执行于初始化期间禁用的超线程?
multithreading - 超线程、多线程、多处理和多任务 - 理论
对于它们的实际差异,我对不同的术语感到困惑。它们各自是什么,它们的实际含义是什么?我在学校的 IT 老师前一天给了我们一个定义,第二天又给了我们一个定义,所以请你帮我解释一下。
谢谢。
operating-system - 什么是“逻辑 CPU 核心”
我正在阅读一些操作系统材料。我把这个让我有点困惑的词组红了:“多核是指具有多个逻辑 CPU 内核的计算机或处理器,并且可以同时执行多条指令。”
什么是“逻辑 CPU 核心”,它是处理器吗?它是否对应于物理的东西,或者是操作系统看到了逻辑 CPU 内核,但实际上物理处理器比逻辑 CPU 内核少?
multithreading - Visual Studio 是否针对超线程微处理器进行了优化?
我想知道最常见的软件开发套件,例如Microsoft Visual Studio,其编译器是否已针对最大程度地使用超线程功能进行了优化?是否值得使用超线程处理器来处理这些软件?
我读过很多评论,超线程仅对视频编辑器等密集型多线程应用程序有用。一些评论说,未针对使用超线程进行优化的软件可能会降低性能,许多人使用超线程运行他们的系统线程关闭。
由于我是一名新手程序员,我想知道这些论点和评论在编程领域是否正确。
我再次谈论的是编译器和 IDE,而不是我将要创建的应用程序!(好像现在我不知道如何创建多线程应用程序!!)
linux - 最大 CPU 使用率(最大允许 CPU 使用率)
我有一个四核(采用超线程技术 - HT)我正在运行一个占用 270% CPU 的应用程序(根据 TOP 命令)
总可用 CPU 使用率是多少?(是 400% 还是 800%?)
- 我问是因为根据英特尔文档,HT 可以将性能提高到 30% cpu,所以 800% 似乎很多,是吗?)
平均负载和 CPU 使用率之间有什么关系?
hyperthreading - 超线程——真的是 X2 内核吗?
根据英特尔(如果我没记错的话)的说法,超线程 (HT) 可以: - 将性能提高 30%。- 当一个任务使用 ALU 单元而另一个任务执行 I/O 时,HT 可以更好地利用 CPU(例如:一个任务使用 zip alg,另一个任务用于将数据写入磁盘) - 这样可以可以使用HT。
所以,如果我有一个带有 HT 的核心,并且我正在使用 2 个同时运行 2 个 zip 算法的任务,那么 HT 在这里不会高效,因为一个任务将等待另一个任务完成一个 ALU 单元的工作?(在这种情况下,我需要 2 个内核,而不是 1 个带 HT 的内核)。
我了解 Intel 对 HT 的含义吗?这样对吗 ?