Indirizzabile a parola o byte? Terminologia corretta


9

Apparentemente, un byte si è affermato come 8 bit (è corretto?). La RAM e il NOR-flash sono normalmente accessibili a un livello abbastanza granulare, ma spetta all'architettura del sistema determinare se l'unità indirizzabile più piccola è 8 bit, 16 bit o qualsiasi altra potenza del numero di due bit. La terminologia corretta sarebbe quella di chiamare questa parola indirizzabile? O chiesto diversamente, una parola ha le dimensioni dell'unità più piccola indirizzabile? O c'è qualche altro termine per descriverlo?

Le crocchette, i byte, le parole, le parole doppie di mabye sono tutte variabili in lunghezza bit e definite solo dall'architettura? Ed è quindi solo una coincidenza che un byte sia sempre 8 bit? Ad esempio qualcuno potrebbe progettare un nuovo tipo di CPU e memoria e definire il suo byte a 16 bit?

Domanda principale: qual è il termine preciso per il più piccolo blocco di memoria indirizzabile?

Domanda a margine : qual è l'antonimo di questa parola che sto cercando (ad esempio, utilizzato in NAND-flash)? Indirizzabile a pagina, indirizzabile a blocchi? Sono entrambi corretti o uno è impreciso?

Risposte:


9

Dal punto di vista dell'architettura informatica, e con l'avvertenza che a volte la nomenclatura varia, specialmente quando esiste una famiglia di architetture correlate che si è evoluta da molto tempo, o quando il dipartimento marketing decide che i termini usuali devono essere usati in un'altra modo (o di mettere il prodotto in una luce migliore utilizzando un numero maggiore o di avere un numero semplice per differenziare i prodotti più o meno correlati).

