È la dimensione del bus dell'indirizzo o la dimensione del bus dei dati che determina i sistemi "8-bit, 16-bit, 32-bit, 64-bit"?


15

La mia semplice comprensione è la seguente.

La memoria (RAM) è composta da bit, gruppi di 8 che formano byte, ognuno dei quali può essere indirizzato, e quindi memoria indirizzabile da byte.

Il bus indirizzo memorizza la posizione di un byte di memoria.

Se un bus di indirizzo ha una dimensione di 32 bit, significa che può contenere fino a 2 32 numeri e quindi può fare riferimento a 2 32 byte di memoria = 4 GB di memoria e qualsiasi memoria maggiore di quella è inutile.

Il bus dati viene utilizzato per inviare il valore da scrivere / leggere nella memoria. Se ho un bus dati di dimensioni 32 bit, significa che è possibile scrivere / leggere in memoria un massimo di 4 byte alla volta. Non trovo alcuna relazione tra questa dimensione e la dimensione massima della memoria possibile.

Ma ho letto qui che:

Anche se la maggior parte dei sistemi è indirizzabile in byte, ha senso per il processore spostare il maggior numero possibile di dati. Questo viene fatto dal bus dati e la dimensione del bus dati è da dove provengono i nomi sistema a 8 bit, sistema a 16 bit, sistema a 32 bit, sistema a 64 bit, ecc. Quando il bus dati è largo 8 bit, può trasferire 8 bit in una singola operazione di memoria. Quando il bus dati è largo 32 bit (come è più comune al momento della scrittura), al massimo, 32 bit possono essere spostati in una singola operazione di memoria.

Ciò afferma che la dimensione del bus dati è ciò che dà a un sistema operativo il nome, 8 bit, 16 bit e così via. Cosa c'è di sbagliato nella mia comprensione?


" Cosa c'è che non va nella mia comprensione? " - Stai cercando di adattare una definizione a cose diverse. Il descrittore di dimensione bit è stato utilizzato in momenti diversi per cose diverse.
segatura

1
Indica qualunque cosa il produttore affermi. Generalmente sarà qualcosa che assomiglia alle dimensioni del registro, ma ci sono molti modi per simularlo / farlo girare.
Daniel R Hicks,

Risposte:


12

Generalmente la dimensione del databus è determinata dalla dimensione dei registri del processore. Spesso sono le dimensioni dei registri del processore che determinano il tipo di sistema operativo (64 vs 32). Le dimensioni del bus fisico possono tecnicamente differire da questa (8088 come esempio) ma è così raro che l'autore della tua citazione probabilmente associ i due insieme.

