Domanda

Disponiamo di architetture e sistemi operativi hardware a 8, 16, 32 e 64 bit. Ma non, diciamo, quelli a 42 o 69 bit.

Perché? È qualcosa di fondamentale che rende 2 ^ n bit una scelta migliore o si tratta solo di compatibilità con i sistemi esistenti? (È ovviamente conveniente che un registro a 64 bit possa contenere due puntatori a 32 bit o che un'unità dati a 32 bit possa contenere 4 byte.)

È stato utile?

Soluzione

È principalmente una questione di tradizione. Non è nemmeno sempre vero. Ad esempio, le unità a virgola mobile nei processori (anche quelle contemporanee) hanno registri a 80 bit. E non c'è nulla che ci costringerebbe ad avere byte a 8 bit anziché a 13 bit.

A volte questo ha ragionamenti matematici. Ad esempio, se si decide di avere un byte N bit e si desidera eseguire la moltiplicazione dei numeri interi, sono necessari esattamente 2 N bit per memorizzare i risultati. Quindi vuoi anche aggiungere / sottrarre / moltiplicare quei numeri interi a 2 bit e ora hai bisogno di registri per scopi generici a 2 bit per memorizzare i risultati di addizione / sottrazione e registri a 4 bit per memorizzare i risultati della moltiplicazione.

Altri suggerimenti

http://it.wikipedia.org/wiki/Word_%28computer_architecture % 29 # Word_size_choice

  

Diverse quantità di memoria vengono utilizzate per memorizzare i valori dei dati con diversi gradi di precisione. Le dimensioni comunemente utilizzate sono in genere una potenza di 2 multipli dell'unità di risoluzione dell'indirizzo (byte o parola). La conversione dell'indice di un articolo in un array nell'indirizzo dell'articolo richiede quindi solo un'operazione di spostamento anziché una moltiplicazione. In alcuni casi questa relazione può anche evitare l'uso delle operazioni di divisione. Di conseguenza, i progetti di computer più moderni hanno dimensioni di parole (e altre dimensioni di operandi) che hanno una potenza pari a 2 volte la dimensione di un byte.

Parzialmente, è una questione di indirizzo. Avere N bit di indirizzo consente di indirizzare al massimo 2 ^ N bit di memoria e i progettisti dell'hardware preferiscono sfruttare al massimo questa capacità. Quindi, puoi usare 3 bit per indirizzare il bus a 8 bit ecc ...

Il venerabile PDP-10 era di 36 bit.

Molte (quasi?) prime CPU pre-microprocessore hanno un numero di bit per parola che non ha una potenza di due.

In particolare, Seymour Cray e il suo team hanno costruito molte macchine altamente influenti con dimensioni delle parole senza potenza di due e dimensioni dell'indirizzo - 12 bit, 48 bit, 60 bit, ecc.

Un numero sorprendentemente elevato di primi computer aveva parole a 36 bit, interamente dovuto al fatto che gli umani hanno 10 dita. Wikipedia "36-bit" l'articolo contiene maggiori dettagli sulla relazione tra 10 dita e 36 bit e collegamenti ad articoli su molte altre dimensioni di bit storicamente importanti ma non più popolari, la maggior parte delle quali non ha una potenza di due.

Lo speculo

(a) La memoria indirizzabile a 8 bit è diventata popolare perché era leggermente più conveniente per la memorizzazione di BCD ASCII e a 4 bit a 7 bit, senza impacchettare o sprecare più bit per carattere; e nessun'altra larghezza di memoria aveva alcun grande vantaggio.

(b) Come sottolinea Stephen C. Steel, quel leggero vantaggio si moltiplica per le economie di scala e le forze di mercato - vengono utilizzate più memorie a 8 bit e quindi le economie di scala le rendono leggermente più economiche, portando a ancora più memorie a 8 bit utilizzate in nuovi progetti, ecc.

(c) In teoria, le larghezze del bus più ampie hanno reso più veloce una CPU, ma mettere l'intera CPU su un singolo chip l'ha resa notevolmente più economica e forse leggermente più veloce di qualsiasi precedente sistema CPU multiparte di qualsiasi larghezza del bus. Inizialmente c'erano transistor a malapena sufficienti per una CPU a 4 bit, quindi per una CPU a 8 bit. Più tardi, c'erano transistor a malapena sufficienti per una CPU a 16 bit, a un enorme fanfara e "16 bit". campagna di marketing. Proprio nel tempo ci si aspetterebbe una CPU a 24 bit ...

(d) la rivoluzione RISC ha colpito. I primi due chip RISC erano a 32 bit, per qualsiasi motivo, e la gente era stata condizionata a pensare che "più bit fossero migliori", quindi ogni produttore saltava sul carro a 32 bit. Inoltre, IEEE 754-1985 è stato standardizzato con numeri in virgola mobile a 32 e 64 bit. C'erano alcune CPU a 24 bit, ma la maggior parte delle persone non ne ha mai sentito parlare.

(e) Per motivi di compatibilità del software, i produttori hanno mantenuto l'illusione di un databus a 32 bit anche su processori con un bus frontale a 64 bit (come Intel Pentium e AMD K5, ecc.) o su schede madri con un Bus a 4 bit (bus LPC).

Il tuo sistema di memoria vuole essere un byte multiplo, il che fa sì che la tua cache voglia essere un byte multiplo, il che fa sì che l'intero sistema desideri essere un byte multiplo.

Parlando come un progettista HW, in genere si desidera progettare CPU di limiti di byte di qualche tipo, cioè multipli di 8. Altrimenti è necessario aggiungere un sacco di circuiti scomodi a un sistema a 49 bit per farlo utilizzare la mod -8 bit o finisci per ignorare i bit extra, nel qual caso è stato uno spreco, a meno che tu non abbia bisogno del bit extra per le istruzioni, che non è mai il caso su sistemi a 16 bit o più ampi.

Come altri hanno sottolineato, all'inizio, le cose non erano così chiare: le parole arrivavano in tutti i tipi di dimensioni strane.

Ma la spinta alla standardizzazione su byte a 8 bit è stata guidata anche dalla tecnologia dei chip di memoria. All'inizio, molti chip di memoria erano organizzati come 1 bit per indirizzo. La memoria per le parole n-bit è stata costruita utilizzando i chip di memoria in gruppi di n (con le corrispondenti linee di indirizzo collegate insieme e ogni singolo bit di dati dei chip che contribuisce a un bit della parola n-bit).

Con l'aumentare della densità dei chip di memoria, i produttori hanno confezionato più chip in un unico pacchetto. Poiché le dimensioni delle parole più popolari in uso erano multipli di 8 bit, la memoria a 8 bit era particolarmente popolare: questo significava anche che era la più economica. Man mano che sempre più architetture saltavano sul carrozzone a 8 bit byte, il prezzo più elevato per i chip di memoria che non utilizzavano byte a 8 bit diventava sempre più grande. Argomenti simili spiegano le mosse da 8- > 16, 16- > 32, 32- > 64.

Puoi ancora progettare un sistema con memoria a 24 bit, ma quella memoria sarà probabilmente molto più costosa di una progettazione simile usando memoria a 32 bit. A meno che non ci sia davvero un buon motivo per rimanere a 24 bit, la maggior parte dei progettisti opterebbe per 32 bit quando è sia più economico che più capace.

Un tempo, le lunghezze delle parole dei computer tendevano ad essere un multiplo di 6 bit, poiché i computer in genere utilizzavano set di caratteri a 6 bit, senza supporto per le lettere minuscole.

IBM ha realizzato un computer ad alte prestazioni, il STRETCH, per Los Alamos, che aveva una parola a 64 bit. Aveva la caratteristica insolita che i singoli bit nella memoria del computer potevano essere indirizzati direttamente, il che costringeva la lunghezza della parola ad essere una potenza di due. Aveva anche un set di caratteri più esteso, che consentiva di includere simboli matematici (oltre al minuscolo); sono stati usati in un linguaggio speciale di livello superiore chiamato COLASL.

Quando IBM uscì con il famosissimo mainframe System / 360, anche se non aveva un indirizzamento dei bit, mantenne il byte a otto bit, principalmente per consentire una memorizzazione efficiente di quantità decimali impacchettate a quattro bit rispetto alla cifra decimale. Poiché quella macchina era così popolare, era molto influente e il computer PDP-11 di DEC è stato progettato con una parola a 16 bit e caratteri a 8 bit. Il PDP-11 fu anche la prima vera macchina little-endian, ed era anche molto popolare e influente.

Ma non è solo per via della moda. I caratteri a 8 bit consentono il testo in minuscolo e, man mano che i computer diventano più economici, viene valutata la possibilità di usarli facilmente per l'elaborazione di testi. E proprio come la STRETCH doveva avere una parola che avesse una potenza di due dimensioni in bit per consentire di indirizzare facilmente i bit, i computer di oggi dovevano avere una parola che era una potenza di due multipli di 8 (che sembra essere due al terzo potere stesso) per consentire ai personaggi di essere facilmente affrontati.

Se usassimo ancora caratteri a 6 bit, i computer tenderanno ad avere parole a 24, 48 o 96 bit.

Correlato, ma forse non il motivo, ho sentito che la convenzione di 8 bit in un byte è perché IBM ha sistemato l'architettura IBM System / 360.

Un motivo comune è che puoi numerare i tuoi bit in binario. Questo è utile in parecchie situazioni. Ad esempio, nelle operazioni di spostamento dei bit o di rotazione. È possibile ruotare un valore di 16 bit da 0 a 15 bit. Anche un tentativo di ruotare su 16 bit è banale: equivale a una rotazione su 0 bit. E una rotazione su 1027 bit equivale a una rotazione su 3 bit. In generale, una rotazione di un registro di larghezza W su N bit equivale a una rotazione su N modulo W e l'operazione "modulo W" è banale quando W è una potenza di 2.

80186, 8086, 8088 e "Modalità reale" su 80286 e successivi i processori utilizzavano un sistema di indirizzamento della memoria segmentato a 20 bit. L'80286 aveva 24 linee di indirizzo native e poi il 386 e successive ne avevano 32 o 64.

Un altro esempio contatore: i microcontrollori serie PIC16C8X hanno un set di istruzioni largo 14 bit.

Il byte è correlato alla codifica dei caratteri principalmente del mondo occidentale, quindi a 8 bit. Word non è correlato alla codifica in relazione alla larghezza dell'indirizzo, quindi varia da 4 a 80 ecc ecc.

Il mio vecchio fidato calcolatore HP 32S era a 12 bit.

Perché lo spazio riservato per l'indirizzo è sempre un numero fisso di bit. Una volta definita la dimensione dell'indirizzo fisso (o puntatore), allora vuoi sfruttarla al meglio, quindi devi usare tutti i suoi valori fino al numero più alto che può memorizzare. Il numero più alto che puoi ottenere da un multiplo di un bit (0 o 1) è sempre una potenza di due

Forse puoi trovare qualcosa qui: Binary_numeral_system

L'ICL 1900 era tutto a 24 bit (parole). Scommetto che non molte persone ricordano questi. Lo fai ??

Abbiamo, basta guardare i microcontrollori PIC.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top