PLI |
Préchargement d'instruction |
| ARM |
Syntaxe
|
PLI{cond} [Rn {, #offset}]
|
|
PLI{cond} [Rn, ±Rm {, shift}]
|
PLI{cond} label
|
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| Rn |
Ce paramètre permet d'indiquer le registre sur lequel l'adresse mémoire est basé. |
| offset |
Ce paramètre optionnel permet d'indiquer un déplacement immédiat. Si ce paramètre est absent, il utilise l'adresse du paramètre Rn |
| Rm |
Ce paramètre permet d'indiquer un registre contenant une valeur à utiliser comme déplacement. |
| shift |
Ce paramètre optionnel permet d'indiquer un décalage. |
| label |
Ce paramètre optionnel permet d'indiquer une expression relative PC. |
Description
Cette instruction permet d'effectuer un préchargement d'instruction afin que le processeur signale au système de mémoire qu'un changement d'instruction provenant d'une adresse est probablement sur le point de se produire.
Remarques
- Optimisation du pipeline d'instruction : L'instruction PLI permet au processeur de précharger une instruction depuis la mémoire avant qu'elle ne
soit réellement nécessaire, ce qui optimise le pipeline d'exécution. En anticipant les besoins en instructions, le processeur réduit les risques de rupture du pipeline,
notamment dans les cas de branchements ou de sauts conditionnels. Cette anticipation permet d'éviter les pertes de cycles liés aux délais de chargement.
- Réduction de la latence liée à la mémoire : L'un des intérêts principaux de PLI est de réduire les temps d'accès aux instructions en les plaçant en avance
dans le cache d'instruction. Dans les architectures ARM, les caches instruction et données sont séparés. En utilisant PLI, on peut préparer le cache instruction avec des
blocs de code à exécuter, ce qui permet d'accélérer le traitement global du programme, notamment en environnement temps réel.
- Idéale dans les contextes de code auto-modifiant ou dynamique : Dans certains systèmes embarqués, les instructions peuvent être générées ou modifiées à
l'exécution (just-in-time, code injecté, etc.). PLI permet de prévenir le système de mémoire qu'une instruction nouvelle ou modifiée sera bientôt exécutée. Cela garantit
que le cache instruction est à jour, limitant les incohérences ou erreurs dues à l'exécution d'instructions obsolètes.
- Supporte des modes d'adressage flexibles : Comme pour PLD, l'instruction PLI accepte différents modes d'adressage : via un registre de base Rn, avec
un déplacement immédiat, un registre de déplacement Rm, ou encore une étiquette relative au PC. Cette souplesse rend l'instruction particulièrement adaptée aux structures
de programme complexes, où les adresses d'instructions peuvent être dynamiques ou pré-calculées.
- Instruction non bloquante et sans effet fonctionnel direct : Tout comme PLD, l'instruction PLI n'a aucun effet direct visible sur les registres ou la
mémoire. Elle ne modifie aucun état du programme et ne bloque pas le pipeline. Elle sert uniquement à donner un indice au système mémoire, permettant au processeur de
continuer son exécution sans interruption. C'est donc une instruction passive mais stratégique.
- Utilisation recommandée dans les boucles avec saut ou branchement : Dans des boucles de traitement intensif comportant des branchements fréquents (par
exemple, des structures conditionnelles ou des machines à états), l'instruction PLI peut être placée en amont des blocs de code susceptibles d'être appelés. Ainsi, les
instructions ciblées sont chargées dans le cache instruction à l'avance, ce qui permet une exécution fluide et rapide.
- Particulièrement utile pour les applications embarquées ou critiques : Dans des systèmes embarqués, notamment ceux à contraintes temps réel (tels que les
systèmes avioniques ou automobiles), PLI permet de prédire les changements de flux d'instruction et d'assurer que l'instruction suivante est prête à être exécutée. Cette
anticipation est cruciale pour la stabilité et la prévisibilité du comportement du système, surtout lorsque les interruptions ou changements de contexte sont fréquents.
- Sécurité accrue dans certains environnements d'exécution : Dans des environnements à mémoire protégée ou virtuelle, où les permissions sur les segments de
mémoire varient, l'utilisation de PLI peut permettre d'éviter des fautes de page ou des latences dues à des accès non autorisés. En indiquant au système qu'une instruction
à une certaine adresse sera utilisée, cela peut provoquer une mise à jour anticipée des tables de pages ou du TLB (Translation Lookaside Buffer).
Dernière mise à jour : Dimanche, le 12 novembre 2017