Adressable par mot ou octet? Terminologie correcte

9

Apparemment, un octet s'est établi à 8 bits (est-ce exact?). La RAM et le flash NOR sont normalement accessibles à un niveau assez granulaire, mais c'est à l'architecture du système de déterminer si la plus petite unité adressable est 8 bits, 16 bits ou toute autre puissance de deux bits. La terminologie correcte serait-elle d'appeler ce mot adressable? Ou demandé différemment, un mot a-t-il la taille de la plus petite unité adressable? Ou existe-t-il un autre terme pour décrire cela?

Les mabye nibble, octet, mot, double mot sont-ils tous variables en longueur de bit et uniquement définis par l'architecture? Et ce n'est donc qu'une coïncidence qu'un octet soit toujours à 8 bits? Par exemple, quelqu'un pourrait concevoir un nouveau type de CPU et de mémoire et définir son octet sur 16 bits?

Question principale: Quel est le terme précis pour le plus petit bloc de mémoire adressable?

Question secondaire: Quel est l'antonyme de ce mot que je recherche (par exemple utilisé dans le flash NAND)? Adressable par page, adressable par bloc? Les deux sont-ils corrects ou est-il imprécis?

Franz Kafka
la source

Réponses:

9

Du point de vue de l'architecture informatique, et avec la mise en garde que la nomenclature varie parfois, en particulier lorsqu'il existe une famille d'architectures connexes qui a évolué depuis longtemps, ou lorsque le service marketing décide que les termes habituels doivent être utilisés dans un autre (soit pour mieux mettre le produit en lumière en utilisant un plus grand nombre, soit pour avoir un numéro simple pour différencier des produits plus ou moins liés).

Un mot a la taille normalement utilisée pour les opérations entières (souvent exprimée en taille de l'entier ou des registres à usage général, c'est-à-dire pas d'adresse ou de données, de bus internes ou externes, pas de registres d'adresse, pas de registres d'index). Un problème courant est que lorsqu'une architecture est une évolution d'une précédente, on garde souvent le terme mot pour la taille initiale et on utilise "mot double" ou "mot quad" pour ce qui est un mot si vous regardez l'architecture dans isolement. Historiquement, les mots n'ont pas toujours été une puissance de deux (je connais les tailles: 12, 16, 18, 24, 32, 36, 60, 64 et je ne pense pas que mes connaissances soient exhaustives).

L'adressable par mot signifie que la mémoire est considérée comme un tableau de mots, et donc aucune unité plus petite n'a d'adresse individuelle.

Un octet a différentes définitions. Le terme a été introduit pour désigner l'unité utilisée dans le codage de caractères à une époque où le codage multi-octets n'existait pas. Il est souvent utilisé pour désigner la plus petite unité adressable pour une machine qui n'est pas adressable par mot (et tant que ce n'est pas un bit). Je ne pense pas que ces deux définitions aient jamais donné une taille différente. (ni une taille différente de 6 ou 8 bits). Pour une machine adressable par mot, cela signifie souvent une unité plus petite qu'un mot pour laquelle la machine est prise en charge (par exemple, le PDP-10 - un ordinateur adressable par mot de 36 bits - avait des instructions d'octet qui pouvaient manipuler n'importe quelle taille de 1 à 35 ou 36 bits). De nos jours, c'est aussi souvent 8 bits. Souvent, plusieurs de ces définitions sont pratiquement équivalentes.

Les octets adressables caractérisent les machines où la mémoire est considérée comme un tableau d'octets dans l'une des sens ci-dessus.

Le quartet AFAIK n'a été utilisé que pour des quantités de 4 bits.

Par exemple, quelqu'un pourrait concevoir un nouveau type de CPU et de mémoire et définir son octet sur 16 bits?

Oui, mais je ne sais pas si cela aurait beaucoup de sens de le faire si l'on conserve l'utilisation de l'autorité de certification pour utiliser l'octet pour quelque chose de plus petit que le mot. Avoir un processeur 16 bits adressable par mot sans prise en charge de quelque chose de plus petit qu'un mot peut être un bon choix pour un processeur à usage spécial.

Secondairement, quel est l'antonyme de ce mot que je recherche? Adressable par page, adressable par bloc?

Les bits adressables, les octets adressables et les mots adressables sont les seuls termes que j'ai vus utiliser. Cela n'a pas beaucoup de sens de ne traiter que des unités plus grandes que le mot au niveau architectural. L'adressage par mot n'est de nos jours utilisé que pour des processeurs spéciaux tels que DSP. Je ne pense pas que l'adressabilité des bits ait été utilisée pour autre chose qu'un usage spécial, à l'exception d'IBM Stretch.

À propos de votre nouvelle question principale

Quel est le terme précis pour le plus petit bloc de mémoire adressable?

Je n'en connais aucun utilisé en architecture informatique (l' octet a été utilisé pour quelque chose de plus petit dans les machines adressables par mot), mais c'est la définition utilisée par C pour l' octet .

