Was müssen die historischen Kräfte tun, um Kompromisse zu schließen, wenn sie sich entscheiden, Gruppen von acht Bits als Grundeinheit zu verwenden?
Früher gab es Maschinen, die andere Wortgrößen verwendeten, aber heute muss man sich wegen der Nicht-Acht-Bitigkeit mit Museumsstücken, speziellen Chips für eingebettete Anwendungen und DSPs befassen. Wie entstand das Byte aus dem Chaos und der Kreativität der frühen Tage des Computerdesigns?
Ich kann mir vorstellen, dass weniger Bits ineffektiv wären, um genügend Daten zu verarbeiten, um das Rechnen durchführbar zu machen, 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 mit der Zeit reisen könnte, würde ich zu dem Zeitpunkt zurückkehren, als das "Byte" als 8 Bit deklariert wurde, und alle überzeugen, es auf 12 Bit zu bringen und sie mit einigen Schmuckstücken des frühen 21. Jahrhunderts zu bestechen.)
Antworten:
Es wurde sehr früh mit 5-Bit-Baudot-Codes gearbeitet, aber diese wurden schnell ziemlich einschränkend (nur 32 mögliche Zeichen, also im Grunde nur Großbuchstaben und ein paar Satzzeichen, aber nicht genug "Platz" für Ziffern). .
Von dort gingen etliche Maschinen auf 6-Bit-Zeichen über. Dies war jedoch immer noch ziemlich unzureichend - wenn Sie Groß- und Kleinbuchstaben und Ziffern (Englisch) wollten, blieben nur zwei weitere Zeichen zur Interpunktion übrig, sodass die meisten nur noch einen Buchstaben in einem Zeichensatz hatten.
ASCII definiert 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 (ISO 646, ISO 8859, Unicode, ISO 10646 usw.) gebildet.
Binärcomputer motivieren Designer, Größenpotenzen von zwei zu erreichen. Da der "Standard" -Zeichensatz ohnehin 7 Bit benötigte, war es keine große Anstrengung, ein weiteres Bit hinzuzufügen, um eine Potenz von 2 zu erhalten (und zu diesem Zeitpunkt wurde der Speicherplatz billiger genug, um für die meisten Zeichen etwas "zu verschwenden" war auch akzeptabler).
Seitdem sind die Zeichensätze auf 16 und 32 Bit verschoben worden, aber die meisten gängigen Computer basieren größtenteils auf dem ursprünglichen IBM PC. Andererseits ist der Markt mit 8-Bit-Zeichen hinreichend zufrieden, so dass ich nicht sicher bin, ob jeder mit größeren Zeichen alles machen würde, auch 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 bestimmt. Windows, Java usw. sind vor langer Zeit auf 16-Bit-Zeichen umgestiegen.
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 größtenteils auf die Schwierigkeit, i18n im Allgemeinen zu unterstützen. In ASCII (zum Beispiel) ist das Erkennen, ob ein Buchstabe in Groß- oder Kleinbuchstaben geschrieben ist, oder das Konvertieren zwischen den beiden unglaublich trivial. In vollem Unicode / ISO 10646 ist es im Grunde genommen unbeschreiblich komplex (bis zu dem Punkt, an dem die Standards es nicht einmal versuchen - sie geben Tabellen, keine Beschreibungen). Dann fügen Sie in der Tatsache , dass für einige Sprachen / Zeichensätze, auch die Grundidee von Groß- / Kleinschreibung nicht gilt. Hinzu kommt, dass das Anzeigen von Zeichen in einigen von ihnen 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.
quelle
Sieben Bits für ASCII-Informationen und eines für die Fehlererkennungsparität.
quelle
Werfen Sie einen Blick auf die Wikipedia-Seite zur 8-Bit-Architektur . Obwohl die Zeichensätze 5-, 6- und dann 7-Bit sein konnten, verwendete die zugrunde liegende CPU / Speicher-Busarchitektur immer Potenzen von 2. Der allererste Mikroprozessor (um 1970) verfügte über einen 4-Bit-Bus, was bedeutet, dass ein Befehl 4-Bit verschieben konnte. Datenbits zwischen externem Speicher und der CPU.
Mit der Freigabe des 8080-Prozessors wurde die 8-Bit-Architektur populär und dies gab den Beginn des x86-Assembler-Befehlssatzes, der bis heute verwendet wird. Wenn ich raten musste, stammte das Byte von diesen frühen Prozessoren, bei denen das Mainstream-Publikum begann, PCs und 8-Bit-Dateien zu akzeptieren und damit zu spielen, was als Standardgröße für eine einzelne Dateneinheit angesehen wurde.
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 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 davon ausgehen, dass es durch eine ständige Verdoppelung (statt einer Steigerung um 50%) einfacher war, neue Hardware zu entwickeln, die mit vorhandenen Anwendungen und anderen Legacy-Komponenten koexistiert. Wenn sie zum Beispiel von 8 auf 16 Bit gingen, konnte jeder Befehl jetzt 2 Bytes anstelle von 1 verschieben, sodass Sie sich einen Taktzyklus sparen, das Endergebnis jedoch dasselbe ist. Wenn Sie jedoch von einer 8- auf eine 12-Bit-Architektur wechseln, werden Sie die ursprünglichen Daten in zwei Hälften aufteilen und die Verwaltung könnte ärgerlich werden. Dies sind nur Vermutungen, ich bin nicht wirklich ein Hardware-Experte.
quelle
Ein Byte besteht aus (mindestens) 1, 4, 6, 7, 8, 9, 12, 18, 20 und möglicherweise 36 Bits, je nachdem, welchen Computer Sie betrachten. Ich verstehe "Byte" hier als "kleinste adressierbare Speichereinheit", anstatt irgendeine Art von textzentrierter Interpretation zu verwenden. (Zum Beispiel die Saturn-CPU, eine 64-Bit-CPU, die in der beliebten HP48SX / GX-Rechnerzeile verwendet wird.)
Die 20-Bit-Bytes waren in den "IAS-Maschinen" in den 50er Jahren extrem verbreitet. 6, 12, 18 (und vielleicht 36) waren in den 60er, 70er und bis zu einem gewissen Grad 80er Jahren in einer Vielzahl von Architekturen sehr beliebt.
Am Ende scheint eine gute Entsprechung zwischen "Potenzen von 2" und "Bits in einer adressierbaren Einheit" gewonnen zu haben.
quelle
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ößerem Bit -sets intern. Beispielsweise hat der x86_64 64-Bit-Integer-Register und 80-Bit-Floating-Point-Register. RAM wird in 64-Bit-Blöcken gelesen und geschrieben, und der Prozessor verwendet nur ein bisschen Magie, damit es so aussieht, als ob Sie einzelne 8-Bit-Bytes adressieren können.
Für ältere Architekturen gab "Byte" die Größe des Datenbusses an, und wie die ursprüngliche Frage angibt, gab es viele verschiedene Busgrößen (4, 5, 6, 8, 12 usw.). Seit 1993 ist ein Byte jedoch als 8 Bit definiert , 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 für die Adressierung und Quantifizierung von Daten, ansonsten jedoch nicht wirklich grundlegend.
Octets-Einheit wurde zum De-facto-Standard für die Speicherung, vor allem aufgrund von Bedenken hinsichtlich der Speicherung von Text. Zum Speichern von Text möchten Sie im Idealfall, dass ein Byte ein Zeichen speichert. Zwei Faktoren waren wichtig:
Natürlich reichen 8-Bit nicht aus, um alle Skripte zu unterstützen - so etwas wie Japanisch erfordert mindestens 16 Bit (und was es wert ist, Unicode ist 21 Bit), aber zu diesem Zeitpunkt waren Bits teuer und die meisten digitalen Texte in der ASCII-Bereich sowieso.
Heutzutage wird Text in der Regel in Codierungen mit variabler Breite wie UTF-8 gespeichert, und mit Unicode-Zeichenkombinationen gehört das "Ein Byte entspricht einem Zeichen" längst der Vergangenheit an. Das heutige Byte ist aus historischen Gründen eigentlich nur der Standard.
quelle
Nach meinen Informationen wurde das Wort Byte selbst aus der Phrase by-eight 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 vorzeichenlose) 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
quelle
Ein Byte muss nicht aus 8 Bits bestehen , aber anscheinend definieren C und C ++ ein Byte als mindestens 8 Bits (obwohl es auch mehr sein könnte). In dieser Frage zum Stapelüberlauf werden einige Systeme erwähnt, bei denen 1 Byte nicht 8 Bit ist.
quelle
CHAR_BITS
Makro)