2009-10-19 10 views
8

Pourquoi les ordinateurs ont-ils une mémoire adressable par octet, et non une mémoire adressable sur 4 octets (ou une mémoire adressable sur 8 octets pour 64 bits)? Oui, je vois à quel point ça peut être utile parfois, ça semble juste inélégant et excessif. Est-ce que les avantages sont substantiels, ou est-ce vraiment à cause de l'héritage?Pourquoi une mémoire adressable par octet et pas une mémoire adressable sur 4 octets?

+0

Fondamentalement: Pourquoi couper une pizza en 8 tranches? Attendez quoi, vous avez coupé votre pizza en 16 tranches!?!? –

Répondre

6

Processeurs effectivement do accéder à la mémoire en quantités de 64 bits (x86 fait depuis Pentium ou plus); Les processeurs 64 bits ont souvent un bus de 128 bits. De plus, en accédant à la mémoire principale, vous avez des salves qui remplissent toute une ligne de cache, ce qui est encore plus grand.

C'est uniquement l'adressage basé octet; cela ajoute peu de frais généraux et n'est pas excessif du tout. Aujourd'hui, vous avez absolument besoin d'un adressage par octet pour les protocoles réseau. Implémenter TCP avec l'adressage basé sur le mot serait difficile: que voulez-vous lire() si vous avez reçu 17 octets? De même, les couches supérieures sont basées sur des octets: HTTP serait assez difficile à implémenter si vous obtenez une ligne de requête comme "GET/HTTP/1.0" présentée en unités de quatre octets. Vous devriez essentiellement diviser les mots en octets avec des opérations de décalage et tel (que maintenant les processeurs font dans le matériel, grâce à l'adressage par octet).

+0

Sur une CPU adressée par un mot, la carte réseau peut stocker chaque octet de réseau dans un mot machine (et inversement pour transmettre). Ou pour le cas le plus probable d'empaquetage de 4 octets en mots de 32 bits (comme Alpha AXP, qui n'avait pas d'instructions byte-load/byte-store dans les premières versions), votre exemple TCP retournerait 17, et ce serait au logiciel traiter le rembourrage dans le dernier mot en utilisant un décalage.(Alpha était en quelque sorte adressable par octet, mais il ne prenait en charge que les chargements de mots de 32 ou 64 bits alignés, avec quelques hacks pour l'espace d'adressage des E/S. 8.html) –

+0

Alpha a ajouté plus tard charges/magasins d'octets, mais il a certainement pris en charge TCP (en utilisant les cartes réseau PCI normales, AFAIK) sans eux. Cela en faisait effectivement une machine adressée par mot, mais avec les bits faibles de l'adresse 64 bits ignorés (ou requis pour être 0?) Au lieu de ne pas être présents. –

7

Principalement pour des raisons historiques - c'est devenu la norme que les CPU comprennent. Here est une bonne discussion à ce sujet:

En général, une taille doit être choisi pour être pratique pour les données et instructions de la machine. 8 bits (256 valeurs) est suffisant pour accueillir caractères communs en anglais et certains autres langues. Les concepteurs de processeurs 8 bits ont probablement trouvé que capable de coder 256 instructions communes comme un octet était un "compromis raisonnable ". Et à l'époque, 8 bits était également assez généralement pour coder d'autres choses comme comme une couleur de pixel ou coordonnée d'écran. Avoir une taille d'octet qui est une puissance de 2 peut également avoir été ressenti comme une conception "plus propre". Il est intéressant de noter que, pour exemple, Marxer, E. (1974), Éléments de traitement des données, décrit un octet comme étant soit 6 bits et 8 bits selon que l'ordinateur était du Type "octal" ou "hexadécimal".

Certainement, d'autres tailles ont été utilisées dans les premiers jours.

0

Nous avions besoin de nous fixer sur une certaine taille pour la standardisation. Les gens ont choisi la taille de 8 bits pour les raisons mentionnées par Shane ci-dessus. depuis lors, nous sommes coincés avec octet mémoire adressable. maintenant, il est impossible de changer en raison de divers problèmes de compatibilité et le fait que les OPCODES sont un octet seulement. mais en utilisant une astuce, la mémoire est facilement rendue mot-à-propos pour aller chercher/stocker des données/adresses!

Questions connexes