Skrivet av andda715:
Definiera "starkare".
Givet att det bara gäller exempelvis frekvens så så är någon (förenklad) variant av super-linear scaling en rimlig början.
Beror så klart på cache-storlekar m.m. men med rimliga antaganden på problemdomän så är det inte direkt svårt att förstå att det är enklare att skriva bättre presterande kod på många relativt svaga kärnor (frekvensmässigt) jämfört med färre högre klockade givet minneshantering går att få effektivare på de svagare. Genom mer sammanlagd cache exempelvis.
Moderna konsolspel med mer och mer AI och bakgrundsjobb känns som en perfekt kandidat, men CS och esport som raka motsatsen så klart.
Det fetmarkerade säger i princip att Amdahls lag är felaktig. Rätt stort scoop om det stämmer då det faktiskt är en "lag" i strikt mening och inte en observation/approximation som t.ex. Moores "lag" (som inte lägre är giltig).
D.v.s. det är teoretiskt helt omöjligt att få ett program att skala bättre med CPU-kärnor än vad Amdals lag säger. Enda praktiska avvikelsen nämner du: super-linjär skalning.
Problemet är att super-linjär skalning bara förekommer på väldigt specifika typ av problem samt att effekten faller av väldigt snabbt med ökade antal kärnor. För att få super-linjär skalning på den typ av CPU-designer vi har idag måste man ha ett problem som
endast läser delad data
endast en delmängd av data används för att göra någon form av beräkning
den delmängden av data som processas måste vara klustrad i minne
problemet måste vara "embarrassingly parallel" (d.v.s. p värdet i Amdals lag lär vara extremt nära 1,0)
Den typen av problem finns absolut, men det är rätt ovanligt och det är helt irrelevant för det som diskuteras här, d.v.s. spelprestanda.
Första punkten ihop med tredje punkten medför också att om det även finns skrivning får man i princip den omvända effekten, d.v.s. potentiellt så minskar prestanda (i absoluta termer) när man lägger på flera kärnor. Detta p.g.a. cache-line bouncing.
Vidare förutsätter Amdahls lag att den seriella delen överhuvudtaget inte beror på antalet kärnor. OK approximation när man väl passerat 3-4 kärnor, men det är inte sant när man går från 1->2, från 2->3 kärnor. I det läget ökar kostnaden för synkronisering mellan kärnorna, d.v.s. storleken på den seriella delen ökar något.
Noterade att SweClockers faktiskt har mätt på 1500X, 1600X och 1800X ihop med RTX 2080Ti i deras test av Intels 9000-serie. Om man ignorerar att det skiljer några procent i all-core frekvens mellan dessa CPUer så ger detta ett perfekt tillfälle att beräkna p värdet i Amdals lag på de fem spel man tester.
Notera att frekvensen är i praktiken 1500X < 1600X ~ 1800X så man får en svag överskattning av p, d.v.s. man överskattar hur väl spel utnyttja CPU-kärnor.
BF5 var bäst på att utnyttja kärnor med ett p värde på 0,80. Snittet över alla spel var 0,76 så ändå rätt samlad bild.
Har gjort liknande skattningar på spel från 2011 när i5-2500 och i7-2600K släpptes, då låg spelen på runt 0,70 i genomsnitt. Antar man samma utveckling nästkommande åtta år borde vi se ett p värde på runt 0,81 i snitt (blir exponentiellt svårare att öka p ju närmare 1,0 man kommer om man utgår från att ökade p följer av vad Gustafsons lag beskriver).
Skrivet av sesese:
Men en 9600k är väll i nivå med en 7700K totalt 8 trådar känns så 2016 och äldre datorer. känns inte framtidssäker som andra redan skrivit.
2018 är det fortfarande så att den högre prestanda 7700K har per CPU tråd över 2700X ger, enligt SweC senaste speltester, ändå runt 10 % högre spelprestanda (vare sig man tittar på genomsnittlig eller lägsta FPS).
Om utvecklingen går som gissningen ovan betyder det att om åtta år har dessa ~10 % ändrats till ~5 %. Det blir inte större utväxling p.g.a. Amdahls lag.
Även här får man tänka på att effekten av att dubbla antalet kärnor när p inte är 1,0 (d.v.s. perfekt skalbarhet med kärnor) avtar exponentiellt med ökande antal kärnor.
Steget från 2C är långt mer dramatiskt än 4C. vid p = 0,8 får man faktiskt en fördubbling av prestanda från 2C -> 8C. Krävs ett p värde på 0,89 för att få en fördubbling från 4C -> 16C. Är nog rätt långt innan spel når dit. Frågan är om man någonsin kan nå så hög parallellism i spel givet att kommunikation med GPU är rätt centralt för spel, finns bara en grafik-kö så där har man en rätt kritisk serialiseringspunkt i spelmotorer!
Kort och gått: det kommer ta längre tid för 6C/6T att nå den punkt 4C/4T nått nu, d.v.s. det finns enstaka speltitlar där 4C/4T faktiskt är märkbart sämre jämfört med 4C/8T och 6C/6T.
6C/6T är mer "framtidssäker" jämfört med 4C/8T om man bara tittar på spel. SMT ger typiskt mellan 20 % till 30 % extra prestanda i saker som skalar väldigt bra med CPU-trådar. I spel är det <20 %. Så en 4C/8T motsvarar <4,8 "riktiga" kärnor i spel.