Articulo de referencia

Registro de estado

En las unidades centrales de procesamiento , un registro de estado , registro de indicadores o registro de código de condición ( CCR ) es un registro que contiene una colección ...

En las unidades centrales de procesamiento , un registro de estado , registro de indicadores o registro de código de condición ( CCR ) es un registro que contiene una colección de bits de indicadores de estado . Ejemplos de estos registros incluyen el registro FLAGS en la arquitectura x86 , el registro de palabra de estado del programa (PSW) en la arquitectura IBM System/360 a z/Architecture , y el registro de estado del programa de aplicación (APSR) en la arquitectura ARM (de 32 bits) [ 1 ] y el registro del sistema NCSV en la arquitectura ARM AArch64 de 64 bits . [ 2 ]

El registro de estado contiene información sobre el estado del procesador . Los bits individuales se leen o escriben implícita o explícitamente mediante las instrucciones de código máquina que se ejecutan en el procesador. El registro de estado permite que una instrucción realice una acción en función del resultado de una instrucción anterior.

Normalmente, algunos de los indicadores de un registro de estado se modifican como resultado de las operaciones aritméticas y de manipulación de bits realizadas por la unidad aritmético-lógica (ALU). Por ejemplo, un bit de estado Z puede activarse si el resultado de una operación es cero o desactivarse si es distinto de cero. Una instrucción de cadena puede modificar un indicador de estado para indicar si finalizó al encontrar una coincidencia o al llegar al final de la cadena. Algunos indicadores se utilizan posteriormente en instrucciones condicionales para controlar la ejecución del programa.

Algunas arquitecturas de CPU, como MIPS y Alpha , no utilizan un registro de indicadores dedicado. Otras no establecen ni leen indicadores de forma implícita. Estas máquinas o bien no transmiten información de estado implícita entre instrucciones, o bien la transmiten en un registro de propósito general.

Un registro de estado puede contener campos adicionales, como indicadores de privilegio, bits de habilitación de interrupciones y otros tipos de información. Durante una interrupción, el estado del hilo que se está ejecutando actualmente se puede conservar almacenando el valor actual del registro de estado (junto con el contador de programa y otros registros activos) en la pila de la máquina u otra memoria.

banderas comunes

Aquí hay una lista de indicadores de registro de estado de la CPU que se implementan comúnmente en los procesadores modernos:

Otras banderas

En algunos procesadores, el registro de estado puede contener indicadores como estos:

Arquitecturas de CPU sin indicadores aritméticos

Los indicadores de estado permiten que una instrucción actúe en función del resultado de una instrucción anterior. En procesadores segmentados , como los procesadores superescalares y especulativos , esto puede generar riesgos que ralentizan el procesamiento o requieren hardware adicional para solucionarlos. [ 6 ]

Algunos procesadores de texto con instrucciones muy largas prescinden de los indicadores de estado. Una sola instrucción realiza una prueba e indica en función del resultado de dicha prueba se debe realizar una acción, como por ejemplo: Comparar a con b y saltar a c si son iguales. El resultado de la prueba no se guarda para las instrucciones posteriores.

Otra alternativa al registro de estado es que las instrucciones del procesador depositen información de estado en un registro de propósito general cuando el programa lo solicite. MIPS , AMD 29000 , DEC Alpha y RISC-V son ejemplos de arquitecturas que proporcionan instrucciones de comparación que almacenan el resultado de la comparación en un registro de propósito general, ya sea como un bit o como un valor numérico de 0 o 1. Las bifurcaciones condicionales actúan en función del valor del registro de propósito general.

Por lo general, las instrucciones de comparación comprueban la igualdad o la magnitud con signo/sin signo. Para comprobar otras condiciones, un programa utiliza una fórmula de equivalencia. Por ejemplo, MIPS no tiene un "bit de acarreo", pero un programa que realiza una suma de varias palabras puede comprobar si una suma de una sola palabra de registros se desbordó comprobando si la suma es menor que un operando: [ 6 ]

# alow = blow + clow addu alow , blow , clow # establecer tmp = 1 si alow < clow, de lo contrario 0 sltu tmp , alow , clow addu ahigh , bhigh , chigh addu ahigh , ahigh , tmp

La sltuinstrucción se establece tmpen 1 o 0 según la comparación especificada de sus otros dos operandos. (En este caso, el registro de propósito general tmpno se utiliza como registro de estado para controlar un salto condicional; en su lugar, el posible valor de 1, que indica el acarreo de la suma de orden inferior, se suma a la palabra de orden superior).

Este esquema se vuelve menos conveniente al sumar tres o más palabras, ya que se realizan dos sumas al calcular b + c + tmp, cualquiera de las cuales puede generar un acarreo, que debe detectarse con dos sltuinstrucciones. Afortunadamente, esos dos acarreos se pueden sumar entre sí sin riesgo de desbordamiento, por lo que la situación se estabiliza en cinco instrucciones por palabra añadida.

Véase también

Referencias

  1. "Centro de información de ARM" . infocenter.arm.com . Consultado el 18 de mayo de 2019 .
  2. "Actualizaciones de los indicadores de condición en el código A64" . Guía del usuario de armasm del compilador Arm . Consultado el 30 de marzo de 2026 .
  3. "Manual de funcionamiento de Toshiba 900, cap. 3" (PDF) . Archivado del original (PDF) el 15 de enero de 2006.
  4. "Microcontrolador Atmel de 8 bits con memoria flash programable en sistema de 4/8/16/32 KB - Hoja de datos" (PDF) . Microchip Technology .
  5. "Documentación – Desarrollador de Arm" . developer.arm.com . Consultado el 1 de abril de 2026 .
  6. 1 2 Mashey, John (1996-06-04). "Carry bits; The Architect's Trap" . Recuperado el 2013-10-05 .