Oude en nieuwe cache
Cache is en blijft een heel belangrijk onderdeel van de processor. Op de vorige pagina werd maar weer eens duidelijk dan een grote en snelle data-cache onontbeerlijk is. Net als bij de Pentium III heeft de Pentium 4 in eerste instantie 256 kb L2-cache. Deze is wel via een 256 bits verbinding met de rest van de processor verbonden en de cache is maar liefst 8-way associative. Dat houdt in dat de cache acht maal tegelijkertijd aangesproken kan worden.
Een geheel nieuw type cache, die de performance van de Pentium 4 zeer bevordert, is de zogenaamde ‘Advanced Transfer Cache’. Om de werking hiervan te begrijpen moeten we weer wat dieper in de werking van een processor duiken.
Zoals we weten worden processors voor de PC’s zoals wij die kennen aangestuurd door de zogenaamde x86 instructieset plus enkele uitbreidingen daarvan. Intern werkt een processor echter niet met die x86 instructies, maar met andere, veel kleinere instructies, de zogenaamde ‘micro-Ops’ of uOps. Een complexe x86 instructie wordt door de processor omgezet in meerdere uOps, die dan eenvoudig
verwerkt kunnen worden. De reden dat dit gedaan wordt is het standaard
'CISC versus RISC' verhaal: het blijkt makkelijker te zijn om hoge snelheden te behalen bij processors die veel eenvoudige instructies (de uOps dus) moeten verwerken dan processors die minder, maar wel zeer complexe instructies (dus bijvoorbeeld x86 instructies) moeten verwerken. Aangezien processor wel nog steeds door x86 instructies aangestuurd moeten worden (om compatibiliteits-redenen natuurlijk) worden deze in processor zelf omgezet naar uOps, waar de processor makkelijk mee aan het werk kan. Normaal gesproken worden x86 instructies op het moment dat ze verwerkt moeten worden,
omgezet in uOps. Bij de Pentium 4 werkt het allemaal iets anders.
Op het moment dat x86 instructies de Pentium 4 binnenkomen worden ze meteen omgezet naar uOps. Er wordt dus niet gewacht totdat de instructie ook daadwerkelijk uitgevoerd
wordt. Deze uOps worden vervolgens in de zogenaamde Transfer Cache geplaatst. Pas daarna worden de instructies
in de optimale (meest efficiente) volgorde geplaatst om verwerkt te worden. Het voordeel van de Transfer Cache is dat als je vaker dezelfde x86-instructie krijgt, dat deze dan niet telkens weer opnieuw gedecodeerd hoeft te worden als de gedecodeerde versie nog in de Transfer Cache staat! De Transfer Cache is lekker ruim en heeft plaats voor maar
liefst 12.000 uOps.
Vooral bij applicaties waar de processor vaak dezelfde handelingen moet uitvoeren is de performance-stijging als gevolg van de Trace Cache goed te merken. Dit is wederom een reden waarom de Pentium 4 erg goed presteert bij multimedia programmatuur en minder goed bij office programmatuur. Een MPEG-file coderen of decoderen is namelijk niets anders dan de hele tijd dezelfde handelingen verrichten.