Skulle inte latensen mellan den separata I/O die och core die (samt mellan två core dies, som det såg ut att få plats med under CES presentationen) vara något viktigt att veta för utvecklarna? Känns som en viktig del att tänka på också. @Yoshman vad tycker du?
Vad skulle man göra med den informationen?
Överhuvudtaget kan man säga: det finns egentligen inga relevanta CPU-speckfika optimeringar att göra när man pratar om moderna high-end out-of-order CPUer.
Självklart finns det skillnader i vad styrkorna hos olika mikroarkitekturer, men om dessa styrkor kommer till sin rätt eller ej dikteras i praktiken helt av typen av problem man försöker lösa.
Om problemet är en typisk server-last där man har många samtida oberoende sessioner att hantera, ja då är den cache-design som Zen och Skylake SP använder en fördel. Råkar sedan lasten vara flyttalsintensiv och inte lämpar sig för SIMD, då har vi "best-case" för Zen. Är lasten heltalsintensiv eller SIMD-vänligt tiltar det över till fördel Skylake SP.
Är problemet relativt sekventiellt eller att man har ett större problem många trådar samarbetet för att lösa, ja då är designen i Intels konsument-serie bäst lämpad.
Om det skulle visa sig att latensen är hög mellan I/O-die och compute-die i Zen2, ja vad ska man göra om man har ett problem som behöver göra många små I/O-transaktioner per tidsenhet där flaskhalsen är latens? Om så råkar bli fallet går bara att konstatera att Zen2 inte kommer ha sina starka sidor på de problem som behöver detta.
Skillnaden att säga åt kompilatorn "optimera för Zen" vs "optimera för Core2" är minimal, vad man kan förvänta sig är några enstaka procent upp/ned (inget ändras om Core2 ändras till t.ex. Skylake). Den typen av optimeringar blev relativt irrelevant just när CPUer fick "out-of-order" design, vilket för AMD hände med K5, Intel med Pentium Pro.
Det var relevant längre på konsoler, sista generationen med "in-order" CPUer var PS3/Xbox360. Nuvarande generation är "out-of-order" och gräver man lite med Google går att hitta intervjuer med spelutvecklare där de nämner just att de med Jaguar inte längre behövde (och egentligen längre inte kunde) handoptimera saker på det sätt som i praktiken krävdes innan. Det är en bra sak!
Finessen med out-of-order CPUer är att de gör de optimeringar man tidigare fick göra "för hand" helt dynamiskt, vilket i praktiken betyder att jobbet blir bättre gjort för finns information vid "run-time" som inte är tillgängligt för någon som försöker handoptimera up-front.
Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer