Warum Byte-adressierbaren Speicher und nicht 4-Byte-adressierbaren Speicher?

8

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?

    
willhf 19.10.2009, 04:24
quelle

3 Antworten

6

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).

    
Martin v. Löwis 19.10.2009, 04:48
quelle
7
___ answer4999025 ___

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!

    
___ answer586970 ___

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.

    
___ qstntxt ___

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?

    
___ answer1587007 ___

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).

    
___ tag123memory ___ Verwenden Sie dieses Tag für die Speicherverwaltung oder Probleme beim Programmieren. Bei Fragen zu Speicherhardwareproblemen oder Fehlern in allgemeiner Software rufen Sie https://superuser.com oder https://serverfault.com auf, wenn dies mit Hardware oder Software auf Unternehmensebene zu tun hat. ___ qstnhdr ___ Warum Byte-adressierbaren Speicher und nicht 4-Byte-adressierbaren Speicher? ___
Shane C. Mason 19.10.2009 04:34
quelle
0

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!

    
KawaiKx 15.02.2011 01:06
quelle

Tags und Links