Testresultat från Nvidias Arm-processor läcker

Permalänk
Medlem
Skrivet av dool:

Nintendo kan ju tycka att dom satsat på något som direkt blir gammalt när Nvidia lanserar den här.
Nu vet jag inte hur kraftig gpu N1X har men den borde ju vara betydligt bättre än det som sitter i Nintendo.

De är nog snarare nöjda med att ha ett chip till låg kostnad som dessutom inte behöver tävla med AI boomen, eller de mest avancerade kretsarna för mobil, ifråga om produktionskapacitet.

Prestanda är långt ifrån allt i de här sammanhangen. Trodde 150+ miljoner sålda Switch 1 lärt oss det? (en konsol som enligt en ganska enkelspårig publik här på Swec skulle floppa hårt )

Permalänk
Medlem

Dave's Garage berättar vad som gör Apple så snabba i vissa laster, hemligheten heter "Minnesbussen".
https://www.youtube.com/watch?v=Cn_nKxl8KE4

X86 lider av den tråkiga "nackdelen" av att ha utbytbara minnen med en smal minnesbus. Detta i kontrast till fastlödda minnen, eller till och med integrerade med processorkretsen. Den värsta Apple-processorn (Ultra) har en bus som klarar 800 GB/s direkt ansluten till både CPU och GPU, något som gör x86 chanslös med runt 80-99 GB/s.

Det sker en hisnande utveckling här och nu. Rasp Pi 5 sägs kunna hantera en webläsare alldeles utmärkt, så nästa generation med Rasp Pi 6, Radxa Rock 6 och Rockchip RK3688 om något år lär övertyga. Intel har redan börjat svara med N100, det är vad kan de göra. De måste möta ARM-stormningen med en billig lösning som är ett matchande alternativ sett till pris och prestanda. Och på tredje plats ökar RISC-V hela tiden tempot, en licensfri lösning som kommer att prispressa än mer underifrån. Kommande lågbudgetkretsar (*) ligger bara åtta år efter x86, men då krävs det att x86 kan öka lika mycket per generation som ARM och RISC-V.
* Radxa Orion O6 4+4+4 presterar som en 8/16 Ryzen 1700(X).

Permalänk
Medlem
Skrivet av mc68000:

Dave's Garage berättar vad som gör Apple så snabba i vissa laster, hemligheten heter "Minnesbussen".
https://www.youtube.com/watch?v=Cn_nKxl8KE4

X86 lider av den tråkiga "nackdelen" av att ha utbytbara minnen med en smal minnesbus. Detta i kontrast till fastlödda minnen, eller till och med integrerade med processorkretsen. Den värsta Apple-processorn (Ultra) har en bus som klarar 800 GB/s direkt ansluten till både CPU och GPU, något som gör x86 chanslös med runt 80-99 GB/s.

Det sker en hisnande utveckling här och nu. Rasp Pi 5 sägs kunna hantera en webläsare alldeles utmärkt, så nästa generation med Rasp Pi 6, Radxa Rock 6 och Rockchip RK3688 om något år lär övertyga. Intel har redan börjat svara med N100, det är vad kan de göra. De måste möta ARM-stormningen med en billig lösning som är ett matchande alternativ sett till pris och prestanda. Och på tredje plats ökar RISC-V hela tiden tempot, en licensfri lösning som kommer att prispressa än mer underifrån. Kommande lågbudgetkretsar (*) ligger bara åtta år efter x86, men då krävs det att x86 kan öka lika mycket per generation som ARM och RISC-V.
* Radxa Orion O6 4+4+4 presterar som en 8/16 Ryzen 1700(X).

Ja, för vissa laster. Minnesbandbredden är stora problemet för varför AI-laster på Apple springer cirklar runt x86.

CAMM2 kommer till x86 vilket delvis löser problemet med att inte ha fastlödda minnen.

Sedan kan vi nämna några fördelar:
* ARM64 har dubbelt så många CPU register som x86.
* Mer optimerad minnesmodell, när man tvingar ett Apple chip köra native kod i samma som x86 förloras nästan 10% prestanda.
* Bredare instruktionsavkodare.

Jag hoppas program (tänk .exe) kommer börja skeppas i containers som innehåller kod för flera CPU arkitekturer, kanske tom LLVM IR som kompileras första gången programmen körs för just din processor. Lite som att en bil oavsett drivmedel bensin, diesel, etanol eller el kan köra på en väg.

Permalänk
Datavetare
Skrivet av jclr:

Inget har ändrats sen förra gången du gjorde samma påstående. M4 har fortfarande inte stöd för SVE2. Man kan se M4 som en arm8.7a + SME extensions. ARMv9.x innebär inte automatiskt SVE2 stöd utan mycket är optional i specifikationen. Om du menar 2:a generationens oryon, alltså den kärna som sitter i Snapdragon 8 Elite så är det också en arm8 utan SVE2 stöd. Skillnaderna du ser i GB har alltså fortfarande inget med SVE2 att göra. Nu har iaf GB 6.1+ stöd för sve2 instruktioner.

Du har helt rätt om SVE2. Geekbench 6 använder inte SVE2 alls. Däremot använder GB6 SME vilket enligt Arm är en utökning till SVE2, något som är en sanning med modifikation då M4 har stöd för SME men man har inte stöd för "vanliga" SVE2 (non-steaming SVE mode).

Oavsett, huvudpoängen är att det finns ett par deltester, främst "Object Detection" som kanske inte är väldens bästa test då det påverkas brutalt mycket av huruvida SME/AVX512-VNNI finns eller ej (testet "Photo Library" använder också dessa instruktioner, men där är det långt mer modest skillnad).

M3 (som saknar SME) vs M4 (som har SME) i det specifika testet, i genomsnitt är M4 20-25 % snabbare än M3

Zen3 (som saknar AVX512-VNNI) vs Zen4 (som har AVX512-VNNI)

Som tur är ger en ökning på 250 % i ett enda deltest bara ett utslag på ca 5 % högre totalpoäng.

Du har också rätt i att Snapdragon 8 Elite saknar både SVE och SME, vilket gör uppdateringen från Snapdragon X till Snapdragon 8 Elite än mer imponerande. De tog verkligen sjumilakliv rakt över, vilket då framförallt inkluderar vanlig skalär kod som trots allt är långt viktigare för normalanvändaren (SME/AVX512-VNNI har absolut nischer där de är värdefulla, men det är rätt smala nischer som hantering av relativt små ML-modeller, blir de större är GPGPU överlägset).

Det är nästa generation Oryon som tar klivet över till ARMv9.

Skrivet av jclr:

Man ska inte ta geekbench siffror allt för seriöst. Det finns väldigt mycket som påverkar resultatet. Det minsta man kan göra är iaf att se till att det är samma version av geekbench som används och så lika os som möjligt. Här är t.ex. en jämförelse mellan N1x och AI Max+ 395 där båda kör Linux som visar hur väsentligt bättre x86 är på det mesta. Varför så olika resultat? En förklaring kan t.ex. vara att i alla länkar du postade så ser IA Max+ 395 ut att ha en fast frekvens på 3.0GHz.
https://browser.geekbench.com/v6/cpu/compare/12368755?baselin...

Det finns absolut en hel del resultat som dels är testade på märkliga sätt, ofta med orimligt låga resultat som följd. Finns och rena fabriserade resultat, typiskt med orimligt höga poäng (ett sätt att uppnå det är att få GB6 att se en OS-klocka som går för långsamt).

Men tror du själv att en Zen5 på 3,0 GHz skulle få ens i närheten några 3000 poäng när vi vet med säkerhet att samma Zen5-design får ca 3400 poäng vid 5,7 GHz (9950X) och när Ryzen AI 370 (som har samma 5,1 peak-frekvens som AI 395) får rätt samma 2800-3000 poäng?

Historiskt var det rätt stor skillnad mellan result från samma CPU körandes Windows och körandes Linux. Även idag finns en viss fördel för Linux i MT-testerna (rimligen för att Linux helt enkelt är bättre på att hantera det).

Men skillnaden i ST är i praktiken eliminerad, detta då man sedan GB5 bytte från att använda MSVC++ på Windows, Clang på MacOS och GCC på Linux. Clang och GCC ger i många fall bättre kod än MSVC++. I GB6 används Clang för alla OS (valet föll på Clang då det är den enda av de 3 som har bra och officiellt stöd på alla tre OS).

På det stora hela är GB6 en av de mer heltäckande benchmarks som också är relativt tillgänglig. Och till skillnad vad man tror är det en benchmark som snarare missgynnar Apple än gynnar dem. Missgynnar dem då många MacOS applikationer använder specifika finesser som Accelerate, GPGPU och media-acceleratorer "i verkligheten", men inget av det används här för att man ska få en någorlunda "äpplen mot äpplen..." jämförelse mellan CPUer/OS. Arm har innan de fick SVE2/SME inte heller gynnats då det som sagt finns tester som

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
Skrivet av Yoshman:

Du har helt rätt om SVE2. Geekbench 6 använder inte SVE2 alls. Däremot använder GB6 SME vilket enligt Arm är en utökning till SVE2, något som är en sanning med modifikation då M4 har stöd för SME men man har inte stöd för "vanliga" SVE2 (non-steaming SVE mode).

Geekbench fick SVE stöd i version 6.1. Om det handlar om bara SVE eller SVE/SVE2 står det inget om. Binären ser ut att kunna detektera sve2 men om instruktionerna används är nog tveksamt med tanke på att mängden cpu:er med sve2 och som kan köra geekbench är tom.
Nej SME/SME2 är inte en utökning av SVE2 eftersom det är fritt fram att implementera bara en av de.

Skrivet av Yoshman:

M3 (som saknar SME) vs M4 (som har SME) i det specifika testet, i genomsnitt är M4 20-25 % snabbare än M3
<Uppladdad bildlänk>

Det här är ett bra exempel på varför man inte ska ta geekbench siffror så seriöst. Vad säger egentligen siffrorna?

Är det ett bra mått på vad respektive CPU har för råprestanda? Nej, den del av CPU:n som tar hand om SME/SME2 instruktioner finns i alla M chip, M1-M4. Det är apples AMX accelerator. På M1-M3 kommer man bara åt den via apples egna helt odokumenterade instruktioner. Geekbeench använder inte AMX instruktioner.

Är det ett bra mått på real-world prestanda? Nej antagligen inte. Program som läknar mot apples bibliotek kommer använda AMX instruktionerna även på M3 vilket gör att prestanda i "riktiga" program antagligen ligger betydligt närmare varandra för M3 och M4.

