Live data from Hacker News

Intel's New Chimera: Alder Lake

agner.org

81–90 of 253 posts

Re: Intel's New Chimera: Alder Lake

#81
post #68
post #56

Earlier quoted context omitted.

Indeed, I do sometimes wonder what it'd be like if they made the entire processor out of E cores.

the concept of “e-cores” is a rebranding of Atom. The Atom name is extremely tarnished from the days when it was super slow in-order netbook cores but Intel started seriously revamping the design in 2012-2014 with silvermont and airmont. They have been good for several years now - Goldmont (eg J5005) is between core2quad and Nehalem i5 (non-SMT) level performance despite running lower clocks (ie IPC is higher), and t…

As an aside, I don't think even the early Atom processors were as terrible as their reputation branded them. I had an early Atom-based netbook, and it was totally acceptable... if running Linux (or XP).

Kind of like the "Vista debacle", I think Atoms were just unsuited to running Windows 7. Maybe I'm too forgiving or forgetful, but I used that netbook for many years, and it wasn't that slow with Linux. (7 was pretty sluggish, though)

...I do remember intensely disliking the introduction of early gnome 3, while running Fedora on that netbook. Not kind to the integrated graphics :-)

Re: Intel's New Chimera: Alder Lake

#82
post #24
post #10

I very much don't understand why Intel didn't disable AVX-512 on the P cores, unless and until the OS writes to a new MSR that means "I understand that the P cores can do AVX-512, while the E cores cannot", and then enable AVX-512 on the P cores. Old OS versions continue to work fine, and newer OS versions can opt into the new world and benefit.

I understand even less why Intel has been creating numerous AVX extensions (1,2 and 512) instead of focusing on a single programmable variable vector length extension that would not require the addition of new opcodes every time the CPU supported maximum vector length increased. It has been clear for a long while that the vector length was going to gradually increase every few years to support new data processing req…

Variable-width is the new hotness but it doesn’t work well on all tasks. If your task is fixed-width, or the algorithm changes based on task width, you kind of need to know the hardware width. And shuffling, perjuring, swizzling, and bit-shifting don’t translate very well to these approaches. Nor is there really an easy way to operate these in a fixed-width mode.

https://gist.github.com/zingaburga/805669eb891c820bd220418ee...

It’s not all bad but the people who just say “just treat it like an n-element array and let the hardware handle it bro!” are hand waving an enormous amount of algorithms that may not actually be translatable to that.

And broadly speaking, having a couple code-paths and choosing at runtime is not that bad. HPC is used to working “close to the metal” and tuning their code to run optimally. You can’t make that complexity go away - things will always run better on X hardware but Y hardware runs that code path way worse. In this domain all you do with clever auto-programming magic is obscure the problem - you are now writing for the optimizer instead of writing for the hardware, but different hardware still runs differently and you need multiple code paths to hit that optimally. So now you have two problems - keeping the hardware running optimally and keeping the optimizer from messing you up.

Since you are now dispatching large operations that will not complete atomically in one cycle (they simply won’t, you can’t do 2M elements on a 128-bit vector) it doesn’t seem likely that we will stay strictly in-order on these, and the next step is you start extracting parallelism from the stream and that’s the problem that immediately emerges from that. Now you have an optimizer running a SIMT program (opmasks are basically SIMT) extracted from the instruction stream, and you need to not just write code that runs fast - you can’t - you need to write code that the optimizer turns into code that runs fast, and that seems like absolute hell on an architecture where you can’t even know the number of registers-per-thread in advance. Maybe I am reading this all wrong but that’s where you’d really end up going with a “run this op on an N element array” model. If you run one vector-instruction at a time you are in cache/register hell constantly spilling to memory and back, so you want to optimize that to keep things in-register/in-cache, and that means extracting parallelism from the stream to run more stuff while it’s still somewhere reasonably hot.

This is the exact garden-path that GPU drivers went down and it was a huge mistake with OpenGL/DX9/DX11 that had to be walked back with the DX12/Vulkan APIs to get back closer to the metal, because the optimizer stage became completely inscrutable and managing it to keep it from doing something stupid became impossible.

There is a level of irreducible complexity in HPC and exposing the hardware is the best way to avoid it. Leaky abstractions make things worse.

Writing for a phone is not HPC but if you care about energy efficiency you still need to make sure you’re running reasonably optimally and not wasting cycles, especially with a super wide vector unit. That means you’re leaning heavily on the “sensible” code path having decent efficiency, which means you’re leaning on the hardware to behave sanely. So it’s the same thing.

Again, not saying it’s a completely bad idea, but you can already see the abstraction starting to leak with the various types of operations that don’t really work on a variable-width hardware concept, and that’s worrying. There is a lot more opportunity for this to go bad than I think people are at first glance.

Re: Intel's New Chimera: Alder Lake

#83
post #25
post #15

Other than obvious stuff like differences in features (AVX512 - although I thought that wasn't even officially supported at one point even though they haven't disabled it?) between the P and E cores, how does ARM manage it with big/LITTLE cores? Surely that's similar to a degree (Out of order P cores, in order E cores) to what Intel are attempting? Are Intel just taking it too far in terms of disparity between the ar…

On an android device I worked on some 5 years ago (so might be out of date) it used a simple cpu mask. Background tasks always used only the little cores, foreground apps always always used only the big cores. I do not believe it was possible for a single app to run threads on both big and little cores. And my understanding is that every arm big.LITTLE combination supported exactly the same ISA and were intentionally…

There were s small number of phones shipped with differing cores but it did not work well.

