A small s**tstorm is heading your way, if you& #39;re in the business of running code on Intel computers.

Here& #39;s a sad story about the state of computing in 2019.
It& #39;ll take a couple of tweets, but it& #39;s actually kind of important (?), so please retweet so this gets proper attention:
For those of you who& #39;ve been following me, You know I& #39;m developing an AVX2 based sort that I& #39;m running against C#& #39;s own Array.Sort(), which is really the same as glibc& #39;s sort, std::sort etc.) and compiled in C++.

It& #39;s been 6 months, so let& #39;s just say I know its perf by heart.
Here& #39;s what it looked like Yesterday, vs. Today:

Those of you with keen eye-sight can immediately tell that something is awfully wrong here....
Array.Sort() is 20% (!) slower when sorting 10M numbers for example...
Note the while my own code happens to run roughly as fast as before, while Array.Sort(), compiled down to machine code in C++ is really not having a good time.

This is probably a good time to mention I& #39;m on clearlinux which is a very bleeding edge Linux distro from Intel.
Here& #39;s a snippet from my /proc/cpuinfo:

Yesterday:
model: 158
model name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping: 9
microcode: 0xb4

Today:
model: 158
model name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping: 9
microcode: 0xc6
As you can see, I was blessed with microcode revision 0xc6.

Apparently, Intel are about to release a new μcode update, that I got slightly earlier than you rest.

This one, unlike previous ones, doesn& #39;t just affect syscalls, but is a tad more invasive:
https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf">https://www.intel.com/content/d...
Now, I happen to have gotten this update a tad earlier than the rest of you, since clearlinux is already been completely recompiled against this errata with a new patched up compiler that attempts to avoid placing conditional jumps around 32-byte boundaries.

But:
* 3rd party binaries are going to get a major penalty (Like CoreCLR in this case).

* JITs (C#, JVM, Chrome, NodeJS) need to be updated and patched pronto to not generate conditional jumps on said boundaries, or suffer the consequences.

Also:
And we& #39;re all doomed.

Have a nice day.
From your friends in Damage industries...
You can follow @damageboy.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: