ISA et assembleur

En RISC-V, si l'adresse d'une instruction lw lisant 4 octets n'est pas un multiple de 4 (non alignée), que peut-il se passer ?

  1. AL'instruction est automatiquement redirigée vers l'adresse multiple de 4 suivante et lit toujours correctement à la même vitesse
  2. BSelon l'implémentation du CPU, une exception peut survenir, ou l'accès peut être traité par le matériel ou le logiciel avec une forte lenteur
  3. CLes 2 bits de poids faible de l'adresse sont ignorés et aucune erreur ne survient
Afficher la réponse et l'explication

Réponse : B. Selon l'implémentation du CPU, une exception peut survenir, ou l'accès peut être traité par le matériel ou le logiciel avec une forte lenteur

Une donnée de 4 octets placée à une adresse multiple de 4 se lit en un seul accès mémoire. Si elle franchit une frontière, deux accès sont nécessaires ; RISC-V laisse donc à l'implémentation le choix de traiter les accès non alignés par le matériel ou de lever une exception pour les confier au logiciel. Dans ce dernier cas, l'accès est plus lent de plusieurs ordres de grandeur. C'est pourquoi les compilateurs insèrent des octets de remplissage (padding) entre les membres des structures pour les aligner.

S'entraîner sur ce thème Retour au thème

Autres questions sur ISA et assembleur

  1. Par combien le résultat t0 de l'instruction RISC-V « slli t0, a0, 3 » multiplie-t-il la valeur de a0 (sans tenir compte du débordement) ?
  2. a0 contient l'adresse de début d'un tableau a de type int (4 octets), et a1 l'indice i. Que charge le code ci-dessus dans a2 ?
  3. Quelle affirmation concernant les architectures où les instructions arithmétiques peuvent utiliser directement des valeurs en mémoire, comme l'instruction x86 « add eax, [rbx] », est correcte ?
  4. Quelle description de la manière dont les CPU x86 hautes performances actuels exécutent en interne les instructions complexes est correcte ?
  5. Quelles instructions l'extension M de RISC-V ajoute-t-elle au jeu d'instructions entières de base ?