13 ms·
Personally I don't really see a point in having a hybrid architecture like this unless it'll lead to massively increased core counts, and so far it doesn't look
by kouteiheika 4y ago
Personally I don't really see a point in having a hybrid architecture like this unless it'll lead to massively increased core counts, and so far it doesn't look like it does. AMD still beats Intel in both core counts and power efficiency, and they're only using P cores so... what's the point of having E cores?
But maybe that's just because it's a first generation technology for Intel? I hope things improve in the future because I sure would love to have more cores available (currently rocking a 32 core Threadripper) and AMD is sure as hell not interested in actually pushing HEDT forward since they became the top dog. (I have a few grand burning a hole in my pocket waiting for a product they don't want to release.)
- zasdffaa 4y ago> because I sure would love to have more cores available (currently rocking a 32 core Threadripper) wtf do you need more cores for??? Wat are you doing? > not interested in actually pushing HEDT forward since consider buying a server.
- szastamasta 4y agoI see nothing particularly hard in utilising 32 cores. When I launch all the services in the project I’m working on my os has plenty work to schedule. Right now I have 3732 threads running on my machine. It’s totally separate question if OS can schedule so many threads effectively on so many cores, and how much coordination overhead there will be. But that’s just something we have to figure out and fix.
- zasdffaa 4y agoI'm interested, what are you doing that can eat all those cores>
- deeringc 4y agoAnyone working on even a medium sized C++ project needs a very high end machine in order to compile. For large projects, 32 core work stations aren't crazy at all. Try building something like Firefox or Chromium on a quad core and you will see what I mean. The cost of the workstation is tiny compared to the cost of the engineer and you really don't want them to be waiting around for half their day (quite literally) because of a miserly equipment budget.
- zasdffaa 4y agoI talked about linux recompiles because sometimes you do need the cores; not arguing. But that's the long tail and many devs don't. I'm not against blowing cash if needed, but really it's about asking if there are more efficient ways. I guess we agree.
- astrange 4y agoCompilation is largely memory bandwidth limited - some of the acceleration from cores might be that they have different memory channels rather than more CPUs. M1 builds a lot faster than Intel CPUs even with fewer cores because of the memory bandwidth.
- zasdffaa 4y agoReally?? I am very surprised, do you have any pointers on this? Kind of important thing to me, thanks.
- pengaru 4y agoIt's pretty easy to eat up cores when you're developing graphics rendering algorithms, which can be far more convenient and ergonomic to do on the CPU in a general purpose compiled language, and scaling out via plain old threads. A CPU with so many general purpose high-perf cores that it manages to look like a GPU in terms of execution units count is a beautiful thing.
- Matthias247 4y agoThe pure thread count is not that interesting. Running windows with pretty much just firefox open shows me about 5000 active threads, and and recent hardware shouldn't have a lot of problems with a 5digit number. Heavily loaded threads that actually require CPU power to execute are however definitely a different story.
- aunty_helen 4y agoSome of us write software for a living. You give me two more cores, I'll use them.
- zasdffaa 4y agoI'm a dev too, my machine is a dual core haswell. It depends very much what you're doing of course (compiling linux kernel repeatedly perhaps) but if you have a little you can get a heck of a lot out of it with experience, although you surely will hit a wall sometime. But 32 cores not enough is just unimaginable for me.
- devmor 4y agoCan't speak for the guy you're replying to, but I regularly saturate my 16-core CPU as a web developer. I often work on environments that need 20+ services locally virtualized to properly simulate the environment they'll be used in.
- zasdffaa 4y agoWorked in a place where the local architecture astronaut had taken over and we were subject to his insane designs that were virtualisation and microservices everywhere. A monolithic lump on a server would have been better, cheaper, faster in every way and needed many fewer cores. But your case, ok, understood. BTW The biggest slowdown IME is not from lack of cores but lack of RAM. Odd that no-one's mentioned that. Or using a server with larger numbers of memory channels to keep their cores fed. I/O > cycles more often than not.
- jiggawatts 4y agoSo in $dayjob I have used an 8-core (16-thread) CPU to 100% regularly, as well as fully utilising 64-GB of RAM. I would be able to use 16 cores, 32, or more. Random examples: Trawling through 70 GB of web server log files going back years with ad-hoc analytics. I tried ingesting this into a cloud service but it was taking forever, and cost a non-trivial amount of money. It was also dog slow compared to just doing it locally with SQL Server Clustered Columnstore. Compiling Chromium. I'm not even a browser developer or anything, but there was a "global" change that I had to preview ahead of time, so I made a custom Chrome build that had the change embedded in it. I also made a matching build without the change to enable A/B comparison testing. Server base image task sequence development. You would think a server is ideal for this, but no! It's very I/O heavy, and doing it locally in Hyper-V using an NVMe drive can make this 4-5x as productive as any shared platform with throttled disks. There are zero cloud services that can even approach a Samsung Pro 980 SSD for reasonable costs. Multi-server lab tests. Compared to cloud services, it's faster and easier to build a local pool of machines for testing how they interact. With 64 GB of memory, I can (and have) easily run 20+ machines. Compared to cloud platforms, I can do things like thin-cloning to build (and then delete and rebuild) these nearly instantly -- about 5 seconds or less in some cases. Even the relatively heavyweight Windows Server 2022 VMs boots in just 1.4 seconds! Some build jobs require nearly 100 GB of content to be deployed, and the upload to the cloud is a problem in some customer environments. E.g.: due to security restrictions. Doing it locally is easier and faster. Photography and video editing. I do both as a hobby. Lightroom will cheerfully use whatever number of CPUs (and GPUs!) you have to process images. My recent hardware upgrade made a very noticeable difference to the workflow. Similarly, photogrammetry and other advanced 3D modelling workflows can use up virtually any amount of compute. Password cracking. I occasionally need to reverse a password hash for work, typically to fix lost access to some ancient piece of network gear. Sometimes it's for verifying password strength where the plain-text password is not known. I could distribute this across a pool of cloud VMs, but my lab subscriptions have hard limits and this is sensitive data. Automated searches through code for a breaking change. E.g.: scripting the checkout, build, test, etc... in a loop. (Git bisect doesn't solve every problem) VS Code now has ripgrep integrated, so "find in files" will use every CPU. I have about 100 GB of files on my laptop from various old projects, so this is a very helpful feature for digging up some code snippet that I only vaguely remember writing. It can find a match for a regular expression at 700 MB/s using 16 threads at 100%. Defragmenting moderately large (50-500 GB) databases. I have some customers that have built up horrendously fragmented databases over decades, but can't afford the IOPS and/or downtime to fully rebuild all of the tables and indexes. I recently utilised the aforementioned Samsung SSD to defragment an 80 GB database in just minutes, that would have taken days or weeks on the production server. Again, transferring this out to a cloud is a no-go, and the problem was that typical server storage is much slower than a typical laptop. Locally I could get 200K IOPS sustained. SQL Server Developer Edition is the same as Enterprise, and will utilise all cores to rebuild indexes in parallel. Etc, etc... If you know what you are doing, you can make the CPUs go "brr...".
- kouteiheika 4y ago> wtf do you need more cores for??? Wat are you doing? I have a bunch of embarrassingly parallel workloads which I have to run regularly (text analysis, machine learning which is not easily accelerated on a GPU, etc.). > consider buying a server. I looked into it; not really an option. Those are vastly more expensive, really loud (I need a quiet workstation), have significantly lower boost clocks (I also need single-thread performance), and are either really hard or even impossible to actually buy in my country through normal retail channels.
- zasdffaa 4y agoOK, you win! Just a thought, if embarrassingly parallel, buy a 2nd desktop and farm it out?
- kouteiheika 4y agoAlas you can't do that for every workload, and even for those where you can that brings extra complexity. On a single machine I can just replace an `.iter()` into a `.par_iter()` in my Rust programs and boom, I parallelized my workload across every core with only a single line change. It's not that simple with multiple machines. (I might do that one day, but I'm not there yet.)
- zasdffaa 4y agoGotcha. But FYI I wrote a work farmer years ago and it wasn't difficult. You just manually started a program over there and started the farmer over here and that was all. It could use every machine in the office. These days there may be better solutions than hand-rolling it, never used it but <https://en.wikipedia.org/wiki/GNU_parallel https://en.wikipedia.org/wiki/GNU_parallel> might work. Also see if beowulf software has anything to make it easier. Good luck!
- paulmd 4y agoLook for Slurm Workload Manager, that is the off-the-shelf product for that.
- School-Cotton 4y agoRust or C++ compilation can easily make use of more than 32 cores.
- fortran77 4y agoAnd Erlang programs running can use them all, too.
- adam_arthur 4y agoAMD beats them because they are a process node ahead. Dunno why every comment implies there's some design gap that leads to M1 or AMD being more powerful or efficient. It's 90% the process node. There is no magic design sauce that makes those chips better. The big/little design change did seem to improve performance quite a bit for Intel, even using the same manufacturing node as before
- bayindirh 4y agoI don’t completely agree. A MacBook Air M1 is 25% faster than a 10th generation Intel 10700K, running the same code full of floating point instructions and matrices. It’s not a simple matter of process node. The same MacBook Air can do hour long Skype video calls with ~9% charge consumption, with no discernible heat difference on the body too. M1 is a different beast.
- gpderetta 4y agoIsn't M1 two process nodes ahead of the 10700K?
- bayindirh 4y agoI'm not telling that process difference isn't the part of the picture, but the process difference is at most half of the story. Working on HPC field and with generations and generations of Intel hardware, I can tell you that two node difference (alone) never gives you 25% real world performance in the realm of Intel, let alone theoretical.
- tootyskooty 4y agoEven a single node difference can easily come close to a 25% increase in performance: "N5 technology provides about 20% faster speed than N7 technology or about 40% power reduction." [1] Real world performance pretty much always lines up with these estimates. It's the main reason why we have exponential growth in computing power in the first place. It would be a more fair comparison to compare the M1 to AMD's ZEN 4, which should be coming out next quarter. [1] https://www.tsmc.com/english/dedicatedFoundry/technology/logic/l_5nm https://www.tsmc.com/english/dedicatedFoundry/technology/log...
- berkut 4y agoIt's quite possible AMD has plans for this type of thing as well: despite their cores being more energy efficient and powerful per watt than Intel, I don't think they can match Apple yet (some of that is due to 5 nm process though). They have a patent for something similar at least: https://wccftech.com/amd-big-little-processor-cores-show-up-in-latest-patent-coming-to-next-gen-ryzen-cpus-apus/ https://wccftech.com/amd-big-little-processor-cores-show-up-...
- rbanffy 4y agoA lot of Apple’s advantage here comes from the regular instruction size, the relaxed memory semantics, and how those allow efficient instruction reordering. Not saying x86 can’t ever replicate that, but the ISA makes it harder.
- Shpetznaz 4y agoYep, that's rumoured to be the plan for Zen 5: https://www.youtube.com/watch?v=dE9N95uSqHA https://www.youtube.com/watch?v=dE9N95uSqHA
- heavyset_go 4y agoARM's HMP made sense for mobile devices like phones. I don't see any use for big.LITTLE designs on workstations or servers.
- giantrobot 4y agoFor 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.
- masklinn 4y ago> 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).
- em500 4y agoThe top Alder Lake desktop CPU has 16-cores, 8P+8E, compared to 8P in the 11-th gen. The E cores get around half the performance of the P cores, so the 8P+8E is get roughly the performance of a hypothetical 12P+0E CPU. The very high core parts are reserved for Xeon (a 56 core Alder Lake Xeon has been leaked, but I think the P/E split is still unknown). What people need to realize is that a P cores takes around 4 times the die area/transistors of an E core, and use probably 3 to 4 times the power of an E core, but performance is only around double that of an E core. So with the same area, you get of the 8P+8E you can get 10P cores, not 12, and the question is if a 10P (rather than a 16P or even 12P) core Alder Lake is better than a 8P+8E. (Btw, these ratios are pretty similar as those for the Firestorm/Icestorm cores in Apple's M1.) If your workload is very parallelizable you get more bang from your silicon and Watts with E cores than with P cores. If you have only embarrassingly paralleled workloads, you're probably better off with 32E cores than with a 8P cores.
- delusional 4y agoIt's worth making it explicit that many home computing tasks are highly parrallelizable because the work is actually completely separate programs. If you watch a video while writing a document in word, that's trivially parrallelizable.
- paulmd 4y agoIt’s also not very intensive, especially since video decode usually runs on the GPU. (Or it should - browsers are not always very good about this but the tools are there, they just don’t want to pay licensing fees to use them.) I always cringe a bit when people insist they need 6 cores “so they can have discord and Spotify open while they game”. People don’t generally have a very good intuitive sense of just how little cpu time it takes to run those (a lot of times the “at the desktop” measurements are not even with the processor clocked up, it’s running in the lowest active power state), and there is almost always a little cpu headroom due to non-perfect game scaling. Context switching is cheap, your OS is running thousands of threads at any given time, but people don’t have a good intuitive sense of the overhead of context switching either. Playing a video and writing a document is something that can be trivially done on a core2duo era processor, or the modern equivalent of a low-end dual-core nuc with e-cores (atom cores) like a J4005. You don’t even need performance cores for that. The tradeoff Intel is making is that some tasks need performance cores because they can’t really be parallelized all that well, and embarrassingly parallel stuff is more efficient to implement with lots of smaller cores. In principle this is also more power efficient, like big.LITTLE in phones, but Intel actually seems to have fairly poor power scaling - they are space efficient but not all that power efficient. This is also partially due to the fact that the little cores share a core voltage with the big cores - the big cores need higher voltage to clock up and that kills efficiency on the little cores. At that point you may as well clock the little cores up too since they have to share the voltage anyway, and that’s an inefficient way to run them. As Agner Fog mentions, the AVX-512 is also present in silicon yet disabled, which hugely blows up core size for almost no benefit (it’s dark silicon which does have some minor thermal benefits). Alder Lake is in many ways not that well-designed at a high level, but it is magnificently fast on those performance cores and the e-cores would be very nice if they weren’t conjoined awkwardly to the p-cores. Gracemont-based server and atom chips are going to be nifty when they finally arrive. Apple is still way ahead with Icestorm though - those cores are absolutely absurdly tiny for the performance they give. They are 0.5mm2 each iirc, even considering the node shrink that is teeny-tiny, they are half as many transistors as a Zen3 core and almost the same performance (meaning much higher IPC) or something along those lines. Firestorm is neat but Icestorm didn’t get nearly the attention and it is really insanely fast for how few transistors it uses.
- Matthias247 4y ago> Personally I don't really see a point in having a hybrid architecture like this unless it'll lead to massively increased core counts What about massively reduced energy consumption and associated loss of head dissipation/noise and increased battery life? Isn't that why Apple and mobile phone SoCs introduced that design in the first place?
- kouteiheika 4y agoYeah, that too, but as I've said, right now compared to AMD this advantage seems to not be there for Intel, and personally I mostly care about desktops where power consumption isn't as important as raw power.
- vezycash 4y ago> What about massively reduced energy consumption and associated loss of head dissipation/noise and increased battery life? I hope their drivers would work properly with the OS. Else, the user would be locked on either the performance cores or the efficiency cores - it happens with laptops with dual graphics card (intel inbuilt and high performance Nvidia or AMD graphics)
- innocenat 4y agoIntel Thread Director has already been included in latest Linux kernel.
- baisq 4y agoSingle core performance is so much more important for most workloads (and harder to achieve) than higher core count.
- rbanffy 4y agoI think it’s a real shame we haven’t learned to use more threads and cores in our software. It’s not like having dozens of small cores is something new.
- jgon 4y agoI wonder if we’ll see more of a movement towards virtual threads Java Loom style where cheap threads in the language and cheap cores on the cpu will combine to create a programming style where you’ll just dispatch little worklets all over the place without worry about “is this a large enough amount of work to justify a thread” the way we do now. I also wonder if that will cause a trend towards optimizing startup latency in both language threads and the efficiency cores.
- rbanffy 4y agoI think there’s a Smalltalk implementation that tries to do something like that.
- ubercow13 4y agoDoes AMD beat Intel at power efficiency with varied or near-idle workloads, or just when running full-tilt?
- dan-robertson 4y agoI think Intel still wins at certain important metrics, eg memory latency, that can have an impact on certain workloads. Also stuff like: - some LAPACK-style libraries select slow routines for AMD cpus - better understanding of / support for performance counters and suchlike
- Veliladon 4y agoIt's so they don't have to change the topology from the ring bus in the consumer parts while boosting the effective core count. Look at a 12900K block diagram. Four efficiency cores plus their combined L2 take up the same amount of die area as a P core. This means they don't have to deal with mesh interconnects or something like Infinity Fabric (which they already tried on Ivy Bridge-EP and were sorely dissatisfied with) and kick the can further down the road.
- urthor 4y agoIt's because Intel is behind in process nodes (transistor density) and chiplet technology. Once Intel is matching AMD for density, Intel will be able to jam far more small cores into a multi chip architecture than AMD will with just "big" cores. Big/Little is a very important step forward towards core density (and idle power consumption, switching off big cores under load is a huge saver in laptop power usage).