Qual è la storia del motivo per cui i byte sono otto bit?

78

In che modo le forze storiche al lavoro, i compromessi da fare, nel decidere di utilizzare gruppi di otto bit come unità fondamentale?

C'erano macchine, una volta, usando altre dimensioni di parole, ma oggi per non-otto-test devi guardare pezzi da museo, chip specializzati per applicazioni embedded e DSP. Come si è evoluto il byte fuori dal caos e dalla creatività degli albori del design del computer?

Posso immaginare che meno bit sarebbero inefficaci per gestire dati sufficienti a rendere il computing fattibile, mentre troppi avrebbero portato a hardware costoso. C'erano altre influenze in gioco? Perché queste forze hanno bilanciato fino a otto bit?

(A proposito, se potessi viaggiare nel tempo, tornerei a quando il "byte" è stato dichiarato di essere 8 bit, e convincere tutti a renderlo 12 bit, corrompendolo con alcuni ciondoli del primo XXI secolo.)

    
posta DarenW 16.11.2011 - 20:48
fonte

7 risposte

69

Molto presto il lavoro è stato fatto con i codici baudot a 5 bit, ma questi sono diventati rapidamente limitanti (solo 32 possibili caratteri, quindi fondamentalmente solo lettere maiuscole e un pochi segni di punteggiatura , ma non abbastanza "spazio" per le cifre).

Da lì, alcune macchine sono passate a caratteri a 6 bit. Questo era ancora piuttosto inadeguato - se si desiderava lettere e cifre maiuscole e minuscole (inglese), questo lasciava solo due caratteri in più per la punteggiatura, quindi la maggior parte aveva ancora un solo caso di lettere in un set di caratteri.

ASCII ha definito un set di caratteri a 7 bit. È stato "abbastanza buono" per molti usi per molto tempo e ha costituito la base anche per i set di caratteri più recenti (ISO 646, ISO 8859, Unicode, ISO 10646, ecc.)

