stringtranslate.com

Registro de estado

Un registro de estado , un registro de bandera o un registro de código de condición ( CCR ) es una colección de bits de bandera de estado para un procesador . Ejemplos de dichos registros incluyen el registro FLAGS en la arquitectura x86 , las banderas en el registro de palabra de estado del programa (PSW) en la arquitectura IBM System/360 a través de z/Architecture y el registro de estado del programa de aplicación (APSR) en la arquitectura ARM Cortex-A. . [1]

El registro de estado es un registro de hardware que contiene información sobre el estado del procesador . Los bits individuales son leídos y/o escritos implícita o explícitamente por las instrucciones del código de máquina que se ejecutan en el procesador. El registro de estado permite que una instrucción tome medidas dependiendo del resultado de una instrucción anterior.

Normalmente, los indicadores en el registro de estado se modifican como efecto de operaciones aritméticas y de manipulación de bits. Por ejemplo, se puede establecer un bit Z si el resultado de la operación es cero y borrarse si es distinto de cero. Otras clases de instrucciones también pueden modificar las banderas para indicar el estado. Por ejemplo, una instrucción de cadena puede hacerlo para indicar si la instrucción terminó porque encontró una coincidencia/no coincidencia o porque encontró el final de la cadena. Las banderas son leídas por una instrucción condicional posterior de modo que la acción especificada (dependiendo del procesador, un salto, una llamada, un retorno, etc.) ocurra solo si las banderas indican un resultado específico de la instrucción anterior.

Algunas arquitecturas de CPU, como MIPS y Alpha , no utilizan un registro de bandera dedicado. Otros no establecen ni leen indicadores implícitamente. Estas máquinas no pasan información de estado implícita entre instrucciones en absoluto o la pasan en un registro de propósito general seleccionado explícitamente.

Un registro de estado a menudo también puede tener otros campos, como indicadores más especializados, bits de habilitación de interrupción y tipos similares de información. Durante una interrupción, el estado del hilo que se está ejecutando actualmente se puede preservar (y luego recuperar) almacenando el valor actual del registro de estado junto con el contador del programa y otros registros activos en la pila de la máquina o en alguna otra área reservada de memoria.

Banderas comunes

Esta es una lista de los indicadores de registro de estado de la CPU más comunes, implementados en casi todos los procesadores modernos.

Otras banderas

En algunos procesadores, el registro de estado también contiene indicadores como estos:

Arquitecturas de CPU sin indicadores aritméticos

Los indicadores de estado permiten que una instrucción actúe según el resultado de una instrucción anterior. En los procesadores canalizados , como los procesadores superescalares y especulativos , esto puede crear peligros que ralentizan el procesamiento o requieren hardware adicional para solucionarlos. [4]

Algunos procesadores de texto con instrucciones muy largas prescinden de los indicadores de estado. Una sola instrucción realiza una prueba e indica en qué resultado de esa prueba se debe realizar una acción, como comparar a con b y saltar a c si es igual. El resultado de la prueba no se guarda para 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, como un solo bit o un valor numérico de 0 o 1. Las ramas condicionales actúan en función de el valor en el registro de propósito general.

Por lo general, las instrucciones de comparación prueban la igualdad o la magnitud con/sin signo. Para probar 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 probar si una suma de registros de una sola palabra se desbordó al probar si la suma es menor que un operando: [ 4]

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

La sltuinstrucción se establece tmpen 1 o 0 según la comparación especificada de sus otros dos operandos. (Aquí, el registro de propósito general tmpno se utiliza como registro de estado para controlar un salto condicional; más bien, el posible valor de 1, que indica acarreo de la suma de orden inferior, se agrega a la palabra de orden superior).

Este esquema se vuelve menos conveniente al agregar tres o más palabras, ya que hay 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 agregar entre sí sin riesgo de desbordamiento, por lo que la situación se estabiliza en cinco instrucciones por palabra agregada.

Ver también

Referencias

  1. ^ "Centro de información ARM". infocenter.arm.com . Consultado el 18 de mayo de 2019 .
  2. ^ "Manual de funcionamiento del Toshiba 900, capítulo 3" (PDF) . Archivado desde el original (PDF) el 15 de enero de 2006.
  3. ^ "Microcontrolador Atmel de 8 bits con flash programable en el sistema de 4/8/16/32 KB: hoja de datos" (PDF) . Tecnología de microchips .
  4. ^ ab Mashey, John (4 de junio de 1996). "Carry bits; La trampa del arquitecto" . Consultado el 5 de octubre de 2013 .