Ändå påverkar det totalpoängen med hela 5%?
Siffrorna i sig betyder alltså inte ett dugg. Att mjukvara programmerad för att utnyttja hårdvaran är snabbare än mjukvara som inte gör det är nog den enda något så när korrekta slutsatsen man kan dra från den där jämförelsen.

Skrivet av Yoshman:

Det finns absolut en hel del resultat som dels är testade på märkliga sätt, ofta med orimligt låga resultat som följd. Finns och rena fabriserade resultat, typiskt med orimligt höga poäng (ett sätt att uppnå det är att få GB6 att se en OS-klocka som går för långsamt).

Men tror du själv att en Zen5 på 3,0 GHz skulle få ens i närheten några 3000 poäng när vi vet med säkerhet att samma Zen5-design får ca 3400 poäng vid 5,7 GHz (9950X) och när Ryzen AI 370 (som har samma 5,1 peak-frekvens som AI 395) får rätt samma 2800-3000 poäng?

Nej jag tror inget alls utifrån geekbench resultat, det saknar för mycket information. Att din länk visar 3.0GHz och min 5.19Ghz kan bero på hur gb detekterar frekvens i windows/Linux men också en massa annat men ändå presenteras siffrorna 3.0 och 5.19 utan att de kanske betyder något? Hur ska man då veta om det en cpu:erna är låst till en viss frekvens eller har klockat ner pga värme? Man får helt enkelt gissa/känna sig fram.

Skrivet av Yoshman:

Men skillnaden i ST är i praktiken eliminerad, detta då man sedan GB5 bytte från att använda MSVC++ på Windows, Clang på MacOS och GCC på Linux. Clang och GCC ger i många fall bättre kod än MSVC++. I GB6 används Clang för alla OS (valet föll på Clang då det är den enda av de 3 som har bra och officiellt stöd på alla tre OS).

Du skrev "Vet inte var SweC hittade resultatet för Ryzen AI MAX 395, är väldigt svårt att hitta något system >3000 poäng ST (finns 1 system med 3001 poäng, enda >3000 på de 3 första sidorna)". Jag gjorde samma sökning och hittade flera system över 3000 single-core på de första sidorna. Dock var det inte hög poäng jag sökte efter utan system som använde linux. Det är helt omöjligt att missa att det ser ut att finnas en tydlig skillnad i geekbench single-core resultat mellan windows och Linux systemen. Är det en verklig skillnad? Helt omöjligt att veta utifrån att bara titta på geekbench sidan. Det kan vara så att alla linux resultaten är fabricerade för att man fuskat med OS-klockan, windows användarna kanske är sämre på att inte ha andra saker igång som stör testen eller så kanske det faktiskt finns en riktig skillnad utifrån hur geekbench är utformat mellan Linux och windows. Om man bara tittar på resultaten så går det bara att gissa.

Enligt din länk är N1x bättre på det mesta. (Olika os och geekbench version)
https://browser.geekbench.com/v6/cpu/compare/12348676?baselin...

Enligt min länk är Ryzen AI Max+ 395 bättre på det mesta. (Liknande os och geekbench version)
https://browser.geekbench.com/v6/cpu/compare/12368755?baselin...

Vilken stämmer med verkligheten? Välj det resultat som passar bäst beroende på vilken poäng man vill göra eller gissa. Kan man då seriöst säga att geekbench siffror har något som helst värde egentligen när resultaten varierar så mycket helt utan information om varför?

Är det skillnaden mellan geekbench versioner och os eller något helt annat som påverkar resultaten? För att inte bara gissa behövs en mycket mer kontrollerad miljö. Ser man då en skillnad får man gå vidare och t.ex. använda perf/μProf för att se om man kan lista ut varför. Innan man har gjort det är allt bara gissningar.

Tittar man specifikt på Clang single-core delen av geekbench så kan man fundera lite på om att bara kompilera 8 filer verkligen motsvarar den prestanda man kommer se i riktiga, lite större projekt. Det är den test som använder absolut minst minne. Hur mycket påverkar ARMs större L1 cache? Används fil io i windows/Linux/macOS?

Jämför man N1x och AI Max+ 395 clang resultat från min länk så ser det ut så här.

Single-Core:

Multi-Core:

N1x (20 kärnor) är snabbare än 395 på single-core (8 filer) men 395 (16 kärnor) är snabbare på multi-core (96 filer). Vilken test representerar bäst verkliga förhållanden? Varför är 395 så mycket snabbare trots mindre antal kärnor när varje kärna är snabbare på N1x. Fritt fram med gissningar. Utnyttjar SMT backend resurserna i cpu:n bättre än att försöka klämma ut så mycket ILP som möjligt? Och hur kommer AMDs SMT8 processorer prestera…

Permalänk
Datavetare
Skrivet av jclr:

Geekbench fick SVE stöd i version 6.1. Om det handlar om bara SVE eller SVE/SVE2 står det inget om. Binären ser ut att kunna detektera sve2 men om instruktionerna används är nog tveksamt med tanke på att mängden cpu:er med sve2 och som kan köra geekbench är tom.
Nej SME/SME2 är inte en utökning av SVE2 eftersom det är fritt fram att implementera bara en av de.

Då har du bättre koll än de flesta. För sett flera som ställt just frågan vad Apple gjort för att få Arm att acceptera att man inte implementerat SVE2 trots att man har SME. Gissningarna har varit Apple dels har en exceptionell ställning hos Arm, dels att SME rätt mycket är en standardiserad variant av Apples AMX som de har i M1-M3 (men som bara går att använda från kernel-space, applikationer kan bara använda det indirekt via Accelerate).

Arms illustrerar SME så här i ISA-stacken vilket i.o.f.s. inte är i linje med SME specifikationen som säger att SME innehåller ett subset av SVE2 instruktionerna.

Ovan spelar i.o.f.s. ingen roll för de som bara kör program, whatever som gör det snabbt och effektivt duger.

Skrivet av jclr:

Det här är ett bra exempel på varför man inte ska ta geekbench siffror så seriöst. Vad säger egentligen siffrorna?

Geekbench kommer typiskt med ett whitepaper som beskriver saker som vilken toolchain som används, en (i min smak med för lite detaljer) beskrivning av vad varje deltest gör, lista av vilka ISA-extensioner som används i varje test (om tillgängligt) samt högnivåbeskrivning av vilka bibliotek/ramverk som används.

Vidare har man lite information kring frekvens av cachemissar, branchmissar etc i de olika testerna. Här ser man att Clang-testet är speciellt, framförallt ST, då det står ut med att ha väldigt hög andel cachemissar och branchmissar. Det är på många sätt den "elakaste" lasten i GB6.

Object detection testar specifik en CNN för att upptäcka och klassificera objekt i bilder. Nätverket kallas MobileNet V1 SSD (Single Shot MultiBox Detector). Ramverket som används är PyToch. Detta är rätt populärt, man hittar en rad GitHub-repon som använder detta vid en sökning.

Är detta kritiskt för den genomsnittlige SweC-medlemmen där spelande ofta är huvudfokus? Knappast!

Men det är samtidigt definitivt inte en meningslös mikrobenchmark. Just fokus på "mobila enheter" gör att det kommer handla om små modeller och begränsad in/ut-data. Det gör inferens med CPU relevant (även om det framöver lär ersättas med NPU), så fort man skalar upp är GPGPU långt bättre.

Skrivet av jclr:

Är det ett bra mått på vad respektive CPU har för råprestanda? Nej, den del av CPU:n som tar hand om SME/SME2 instruktioner finns i alla M chip, M1-M4. Det är apples AMX accelerator. På M1-M3 kommer man bara åt den via apples egna helt odokumenterade instruktioner. Geekbeench använder inte AMX instruktioner.

Är det ett bra mått på real-world prestanda? Nej antagligen inte. Program som läknar mot apples bibliotek kommer använda AMX instruktionerna även på M3 vilket gör att prestanda i "riktiga" program antagligen ligger betydligt närmare varandra för M3 och M4.

Här håller jag helt med och detta är ett lysande exempel på varför Apple, mer än andra, faktiskt "drabbas" mer negativt av GB6 än andra: Apple har fler "custom kretsar" som väldigt ofta faktiskt används i "verkliga MacOS program".

AMX går som sagt bara att använda via Accelerate, Apple är väldigt bra att få in stöd av Accelerate i MacOS versionerna av t.ex. deras backend av PyTorch. GB6 väljer att undvika använda GPGPU, NPU (de har specifika tester för detta) etc i CPU-testerna, man vill ha en "råprestandajämförelse" enbart av CPU.

M4 Max vs AMD Ryzen AI 395 Max är i GB6 vs PugetBench ett målande exempel på hur det kan ge lite skev bild.

CPUn i M4 Max är i runda slängar ~30 % snabbare ST och ~20 % snabbare MT i GB6. Trots det är den ~60 % snabbare i Pugets PremierPro CPU-test och ~45 % i Photoshop CPU-testet.

För specifika use-case måste man kolla just detta use-case. Idag är datorplattformarna så pass hetrogena att populära områden kan vara kraftigt accelererade av dedicerade funktioner.

GB6 är en bra, skulle säga den bästa, eller kanske minst dåliga, vi har idag om man vill ha en fingervisningen hur två CPUer står sig mot varandra i genomsnitt när man är förvisat till att enbart förlita sig på CPU-kraft.

Skrivet av jclr:

Ändå påverkar det totalpoängen med hela 5%?
Siffrorna i sig betyder alltså inte ett dugg. Att mjukvara programmerad för att utnyttja hårdvaran är snabbare än mjukvara som inte gör det är nog den enda något så när korrekta slutsatsen man kan dra från den där jämförelsen.

Tvärtom. Om målet är att få en fingervisning av CPU-råprestanda vore det direkt förödande om ett abnormt resultat i ett specifikt test skulle ha kraftig påverkan.

En stor kritik mot SPECint/SPECfp genom åren har varit att denna benchmark är så viktig PR inom servervärlden att alla CPU-tillverkare, historiskt i alla fall, lade stora resurser på att hitta kompilatortricks + "speciella instruktioner" för att påverka resultat.

Flertalet deltester här har genom åren helt "pajats" på det sättet, vilket gjort att värdet av denna benchmarks ifrågasatts ibland. Värt att notera där att deras kompilatortest, som baserar sig på GCC, är ett deltest som aldrig "pajats" på det sättet. Högt resultat där har alltid gett bra resultat i övriga SPECint tester.

Skrivet av jclr:

Nej jag tror inget alls utifrån geekbench resultat, det saknar för mycket information. Att din länk visar 3.0GHz och min 5.19Ghz kan bero på hur gb detekterar frekvens i windows/Linux men också en massa annat men ändå presenteras siffrorna 3.0 och 5.19 utan att de kanske betyder något? Hur ska man då veta om det en cpu:erna är låst till en viss frekvens eller har klockat ner pga värme? Man får helt enkelt gissa/känna sig fram.

