Question

Nous avons des architectures matérielles et des systèmes d’exploitation 8 bits, 16 bits, 32 bits et 64 bits. Mais pas, disons, les 42 bits ou 69 bits.

Pourquoi? Est-ce quelque chose de fondamental qui fait de 2 ^ n bits un meilleur choix ou est-ce juste une question de compatibilité avec les systèmes existants? (Il est évidemment pratique qu'un registre 64 bits puisse contenir deux pointeurs 32 bits ou qu'une unité de données 32 bits puisse contenir 4 octets.)

Était-ce utile?

La solution

C’est surtout une question de tradition. Ce n'est même pas toujours vrai. Par exemple, les unités à virgule flottante des processeurs (même les plus modernes) possèdent des registres à 80 bits. Et rien ne nous oblige à utiliser des octets de 8 bits au lieu d’octets de 13 bits.

Parfois, cela a un raisonnement mathématique. Par exemple, si vous décidez d’avoir un octet de N bits et que vous souhaitez effectuer une multiplication d’entier, vous avez besoin d’exactement 2N bits pour stocker les résultats. Ensuite, vous souhaitez également ajouter / soustraire / multiplier ces nombres entiers de 2N bits et vous avez maintenant besoin de registres à usage général de 2N bits pour stocker les résultats d’addition / soustraction et de registres de 4N bits pour stocker les résultats de multiplication.

Autres conseils

http://en.wikipedia.org/wiki/Word_%28computer_architecture % 29 # Word_size_choice

  

Différentes quantités de mémoire sont utilisées pour stocker les valeurs de données avec différents degrés de précision. Les tailles couramment utilisées sont généralement une puissance de 2 multiples de l'unité de résolution d'adresse (octet ou mot). La conversion de l'index d'un élément d'un tableau en l'adresse de l'élément ne nécessite alors qu'une opération de décalage plutôt qu'une multiplication. Dans certains cas, cette relation peut également éviter l'utilisation d'opérations de division. En conséquence, la plupart des conceptions informatiques modernes ont des tailles de mot (et d’autres tailles d’opérandes) d’une puissance égale à 2 fois la taille d’un octet.

En partie, c’est une question d’adresse. Le fait d'avoir N bits d'adresse vous permet d'adresser au plus 2 ^ N bits de mémoire, et les concepteurs de matériel préfèrent utiliser au mieux cette capacité. Donc, vous pouvez utiliser 3 bits pour adresser le bus 8 bits, etc.

Le vénérable PDP-10 était de 36 bits.

De nombreuses (la plupart?) premières UC préprocesseurs ont un nombre de bits par mot qui n’est pas égal à deux.

En particulier, Seymour Cray et son équipe ont construit de nombreuses machines très influentes avec des tailles de mot et d’adresse non puissantes - 12 bits, 48 ??bits, 60 bits, etc.

Un nombre étonnamment élevé d'anciens ordinateurs contenaient des mots de 36 bits, ce qui est entièrement dû au fait que les humains ont 10 doigts. Le Wikipedia " 36-bit " Cet article contient plus de détails sur la relation entre 10 doigts et 36 bits, ainsi que des liens vers des articles sur de nombreuses tailles de bits d’importance historique mais qui ne sont plus populaires, la plupart d’entre elles n’ayant pas une puissance de deux.

Je suppose que

(a) La mémoire adressable de 8 bits est devenue populaire parce qu'elle était légèrement plus pratique pour stocker des BCD et ASCII 7 bits, sans empaquetage fastidieux ni gaspillage de plusieurs bits par caractère. et aucune autre largeur de mémoire n’avait un grand avantage.

(b) Comme le souligne Stephen C. Steel, ce petit avantage est multiplié par les économies d’échelle et les forces du marché - des mémoires plus larges sont utilisées, de sorte que les économies d’échelle les rendent légèrement moins chères, ce qui conduit à: encore plus de mémoires de 8 bits utilisées dans les nouvelles conceptions, etc.

