web-dev-qa-db-fra.com

Compteur de programmes et registre d'instructions

Le compteur de programme contient l'adresse de l'instruction qui doit être exécutée ensuite, tandis que le registre d'instructions contient l'instruction réelle à exécuter. l'un d'eux ne suffirait-il pas?

Et quelle est la longueur de chacun de ces registres?

Merci.

41
Benyamin Noori

Vous aurez toujours besoin des deux. Le compteur de programmes (PC) contient l'adresse de la prochaine instruction à exécuter, tandis que le registre d'instructions (IR) contient l'instruction codée. Lors de l'extraction de l'instruction, le compteur de programme est incrémenté d'une "valeur d'adresse" (à l'emplacement de l'instruction suivante). L'instruction est ensuite décodée et exécutée de manière appropriée.

La raison pour laquelle vous avez besoin des deux est que si vous n'aviez qu'un compteur de programme et que vous l'utilisiez pour les deux, vous obtiendriez le système problématique suivant:

[Début de l'exécution du programme]

  1. Le PC contient 0x00000000 (disons qu'il s'agit de l'adresse de début du programme en mémoire)
  2. L'instruction codée est extraite de la mémoire et placée dans le PC.
  3. L'instruction est décodée et exécutée.
  4. Il est maintenant temps de passer à l'instruction suivante, donc nous retournons au PC pour voir quelle est l'adresse de l'instruction suivante. Cependant, nous avons un problème car l'adresse précédente du PC a été supprimée, nous ne savons donc pas où se trouve la prochaine instruction.

Par conséquent, nous avons besoin d'un autre registre pour contenir l'instruction réelle extraite de la mémoire. Une fois que nous récupérons cette mémoire, nous augmentons PC pour que nous sachions où récupérer la prochaine instruction.

P.S. la largeur des registres varie en fonction de la taille de Word de l'architecture. Par exemple, pour un processeur 32 bits, la taille de Word est de 32 bits. Par conséquent, les registres sur le processeur seraient de 32 bits. Les registres d'instructions ne sont pas différents dans leurs dimensions. La différence réside dans le comportement et l'interprétation. Les instructions sont codées sous différentes formes, mais elles occupent toujours un registre 32 bits. Par exemple, le processeur Nios II d'Altera contient 3 types d'instructions différents, chacun codé différemment. Voir page 6 de ftp://ftp.altera.com/up/pub/Tutorials/DE2/Computer_Organization/tut_nios2_introduction.pdf

Vous pouvez également en savoir plus sur la structure du processeur Nios II à partir du lien ci-dessus. Il s'agit d'un simple processeur IP. Bien sûr, Intel a ses propres spécifications/conception et cela variera.

53
Haleeq Usman

Comme vous l'avez indiqué, le Program Counter (PC) contient l'adresse de la prochaine instruction à exécuter, et le Instruction Register (IR) stocke l'instruction réelle à exécuter (mais pas son adresse).

En fonction de la longueur de ces registres, les machines actuelles ont des PC 64 bits. La longueur de l'IR (d'un point de vue logique) dépend de l'architecture:

  • Les machines RISC ont généralement des instructions de longueur fixe. Par exemple, la plupart des instructions SPARC sont codées au format 32 bits.
  • Les machines CISC (Intel, AMD) ont des instructions de longueur variable. Par exemple, consultez les Intel® 64 et IA-32 Architectures Software Developer Manuals

Comme ces machines sont capables de récupérer, décoder et exécuter plusieurs instructions à chaque cycle, l'implémentation physique de l'IR n'est pas facile à décrire en quelques lignes.

9
chus