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.