Relazione tra riga cache e pagina di memoria


9
  1. Se ho ragione, una pagina in una memoria principale è l'unità più piccola per il trasferimento di dati tra la memoria principale e un dispositivo di archiviazione esterno, come un disco rigido. Una linea cache di una memoria principale è l'unità più piccola per il trasferimento dei dati tra la memoria principale e le cache della CPU.

  2. Mi chiedo se una dimensione di pagina sia sempre o meglio essere un numero naturale di dimensioni della linea cache? Se la dimensione di una riga della cache è 64 byte e una dimensione della pagina della memoria è 4KB, ogni pagina contiene 4KB / 64 byte == 64 righe della cache.

  3. Una pagina e una linea cache sono entrambi oggetti fissi in memoria? Oppure sono solo blocchi contigui di una memoria di una certa dimensione, che possono iniziare e fluttuare ovunque nella memoria?

  4. È sempre che una riga della cache non può estendersi su più di una pagina, ovvero parte di una riga della cache si trova in una pagina e l'altra parte della riga della cache si trova in un'altra pagina?

Grazie.


2
Le risposte alle tue domande dipendono fortemente dall'architettura della CPU.
TMN,

Risposte:


8
  1. Una linea cache è l'unità più piccola con cui è possibile toccare la memoria fisica. Significato quando leggi / scrivi 1 byte, una riga di cache completa che lo contiene viene letta nella cache della cpu e riscritta. Si noti che anche le istruzioni che ignorano la cache per scrivere (istruzioni di streaming effimere) scrivono nelle dimensioni della riga della cache. A seconda della CPU, le dimensioni della linea della cache sono in genere 32/64/128 byte. Quando le pagine di memoria sono scritte su disco, sono scritte per intero. Questo accadrà quando la pressione della memoria è troppo alta o con processi di ibernazione (e possibilmente per altri usi). Saranno inoltre letti integralmente quando necessario di nuovo. Ciò è principalmente dovuto al fatto che il kernel non ha modo di sapere se la pagina è parzialmente o completamente utilizzata. Altre operazioni di lettura / scrittura su memoria esterna possono avere una granularità arbitraria (ad esempio: fwrite (..)).

  2. La dimensione della pagina dipende dalla CPU / GPU. Per la maggior parte delle CPU, le dimensioni della pagina saranno almeno 4KB e generalmente supporteranno un mix di 4KB / 64 KB / 2 MB / 4 MB / 16 MB / 1 GB (non necessariamente tutti supportati contemporaneamente). La dimensione sarà sempre una potenza di due.

  3. Sia una pagina che una riga della cache sono contigue e richiedono di essere allineate alle rispettive dimensioni. Una riga della cache da 64 byte è sempre allineata a 64 byte e una pagina da 2 MB è sempre allineata a 2 MB.

  4. A causa di # 3, una linea cache non può mai estendersi su 2 pagine poiché le dimensioni della pagina saranno sempre più grandi di una linea cache e saranno sempre un multiplo delle dimensioni di una linea cache.

Vedi questa eccellente fonte per una grande quantità di informazioni sulla memoria: http://lwn.net/Articles/250967/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.