Kollade inte meta-data, där avläst frekvens står. Men kollande ett tiotal resultat med liknande totalpoäng (som också låg i linje med vad Notebookcheck fick) och valde ett av dessa. Det är tyvärr inte speciellt ovanligt att metainformationen kan vara lite iffy.

Rätt uppenbart att rapporterad CPU-frekvens är fel för N1x fallet också, annars har vi en utmanare till M4 på gång!

Skrivet av jclr:

Du skrev "Vet inte var SweC hittade resultatet för Ryzen AI MAX 395, är väldigt svårt att hitta något system >3000 poäng ST (finns 1 system med 3001 poäng, enda >3000 på de 3 första sidorna)". Jag gjorde samma sökning och hittade flera system över 3000 single-core på de första sidorna. Dock var det inte hög poäng jag sökte efter utan system som använde linux. Det är helt omöjligt att missa att det ser ut att finnas en tydlig skillnad i geekbench single-core resultat mellan windows och Linux systemen. Är det en verklig skillnad? Helt omöjligt att veta utifrån att bara titta på geekbench sidan. Det kan vara så att alla linux resultaten är fabricerade för att man fuskat med OS-klockan, windows användarna kanske är sämre på att inte ha andra saker igång som stör testen eller så kanske det faktiskt finns en riktig skillnad utifrån hur geekbench är utformat mellan Linux och windows. Om man bara tittar på resultaten så går det bara att gissa.

Enligt din länk är N1x bättre på det mesta. (Olika os och geekbench version)
https://browser.geekbench.com/v6/cpu/compare/12348676?baselin...

Enligt min länk är Ryzen AI Max+ 395 bättre på det mesta. (Liknande os och geekbench version)
https://browser.geekbench.com/v6/cpu/compare/12368755?baselin...

Vilken stämmer med verkligheten? Välj det resultat som passar bäst beroende på vilken poäng man vill göra eller gissa. Kan man då seriöst säga att geekbench siffror har något som helst värde egentligen när resultaten varierar så mycket helt utan information om varför?

Är det skillnaden mellan geekbench versioner och os eller något helt annat som påverkar resultaten? För att inte bara gissa behövs en mycket mer kontrollerad miljö. Ser man då en skillnad får man gå vidare och t.ex. använda perf/μProf för att se om man kan lista ut varför. Innan man har gjort det är allt bara gissningar.

Tittar man specifikt på Clang single-core delen av geekbench så kan man fundera lite på om att bara kompilera 8 filer verkligen motsvarar den prestanda man kommer se i riktiga, lite större projekt. Det är den test som använder absolut minst minne. Hur mycket påverkar ARMs större L1 cache? Används fil io i windows/Linux/macOS?

Jämför man N1x och AI Max+ 395 clang resultat från min länk så ser det ut så här.

Single-Core:
<Uppladdad bildlänk>
Multi-Core:
<Uppladdad bildlänk>

Ett stort problem med enskilda GB6 resultat är att det finns en lång rad sätt att generera avvikande resultat.

Att bara söka efter ett resultat för en viss CPU-modell och använda det kan bli rejält fel. Kan inte hävda att jag har en superlösning här, bästa jag kommit på är att utgå från vad någon källa jag litar på uppmätt och helst använda deras länk (tyvärr postar nästan ingen av tech-sidorna läkar till sina resultat ).

Det SweC använder i artikeln är ett resultat jag inte hittar att någon review av 395 AI Max fått, de har fått där jag nämnde. Om det var en Linux/Windows sak, varför är då Intel 285 HX rätt mycket spot on i vad SweC rapporterar med vad Notebookcheck fick (de testar tyvärr bara på Windows)?

När man då har en idé var resultatet "borde" ligga på får man söka upp ett par stycken resultat som ligger på den nivån, kolla att de ser ut att vara hyfsat samstämmiga i deltesterna. I det läget har man med någon form av rimlig sannolikhet ett "representativt resultat".

En sak, som på något sätt ändå passar på SweClockers, man kan göra för att påverka resultat tillräckligt för att vara fullt mätbart i GB6 är att kyla ned sin laptop innan testet. Det ger ju ett nonsensresultat, i alla fall om man inte sitter utomhus på vintern och jobbar... Så att gräva fram enskilda resultat med "extra högt resultat" är att be om att använda manipulerade resultat.

Vi verkar ju ändå vara överens om att det man får ut ur en benchmark som GB6 är ändå inte en absolut sanning. Det är en fingervisning om CPU-prestanda relativt andra. Vad man kan säga om N1x är att den

  • Är ett signifikant steg upp från var standard Arm-kärnor historiskt legat

  • Man är nu på samma nivå som AMD/Intel/Qualcomm senaste generation mobilplattformar för PC, det är för jämt för att kunna säga att någon är konsekvent bättre än den andra.

  • Det är ingen tyvärr ingen M4 (och i praktiken går man upp mot M5), Apple spelar i nuläget i en egen liga och vore superkul om fler når den nivån!

Skrivet av jclr:

N1x (20 kärnor) är snabbare än 395 på single-core (8 filer) men 395 (16 kärnor) är snabbare på multi-core (96 filer). Vilken test representerar bäst verkliga förhållanden? Varför är 395 så mycket snabbare trots mindre antal kärnor när varje kärna är snabbare på N1x. Fritt fram med gissningar. Utnyttjar SMT backend resurserna i cpu:n bättre än att försöka klämma ut så mycket ILP som möjligt? Och hur kommer AMDs SMT8 processorer prestera…

N1x har inte 20st Cortex X925 kärnor. Den har 10st Cortex X925 kärnor och 10st Cortex A725 kärnor.

Cortex A725 är inte optimerade för maximal prestanda, de är optimerade för maximal perf/W och har en design-target på <=1W per kärna peak-effekt! D.v.s. de är mer lik Apples "små kärnor" än Intels E-kärnor.

GB6 ST prestanda för Cortex A725 är luriga att hitta. Hittade ett par reviews av Mediatek Dimensity 8400 (som har 8st Cortex A725), de har en ST-poäng på ca 1600.

Cortex A725 är en modern variant av Cortex A78 som sitter i bl.a. Nintendo Switch 2. IPC verkar ha öka rätt lite genom åren på denna serie, fokus har varit att öka perf/W och med det kunna öka frekvens vid samma 1 W peak-design target.

SMT är vettig i de flesta serverfall. SMT är ett plåster för de flesta desktop-klient fall då en nackdel med SMT är att man ofta offrar en del ST-prestanda och man offrar en del latens.

På server är total kapacitet ofta viktigare, högre sådan och man kan sälja/köra fler molninstanser.
På desktop så är ST långt viktigare än MT givet var vi är, d.v.s. 8 kärnor eller mer är rätt standard. Föredrar icke-SMT + "E-kärnor" på desktop, E-kärnorna fyller rätt mycket samma funktion som SMT utan nackdelarna med högre latens!

Det skrivet: N1x är som sagt ingen M4 sett till CPUn. Undrar om Nvidia ens bryr sig så mycket om CPU-kraft mer än att de fattar att man måste ligga på motsvarande nivå som andra Windows/Linux-plattformar för att vara med i matchen.

N1x huvudgrej är en högprestanda SoC med Nvidia GPU, d.v.s. en plattform med CUDA-stöd, bra Linux/Windows-stöd. Om den är "OK" eller "fantastisk" kommer hänga främst på hur GPUn presterar i denna plattform.

Men som Linux-användare hoppas jag ändå att det också blir en riktigt fin ARM64-baserad plattform sett CPU-prestanda, superkul att se att både Qualcomm och Arm båda nu har CPU-plattformar som kan utmana den åldrande x86-tekniken.

A925->A725
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
Skrivet av Yoshman:

Det skrivet: N1x är som sagt ingen M4 sett till CPUn. Undrar om Nvidia ens bryr sig så mycket om CPU-kraft mer än att de fattar att man måste ligga på motsvarande nivå som andra Windows/Linux-plattformar för att vara med i matchen.

N1x huvudgrej är en högprestanda SoC med Nvidia GPU, d.v.s. en plattform med CUDA-stöd, bra Linux/Windows-stöd. Om den är "OK" eller "fantastisk" kommer hänga främst på hur GPUn presterar i denna plattform.

Men som Linux-användare hoppas jag ändå att det också blir en riktigt fin ARM64-baserad plattform sett CPU-prestanda, superkul att se att både Qualcomm och Arm båda nu har CPU-plattformar som kan utmana den åldrande x86-tekniken.

Håller med dig här.

Även om alla konkurrerar med alla (på något mått och vis) så tror jag att N1x är byggd för att först och främst konkurrera med Intel/AMD64 för Windows- och Linux-användare. Inte för att främst gå upp och konkurrera direkt emot Apple-användare. Detta är så jag tolkar Nvidias affärsstrategi och marknadspositionering med N1x nu när de för första gången på allvar går in i bärbart/datorklientsegmentet.

Detta kommer troligen öka konkurrens och stressa priser hos Intel och AMD (till gagn för alla köpare av bärbara PC och kompakta desktop) mer än för ett direkt hot eller ökad konkurrens emot Apple.

Visa signatur

macOS: Mac mini [M4 Pro 14-core/24GB/1TB/10GbE], MacBook Air 13" [M1/16GB/256GB], MacBook Pro 16" [M2/32GB/512GB]
Windows: Microsoft Surface Pro 11 [Snapdragon X Elite/16GB/1TB/OLED], Microsoft Surface Laptop 7 13" [Snapdragon X Plus/16GB/512GB], HP Omnibook X 14" [Snapdragon X Elite/16GB/1TB], HP OmniBook Ultra 14" [Ryzen AI 9 HX 375/32GB/1TB]
iOS: iPad Mini [128GB/LTE], iPad Pro 12,9" [M1/512GB/LTE], iPhone SE3 [128GB], Apple Watch Series 10 46mm [LTE]
HT: LG 77" OLED C2 [OLED77C25LB], Intel NUC [Core i5/8GB/256GB]

Permalänk
Medlem
Skrivet av martinot:

Detta är så jag tolkar Nvidias affärsstrategi och marknadspositionering med N1x nu när de för första gången på allvar går in i bärbart/datorklientsegmentet.

Sannolikt kommer Nvidia lansera nån produkt som använder sig av N1x. Blir spännande att följa vad som händer här.

Visa signatur

-dool

Permalänk
Medlem
Skrivet av jclr:

