The last word on Hyperthreading (4930k)

I just tested it.

Same project, 64 samples of ASIO buffer via RME Hammerfall. ASIO guard off (because I hate the delays when starting the playback).

WITH Hyperthreading: 70-72% CPU load
WITHOUT Hyperthreading: 90-95% CPU load

Please, Steinberg, correct your information on Hyperthreading. Actually, on modern CPUs, even without that “ASIO guard”, it’s very, very helpful.

I have the opposite experience w/ the same CPU, so one would have to investigate in a more thorough fashion.

My test setup consists of 12 u-he Diva and 2x 2caudio B2 in the sends, with all Divas playing one note and having both sends active.

Do you have those plugins?

no i don’t have those.

I’ve been using INTEL 4930K for a half year now. Great workhorse 12core CPU. Extremely powerful.

Yes, hyperthreading shall be set to ON in BIOS and that is the correct setting on any modern CPU.
Several years back you needed to disable hyperthreading but that aren’t necessary to do anymore.
By the way, there are plenty of more wrong tweaks and wrong recommendations on various sites on the Internet. :wink:


Best Regards
Freddie

I guess this is because the original Hyperthreading (Xeon, Pentium 4 if I remember correctly) wasn’t that efficiently implemented by Intel.

Todays Hyperthreading is much better, but we really need proper testing with multiple scenarios, as it seems.

With my “Cubase performance testing and burn in test.cpr” (which is tailor-made by me to match my needs) apparently, HT gives me a great boost. lukasbrooklyn, on the other hand, possibly has a usage scenario where HT is even counterproductive.

This is very interesting, if you ask me.

Navigator, in the test you did, did you have the multicore settings on in the diva instances?

No, off. As I understand it this is only meant for using Diva without anything else which seriously consumes CPU at the same time.

Cubase (read: Windows - if I’m not mistaken Cubase utilizes the Windows thread scheduler) is very efficient at spreading the threads, which are caused by the tracks, over the available cores (physical and logical).

So I keep this setting in Diva off, because otherwise it would interfere with the scheduling and create all other kinds of unnecessary problems (a DAW MAY assume thread states which could, theoretically, be thrashed by interfering threads - but this depends on how clean the design of Cubase is, which is something I don’t know).

I think it works like this:

For each track, Cubase starts a new thread. Windows then issues this thread to the CPU core with the lowest load, filling up the physical cores first, then the logical cores.

Send-FX will create synchronization issues, of course… because multiple source threads must complete their work before the FX tracks can start theirs. But in my (balanced) example this should be ok.

I see a performance gain (in theory) with HT, because of inefficencies in utilizing CPU resources when the CPU resources have to wait for I/O (including cache / memory) or architectural state (which includes the pipelines, which are efficient, but not perfect, even in a 4th generation i7).

From a theoretical point of view, HT is the way to go. Of course, “the devil is in the details” (as we say in German).

this is correct

“”" guess this is because the original Hyperthreading (Xeon, Pentium 4 if I remember correctly) wasn’t that efficiently implemented by Intel.“”"

again I build and sell about 1200 systems a yr. a good 600+ are for pro audio. a large amount of those are for Cubendo.

DO NOT TURN IT OFF PERIOD

FYI we do complete integration. in other words before the system ships we install the interface and Cubendo and completely test it. (if you already own both)
and we completely support not just the system but Cubase(and other software) and the interface (or other hardware)

so this is not experience from 1 system but thousands of systems. been doing this almost 17 yrs.

if you are seeing issues from HT on your system is not built or tweaked or set up correctly. that simple.
there is a very rare nearly unheard of issue but that is another story. for 99.9% leave the HT alone.

