Överdriven hype kring Apples nya M1 processor?

Permalänk
Medlem

Överdriven hype kring Apples nya M1 processor?

Jag tyckte att den här analysen var intressant:

https://wccftech.com/why-apple-m1-single-core-comparisons-are...

D.v.s. att man måste vara försiktig när man jämför mellan fundamentalt olika CPU-arkitekturer eftersom de är optimerade väldigt olika. En x86-kärna är optimerad för att köra 2 trådar parallellt (hyper-threading och liknande) och om man vill mäta kärnans totala throughput så räcker det inte med en tråd.

Det jag saknar i artikeln ovan dock är en analys av hur antalet transistorer kan jämföras i respektive kärna/hel CPU. Är det någon som har sett någon jämförelse på den fronten?

Permalänk
Medlem

So it begins! Förklaringarna om hur det minsann fortfarande är bra på x86-sidan...

Beroende på last är det klart att Hyperthreading ökar mängden tid man kan utnyttja en kärna (annars skulle man förstås inte ha implementerat det), MEN det finns ju fall där man aktivt stänger av Hyperthreading för att man får sämre prestanda av det, så några konstanta 20-30% tvivlar jag på att man får, men absolut, klart det finns tillfällen när HT/SMT ger effekt på x86 sidan.

Visa signatur

Amd o Apple

Permalänk
Medlem

Ganska tokigt argument från deras håll. M1 är snabbare på enkeltrådade uppgifter, troligen beroende på en bredare superskalär design (upp till 8 instruktioner samtidigt från samma tråd) och en större re-order buffer samt större instruction window(avgör i praktiken hur många instruktioner som kan exekveras i samma klockcykel från en enda tråd). Detta gör att M1 kan "fylla" CPU-kärnans resurser (aritmetikenheter, minnesenheter, etc) med instruktioner från en enda tråd.

x86-baserade CPU:er har ofta svårare att utnyttja alla resurser med instruktioner från en enda tråd, och det är inte helt enkelt att bara göra re-order buffer större och bredda cpu:n till att ta fler instruktioner i samma cykel. Detta beror bland annat på att x86-instruktioner kan variera i bitbredd till skillnad från arm-instruktioner som alltid är 32 bitar breda. x86-instruktioner måste därför avkodas till viss del innan processorn kan fylla sina exekveringsenheter.

En lösning för att fylla exekveringsenheterna är att ta in instruktioner från separata trådar: SMT/Hyperthreading. Det är ju dock inte en lika bra lösning som att fylla exekveringsenheterna från en tråd i taget. Jämför man två processorer med lika många exekveringsenheter får man i det senare fallet bättre prestanda i enkeltrådade situationer, och lika bra prestanda i flertrådade situationer.

Permalänk
Medlem

Märklig artikel, klar troll/click-bait varning.

Han inför alltså ett helt nytt begrepp som är "single core"-performance. Och menar att det är det som ska jämföras, men det har ju ingen koppling till single-thread performance som är viktigt för prestandan för allt som inte kan parallelliseras.

Och syftet med SMT har alltid varit att unyttja tiden när en tråd väntar på något, t ex pga en cache-miss. Syftet har inte varit att andra-tråden ska ta prestanda från första-tråden i samma core.
Sen har säkert SMT komplicerat designen av t ex Intel/AMD CPU'er så att det är svårare att nå samma IPC som M1. Men det är ju inte det artikeln handlar om.

Permalänk
Medlem

Som svar på rubriken, nej den är inte överdriven.
I en sund värld x86 borde dött för 10-20 år sedan

Permalänk
Avstängd

