it-swarm.com.de

Was ist die Geschichte, warum Bytes acht Bits sind?

Was sind die historischen Kräfte, die bei der Entscheidung, Gruppen von acht Bits als Grundeinheit zu verwenden, am Werk sind?

Früher gab es Maschinen, die andere Word-Größen verwendeten, aber heute müssen Sie sich für Nicht-Acht-Bit-Werte Museumsstücke, Spezialchips für eingebettete Anwendungen und DSPs ansehen. Wie hat sich das Byte aus dem Chaos und der Kreativität der frühen Tage des Computerdesigns entwickelt?

Ich kann mir vorstellen, dass weniger Bits unwirksam wären, um genügend Daten zu verarbeiten, um das Rechnen zu ermöglichen, während zu viele zu teurer Hardware geführt hätten. Waren andere Einflüsse im Spiel? Warum haben sich diese Kräfte auf acht Bits ausgeglichen?

(Übrigens, wenn ich Zeitreisen machen könnte, würde ich zurückgehen, als das "Byte" als 8 Bit deklariert wurde, und alle davon überzeugen, es 12 Bit zu machen, und sie mit einigen Schmuckstücken aus dem frühen 21. Jahrhundert bestechen.)

88
DarenW

Viele wirklich frühe Arbeiten wurden mit 5-Bit-Baudot-Codes durchgeführt, aber diese wurden schnell ziemlich einschränkend (nur 32 mögliche Zeichen, also im Grunde nur Großbuchstaben und ein wenige Satzzeichen, aber nicht genug "Platz" für Ziffern).

Von dort gingen einige Maschinen zu 6-Bit-Zeichen. Dies war jedoch immer noch ziemlich unzureichend - wenn Sie Groß- und Kleinbuchstaben und Ziffern (Englisch) wollten, blieben nur zwei weitere Zeichen für die Interpunktion übrig, sodass die meisten immer noch nur einen Buchstaben in einem Zeichensatz hatten.

ASCII definierte einen 7-Bit-Zeichensatz. Das war lange Zeit "gut genug" für viele Anwendungen und hat auch die Grundlage für die meisten neueren Zeichensätze gebildet (ISO 646, ISO 8859, Unicode, ISO 10646 usw.).

Binäre Computer motivieren Designer, Größen mit zwei Potenzen zu erstellen. Da der "Standard" -Zeichensatz ohnehin 7 Bit benötigte, war es nicht sehr schwierig, ein weiteres Bit hinzuzufügen, um eine Potenz von 2 zu erhalten (und bis dahin wurde der Speicherplatz billiger genug, um für die meisten Zeichen ein wenig "zu verschwenden" war auch akzeptabler).

Seitdem wurden die Zeichensätze auf 16 und 32 Bit verschoben. aber Die meisten Mainstream-Computer basieren größtenteils auf dem ursprünglichen IBM-PC. Andererseits ist der Markt mit 8-Bit-Zeichen so zufrieden, dass ich nicht sicher bin, ob jeder alles mit größeren Zeichen machen würde, selbst wenn der PC nicht seine derzeitige Dominanz erreicht hätte.

Ich sollte auch hinzufügen, dass sich der Markt ziemlich verändert hat. Auf dem gegenwärtigen Markt wird die Zeichengröße weniger von der Hardware als von der Software definiert. Windows, Java usw. wurden vor langer Zeit auf 16-Bit-Zeichen umgestellt.

Das Hindernis bei der Unterstützung von 16- oder 32-Bit-Zeichen ist nur minimal auf die Schwierigkeiten zurückzuführen, die 16- oder 32-Bit-Zeichen selbst inhärent sind, und hauptsächlich auf die Schwierigkeit, i18n im Allgemeinen zu unterstützen. In ASCII (zum Beispiel) zu erkennen, ob ein Buchstabe in Groß- oder Kleinbuchstaben geschrieben ist oder zwischen beiden konvertiert wird, ist unglaublich trivial. In Unicode/ISO 10646 ist es im Grunde unbeschreiblich komplex (auf den Punkt gebracht) dass die Standards es nicht einmal versuchen - sie geben Tabellen, keine Beschreibungen). Dann fügen Sie hinzu, dass für einige Sprachen/Zeichensätze sogar die grundlegende Idee von Groß-/Kleinschreibung nicht funktioniert. ' t zutreffen. Dann fügen Sie hinzu, dass sogar das Anzeigen von Zeichen in einigen von diesen noch viel komplexer ist.

