Transferencia de registro y microoperaciones

publicado a la‎(s)‎ 13/6/2010 2:17 por Mario Ynocente Castro   [ actualizado el 13/6/2010 19:08 ]
Lenguaje de transferencia de registros

El diseño de sistemas digitales utiliza de manera invariable un enfoque modular. Los módulos se construyen a partir de componentes digitales como registros, decodificadores, elementos aritméticos y lógica de control. Los diferentes módulos están interconectados con los datos y las trayectorias de control comunes para formar un sistema de computadora digital.

Los módulos digitales se definen mejor por los registros que contienen y las operaciones que realizan sobre los datos que almacenan. Las operaciones que se ejecutan sobre los datos almacenados en los registros se llaman microoperaciones. Una microoperación es una operación básica realizada sobre la información almacenada en uno o más registros. El resultado de la operación puede sustituir la información binaria anterior de un registro o puede transferirse a otro. Algunos ejemplos de microoperaciones son desplazar, contar, borrar y cargar.

Las organización interna del hardware de una computadora digital se define mejor al especificar:
  1. El conjunto de registros que contiene y sus funciones.
  2. La secuencia de microoperaciones que se realizan sobre la información binaria almacenada en los registros.
  3. El control que inicia la secuencia de microoperaciones.
La notación simbólica que se utiliza para describir las transferencias de microoperaciones entre registros se llama lenguaje de transferencia de registros. Es una herramienta conveniente para describir la organización interna de las computadoras digitales de una manera precisa y concisa. También puede usarse para facilitar el procesos de diseñar sistemas digitales.

Transferencia de registros

Los registros de computadora están representados por letras mayúsculas (en ocaciones seguidas de números), para denotar la función del registro. Por ejemplo:
  • MAR (Memory address register) : registro que contiene una dirección para la unidad de memoria
  • PC : contador de programa
  • IR : registro de instrucción
  • R1 : registro de procesador
Los flip-flops individuales en un registro de n bits están numerados en una secuencia de 0 hasta n-1, comenzando desde 0 en la posición de la extrema derecha y aumentando los números hacia la izquierda. La manera más común de representar un registro es mediante una caja rectangular con el nombre del registro dentro.

La transferencia de información de un registro a otro se representa en forma simbólica mediante un operador de sustitución. El enunciado R2 <- R1 denota una transferencia del contenido del registro R1 al registro R2. Por definición, el contenido del registro fuente R1 no cambia después de la transferencia.

Normalmente queremos que la transferencia ocurra sólo bajo una condición de control predeterminada. Esto puede mostrarse mediante un encunciado si, entonces: Si(P=1) entonces (R2 <- R1), donde P es la señal de control que se genera en la sección de control.

En ocasiones es conveniente separar las variables de control de la operación de transferencia de registros al especificar una función de control. Una función de control es una variable booleana, que es igual a 0 o a 1. La función de control se incluye en el enunciado como sigue: P : R2 <- R1. La condición de control se termina con un signo de dos puntos. Una función de control es una variable booleana, que es igual a 0 a 1. La condición de control se termina con un signo de dos puntos. La operación de transferencia se ejecuta por el hardware sólo si P=1.

Se usan paréntesis para señalar una parte de un registro al especificar el rango de los bits o al otorgar un nombre simbólico a una parte de un registro. Se usan coman para separar dos o más operaciones que se ejecutan al mismo tiempo.

Transferencia de canal y de memoria

Una computadora digital típica tiene muchos registros, y se deben de proporcionar trayectorias para transferir información de un registro a otro. La cantidad de alambres será excesiva si se usan líenas separadas entre cada registro y todos los otros que conforman el sistema. Un esquema más eficiente para transferir la información entre los registros, en una configuración de registros múltiples, es un sistema de canal (bus) común. Una estructura de bus consta de un conjunto de líneas comunes, una para cada bit de un registro, mediante las cuales se transfiere información binaria una a la vez. Unas señales de control determinan cuál registro selecciona el bus durante cada transferencia de registro particular.

