För den som undrar om det går att se skillnad i spel mellan enkel CCD & dubbel CCD (enkel CCX mot dubbel CCX), jo det gör det men för att se det i många titlar lär man tilta inställningar för absolut maximal FPS för att det ska ge stor effekt. En del titlar visar det till trots även i mer normala inställningar. GPU begränsar mer än man tror i en del titlar även vid 1080p.
http://images.anandtech.com/graphs/graph16220/119170.png
http://images.anandtech.com/graphs/graph16220/119176.png
http://images.anandtech.com/graphs/graph16220/119178.png
http://images.anandtech.com/graphs/graph16220/119184.png
http://images.anandtech.com/graphs/graph16220/119186.png
http://images.anandtech.com/graphs/graph16220/119189.png
http://images.anandtech.com/graphs/graph16220/119214.png
http://images.anandtech.com/graphs/graph16220/119220.png
http://images.anandtech.com/graphs/graph16220/119254.png
http://images.anandtech.com/graphs/graph16220/119260.png
https://www.anandtech.com/show/16214/amd-zen-3-ryzen-deep-div...
Fast blir det rätt att välja ut ett specifikt fall? Kollar du i stället på t.ex. GTAV så prestera 5900X/5950X bättre än 5600X/5800X...
Om man räknat ur skillnaden över alla speltester Anandtech har blir det 2 % fördel för 5800X över 5900X i genomsnittlig FPS, är däremot 1 % fördel för 5900X över 5800X i lägst FPS. Alla resultat är för lägsta upplösningen med lägsta inställningar där skillnaderna är som störst m.a.p CPU.
Gör man ett student's t-test med hypotesen att skillnaden mellan prestanda hos 5800X och 5900X är noll kan man inte förkasta den hypotesen (är inte i närheten) baserat på data.
Kort och gott: givet data kan vi inte med någon statistisk säkerhet avgöra om den skillnad vi faktisk ser mellan 5800X och 5900X kommer från en faktiskt skillnad i prestanda eller om det bara är en effekt av varians i mätningarna och testmetoderna.
Råder absolut inga tvivel om att Zen3 är snabbare än Zen2 i spel, den skillnaden verkar ha väldigt lite att göra med minskningen i antal CCX. För om så vore fallet borde 5800X prestera bättre än 5900X. Däremot ger minskningen av CCX-antal en fördel över Zen2: mängden L3$ som är användbar per CPU-kärna är dubbelt så stor i Zen3, det lär vara en (av flera) orsaker till ökad spelprestanda.
Hmmm
Jag "vill" att det skall matcha resultaten i artikeln nedan, där "Vid samma klockfrekvens i upplösningen 720p tappar nämligen Ryzen 3 3100 nämnvärd prestanda och storebror Ryzen 3 3300X uppvisar här cirka 12 procent högre bildfrekvens.".
https://www.sweclockers.com/test/29571-amd-ryzen-3-3300x-och-...
Det jag hittar i rayons dokumentation om fork-join verkar gälla asynkrona tasks?
"scope Creates a "fork-join" scope s and invokes the closure with a reference to s. This closure can then spawn asynchronous tasks into s. Those tasks may run asynchronously with respect to the closure; they may themselves spawn additional tasks into s. When the closure returns, it will block until all tasks that have been spawned into s complete."
Eller kanske den är lite för syntetisk och lite för bra på att dela upp en förutbestämd sekventiell last?
Medan tex spel har en mer pseudo-random synkron last i en bra motor där olika trådar måste vänta på varandra?
Skulle vara spännande att se samma sak i bfv, eller superposition, eller w/e. Oavsett om det är latens eller något annat okänt med tex IF som spökar så är det ju en dokumenterad effekt i 3000-serien, som kanske eller kanske inte finns i 5000-serien.
Om du löser ett problem där alla ingående moment utförs synkront, vad har du då? Urtypen för ett rent enkeltrådat fall!
Enda sättet att få en "speed-up" av att slänga flera kärnor på att lösa ett och samma problem är att vissa delar kan utföras asynkront. Skillnaden mot "embarrassingly parallel" som t.ex. Cinebench där man aldrig har ett "join" steg och därmed ingen synkroniseringspunkt, är att fork-join fall delar upp något i två delproblem som kan lösas separat, men man måste sedan slå ihop delresultaten (join).
Det krävs core-to-core kommunikation både att sprida ut jobbet, men framförallt krävs core-to-core kommunikation för att slå ihop delresultaten (join är betydligt knivigare att göra effektiv än fork).
Moderna spelmotorer fungerar på just detta sätt. De delar in de saker som ska göras i deluppgifter som kan lösas separat, dessa deluppgifter kan i sin tur dela upp sitt jobb på samma sätt. D.v.s. precis det som händer i exempelprogrammet jag postade, skillnaden i det är att spel knappast har i närheten lika mycket potentiell parallellism.
Här är ett fall som lite visar effekten av att använda en kärna per CCX faktiskt ger högre prestanda än att använda alla tre kärnor i ett CCX. Det fallet med lite högre ST-prestanda är där alla tre kärnor (körde 3C/6T) kör i samma CCX, använde CCX#0 vilket ligger på den "bra" compute-die så den klockar lite högre än den andra. Andra fallet använde CCX#0, #1 och #2 (CCX#2 ligger på den "dåliga" compute-die).
GB5 har fall där "working-set" är >16 MB. Blir i det fallet en fördel att sprida över CCX, man har tillgång till 3x 16 MB L3$ medan fallet som är låst till en CCX har 16 MB L3$ som alla 3 kärnor och 6 trådar måste dela på. GB5 MT använder flera kärnor att lösa ett större problem.
Ställer man 3800X mot 3900X, med 3900X som referens:
högre genomsnittlig core-to-core latens p.g.a. 4 CCX mot 2 CCX
högre aggregerad bandbredd mot L3$ p.g.a. 4 L3$-slices mot 2 L3$-slices
mer L3$ p.g.a. 4 L3$-slices mot 2 L3$-slices
samma mängd L3$ per CPU-kärna då varje CCX innehåller en 16 MB L3$-slice
högre aggregerad skrivprestanda mot RAM p.g.a. två compute-die vs en
D.v.s. finns både fördelar och nackdelar i båda fallen
Ställer vi nu 3100 mot 3300X, med 3300X som referens:
lägre genomsnittlig core-to-core latens p.g.a. 1 CCX mot 2 CCX
samma aggregerad bandbredd mot L3$ p.g.a. varje L3$-slice är halverad i 3100
samma mängd L3$ p.g.a. att de två L3$-slices i 3100 bara är 8 MB mot 16 MB i 3300X enda
dubbelt så mycket L3$ per CCX, vilket ger dubbla användbara mängden L3$ per CPU-kärna
samma skrivprestanda mot RAM p.g.a. då båda har en compute-die
3100 vs 3300X är alltså inte jämförbar med 3600/3600X/3700X/3800X vs 3900X/3950X (och motsvarande för 5000-serien med en vs två compute-dies). I det förra fallet har 3300X kvar fördelarna med färre CCX, men 3100 har ingen av fördelarna som 3900X/3950X har.
Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer