Se una CPU ha un bus indirizzo a 16 bit e parole a 8 bit, quanta memoria può occupare?


23

Sto studiando per un esame di fine semestre e sono confuso con la seguente domanda. Se una CPU ha un bus indirizzo a 16 bit e parole a 8 bit, quanta memoria in KB può indirizzare? La mia comprensione mi direbbe che può indirizzare 64 KB, tuttavia per fare ciò ho usato solo 2 ^ 16 = 65.536. Questo calcolo non ha mai effettivamente preso in considerazione le parole da 8 bit, quindi non sono sicuro che sia corretto. Inoltre cosa significano parole a 8 bit?

Saluti


16
Lo hai usato indirettamente: la quantità totale di memoria indirizzabile è 2 ^ 16 * 8 bit. Poiché un byte = 8 bit, è 2 ^ 16 byte, ovvero 65536 byte o 64 KiB. Nota che K è il prefisso SI per 1000. Se intendi 1024, usa Ki.
jcaron

2
Presta attenzione alla differenza tra prefisso SI kilobyte (1.000 byte) e kibibyte prefisso binario (1.024 byte). 2 ^ 16 = 65,536 = 64 kibi ~ 65,5 kg. La risposta cercata è probabilmente uno in cui kilo è inteso come kibi, ma ci sono momenti in cui la differenza conta davvero. Se vuoi essere completamente sicuro, prendi la strada sicura e specifica il numero di byte e offre la traduzione in unità più pratiche come kilobyte o kibiby come comodità per il tuo insegnante. Confrontare Wikipedia: prefisso binario . I chip di memoria in genere specificano ad esempio 65.536x8 bit.
a CVn


3
Presumo che non si presuma lo scambio delle banche. La maggior parte delle CPU a 16 bit utilizza una qualche forma di scambio di banchi che rende davvero difficile rispondere.
Joshua

1
@ MichaelKjling La domanda dice KB che ha sempre significato 1024 byte.
kasperd

Risposte:


38

Una parola, nelle architetture di maggioranza, è il più grande pezzo di dati che può essere trasferito da e verso la memoria di lavoro in una singola operazione.

La dimensione di indirizzo più grande possibile, utilizzata per designare una posizione in memoria, viene in genere denominata parola hardware.

Così, la tua CPU sarà in grado di indirizzare 64 KB (2 ^ 16) ma sarà in grado di trasferire in una sola operazione 8 bit.


3
Sono sicuro che questa risposta è quella che l'insegnante sta cercando, ma è effettivamente corretta? Non potresti usare qualcosa come PAE per consentire una gerarchia a 3 livelli (o anche più) per consentire alle CPU di accedere a più di 64 KB? Non sono un esperto di hardware, ma il Commodore 128 non è riuscito nemmeno a fare qualcosa del genere su una parola a 8 bit, bus a 16 bit, consentendo il passaggio dei banchi RAM?
davidgo

5
Non sono sicuro che capisco che la tua frase "sarà in grado di trasferire in una singola operazione solo 256B (2 ^ 8)"? Può trasferire sempre 1 word = 1 byte = 8 bit in un'unica operazione.
jcaron

8
@davidgo ancora PAE richiede che il bus indirizzo sia dimensionato in modo appropriato. Le CPU Intel che supportano PAE hanno un bus indirizzo di 36 bit.
Dmitry Grigoryev

6
PAE è più o meno un marchio / feature name specifico per le moderne CPU x86. Sì, gli schemi per indirizzare indirettamente grandi quantità di memoria sono stati implementati per anni (es. XMS), questi alla fine trattano il sottosistema di memoria come una periferica che può essere riconfigurata costantemente per esporre memoria diversa in uno spazio di indirizzi più piccolo. Inoltre, guarda il modello di memoria segmentato della vecchia scuola x86 ...
rackandboneman

6
@ Ovviamente dovresti chiarire la tua risposta un po '. Nessuno usa davvero un singolo B come unità e la ragione è esattamente quello che è successo qui - stai confondendo bit e byte. L'OP indica "parole a 8 bit * - ogni parola ha quindi 8 bit (1 byte) e può trasferirla solo in una operazione, 256 è semplicemente il numero di valori possibili di ogni parola, non quanto viene trasferito.
adelphus

20

Una parola macchina, o comunemente solo parola è la più grande unità di dati che la CPU può manipolare nel suo complesso usando istruzioni comuni. Questo non ha nulla a che fare con l'indirizzamento della memoria.

Ciò che conta è il unità di risoluzione dell'indirizzo , che è comunemente un byte da 8 bit anche su architetture 16/32/64 bit. Non deve essere uguale alla dimensione della parola della macchina, ma probabilmente è nel tuo caso.

Un'unità indirizzabile a 8 bit combinata con bus di indirizzo a 16 bit ammonta a 64 KiB di RAM che la CPU può indirizzare.


3
Ma ho usato macchine in cui l'unità di risoluzione degli indirizzi era di 16 bit. (Quindi il concetto è significativo).
Martin Bonner

4
@ MartinBonner Tuttavia, non è direttamente correlato alla dimensione della parola della CPU.
glglgl