(c) Les largeurs de bus plus larges ont théoriquement rendu un processeur plus rapide, mais le fait de le placer entièrement sur une seule puce le rendait beaucoup moins cher et peut-être légèrement plus rapide que n’importe quel système de CPU multi-parties précédent, quelle que soit la largeur du bus. Au début, il y avait à peine assez de transistors pour un processeur 4 bits, puis un processeur 8 bits. Plus tard, il y avait à peine assez de transistors pour un processeur 16 bits, pour une énorme fanfare et "16 bits". campagne de marketing. À peu près à l’époque, on pouvait s’attendre à un processeur 24 bits ...

(d) La révolution RISC a été déclenchée. Les deux premières puces RISC avaient 32 bits, quelle qu'en soit la raison, et les gens avaient été conditionnés à penser que "plus de bits sont meilleurs", aussi chaque fabricant a-t-il sauté dans le train de 32 bits. En outre, IEEE 754-1985 a été normalisé avec des nombres à virgule flottante 32 bits et 64 bits. Il y avait des processeurs 24 bits, mais la plupart des gens n'en ont jamais entendu parler.

(e) Pour des raisons de compatibilité logicielle, les fabricants ont maintenu l’illusion d’un bus de données 32 bits, même sur des processeurs équipés d’un bus frontal 64 bits (tels que les processeurs Intel Pentium et AMD K5, etc.) ou de cartes mères dotées d’une Bus large 4 bits (bus LPC).

Votre système de mémoire veut être un multiple d'octets, ce qui fait que votre cache veut être un multiple d'octets, ce qui fait que votre système entier veut être un multiple d'octets.

En tant que concepteur matériel, vous voulez généralement concevoir des CPU avec des limites d’octets, par exemple des multiples de 8. Sinon, vous devez soit ajouter beaucoup de circuits compliqués à un système 49 bits pour le faire utiliser le mod -8 bits, ou vous finissez par ignorer les bits supplémentaires, auquel cas il s'agissait d'un gaspillage, sauf si vous aviez besoin du bit supplémentaire pour les instructions, ce qui n'est jamais le cas sur les systèmes 16 bits ou plus larges.

Comme d’autres l’ont souligné, à l’époque, les choses n’étaient pas aussi claires: les mots venaient de toutes sortes de tailles étranges.

Mais la normalisation des octets de 8 bits a également été poussée par la technologie de la puce mémoire. Au début, de nombreuses puces de mémoire étaient organisées en un bit par adresse. La mémoire pour les mots à n bits a été construite en utilisant des puces de mémoire par groupes de n (avec des lignes d’adresse correspondantes reliées ensemble et chaque bit de données de puces contribuant à un bit du mot à n bits).

À mesure que les densités de puces de mémoire ont augmenté, les fabricants ont regroupé plusieurs puces dans un seul paquet. Étant donné que les tailles de mot les plus utilisées étaient des multiples de 8 bits, la mémoire 8 bits était particulièrement appréciée: c’était aussi le moins cher. Alors que de plus en plus d'architectures ont sauté dans le train d'octets de 8 bits, le prix plus élevé des puces de mémoire qui n'utilisaient pas d'octets de 8 bits devenait de plus en plus grand. Des arguments similaires expliquent les mouvements de 8 à > 16, 16 à > 32, 32 à > 64.

Vous pouvez toujours concevoir un système avec une mémoire de 24 bits, mais cette mémoire sera probablement beaucoup plus chère qu'une conception similaire utilisant une mémoire de 32 bits. Sauf s’il existe une très bonne raison de s’en tenir au 24 bits, la plupart des concepteurs choisiraient le 32 bits lorsque c’est à la fois moins cher et plus performant.

À une époque, la longueur des mots d'un ordinateur avait tendance à être un multiple de 6 bits, car les ordinateurs utilisaient généralement des jeux de caractères de 6 bits, sans prise en charge des lettres minuscules.

