2010-04-27 15 views
18

Qualcuno può spiegare qual è la differenza tra Word e Byte indirizzabile? Com'è collegato alle dimensioni della memoria, ecc.?Differenza tra indirizzabile parola e byte indirizzabili

+2

Si prega di consultare [schemi byte-indirizzamento di parole] (http://tams-www.informatik.uni-hamburg.de/applets/ Ade/webdemos/50-rtlib/40-memory/byte-vs-word.html):> Una dimostrazione di schemi di indirizzamento byte-e word-based. –

risposta

25

Un byte è un'unità di memoria per l'archiviazione e un chip di memoria è piena di tali byte. Le unità di memoria sono indirizzabili. Questo è l'unico modo in cui possiamo usare la memoria.

In memoria realtà è solo indirizzabile di byte. Significa che un indirizzo binario punta sempre a un solo byte solo. Una parola è solo un gruppo di byte – 2, 4, 8 a seconda della dimensione del bus dati della CPU.


per capire il funzionamento della memoria completamente, è necessario avere familiarità con i vari registri della CPU e le porte della memoria della RAM. Presumo che tu conosca il significato di 'MAR memory address register', 'MDR memory data register', 'PC program counter register', 'MBR memory buffer register'. La RAM ha due porte di memoria: 32 bit per dati/indirizzi, 8 bit per OPCODE.

Supponiamo CPU vuole leggere una parola (esempio 4 byte) dall'indirizzo xyz in poi. La CPU metterebbe l'indirizzo sul MAR, invia un segnale di lettura della memoria al chip del controller di memoria. Alla ricezione dell'indirizzo e del segnale di lettura, il controller di memoria collegava il bus dati alla porta a 32 bit e 4 byte a partire dall'indirizzo xyz fluivano fuori dalla porta verso l'MDR.

Se la CPU desidera recuperare l'istruzione successiva, inserisce l'indirizzo nel registro del PC e invia un segnale di recupero al controller di memoria. Alla ricezione dell'indirizzo e del segnale di recupero, il controller di memoria collegava il bus dati alla porta a 8 bit e un opcode lungo un singolo byte situato all'indirizzo ricevuto veniva scaricato dalla RAM nell'MRR della CPU.

Quindi questo è ciò che significa quando diciamo una certa registro è byte 'addressable'or memoria 'indirizzabile'. Ora cosa succederà quando metti, dici decimale 2 in binario sul MAR con l'intenzione di leggere la 'parola' 2, non (byte no 2)?

Word no 2 significa byte 4, 5, 6 della macchina, 7 per 32 bit. In realtà la memoria fisica è solo un byte indirizzabile. Quindi c'è un trucco per gestire l'indirizzamento di parole.
Quando MAR è posizionato sul bus di indirizzo, i suoi 32 bit non si mappano rispettivamente sulle 32 linee di indirizzo 0-31. Invece, il MAR bit 0 è collegato alla linea bus indirizzo 2, il bit 1 MAR è cablato alla linea bus indirizzo 3 e così via. I 2 bit superiori di MAR vengono scartati poiché sono necessari solo per gli indirizzi word superiori a 2^32, nessuno dei quali è legale per la nostra macchina a 32 bit.
Utilizzando questa mappatura, quando MAR è 1, l'indirizzo 4 viene inserito nel bus, quando MAR è 2, l'indirizzo 8 viene inserito nel bus e così via.

All'inizio è un po 'difficile da capire. L'ho imparato dall'organizzazione strutturata dei computer di Andrew Tanenbaums.

1

Questa immagine dovrebbe rendere più facile da capire: http://i.stack.imgur.com/rpB7N.png

In poche parole,

• nel byte schema di indirizzamento, la prima parola inizia all'indirizzo 0, e la seconda parola inizia all'indirizzo 4

• Nello schema di indirizzamento delle parole, tutti i byte della prima parola sono ubicati nello nell'indirizzo 0 e tutti gli byte della seconda parola si trovano nell'indirizzo 1.

Il vantaggio di indirizzabilità dei byte è chiaro quando consideriamo le applicazioni che elaborano i dati un byte alla volta. L'accesso di un singolo byte in un sistema indirizzabile tramite byte richiede solo l'emissione di un singolo indirizzo. In un sistema indirizzabile a 16 bit, è necessario prima calcolare l'indirizzo della parola contenente il byte, recuperare quella parola e quindi estrarre il byte dalla parola a due byte. Sebbene i processi per l'estrazione di byte siano ben compresi, sono meno efficienti dell'accesso diretto al byte. Per questo motivo, molte macchine moderne sono indirizzate ai byte.

1

L'indirizzabilità è la dimensione di un'unità di memoria che ha il proprio indirizzo. È anche il più piccolo pezzo di memoria che puoi modificare senza influenzare i suoi vicini.

Ad esempio: una macchina in cui i byte sono i normali 8 bit e la dimensione della parola = 4 byte. Se si tratta di una macchina indirizzabile alla parola, non esiste l'indirizzo del secondo byte di uno int. Trattare con le stringhe (ad esempio un array come char str[]) diventa inopportuno, perché i personaggi vengono ancora imballati insieme. Modificare solo str[1] significa caricare la parola che lo contiene, eseguire alcune operazioni shift/e/o per applicare la modifica, quindi fare un word store.

Si noti che questo è diverso da una macchina che non consente di caricare/memorizzare parole non allineate (dove i 2 bit bassi di un indirizzo word devono essere 0). Tali macchine solitamente hanno un'istruzione di caricamento/immagazzinamento in byte. Stiamo parlando di macchine senza nemmeno quello.

indirizzi CPU potrebbe effettivamente ancora includere i bit bassi, ma li richiedono di essere sempre zero (o ignorare). Tuttavia, dopo aver verificato che sono zero, il potrebbe essere scartato, quindi il resto del sistema di memoria vede solo l'indirizzo del canale, dove due parole adiacenti hanno un indirizzo diverso da 1 (non 4). Tuttavia, su una CPU a 16 bit in cui un registro può contenere solo 64k indirizzi diversi, non lo faresti probabilmente. Ogni indirizzo CPU separato farebbe riferimento a un diverso 2 byte di memoria, invece di scartare il bit basso. La memoria 2B indirizzabile alle parole consente di indirizzare 128KB di memoria, invece di 64 KB con memoria indirizzabile a byte.

curiosità: ARM utilizzato per utilizzare basse 2 bit di un indirizzo di un controllo casuale per carichi di parola non allineati. (Ma sempre avuto byte istruzioni load/store.)


Consulta anche:


Nota che po-indirizzabile della memoria potrebbe esistere ma non lo fa byte di 8 bit sono quasi universalmente serie ora. (I computer antichi a volte avevano byte più grandi, vedere la sezione della cronologia di wikipedia's Byte article.)