Una parola ha la dimensione normalmente usata per le operazioni di numero intero (spesso espressa come dimensione dell'intero o dei registri di uso generale, ovvero non indirizzo o dati, bus interni o esterni, non registri di indirizzi, non registri di indici). Un problema comune è che quando un'architettura è un'evoluzione di una precedente, spesso si mantiene il termine parola per la dimensione iniziale e si usa "doppia parola" o "parola quadrupla" per ciò che è una parola se si guarda l'architettura in isolamento. Storicamente le parole non sono sempre state una potenza di due (conosco le dimensioni: 12, 16, 18, 24, 32, 36, 60, 64 e non penso che la mia conoscenza sia esaustiva).

Parola indirizzabile significa che la memoria è considerata come una matrice di parole, e quindi nessuna unità più piccola ha un indirizzo individuale.

Un byte ha varie definizioni. Il termine è stato introdotto per indicare l'unità utilizzata nella codifica dei caratteri in un momento in cui la codifica multi-byte non esisteva. Viene spesso utilizzato per indicare l'unità indirizzabile più piccola per una macchina che non è indirizzabile a parole (anche se non è un bit). Non credo che queste due definizioni abbiano mai dato una dimensione diversa. (né una dimensione diversa da 6 o 8 bit). Per una macchina indirizzabile a parole spesso significa un'unità più piccola di una parola per la quale la macchina ha qualche supporto (ad esempio il PDP-10 - un computer indirizzabile a 36 bit di parole - aveva istruzioni byte che potevano manipolare qualsiasi dimensione da 1 a 35 o 36 bit). Oggi è anche spesso 8 bit. Spesso molte di queste definizioni sono praticamente equivalenti.

Il byte indirizzabile caratterizza le macchine in cui la memoria è considerata una matrice di byte in uno dei significati sopra.

AFAIK nibble è stato usato soltanto per 4 quantitativi bit.

Ad esempio qualcuno potrebbe progettare un nuovo tipo di CPU e memoria e definire il suo byte a 16 bit?

Sì, ma non sono sicuro che avrebbe molto senso farlo se si mantiene l'utilizzo della CA per utilizzare byte per qualcosa di più piccolo della parola. Avere un processore a 16 bit indirizzabile a parole senza supporto per qualcosa di più piccolo di una parola può essere una buona scelta per un processore per scopi speciali.

In secondo luogo, qual è il contrario di questa parola che sto cercando? Indirizzabile a pagina, indirizzabile a blocchi?

Bit-addressable, byte-address e word-addressable sono gli unici termini che ho visto usare. Non ha molto senso indirizzare solo le unità più grandi della parola a livello architettonico. Oggi le parole indirizzabili vengono utilizzate solo per processori per scopi speciali come DSP. Non credo che l'indirizzamento dei bit sia stato utilizzato per scopi diversi da quelli per scopi speciali, ad eccezione di IBM Stretch.

Informazioni sulla tua nuova domanda principale

Qual è il termine preciso per il più piccolo blocco di memoria indirizzabile?

Non ne conosco nessuno usato in Computer Architecture ( byte è stato usato per qualcosa di più piccolo in macchine con indirizzo word), ma è la definizione usata da C per byte .


Grazie per la risposta elaborata. Mentre rileggevo la mia domanda ho notato che ero un po 'vago, quindi sto ancora cercando una risposta definitiva che potresti ancora aggiungere alla tua risposta: qual è il termine preciso per il più piccolo blocco di memoria indirizzabile? O non c'è nessuno? Inoltre, ho modificato la frase che hai citato. Grazie mille.
Franz Kafka,

1
Le regioni con bande di bit su alcuni ISA di microcontrollori potrebbero essere considerate indirizzi di bit. Una parte dello spazio degli indirizzi converte gli indirizzi di parole (almeno in ARM Cortex-M) in indirizzi di bit. Ovviamente questo supporta l'indirizzamento dei bit solo per una piccola parte dello spazio totale degli indirizzi (solo 2 MiB su 4GiB per Cortex-M3). Anche l'indirizzamento del set di istruzioni è distinto dall'indirizzamento hardware (ad esempio, NAND flash è indirizzabile sulla pagina, DRAM è spesso indirizzabile alla granularità del blocco cache, la cache L1 è in genere la dimensione massima del carico indirizzabile [con scritture più piccole ECC richiede RMW].)
Paul A. Clayton

@ PaulA.Clayton Non conoscevo il termine bit banding ma conoscevo l'8051 che lo fornisce anche. Non prenderei in considerazione un ISA che lo fornisce come indirizzabile a bit non più di quanto considero il PDP-10 indirizzabile a byte, sembra troppo distinto dal solito datapath.
Programmatore

@AProgrammer Non sono sicuro di come definirei indirizzabilità ISA. La definizione di questo in base alla più piccola unità di indirizzamento esterno supportata in una singola istruzione fornisce una risposta diversa rispetto alla definizione di tale in base all'unità di indirizzabilità di un "indirizzo / puntatore ordinario" (che esclude il bit-banding e address / pointer-and-finer meccanismi sfalsati). Il secondo (che hai scelto) sembra più naturale in alcuni contesti, ma il primo potrebbe avere senso in altri contesti. Potrebbe anche essere presa in considerazione l'atomicità (wrt interruzioni o coerenza della cache wrt) (le istruzioni possono essere non atomiche).
Paul A. Clayton,

1
@ PaulA.Clayton, ho cercato di attenermi a quella che sembrava una pratica consolidata sul campo, ma è un campo che ama gli stati intermedi e non ho né il talento né la cultura di Andy Glew per essere in grado di fornire una descrizione esaustiva ma comprensibile.
Programmatore il

1

Il Burroughs B1700 era indirizzabile a bit (in realtà l'indirizzo si riferiva allo spazio tra i bit da cui era possibile leggere in avanti o indietro un numero arbitrario di bit). (Quindi non è stato solo il tratto di IBM, che è stato un fallimento.)

La B1700 è stata progettata per essere la macchina più flessibile. Le applicazioni non dovevano essere scritte a livello di bit, ma ambienti diversi creati per stili di applicazione diversi. Questi ambienti sono stati programmati in microcodice, fornendo i motori di macchine virtuali. Ogni runtime di lingua (sistemi SDL per SO, COBOL for business, FORTRAN per COBOL) è stato scritto come un ambiente microcodificato separato. Pertanto, l'architettura potrebbe essere adattata a qualsiasi stile di applicazione futuro.

Wayne Wilner, uno dei progettisti, ha sottolineato che altre macchine dell'epoca hanno costretto i programmatori a giacere nel letto procrustiano di byte e parole di dimensioni fisse. In realtà ciò che ogni ambiente di runtime richiedeva erano le strutture di dati adatte all'applicazione. Sfortunatamente, la maggior parte delle architetture di macchine attuali sono ancora Procrustean (e quindi programmate in linguaggi come C che espongono questa struttura della macchina, piuttosto che supportare strutture orientate al problema).

Ulteriori letture su questa affascinante macchina e la sua filosofia sono disponibili su:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.590.2624&rep=rep1&type=pdf

e più in dettaglio:

http://ianjoyner.name/Files/Wilner.pdf

Allora perché il B1700 non è più realizzato?

Burroughs aveva tre gamme principali di computer, i grandi sistemi B5000-B7000 (architettura ALGOL), i sistemi medi B2000-B4000 (architettura COBOL) e i piccoli sistemi B1000 (architettura di qualsiasi cosa).

I sistemi di grandi dimensioni erano davvero costosi, fino al B5900 che era microcodificato su un processore economico per fornire la macchina stack ALGOL. Jack Allweis, il progettista del B5900, ha sottolineato che l'architettura di sistema di grandi dimensioni si è ridotta in piccoli computer, ma il B1700 è stato progettato per essere economico e non scalabile.

Pertanto, da B1700 a B1900, sebbene di grande successo all'epoca, morirono per motivi commerciali.

I grandi sistemi Burroughs sono ancora disponibili come Unisys ClearPath MCP e funzionano anche sul tuo PC come emulazione.

Come altra nota a piè di pagina, IPC sul B1700 è stato un dolore tra diverse macchine virtuali, ma molto sicuro (come i microkernel di oggi). Tutti i grandi sistemi eseguivano processi nello stesso ambiente in cui i dati potevano essere condivisi in modo sicuro, ma IPC era diretto. Questo è in qualche modo tra architetture di microkernel (Mach) e non kernel (Linux). Tuttavia, B5000 è una macchina molto sicura, ma offre anche buone prestazioni.

La sicurezza è il problema più grande nel settore ora e davvero queste macchine dovrebbero essere rianimate e studiate per mostrare la via da seguire.


1

Domanda principale: qual è il termine preciso per il più piccolo blocco di memoria indirizzabile?

Aggiungerò un'altra risposta per affrontarla in modo diverso. Nell'hardware elettronico, lo chiamiamo la cifra bit - binaria. Questa è un'entità che può rappresentare due valori qualsiasi. Di solito pensiamo in termini di 0 e 1, ma potrebbe essere 3 o 4, 365 o 266, -3 o -4, anche 25 o 37.

Qualsiasi sistema di segnalazione può essere utilizzato per rappresentare questi valori: bandiera su, bandiera giù, occhi aperti, occhi chiusi, + 5v, -5v. Questo non è importante.

Ciò che è importante è che filosoficamente rappresentiamo la più piccola quantità distintiva di informazioni. Potrebbe essere attivato, disattivato o vero, falso o su, giù o 0, 1 - qualsiasi cosa distingua due stati separati. Possiamo mappare questi valori su uno qualsiasi dei sistemi di segnalazione sopra e molti altri.

Ora la domanda è: come possiamo testare e impostare individualmente una così piccola quantità di informazioni? Come ho detto nella risposta precedente, il B1700 ha scelto di indirizzare direttamente la più piccola quantità di informazioni.

Tuttavia, la maggior parte delle macchine ha deciso di indirizzare solo grandi quantità di informazioni. Consideriamo un gruppo di quattro bit con un singolo indirizzo. Quindi, se otteniamo il valore di 1011 nella nostra posizione, come testiamo il secondo bit da sinistra. Usiamo una maschera: 1011 e 0100 test solo il secondo bit. Quindi, come possiamo impostare il secondo bit su 1? Un piccolo calcolo aritmetico della CPU afferma che il valore sarà 15 o 1111, in modo che tutti e quattro i bit vengano riscritti in memoria, anche se in realtà abbiamo impostato solo un bit.

Ora questo non è utile per la maggior parte delle applicazioni. La maggior parte delle applicazioni rappresenta dati o informazioni, su, giù, vero, falso, aperto, chiuso.

Vogliamo dire cose come:

se aperto allora ... altro ... fine

o più probabilmente applicarlo a un'entità più grande:

se la porta è aperta allora - molto probabilmente "door.open" ... altrimenti ... fine

'door is open' illustra l'indirizzamento gerarchico. L'indirizzamento del sistema principale fornisce l'entità door e door ha il suo indirizzamento che consente l'accesso ad open (e forse ad altri attributi).

La maggior parte degli insiemi ha anche più di due possibili valori (un insieme con un valore non cambia mai e quindi non ha nemmeno bisogno di rappresentazione, quindi zero bit). Per questi abbiamo elencato set, come (giallo, verde, blu, viola foschia, rosso). Questi definiscono insiemi e tipi e il numero esatto di bit richiesto è dato dal numero di valori (log2 (numero di valori)).

Pertanto, l'indirizzamento ottimale dipende davvero dalla dimensione dell'entità utilizzata nell'applicazione, forse anche da entità di dimensioni variabili. Ma nella maggior parte dell'hardware tali indirizzi devono essere tradotti nella dimensione fissa definita dall'hardware. Questo ovviamente potrebbe costare in termini di tempo. Dovrebbe anche essere qualcosa che fa un traduttore automatico (compilatore o interprete), non un programmatore, proprio come un sistema del genere genererebbe codice per testare e impostare i bit come sopra (se i bit non sono indirizzabili direttamente).

Un punto importante qui non è pensare in termini di elettronica: l'elettronica è solo un modo davvero efficace e veloce per elaborare i calcoli. Non c'è nulla di magico nel calcolo elettronico che consenta di fare calcoli che altrimenti non potresti fare. La magia è solo nella velocità. Ecco perché le astrazioni di basso livello come i meccanismi di puntamento (puntatore) di bit, byte, word o hardware non sono davvero utili.


-2

Il nostro sistema informatico utilizzato per impostazione predefinita Memoria indirizzabile byte. La sua unica cella punta a informazioni a 8 bit. E la dimensione della cella non dipende dalla lunghezza del processore. Nella memoria indirizzabile a parola, una cella punta a informazioni di una parola, ma la lunghezza della parola dipende dalla lunghezza del processore. Quando usiamo le parole memoria indirizzabile che la sua crea un'ambiguità. Quindi il nostro computer utilizza per impostazione predefinita la memoria indirizzabile byte.


Benvenuti nel sito ma non vedo come questo risponda alla domanda.
David Richerby,
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.