Geekbench fick SVE stöd i version 6.1. Om det handlar om bara SVE eller SVE/SVE2 står det inget om. Binären ser ut att kunna detektera sve2 men om instruktionerna används är nog tveksamt med tanke på att mängden cpu:er med sve2 och som kan köra geekbench är tom.
Nej SME/SME2 är inte en utökning av SVE2 eftersom det är fritt fram att implementera bara en av de.

Det här är ett bra exempel på varför man inte ska ta geekbench siffror så seriöst. Vad säger egentligen siffrorna?

Är det ett bra mått på vad respektive CPU har för råprestanda? Nej, den del av CPU:n som tar hand om SME/SME2 instruktioner finns i alla M chip, M1-M4. Det är apples AMX accelerator. På M1-M3 kommer man bara åt den via apples egna helt odokumenterade instruktioner. Geekbeench använder inte AMX instruktioner.

Är det ett bra mått på real-world prestanda? Nej antagligen inte. Program som läknar mot apples bibliotek kommer använda AMX instruktionerna även på M3 vilket gör att prestanda i "riktiga" program antagligen ligger betydligt närmare varandra för M3 och M4.

Ändå påverkar det totalpoängen med hela 5%?
Siffrorna i sig betyder alltså inte ett dugg. Att mjukvara programmerad för att utnyttja hårdvaran är snabbare än mjukvara som inte gör det är nog den enda något så när korrekta slutsatsen man kan dra från den där jämförelsen.

Nej jag tror inget alls utifrån geekbench resultat, det saknar för mycket information. Att din länk visar 3.0GHz och min 5.19Ghz kan bero på hur gb detekterar frekvens i windows/Linux men också en massa annat men ändå presenteras siffrorna 3.0 och 5.19 utan att de kanske betyder något? Hur ska man då veta om det en cpu:erna är låst till en viss frekvens eller har klockat ner pga värme? Man får helt enkelt gissa/känna sig fram.

Du skrev "Vet inte var SweC hittade resultatet för Ryzen AI MAX 395, är väldigt svårt att hitta något system >3000 poäng ST (finns 1 system med 3001 poäng, enda >3000 på de 3 första sidorna)". Jag gjorde samma sökning och hittade flera system över 3000 single-core på de första sidorna. Dock var det inte hög poäng jag sökte efter utan system som använde linux. Det är helt omöjligt att missa att det ser ut att finnas en tydlig skillnad i geekbench single-core resultat mellan windows och Linux systemen. Är det en verklig skillnad? Helt omöjligt att veta utifrån att bara titta på geekbench sidan. Det kan vara så att alla linux resultaten är fabricerade för att man fuskat med OS-klockan, windows användarna kanske är sämre på att inte ha andra saker igång som stör testen eller så kanske det faktiskt finns en riktig skillnad utifrån hur geekbench är utformat mellan Linux och windows. Om man bara tittar på resultaten så går det bara att gissa.

Enligt din länk är N1x bättre på det mesta. (Olika os och geekbench version)
https://browser.geekbench.com/v6/cpu/compare/12348676?baselin...

Enligt min länk är Ryzen AI Max+ 395 bättre på det mesta. (Liknande os och geekbench version)
https://browser.geekbench.com/v6/cpu/compare/12368755?baselin...

Vilken stämmer med verkligheten? Välj det resultat som passar bäst beroende på vilken poäng man vill göra eller gissa. Kan man då seriöst säga att geekbench siffror har något som helst värde egentligen när resultaten varierar så mycket helt utan information om varför?

Är det skillnaden mellan geekbench versioner och os eller något helt annat som påverkar resultaten? För att inte bara gissa behövs en mycket mer kontrollerad miljö. Ser man då en skillnad får man gå vidare och t.ex. använda perf/μProf för att se om man kan lista ut varför. Innan man har gjort det är allt bara gissningar.

Tittar man specifikt på Clang single-core delen av geekbench så kan man fundera lite på om att bara kompilera 8 filer verkligen motsvarar den prestanda man kommer se i riktiga, lite större projekt. Det är den test som använder absolut minst minne. Hur mycket påverkar ARMs större L1 cache? Används fil io i windows/Linux/macOS?

Jämför man N1x och AI Max+ 395 clang resultat från min länk så ser det ut så här.

Single-Core:
<Uppladdad bildlänk>
Multi-Core:
<Uppladdad bildlänk>

N1x (20 kärnor) är snabbare än 395 på single-core (8 filer) men 395 (16 kärnor) är snabbare på multi-core (96 filer). Vilken test representerar bäst verkliga förhållanden? Varför är 395 så mycket snabbare trots mindre antal kärnor när varje kärna är snabbare på N1x. Fritt fram med gissningar. Utnyttjar SMT backend resurserna i cpu:n bättre än att försöka klämma ut så mycket ILP som möjligt? Och hur kommer AMDs SMT8 processorer prestera…

Håller med ang. Clang-testerna.

Det finns en uttalad kritik mot Geekbench multitråds-värden då vissa av testerna skalar väldigt dåligt.
https://dev.to/dkechag/how-geekbench-6-multicore-is-broken-by...

Sedan får man ju alltid ta alla benchmark-resultat som en höftning, då det läggs till teknik vid varje punkt-utgåva ganska frekvent inom "GB 6"-paraplyet. Marginellt kanske. Men det är ju bra att de generellt har ökat testernas arbetslast sedan GB 5.
https://www.primatelabs.com/release/geekbench6/

Min egen slutsats är att kompilering följer den generella prestandanivån på processorn ganska väl (Ryzen) och att IO är viktigt förstås.
Så jag litar mer på Passmark.
https://www.cpubenchmark.net/

Permalänk
Medlem
Skrivet av Yoshman:

Då har du bättre koll än de flesta. För sett flera som ställt just frågan vad Apple gjort för att få Arm att acceptera att man inte implementerat SVE2 trots att man har SME. Gissningarna har varit Apple dels har en exceptionell ställning hos Arm, dels att SME rätt mycket är en standardiserad variant av Apples AMX som de har i M1-M3 (men som bara går att använda från kernel-space, applikationer kan bara använda det indirekt via Accelerate).

FEAT_SME är optional och har inga som helst krav på att FEAT_SVE2 eller FEAT_SVE ska finnas. FEAT_SVE2/FEAT_SVE är också optional och kräver inte FEAT_SME. Det är hur tydligt som helst.
Apple följer helt enkelt ARM specification så nej det handlar inte om nån konspirationsteori att apple skulle ha en exceptionell ställning hos arm och nej SME är inte en standardiserad variant av Apples AMX. Däremot har de samma fuktionallitet vilket jag har skrivit att par gånger och som du nu upprepar.

Man ska inta lägga allt för stor vikt vid vad folk gissar på internet. Du har ju t.ex. själv hävdat vid ett par olika tillfällen nu att M4 har SVE2 och att skillnader i GB6 för M4/oryon beror på SVE2 när processorerna inte ens stödjer det. Jag antar att flera här på forumet läste även det som fakta. Överlag brukat det gissas hejvilt om allt möjligt i x86 vs. Arm trådar här på sweclockers.

AMX går att komma åt utan Accelerate.

Skrivet av Yoshman:

Arms illustrerar SME så här i ISA-stacken vilket i.o.f.s. inte är i linje med SME specifikationen som säger att SME innehåller ett subset av SVE2 instruktionerna.

På vilket sätt är det inte i linje med SME specifikationen? I SME ingår streaming SVE2, streaming SVE2 kräver streaming SVE. Titta på bilden och läs streaming före SVE2/SVE. Streaming SVE2/SVE är inte samma sak som SVE2/SVE. Jag förstår att man kan missuppfatta hur det ligger till om man inte har koll på vad SME/SVE och de olika streamingvarianterna innebär och bara tittar på den där bilden men jag antar att det även fanns en del text på sidan du hittade bilden?

Streaming varianterna handlar mest om att följa specifikationen när det gäller Apple. AMX hårdvaran delas per kluster av kärnor vilket innebär att det inte finns nån fördel jämfört med neon som är implementerat i varje kärna.

Skrivet av Yoshman:

Tvärtom. Om målet är att få en fingervisning av CPU-råprestanda vore det direkt förödande om ett abnormt resultat i ett specifikt test skulle ha kraftig påverkan.

5% är en ganska kraftig påverkan av resultatet om det faktiskt inte representerar skillnaden i råprestanda utan bara handlar om att geekbench använder AMX hårdvaran i M4 men inte i M3. Vilket var en av poängerna med mitt ifrågasättande av vad geekbench siffrorna egentligen säger och varför de är värdelösa för att försöka göra någon djupare analys som t.ex. att IPC ökade med si och så många procent för enkeltrådat mellan M3 och M4. Resten av texten verkar mest handla om helt andra saker.

Skrivet av Yoshman:

Att bara söka efter ett resultat för en viss CPU-modell och använda det kan bli rejält fel. Kan inte hävda att jag har en superlösning här, bästa jag kommit på är att utgå från vad någon källa jag litar på uppmätt och helst använda deras länk (tyvärr postar nästan ingen av tech-sidorna läkar till sina resultat ).

Man väljer helt enkelt en källa som känns bra och som har ett resultat som känns rätt med vad man själv tror?

Skrivet av Yoshman:

Det SweC använder i artikeln är ett resultat jag inte hittar att någon review av 395 AI Max fått, de har fått där jag nämnde. Om det var en Linux/Windows sak, varför är då Intel 285 HX rätt mycket spot on i vad SweC rapporterar med vad Notebookcheck fick (de testar tyvärr bara på Windows)?

Ingen aning, det saknas information. Egentligen skiljer det 5% i prestanda men de som körde testerna har olika långa användarnamn så visa datastrukturerer hamnade olika fördelaktikt i minnet vilket gjorde att resultatet blev lika... eller precis vad som helst annat som påverkar kan påverka benchmarkresultat (att skriva/genomföra korrekta benchmarks är extremt svårt och väldigt ofta mäter man något helt annat än vad man tror)

Testa samma dator i geekbench under både Linux och windows och jämför resultatet. Kolla i μProf vad som faktiskt händer. Hur mycket tid spenderas i windows/Linux kärnan osv. Då får man iaf en aning om hur jämförbara Linux / windows resultaten är för just den processor och de versionerna av windows/Linux/geekbench. Det betyder inte att man automatiskt kan överföra det resultatet på en annan processor eftersom t.ex. Linux kan utnyttja något i en ny processor bättre än i windows men den skillnaden inte finns när det gäller äldre processorer. Vill man ha något som är mer exakt än ±15% får man använda något annat än geekbench.

Skrivet av Yoshman:

