Home

cachevriendelijk

Cachevriendelijk verwijst naar software en data-layout die zodanig zijn ontworpen dat ze veelvuldig gebruikmaken van de lokale geheugenhiërarchie van moderne processors. Doel is om cachemisses te verkleinen en de uitvoertijd te verkorten door efficiënter gebruik te maken van L1, L2 en L3 caches.

De kern van cachevriendelijkheid bestaat uit begrip van lokalisatie van referenties: temporele lokalisatie (veel gebruikte data

Praktische richtlijnen omvatten: iterateer in volgorde over contige data (stride-1), gebruik array-gebaseerde structuren waar mogelijk, vermijd

Cachevriendelijkheid is een onderdeel van performance engineering. Het vereist vaak afwegingen tussen simpliciteit en optimalisatie, en

wordt
opnieuw
gebruikt
binnen
korte
tijd)
en
ruimtelijke
lokalisatie
(ongeveer
aangrenzende
data
wordt
samen
verwerkt).
Data
die
contigu
uit
geheugen
wordt
gelezen,
bijvoorbeeld
in
arrays,
is
doorgaans
beter
cachevriendelijk
dan
losse
knopen
in
een
gekoppelde
lijst.
Daarnaast
is
de
geheugenlay-out
van
structuren
van
arrays
vaak
gunstiger
dan
traditionele
arrays
van
pointers.
ongestructureerde
geheugenreferenties
en
veel
pointerchasing,
en
gebruik
tiling
of
blocking
bij
grote
matrices
om
caches
te
betreden
in
behapbare
blokken.
Het
toepassen
van
prefetching
hints
kan
helpen,
maar
levert
geen
garantie
en
maakt
code
vaak
minder
portabel.
Ook
data-uitvoer
en
-invoer
moet
zodanig
gepland
worden
dat
write
buffers
en
cache
coherency
niet
onnodig
belasten.
kan
per
platform
variëren
door
verschillen
in
cachegrootte
en
-hiërarchie.
Verwante
concepten
omvatten
cache-oblivious
en
cache-aware
algoritmen,
die
proberen
optimalisaties
te
bereiken
ongeacht
de
specifieke
cache-indelingen.