Generalmente la dimensione del puntatore segue anche la dimensione del registro ma la larghezza del bus dell'indirizzo fisico può essere maggiore (come con l'8086 16 bit a 20) o inferiore (come con l'AMD 64 a 48)


2
" la larghezza del bus dell'indirizzo fisico può essere maggiore " - Soprattutto con processori a 4 e 8 bit!
segatura

Va bene. Ma sto cercando di capirlo in modo banale. Non sono riuscito a trovare alcuna relazione tra la dimensione del databus e la memoria massima possibile, come potrei spiegare con la dimensione del bus dell'indirizzo. Quindi la risposta sembra essere "NON DIMENSIONE DEL BUS DI INDIRIZZO ma DIMENSIONE DEL BUS DATI" (perché di solito è grande quanto il registro del processore). Mi sto perdendo qualcosa?
studente

@learner Esatto, la confusione sta anche nel fatto che la dimensione massima del puntatore di un sistema è la dimensione dei registri del processore. In uno spazio di indirizzamento piatto come con la maggior parte dei sistemi moderni, ciò equivale a essere limitato dalle dimensioni dei registri del processore, da cui le limitazioni di indirizzamento come hai sottolineato. Alcuni processori, soprattutto quelli più vecchi, hanno utilizzato trucchi come l'indirizzamento segmentato speciale per aggirare questo problema.
Dougvj,

@Dougvj, Ok, sta diventando più chiaro. Ma perché hanno reso le dimensioni del bus dell'indirizzo diverse dalle dimensioni del registro del processore? Non avrebbe più senso mantenerli uguali? E sono confuso su dove sono conservati gli indirizzi? (il bus degli indirizzi o il registro del processore?) Grazie
studente

1
@learner È corretto. Riassumendo: la designazione del sistema operativo corrisponde esattamente alla dimensione dei registri del processore. Il bus dell'indirizzo può avere o meno le stesse dimensioni dei registri del processore, quindi la RAM massima indirizzabile possibile è indipendente da quella. Il processore interno, tuttavia, ha quasi invariabilmente una sorta di schema di indirizzamento che coinvolge puntatori della stessa dimensione dei registri del processore.
Dougvj,

1

È la dimensione del registro e la gestione della memoria all'interno del processore.

Usando i trucchi, un processore a 16 bit aveva un bus di indirizzo a 20 bit, quindi non è memoria esterna al processore.


1

Non esiste un sistema "puro" a 32 o 64 bit, e quindi i termini sono comunque solo approssimazioni.

Ad esempio, prendi la tua frase "La memoria (RAM) è composta da bit, gruppi di 8 che formano byte, ognuno dei quali può essere indirizzato" . Non è molto comune. I PC hanno la loro RAM sui moduli DIMM e quelli sono larghi 64 bit. Negli anni '90, avevi SIMM e quelli erano larghi 32 bit.

In alcuni sistemi i DIMM devono o possono essere accoppiati ("ganged" / "dual channel"), che sarebbe un databus a 128 bit. Questo concetto precede i cosiddetti processori "64 bit" di AMD e Intel.

Quei gruppi di 64 bit di un singolo DIMM possono effettivamente essere suddivisi in 8 byte. Questo è fatto in modo abbastanza trasparente dalla tua CPU. Può anche spezzare i 64 bit in 4 * 16 bit, 2 * 32 bit o semplicemente usare tutti i 64 bit come singola variabile.

La domanda più importante tuttavia è la larghezza di un indirizzo. Ogni byte in memoria ha il suo indirizzo, ma non tutti i bit. Ciò significa che i 64 bit ottenuti da un singolo DIMM hanno 8 indirizzi. Il più basso di questi è sempre un multiplo di 8: ora, quanti indirizzi distinti supporta la CPU? Ci sono due risposte comuni, almeno in teoria. Alcuni CPU supportano 2 32 indirizzi diversi, alcuni supportano 2 64 . Questa distinzione è la distinzione più comune tra i sistemi a 32 e 64 bit.

In pratica, i sistemi a 64 bit supportano oggi meno di 2 64 byte di RAM. Sarebbe insostenibile e comunque non si adatterebbe a un normale PC. Quella memoria peserebbe diversi milioni di tonnellate!


È il registro del processore in cui è conservato un indirizzo o è il bus dell'indirizzo? Dici "alcune CPU supportano 2 ^ 32 indirizzi diversi ...". A cosa sono esattamente limitati?
studente

In genere, sia le dimensioni del registro che l'MMU (Memory Management Unit, la parte della CPU che è direttamente responsabile della memoria).
MSalters l'

0

Entrambi in realtà.

I bit su una CPU sono normalmente un riferimento alla dimensione dei suoi registri interni. Una CPU a 32 bit ha registri a 32 bit che possono o non possono essere suddivisi in blocchi.

Ha senso disporre di una CPU a 32 bit con un bus dati a 32 bit perché è possibile trasferire tutti i dati dalla memoria direttamente ai registri, ma è possibile avere qualsiasi dimensione del bus dati. Quindi la CPU a 32 bit normalmente ha un bus dati a 32 bit per facilitare il trasferimento dei dati da e verso di esso.

E ha anche senso avere un bus con indirizzo a 32 bit per due motivi. Un bus di indirizzo più grande renderebbe più difficile l'indirizzamento indiretto perché non si avrebbe un registro abbastanza grande per memorizzare un indirizzo di memoria o la CPU avrebbe bisogno di un registro specializzato per l'indirizzamento della memoria, si noti che le vecchie CPU come Intel 8080 erano a 8 bit e avevano un Bus di indirizzo a 16 bit. Al contrario, un bus di indirizzo più piccolo del registro è solo uno spreco di risorse. Esistono microcontrollori che utilizzano bus di indirizzi più piccoli.

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.