När man då har en idé var resultatet "borde" ligga på får man söka upp ett par stycken resultat som ligger på den nivån, kolla att de ser ut att vara hyfsat samstämmiga i deltesterna. I det läget har man med någon form av rimlig sannolikhet ett "representativt resultat".

Man känner sig fram till vad resultatet "borde" vara. Vad är det som gör att det är " rimlig sannolikhet ett "representativt resultat" "? Utifrån hur svårt det är att skriva/genomföra en korrekt benchmark är det verkligen mer sannolikt att ett genomsnittsresultat är mer korrekt än ett betydligt mindre kluster som ligger lika i resultat?

Geekbench fungerar som ett väldigt grovt verktyg där man kan se ungefärliga skillnader. Hur stor roll spelar det egentligen om en dator A ser ut att vara 5% snabbare än dator B men i själva verket är 5% långsammare? Det är inget som märks, alla moderna processorer är extremt snabba. Däremot blir det fel om man tror att det går att göra några djupare analyser utifrån geekbench.

Om man vill få en bild av hur Amds SMT påverkar typiska serverapplikationer som Blender och kompilering kan man titta på phoroix test av AI Max+ 395.
https://www.phoronix.com/review/amd-strix-halo-smt
I princip ingen skillnad i strömförbrukning och nej AMD kärnorna skulle inte gå att göra mycket mindre utan SMT så man får plats med flera.

Permalänk
Medlem
Skrivet av mc68000:

Sedan får man ju alltid ta alla benchmark-resultat som en höftning, då det läggs till teknik vid varje punkt-utgåva ganska frekvent inom "GB 6"-paraplyet. Marginellt kanske. Men det är ju bra att de generellt har ökat testernas arbetslast sedan GB 5.
https://www.primatelabs.com/release/geekbench6/

Just att det kan skilja så mycket mellan olika geekbench versioner helt utan att det på något sätt visas när man jämför resultat är lite konstigt. De skulle helt klart behöva presentera skillnaderna bättre och varna när man jämför olika versioner. Kollar man deras blogg finns det faktiskt en varning i 6.1 uppdateringen om att single-core är 5% högre och multi-core är 10% högre och man därför inte ska jämföra 6.0 och 6.1. En ganska stor skillnad för att vara en punkt-utgåva kan man tycka.
GB5 clang test var en fil med ~700 rader kod för single-core så ja något bättre har det blivit.

Permalänk
Datavetare
Skrivet av jclr:

FEAT_SME är optional och har inga som helst krav på att FEAT_SVE2 eller FEAT_SVE ska finnas. FEAT_SVE2/FEAT_SVE är också optional och kräver inte FEAT_SME. Det är hur tydligt som helst.
Apple följer helt enkelt ARM specification så nej det handlar inte om nån konspirationsteori att apple skulle ha en exceptionell ställning hos arm och nej SME är inte en standardiserad variant av Apples AMX. Däremot har de samma fuktionallitet vilket jag har skrivit att par gånger och som du nu upprepar.

Man ska inta lägga allt för stor vikt vid vad folk gissar på internet. Du har ju t.ex. själv hävdat vid ett par olika tillfällen nu att M4 har SVE2 och att skillnader i GB6 för M4/oryon beror på SVE2 när processorerna inte ens stödjer det. Jag antar att flera här på forumet läste även det som fakta. Överlag brukat det gissas hejvilt om allt möjligt i x86 vs. Arm trådar här på sweclockers.

Absolut, har redan sagt att jag hade fel här.
Får bära en extra hög virtuell påvemössa då jag gjort samma misstag två gånger, rätt mycket på samma sätt och antagligen kikat på samma sökträffar.

Kollade igenom GB6 whitepaper och inget test alls använder SVE2, däremot använder 2st SME (och AVX-VNNI/AVX512-VNNI på x86).

Enda relevanta poäng här är att det finns ett deltest som kan få en väldigt stor boost i det fall dessa instruktioner används.

Skrivet av jclr:

AMX går att komma åt utan Accelerate.

Uttryckt på det sättet, helt korrekt. Folk har gjort reverse-engineering på Apples AMX.

Ändå i praktiken helt irrelevant då statistiskt sett ingen kommer utnyttja tekniken utanför Accelerate i "riktiga program".

Det potentiellt relevanta i kontext av GB6 som jämförelse mellan M1-M3 och t.ex. M4, Nvidias N1x, etc. är att i praktiken kommer M1-M3 prestera bättre på det som "object detection" testar då det finns väldigt liten anledning att inte använda Apples NumPy/PyTorch backend om man kör på MacOS. Men det gör inte testet på något sätt värdelöst, framförallt inte då detta är unikt för M1-M3.

GB6 är ju tänkt att jämföra "ren" CPU-prestanda och en högst rimlig gräns att dra då är att bara använda standardinstruktioner i respektive ISA. Vilket gör detta än mer ironiskt att vissa kallar GB6 för "apple-bench", det är inte en benchmark som positivt gynnar dem (tvärtom).

Skrivet av jclr:

Streaming varianterna handlar mest om att följa specifikationen när det gäller Apple. AMX hårdvaran delas per kluster av kärnor vilket innebär att det inte finns nån fördel jämfört med neon som är implementerat i varje kärna.

Det är en nischfunktion. Men hela poängen med att ha ett 20-tal olika tester är ju att få ett stor bredd på vad som testas, vilket är en förutsättning för att kunna få en någorlunda rimlig siffra på "hur presterar denna CPU-modell relativt andra CPU-modeller i genomsnitt?".

Ja, AMX verkar i grundmodellerna av M1-M4 vara uppdelat i två kluster. En för P-kärnorna och en för E-kärnorna, där likt SMT arkitekturtillståndet är duplicerat till varje fysisk kärna men AMX-HW delas.

Total irrelevant information för de som bara vill få ett grepp om hur en CPU presterar i förhållande till andra.

Skrivet av jclr:

5% är en ganska kraftig påverkan av resultatet om det faktiskt inte representerar skillnaden i råprestanda utan bara handlar om att geekbench använder AMX hårdvaran i M4 men inte i M3. Vilket var en av poängerna med mitt ifrågasättande av vad geekbench siffrorna egentligen säger och varför de är värdelösa för att försöka göra någon djupare analys som t.ex. att IPC ökade med si och så många procent för enkeltrådat mellan M3 och M4. Resten av texten verkar mest handla om helt andra saker.

Som sagt, GB6 använder inte (och lär aldrig använda) AMX då man i CPU-testet verkar försöka undvika att använda OS-specifika funktioner så långt som möjligt. AMX är i praktiken bundet till MacOS/Accelerate.

Sen går det att argumentera för att 5 %, om vi istället jämför Zen3 (som saknar AVX512-VNNI) och Zen4/5 (som båda har AVX512-VNNI) inte alls visar hur absolut fantastik lyft detta kan ge i "verkligheten" om man bara råkar göra saker där det spelar roll. Har ett konkret fall (kombo av .NET8/Python+PyTorch) där 14900K/5950X/M3 Max (de CPUer vi råkade jobba på) i de flesta fall presterade rätt likvärdig, men vid träning/inferens av små ML-modeller var M3:an helt plötsligt x3 snabbare (kombo av AMX+MacOS verkar hantera detta lite mer effektivt).

Detta säger bara att en siffra kan bara beskriva så mycket. Och givet hur mycket "specialfunktioner" som läggs in i moderna system så kommer en aggregerad "prestandasiffra" antagligen bli allt mindre relevant.

Bryr man sig om CPU-renderingprestanda, kompilering, ML-inferens, etc, kolla det specifika deltest som testar detta. Då du nämner M3 och M4, de är väldigt närbesläktade men ändå ser man rätt stora skillnader i prestandaskillnad mellan olika deltester.

GB6 använder Intel i5-12500 som base-line. Man har på den mätt IPC för varje deltest, det är ett span på 1,1 till 3,9 i IPC. Det visar att prata om "genomsnittlig IPC" går absolut att göra ur ett statistiskt perspektiv. Men det är bara ett genomsnitt över de saker GB6 valt att ha med, vilket i.o.f.s. verkar tillräckligt bra för att både Intel och AMD biland använder det som referens när de lyfter fram generationsökningar i IPC.

Det är absolut ingen exakt siffra, så uttalande om "X+1 har 16 % högre IPC mot X" är egentligen nonsens då det helt beror på val av applikationer. Men GB6/SPECint/SPECfp har ändå visat att de trots allt ger en rätt bra "mellan tummen och pekfingret" indikation på vad en CPU ligger relativt andra.

Att Nvidia N1x får 3096 ST betyder inte att den är snabbare än en Intel/AMD CPU som får 2980 poäng. Det är så nära att de ur alla praktiska hänseenden är lika snabba, det kan däremot finnas relevanta skillnader i specifika fall. Som t.ex. kompileringsprestanda per kärna.

Skrivet av jclr:

Man väljer helt enkelt en källa som känns bra och som har ett resultat som känns rätt med vad man själv tror?

En källa är fel. En källa som har visat sig få resultat som inte avviker från andra.

Klicka för mer information

Videocardz får också rätt mycket det jag använde ovan

Visa mer

Skrivet av jclr:

Ingen aning, det saknas information. Egentligen skiljer det 5% i prestanda men de som körde testerna har olika långa användarnamn så visa datastrukturerer hamnade olika fördelaktikt i minnet vilket gjorde att resultatet blev lika... eller precis vad som helst annat som påverkar kan påverka benchmarkresultat (att skriva/genomföra korrekta benchmarks är extremt svårt och väldigt ofta mäter man något helt annat än vad man tror)

Exakt, detta är det verkliga problemet med GB6: deras databas har lite väl hög "märkliga" resultat och finns inget vettigt sätt att filtrera på saker som "ge mig bara denna version, inga överklockade resultat, etc".

Run-to-run variance i GB6 är väl under 5 % i en vettigt kontrollerade miljö, inte där problemet ligger. Problemet ligger i att många resultat är gjorda under helt okända förhållanden, vissa är på olika sätt fabricerade.

Kan man inte köra alla resultat själv är det bästa därefter att använda resultat från källor som gör kontrollerade tester. Vilket inkluderar de flesta tech-siter som gör CPU-reviews.

Skrivet av jclr:

Testa samma dator i geekbench under både Linux och windows och jämför resultatet. Kolla i μProf vad som faktiskt händer. Hur mycket tid spenderas i windows/Linux kärnan osv. Då får man iaf en aning om hur jämförbara Linux / windows resultaten är för just den processor och de versionerna av windows/Linux/geekbench. Det betyder inte att man automatiskt kan överföra det resultatet på en annan processor eftersom t.ex. Linux kan utnyttja något i en ny processor bättre än i windows men den skillnaden inte finns när det gäller äldre processorer. Vill man ha något som är mer exakt än ±15% får man använda något annat än geekbench.

