Para calcular el índice de línea de caché para una dirección de memoria determinada, la dirección de memoria se divide por el tamaño de la línea de caché. El resto de esta división es el índice de línea de caché. Por ejemplo, si la dirección de memoria es 0x100 y el tamaño de la línea de caché es 16 bytes, entonces el índice de la línea de caché es 4.
La función de mapeo directo mapea una dirección de memoria a un índice de línea de caché de acuerdo con la siguiente fórmula:
```
cacheLineIndex =dirección de memoria mod cacheLineSize
```
Dónde:
* índice de línea de caché es el índice de la línea de caché
* dirección de memoria es la dirección de memoria
* tamaño de línea de caché es el tamaño de la línea de caché
A continuación se muestra un ejemplo de cómo funciona el mapeo directo. Considere un caché con un tamaño de línea de caché de 16 bytes. La siguiente tabla muestra las direcciones de memoria que se asignan a cada índice de línea de caché:
| Índice de línea de caché | Direcciones de memoria |
|---|---|
| 0 | 0x000, 0x010, 0x020, ..., 0x0F0 |
| 1 | 0x100, 0x110, 0x120, ..., 0x1F0 |
| 2 | 0x200, 0x210, 0x220, ..., 0x2F0 |
| 3 | 0x300, 0x310, 0x320, ..., 0x3F0 |
| ... | ... |
Ahora, digamos que queremos acceder a la dirección de memoria 0x123. Para calcular el índice de línea de caché para esta dirección, dividimos 0x123 entre 16. El resto de esta división es 3. Por lo tanto, el índice de línea de caché para la dirección de memoria 0x123 es 3.
Según la tabla anterior, el índice 3 de la línea de caché se asigna a las direcciones de memoria 0x300, 0x310, 0x320, ..., 0x3F0. Por lo tanto, la dirección de memoria 0x123 se asigna a la línea de caché que contiene las direcciones de memoria 0x300, 0x310, 0x320, ..., 0x3F0.