AProgrammer
la source
Merci pour la réponse élaborée. En relisant ma question, j'ai remarqué que j'étais un peu vague, donc je cherche toujours une réponse définitive que vous pourriez peut-être encore ajouter à votre réponse: Quel est le terme précis pour le plus petit bloc de mémoire adressable? Ou n'y en a-t-il pas? De plus, j'ai changé la phrase que vous avez citée. Merci beaucoup.
Franz Kafka
1
Les régions de bande de bits sur certains ISA de microcontrôleur peuvent compter comme adressage de bits. Une partie de l'espace d'adressage traduit les adresses de mots (au moins dans ARM Cortex-M) en adresses de bits. De toute évidence, cela ne prend en charge l'adressage binaire que pour une petite partie de l'espace d'adressage total (seulement 2 Mo sur 4 Go pour Cortex-M3). L'adressabilité du jeu d'instructions est également distincte de l'adressabilité matérielle (par exemple, la mémoire flash NAND est adressable par page, la DRAM est souvent adressable à la granularité du bloc de cache, le cache L1 est généralement la taille de charge maximale adressable [avec des écritures plus petites, ECC nécessite RMW].)
Paul A. Clayton
@ PaulA.Clayton Je ne connaissais pas le terme bande de bits mais je connaissais le 8051 qui le fournit également. Je ne considérerais pas un ISA qui le fournit comme adressable par bit pas plus que je considère le PDP-10 comme adressable par octet, il semble trop distinct du chemin de données habituel.
Programmeur le
@AProgrammer Je ne sais pas comment je définirais l'adressabilité ISA. La définition d'un tel en fonction de la plus petite unité d'adressage externe prise en charge dans une seule instruction donne une réponse différente de celle en fonction de l'unité d'adressabilité d'une "adresse / pointeur ordinaire" (ce qui exclut la bande de bits et l'adresse / le pointeur et le plus fin -mécanismes à décalage). Ce dernier (que vous avez choisi) semble plus naturel dans certains contextes, mais le premier pourrait avoir un sens dans d'autres contextes. L'atomicité (interruptions wrt ou cohérence cache cache) peut également être prise en compte (les instructions peuvent être non atomiques).
Paul A. Clayton
1
@ PaulA.Clayton, j'ai essayé de m'en tenir à ce qui semblait une pratique établie dans le domaine, mais c'est un domaine qui aime les états intermédiaires et je n'ai ni le talent ni la culture d'Andy Glew pour pouvoir donner une description exhaustive mais compréhensible.
Programmeur le
1

Le Burroughs B1700 était adressable par bits (en fait, l'adresse faisait référence à l'espace entre les bits à partir duquel vous pouviez lire en avant ou en arrière un nombre arbitraire de bits). (Ce n'était donc pas seulement IBM's Stretch, qui était un échec.)

La B1700 a été conçue pour être la machine la plus flexible. Les applications n'étaient pas censées être écrites au niveau des bits, mais des environnements différents conçus pour différents styles d'application. Ces environnements ont été programmés en microcode, fournissant les moteurs de machines virtuelles. Chaque langue (systèmes SDL pour OS, COBOL pour les entreprises, FORTRAN pour COBOL) a été écrite dans un environnement microcodé distinct. Ainsi, l'architecture pourrait être adaptée à tous les futurs styles d'application.

Wayne Wilner, l'un des concepteurs, a fait valoir que d'autres machines de l'époque obligeaient les programmeurs à se coucher dans le lit procrustéen d'octets et de mots de taille fixe. Ce dont chaque environnement d'exécution avait vraiment besoin, c'était de structures de données adaptées à l'application. Malheureusement, la plupart des architectures de machines actuelles sont encore procrustiennes (et donc programmées dans des langages comme C qui exposent cette structure de machine, plutôt que de prendre en charge des structures orientées problème).

D'autres lectures sur cette machine fascinante et sa philosophie sont disponibles sur:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.590.2624&rep=rep1&type=pdf

et plus en détail:

http://ianjoyner.name/Files/Wilner.pdf

Alors pourquoi le B1700 n'est plus fabriqué?

Burroughs avait trois gammes principales d'ordinateurs, les grands systèmes B5000-B7000 (architecture ALGOL), les systèmes moyens B2000-B4000 (architecture COBOL) et les petits systèmes B1000 (architecture à votre goût).

Les gros systèmes étaient vraiment chers, jusqu'au B5900 qui a été microcodé sur un processeur bon marché pour fournir la pile stack ALGOL. Jack Allweis, le concepteur du B5900, a souligné que la grande architecture du système se réduisait ainsi à de petits ordinateurs, mais le B1700 a été conçu pour être bon marché et n'a pas évolué.

Ainsi, les B1700 à B1900, bien que très performants à l'époque, sont morts pour des raisons commerciales.

Les grands systèmes Burroughs sont toujours disponibles en tant que Unisys ClearPath MCP et fonctionnent même sur votre PC en tant qu'émulation.

Autre note de bas de page, l'IPC sur le B1700 était pénible entre différentes machines virtuelles, mais très sécurisé (comme les micro-noyaux d'aujourd'hui). Les grands systèmes exécutaient tous des processus dans le même environnement où les données pouvaient être partagées de manière sécurisée, mais IPC était direct. C'est quelque peu entre les architectures micro-noyau (Mach) et non-noyau (Linux). Cependant, le B5000 est une machine très sécurisée, mais fonctionne également bien.

La sécurité est actuellement le plus gros problème de l'industrie, et ces machines devraient vraiment être relancées et étudiées pour montrer la voie à suivre.

user3717661
la source
1

Question principale: Quel est le terme précis pour le plus petit bloc de mémoire adressable?

J'ajouterai une autre réponse pour aborder cela d'une manière différente. Dans le matériel électronique, nous l'appelons le bit - chiffre binaire. Il s'agit d'une entité qui peut représenter deux valeurs quelconques. Nous pensons généralement en termes de 0 et 1, mais cela pourrait être 3 ou 4, 365 ou 266, -3 ou -4, voire 25 ou 37.

Tout système de signalisation peut être utilisé pour représenter ces valeurs - drapeau haut, drapeau bas, yeux ouverts, yeux fermés, + 5v, -5v. Ce n'est pas important.

Ce qui est important, c'est que, philosophiquement, nous représentons le plus petit nombre distinctif d'informations. Cela peut être activé, désactivé ou vrai, faux ou haut, bas ou 0, 1 - tout ce qui distingue deux états distincts. Nous pouvons mapper ces valeurs sur l'un des systèmes de signalisation ci-dessus et bien d'autres.

Maintenant, la question est, comment pouvons-nous tester et définir une si petite quantité d'informations individuellement? Comme je l'ai dit dans la réponse précédente, le B1700 a choisi de traiter directement cette plus petite quantité d'informations.

Cependant, la plupart des machines ont décidé de ne traiter que de plus grandes quantités d'informations. Prenons un groupe de quatre bits avec une seule adresse. Donc, si nous obtenons la valeur de 1011 à notre emplacement, comment tester le deuxième bit à partir de la gauche. Nous utilisons un masque: les tests 1011 et 0100 ne sont que le deuxième bit. Alors, comment pouvons-nous mettre le deuxième bit à 1? Un peu d'arithmétique du processeur indique que la valeur sera 15 ou 1111, de sorte que les quatre bits entiers sont réécrits en mémoire, même si nous n'avons vraiment défini qu'un seul bit.

Maintenant, cela n'est pas utile pour la plupart des applications. La plupart des applications représentent des données ou des informations, haut, bas, vrai, faux, ouvert, fermé.

Nous voulons dire des choses comme:

si ouvert alors ... sinon ... fin

ou plus probablement appliquer cela à une entité plus grande:

si la porte est ouverte alors - très probablement 'door.open' ... sinon ... end

«la porte est ouverte» illustre l'adressage hiérarchique. L'adressage du système principal donne à l'entité la porte, et la porte a son propre adressage qui donne accès à open (et peut-être à d'autres attributs).

