Givet mina första två inlägg i gamla samlingstråden för Zen kan jag bara applådera AMD för att de läste vad som skrevs och tog det till sig
Nåja, lite mer seriöst. Var faktiskt lite underligt val AMD gjorde i deras design av L1I$ i Zen/Zen+ då det sedan länge fanns så många exempel på att en mindre L1 cache men där cache-storlek dividerat med antal set är lika med storleken på en "page" (4 kB för x86).
L1I$ är i Zen/Zen+ 64 kB med totalt fyra delar medan Zen2 har 32 kB med totalt åtta delar. 32 kB / 8 = 4 kB -> TLB och L1I$ kan nu göras parallellt (en optimering Intel gjort sedan Sandy Bridge, Apple gjorde i deras ARM och som ARM till slut fått in i deras Cortex serie).
Från de benchmark som läckts är IPC ökning för Zen2 brutal, >30 % för bl.a. skriptspråk som Python (idag ett av världens populäraste programspråk), Perl, Ruby, LUA, BASH, PowerShell, m.fl. Zen/Zen+ har rent ut sagt usel prestanda i just dessa fall, då mätningar på dessa fall inte pekar på cache-missar, branch-missar eller något sådant blir en av de få kvarvarande förklaringarna att dessa fall trillar konsekvent ur den så kallade micro-op-cachen som Zen har (Intel introducerade en sådan i Sandy Bridge) och gick i stället mot L1I.
Oavsett orsak är detta ett rejält lyft för Zen2 för de som använder datorn for programutveckling.
Zen2 fixar också en en annan punkt jag i inläggen ovan gissade skulle bli en flaskhals då x86 inte är en s.k. load/store arkitektur ("CISC") utan aritmetiska operationer kan ha minne som en av sina operander. Misstänker att Zen bara fick två ALUs då designen initialt var tänkt att både användas för x86 (Zen) och 64-bitars ARM (K12), för ARM (som är en load/store arkitektur, aritmetiska operationer jobbar enbart med register) hade två ALUs varit fullt tillräckligt.
De flesta är rätt överens om att optimal load/store kapacitet för x86 är 2:1, vilket är exakt vad Zen2 nu fått. Tre ALUs som kan utföra upp till två loads och en store per cykel.
Agner Fog har nog nätets bästa analyser av mikroarkitekturerna hos olika x86 designer. Kring Zen/Zen+ pekar han på att det är den design med högst teoretisk kapacitet så här långt, men det går i praktiken bara att nå nära peak-kapacitet i extremt tillrättalagda micro-benchmarks.
Gick att se rätt tidigt att AMD inte ändrat "back-end" alls sett till ALUs, detta i deras patcher till kompilatorprojekten GCC och LLVM. Men givet det Agner Fog pekar på är ju inte det heller flaskhalsen.
Fanns ett par områden där Core presterar väsentligt bättre jämfört med Zen/Zen+. Ett är löst i Zen2. Ett annat fall som kanske inte är super-revant för den de flesta på SweC, men som definitivt är viktigt i datacenter/servers är I/O-prestanda mellan virtuella-maskiner och mellan containers.
Gillar verkligen inte att AMD trummar på med femtielva renderingstester (det är 2019, ett RTX 2060 har högre renderingskapacitet än en 64-kärnors Epyc så vem bryr sig?). Men om Zen2 även löst I/O-prestanda mellan VM/containers (ett fall där Intel typiskt är 50-100 % snabbare idag) så lär det riktigt lossna på datacentermarknaden för AMD. I det läget har Intel rejält bråttom att få ut nästa generation i mer än bärbara!!!
För den typiske SweC:aren kanske huvudfrågan ändå står kring spelprestanda. De två förbättringar som nämns ovan har absolut en positiv inverkan på spelprestanda, huruvida det räcker för att matcha eller till och med kliva förbi Skylake lär nog inte veta innan 7 juli.
Att man gått tillbaka till en "norrbrygga", d.v.s. man kör inte längre kör med integrerad minneskontroller är negativt för spelprestanda. De förändringar som gjorts lär med råge väga upp det.
TL;DR Zen2 är definitivt ett större fall framåt än man kunnat vänta sig!