I computer binari motivano i progettisti a realizzare potenze di due dimensioni. Dal momento che il set di caratteri "standard" richiedeva comunque 7 bit, non era troppo lungo aggiungere un altro bit per ottenere una potenza di 2 (e quindi lo storage stava diventando abbastanza più economico da "sprecare" un po 'per la maggior parte dei personaggi era più accettabile pure.

Da allora, i set di caratteri sono passati a 16 e 32 bit, ma la maggior parte dei computer tradizionali sono in gran parte basati sul PC IBM originale (un progetto che avrà 30 anni nei prossimi mesi ). Quindi, ancora una volta, il mercato è sufficientemente soddisfatto di caratteri a 8 bit che, anche se il PC non fosse arrivato al suo attuale livello di dominanza, non sono sicuro che tutti farebbero comunque tutto con personaggi più grandi.

Devo anche aggiungere che il mercato è cambiato parecchio. Nel mercato attuale, le dimensioni dei caratteri sono definite meno dall'hardware che dal software. Windows, Java, ecc., Spostati a caratteri a 16 bit molto tempo fa.

Ora, l'ostacolo nel supportare i caratteri a 16 o 32 bit è solo minimamente derivante dalle difficoltà inerenti ai caratteri a 16 o 32 bit stessi, e in gran parte dalla difficoltà di supportare i18n in generale. In ASCII (ad esempio) rilevare se una lettera è maiuscola o minuscola, o la conversione tra i due, è incredibilmente banale. In pieno Unicode / ISO 10646, è fondamentalmente indescrivibilmente complesso (al punto che gli standard non ci provano nemmeno - danno tabelle, non descrizioni). Poi aggiungi il fatto che per alcune lingue / set di caratteri, anche la idea di base maiuscola / minuscola non si applica. Poi aggiungi il fatto che persino la visualizzazione di caratteri in alcuni di questi è ancora molto più complessa.

È tutto abbastanza complesso che la stragrande maggioranza del software non ci prova nemmeno. La situazione sta lentamente migliorando, ma lentamente è la parola chiave.

    
risposta data 16.11.2011 - 21:13
fonte
10

Sette bit per le informazioni ASCII e uno per la parità di rilevamento degli errori.

    
risposta data 16.11.2011 - 21:03
fonte
5

Dai un'occhiata alla pagina di Wikipedia sull'architettura a 8 bit . Sebbene i set di caratteri potessero essere 5-, 6-, quindi l'architettura del bus CPU / memoria sottostante a 7 bit utilizzava sempre potenze di 2. Molto primo microprocessore (circa 1970) aveva un bus a 4 bit, il che significava che un'istruzione poteva spostarsi 4- bit di dati tra la memoria esterna e la CPU.

Quindi, con il rilascio del processore 8080, l'architettura a 8 bit divenne popolare e questo è ciò che ha dato l'inizio del set di istruzioni di assemblaggio x86 che viene utilizzato anche in questi giorni. Se dovessi indovinare, il byte proveniva da questi primi processori in cui il pubblico mainstream ha iniziato ad accettare e giocare con PC e 8 bit era considerato la dimensione standard di una singola unità di dati.

Da allora la dimensione del bus è raddoppiata ma è rimasta sempre una potenza di 2 (ovvero 16, 32 e ora 64 bit) In realtà, sono sicuro che gli interni del bus di oggi sono molto più complicati di 64 paralleli fili, ma l'attuale architettura della CPU mainstream è a 64 bit.

Suppongo che raddoppiando sempre (anziché aumentare del 50%) è stato più semplice realizzare un nuovo hardware che coesiste con le applicazioni esistenti e altri componenti legacy. Quindi, ad esempio, quando passavano da 8 bit a 16, ciascuna istruzione ora poteva spostare 2 byte anziché 1, quindi si salva un ciclo di clock ma il risultato finale è lo stesso. Tuttavia, se passassi da un'architettura da 8 a 12 bit, finirai per scomporre i dati originali in metà e la gestione potrebbe diventare fastidiosa. Queste sono solo supposizioni, non sono davvero un esperto di hardware.

    
risposta data 17.11.2011 - 03:37
fonte
4

Un byte è stato variamente (almeno) 1, 4, 6, 7, 8, 9, 12, 18, 20 ed eventualmente 36 bit, a seconda del computer che si sta guardando. Sto prendendo "byte" qui per significare "unità di memoria più piccola indirizzabile", piuttosto che usare qualsiasi tipo di interpretazione testuale. (Ad esempio, la CPU Saturn, una CPU a 64 bit utilizzata nella popolare linea di calcolatori HP48SX / GX, indirizza la memoria nei nibbles - 4 bit.)

I byte a 20 bit erano estremamente comuni nelle "macchine IAS", negli anni '50. 6, 12, 18 (e forse 36) erano piuttosto popolari in una varietà di architetture negli anni '60, '70 e fino agli anni '80.

Alla fine, avere una buona corrispondenza tra "poteri di 2" e "bit in un'unità indirizzabile" sembra aver vinto.

    
risposta data 23.09.2013 - 16:55
fonte
1

Secondo le mie informazioni la parola byte stessa era derivata dalla frase by-eight che era composta da otto (8) bit di parole. la convenienza che troviamo nelle parole da 8 bit è la conversione in valori esadecimali dal valore 00000000 = 00 & 11111111 = FF (Dic 255 per non firmato e -127 per firmato) è facile eseguire tutte le operazioni aritmetiche su tale struttura, comprese le operazioni bit-a-campo.

Vedo byte (parole da 8 bit) come un'evoluzione naturale delle dimensioni delle parole da 3 bit catastroficamente piccoli fino a parole di 60 bit ridicolmente grandi

    
risposta data 17.11.2011 - 05:54
fonte
1

In primo luogo un po 'di chiarimento: gli ottetti (unità a 8 bit) non sono in realtà un'unità fondamentale nelle moderne architetture di computer. Almeno non più fondamentale delle altre potenze di due - 2, 4, 16, 32, 64, 128 ecc. Gli ottetti erano l'unità fondamentale per processori a 8 bit (da cui il nome!), Ma le architetture moderne di solito funzionano con bit più grandi -set internamente. Per esempio. il x86_64 ha registri interi a 64 bit e registri a virgola mobile a 80 bit. La RAM viene letta e scritta in blocchi a 64 bit e il processore usa solo un po 'di magia per far sembrare che sia possibile indirizzare singoli byte da 8 bit.

Per le architetture precedenti, "byte" indicava la dimensione del bus dati e, come afferma la domanda originale, esistevano molte diverse dimensioni di bus (4, 5, 6, 8, 12 ecc.). Ma dal 1993 un byte è stato definito come 8 bit, in modo da avere un'unità SI standardizzata per le dimensioni dei dati. Quindi il significato di "byte" è passato dall'essere un'unità dipendente dall'architettura a un'unità standardizzata indipendente dall'architettura.

Quindi in questi giorni, i byte sono l'unità standard per indirizzare e quantificare i dati, ma non sono altrimenti fondamentali altrimenti.

L'unità degli ottetti è diventata lo standard de facto per lo storage principalmente a causa delle preoccupazioni relative alla memorizzazione del testo. Per memorizzare il testo, preferisci che un byte memorizzi un carattere. Due fattori erano importanti:

  • Avere unità che sono potenze di due (2, 4, 8, 16, 32 ecc.) è più conveniente quando si progettano sistemi digitali.
  • 8-bit è sufficiente per memorizzare un singolo carattere nel set di caratteri ASCII (con spazio sufficiente per estendere il set di caratteri per supportare dire in cirillico).

Ovviamente 8 bit non sono sufficienti per supportare tutti gli script - qualcosa come il giapponese richiede almeno 16 bit (e per quello che vale, Unicode è 21 bit), ma in quel momento i bit erano costosi e la maggior parte digitali il testo era comunque nella gamma ASCII.

In questi giorni, il testo viene tipicamente memorizzato in codifiche a larghezza variabile come UTF-8 e, con elementi come la combinazione di caratteri Unicode, il "un byte è uguale a un carattere" è da tempo un ricordo del passato. Il byte di oggi è davvero solo lo standard per ragioni storiche.

    
risposta data 30.07.2018 - 17:17
fonte
0

Un byte non deve essere 8 bit , ma sembra che C e C ++ definiscano un byte come minimo di 8 bit (anche se potrebbe essere più). Questa domanda su Stack Overflow menziona alcuni sistemi in cui 1 byte non è 8 bit .

    
risposta data 16.11.2011 - 21:02
fonte

Leggi altre domande sui tag