La plupart des ensembles ont également plus de deux valeurs possibles (un ensemble avec une valeur ne change jamais et n'a donc même pas besoin de représentation, donc zéro bit). Pour ceux-ci, nous avons énuméré des ensembles, comme (brume jaune, verte, bleue, violette, rouge). Ceux-ci définissent des ensembles et des types et le nombre exact de bits requis est donné par le nombre de valeurs (log2 (nombre de valeurs)).

Ainsi, l'adressage optimal dépend vraiment de la taille de l'entité utilisée dans l'application - peut-être même des entités de taille variable. Mais dans la plupart des matériels, ces adresses doivent être traduites à la taille fixe définie par le matériel. Bien sûr, cela pourrait coûter du temps. Cela devrait également être quelque chose qu'un traducteur automatique fait (compilateur ou interprète), pas un programmeur, tout comme un tel système générerait du code pour tester et définir des bits comme ci-dessus (si les bits ne sont pas directement adressables).

Un point important ici est de ne pas penser en termes d'électronique - l'électronique n'est qu'un moyen vraiment bon et rapide de traiter les calculs. Il n'y a rien de magique dans le calcul électronique qui permet de faire des calculs que vous ne pourriez pas faire autrement. La magie n'est que dans la vitesse. C'est pourquoi les abstractions de bas niveau telles que les mécanismes d'adressage (pointeurs) de bits, d'octets, de mots ou de matériel ne sont vraiment pas très utiles.

user3717661
la source
-2

Notre système informatique utilise par défaut la mémoire adressable en octets. Sa seule cellule pointe vers des informations sur 8 bits. Et la taille des cellules ne dépend pas de la longueur du processeur. Dans la mémoire adressable par mot, une cellule pointe vers une information de mot, mais la longueur du mot dépend de la longueur du processeur. Lorsque nous utilisons des mots de mémoire adressable, cela crée une ambiguïté. Ainsi, notre ordinateur utilise par défaut une mémoire adressable en octets.

Mayank Jain
la source
Bienvenue sur le site mais je ne vois pas comment cela répond à la question.
David Richerby