Das ist alles so komplex, dass die überwiegende Mehrheit der Software es nicht einmal versucht. Die Situation verbessert sich langsam, aber langsam ist das operative Wort.

77
Jerry Coffin

Sieben Bits für ASCII Informationen und eines für die Fehlererkennungsparität.

11
DeadMG

Schauen Sie sich die Wikipedia-Seite zur 8-Bit-Architektur an . Obwohl Zeichensätze 5-, 6- und dann 7-Bit sein könnten, verwendete die zugrunde liegende CPU/Speicherbus-Architektur immer Potenzen von 2. Der allererste Mikroprozessor (um die 1970er Jahre) hatte einen 4-Bit-Bus, was bedeutet, dass ein Befehl 4- bewegen konnte. Datenbits zwischen externem Speicher und CPU.

Dann, mit der Veröffentlichung des 8080-Prozessors, wurde die 8-Bit-Architektur populär und das war der Beginn der x86-Assembly-Befehlssätze, die bis heute verwendet werden. Wenn ich raten musste, stammte das Byte von diesen frühen Prozessoren, bei denen die Mainstream-Öffentlichkeit anfing, PCs zu akzeptieren und damit zu spielen, und 8-Bit wurde als Standardgröße einer einzelnen Dateneinheit angesehen.

Seitdem hat sich die Busgröße verdoppelt, aber es blieb immer eine Potenz von 2 (dh 16-, 32- und jetzt 64-Bit). Eigentlich bin ich mir sicher, dass die Interna des heutigen Busses viel komplizierter sind als nur 64 parallele Drähte, aber Die aktuelle Mainstream-CPU-Architektur ist 64-Bit.

Ich würde annehmen, dass es durch ständige Verdoppelung (anstatt um 50% zu wachsen) einfacher war, neue Hardware zu erstellen, die mit vorhandenen Anwendungen und anderen älteren Komponenten koexistiert. Wenn sie beispielsweise von 8 Bit auf 16 Bit gingen, konnte jeder Befehl jetzt 2 Bytes anstelle von 1 verschieben. Sie sparen sich also einen Taktzyklus, aber das Endergebnis ist das gleiche. Wenn Sie jedoch von einer 8- auf eine 12-Bit-Architektur wechseln, werden Sie die Originaldaten in zwei Hälften teilen und die Verwaltung könnte ärgerlich werden. Dies sind nur Vermutungen, ich bin nicht wirklich ein Hardware-Experte.

6
DXM

Ein Byte war unterschiedlich (mindestens) 1, 4, 6, 7, 8, 9, 12, 18, 20 und möglicherweise 36 Bit, je nachdem, welchen Computer Sie betrachten. Ich verstehe hier "Byte" als "kleinste adressierbare Speichereinheit", anstatt irgendeine textzentrierte Interpretation zu verwenden. (Zum Beispiel adressiert die Saturn-CPU, eine 64-Bit-CPU, die in der beliebten HP48SX/GX-Rechnerzeile verwendet wird, den Speicher in Halbbytes - 4-Bit.)

Die 20-Bit-Bytes waren in den 50er Jahren in den "IAS-Maschinen" extrem verbreitet. 6, 12, 18 (und vielleicht 36) waren in den 60er, 70er und bis zu einem gewissen Grad in den 80er Jahren in einer Vielzahl von Architekturen sehr beliebt.

Am Ende scheint sich eine gute Entsprechung zwischen "Potenzen von 2" und "Bits in einer adressierbaren Einheit" durchgesetzt zu haben.

4
Vatine