Una manera de construir un sistema de bus común es con multiplexores. Los multiplexores seleccionan el registro fuente, cuya información binaria se coloca después en el bus.

En general, un sistema de bus hará funcionar el multiplexor sobre k registros de n bits cada uno, para producir un bus común de n líneas. La cantidad de multiplexores que se necesitan para construir el bus es igual a n, la cantidad de bits en cada registro. El tamaño de cada multiplexor debe ser k x 1 dado que hace funcionar el multiplexor sobre k líneas de datos.

La transferencia de información de un bus dentro de uno de muchos registros de destino se pueden lograr al conectar las líneas de bus a las entradas de todos los registros de destino y activar el control de carga del registro destino particular que se ha seleccionado. El enunciado simbólico para una transferencia de bus puede mencionar el bus o su presencia puede estar implícita en el enunciado.

BUS <- C, R1 <- BUS    ó    R1 <- C

La transferencia de información de una palabra de memoria al ambiente externo se llama operación de lectura. La transferencia de nueva información para almacenarse en la memoria se llama operación de escritura. Una palabra de memoria se representará con la letra M. La palabra de memoria en particular, entre las muchas disponibles, se selecciona mediante la dirección de memoria durante la transferencia.

Leer : DR <- M[AR]
Escribir : M[AR] <- R1

Microoperaciones aritméticas

Las microoperaciones que se encuentran con mayor frecuencia en las computadoras digitales se clasifican en cuatro categorías:
  1. Microoperaciones de transferencia de registros
  2. Microoperaciones aritméticas
  3. Microoperaciones lógicas
  4. Microoperaciones de corrimiento
Las microoperaciones aritméticas básicas son suma, resta, incremento, decremento y corrimiento.

Representación simbólica
 Descripción
 R3 <- R1 + R2  El contenido de R1 más R2 transferido a R3
 R3 <- R1 - R2
 El contenido de R1 menos R2 transferido a R3
 R2 <- R2
 Complementar el contenido de R2 (complemento a 1)
 R2 <- R2 +1
 Complementar a 2 el contenido de R2
 R3 <- R1 + R2 +1  R1 más el complemento a 2 de R2 (resta)
 R1 <- R1 + 1
 Incrementar el contenido de R1 en uno
 R1 <- R1 -1
 Decrementar el contenido de R1 en uno

Microoperaciones lógicas

Las microoperaciones lógicas especifican operaciones binarias para arreglos de bits almacenados en registros. Estas operaciones consideran cada bit de registro en forma separada y los tratan como variables binarias.

 Microoperación Nombre
 F <- A ∧ B  AND
 F <- A∨B
 OR
 F <- A ⊕ B
 OR exclusiva
 F <- A  Complementar A

Microoperaciones de corrimiento
  • Corrimiento lógico : es aquel que transfiere un 0 por la entrada serial.

  • Corrimiento circular : hace circular los bits del registro por los dos extremos sin pérdida de información. Esto se consigue al conectar la salida serial del registro de corrimiento a su entrada serial.

  • Corrimiento aritmético : recorre un número binario con signo a la derecha o a la izquierda. Un corrimiento aritmético a la izquierda multiplica un número binario con signo por 2. Un corrimiento aritmético a la derecha divide el número entre 2. El bit del extremo izquierdo contine el bit de signo y los bits restantes contienen el número. El bit de signo es 0 para los números positivos y 1 para los negativos. Los números negativos están en su forma complemento a 2.
 Representación simbólica
 Descripción
 R <- shl R
 Corrimiento a la izquierda del registro R
 R <- shr R
 Corrimiento a la derecha del registro R
 R <- cil R
 Corrimiento circular a la izquierda del registro R
 R <- cir R
 Corrimiento circular a la derecha del registro R
 R <- ashl R
 Corrimiento aritmético a la izquierda de R
 R <- ashr R
 Corrimiento aritmético a la derecha de R

Comments