Vous trouverez ci-dessous le format d'instruction de transfert de données pour l'architecture ARM et MIPS 32 bits. L'architecture ARM 32 bits a un opcode 4 bits car il y a 16 registres (2 ^ 4 = 16). L'architecture MIPS 32 bits a un opcode 6 bits. Ne devrait-il pas être de 5 bits étant donné qu'il y a 32 registres dans MIPS?

enter image description here

-1
Khan 1 sept. 2020 à 18:16

2 réponses

Meilleure réponse

Le nombre de registres n'a rien à voir avec le nombre de bits d'opcode, il est lié au nombre d'instructions prises en charge (ce qui n'est toujours pas un facteur de limitation stricte, étant donné que des techniques comme les préfixes d'instructions existent).

D'autre part, le nombre de bits d'opérande (Rs et Rd dans votre image) est lié au nombre de registres (ils sont 5 bits car MIPS a 32 registres, 2 ^ 5 = 32).

Donc, avoir 6 bits pour l'opcode signifie seulement que vous pouvez encoder jusqu'à 2 ^ 6 = 64 instructions différentes qui peuvent être interprétées en un seul cycle de décodage.

3
adnan_e 1 sept. 2020 à 16:19

Le codage de l'opcode et le codage du champ de registre et le codage immédiat / const sont différents, avec des compromis différents entre eux, car rendre l'un plus grand rend les autres plus petits, lorsqu'ils doivent coexister dans la même instruction.

La taille de chaque champ détermine le nombre d'éléments différents qui peuvent être représentés dans ce champ.

En comparaison avec MIPS, par exemple, RISC V, raccourcit le champ immédiat "const" dans les instructions de type I à 12 bits, ce qui permet des champs d'opcode plus grands - 7 bits dans le champ d'opcode du jeu d'instructions de base, plus 3 bits supplémentaires dans func (les champs sont également généralement inversés, allant de droite à gauche):

+-------------------------------------------+
| imm:12 | rs1:5 | func:3 | rd:5 | opcode:7 |    I-Type
+-------------------------------------------+

Ces bits d'opcode supplémentaires sont utilisés pour:

  • manipuler des instructions de différentes longueurs, RISC V permet des tailles de:
    • Instructions 16 bits appelées compressées, qui peuvent être mélangées
    • 32 bits, utilisé pour les processeurs 32 bits et 64 bits
    • 48 bits et plus (aucune extension pour ceux-ci n'est encore standardisée)
  • pour la longévité et l'évolution du jeu d'instructions
    • au fil du temps, des instructions sont ajoutées mais rarement supprimées pour revenir compatibilité
  • étendre le jeu d'instructions aux besoins spécifiques des applications et des appareils
    • comme cela peut arriver dans une utilisation intégrée où des extensions sont créées qui ne sont jamais destinées à être incluses dans les spécifications officielles
1
Erik Eidt 1 sept. 2020 à 16:10