Com'è fatta la memoria centrale?

Matnice
Ciao, non riesco a capire come è "strutturata" la memoria centrale. Prendendiamo per esempio un elaboratore con architettura di Von Neuman a 16 bit. Se ci sono 1024 parole da 16 bit ciascuna e ogni parola ha un indrizzo da 0 a 1023, il testo mi dice che ci saranno 10 bit del registro degli indirizzi, perchè $log_2 1024=10$, ma io non capisco! Altro dubbio, parola equivale a cella?
Grazie in anticipo :)

Risposte
Sherlock.h
Mmm, ci provo.

Allora la memoria centrale può essere schematizzata in questo modo:
[img]https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRvPyfDx3SsaoqNLlnooUfZw8XTCf25rCj0gXxkqRWa0O8IrNWH[/img]

Quelle righe sono le celle di memoria. La dimensione delle stesse è di 16 bit, nel tuo esempio.
Si ha la necessità di poter distinguere ogni cella dalle altre, no? Altrimenti come potremmo stabilire con precisione qual è la cella su cui poi bisogna leggere/scrivere?
Beh, se hai 1024 celle di memoria come nel tuo esempio hai bisogno proprio di un numero almeno pari a [tex]log_2 1024 = 10[/tex] cifre binarie per poter creare 1024 sequenze diverse di successioni di cifre binarie, così da poter associare ad ogni singola sequenza di 10 cifre binarie una cella di memoria diversa. In altre parole hai bisogno di almeno 10 cifre per poter creare una sequenza univoca per ogni singola cella delle tue 1024. Se ne utilizzi una in meno puoi arrivare massimo ad associare una sequenza di cifre binarie univoca solo per 512 celle di memoria perchè [tex]2^9=512[/tex], nulla, teoricamente, ti vieterebbe di utilizzare 11 cifre, con le quali puoi identificare univocamente ben [tex]2^11=2048[/tex] celle di memoria.

Prendi come esempio la sequenza di 10 cifre binarie "0000000000", la associo ad una cella, quindi faccio in modo che essa costituisca il suo indirizzo, in questo caso la cella con indirizzo "0000000000" è la prima cella di memoria sulle 1024 totali (per semplicità credo, nulla mi vieterebbe di associare a questa combinazione un'altra qualsiasi delle altre celle in memoria suppongo).

Se invece fosse "1100100110" l'indirizzo della cella in questione, mi riferirei alla cella numero 806 su 1024, con
"1111111111" mi riferirei all'ultima cella di memoria, alla numero 1023(sempre per semplicità).

"Se ci sono 1024 parole da 16 bit ciascuna e ogni parola ha un indrizzo da 0 a 1023...."
Beh qui a mio avviso si evince la tua incomprensione. C'è una indirizzo formato da 10 cifre binarie (nel tuo caso) per ogni singola cella di memoria, questo indirizzo è univoco, appartiene cioè a quella cella e ad essa soltanto, e serve per distinguerla da ogni altra cella.

A quanto pare sono stato leggermente ridondante, in ogni caso aspetta qualcuno di più esperto :)

Matnice
Ho capito! Il problema di fondo era il bit, immaginavo il bit come una casella con due numeri 0 e 1; invece un bit può assumere o 0 o 1. Grazie mille :D

Sherlock.h
E giustamente i conti non tornavano :) Figurati, di nulla. Anzi, ti ringrazio io, mi hai permesso di "ripassare".

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.