Pourquoi les ordinateurs ont-ils une mémoire adressable d'octets, et non une mémoire adressable à 4 octets (ou une mémoire adressable à 8 octets pour 64 bits)? Oui, je vois comment cela pourrait être utile parfois, il semble juste inélégant et excessif. Les avantages sont-ils substantiels, ou est-ce vraiment juste à cause de l'héritage? P>
3 Réponses :
Des raisons largement historiques - il est devenu la norme que les processeurs comprennent. ici est une bonne discussion sur celle-ci: P>
Généralement, une taille doit être choisie pour être pratique pour les deux données et Instructions de la machine. 8 bits (256 les valeurs) suffisent pour accueillir caractères communs en anglais et certains autres langues. Designers de 8 bits les processeurs ont considérablement constaté qu'être capable d'encoder 256 instructions communes Comme un octet était un "raisonnable compromis ». Et à l'époque, 8 bits étaient également assez généralement pour coder d'autres des choses telles qu'une couleur de pixel ou Coordonnée à l'écran. Avoir une taille d'octet c'est une puissance de 2 mai aussi avoir été ressenti d'être un design "Néater". Ce est intéressant de noter que, pour Exemple, Marxère, E. (1974), Éléments du 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". p> blockQuote>
Certainement, d'autres tailles ont été utilisées au début de la journée. P>
processeurs réellement la mémoire d'accès em> en quantités de 64 bits (X86 a-t-elle fait depuis Pentium; Les processeurs 64 bits ont souvent un bus de 128 bits. De plus, dans l'accès à la mémoire principale, vous avez des rafales qui remplissent une ligne de cache entière, qui est encore plus grande unités de mémoire. P>
Ce n'est que l'adressage qui est basé sur des octets; Cela ajoute peu de frais généraux et n'est pas excessif du tout. P>
Aujourd'hui, vous avez absolument besoin d'adressage basé sur des octets pour les protocoles de réseautage. La mise en œuvre de TCP avec une adressage basée sur Word serait difficile: que voulez-vous lire () de revenir si ce que vous avez reçu où 17 octets? De même, les couches supérieures sont basées sur des octets: HTTP serait assez difficile à mettre en œuvre si vous obtenez une ligne de demande comme "get / http / 1.0" être présentée en unités de quatre octets. Vous devrez essentiellement diviser les mots en octets avec des opérations de décalage et tels que les processeurs font maintenant dans le matériel, grâce à l'adressage basé sur des octets). P>
Sur une CPU adressée à un mot, la carte réseau pourrait stocker chaque octet de réseau dans un mot de la machine (et inversement pour la transmission). Ou pour le cas plus probable de l'emballage de 4 octets dans des mots 32 bits (comme Alpha Axp, qui n'avait pas d'instructions d'octet-charge / octet-Store dans les premières versions), votre exemple TCP reviendrait 17, et ce serait un logiciel. Pour faire face au rembourrage dans le dernier mot en utilisant un quart de travail. (Alpha était en quelque sorte adressable d'octet, mais il ne supportait que des marques / magasins de mots alignés 32 ou 64 bits, avec quelques hacks pour l'espace d'adressage d'E / S. tldp.org/howto/alpha-howto-8.html )
Les charges / magasins d'octets ajoutés alpha, mais il a certainement pris en charge TCP (en utilisant des cartes réseau PCI normales, AFAIK) sans eux. Cela a fait de cela efficacement une machine adressée à un mot, mais avec les bits faibles de l'adresse 64 bits étant ignorés (ou doit être 0?) Au lieu de ne pas présenter.
Nous devions nous installer sur une certaine taille pour la normalisation. Les gens ont choisi la taille de 8 bits pour les raisons mentionnées par Shane ci-dessus. Depuis lors, nous sommes bloqués avec la mémoire adressable d'octet. Il est maintenant impossible de changer en raison de diverses questions de compatibilité et du fait que les opérations de fonctionnement sont une octet seulement seulement. Mais en utilisant une astuce, la mémoire est facilement rendue par Word--Adressable pour rechercher / stocker des données / adresses! p>
Fondamentalement: pourquoi couper une pizza en 8 tranches? Attendez quoi, tu as coupé ta pizza dans 16 tranches!?!?