Re: Intel's New Chimera: Alder Lake

#84

Earlier quoted context omitted.

Cloud stuff is never going to make sense, local machine it is. I do see what you're saying and here it seems like a good fit for a massive machine. No argument here. NB. "Trawling through 70 GB of web server log files" unless you partition your search you're going to be doing a lot of IO due to having only 64-GB of RAM. Chucking in extra mem to keep it all ram-resident will beat cores any day.

You would be... surprised. The query engine in Microsoft SQL Server is absurdly advanced, and simply beats the pants off just about everything else for complex, general-case queries. There are other engines that are better tuned for special cases, but if you've got "stuff" that's within the capacity of a single box, it's really hard to beat MSSQL. Let's expand on my example above: Clustered ColumnStore.[1] It's basic…

I've not used columnstore in MSSQL but in fact I likely know more about the innards of MSSQL than you. WRT memory, all I mant was that if your working set doesn't fit in RAM, you're screwed regardless. Nothing will save you, so check that first. I don't know what your 70GB means in this context - please check.

> It then parallelises this across all cores/hyperthreads, so I get 100% utilisation on 16 cores.

that suggests your working set is indeed smaller than ram. Good.

However be aware that the parallelise feature of mssql is much better that it was but is still moderately crap. Disable it and see if you get a 16X slowdown. My guess is you won't, which means when enabled you won't be getting a 16X speedup (also hyperthreading can actually slow things down - disbale it and see what happens). Edit: I'd not be surprised if you were only getting 4X to 5X speedup (I may be wrong but I do have experience in this).

> With 8 cores going at once, this is 64 rows per clock, or up to 234 billion rows processed per second.

(giggle) Oh, I don't think so!

> I've seen "sort spills" reach 600K IOPS on my laptop.

Then you're hitting IO and yer cores are useless. It spills to disk because it's overflowed ram - you may have a problem.

> Learn to utilise it better and you'll be better at thinking.

... agreed, but the reverse is true also.

edit 2: Depending on what you're looking for, and if you do it often, check if MSSQL's free-text indexing can index it, if so you may get a far bigger speedup from that than anything else. Maybe. Depending.

Re: Intel's New Chimera: Alder Lake

#85
post #80

You get a bunch of smart hardware guys into a room, they design this funky exotic architecture. Then the software goes "Allocate these threads to whatever is idle" and suddenly you've completely lost any possible advantage and are thrashing around with no idea what you're doing. The big-little architecture from Apple was accompanied by software that basically handles that for you. From what I heard there were similar…

Console history is full of such examples.

Re: Intel's New Chimera: Alder Lake

#86
I may be way off here, but to me the transition to heterogeneous cores is more of a long term than short them play, anticipating the era where we'll have different kinds of cores in our systems.

Even the performance cores of today have circuitry that's there to make certain workloads faster (video decoding, crypto operations, etc.). Other stuff has mostly been offset to the GPUs (actual grahphics-related stuff, machine learning).

In an architecture where you can mix/match different kinds of cores, it doesn't sound crazy to have cores that are specially designed for those tasks. Processors could ship with one "crypto-core", a "video-decoding-core", etc.. These should provide similar performance to full performance cores at _much_ lower cost, energy consumption and die area.

If (and that's a big if) they can get to a point where:

a) Designing/implementing new specific-purpose small cores is not outrageously expensive because the whole coordination/integration part is already solved

b) They have a combination of cores that provides similar performance to current p-cores-only cpu's at similar processor cost and power budget.

That would be a huge win for processor companies. They would be able to open lines of specialized processors commanding huge premiums for certain industries (think about processors with 128 ml-cores, 128 video-encoding-cores, etc.).

Or maybe I'm just delusional :)

Re: Intel's New Chimera: Alder Lake

#88
post #80

You get a bunch of smart hardware guys into a room, they design this funky exotic architecture. Then the software goes "Allocate these threads to whatever is idle" and suddenly you've completely lost any possible advantage and are thrashing around with no idea what you're doing. The big-little architecture from Apple was accompanied by software that basically handles that for you. From what I heard there were similar…

I remember Mono, a .NET runtime, having to change its allocations to fit inside a smaller core. This was because a thread could start on a bigger core but then be shunted onto a smaller core.

That fixed the crashing but obviously came with a loss of performance.

Re: Intel's New Chimera: Alder Lake

#89

I feel that P and E split requires putting an asterisk next to the core count. it is dishonest to sell a CPU with N fully featured cores and M gimped cores as a CPU with N+M cores

Even worse (to me) is the P-cores have two way hyperthreading enabled so Intel says the CPU supports N(2)+M threads. While Intel has always behaved as if their hyperthreading meant a chip had N(2) core of performance, in the real world it's was more like N(1.5) at best.

So a CPU with 20 threads has maybe eight running at full speed of a P-core and the other twelve pretty gimped comparatively.

Re: Intel's New Chimera: Alder Lake

#90

Earlier quoted context omitted.

ARM's HMP made sense for mobile devices like phones. I don't see any use for big.LITTLE designs on workstations or servers.

For workstations and servers there's still hundreds of low priority housekeeping threads that can run on efficiency cores. Using them means the work gets done for less power and thus less heat. While a server isn't worried about battery life every saved bit of power is saved dollars in aggregate in a data center.

> Using them means the work gets done for less power and thus less heat.

It also avoids scheduling conflict between housekeeping / background tasks and "user" stuff, which means more predictable and stable throughput and better cache utilisation (your cache doesn't get blown because the system needed some time to zero memory or update something).

Post reply on HN