Cachefärgning
Inom datavetenskap är cachefärgning (även känd som sidfärgning ) processen att försöka tilldela lediga sidor som är sammanhängande ur CPU-cachens synvinkel, för att maximera det totala antalet sidor som cachelagras av processorn . Cachefärgning används vanligtvis av dynamisk minnesallokeringskod på låg nivå i operativsystemet när virtuellt minne mappas till fysiskt minne . Ett virtuellt minnesundersystem som saknar cachefärgning är mindre deterministiskt med avseende på cacheprestanda, eftersom skillnader i sidallokering från ett program som körs till nästa kan leda till stora skillnader i programprestanda.
Detaljer om verksamheten
En fysiskt indexerad CPU-cache är utformad så att adresser i angränsande fysiska minnesblock tar olika positioner ("cache-linjer") i cachen, men så är inte fallet när det gäller virtuellt minne; när praktiskt taget angränsande men inte fysiskt angränsande minnesblock tilldelas, kan de potentiellt båda ta samma position i cachen. Färgläggning är en teknik som implementeras i programvara för minneshantering, som löser detta problem genom att välja sidor som inte kämpar med grannsidor.
Fysiska minnessidor är "färgade" så att sidor med olika "färger" har olika positioner i CPU-cacheminnet. Vid allokering av sekventiella sidor i virtuellt minne för processer, samlar kärnan in sidor med olika "färger" och mappar dem till det virtuella minnet. På detta sätt tävlar sekventiella sidor i virtuellt minne inte om samma cache-rad.
Genomföranden
Denna kod lägger till en betydande mängd komplexitet till det virtuella minnesallokeringsundersystemet, men resultatet är väl värt ansträngningen. Sidfärgning gör virtuellt minne lika deterministiskt som fysiskt minne med avseende på cacheprestanda. Sidfärgning används i operativsystem som Solaris , FreeBSD , NetBSD och Windows NT .
externa länkar
- " Sidplaceringsalgoritmer för stora realindexerade cacher, " av RE Kessler, Mark D. Hill, University of Wisconsin, 1992.
- " Colorable Memory ," av Jochen Liedtke , IBM TJ Watson Center, nov. 1996.
- " 缓存着色技术 ," av Maray, CSDN Technological Blog, 2008.