Sure det kan man göra, men vad är poängen?

Vad man realistiskt kan använda den här typen av siffror till är att säga saker som

M4 har högre ST än alla andra CPUer just nu, i nästan allt. Man kan inte säga med exakt hur mycket, rimlig noggrannhet är med ±10 %.

Då Nvidia N1x, AMD Ryzen 395 AI Max, Intel i7 285 HX alla är väl inom ±10 % ska man nog inte hävda något annat än att de är likvärdiga. Det betydligt inte att de är likvärdiga på allt, i specifika fall skiljer det helt klart mer än 10 % vilket då kan vara relevant.

Skrivet av jclr:

Man känner sig fram till vad resultatet "borde" vara. Vad är det som gör att det är " rimlig sannolikhet ett "representativt resultat" "? Utifrån hur svårt det är att skriva/genomföra en korrekt benchmark är det verkligen mer sannolikt att ett genomsnittsresultat är mer korrekt än ett betydligt mindre kluster som ligger lika i resultat?

Geekbench fungerar som ett väldigt grovt verktyg där man kan se ungefärliga skillnader. Hur stor roll spelar det egentligen om en dator A ser ut att vara 5% snabbare än dator B men i själva verket är 5% långsammare? Det är inget som märks, alla moderna processorer är extremt snabba. Däremot blir det fel om man tror att det går att göra några djupare analyser utifrån geekbench.

Absolut, alla verktyg som försöker sammanfatta något så komplex som CPU-prestanda i en modern CPU ger bara en fingervisning.

Däremot skulle jag vilja hävda att om ett specifikt deltest råkar testa just det man själv har som viktigt fall så är resultatet i det deltestet en betydligt mer träffsäker indikation på vad man kan förvänta sig.

Skrivet av jclr:

Om man vill få en bild av hur Amds SMT påverkar typiska serverapplikationer som Blender och kompilering kan man titta på phoroix test av AI Max+ 395.
https://www.phoronix.com/review/amd-strix-halo-smt
I princip ingen skillnad i strömförbrukning och nej AMD kärnorna skulle inte gå att göra mycket mindre utan SMT så man får plats med flera.
<Uppladdad bildlänk>
<Uppladdad bildlänk>
<Uppladdad bildlänk>

Fast nu drar du ändå långt större slutsatser än vad som man faktiskt kan se från de testerna.

Ja, i fallet Zen 5 ser man just det resultat. Det går inte att generalisera till att "SMT är så här bra".

Intel hävdade att genom att överhuvudtaget inte ha stöd för SMT i kisel så kunde man öka perf/W med 15 % i Lunar Lake. D.v.s. SMT har en negativ kostnad i för energieffektivitet i de fall där man inte använder "andra tråden" i en CPU (vilket för normalanvändaren på dagens >=6 kärnors CPUer är i klar majoritet av fallen).

Sen givet att vi kommenterar en artikel om Nvidia N1x och pratar om Ryzen 395 AI Max och M4 som alla har som alla har CPU/GPU-unified RAM och "stark iGPU" som huvudfiness, hur är det ens relevant hur Blender presterar på CPU?

395 AI Max får ca 417 poäng i Blender benchmark med CPU, den får 1375 poäng på GPUn

Här är ju där vi lär se N1x starkaste kort. För även om det inte är någon M4 Max sett till CPU, så är det fullt möjligt att den kan slå M4 Max GPUn på fingrarna i t.ex. Blender som inte verkar vara superkrävande vad det gäller RAM-bandbredd.

M4 Max får ca 470 poäng på CPU i Blender Benchmark, den får 5200 på GPU.

Gissar att N1x får svårt att nå 400 poäng på CPU här, däremot får RTX 5070 (N1x har lika många CUDA-kärnor, men klart lägre RAM-bandbredd som 5070) 6200 poäng!

SMT har absolut ett värde, det primärt på servers. SMT hade ett värde även på desktop när det var 1-4 kärnor, värdet när även laptops regelmässigt får över 10 kärnor känns rätt tveksamt. Framförallt om det Intel hävdar inte är total goja.

Visa signatur

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

Permalänk
Datavetare
Skrivet av mc68000:

Det finns en uttalad kritik mot Geekbench multitråds-värden då vissa av testerna skalar väldigt dåligt.
https://dev.to/dkechag/how-geekbench-6-multicore-is-broken-by...

Inte en helt ovanlig kritik. Den bottnar i att man totalt missförstår vad det Geekbench försöker vara ett representativt benchmark för.

GB6 är nog det närmaste som finns idag till att vara det SPECint/SPECfp är för servers, fast för desktop.

I SPEC-rate (deras motsvarighet till GB MT-tester) kör man ett enkeltrådat fall per CPU-kärna. Enda som kommer hindra skalningen där är eventuella begränsningar i HW från frekvensskalning, RAM/cache-flaskhalsar etc.

Ett högst relevant test för ren server. Det typiska sättet att skala där är att hantera många samtida transaktioner, där varje transaktion typiskt är enkeltrådad.

Väldigt få desktop-applikationer uppför sig på det sättet. Kompileringar av stora C/C++/Rust projekt är ett noterbart undantag (.NET verkar inte alls skala lika med kärnor bra även när man har projekt med tusentals filer, å andra sidan kompilerar det typiskt x10 snabbare än motsvarande C++ räknat per fil, Go kompilerar ännu snabbare räknat per fil...).

Vad GB6 testar i MT fallet är hur en applikation som använder flera CPU-trådar för att lösa en uppgift (vilket är väldigt typiskt desktop fall) skalar över kärnor. För att se att den skalning man visar nog inte är helt galen kan man jämföra med t.ex. TechPowerUp som testar ganska många "verkliga" applikationer.

9700X har 33 % fler kärnor jämfört med 9600X, men den har "bara" 13 % högre prestanda i de applikationer som TPU testar
https://www.techpowerup.com/review/amd-ryzen-7-9800x3d/27.htm...

Tar vi SweC mätningar får 9700X 16372 poäng medan 9600X får 14665. Det ger en ökning för 9700 på 12 %.

TPU har nog bästa suite:en av icke-speltester på nätet. Tyvärr testar man bara x86 desktop, finns varken laptop x86 eller icke-x86 CPUer

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
Skrivet av Yoshman:
Skrivet av jclr:

Testa samma dator i geekbench under både Linux och windows och jämför resultatet. Kolla i μProf vad som faktiskt händer. Hur mycket tid spenderas i windows/Linux kärnan osv. Då får man iaf en aning om hur jämförbara Linux / windows resultaten är för just den processor och de versionerna av windows/Linux/geekbench. Det betyder inte att man automatiskt kan överföra det resultatet på en annan processor eftersom t.ex. Linux kan utnyttja något i en ny processor bättre än i windows men den skillnaden inte finns när det gäller äldre processorer. Vill man ha något som är mer exakt än ±15% får man använda något annat än geekbench.

Sure det kan man göra, men vad är poängen?

Nyfikenhet? Du ser inte att det skulle kunna vara det minsta intressant att faktiskt ta reda på hur det ligger till istället för att avfärda resultaten med att de är fel/fusk? Enda sättet att mäta ett för bra resultat är genom att på något sätt fuska eftersom alla kör samma program. Det skulle innebära att en majoritet av Linux användarna har fuskat men ingen av windows användarna har gjort det?

Det var du som först länkade till jämförelsen och att den skulle stödja den här slutsatsen:

Skrivet av Yoshman:

Det här är inte längre en slump, något gör att ARM64 CPUer är väsentligt bättre än x86 på uppgifter som har visat sig vara extremt svårt att extrahera ILP från. Kompilering är ett av dessa fall.

N1X vs Ryzen AI Max 395

Kan det inte vara intressant att faktiskt försöka ta reda på om det är det siffrorna visar istället för att bara gissa?

Skrivet av Yoshman:

Fast nu drar du ändå långt större slutsatser än vad som man faktiskt kan se från de testerna.

Ja, i fallet Zen 5 ser man just det resultat. Det går inte att generalisera till att "SMT är så här bra".

Nej inte alls. Det handlar specifikt om AMDs SMT och specifikt om en speciell processor, AI Max+ 395 (Zen 5). Det är ingen generalisering. Antagligen stämmer det hyffsat med resultat man skulle se på andra AMD som också använder Zen 5 arkitektur men det säger inget alls om hur bra SMT fungerar på en annan mikroarkitektur som Zen 4 eller intel.

Skrivet av Yoshman:

Intel hävdade att genom att överhuvudtaget inte ha stöd för SMT i kisel så kunde man öka perf/W med 15 % i Lunar Lake. D.v.s. SMT har en negativ kostnad i för energieffektivitet i de fall där man inte använder "andra tråden" i en CPU (vilket för normalanvändaren på dagens >=6 kärnors CPUer är i klar majoritet av fallen).

Det här är däremot en generalisering. Intel pratar specifikt om sin version av SMT och specifikt om Lunar Lake, inte om dagens CPUer som du översätter det till. Den typen av generaliseringar kan man inte göra eftersom de skiljer väldigt mycket åt i mikroarkitektur även fast båda är x86.

Zen5 SMT skiljer sig en hel del jämfört med intel och tidigare amd. Det finns två separata decoders där även fetch delen av pipelinen är separat. De kan alltså hämta i instruktioner från varsitt 32B fönster. En tråd per decoder i SMT läge. Op-cachen som sparar redan avkodade instruktioner har två portar viket innebär 2×6 = 12 instruktioner/klockcykel i SMT läge.
Resten av cpu resurserna delas inte 50/50 bara för att man kör SMT. Det enda som gör det är några av köerna (op/retire/store) andra saker som t.ex. schedulers/load queue/register har en övre gräns för hur mycket en av trådarna får använda (watermarking), cacher/TLBs är det fritt fram för en tråd att lägga beslag på helt.

Skrivet av Yoshman:

SMT har absolut ett värde, det primärt på servers. SMT hade ett värde även på desktop när det var 1-4 kärnor, värdet när även laptops regelmässigt får över 10 kärnor känns rätt tveksamt. Framförallt om det Intel hävdar inte är total goja.

Det här är alltså en 16 core / 32 thread Zen 5 laptop.

I princip samma förbrukning:

Hyffsad ökning i prestanda:

Phoronix sammanfattar det med "There were significant gains in real-world software from having SMT available, even with a 16-core laptop."

Det betyder inte att det Intel hävdar är total goja. De pratar om sina egna processorer.

Permalänk
Datavetare
Skrivet av jclr:

