Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie

Door Wouter Tinus

Serverduel: Xeon Woodcrest vs. Opteron Socket F

De Core-architectuur (1)

Voor we bekijken wat Core allemaal aan boord heeft, is het zinvol om eerst te bespreken wat het precies is. Volgens Intel is het een mix van de beste eigenschappen van Pentium 4 en Pentium M, maar er is niet veel technische kennis voor nodig om te zien dat de gelijkenis met laatstgenoemde veel groter is dan die met eerstgenoemde. Feitelijk zijn alleen features (zoals 64-bit extensies) van Netburst overgenomen, maar is er van het ontwerp geen spaan heel gelaten. Of het dan wel een Pentium M genoemd kan worden hangt af van het niveau waarop gekeken wordt. Hij is door hetzelfde team ontworpen en uit de eigenschappen blijkt duidelijk dat de architecten hun ervaring met eerdere projecten niet vergeten zijn. De filosofie is dus onmiskenbaar die van de eerdere mobiele chips, maar wie iets dichterbij kijkt komt echter snel genoeg een aantal ingrijpende nieuwe features tegen, die voldoende zijn om van een volledig nieuw ontwerp te kunnen spreken. De nieuwe features zijn door Intel grofweg verdeeld in vijf categorieën.

* Wide Dynamic Execution

Core is gebouwd om tot vier instructies per klokcyclus te kunnen decoderen, uitvoeren en verwerken. Andere x86-chips zoals de Pentium 4, Pentium M en Athlon 64 gaan maximaal tot drie. Hoewel het in de praktijk erg moeilijk is om binnen één thread instructies te vinden die volledig onafhankelijk van elkaar uitgevoerd kunnen worden, is iedere verbetering van het gemiddelde natuurlijk welkom. Om de effectiviteit verder te verhogen doet Core aan 'fusion' van instructies: als twee opdrachten bij elkaar horen zullen ze door de hardware aan elkaar gesmolten worden. Dit verandert niets aan de hoeveelheid werk die uitgevoerd moet worden, maar zorgt er wel voor dat er iets efficiënter gewerkt kan worden, omdat er minder interne boekhouding nodig is.

Het koppelen vindt plaats op twee niveaus: op de interne instructieset van de processor (microfusion) en de externe instructieset (macrofusion). De eerste vorm werd ook al gebruikt door de Pentium M, maar is voor Core verbeterd om meer combinaties mogelijk te maken. Volgens Intel zorgt microfusion ervoor dat de processor intern 10% minder opdrachten hoeft te verwerken. Macrofusion werkt direct op de x86-opdrachten die binnenkomen en elimineert daar overbodige complexiteit, bijvoorbeeld door losse instructies 'compare' en 'jump' samen te voegen tot één nieuwe 'compare and jump'-instructie. Opvallend is dat macrofusion niet wordt gebruikt in de 64-bit-modus, mogelijk omdat er vanuit gegaan wordt dat moderne compilers überhaupt geen overbodige instructies meer genereren.

Core: Wide Dynamic Execution

* Smart Memory Access

Een van de meest innovatieve nieuwe features in de Core-architectuur te vinden is Memory Disambiguation. Om de correcte uitvoer van een stuk programma te garanderen moeten alle instructies in de juiste volgorde afgehandeld worden. Of - beter gezegd - het moet lijken alsof alle instructies in de juiste volgorde afgehandeld worden. Er zijn namelijk al jaren processors die 'stiekem' in een andere volgorde kunnen werken om zo betere prestaties te leveren. De eerste x86-chips die dat principe toepasten waren de K5 van AMD en de Intel Pentium Pro. Voor deze zogenaamde OoOE-ontwerpen is het echter van levensbelang om de schijn van sequentiële verwerking hoog te houden. Het is immers op zijn zachts gezegd onwenselijk dat een processor in zijn enthousiasme om instructies uit te voeren gaat werken met data die eigenlijk eerst nog gewijzigd moest worden.

In de praktijk is het bij lange na niet nodig om álle lees- en schrijfacties in de exacte volgorde van het programma uit te voeren. Een truc die Intel eerder heeft toegepast (en AMD ook in de K8L gaat gebruiken) is om leesacties alvast uit te voeren voor ze eigenlijk aan de beurt zijn, zodat de data sneller beschikbaar is. Schrijfacties gooien echter nog steeds roet in het eten: als er ook maar ergens een store-instructie in de pipeline zit waarvan het doelwit onbekend is, kan de processor niet het risico nemen om ondertussen iets te lezen. Programmeurs en compilers vermijden het wegschrijven en vervolgens weer inlezen van dezelfde data zo veel mogelijk (omdat het gewoon niet efficiënt is), maar een processor moet nu eenmaal met álle code juiste resultaten opleveren, ook al is deze niet optimaal. Dit was tot nu toe meer dan voldoende reden om leesacties te blokkeren zolang niet alle voorgaande schrijfacties waren afgehandeld.

De Core-architectuur lost dit probleem op met de zogenaamde Memory Disambiguator. Deze voorspelt het doelwit van nog uit te voeren schrijfacties en laat alle leesopdrachten die buiten de gevarenzone vallen toch voorgaan. Dat betekent dat instructies gemiddeld minder lang op data hoeven te wachten en de chip meer werk in dezelfde tijd kan verrichten. Voorspellingen van de Disambiguator zouden meer dan 90% nauwkeurig zijn, maar een kleine 10% missers betekent nog steeds dat de Core regelmatig met verkeerde data aan de slag gaat. Zodra dit wordt opgemerkt (wat overigens altijd gebeurt voor het resultaat permanent wordt) begint de verwerking gewoon weer opnieuw. Het systeem is dus enigzins te vergelijken met branch prediction, waarbij gegokt wordt naar welke tak van een if-constructie er gesprongen moet worden. Meestal gaat het goed en wordt er tijd bespaard, maar soms gaat het ook fout en kost het extra moeite om de schade van de verkeerde gok te herstellen. Het is natuurlijk wel de bedoeling dat er netto winst mee gemaakt wordt, dus als de Disambiguator te veel fouten maakt in een bepaalde thread wordt hij automatisch uitgeschakeld.

Core: Memory Disambiguation

Wat vind je van dit artikel?

Geef je mening in het Geachte Redactie-forum.

Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True