Warum haben Computer byte-adressierbaren Speicher und nicht 4-Byte-adressierbaren Speicher (oder 8-Byte-adressierbaren Speicher für 64-Bit)? Ja, ich sehe, wie es manchmal nützlich sein könnte, es scheint einfach unelegant und übertrieben. Sind die Vorteile substanziell oder liegt es wirklich nur an Legacy?
Prozessoren tun tatsächlich Speicher in Mengen von 64-Bit (x86 seit Pentium oder so); 64-Bit-Prozessoren haben oft einen 128-Bit-Bus. Außerdem haben Sie beim Zugriff auf den Hauptspeicher Bursts, die eine ganze Cache-Zeile füllen, was noch größere Speichereinheiten sind.
Es ist nur die Adressierung, die Byte-basiert ist; das bringt wenig Overhead und ist überhaupt nicht übertrieben.
Heute benötigen Sie unbedingt eine Byte-basierte Adressierung für Netzwerkprotokolle. Die Implementierung von TCP mit wordbasierter Adressierung wäre schwierig: Was soll read () zurückgeben, wenn das, was Sie erhalten haben, 17 Bytes enthält? In ähnlicher Weise sind höhere Schichten bytebasiert: HTTP wäre ziemlich schwierig zu implementieren, wenn eine Anforderungszeile wie "GET / HTTP / 1.0" in Einheiten von vier Bytes dargestellt wird. Sie müssten die Wörter im Wesentlichen mit Shift-Operationen und Ähnlichem in Bytes aufteilen (was die Prozessoren jetzt dank bytebasierter Adressierung in Hardware tun).
Wir mussten uns auf eine gewisse Größe für die Standardisierung einstellen. Die Leute wählten die 8-Bit-Größe aus den oben erwähnten Gründen. Seitdem sind wir mit byteadressierbarem Speicher festgefahren. jetzt ist es unmöglich, aufgrund verschiedener Kompatibilitätsprobleme und der Tatsache, dass OPCODES nur ein Byte lang sind, zu ändern. aber mit einem Trick, Speicher ist leicht wort-adressierbar zum Abrufen / Speichern von Daten / Adressen!
Weitgehend historische Gründe - es ist zum Standard geworden, den CPUs verstehen. Hier ist eine gute Diskussion darüber:
Im Allgemeinen muss eine Größe gewählt werden sowohl für Daten als auch für Maschinenanweisungen. 8 Bits (256 Werte) ist genug, um unterzubringen gemeinsame Charaktere in Englisch und anderen andere Sprachen. Designer von 8-Bit vermutlich haben Prozessoren das gefunden kann 256 gemeinsame Anweisungen kodieren als ein Byte war ein "vernünftig Kompromiss ". Und zu der Zeit waren 8 Bits auch allgemein genug, um andere zu kodieren Dinge wie eine Pixelfarbe oder Bildschirmkoordinate. Eine Bytegröße haben das ist eine Potenz von 2 kann auch haben wurde als ein "ordentliches" Design empfunden. Es Interessant ist, dass z Beispiel, Marxer, E. (1974), Elemente von Datenverarbeitung, beschreibt ein Byte als entweder 6-Bit und 8-Bit abhängig davon, ob der Computer war vom Typ "oktal" oder "hexadezimal".
Sicher wurden andere Größen in den frühen Tagen verwendet.
Warum haben Computer byte-adressierbaren Speicher und nicht 4-Byte-adressierbaren Speicher (oder 8-Byte-adressierbaren Speicher für 64-Bit)? Ja, ich sehe, wie es manchmal nützlich sein könnte, es scheint einfach unelegant und übertrieben. Sind die Vorteile substanziell oder liegt es wirklich nur an Legacy?
Prozessoren tun tatsächlich Speicher in Mengen von 64-Bit (x86 seit Pentium oder so); 64-Bit-Prozessoren haben oft einen 128-Bit-Bus. Außerdem haben Sie beim Zugriff auf den Hauptspeicher Bursts, die eine ganze Cache-Zeile füllen, was noch größere Speichereinheiten sind.
Es ist nur die Adressierung, die Byte-basiert ist; das bringt wenig Overhead und ist überhaupt nicht übertrieben.
Heute benötigen Sie unbedingt eine Byte-basierte Adressierung für Netzwerkprotokolle. Die Implementierung von TCP mit wordbasierter Adressierung wäre schwierig: Was soll read () zurückgeben, wenn das, was Sie erhalten haben, 17 Bytes enthält? In ähnlicher Weise sind höhere Schichten bytebasiert: HTTP wäre ziemlich schwierig zu implementieren, wenn eine Anforderungszeile wie "GET / HTTP / 1.0" in Einheiten von vier Bytes dargestellt wird. Sie müssten die Wörter im Wesentlichen mit Shift-Operationen und Ähnlichem in Bytes aufteilen (was die Prozessoren jetzt dank bytebasierter Adressierung in Hardware tun).
Wir mussten uns auf eine gewisse Größe für die Standardisierung einstellen. Die Leute wählten die 8-Bit-Größe aus den oben erwähnten Gründen. Seitdem sind wir mit byteadressierbarem Speicher festgefahren. jetzt ist es unmöglich, aufgrund verschiedener Kompatibilitätsprobleme und der Tatsache, dass OPCODES nur ein Byte lang sind, zu ändern. aber mit einem Trick, Speicher ist leicht wort-adressierbar zum Abrufen / Speichern von Daten / Adressen!
Tags und Links memory