Nyfikenhet? Du ser inte att det skulle kunna vara det minsta intressant att faktiskt ta reda på hur det ligger till istället för att avfärda resultaten med att de är fel/fusk? Enda sättet att mäta ett för bra resultat är genom att på något sätt fuska eftersom alla kör samma program. Det skulle innebära att en majoritet av Linux användarna har fuskat men ingen av windows användarna har gjort det?

Om man kan mäta själv är det ju inget problem. Huvudproblemet med GB6 är inte att testerna suger eller att inte skulle vara reproducerbara. Har testat GB Linux vs Windows på några av mina system, bl.a. 5950X, och där skiljde ~1 % i ST-testerna (Linux var den snabbare, det repoducerbart så _viss_ fördel finns). För specifika deltest skiljer det upp till ca 5 %, det är trots allt olika ABI på x86 i Windows och Linux (där Linux har en ABI som "känns" vettigare, t.ex. fler argument går i register).

Största problemet är att det är enkelt att se hur stor variation det är med samma CPU-modell, extra mycket så för CPUer som används BYO.

Nu har jag inte tillgång till just Ryzen 395 AI Max, om det blir en ny x86 CPU i närtid är det absolut en av de jag kan tänka mig då den är speciellt byggd för ML (M3 Max är löjligt dyr, enda som gjorde en värd pengarna var specifikt hur bra den är för ML).

Skrivet av jclr:

Nej inte alls. Det handlar specifikt om AMDs SMT och specifikt om en speciell processor, AI Max+ 395 (Zen 5). Det är ingen generalisering. Antagligen stämmer det hyffsat med resultat man skulle se på andra AMD som också använder Zen 5 arkitektur men det säger inget alls om hur bra SMT fungerar på en annan mikroarkitektur som Zen 4 eller intel.

Poängen var: testet visar vad SMT ger specifikt för 395 AI Max givet att AMD redan gjort valet att spendera transistorerna på SMT.

Vad vi inte kan veta är hur mycket mer ST-prestanda samt hur mycket mer perf/W som skulle ha varit möjligt om man inte ens spendera transistorer på SMT.

Intel hävdar att för Lion Cove handlar det om ~15 % högre perf/W i ST-fallet om man inte ens spenderar transistorer på SMT. Man kan självklart inte förutsätta att det är 15 % överallt, men med väldigt nära 100 % säkerhet kan man säga att det går att vinna prestanda och/eller energieffektivitet i fallen där en CPU-tråd per kärna används genom att helt skippa SMT.

För en server är i de flesta fall vinsterna med högre total kapacitet ändå värt SMT. AMD är numera rätt ensam om att behålla SMT på laptop CPUer. Inget bevis, men nog ändå sannolikt att i alla fall någon av de andra har koll på vad de gör.

SMT är absolut en bra teknik, vi lär även se det används i ARM64 servers framåt. Nåde SMT2 och SMT4 har historiskt används i ARM64 server-kretsar, dock innan man istället började skruva upp out-of-order fönstret brutalt och när man märkte att det extrahera väldigt hög ILP på det sättet. Intel verkar ju hoppas på något likande med APX.

Allt färre verkar se det som en bra teknik specifikt för desktop-laster, då främst mobila enheter.

Skrivet av jclr:

Det här är däremot en generalisering. Intel pratar specifikt om sin version av SMT och specifikt om Lunar Lake, inte om dagens CPUer som du översätter det till. Den typen av generaliseringar kan man inte göra eftersom de skiljer väldigt mycket åt i mikroarkitektur även fast båda är x86.

Se ovan, menade det inte alls som att "det ger 15 % oavsett mikroarkitektur". Generaliseringen man kan göra är att genom att inte ens offra kisel på SMT kan man få högre ST, hur mycket beror självklart på mikroarkitektur och även egenskaper i ISA (som hur "snäll" den är i att ge möjlighet till hög ILP).

Hur mycket SMT ger är högst beroende av mikroarkitektur. Första generationen Atom hade SMT och där gav tekniken enorm utdelning. Inte för att det var en fantastiskt mikroarkitektur, utan tvärtom för att det var en hopplös långsam in-order design som inte alls fixade att mata sin backend fullt ut med en tråd. Caviums ThunderX2 (tidig ARM64 server CPU) hade ett värde av SMT4 av likande orsaker, den prestanda ändå rätt bra om alla trådar användes.

Skrivet av jclr:

Zen5 SMT skiljer sig en hel del jämfört med intel och tidigare amd. Det finns två separata decoders där även fetch delen av pipelinen är separat. De kan alltså hämta i instruktioner från varsitt 32B fönster. En tråd per decoder i SMT läge. Op-cachen som sparar redan avkodade instruktioner har två portar viket innebär 2×6 = 12 instruktioner/klockcykel i SMT läge.
Resten av cpu resurserna delas inte 50/50 bara för att man kör SMT. Det enda som gör det är några av köerna (op/retire/store) andra saker som t.ex. schedulers/load queue/register har en övre gräns för hur mycket en av trådarna får använda (watermarking), cacher/TLBs är det fritt fram för en tråd att lägga beslag på helt.

Det finns absolut tricks man kan göra för att maximera effekten av SMT. Som jag förstod NXPs PowerPC kärna e6500 fungerade den väldigt likt hur Zen 5, där blev det väldigt bra för SMT (och det är ju ett tag sedan) så det lär ju fungera minst lika bra idag givet den extra erfarenhet som finns.

Sen är även två separata decoders av allt att döma egentligen mer ett plåster än "det är bästa idén ever". Intel har två decoders i Crestmont och man gick till tre decoders i Skymont. Anledningen där är inte SMT, E-kärnorna sakar ju det, utan för att maximera ST-prestanda. Att man har flera decoders (som jobbar på att avkoda olika delar, från ett jump-target och framåt) är för att det kostar färre transistorer att ha 2/3st 3-wide avkodare än en som har samma totala kapacitet. Kostanden för ökad bredd ökar snabbare för x86 än för ARM64 p.g.a. komplexiteten i avkoding, en 8/10-wide avkodare är i genomsnitt bättre än 2st 4-wide men det ska vara en rimlig kiselkostnad också.

Poäng här: man kan absolut göra "smarta" och väl avväga optimeringar. Det är fortfarande till stor del ortogonalt mot om man vill designa för maximal total kapacitet (där är SMT otroligt kraftfullt) eller om man vill maximera ST per kärna (där Intel hävdar att man kan få en signifikant fördel genom att helt utelämna SMT).

Alla Arms CPU-kärnor, inklusive Cortex X925 och A725 som används i Nvidia N1x är optimerade för klient-laster och de har valt att skippa SMT. De har med X925 och gått samma väg som Apple med extremt out-of-order fönster, uppenbarligen fungerar det givet att N1x (som vi inte exakt vet frekvens på, men det pratas om 3,7-3,9 GHz) håller jämna steg med AMD/Intels senaste trots betydligt lägre frekvens.

SMT har absolut sina poänger, det är dock ingen silverkula och personligen tycker jag det allt mer verkar vara en belastning för desktop.

Skrivet av jclr:

Det här är alltså en 16 core / 32 thread Zen 5 laptop.

I princip samma förbrukning:
<Uppladdad bildlänk>
Hyffsad ökning i prestanda:
<Uppladdad bildlänk>

Phoronix sammanfattar det med "There were significant gains in real-world software from having SMT available, even with a 16-core laptop."

Det betyder inte att det Intel hävdar är total goja. De pratar om sina egna processorer.

Om man använder sin laptop som byggserver och/eller för HPC-laster, absolut då är SMT värdefullt.

Det är dock inte normalanvändningen. 395 AI Max är ju precis som Nvidia N1x och Apples Pro/Max serie en krets som förväntas förlita sig på sin GPU i de flesta laster som skalar väl med kärnor.

Både Nvidia och AMD har ju pekat på att snabb CPU kan spela en viktig roll för att hålla GPUn matad. Och sen finns det saker som inte passar GPGPU, Nvidia tycker tydligen det kan behövas 10+10 kärnor, Apple upp till 12+4 och AMD 16C/32T även i laptop.

Sådant finns absolut! Men det är rätt ovanligt och specifikt N1x succé lär nästan bara hänga på hur bra GPU-delen är + CPU-delen är "i nivå med Intel/AMD".

Alla dessa systemkretsar är ju superspännande. N1x kan ju faktiskt också bli något som till och med slår GPU-delen i M4 Max på fingrarna, det vore hel-häftigt! (Även om den i praktiken gå mer upp mot M5 Max, men ännu bättre om det blir ett race!).

TL;DR
Håller helt med dig om att SMT är en lysande teknik, det finns absolut saker man kan göra i mikroarkitektur som är bättre/sämre för SMT.

Men anser att SMT allt mer är något som passar bäst för servers. Det finns bättre saker att spendera kisel på i desktop-CPUer när de redan har 10-16 och snart >40 kärnor (om vi ska tro ryktena kring t.ex. Nova Lake).

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
Skrivet av Yoshman:

Poängen var: testet visar vad SMT ger specifikt för 395 AI Max givet att AMD redan gjort valet att spendera transistorerna på SMT.

Vad vi inte kan veta är hur mycket mer ST-prestanda samt hur mycket mer perf/W som skulle ha varit möjligt om man inte ens spendera transistorer på SMT.

Som jag skrev tidigare så går det inte direkt att göra Zen 5 kärnorna mindre genom att plocka bort SMT. Nu baserar jag iofs det på gissningar utifrån hur man optimerar kod för Zen 5 och vilka antaganden man då kan göra om mikroarkitekturen. Jag påstår inte att jag har full koll på alla detaljer i Zen 5 och det finns säkert saker jag har missuppfattat.

Eftersom det verkar finnas en hel del missuppfattningar om hur SMT fungerar på AMD så försökte jag hitta någon bra sida som går igenom hur SMT är implementerat i Zen 5 på ett enkelt sätt istället för att skriva en lång teknisk genomgång här. Tyvärr hittade jag ingen men däremot hittade jag en intressant intervju med Mike Clark (Zens chefsarkitekt).

https://chipsandcheese.com/p/a-video-interview-with-mike-clark-chief-architect-of-zen-at-amd
(Finns transkriberad men även som en 16 min video om man föredrar det formatet)

Så här svarar han angående SMT och om en tråd kan utnyttja alla front-end resurser.

"The answer is yes, and it’s a great question to ask because I explain SMT to a lot of people, they come in with the notion that we don’t [and] they aren’t able to use all these resources when we’re in single threaded mode, but our design philosophy is that barring a few, very rare microarchitectural exceptions, everything that matters is available in one thread mode. If we imagine we are removing [SMT] it’s not like we’d go shrink anything. There’s nothing to shrink. This is what we need for good, strong single threaded performance. And we’ve already built that."