Tja det är ju skillnad på "single core" och "single thread", på moderna x86 åtminstone. Men båda är ju teoretiska siffror egentligen och har inte så mycket bäring på faktiskt prestanda. Då är ju frågan vad syftet med benchmarkingen är, ska man jämföra teoretiska prestanda i situationer som aldrig uppstår i verkligheten eller faktiska prestanda under verklig last? Båda kan absolut vara intressanta men av olika anledningar förstås. För användaren och inte ur ett "diskutera på teknikforum"-perspektiv så borde det vara väldigt mycket mer intressant att se hur de presterar i verkligheten dock. Och sanningen lär ju hamna i att prestandan inte spelar någon större roll för vad de flesta gör på sina datorer, bortsett från spel förstås. Då är det mer intressant att titta på strömförbrukning eller batteritid och mer specifikt strömförbrukning i Idle då det är där de allra flesta datorer spenderar den stora merparten av sin tid exempelvis. Intressant är också hur snabbt de går till Idle av samma anledning. Där är M1 väldigt imponerande men även x86 har ju tagit rätt stora kliv inom effektivitet på senare tid.

Permalänk
Medlem

Argumentationen är f.ö. liknande den som kom från Apple användare när PowerPC började bli ifrånsprungen av x86... då letade man också specialfall, if’s and but(t)s...

Visa signatur

Amd o Apple

Permalänk
Datavetare

SMT är i grunden ett plåster, man tar till det där man inte kan fixar att utnyttja de beräkningsresurser som finns med bara en enda CPU-tråd per fysisk kärna. Att både Intel och AMD verkligen behöver SMT för att fullt ut utnyttja deras 5/4-wide designer medan Apple av allt att döma inte behöver SMT trots att deras 8-wide just nu är den "bredaste" design som existerar (ryktet säger att nästa POWER kan matcha/gå förbi) säger en del om vilken supermikroarkitektur Apple lyckats ta fram.

Sen varje sådana här jämförelse som känner sig tvingat att ta med Cinebench R23 för att visa "x86 har minsann kraft kvar" känns mest bara desperat. Att Apple inte optimerat för lasten CB lägger på CPU bevisar bara än mer att man begriper vart vinden blåser, är meningslöst att optimera för just det fallet då GPGPU är redan nu ungefär en tiopotens snabbare och det avståndet lär bara öka givet fokus på ray-tracing i HW.

Var många som sa att den här övergången skulle bli som när Apple försökte visa att PowerPC minsann hängde med. Kanske inte riktigt var det här kritikerna menade, men vi har just det fallen fast nu är det x86_64 som har rollen av PowerPC. Håller man sig enbart till bärbara datorer kan ju M1 i väldigt många lägen emulera (rent tekniskt är det binäröversättning + M1 av allt att döma har HW-stöd för minnskonsistensmodellen hos x86) x86_64 program snabbare än AMD/Intels CPUer, med undantag för de snabbaste Tiger Lake U modellerna.

D.v.s. M1 har faktiskt större fördel över motsvarande produkter i x86-stacken idag än vad Intels dåtida x86 hade över de PowerPC CPUer de ersatta för 15 år sedan. I det läget var PowerPC CPUer fortfarande snabbar i program där man var tvungen att köra emulering via Rosetta.

Enda som gör att man lite kan hålla tillbaka hypen är att M1 är mer jämförbar med en 4C/8T x86_64 CPU än en 8C/8T CPU när det kommer till saker som utnyttjar alla CPU-kärnor, framförallt i flyttalstunga applikationer då "Icestorm" är helt optimerad för att maximera perf/W och har därför inte superimponerande prestanda per kärna. Icestorm är ändå inte superklen, den utför ungefär lika mycket per cykel som Cortex A73/A75 vilket var de "stora" kärnorna i Android lurar för 3-4 år sedan.

Så den riktiga hype-tsunamin får vänta till M1X/M2 eller vad den nu kommer heta. För när Apple stoppar i >=8 Firestorm kärnor kommer det inte finnas något på x86-sidan som kan matcha prestanda, inte med mindre än något rejält oväntat händer.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Tack för alla kommentarer, jag har fått mer perspektiv på artikeln nu helt klart!