Att designa en bra cache är nog det absolut svåraste delen i en modern CPU. Man måste bl.a. balansera storlek mot latens mot klockfrekvens, alla utom Intel verkar sikta mot ganska stora L2-cacher något som leder till sämre latens. Med tanke på att Intel leder IPC-racet överlägset (bara POWER7 som är nära) så verkar det som liten L2 + stor L3 verkar vara optimalt.
Det som är lite förvånande är hur Intel lyckas ha så pass låg latens även mot sin L3. Latensen mot L3 i Piledriver/Bulldozer är faktiskt så hög så L3-cachen nära nog är värdelös. Jämför prestanda mellan Vishera och Trinity, är i princip ingen skillnad när de kör på samma frekvens trots att Trinity helt saknar L3. Faktum är att L3-cachen i sig medför att latensen mot RAM ökar, så Trinity har en fördel över Vishera i att latens mot RAM är lägre.
Innan man är allt för kritiskt mot AMD så ska man inse att runt 20 cyklers latens mot L2 är ganska normalt, alla moderna ARM CPUer ligger på strax över 20 cyklers latens, AMD har detta både på Piledriver och Bobcat och även Oracles SPARC T4/T5 ligger på 18 cykler. De enda som har riktigt låg latens mot L2 är Intel (sedan Nehalem) och IBM (POWER7), men i båda fallen har man väldigt små L2-cache.
IPC kommer av mycket mer än bara cachen även om låg latens mot cache är ett krav om man ska nå riktigt hög IPC. Dagens AMD CPUer har nog större problem än L2 latens att fixa först, t.ex. så har varje CPU-tråd i Haswell backad av 4st ALU-enheter och 4st minnesenheter medan varje CPU-tråd i Piledriver/Bulldozer bara har 2 ALU och 2 minnesenheter.
Problemet med hela modul-designen är att man får bra prestanda när båda CPU-trådarna används men allt för mycket är hårt bundet till en specifik CPU-tråd så enkeltrådprestanda blir väldigt lidande. Med HT har man, i genomsnitt, lika mycket ALU- och minnesenheter per CPU-tråd när båda trådarna jobbar och när bara en tråd jobbar kan den använda alla resurser. Resultatet blir att Intels CPUer utför ungefär lika mycket som en modul för AMD när båda trådarna används men Intels design är långt mycket snabbar när bara en tråd används.
Gissar att AMD missbedömde ganska grovt hur många transistorer man sparade på att dela flyttalsdelen. I Steamroller ska ju varje CPU-tråd även ha separat prefetcher och avkodare, så då kommer man ju spara ännu färre transistorer på att två CPU-trådar delar vissa saker inom en modul. AMD var ju även tvungna att skala tillbaka på ALU och minnesenheter när man designade Bulldozer, Stars hade 3 ALU och 3 minnesenheter per CPU-kärna mot de 2/2 som Bulldozer/Piledriver har.
Det "positiva" (om man ska kalla det så) för AMD är att Intel kommer inte kunna öka IPC speciellt mycket mer. Haswell har redan högst IPC av alla existerade CPUer och simuleringar med hypotetiska CPUer som har oändligt stora interna buffers och massor med ALU/minnes-enheter visar att det aldrig kommer gå att komma över en IPC på 2.5-3.0, Haswell ligger redan i nedre delen av detta spektrum...