Hyperthreading works like this:

  • CPUs always consisted of “architectural state” and “execution units”
  • Architectural state (pipelining, etc…), however, is much slower than the execution units of today (which can execute more than one instruction per clock)
  • The original Pentium already introduced a concept called “superscalar execution”, which even doubled the number of execution units, thereby making the execution units faster - this was necessary because back in those dark ages, executing even one instruction per clock cycle was almost unheard of (even integer multiplication and division took up many, many clock cycles… as opposed to today)
  • One day, the page turned - and suddenly we had CPUs which could execute multiple instructions in a single clock cycle - and the architectural state became the bottleneck (not being able to hand out enough work to the execution units)
  • To solve this problem, Intel implemented “symmetric multithreading” (SMT), which we all know by their brand name of Hyperthreading (HT) - SMT, however, basically only doubles the (rather small) architectural state, while leaving the number of execution units as they are
  • Result: much better utilization of otherwise mostly idling execution units

Thats the theory.

In practice, there are a few things keeping HT / SMT from scaling 100%:

  1. Streams of CPU instructions in threads utilizing the same execution units, without instructions regarding other execution units which could be executed (in order or out of order, doesn’t matter) in between them - audio software is affected by this a little bit (music software uses general purpose CPUs as DSPs, but the problem is not as big as it may seem at a first glance)
  2. Theoretically the so called “cache thrashing”, if the L1 / L2 caches are too small (which is NOT the case with Cubase and similar applications, btw…!)
  3. Also, back in the dark ages, there was - from what I have heard - a problem with some OS which didn’t load out the physical and logical cores in the proper order - Windows 7 and Windows 8 / 8.1 DO NOT (!) have this problem
  4. It’s a question of effort and the quality of the HT implementation, which is far better than back in the old Pentium 4 days (one has to add that the P4 was an extraordinarily bad CPU overall anyway)

6 core, 12 thread.

Wish it was a 12 core - 24 thread!

5 - 7 years from now.

I just hope that single thread performance will increase again as well, because otherwise I see a serious bottleneck coming our way by then…

interesting.

my sole experience right now is-- after upgrading the system from a core2quad to a i7 4930k processor, using a PCI RME interface and an asus x79 mobo, I simply carried on working on the same Cubendo project I had been working on before the upgrade (Win x64 were sysprepped and therefore identical, no reinstall).

now, at the given bufferlength, Cubase stutters with HT ON.

with HT OFF– it is smooth sailing…

I could have dropped a 12-core Xeon E5-2697v2 in instead of my i7-4930k, but they cost 5 times more at AU$3k and have no OCing.

I just hope some sanity comes soon, and we start getting processors that combine the best of Xeon (core) and i7 (OC).
Far too many SKUs with artificial differences. That is, just designed to be different for marketing, rather than having a valid technical reason.

However, programs also have to scale across processors more evenly, including the GUI.

I was wondering since Windows 7s thread scheduler spreads the workload over multiple cores, if ticking the “multi Processing” box in Cubase device setup is as good as I originally thought.

The OS offers the threading facility and access to multiple CPUs, plus support functions, but a program must take advantage of that as it must do some special things (like program and data synchronisation) to make sure it stays in control of them all.

The OS is focussed on the needs of the system and tries to treat ALL programs even-handedly, by trying to spread them across all cores all the time (to keep the CPU thermals even), but unless a program specifically requests more, it will be left on only one thread on one CPU at any one time.

So, keep the box ticked, unless you have other high-priority programs running (like instances of VEP) that you don’t want Cubase hogging the system.

I still have to have Hyper Threading OFF with my (OLD) I7 970.

then something is not right…
most likely the fix is here

very old topic and most of it no longer applies to newer processors but does for the 970.

I agree, we should get to the bottom of this.

From whatever standpoint I look at it, there is no logical reason for hyperthreading being bad. All it actually does is to load out the execution resources on the CPU better, which can’t be a bad thing.

I’ve done all the tweaks mentioned in that post (ages ago) but I’ve experimented with Hyperthreading on/off and it’s just more stable with my 970 off. That said, I’ve had it running at 3.2 ghz (1600 mhz ram) cool for over a year.