Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Programmazione >> C /C + + Programming >> .

Cos'è la mappatura e la funzione diretta?

La mappatura diretta è un progetto di memoria cache in cui ciascun indirizzo di memoria è mappato su una linea di cache specifica. Ciò significa che esiste una sola possibile posizione nella cache per ciascun indirizzo di memoria. La mappatura diretta è semplice da implementare e presenta un sovraccarico hardware basso, ma può causare conflitti di cache se più indirizzi di memoria vengono mappati sulla stessa riga di cache.

Per calcolare l'indice della linea di cache per un dato indirizzo di memoria, l'indirizzo di memoria viene diviso per la dimensione della linea di cache. Il resto di questa divisione è l'indice della riga della cache. Ad esempio, se l'indirizzo della memoria è 0x100 e la dimensione della riga della cache è 16 byte, l'indice della riga della cache sarà 4.

La funzione di mappatura diretta mappa un indirizzo di memoria su un indice di riga della cache secondo la seguente formula:

```

cacheLineIndex =memoryAddress mod cacheLineSize

```

Dove:

* cacheLineIndex è l'indice della riga della cache

* Indirizzo memoria è l'indirizzo di memoria

* cacheLineSize è la dimensione della riga della cache

Ecco un esempio di come funziona la mappatura diretta. Considera una cache con una dimensione della riga di cache di 16 byte. La tabella seguente mostra gli indirizzi di memoria associati a ciascun indice di riga della cache:

| Indice della riga della cache | Indirizzi di memoria |

|---|---|

| 0| 0x000, 0x010, 0x020, ..., 0x0F0 |

| 1| 0x100, 0x110, 0x120, ..., 0x1F0 |

| 2| 0x200, 0x210, 0x220, ..., 0x2F0 |

| 3| 0x300, 0x310, 0x320, ..., 0x3F0 |

| ... | ... |

Ora, diciamo che vogliamo accedere all'indirizzo di memoria 0x123. Per calcolare l'indice della linea di cache per questo indirizzo, dividiamo 0x123 per 16. Il resto di questa divisione è 3. Pertanto, l'indice della linea di cache per l'indirizzo di memoria 0x123 è 3.

Secondo la tabella sopra, l'indice della riga di cache 3 è mappato agli indirizzi di memoria 0x300, 0x310, 0x320, ..., 0x3F0. Pertanto, l'indirizzo di memoria 0x123 viene mappato sulla riga della cache che contiene gli indirizzi di memoria 0x300, 0x310, 0x320, ..., 0x3F0.

 

Programmazione © www.354353.com