Skrivet av Yoshman:

Intel hävdar att för Lion Cove handlar det om ~15 % högre perf/W i ST-fallet om man inte ens spenderar transistorer på SMT. Man kan självklart inte förutsätta att det är 15 % överallt, men med väldigt nära 100 % säkerhet kan man säga att det går att vinna prestanda och/eller energieffektivitet i fallen där en CPU-tråd per kärna används genom att helt skippa SMT.

Nej man kan inte alls med nära 100% säkerhet säga det. Vad specifikt är det om du tittar på Zen 5 arkitekturen som du menar går att plocka bort utan SMT? Jag är helt öppen för att jag kan ha fel men nu påstår ju arkitekten bakom Zen 5 samma sak också. Återigen, det som Intel säger gäller deras arkitekturer, inte andras eller CPUer generellt.

Skrivet av Yoshman:

SMT är absolut en bra teknik, vi lär även se det används i ARM64 servers framåt. Nåde SMT2 och SMT4 har historiskt används i ARM64 server-kretsar, dock innan man istället började skruva upp out-of-order fönstret brutalt och när man märkte att det extrahera väldigt hög ILP på det sättet. Intel verkar ju hoppas på något likande med APX.

Jag hänger inte alls med hur APX skulle ha något med att skruva upp out-of-order fönster eller extrahera ILP?

Skrivet av Yoshman:

Kostanden för ökad bredd ökar snabbare för x86 än för ARM64 p.g.a. komplexiteten i avkoding, en 8/10-wide avkodare är i genomsnitt bättre än 2st 4-wide men det ska vara en rimlig kiselkostnad också.

Nu missar du helt Op-cachen. Op-cachen sparar redan avkodade instruktioner och det är därifrån processor kommer hämta majoriteten av instruktionerna. Den har två portar som kan leverera 6 instruktioner var (förutom dvs undantag). Att den har två portar har inget med SMT att göra utan en tråd kan använda båda. 12-wide för AMD får väl ändå anses som hyffsat bra jämfört med 8/10-wide för ARM? Op-cachen om 6000 instruktioner delas av båda trådarna men det är fritt fram för en av trådarna att använda hela.

Permalänk
Datavetare
Skrivet av jclr:

Som jag skrev tidigare så går det inte direkt att göra Zen 5 kärnorna mindre genom att plocka bort SMT. Nu baserar jag iofs det på gissningar utifrån hur man optimerar kod för Zen 5 och vilka antaganden man då kan göra om mikroarkitekturen. Jag påstår inte att jag har full koll på alla detaljer i Zen 5 och det finns säkert saker jag har missuppfattat.

Eftersom det verkar finnas en hel del missuppfattningar om hur SMT fungerar på AMD så försökte jag hitta någon bra sida som går igenom hur SMT är implementerat i Zen 5 på ett enkelt sätt istället för att skriva en lång teknisk genomgång här. Tyvärr hittade jag ingen men däremot hittade jag en intressant intervju med Mike Clark (Zens chefsarkitekt).

https://chipsandcheese.com/p/a-video-interview-with-mike-clark-chief-architect-of-zen-at-amd
(Finns transkriberad men även som en 16 min video om man föredrar det formatet)

Så här svarar han angående SMT och om en tråd kan utnyttja alla front-end resurser.

"The answer is yes, and it’s a great question to ask because I explain SMT to a lot of people, they come in with the notion that we don’t [and] they aren’t able to use all these resources when we’re in single threaded mode, but our design philosophy is that barring a few, very rare microarchitectural exceptions, everything that matters is available in one thread mode. If we imagine we are removing [SMT] it’s not like we’d go shrink anything. There’s nothing to shrink. This is what we need for good, strong single threaded performance. And we’ve already built that."

Vad skulle han säga? Inte precis så att Intel sa något överhuvudtaget mer än "SMT tar väldigt lite kisel och är energieffektivt" (vilket ÄR sant, men det finns fler nyanser) fram till att de faktiskt gjorde en produkt där de plockat bort SMT.

Det vore korkat att dissa existerade produkt, en C-level person kommer självklart vara fullt medveten om det.

Skrivet av jclr:

Nej man kan inte alls med nära 100% säkerhet säga det. Vad specifikt är det om du tittar på Zen 5 arkitekturen som du menar går att plocka bort utan SMT? Jag är helt öppen för att jag kan ha fel men nu påstår ju arkitekten bakom Zen 5 samma sak också. Återigen, det som Intel säger gäller deras arkitekturer, inte andras eller CPUer generellt.

Jo, man kan med väldigt nära 100 % säga att det skulle gå att allokera de transistorer man idag använder för SMT till att istället öka ST-prestanda och/eller öka perf/W ST. Frågan är hur mycket, här är det fullt möjligt att utdelningen blir rätt låg p.g.a. val man gjort i mikroarkitekturen.

Intel har som sagt droppat SMT både i Atom (Bonell -> Silvermont) och nu även i Core (Redwood Cove -> Lion Cove)

Skrivet av jclr:

Jag hänger inte alls med hur APX skulle ha något med att skruva upp out-of-order fönster eller extrahera ILP?

Inte i sig själv öka OoO-fönster, öka ILP genom att öka längden på genomsnittlig critical path.

En observation man kan göra mellan Cortex X925 och Zen5 (då vi använt den som exempel) är att något gör att den förra ser ut att prestera rätt likvärdigt i absoluta termer räknat per kärna, det trots att den senare är klockad ca 28 % högre1.

Tittar man på mikroarkitektur för en del moderna P-core CPUer, här Zen 5, Lion Cove (de har väldigt snarlik IPC), Cortex X925, M4 samt E-core Cortex A725 (E-core i N1x) och Skymont (E-core i Arrow Lake).

P-Cores
E-cores

Så är det ändå lite anmärkningsvärt hur lika perf/cykel är i all 3 x86-designer samt hur lika de också är i X925 och M4, det trots att det helt klart finns noterbara skillnader.

Gjorde lite tester med Linux "perf" igår för att se om det gick att hitta enkla förklaringar. Körde igenom senaste 3 åren av AoC (har löst alla dagar utan några tricks som är ISA-specifika, de åren använde Go, Python samt Rust så lite variation i språk). Enda jag fick ut av det var: i genomsnitt kördes (retire) ca 10 % fler instruktioner på x86 jämfört med ARM64, kan förklara en del men inte de 25-30 % högre perf/W vi ser X925/M4 har över Zen5/Golden Cove.

Här är det också extra intressant att när Chips-and-cheese testade Skymont i Lunar Lake (den saknar access till L3$, tyvärr testade man inte Skymont i Arrow Lake som har L3$ access) mot Zen5C i Ryzen 370 visade det sig att de presterar i stort sätt identiskt i SPECint 2017, Skymont är dock 10 % högre klockad (3,7 GHz mot 3,2 GHz).

Inget bevis, men känns ändå som både x86 och ARM64 P-designerna pushar mot en rätt hård gräns av något slag. Bara det att den räknat i perf/cykel ligger ca 25-30 % högre för ARM64.

Det Intel lyfter fram med APX är att det ska leda till färre load/store-operationer (fler register, lika många som ARM64), leda till färre hopp (mer villkorade instruktioner, ARM64 har långt mer saker än CMOV) och det jag tror kanske är den viktigaste poängen, möjlighet för instruktioner att inte påverka flagfältet (det är som att programmera MT med globala variabler, inte bra...). Kollar man med compiler explorer ser man att väldigt få av aritmetiska operationer i ARM64 uppdaterar flaggor (är likt APX valbart per instruktion ARM64).

Hittar tyvärr inga forskningsartiklar kring teoretisk ILP/critical path jämförelse mellan x86_64 och ARM64, finns en som kikar på ARM64/RISC-V (med slutsatsen att detta två ISA ofta har liknande maximal ILP, blir spännande att följa RISC-V framåt).

Min gissning är ändå att det är här ARM64 har sin fördel mot x86_64. Om det stämmer går det också förklara varför SMT är mer värdefullt på x86 jämfört med ARM64. För kikar man på Phoronix testet du länkade ovan, vinsten SMT ger för Zen5 i genomsnitt lyfter den totala mängden jobb kärnan gör per cykel till ungefär där X925 redan når med 1 CPU-tråd. Är ju lättare att hitta ILP i två oberoende strömmar än i en. Dock alltid bättre att få motsvarad

1 Det om vi tar de värden som rapporteras i GB6 som gospel, de är inte nödvändigtvis korrekta, för 395 AI Max vet vi ändå att den har 5,1 GHz max, eller 5,2 GHz med PBO vilket är vad de flesta resultat också rapporterar. GB6 rapporterar 4,05 GHz för N1x, vilket är högre än någon tidigare Cortex X925 men ändå inom rimlighetens gräns.

Skrivet av jclr:

Nu missar du helt Op-cachen. Op-cachen sparar redan avkodade instruktioner och det är därifrån processor kommer hämta majoriteten av instruktionerna. Den har två portar som kan leverera 6 instruktioner var (förutom dvs undantag). Att den har två portar har inget med SMT att göra utan en tråd kan använda båda. 12-wide för AMD får väl ändå anses som hyffsat bra jämfört med 8/10-wide för ARM? Op-cachen om 6000 instruktioner delas av båda trådarna men det är fritt fram för en av trådarna att använda hela.

Om bilden ovan är rätt är den inte 12-wide, den är maximalt 8-wide (8 uops kan levereras från MUX, det från två front-ends som var för sig kan leverera upp till 6-uops).

Sen är det även här noterbart att även micro-op-cache är något med både för- och nackdelar. Även Arm valde en tid att använda sig av micro-op-cache, fram till Cortex X3. När man sedan gick "very-wide" tog man bort den, verkar inte finnas något värde i det läget (Apple och Qualcomm har inte heller någon uop-cache på sina 8-10 wide front-ends).

Intel har också valt att INTE ha en uop cache på Skymont, den har samma kapacitet efter MUX som Zen5 på 8 uops. Slutligen noterbart att Lion Cove må ha högre kapacitet på denna punkt, men det verkar inte ha gett någon större utdelning i verkliga applikationer.

TL;DR är ändå hur lika perf/cykel är i flera olika mikroarkitekturer när man ser den som två grupper, ARM64 (med den högre perf/cykel) och x86_64. Inte alls galet att misstänka att det finns ISA-specifika begränsningar som sätter nivån. Vilket i sig är intressant givet att så pass namnkunniga personer som Jim Keller sagt: ISA spelar liten roll, viktiga är mikroarkitektur. Känns som det var sant, men inte längre är det.

Visa signatur

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