Mon professeur a dit qu'un microprocesseur Intel 8086 a une adresse 16 bits et une adresse physique 20 bits. Quelle est la différence entre une adresse et une adresse physique?


Réponse 1:

Cela signifie qu'en 8086, les adresses utilisées dans les programmes (l'adresse logique ou virtuelle comme vous l'appelez) sont de 16 bits mais l'adresse réelle que 8086 envoie à la RAM est de 20 bits.

Pourquoi? Parce que 16 bits = 64 Ko d'espace d'adressage alors que 20 bits d'adresse = 1 Mo de mémoire. Ainsi, vous pouvez adresser plus de mémoire que ce qui est possible avec un adressage simple de 16 bits (16 fois plus de mémoire dans ce cas).

Comment? Rappelez le schéma d'adressage segmenté en mode réel. En 8086, adresse envoyée à RAM = registre de segment * 16 + offset (remplacez le registre de segment et l'offset par cs: ip, ds: si, es: di etc.)

Ainsi, bien que les registres de segments et les décalages soient de 16 bits, nous pourrions avoir une adresse physique de 20 bits.

(Si vous remarquez, multiplier par 16 équivaut à décaler vers la gauche de 4. Une adresse de 16 bits décalée vers la gauche de 4 devient une adresse de 20 bits (décalage pas encore ajouté))


Réponse 2:

L'un des objectifs les plus importants auxquels les ingénieurs électriciens doivent prêter attention lorsqu'ils sont invités à concevoir quelque chose est le coût de la chose lorsqu'elle est conçue, construite et vendue. Et parfois, cela signifie que les bus de données et d'adresses d'un ordinateur sont multiplexés afin d'économiser de l'argent. Normalement, nous penserions à un bus d'adresse 20 bits comme ayant 20 fils séparés qui transportent chacun 1 bit de données sur le bus d'adresse. Il est possible d'avoir 16 fils parlant au bus d'adresse lorsque les 4 bits de poids fort sont contrôlés par un registre de segment. Il en résulte une architecture de mémoire de 1 mégaoctet qui est adressée comme 16 banques de 64 Ko. Le bus d'adresses 16 bits sélectionne les adresses de 0 à 64 Ko et vous devez modifier le contenu du registre de sélection de banque pour parler à des groupes successifs de mémoire 64 Ko jusqu'à la limite de 1 Mo. Les processeurs qui ont moins de lignes d'adresse que la taille de mémoire prise en charge ont généralement des registres de segment afin que le code du noyau ou du système d'exploitation puisse suivre et changer le registre de sélection de banque selon les besoins.

Cela crée finalement une situation où une adresse de mémoire physique donnée est trouvée par un registre de segment de 4 bits + un bus d'adresse de 16 bits = une adresse physique de 20 bits pour parler à une mémoire de 1 mégaoctet. Heureusement, nous avons depuis longtemps dépassé les jours des années 1970 où les concepteurs de puces hésitaient à mettre des processeurs dans des boîtiers avec plus de 40 broches, donc le multiplexage de bus d'adresses n'est pas nécessaire aussi souvent.