In che modo la dimensione della parola influisce sulla quantità di spazio degli indirizzi virtuali disponibile?

4

Quindi, dovrei davvero conoscere già queste cose, ma sto iniziando a imparare di più sui livelli inferiori di sviluppo del software. Attualmente sto leggendo Computer Systems: A Programmer's Perspective. di Bryant O'Hallaron.

Sono nel capitolo 2 e sta parlando del modo in cui i dati sono rappresentati internamente.

Ho problemi a capire qualcosa concettualmente e sono certo che sto per rendere lucida la mia ignoranza qui.

Capisco che una "parola" è solo un insieme di byte e che la dimensione della parola è solo quanti bit è largo il bus di sistema. Ma, dice anche: "il parametro di sistema più importante determinato dalla dimensione della parola è la dimensione massima dello spazio di indirizzamento virtuale, cioè, per una macchina con una dimensione di parola w- bit , il virtuale gli indirizzi possono variare da 0 a (2 ^ w) -1, dando al programma l'accesso al massimo a 2 ^ w byte "

Sono entrambi confuso sulla relazione generale tra la dimensione della parola e la quantità di indirizzi nel sistema e su come la formula specifica è w-bit word size = 2 ^ w byte di memoria disponibili.

Sto davvero grattando la testa qui, qualcuno può darmi una mano?

EDIT: in realtà ho interpretato erroneamente la sua definizione di una parola e di conseguenza la definizione della dimensione della parola. Quello che ha veramente detto è stato:

Busses are typically designed to transfer fixed-sized chunks of bytes known as words. The number of bytes in a word (the word size) is a fundamental system parameter that varies across systems. most machines today have word sizes of either 4 bytes(32 bits) or 8 bytes(64 bits). For the sake of our discussion here, we will assume a word size of 4 bytes, and we will assume that buses transfer only one word at a time.

che è praticamente un catch-all per i casi discussi nelle risposte senza dover entrare nei dettagli. Ha anche detto che semplificherà eccessivamente alcune cose, forse nelle sezioni successive andrà più nel dettaglio.

    
posta Luke 23.12.2014 - 18:58
fonte

3 risposte

4

L'idea è che una parola di memoria può essere usata come indirizzo nello spazio degli indirizzi (ad esempio, una parola è abbastanza ampia da contenere un puntatore). Se un indirizzo fosse più grande di una parola, l'indirizzamento richiederebbe più parole sequenziali. Questo non è impossibile, ma è irragionevolmente complicato (e probabilmente lento).

Quindi, data una parola w , quanti valori può rappresentare quella parola? In che modo gli indirizzi possono denotare? Poiché ogni bit può assumere due valori, finiamo con gli indirizzi 2 · 2 · 2 · ... · 2 = 2 w . Gli indirizzi vengono contati iniziando da zero, quindi l'indirizzo più alto è 2 w - 1.

Esempio usando una parola di tre bit: Ci sono 2 3 = 8 possibili indirizzi:

bin: 000 001 010 011 100 101 110 111
dec:   0   1   2   3   4   5   6   7

L'indirizzo più alto è 2 3 -1 = 8 - 1 = 7. Se la memoria è una matrice di byte e l'indirizzo è un indice di questo array, quindi usa una parola di tre bit possiamo solo indirizzare otto byte. Anche se l'array contiene fisicamente più byte, non possiamo raggiungerli con un indice limitato. Pertanto, la quantità di memoria virtuale è limitata dalla dimensione della parola.

    
risposta data 23.12.2014 - 19:25
fonte
4

I understand that a "word" is just a set of bytes and that the word size is just how many bits wide the system bus is. But, he also says: "the most important system parameter determined by the word size is the maximum size of the virtual address space. That is, for a machine with a w-bit word size, the virtual addresses can range from 0 to (2^w)-1, giving the program access to at most 2^w bytes"

Questo è scontato molto. Le ipotesi non sono irragionevoli, ma tenerle in un libro che finge di introdurre l'architettura del computer per i programmatori sembra una debolezza del libro.

Una parola è una sequenza di bit con la larghezza utilizzata per l'argomento normale del calcolo intero. (E ciò presuppone ancora che l'architettura non definisca una parola con un'altra dimensione, più piccola, che era la parola usata in un antenato dell'architettura.) Spesso è la dimensione dei registri interi. I bus hanno spesso quella dimensione, ma possono essere più piccoli o più grandi e non sono realmente usati per definire la dimensione della parola.

Esiste una classe importante di processori per cui gli indirizzi di dati hanno le stesse dimensioni della parola. Questo non è sempre vero. Ci sono altri processori che possono avere uno spazio di indirizzi più piccolo o più grande (questo è un po 'fuori moda, l'8086 aveva parole a 16 bit ma gli indirizzi erano larghi 20 bit, il PDP-10 aveva parole a 36 bit ma gli indirizzi erano 18 -bit largo).

Esiste una classe importante di processori per cui ogni byte di memoria ha il proprio indirizzo. Questo non è sempre vero. Esistono altri processori che forniscono indirizzi alle parole, non ai byte. Questo è anche fuori moda per processori generici, ma uno più specializzato come DSP lo sta ancora facendo.

Quindi se hai un processore che si trova in queste due classi, una parola di larghezza w bit può contenere 2 ^ w di valore diverso, ognuno facendo riferimento a un byte. Questo è un massimo per le dimensioni della memoria virtuale. Il processore può avere restrizioni architetturali che impediscono l'uso di tutto lo spazio (riservando una parte per il sistema operativo, per l'IO), oppure può avere altre restrizioni (le strutture dati utilizzate per mappare la memoria virtuale a quella fisica nei processori a 64 bit spesso non sono in grado di mappare l'intero spazio a 64 bit). Ci sono almeno due istanze di macchine che hanno ignorato il byte di ordine elevato di indirizzi a 32 bit e i programmatori ne hanno approfittato (usando quei bit per flag e altre cose) portando a un'evoluzione dolorosa quando più tardi si voleva usare i bit per indirizzi (IBM 360 e MC68000 utilizzati su Mac).

    
risposta data 23.12.2014 - 19:36
fonte
0

Una parola w bit può rappresentare 2 ^ w valori distinti. Se avessi più di 2 ^ w indirizzi, avresti indirizzi che non corrispondono a nessuna combinazione di w bit.

Se ogni indirizzo corrisponde a un byte in memoria, quindi gli indirizzi 2 ^ w ti consentono di accedere a 2 ^ w byte.

    
risposta data 23.12.2014 - 19:24
fonte

Leggi altre domande sui tag