Article de reference

Registre d'état

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 bit...

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.

DrapeauNomDescriptionZDrapeau zéroIndique que le résultat d'une opération arithmétique ou logique (ou, parfois, d'une charge) était nul.CPorter le drapeauPermet d'additionner ou de soustraire des nombres supérieurs à la taille d'un mot en reportant un bit binaire d'un mot de poids faible vers le bit de poids faible d'un mot de poids fort, selon les besoins. Cette fonction est également utilisée pour étendre les décalages et rotations de bits de manière similaire sur de nombreux processeurs (parfois via un indicateur X dédié ).S / NDrapeau de signalisation Drapeau négatifIndique que le résultat d'une opération mathématique est négatif. Sur certains processeurs, les indicateurs N et S sont distincts et ont des significations et des usages différents : l'un indique si le dernier résultat était négatif, tandis que l'autre indique si une soustraction ou une addition a eu lieu.VŒUDrapeau de débordementIndique que le résultat signé d'une opération est trop grand pour tenir dans la largeur du registre en utilisant la représentation en complément à deux .

Autres drapeaux

Sur certains processeurs, le registre d'état peut contenir des indicateurs tels que ceux-ci :

DrapeauNomDescription
H / A / CCDrapeau de demi-report Drapeau auxiliaire Report numérique Drapeau d'ajustement décimalIndique 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.
PDrapeau de paritéIndique si le nombre de bits à 1 du dernier résultat est impair ou pair.
jeDrapeau d'interruptionSur 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 .
Sdrapeau du superviseurSur 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.
QDrapeau de saturationPar 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