Zunächst eine kleine Klarstellung: Oktette (8-Bit-Einheiten) sind in modernen Computerarchitekturen keine grundlegende Einheit. Zumindest nicht grundlegender als andere Potenzen von zwei - 2, 4, 16, 32, 64, 128 usw. Oktette waren die grundlegende Einheit für 8-Bit-Prozessoren (daher der Name!), Aber moderne Architekturen arbeiten normalerweise mit größeren Bits -sets intern. Z.B. Der x86_64 verfügt über 64-Bit-Ganzzahlregister und 80-Bit-Gleitkommaregister. RAM wird in 64-Bit-Blöcken gelesen und geschrieben, und der Prozessor verwendet nur ein bisschen Magie, damit es so aussieht, als könnten Sie einzelne 8-Bit-Bytes adressieren.

Bei älteren Architekturen gab "Byte" die Größe des Datenbusses an, und wie in der ursprünglichen Frage angegeben, gab es viele verschiedene Busgrößen (4, 5, 6, 8, 12 usw.). Aber seit 1993 ist ein Byte definiert als 8 Bit, um eine standardisierte SI-Einheit für Datengrößen zu haben. Daher hat sich die Bedeutung von "Byte" von einer architekturabhängigen Einheit zu einer architekturunabhängigen standardisierten Einheit geändert.

Heutzutage sind Bytes die Standardeinheit zum Adressieren und Quantifizieren von Daten, ansonsten jedoch nicht wirklich grundlegend.

Die Oktetteinheit wurde zum De-facto-Standard für die Speicherung, hauptsächlich aufgrund von Bedenken hinsichtlich der Speicherung von Text. Zum Speichern von Text möchten Sie idealerweise, dass ein Byte ein Zeichen speichert. Zwei Faktoren waren wichtig:

  • Einheiten mit Zweierpotenzen (2, 4, 8, 16, 32 usw.) sind beim Entwurf digitaler Systeme bequemer.
  • 8-Bit reicht aus, um ein einzelnes Zeichen im Zeichensatz ASCII) zu speichern (mit genügend Platz für die Erweiterung des Zeichensatzes, um beispielsweise Kyrillisch zu unterstützen).

Natürlich reichen 8-Bit nicht aus, um alle Skripte zu unterstützen - so etwas wie Japanisch benötigt mindestens 16 Bit (und für das, was es wert ist, ist Unicode 21 Bit), aber zu diesem Zeitpunkt waren Bits teuer und die meisten digitalen Texte waren vorhanden der Bereich ASCII sowieso.

Heutzutage wird Text normalerweise in Codierungen mit variabler Breite wie UTF-8 gespeichert, und bei Dingen wie Unicode, bei denen Zeichen kombiniert werden, gehört das "Ein Byte entspricht einem Zeichen" längst der Vergangenheit an. Heute ist Byte aus historischen Gründen wirklich nur der Standard.

2
JacquesB

Nach meinen Informationen wurde das Wortbyte selbst von der Phrase by-8 abgeleitet, die aus acht (8) Bit-Wörtern bestand. Die Bequemlichkeit, die wir in 8-Bit-Wörtern finden, ist die Umwandlung in hexadezimale Werte, da der Wert 00000000 = 00 & 11111111 = FF (Dez 255 für vorzeichenlose und -127 für vorzeichenbehaftete) es einfach ist, alle arithmetischen Operationen an einer solchen Struktur einschließlich bitweise durchzuführen Operationen.

Ich sehe Bytes (8-Bit-Wörter) als eine natürliche Entwicklung der Wortgrößen von katastrophal kleinen 3-Bit-Wörtern bis zu lächerlich großen 60-Bit-Wörtern

1
A.Rashad

Ein Byte muss nicht 8 Bit sein , aber es scheint, dass C und C++ ein Byte als mindestens 8 Bit definieren (obwohl es mehr sein könnte). Diese Frage zum Stapelüberlauf erwähnt einige Systeme, bei denen 1 Byte nicht 8 Bit ist.

0
Thomas Owens