Til yderligere information kan jeg sige, at L1 cachen ofte er opdelt.
Det er ikke alle CPU'er der har opdelt L1 cache, men din standard Pentium 1-4, Conroe, Pentium M, A64, K7 etc har en opdelt L1 cache.
L1 cache er normalt opdelt i 2 blokke, en blok til data, og en blok til instruktioner. Instruktionerne fortæller hvad der skal gøres, og data'en .. ja... det er tallene der skal regnes på.
L2 cache er normalt ikke delt op på sådan en måde. Den indeholder som regel både data og instruktioner i et virvar (men hæng mig ikke op på det, muligvis indeholder L2 kun data, min viden er begrænset på dette område).
L2 er dog "opdelt" på nogle dual core CPU'er, såsom Pentium D og A64. Det er fordi fabrikanterne har klistret 2 kerner sammen, hvor den totale L2 cache så bliver fordoblet. Opdelingen betyder rent fysisk at L2 cachen på Kerne1 har hurtigere tilgang til kerne1 end til kerne2. Fysisk betyder det også at hver kerne har sin egen L2, og kan ikke dynamisk ændre hvor meget L2 hver kerne skal bruge.
Conroe derimod har en forenet L2 cache, hvor begge kerner kan få fat i L2 cachen, og dynamisk bliver der tildelt hvor meget af L2 hver kerne har fat i. Det giver bedre performance i single-trådede applikationer hvor den ene aktive kerne kan tage hele L2 cachen til sig selv, og den anden kerne står inaktiv men berøver ikke L2 plads. Det er som sådan ikke noget problem for A64, langt de fleste applikationer har ikke noget større L2 behov end 1MB. Men i teorien er det en fordel for enkelt-trådede applikationer at have en dynamisk L2.
Jeg håber det også gav dig lidt ny info.
Mvh. Uffe