Dans les unités centrales de traitement , un registre d'état , un registre de drapeau ou un registre de code de condition ( CCR ) est un registre qui contient un ensemble de bits de drapeau d'état . Des exemples de tels registres incluent le registre FLAGS dans l' architecture x86 , le registre de mot d'état du programme (PSW) dans l' architecture IBM System/360 jusqu'à z/Architecture , et le registre d'état du programme d'application (APSR) dans l' architecture ARM (32 bits) et le registre système NCSV dans l'architecture ARM AArch64 64 bits .
Le registre d'état contient des informations sur l'état du processeur . Ses bits sont lus ou écrits, implicitement ou explicitement, par les instructions machine exécutées sur le processeur. Le registre d'état permet à une instruction d'agir en fonction du résultat d'une instruction précédente.
En général, certains indicateurs d'un registre d'état sont modifiés suite aux opérations arithmétiques et de manipulation de bits effectuées par l' unité arithmétique et logique (UAL). Par exemple, le bit d'état Z peut être activé si le résultat d'une opération est nul, ou désactivé s'il est différent de zéro. Une instruction de traitement de chaîne peut modifier un indicateur d'état pour indiquer si l'exécution s'est terminée suite à la découverte d'une correspondance ou à l'atteinte de la fin de la chaîne. Certains indicateurs sont ensuite utilisés par des instructions conditionnelles pour contrôler l'exécution du programme.
Certaines architectures de processeurs, comme MIPS et Alpha , n'utilisent pas de registre d'état dédié. D'autres ne permettent pas de définir ou de lire implicitement les états. Ces machines ne transmettent pas d'informations d'état implicites entre les instructions ou les transmettent dans un registre à usage général.
Un registre d'état peut contenir des champs supplémentaires tels que des indicateurs de privilège, des bits d'activation d'interruption et d'autres types d'informations. Lors d'une interruption, l'état du thread en cours d'exécution peut être préservé en stockant la valeur actuelle du registre d'état (ainsi que le compteur de programme et d'autres registres actifs) dans la pile machine ou une autre zone mémoire.
Autres drapeaux
Sur certains processeurs, le registre d'état peut contenir des indicateurs tels que ceux-ci :
| Drapeau | Nom | Description |
|---|---|---|
| H / A / CC | Drapeau de demi-report Drapeau auxiliaire Report numérique Drapeau d'ajustement décimal | Indique qu'une retenue de bits a été générée entre les nibbles (généralement entre les moitiés de 4 bits d'un octet) à la suite de la dernière opération arithmétique. Ce type d'indicateur est généralement utile pour implémenter des opérations arithmétiques BCD compactées sur du matériel binaire. |
| P | Drapeau de parité | Indique si le nombre de bits à 1 du dernier résultat est impair ou pair. |
| je | Drapeau d'interruption | Sur certains processeurs, ce bit indique si les interruptions sont activées ou masquées. Si le processeur possède plusieurs niveaux de priorité d'interruption , comme le PDP-11 , plusieurs bits peuvent être utilisés pour indiquer la priorité du thread courant, permettant ainsi qu'il ne puisse être interrompu que par du matériel configuré avec une priorité supérieure. Sur d'autres architectures, un bit peut indiquer qu'une interruption est actuellement active et que le thread courant fait partie d'un gestionnaire d'interruptions . |
| S | drapeau du superviseur | Sur les processeurs dotés de deux anneaux de protection ou plus , un ou plusieurs bits du registre d'état indiquent l'anneau du thread courant (son niveau de confiance, ou s'il doit recourir au système d'exploitation pour les requêtes susceptibles d'affecter d'autres threads). Sur un processeur à deux anneaux seulement, un seul bit peut distinguer le mode Superviseur du mode Utilisateur. |
| Q | Drapeau de saturation | Par exemple, sur Arm (32 bits) (ARMv5TE, ARMv6 et versions ultérieures), « l'indicateur Q est mis à 1 lorsque la saturation s'est produite dans les instructions arithmétiques de saturation , ou lorsqu'un dépassement s'est produit dans certaines instructions de multiplication. Le drapeau Q est un drapeau collant." |
Architectures de processeurs sans indicateurs arithmétiques
Les indicateurs d'état permettent à une instruction d'agir en fonction du résultat d'une instruction précédente. Dans les processeurs pipelinés , tels que les processeurs superscalaires et spéculatifs , cela peut créer des aléas qui ralentissent le traitement ou nécessitent du matériel supplémentaire pour les contourner.
Certains logiciels de traitement de texte à instructions très longues se passent des indicateurs d'état. Une seule instruction effectue un test et indique sur quel résultat agir, par exemple : « Comparer a avec b et sauter à c si égal ». Le résultat du test n'est pas conservé pour les instructions suivantes.
Une autre alternative au registre d'état consiste à ce que les instructions du processeur stockent les informations d'état dans un registre général lorsque le programme le demande. Les architectures MIPS , AMD 29000 , DEC Alpha et RISC-V sont des exemples d'architectures qui fournissent des instructions de comparaison stockant le résultat de la comparaison dans un registre général, sous forme de bit unique ou de valeur numérique (0 ou 1). Les branchements conditionnels s'effectuent en fonction de la valeur contenue dans ce registre.
En général, les instructions de comparaison testent l'égalité ou la magnitude signée/non signée. Pour tester d'autres conditions, un programme utilise une formule d'équivalence. Par exemple, MIPS n'a pas de « bit de retenue », mais un programme effectuant une addition de plusieurs mots peut vérifier si une addition d'un seul mot de registres a provoqué un dépassement de capacité en vérifiant si la somme est inférieure à un opérande :
Plus d articles de Worldlex Wiki
Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.
Explorer l index