Sunny Cove in detail
Met Sunny Cove wil Intel zoals geschreven de prestaties van de de architectuur verder verbeteren. Zoals bekend zijn de prestaties van een processor in principe te omschrijven als de klokfrequentie maal het gemiddeld aantal instructies dat per klokslag kan worden verwerkt, de zogenaamde IPC (Instructions Per Clock). Wanneer er, zoals beschreven op pagina 1 van dit artikel, weinig rek meer zit in de klokfrequentie, moet de winst dus uit een verbeterde IPC komen. Dat is dan ook waar bij Sunny Cove de winst moet zitten – al wilde Intel hier nog geen percentages voor noemen.
De back-end van Sunny Cove vergeleken met die van Skylake
Ronak Singhal, chief core architect bij Intel en daarmee hoofdverantwoordelijk voor de architectuur van Intels high-performance cpu-cores, toonde bovenstaande blokschema’s van de backend van de Skylake architectuur en van de nieuwe Sunny Cove architectuur. Vergeet niet dat de Skylake architectuur ook de basis vormt voor Kaby Lake, Coffee Lake, Whiskey Lake en Amber Lake, oftewel alle 14 nm-processors sinds Broadwell. Een (klein) aantal van de verbeteringen in Sunny Cove zal overigens vermoedelijk ook al in de 10 nm Cannon Lake chip zitten, maar daarover heeft Intel nooit een uitgebreide presentatie gegeven en aangezien de chip in principe nooit echt op de markt zal komen, zal dat ook waarschijnlijk ook nooit meer gebeuren.
Singhal beperkte zich voor wat betreft echte details in zijn Sunny Cove preview tot de back-end, de laatste stappen van de CPU-pipeline, maar gaf aan dat in de front-end ook de nodige verbeteringen zijn doorgevoerd. Volgens Singhal is de prestatiewinst van Sunny Cove te danken aan het feit dat de architectuur dieper is (meer instructies kunnen tegelijkertijd in beeld zijn), breder is (meer instructies kunnen tegelijkertijd uitgevoerd worden) en bovenal slimmer is (lees: nieuwe algoritmes en slimmigheden om de verwerking van instructies te versnellen).
"Diepere" architectuur
Om met dieper te beginnen. Zoals bekend bevat iedere CPU-core meerdere execution units die instructies van bepaalde types kunnen uitvoeren. Om zo hoog mogelijke prestaties te behalen is het zaak om alle execution units zo veel mogelijk bezig te houden. Wanneer je programmacode simpelweg in de standaard volgorde uitvoert, heb je in de regel nooit voldoende variëteit in instructies om alle execution units gevuld te houden. Vandaar dat moderne processors instructies in geoptimaliseerde volgorde uitvoeren (out-of-order) om zo veel en zo vaak mogelijk combinaties van instructies gelijktijdig richting de execution units te kunnen sturen. Omdat er in programmacode vaak afhankelijkheden zijn van eerdere instructies (als dit, doe zus, anders zo…) moet een processorarchitectuur voor dergelijke vertakkingen vooraf inschatten welke programmapad het meest waarschijnlijk is, om instructies daarvan alvast te gaan verwerken. Dit is waar de branch predictor om de hoek komt kijken.
Als instructies in geoptimaliseerde volgorde uitgevoerd worden, moet de processor uiteraard wel de oorspronkelijke volgorde van instructies bijhouden om resultaten uiteindelijk in de juiste volgorde op te leveren. Deze oorspronkelijke volgorde wordt bijgehouden in de reorder buffer en die is volgens Singhal bij Sunny Cover aanzienlijk vergroot (al is niet duidelijk met hoeveel procent). Datzelfde geldt voor de reservation stations. In deze buffers worden instructies opgespaard om verwerkt te worden door de execution units en de load and store buffers, waarin benodigde data voor instructies c.q. resultaten van instructies worden bewaard. Het eindresultaat van deze aanpassingen: het blikveld van de cpu-core is vergroot; er kunnen meer instructies tegelijkertijd in verwerking zijn, waardoor de kans dat alle execution units op ieder moment in tijd bezig kunnen zijn, wordt vergroot. Om ervoor te zorgen dat de hoeveelheid in cache beschikbare data in verhouding blijft, is de L1 datacache verhoogd van 32 kB naar 48 kB en wordt de L2-cache verhoogd van (afhankelijk van de implementatie) 256/512 kB nu naar nog niet gedefinieerde hogere waardes.
Dankzij grotere buffers en grotere caches kan Sunny Cove meer instructies gelijktijdig in beeld houden, waardoor de execution units beter gevuld kunnen worden.
Bredere architectuur
Naast dieper is de architectuur ook breder gemaakt. Zoals je op de afbeelding bovenaan deze pagina kon zien, heeft iedere Skylake core 8 execution units. Dat aantal is bij Sunny Cove verhoogd naar 10 stuks. In theorie zou je dus kunnen zeggen dat bij een optimale mix van instructies een Sunny Cove core 25% sneller kan zijn. Nu zal het zelden voorkomen dat alle 10 de execution units gelijktijdig actief kunnen zijn, maar door verschillende EU’s meer functies te geven, zorgt Intel er ook nog eens voor dat er meer instructies parallel uitgevoerd kunnen worden. Zo zijn er nu twee store units in plaats van één voor het wegschrijven van data naar cache/geheugen, zijn de integer units flexibeler geworden (zo kunnen alle vier nu LEA-instructies uitvoeren, en zijn er nieuwe integerfuncties) en kunnen nu twee floating point units in plaats van één hiervan shuffle-instructies uitvoeren, die onder andere belangrijk zijn voor encryptie en compressie.
Het aantal execution units stijgt van 8 naar 10. Bestaande execution units krijgen meer functies. In het beste geval zorgt dit al voor 25% prestatiewinst.
Slimmere architectuur
Dan is er het aspect van het slimmer maken van de architectuur. We schreven al dat de branch predictor opnieuw flink verbeterd is, wat één onderdeel hier van is. Bovendien zijn de wachttijden om data uit L1-cache geheugen te halen flink verminderd, en zijn er nieuwe mogelijkheden, zoals het in één klokslag uitvoeren van delingen op integers.
Op veel vlakken is de nieuwe Sunny Cove architectuur ook slimmer.
Daar komt bij dat Sunny Cove diverse nieuwe instructies krijgt. Veel daarvan zijn voor het versnellen van cryptografie-algoritmes, belangrijk voor zaken als encryptie of blockchain. Twee voorbeelden van nieuwe instructies zijn een vector versie van de AES-NI instructies (waarmee er dus op meerdere stukken data tegelijkertijd AES-encryptie uitgevoerd kan worden) en nieuwe instructies om hashing volgens het SHA-algoritme te versnellen. Men toonde een live-demo van een nieuwe versie van 7Zip, die door Intel was voorzien van ondersteuning voor de nieuwste instructies - en daardoor data ruim 70% sneller kon versleutelen dan met de conventionele versie.
Sunny Cove krijgt verschillende nieuwe instructies, onder andere op het vlak van cryptografie.
Dankzij nieuwe instructie kan Sunny Cove (rechts) data ruim 70% sneller versleutelen dan de bestaande Intel architectuur (Kaby Lake).
Tussenpaus: Cascade Lake
Overigens gaf Singhal ook nog wat inzichten in wat we van Cascade Lake mogen verwachten, Intels op korte termijn verschijnende nieuwe (en als het goed is laatste) 14 nm generatie server-cpu’s. Deze processors krijgen een reeks nieuwe instructies die eerder bekend stonden als VNNI (Vector Neural Net Instructions) en inmiddels de marketingnaam DL Boost hebben gekregen. DL Boost moet ervoor zorgen dat AI-workloads sneller worden voltooid, door betere ondersteuning te bieden voor het parallel uitvoeren van instructies op Int8 en Int16 data. 8-bit integers beginnen langzaam de standaard te worden voor machine learning (geen wonder dat GPU-fabrikanten er ook steeds betere ondersteuning voor bieden) en Intel belooft voor dit datatype een drie keer hogere doorvoersnelheid in AI-workloads dan bij Skylake. Laat duidelijk zijn: deze nieuwe DL Boost functionaliteit zit ook in Sunny Cove.
Al wat eerder op de markt dan Sunny Cove: de Cascase Lake server-CPU’s zijn beter geschikt voor AI.