1
@glglgl - È molto correlato. Non credo che ci siano qualunque architetture che non hanno un'unità di indirizzo di o 8 bit o la loro dimensione della parola.
Jules

1
Non sono d'accordo con l'affermazione che una parola è la più grande unità che la CPU può manipolare nel complesso. Intel i7 ha un bus dati a 64 bit e può ancora utilizzare le istruzioni SIMD a 256 bit. Se Wikipedia è corretto, allora parola si riferisce alla larghezza del bus dati e non alle risorse interne della CPU.
Thomas Weller

1
@ThomasWeller: 8088 ha un bus dati a 8 bit, ma ancora istruzioni a 16 bit. In effetti è un 8086 con un databus più piccolo. Nota: anche la larghezza del databus e il trasferimento effettivo sono diversi (si pensi ai dati disallineati).
Giacomo Catenazzi

2

Inoltre cosa significano parole a 8 bit?

Nel contesto, la dimensione della parola va con la dimensione dell'indirizzo per descrivere il bus di memoria. Ci sono 16 bit sparsi nella memoria in modo che possa scegliere le posizioni 64ki. Poi, ogni posizione contiene 8 bit.

La dimensione della parola qui può o non può corrispondere alla dimensione dell'unità di calcolo della CPU, e questo può o meno corrispondere alla granularità logica nell'indirizzamento.

Ad esempio, una CPU può pubblicizzare un bus a 16 bit (per questo scopo). Usa gli indirizzi a 16 bit nelle sue istruzioni, e come il tuo esempio ha 64ki. Ma ha 15 bit di bus di indirizzo e 16 bit di bus dati. Richiede solo indirizzi 32ki e ottiene sempre 2 byte per ogni posizione. (Se un'istruzione voleva 1 byte, invierebbe l'indirizzo con il minimo di bit mancante, recupera entrambi i byte in quel passo, quindi guarda il bit meno dell'indirizzo desiderato per decidere quale mezzo usare.)

Nota che la commutazione bancaria, PAE, ecc. Menzionata da altri non sono rilevanti qui. Un'unità di gestione della memoria potrebbe utilizzare indirizzi a 16 bit e disporre di indirizzo hardware a 20 bit, quindi la CPU deve cambiare e mappare le cose per utilizzare l'effettivo intervallo di indirizzi a 20 bit dei chip RAM che possono essere indirizzati.

Assicurati di specificare le unità nelle tue risposte. “64ki”. Di cosa? Parole a 8 bit, rendendolo (ancora) 64ki byte di RAM indirizzabile. Questo passaggio elimina la confusione e rende banali questi problemi.


0

Devi usare anche la dimensione della parola nei calcoli. La risposta è 64 KB.

È possibile indirizzare 2 ^ 16 parole e ogni parola è 8 bit (= 1 byte). Pertanto è 64 KB.

Se la dimensione della parola era 16 bit. La risposta sarebbe 128 KB.


1
Il calcolo non è valido per le comuni CPU a 32 bit che possono ancora indirizzare 2 ^ 32 byte di memoria (4 GB), non (2 ^ 32) * 4 (16 GB).
Dmitry Grigoryev

Le moderne CPU indirizzano le "righe" più grandi e hanno meno linee di indirizzi da abbinare. La domanda parla di indirizzo bus il lato fisico delle cose. Quindi moltiplicando per la dimensione della parola di quell'autobus (non la dimensione del registro della CPU) è corretta.
JDługosz

0

Ci sono due lati in questo, ciò che il tuo istruttore probabilmente vuole che tu gli dica e quale sia la realtà.

Innanzitutto quello che il tuo istruttore probabilmente vuole che tu gli dica.

"16 bit possono indirizzare 2 ^ 16 posizioni di memoria, ogni posizione è 8 bit, quindi possiamo indirizzare una memoria 524288 bit (65536 ottetti)."

Ciò tuttavia riflette una visione del mondo piuttosto semplificata. La realtà è più complicata e per dare una risposta definitiva occorrono più informazioni. Alcuni dei modi in cui i sistemi reali possono essere più complicati di questo includono.

  • Molti processori non hanno una mappa IO dedicata, quindi è possibile che alcune parti dello spazio di indirizzamento della memoria debbano essere utilizzate per cose diverse dalla memoria.
  • La "dimensione della parola" del processore non è necessaria allo stesso modo della larghezza del bus dati di memoria o della più piccola unità di memoria indirizzabile.
  • Alcuni bus consentono il movimento di unità di dati di dimensioni diverse. Ciò richiede un ulteriore indirizzamento che può o non può essere gestito da bit del bus di indirizzo principale.
  • Alcuni bus multiplex segnali diversi sulle stesse linee. Ad esempio, SDRAM usa le stesse linee di indirizzo due volte per inviare un "indirizzo di riga" e un "indirizzo di colonna".
  • Molti sistemi hanno utilizzato approcci di commutazione bancaria per consentire ai programmi di accedere a più memoria di quella che il processore potrebbe in modo nativo indirizzare.
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.