L1- versus L2- versus L3-cache: capaciteit, latentie en delen
L1-, L2- en L3-cache vormen een meertrapscache, gerangschikt naar afstand tot de CPU-core: hoe dichterbij, hoe kleiner en sneller; hoe verder weg, hoe groter en trager. In typische pc- en server-CPU's is L1 enkele tientallen KB met enkele cycli, L2 enkele honderden KB tot enkele MB met tien tot twintig cycli en L3 enkele MB tot enkele tientallen MB met enkele tientallen cycli. L1 en L2 zijn meestal per core aanwezig, L3 wordt door meerdere cores gedeeld. Een toegang tot het DRAM-hoofdgeheugen kost honderden cycli, dus deze hiërarchie moet zoveel mogelijk toegangen opvangen.
| Kenmerk | L1-cache | L2-cache | L3-cache |
|---|---|---|---|
| Relatie met de core | Eigen per core | Meestal eigen per core. Sommige ontwerpen delen hem tussen enkele cores | Gedeeld door meerdere cores (de hele chip of een cluster van cores) |
| Capaciteit (typisch bereik voor pc- en server-CPU's) | Ongeveer 32 tot 64 KB, elk voor instructies en voor data | Ongeveer 256 KB tot enkele MB per core | Enkele MB tot enkele tientallen MB voor de hele chip |
| Latentie (typisch bereik) | Ongeveer 3 tot 5 cycli | Ongeveer 10 tot 20 cycli | Ongeveer 30 tot 70 cycli. Langer voor delen verder van de core |
| Instructies en data | Gescheiden (I-cache en D-cache) | Gezamenlijk (unified cache) | Gezamenlijk (unified cache) |
| Ontwerpprioriteit | Korte hittijd. Wordt elke cyclus in de pipeline gebruikt | Missers van L1 opvangen en de miss penalty klein houden | Toegangen tot het hoofdgeheugen beperken en data tussen cores delen |
| Bestemming bij een misser | L2 | L3 | Hoofdgeheugen (DRAM) |
| Adressering | Vaak virtueel geïndexeerd, fysiek getagd (VIPT) | Fysieke adressen | Fysieke adressen |
| Inclusiviteit | Hoogste niveau. Of de inhoud in lagere niveaus zit, hangt af van het beleid van die niveaus | Afhankelijk van het ontwerp, bijvoorbeeld inclusief of niet-inclusief | Een inclusieve L3 maakt het gemakkelijker om coherentiecontroles te beperken. Er bestaan ook exclusieve ontwerpen zonder duplicaten en niet-inclusieve ontwerpen |
| Fysieke plaats | In de core, vlak naast de uitvoeringseenheden | Net buiten de core, als onderdeel van de core geplaatst | Vaak verdeeld in slices per core, verbonden via een ring- of meshnetwerk |
| Lijngrootte | Meestal 64 bytes | Meestal 64 bytes | Meestal 64 bytes |
De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.