Indirizzo di memoria

Da Wikipedia, l'enciclopedia libera.

In informatica, un indirizzo di memoria è un identificatore univoco della posizione, locazione o cella di memoria sulla quale il processore o un'altra periferica possono accedere per operazioni di lettura o scrittura, ad esempio salvare un dato per poterlo recuperare in seguito. Nell'architettura di un processore basato su registri il registro MAR (Memory Address Register) è dedicato all'indirizzo di memoria cui il processore punta per accedere alla rispettiva cella di memoria.

Descrizione[modifica | modifica sorgente]

Nell' Indirizzamento a byte ogni indirizzo identifica un singolo byte di memoria. Dati troppo grandi per essere contenuti in un singolo byte possono risiedere in più byte occupando una sequenza di indirizzi consecutivi. Alcuni processori furono costruiti per gestire l' indirizzamento a word, così da rendere la più piccola unità di spazio allocabile una word anziché un byte. Un esempio fu il Texas Instruments TMS9900 e il National Semiconductor IMP-16, entrambi i quali utilizzavano word di 16 bit.

Sia la memoria virtuale che la memoria fisica usano l'indirizzamento di memoria. Una delle differenze riguardanti l'indirizzamento di memoria tra memoria virtuale e memoria fisica è il fatto che non necessariamente i due modi di gestire gli indirizzi siano uguali: ad esempio la memoria virtuale potrebbe contenere il doppio di indirizzi della memoria fisica. Per queste ragioni qualora vi sia scambio di dati tra le due memorie è necessaria una conversione degli indirizzi.

Per facilitare il fluire dei dati contenuti nelle memorie, il sistema operativo solitamente divide la memoria in pagine, ognuna delle quali contiene un numero predefinito di indirizzi di memoria.

La conversione degli indirizzi non è dipendente dal software, e permette ai programmi in esecuzione di operare in uguale maniera sia che i dati siano contenuti nella memoria fisica, sia che i dati risiedano nella memoria virtuale, lasciando al sistema operativo la libertà di allocare e riallocare la memoria quando necessario per gestire efficacemente le memorie.

Poiché le dimensioni della memoria virtuale possono essere decisamente maggiori della quantità di memoria fisica (RAM) disponibile nel sistema, il sistema operativo può utilizzare un file di paging e/o un file di swap per spostare temporaneamente alcune pagine di memoria alla memoria secondaria (Hard disk) quando esse non siano utilizzate o quando il processo che ne usufruisce è in uno stato di inattività.

Molto spesso, quando facciamo riferimento alla dimensione della word di un computer moderno, definiamo allo stesso tempo la dimensione degli indirizzi di memoria virtuale su quel computer. Ad esempio, un processore detto "a 32 bit" solitamente tratta gli indirizzi di memoria come degli integer di 32-bit.

Un indirizzamento a 32 bit permette al computer di indirizzare 2^{32} = 4,294,967,296 byte di memoria (o 4 gigabits).

Tuttavia, i computer più datati spesso supportavano indirizzi di memoria più grandi della loro dimensione della word, altrimenti la loro capacità di memoria sarebbe stata terribilmente ridotta. Per esempio il 6502 a 8-bit supportava indirizzi di 16-bit, il processore Intel 8086 a 16-bit gestiva indirizzi a 20-bit permettendo così di avere accesso a 1 mebibyte piuttosto che 64 kibibytes

Un computer il cui indirizzamento è a 64-bit può gestire 2^{64} bytes (o 16 exbibytes), una dimensione che ad oggi 2011 viene considerata praticamente illimitata.

A seconda dell'architettura sottostante, la performance di un computer può essere peggiorata da un accesso alla memoria non simmetrico. Per esemplificare, un computer a 16-bit con un bus di memoria a 16-bit come un Intel 8086, generalmente lavora in maniera più efficace se il dato inizia su un indirizzo pari: in questo modo prelevare un valore di 16-bit richiede un singolo accesso alla memoria. Nel caso contrario, se il dato iniziasse su un indirizzo dispari, il processore può avere la necessità di effettuare l'accesso alla memoria due volte con un dispendio di tempo ulteriore.

Voci correlate[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica