Direkte mapping er et cachehukommelsesdesign, hvor hver hukommelsesadresse er afbildet til en specifik cachelinje. Det betyder, at der kun er én mulig cacheplacering for hver hukommelsesadresse. Direkte kortlægning er enkel at implementere og har lav hardware-overhead, men det kan resultere i cache-konflikter, hvis flere hukommelsesadresser knyttes til den samme cache-linje.
For at beregne cachelinjeindekset for en given hukommelsesadresse divideres hukommelsesadressen med cachelinjestørrelsen. Resten af denne division er cache-linjeindekset. For eksempel, hvis hukommelsesadressen er 0x100, og cachelinjestørrelsen er 16 bytes, så er cachelinjeindekset 4.
Den direkte kortlægningsfunktion knytter en hukommelsesadresse til et cache-linjeindeks i henhold til følgende formel:
```
cacheLineIndex =memoryAddress mod cacheLineSize
```
Hvor:
* cacheLineIndex er cache-linjeindekset
* hukommelsesadresse er hukommelsesadressen
* cacheLineSize er cache-linjestørrelsen
Her er et eksempel på, hvordan direkte kortlægning fungerer. Overvej en cache med en cache-linjestørrelse på 16 bytes. Følgende tabel viser de hukommelsesadresser, der er knyttet til hvert cache-linjeindeks:
| Cachelinjeindeks | Hukommelsesadresser |
|---|---|
| 0 | 0x000, 0x010, 0x020, ..., 0x0F0 |
| 1 | 0x100, 0x110, 0x120, ..., 0x1F0 |
| 2 | 0x200, 0x210, 0x220, ..., 0x2F0 |
| 3 | 0x300, 0x310, 0x320, ..., 0x3F0 |
| ... | ... |
Lad os nu sige, at vi vil have adgang til hukommelsesadressen 0x123. For at beregne cachelinjeindekset for denne adresse dividerer vi 0x123 med 16. Resten af denne division er 3. Derfor er cachelinjeindekset for hukommelsesadressen 0x123 3.
Ifølge tabellen ovenfor er cache-linjeindekset 3 afbildet til hukommelsesadresserne 0x300, 0x310, 0x320, ..., 0x3F0. Derfor er hukommelsesadressen 0x123 afbildet til cachelinjen, der indeholder hukommelsesadresserne 0x300, 0x310, 0x320, ..., 0x3F0.