Qu'est-ce que les forces historiques à l'œuvre, les compromis à faire, en décidant d'utiliser des groupes de huit bits comme unité fondamentale?
Il était une fois des machines qui utilisaient d'autres tailles de mots, mais aujourd'hui, pour les non-huit bits, vous devez vous tourner vers les pièces de musée, les puces spécialisées pour les applications intégrées et les DSP. Comment l'octet est-il né du chaos et de la créativité des débuts de la conception informatique?
J'imagine que moins de bits serait inefficace pour traiter suffisamment de données pour rendre l'informatique possible, alors qu'un trop grand nombre aurait conduit à un matériel coûteux. Y a-t-il eu d'autres influences en jeu? Pourquoi ces forces se sont-elles équilibrées jusqu'à huit bits?
(En passant, si je pouvais voyager dans le temps, je reviendrais au moment où le "octet" aurait été déclaré comme étant de 8 bits et je convaincrais tout le monde de le faire en 12 bits, en les corrompant avec des babioles du début du 21ème siècle.)
Réponses:
Beaucoup de travail très tôt a été fait avec des codes baudot 5 bits, mais ceux-ci sont rapidement devenus assez contraignants (seulement 32 caractères possibles, donc essentiellement des lettres majuscules et quelques signes de ponctuation, mais pas assez d'espace pour les chiffres) .
De là, plusieurs machines sont passées aux caractères 6 bits. Cela restait cependant assez insuffisant - si vous vouliez des lettres et des chiffres en majuscules et minuscules (anglais), il ne restait plus que deux caractères pour la ponctuation, de sorte que la plupart n'avaient encore qu'un seul cas de lettres dans un jeu de caractères.
ASCII définit un jeu de caractères 7 bits. Cela a été "assez bon" pour de nombreuses utilisations pendant longtemps et a également été à la base de la plupart des jeux de caractères les plus récents (ISO 646, ISO 8859, Unicode, ISO 10646, etc.).
Les ordinateurs binaires motivent les concepteurs à faire des tailles de deux. Comme le jeu de caractères "standard" nécessitait de toute façon 7 bits, ajouter un bit de plus pour obtenir une puissance de 2 n'était pas vraiment compliqué (et à ce moment-là, le stockage devenait suffisamment moins cher que "gaspiller" un peu pour la plupart des personnages était plus acceptable aussi).
Depuis lors, les jeux de caractères sont passés aux formats 16 et 32 bits, mais la plupart des ordinateurs grand public sont largement basés sur le PC IBM d'origine. Là encore, le marché est suffisamment satisfait des caractères 8 bits que, même si le PC n’avait pas encore atteint son niveau de domination actuel, je ne suis pas sûr que tout le monde ferait tout avec des caractères plus gros.
Je devrais aussi ajouter que le marché a pas mal changé. Dans le marché actuel, la taille des caractères est moins définie par le matériel que par le logiciel. Windows, Java, etc., sont passés depuis longtemps aux caractères 16 bits.
Or, la difficulté à prendre en charge les caractères 16 ou 32 bits n’est que très peu liée aux difficultés inhérentes aux caractères 16 ou 32 bits eux-mêmes, et en grande partie à la difficulté de prendre en charge l’impression en général. En ASCII (par exemple), détecter si une lettre est en majuscule ou en minuscule, ou effectuer une conversion entre les deux, est extrêmement simple. En plein Unicode / ISO 10646, la complexité est indescriptible (au point que les normes n'essayent même pas - elles donnent des tableaux, pas des descriptions). Ensuite, vous ajoutez le fait que pour certaines langues / jeux de caractères, même l’ idée de base des majuscules / minuscules ne s’applique pas. Vous ajoutez ensuite le fait que même afficher des caractères dans certains d’entre eux est beaucoup plus complexe encore.
Tout cela est suffisamment complexe pour que la grande majorité des logiciels n'essayent même pas. La situation s'améliore lentement, mais lentement, c'est le mot clé.
la source
Sept bits pour les informations ASCII et un pour la parité de détection d'erreur.
la source
Jetez un coup d'œil à la page Wikipedia sur l'architecture 8 bits . Bien que les jeux de caractères puissent être constitués de 5, 6, puis 7 bits, l'architecture sous-jacente processeur / mémoire utilise toujours des puissances de 2. Le tout premier microprocesseur (autour des années 1970) possédait un bus à 4 bits, ce qui signifie qu'une instruction pouvait se déplacer de 4 à 4 secondes. bits de données entre la mémoire externe et la CPU.
Puis, avec la sortie du processeur 8080, l’architecture 8 bits est devenue populaire et c’est ce qui a donné les prémices du jeu d’instructions d’assemblage x86 qui est utilisé encore de nos jours. Si je devais deviner, ces octets venaient de ces premiers processeurs, où le grand public commençait à accepter et à jouer avec les PC et où 8 bits était considéré comme la taille standard d'une seule unité de données.
Depuis lors, la taille du bus a doublé mais elle est toujours restée une puissance de 2 (c'est-à-dire 16, 32 et maintenant 64 bits). L'architecture actuelle du processeur principal est 64 bits.
Je suppose qu’en doublant toujours (au lieu de croître de 50%), il était plus facile de créer un nouveau matériel qui coexistait avec des applications existantes et d’autres composants existants. Ainsi, par exemple, lorsqu'elles passaient de 8 bits à 16 bits, chaque instruction pouvait désormais déplacer 2 octets au lieu de 1, de sorte que vous économisiez un cycle d'horloge, mais que le résultat final soit identique. Toutefois, si vous passiez d'une architecture 8 bits à 12 bits, vous finiriez par diviser les données d'origine en plusieurs parties et gérer cela pourrait devenir ennuyeux. Ce ne sont que des suppositions, je ne suis pas vraiment un expert en matériel.
la source
Un octet a été varié (au moins) à 1, 4, 6, 7, 8, 9, 12, 18, 20 et éventuellement à 36 bits, selon l’ordinateur que vous regardez. Je prends ici "octet" pour signifier "la plus petite unité de mémoire adressable", plutôt que d'utiliser une sorte d'interprétation centrée sur le texte. (Par exemple, le processeur Saturn, un processeur 64 bits utilisé dans la ligne de calcul habituelle du calculateur HP48SX / GX, adresse la mémoire en octets - 4 bits.)
Les octets de 20 bits étaient extrêmement courants dans les "machines IAS" des années cinquante. 6, 12, 18 (et peut-être 36) étaient très populaires dans diverses architectures dans les années 60, 70 et jusqu'à un certain point 80.
Au final, une bonne correspondance entre "puissance de 2" et "bits dans une unité adressable" semble avoir triomphé.
la source
Quelques précisions: les octets (unités de 8 bits) ne constituent pas vraiment une unité fondamentale dans les architectures informatiques modernes. Du moins pas plus fondamental que d'autres puissances à deux - 2, 4, 16, 32, 64, 128, etc. Les octets étaient l'unité fondamentale des processeurs 8 bits (d'où son nom!), Mais les architectures modernes fonctionnent généralement avec des bits plus gros -sets en interne. Par exemple, le x86_64 a des registres d'entiers de 64 bits et des registres de virgule flottante de 80 bits. La RAM est lue et écrite en morceaux de 64 bits, et le processeur utilise simplement un peu de magie pour donner l’impression que vous pouvez adresser des octets individuels de 8 bits.
Pour les architectures plus anciennes, "octet" indiquait la taille du bus de données et, comme l'indiquait la question initiale, de nombreuses tailles de bus différentes existaient (4, 5, 6, 8, 12, etc.). Mais depuis 1993, un octet est défini sur 8 bits afin de disposer d’une unité SI normalisée pour la taille des données. Par conséquent, la signification du mot "octet" est passée d'une unité dépendante de l'architecture à une unité normalisée indépendante de l'architecture.
Ainsi, de nos jours, les octets constituent l'unité standard d'adressage et de quantification des données, mais ils ne sont pas vraiment fondamentaux autrement.
L'unité Octets est devenue la norme de facto pour le stockage, principalement en raison de préoccupations liées au stockage de texte. Pour stocker du texte, vous souhaitez idéalement qu'un octet stocke un caractère. Deux facteurs étaient importants:
Bien sûr, 8 bits ne suffisent pas pour prendre en charge tous les scripts - quelque chose comme le japonais requiert au moins 16 bits (et pour ce que cela vaut, Unicode est de 21 bits), mais à ce moment-là, les bits étaient chers et la plupart des textes numériques la gamme ASCII quand même.
De nos jours, le texte est généralement stocké dans des encodages à largeur variable comme UTF-8, et avec des combinaisons de caractères Unicode, le "un octet est égal à un caractère" appartient depuis longtemps au passé. Aujourd'hui, l'octet n'est que la norme pour des raisons historiques.
la source
Selon mes informations, le mot octet lui-même était dérivé de l'expression "huit", qui était composée de mots de huit (8) bits. la commodité que nous trouvons dans les mots de 8 bits est la conversion en valeurs hexadécimales puisque la valeur 00000000 = 00 & 11111111 = FF (255 déc pour non signé et -127 pour signé), il est facile de faire toutes les opérations arithmétiques sur une telle structure, y compris au niveau du bit opérations.
Je vois les octets (mots de 8 bits) comme une évolution naturelle de la taille des mots, de 3 bits extrêmement petits à des mots ridiculement gros de 60 bits
la source
Un octet ne doit pas obligatoirement être de 8 bits , mais il semble que C et C ++ définissent un octet comme étant au moins de 8 bits (bien que cela puisse être plus). Cette question sur le dépassement de pile mentionne quelques systèmes où 1 octet n'est pas 8 bits.
la source
CHAR_BITS
macro)