IBM a fabriqué pour Los Alamos un ordinateur haute performance, le STRETCH, contenant un mot de 64 bits. Il présentait la particularité inhabituelle que des bits individuels dans la mémoire de l'ordinateur puissent être directement adressés, ce qui obligeait la longueur du mot à être une puissance de deux. Il comportait également un jeu de caractères plus étendu, qui permettait d'inclure des symboles mathématiques (en plus des minuscules); ils ont été utilisés dans un langage spécial de niveau supérieur appelé COLASL.

Lorsque IBM a lancé le très populaire système central / System / 360, même s’il ne disposait pas d’adressage de bits, il conservait l’octet de huit bits, principalement pour permettre le stockage efficace de quantités décimales compactées de quatre bits au chiffre décimal. Parce que cette machine était si populaire, elle était très influente et l’ordinateur PDP-11 de DEC a été conçu avec un mot de 16 bits et des caractères de 8 bits. La PDP-11 a également été la première véritable machine little-endian, très populaire et influente.

Mais ce n’est pas uniquement à cause de la mode. Les caractères 8 bits autorisent les minuscules et, les ordinateurs devenant de moins en moins chers, la possibilité de les utiliser facilement pour le traitement de texte a été valorisée. Et tout comme STRETCH avait besoin d’un mot d’une puissance de deux bits en bits pour permettre l’adressage facile des bits, les ordinateurs actuels devaient avoir un mot qui était un multiple de deux par la puissance 8 (ce qui s'avère être deux au troisième pouvoir lui-même) pour permettre aux personnages d’être facilement adressés.

Si nous utilisions toujours les caractères 6 bits, les ordinateurs auraient tendance à avoir des mots de 24, 48 ou 96 bits.

En rapport, mais ce n’est peut-être pas la raison, j’ai entendu dire que la convention de 8 bits dans un octet

Une raison courante est que vous pouvez numéroter vos bits en binaire. Cela est utile dans pas mal de situations. Par exemple, en bitshift ou en rotation. Vous pouvez faire pivoter une valeur de 16 bits entre 0 et 15 bits. Une tentative de rotation sur 16 bits est également triviale: cela équivaut à une rotation sur 0 bit. Et une rotation sur 1027 bits équivaut à une rotation sur 3 bits. En général, une rotation d'un registre de largeur W sur N bits équivaut à une rotation sur N modulo W, et l'opération "modulo W" est trivial quand W est une puissance de 2.

Les modèles 80186, 8086, 8088 et "Mode réel" sur les processeurs 80286 et ultérieurs, un système d’adressage mémoire segmenté de 20 bits était utilisé. Le 80286 avait 24 lignes d’adresses natives, puis le 386 et plus tard 32 ou 64 lignes.

Autre exemple de compteur: les microcontrôleurs de la série PIC16C8X ont un jeu d’instructions de 14 bits de large.

L'octet est lié à l'encodage de caractères principalement du monde occidental, donc 8 bits. Le mot n'est pas lié à l'encodage, il est lié à la largeur de l'adresse et varie donc de 4 à 80, etc., etc.

Mon ancien et fidèle calculateur HP 32S mesurait 12 bits.

Parce que l’espace réservé pour l’adresse est toujours un nombre fixe de bits. Une fois que vous avez défini la taille de l'adresse fixe (ou du pointeur), vous souhaitez en tirer le meilleur parti. Vous devez donc utiliser toutes ses valeurs jusqu'au nombre maximum qu'elle peut stocker. Le nombre le plus élevé que vous pouvez obtenir avec un multiple de bit (0 ou 1) correspond toujours à une puissance de deux

Les ICL 1900 étaient tous de 24 bits (mots). Je parie qu'il n'y a pas beaucoup de gens qui s'en souviennent. Vous faites ??

Nous avons, il suffit de regarder les microcontrôleurs PIC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top