organización de computadorasdea.unsj.edu.ar/sisdig2/capitulo 11.pdf · organización de...

36
Organización de Computadoras V2.0 (2012) Traducción del Capítulo 11 del libro Contemporary Logic Design – Randy H. Katz Dr. Ing. Armando D. Assandri Profesor Titular Introducción En los Capítulos 1 al 10, se han examinado los principios fundamentales del diseño digital. En este capítulo y en el próximo, nos enfocaremos en la aplicación de estas técnicas a una clase muy importante de sistema digital: la computadora de programa almacenado. Una computadora de programa almacenado consta de una unidad de procesamiento y de un sistema de memoria adjunto. En la memoria se colocan las órdenes que mandan al procesador realizar ciertas operaciones, junto con los datos con los cuales hay que operar. La unidad de procesamiento consta de un camino de datos (data-path) y de control. El camino de datos contiene registros para mantener los datos y unidades funcionales, tales como unidades aritmético lógicas y desplazadores, para operar con los datos. La unidad de control es poco más que una máquina de estados finitos, que hace una secuencia por sus estados para (1) buscar la próxima instrucción en la memoria, (2) decodificar la instrucción e interpretar su significado, y (3) ejecutar la instrucción moviendo y/u operando con los datos en los registros y unidades funcionales del camino de datos. Los aspectos de diseño críticos de un camino de datos residen en cómo “cablear” los diversos componentes entre sí para minimizar la complejidad del hardware y el número de estados de control para completar una operación típica. Para el control, la cuestión es cómo organizar la relativamente compleja máquina de estados que hace la “interpretación de instrucciones”. En este capítulo, se tratará cómo se organizan los componentes del hardware para obtener una computadora. Además, se aplicarán las técnicas que ya se han aprendido para diseñar los caminos de datos y las unidades de control del procesador. En particular, se examinarán: Estrategias punto a punto, de bus único y de bus múltiple para la interconexión de los elementos del camino de datos. Hay una relación de compromiso entre la complejidad del camino de datos y la complejidad del control. Un camino de datos más complejo puede simplificar el control y viceversa. La estructura del diagrama de estados de la máquina de estados finitos del controlador. El diagrama de estados para el control de una computadora tiene una estructura especial que se aprovechará en el Capítulo 12.

Upload: ngotram

Post on 04-Jun-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Organización de Computadoras

V2.0 (2012)

Traducción del Capítulo 11 del libro

Contemporary Logic Design – Randy H. Katz

Dr. Ing. Armando D. Assandri Profesor Titular

Introducción En los Capítulos 1 al 10, se han examinado los principios fundamentales del diseño digital. En este capítulo y en el próximo, nos enfocaremos en la aplicación de estas técnicas a una clase muy importante de sistema digital: la computadora de programa almacenado.

Una computadora de programa almacenado consta de una unidad de procesamiento y de un sistema de memoria adjunto. En la memoria se colocan las órdenes que mandan al procesador realizar ciertas operaciones, junto con los datos con los cuales hay que operar. La unidad de procesamiento consta de un camino de datos (data-path) y de control. El camino de datos contiene registros para mantener los datos y unidades funcionales, tales como unidades aritmético lógicas y desplazadores, para operar con los datos. La unidad de control es poco más que una máquina de estados finitos, que hace una secuencia por sus estados para (1) buscar la próxima instrucción en la memoria, (2) decodificar la instrucción e interpretar su significado, y (3) ejecutar la instrucción moviendo y/u operando con los datos en los registros y unidades funcionales del camino de datos.

Los aspectos de diseño críticos de un camino de datos residen en cómo “cablear” los diversos componentes entre sí para minimizar la complejidad del hardware y el número de estados de control para completar una operación típica. Para el control, la cuestión es cómo organizar la relativamente compleja máquina de estados que hace la “interpretación de instrucciones”.

En este capítulo, se tratará cómo se organizan los componentes del hardware para obtener una computadora. Además, se aplicarán las técnicas que ya se han aprendido para diseñar los caminos de datos y las unidades de control del procesador. En particular, se examinarán:

Estrategias punto a punto, de bus único y de bus múltiple para la interconexión de los elementos del camino de datos. Hay una relación de compromiso entre la complejidad del camino de datos y la complejidad del control. Un camino de datos más complejo puede simplificar el control y viceversa.

La estructura del diagrama de estados de la máquina de estados finitos del controlador. El diagrama de estados para el control de una computadora tiene una estructura especial que se aprovechará en el Capítulo 12.

Page 2: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

11.1 Estructura de una Computadora

La Figura 11.1 muestra un diagrama en bloques de alto nivel de una computadora. Está descompuesto en una unidad de procesamiento central (Central Processing Unit o CPU), o procesador, y un sistema de memoria adjunto. A su vez, el procesador se descompone en las unidades del camino de datos (datapath) y de control.

El camino de datos (también llamado unidad de ejecución) contiene registros para almacenar resultados intermedios y circuitos combinacionales para operar con los datos, tales como hacer desplazamientos, sumar y multiplicar. Estos últimos algunas veces se denominan unidades funcionales debido a que aplican funciones a los datos. Los datos se llevan desde la memoria a los registros. Luego se los lleva a las unidades funcionales, donde tienen lugar las manipulaciones de los mismos. Los resultados se colocan de vuelta en registros y eventualmente se vuelven a poner en la memoria. El camino de datos implementa los caminos (o rutas) por las que los datos pueden ir desde los registros a las unidades funcionales y volver de nuevo a los registros.

La unidad de control (o unidad de instrucción) se implementa con una máquina de estados finitos que trae un flujo de instrucciones desde la memoria. Las instrucciones describen qué operaciones, tal como SUMAR, debería ser aplicada a cuáles operandos. Los operandos se pueden encontrar en registros particulares o en lugares de memoria.

La unidad de control interpreta o “ejecuta” instrucciones afirmando las señales apropiadas para manipular el camino de datos, en el momento indicado y en la secuencia correcta. Por ejemplo, para sumar dos registros y colocar los resultados en un tercer registro, la unidad de control (1) afirma las señales de control necesarias para mover el contenido de los dos registros fuente a la unidad aritmético lógica (ALU), (2) le ordena a la ALU que realice la operación SUMAR afirmando las señales apropiadas, y (3) mueve el resultado al registro de destino especificado, nuevamente afirmando las señales que establecen un camino entre la ALU y el registro.

2

Page 3: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Las instrucciones se pueden agrupar en tres amplias clases: manipulación de datos (sumar, restar, etc.), mover datos (cargar/almacenar datos desde/hacia memoria) y control (saltos condicionales e incondicionales). Esta clase determina la próxima instrucción que hay que ir a buscar, a veces cómo resultado de una condición, en base a las entradas que vienen del camino de datos. Por ejemplo, la instrucción puede ser tomar una rama del programa si la última operación del camino de datos dio como resultado un número negativo.

Usted ya está familiarizado con los bloques constructivos básicos necesarios para implementar el procesador. Se pueden interconectar compuertas NAND y NOR para construir circuitos sumadores y lógicos (Capítulo 5) y registros (capítulos 6 y 7). La unidad de control del procesador sólo es otra máquina de estados finitos (Capítulos 8, 9 y 10). En el resto de esta sección examinaremos los componentes de una computadora con un poco más de detalle, como un preludio para el resto de este capítulo.

11.1.1 Control

La unidad de control de un procesador es considerablemente más compleja que los tipos de máquinas de estados finitos que se han visto hasta ahora. Una máquina de estados finitos simple es un poco más que lógica de próxima estado y de salida acoplada a un registro de estado. Una unidad de control, por otra parte, necesita tener acceso a su propio camino de datos, que es un grupo de registros que contienen información que afecta las acciones de la máquina de estados.

Contador de Programa/Registro de Instrucciones Por ejemplo, la unidad de control puede tener un registro para mantener la dirección de la próxima palabra de memoria que hay que buscar para realizar la interpretación de la instrucción. Este registro frecuentemente se denomina contador de programa o PC (por Program Counter). Cuando se lleva la instrucción desde la memoria a la unidad de control, se debe mantener en algún lugar mientras el control decodifica el tipo de instrucción que es. Esta memoria temporaria, a menudo implementada con un registro, se denomina registro de instrucción o IR (por Instruction Register). Es un registro de propósito especial y normalmente no es visible al programador de lenguaje ensamblador.

Estados Básicos de la Unidad de Control La unidad de control puede estar en una de cuatros fases básicas: Reiniciar, Buscar la Próxima Instrucción, Decodificar la Instrucción y Ejecutar la Instrucción. En la Figura 11.2 se muestra un diagrama de estados de alto nivel de una unidad de control típica. Comencemos con la secuencia de inicialización. Una señal de reinicio (reset) externa pone la máquina de estados finitos en el estado Reiniciar, desde el que el procesador se inicializa. Dado que el estado del procesador contiene más que sólo el registro de estado de la máquina de estados finitos, también se deben poner en un valor inicial varios de los registros especiales. Por ejemplo, el PC se debe cargar con algún valor, tal como 0, antes de que se pueda ir a buscar la primera instrucción. Tal vez un registro acumulador o registro especial que contenga una indicación de la condición del camino de datos también se pondrá a 0. Si bien se lo muestra como un único estado en la figura, el proceso de inicialización se puede implementar mediante una secuencia de estados.

Luego, la máquina va al estado Buscar Instrucción. El contenido del PC se envía como una dirección al sistema de memoria. Después, el control genera las señales requeridas para iniciar una lectura en la memoria. Cuando la operación se completa, la instrucción está disponible en los cables de salida de la memoria y se debe llevar al registro IR de la unidad de control. Nuevamente, Buscar Instrucción se ve como un único estado en la figura, pero la implementación real implica una secuencia de estados.

3

Page 4: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Una vez que la instrucción está disponible en el IR, el control examina ciertos bits dentro de la instrucción para determinar su tipo. Cada tipo de instrucción conduce a una secuencia diferente de estados de ejecución. Por ejemplo, la secuencia de ejecución básica de una instrucción de suma registro a registro es idéntica a una para una resta registro a registro. Los operandos se deben llevar a la ALU y el resultado se dirige al registro de destino correcto. La única diferencia es la operación requerida de la ALU. Siempre y cuando los movimientos de datos básicos sean los mismos, las secuencias de control se pueden parametrizar con la operación específica, decodificada directamente de la instrucción.

La máquina de estados de la figura divide las instrucciones en tres clases: Ramificar, Cargar/Almacenar y Registro a Registro. Por supuesto, podrían haber más clases. En el límite, podría haber una secuencia de ejecución única para cada instrucción del conjunto de instrucciones del procesador.

El estado final se ocupa de las operaciones de “orden y limpieza”, tales como incrementar el PC, antes de saltar hacia atrás para buscar la próxima instrucción. La secuencia de ejecución de una rama (del programa) que ha sido tomada modifica el PC por sí misma, por lo que se evita este paso. La secuencia de búsqueda de instrucción, ejecución e incrementar el PC continúa hasta que la máquina se reinicia.

Aunque los detalles del diagrama de estados pueden variar de un conjunto de instrucciones a otro, la secuenciación general y la forma del diagrama de estados son genéricos para las máquinas de estados de las CPUs. La característica más distintiva es la ramificación de la decodificación en

4

Page 5: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

varios caminos entre la búsqueda de instrucción y su ejecución. Esto influencia el diseño de controladores para CPUs simples que describiremos en el próximo capítulo.

11.1.2 Camino de Datos (Datapath)

Los elementos del camino de datos se construyen de un modo jerárquico e iterativo. Considere cómo se va de abajo hacia arriba en la construcción de una unidad aritmética de 32 bits para su inclusión en el camino de datos. En el nivel más primitivo, se comienza con el semi-sumador que puede sumar 2 bits. Interconectando dos de éstos, se crea un sumador total. Una vez que se tiene una “rebanada de bits” simple para el objeto del camino de datos, se crean tantas instancias de ella como sea necesario para el ancho del camino de datos. Por ejemplo, se construye un sumador de 32 bits de la ALU componiendo iterativamente 32 instancias de un sumador de 1 bit de ancho.

Como se mostró en el Capítulo 5, una rebanada de bits de la ALU es algo más complicada que eso. También debería incluir hardware para las operaciones lógicas y el acarreo anticipado para realizar operaciones aritméticas con menor retardo.

En la Figura 11.3 se muestra el símbolo del camino de datos de una unidad aritmético lógica típica. Las entradas de datos de 32 bits A y B vienen de otras fuentes en el camino de datos; la salida S va a un destino del camino de datos. Las señales de operación provienen de la unidad de control; la señal de acarreo de salida se encamina de vuelta a la unidad de control de manera que pueda detectar ciertas condiciones excepcionales, tales como el rebose, que puede interrumpir el secuenciado normal de las instrucciones. De manera análoga se construyen otros objetos del camino de datos, tales como desplazadores, registros y archivos (o conjuntos) de registros.

11.1.3 Diagrama en Bloques/Transferencia de Registros

Una computadora con un solo registro de datos, normalmente llamado acumulador o AC, es la organización de máquina más simple. La Figura 11.4 muestra el diagrama en bloques de tal máquina con un solo acumulador .

Las instrucciones de una máquina con un solo acumulador se denominan instrucciones de una dirección. Esto se debe a que contiene una sola referencia a memoria. Un operando es de forma implícita el AC; el otro es un operando que está en la memoria. Estas instrucciones son de la forma

5

Page 6: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

AC:= AC <operación> Memoria (Dirección). <operación> podría ser SUMAR, RESTAR, Y, O, etc.

Consideremos una instrucción SUMAR. El valor anterior del AC se reemplaza con la suma del contenido del AC y el contenido del lugar de memoria especificado.

Flujos de Datos y Control La Figura 11.4 muestra el flujo de datos y de control entre la memoria, los registros de control (IR, MAR y PC), el registro de datos (AC) y las unidades funcionales (ALU). El MAR es el Registro de Direcciones de Memoria (Memory Address Register), que es un elemento de almacenamiento que mantiene la dirección durante los accesos a memoria. Los flujos de datos se muestran como líneas con flechas, las otras líneas representan el control.

El núcleo del camino de datos está compuesto por la unidad aritmético lógica y el AC. El AC es la fuente y destino de todas las transferencias. Las operaciones almacenar, aritméticas y cargar inician estas transferencias. Veámoslas en más detalle.

La instrucción identifica no sólo la operación a realizar sino también la dirección del operando en la memoria. Las operaciones de almacenamiento mueven el contenido del AC al lugar de memoria especificado por ciertos bits que están dentro de la instrucción. La secuencia comienza llevando la dirección especificada desde el IR al MAR. Luego se pone el contenido del AC en las líneas de entrada de datos de la memoria, mientras que el contenido del MAR se pone en las líneas de dirección. Finalmente se activan las señales de control de la memoria siguiendo una secuencia de escritura.

Las operaciones aritméticas toman como operandos el contenido del acumulador y del lugar de memoria especificado en la instrucción. Nuevamente, el control mueve la dirección del operando desde el IR al MAR, pero esta vez invoca un ciclo de lectura de memoria. El dato obtenido por el

6

Page 7: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

camino de carga se combina con el contenido actual del AC para formar el resultado de la operación. El resultado se reescribe en el acumulador.

Una operación de carga en realidad es un caso degenerado de una operación aritmética normal. El control obtiene el operando B desde la memoria por el camino de carga, coloca la ALU en el modo “transferir” (o “hacer pasar”) y almacena el resultado en el AC.

Mientras que las instrucciones cargar/almacenar y las aritméticas manipulan el AC, las instrucciones de ramificación usan el PC. Si la instrucción es una ramificación incondicional, la porción de dirección del IR reemplaza el contenido del PC, cambiando la próxima instrucción a ser ejecutada. De forma similar, una ramificación condicional reemplaza el PC si la condición especificada en la instrucción se evalúa como verdadera.

Ubicación de Instrucciones y Datos Hay dos formas posibles de conectar el sistema de memoria a la CPU. La primera es la denominada arquitectura Princeton: las instrucciones y los datos están mezclados en la misma memoria. En este caso, los caminos de las instrucciones y de las operaciones de cargar/almacenar son los mismos.

La alternativa es la arquitectura Harvard. Los datos y las instrucciones se almacenan en memorias separadas con caminos independientes dentro del procesador.

La arquitectura Princeton es conceptualmente más simple y requiere menos conexiones a la memoria, pero la arquitectura Harvard tiene ciertas ventajas en cuanto a rendimiento. Una arquitectura Harvard puede ir a buscar la próxima instrucción incluso mientras se está ejecutando la instrucción actual. Si la instrucción actual necesita acceder a memoria para obtener un operando, la próxima instrucción todavía se puede mover dentro del procesador. Esta estrategia se denomina prebúsqueda de instrucciones, debido a que la instrucción se obtiene antes de que realmente se la necesite. Una arquitectura Princeton también puede hacer la prebúsqueda de instrucciones. Sólo que es más complicado hacerlo. Para mantener el debate simple, en el resto del capítulo asumiremos una arquitectura Princeton sencilla.

Rastreo Detallado de una Instrucción Como ejemplo de los flujos de las señales de control y de los datos necesarios para implementar una instrucción, hagamos el rastreo de una instrucción simple que suma el contenido de un lugar de memoria especificado al AC:

1. Se debe ir a buscar la instrucción a la memoria. El control hace esto moviendo el contenido del PC al MAR y luego iniciando una operación de lectura en la memoria. La instrucción viene de la memoria al IR por el camino de instrucciones.

2. Ciertos bits de la instrucción codifican la operación que se va a realizar, es decir, una instrucción SUMAR. Éstos se denominan bits del código de operación (op code) y son parte de las entradas de la máquina de estados finitos de control. Asumimos que el resto de los bits de la instrucción codifican la dirección.

3. El control lleva los bits de la dirección del operando al MAR y comienza una segunda operación de lectura en memoria para ir a buscar el operando.

4. Una vez que el dato está disponible desde la memoria por el camino de carga, el control maneja la ALU con señales que le indican SUMAR los operandos A y B para formar el resultado S.

7

Page 8: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

5. El control luego lleva el resultado S al AC para completar la ejecución de la instrucción.

6. El control incrementa el contador de programa para apuntar a la próxima instrucción. La máquina retorna al primer paso.

Notación de Transferencia de Registros Como se ha visto hasta ahora, la mayoría de lo que hace el control es transferir datos de un registro a otro, afirmando las señales de control apropiadas en los momentos correctos. Las secuencias de control se describen comúnmente en términos de una notación de transferencia de registros especial. Sin definir la notación formalmente, se puede ilustrar el concepto de transferencia de registros con la secuencia de ejecución de la instrucción descrita arriba:

Búsqueda de la Instrucción:

PC MAR; Mover el PC al MAR

Lectura de la Memoria; Afirmar la señal LEER de la Memoria

Memoria IR; Cargar el IR desde la Memoria

Decodificación de la Instrucción:

SI IR<código de operación> = SUMAR_DE_LA_MEMORIA

ENTONCES

Ejecución de la Instrucción:

IR <bits de dirección > MAR; Mover la dirección del operando al MAR

Lectura de la Memoria; Afirmar la señal LEER de la Memoria

Memoria ALU B; Conectar la Memoria a ALU B

AC ALU A; Conectar el AC a ALU A

ALU SUMAR; Indicar que la ALU realice la SUMA

ALU S AC; Cargar el resultado de la ALU en el AC

Incrementar PC; Indicarle al PC que se incremente

Las sentencias de operación se escriben en términos de las señales de control que hay que afirmar, tales como Lectura de la Memoria, ALU SUMAR o Incrementar PC. Las transferencias registro a registro se escriben de la forma registro de origen registro de destino. Los caminos detallados entre los registros determinan la descripción más refinada de transferencia de registros. Se verán más descripciones de transferencia de registros en la Sección 11.2.

8

Page 9: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

11.1.4 Interfaz a Memoria

La Figura 11.4 mostró una interfaz a memoria razonablemente genérica. Una visión más realista de una máquina con arquitectura Princeton se muestra en la Figura 11.5. Los elementos clave son los

dos registros especiales, MAR y MBR, y las tres señales de control, Petición, EscribirLeer/ y Esperar. Comencemos con los registros.

El MAR se ha visto antes. En la Figura 11.5, el MAR se puede cargar desde el contador de programa (PC) para ir a buscar instrucciones o desde el IR con una dirección de carga o almacenamiento. Para desacoplar la memoria del trabajo interno del procesador, se introduce un segundo registro de interfaz, el Registro Buffer de Memoria (Memory Buffer Register o MBR). Existe un camino bidireccional entre el camino de datos del procesador y el MBR para cargar/almacenar datos, mientras que el camino para las instrucciones entre el MBR y el IR es unidireccional.

Además de las líneas de dirección y datos, la interfaz a memoria consta de tres señales de control. La señal Petición notifica a la memoria que el procesador desea acceder a ella. La señal

EscribirLeer/ especifica la dirección: leer de la memoria en una carga y escribir en ella en un almacenamiento. La señal Esperar permite que la memoria pare el procesador, de hecho, notificando al procesador que su petición a la memoria todavía no ha sido atendida. Se puede pensar que Esperar es el complemento de una señal de reconocimiento.

Protocolo de Intercambio (Handshaking) Procesador-Memoria En su forma más general, el sistema de memoria y el procesador no comparten un reloj común. Para asegurar una transferencia de datos correcta, deberíamos seguir la convención de señalización de cuatro ciclos de la Sección 6.5.2. El procesador afirma la dirección de lectura/escritura, coloca el dato en el MAR (y en el MBR si es una escritura) y afirma la señal de Petición. La memoria normalmente afirma Esperar, negándola cuando la lectura o escritura se termina.

Cuando el procesador nota que Esperar ya no está afirmada, en una lectura acerroja el dato en el MBR, o bien pone en el tercer estado (Hi-Z) la conexión de datos a la memoria en una escritura. El

9

Page 10: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

procesador niega su línea de Petición y debe esperar que la señal Esperar sea refirmada por la Memoria antes de que pueda emitir su próxima petición a memoria.

Las formas de onda de la señalización se muestran en la Figura 11.6. El protocolo de intercambio (o handshake) de cuatro ciclos de las señales Petición y Esperar para la secuencia de lectura trabaja de la siguiente manera:

Ciclo 1: Se afirma Petición. Leer el dato colocado en el bus de datos de la memoria.

Ciclo 2: Se niega Esperar. La CPU acerroja el dato leído en el MBR.

Ciclo 3: Se niega Petición.

Ciclo 4: Se afirma Esperar.

En esta convención de señalización, se puede hacer una nueva petición solamente después de que se afirma la señal Esperar. El ciclo de escritura es análogo.

10

Page 11: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

La Figura 11.7 muestra posibles fragmentos de una máquina de estados para implementar el protocolo de intercambio de cuatro ciclos (o pasos) con la memoria. Se asume una implementación del controlador con una máquina tipo Moore. En el ciclo de lectura, se va a un estado que maneja el bus de direcciones desde el MAR, se afirman las señales Leer y Petición y se acerroja el contenido del bus de datos en el MBR. Esta última transferencia captura datos correctos sólo si la memoria ha negado Esperar, por lo que se debe esperar en este estado hasta que esto sea verdadero. Al salir hacia el próximo estado, se niega la señal Petición y no se sigue manejando el bus de direcciones. La memoria señala que está lista para una nueva petición afirmando la señal Esperar. Para permanecer entrelazado con la memoria, se espera en este estado hasta que se afirma Esperar. El ciclo de escritura es similar.

Dependiendo de los requisitos detallados de los tiempos de establecimiento y retención, puede ser necesario insertar estados adicionales en los fragmentos de la Figura 11.7. Por ejemplo, si el sistema de memoria requiere que las líneas de dirección y la dirección de la lectura/escritura estén estables antes de que se afirme la petición, esto se debería realizar en un estado precedente al que afirma la línea de Petición.

Se debe recordar que sólo las operaciones de transferencia de registros que se están afirmando en un estado dado necesitan ser escritas ahí. Si en un estado no se menciona una operación (o transición entre estados para una máquina Mealy), la misma está implícitamente negada. Así, no se tiene que poner explícitamente la señal Petición en su valor negado en el segundo estado de los fragmentos del protocolo de intercambio. Sin embargo, se deberían incluir tales operaciones de transferencia de registros para mejorar la claridad del diagrama de estados.

11.1.5 Entrada/Salida: El Tercer Componente de la Organización de una Computadora

Ya nos hemos ocupado de las interconexiones entre el procesador y la memoria. La organización de una computadora tiene un tercer componente: los dispositivos de entrada/salida. Aquí los vamos a tratar sólo brevemente.

Los dispositivos de entrada/salida proporcionan la comunicación de la computadora con el mundo exterior. Incluyen pantallas, impresoras y dispositivos de almacenamiento masivo, tales como cintas y discos magnéticos. Para el propósito de esta discusión, el principal atributo de los dispositivos de E/S es que son típicamente mucho más lentos que el procesador al que están conectados.

E/S Mapeada en Memoria Los dispositivos de E/S se pueden acoplar al procesador de dos formas primarias: a través de un bus de E/S dedicado o compartiendo el mismo bus del sistema de memoria. Casi todas las computadoras modernas usan el segundo método. Una ventaja de este método es que no hay instrucciones especiales para realizar las operaciones de E/S. Las operaciones de carga y almacenamiento pueden iniciar lecturas y escrituras en los dispositivos si se las dirige a direcciones que son reconocidas por el dispositivo de E/S en lugar de la memoria. Esta estrategia se denomina E/S mapeada en memoria debido a que los dispositivos le dan la apariencia al procesador como si fueran parte del sistema de memoria.

Los tiempos de acceso de la E/S se miden en milisegundos, mientras que los tiempos de acceso a la memoria normalmente son de menos de un microsegundo. No es productivo entretener al procesador por miles de tiempos de instrucción mientras el dispositivo de E/S hace su trabajo. Por lo tanto, el acoplamiento de control entre el procesador y los dispositivos de E/S es algo más complejo que la interfaz a memoria.

11

Page 12: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Consulta (Polling) Versus Interrupciones Debido al (relativamente) largo tiempo requerido para ejecutar las operaciones de E/S, normalmente se realizan en paralelo con el procesamiento de la CPU. Un dispositivo de E/S frecuentemente tiene sus propios controladores, esencialmente una computadora independiente que maneja los detalles del control del dispositivo. La CPU le pide al controlador que realice una operación de E/S, usualmente escribiendo información en registros de control mapeados en memoria. El procesador continúa ejecutando un flujo de instrucciones mientras el controlador de E/S atiende su petición.

El controlador le informa a la CPU cuando ha terminado su operación. Lo puede hacer de dos maneras principales: por consulta (polling) y por interrupciones. Cuando se hace por consulta, el controlador de E/S coloca su estado en un registro mapeado en la memoria al que puede acceder la CPU. Cada tanto, el software del sistema que está corriendo en la CPU ejecuta una instrucción para examinar el registro de estado para ver si la petición ha terminado.

Con interrupciones, cuando la operación de E/S ha terminado, el controlador afirma una entrada de control especial de la CPU llamada línea de interrupción. Esto fuerza a la máquina de estados del procesador a un estado de interrupción especial. El estado actual de los registros del procesador, tales como el PC y el AC, se guarda en lugares especiales de memoria. El PC se sobreescribe con una dirección particular, donde se puede encontrar el código del software del sistema que maneja la interrupción. Las instrucciones de esta ubicación manejan la interrupción copiando el dato desde el dispositivo de E/S a memoria, donde otros programas pueden acceder a él.

La consulta se usa en algunas computadoras de muy alto rendimiento, que no pueden permitir que la secuenciación de sus instrucciones sea perturbada por el pedido de atención de un dispositivo de E/S. La E/S basada en interrupciones se usa en casi todas las otras computadoras, tales como computadoras personales y sistemas de tiempo compartido.

Cambios en el Diagrama de Estados del Control En el diagrama de estados del procesador básico de la figura 11.2. sólo se necesitan cambios modestos para agregarle soporte para las interrupciones. Antes de ir a buscar una nueva instrucción, el procesador verifica si está pendiente una petición de interrupción. Si no es así, continúa con la búsqueda y ejecución normal de una instrucción.

Si se ha solicitado una interrupción, el procesador simplemente ingresa en su secuencia de estados de interrupción especial. Guarda el estado de la máquina, particularmente el PC, y le dice al dispositivo de E/S, mediante un protocolo de intercambio estándar, que ha visto la petición de interrupción. En este punto, la máquina retorna a la búsqueda y ejecución normal de instrucciones, excepto que el PC ahora apunta a la primera instrucción del código de manejo de la interrupción del software del sistema.

Una máquina con interrupciones usualmente proporciona una instrucción Retorno de Interrupción. El software del sistema ejecuta esta instrucción al final de su código de manejo de la interrupción, restableciendo el estado de la máquina almacenado en memoria y retornando el control al programa que estaba corriendo cuando tuvo lugar la interrupción.

12

Page 13: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

11.2 Estrategias de Conexión de los Buses

Una de las decisiones de diseño más críticas para el camino de datos es cómo conectar entre sí sus recursos de hardware. Hay tres estrategias generales: conexiones punto a punto, la interconexión con un único bus compartido, o usar varios buses de propósito especial. Cada una representa un compromiso entre la complejidad del camino de datos y el control y la cantidad de paralelismo soportada por el hardware. Esto determina la eficiencia del procesador, definida como la cantidad de estados del control (o ciclos de reloj) necesarios para ir a buscar y ejecutar una instrucción típica. Cuando un camino de datos soporta muchas transferencias simultáneas entre elementos del mismo, la unidad de control requiere menos estados (y ciclos de reloj) para ejecutar una instrucción dada.

En esta sección se examinarán métodos para organizar la interconexión de los componentes del camino de datos, usando como ejemplo cuatro registros de propósito general. Se considerará cómo el camino de datos puede soportar la operación de intercambio entre registros (swap), es decir, el intercambio simultáneo del contenido de un registro con otro. En la notación de transferencia de registros, se escribe la secuencia de ejecución de la instrucción como

INTERCAMBIAR (Ri , Rj): Ri Rj; Rj Ri;

donde Ri y Rj son los registros cuyos contenidos se van a intercambiar.

11.2.1 Conexiones Punto a Punto

En un esquema de interconexión punto a punto, hay un camino desde cada posible origen a cada posible destino. La Figura 11.8 muestra cómo se puede implementar este esquema para el ejemplo de cuatro registros, usando multiplexores 4 a 1.

Cada uno de los cuatro registros recibe sus entradas de carga en paralelo desde un bloque multiplexor asociado. Ri es un registro disparado por flancos, que se carga cuando se afirma la entrada LDi. Se asume que la señal de carga tiene efecto sólo en el flanco de reloj apropiado; es decir, es una señal de control sincrónica. Si cada registro es de N bits de ancho, los bloques multiplexores deben contener N multiplexores 4 a 1, un multiplexor para cada bit en el registro. Estos se controlan mediante las entradas de selección de 2 bits de ancho, Si<1:0> para el registro Ri.

13

Page 14: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Operaciones de Transferencia de Registros y Temporización de los Eventos Para ver algunas de las posibles transferencias y cómo se pueden implementar, se consideran las transferencias de registros R1 R0 (transfiere el contenido de R1 a R0) y R2 R3 (transfiere el contenido de R2 a R3). Las siguientes operaciones detalladas de transferencia de registros describen la secuenciación necesaria de las señales de control.

01 S0<1:0>; 10 S3<1:0>; 1 LD0; 1 LD3;

Las dos primeras operaciones de transferencia de registros conectan las líneas de entrada de R0 a la salida de R1, y de forma análoga para R3, que se carga desde R2. Las dos últimas operaciones afirman las señales de carga de los registros R0 y R3, respectivamente.

La Figura 11.9 muestra un fragmento de diagrama de estados para ilustrar cuándo se afirman las señales de control y cuándo tienen efecto. Se asume una implementación de máquina Moore (una máquina Mealy con salidas con registro se comporta de forma análoga). Cuando se llega al estado X se afirman las señales de control del multiplexor, conectando R1 y R2 a las entradas de R0 y R3. El estado también afirma las señales de carga de R0 y R3. Pero debido a que son sincrónicas, no tienen efecto hasta la próxima transición de estado.

Así, las señales de R1 y R2 tienen tiempo para propagarse a través de los bloques multiplexores y volverse estables para cumplir con los tiempos de establecimiento requeridos antes de que llegue el flanco del reloj que avanza la máquina de estados finitos al estado Y. Los contenidos de R0 y R3 cambian en esta transición de estado, no en la que causó que las entradas de carga se afirmaran. Dado que los valores nuevos toman algún tiempo para propagarse por los circuitos de carga del registro antes de que emerjan por las salidas, los requisitos de tiempo de retención en las entradas del registro se cumplen fácilmente.

14

Page 15: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

La Operación INTERCAMBIAR (SWAP) Para ver cómo el esquema de interconexión puede implementar una operación INTERCAMBIAR, se debe entender la relación de temporización entre las operaciones de transferencia de registros y sus efectos sobre el camino de datos. Consideremos un INTERCAMBIO entre los registros R1 y R2. Las activaciones de las señales de control son:

01 S2<1:0>; 10 S1<1:0>; 1 LD2; 1 LD1;

Al llegar al estado X, las señales de selección del multiplexor establecen los caminos deseados entre las salidas y las entradas de los registros. Se afirman las señales de carga, pero los registros todavía no han recibido sus nuevos valores. Esto sólo ocurre en el flanco del reloj que causa la transición al estado Y. Afortunadamente, los nuevos valores aparecen en las salidas bastante después de que se han satisfecho los requisitos del tiempo de retención en las entradas.

Discusión El esquema punto a punto es tan flexible que puede transferir valores nuevos a los cuatro registros al mismo tiempo. Pero hay un costo significativo en hardware. Un multiplexor 4 a 1 requiere de al menos cinco compuertas para su implementación (recordar la Figura 4.29). Asumiendo un camino de datos de 32 bits de ancho, esto significa 160 compuertas por registro, es decir, 640 compuertas para el ejemplo de cuatro registros. Por esta razón, las conexiones punto a punto sólo se pueden usar en casos raros, en los que la flexibilidad supera con creces el costo de implementación.

11.2.2 Bus Único

Un bus es un conjunto de caminos de interconexión que es compartido por múltiples orígenes y destinos de datos. Si el esquema de conexión punto a punto es demasiado intensivo en hardware, una alternativa de menor costo es usar un solo bus de interconexión. Esto se muestra en la Figura 11.10. El bloque con un multiplexor para cada registro se ha reemplazado por un bloque con un solo multiplexor, que es compartido por todos los registros. El costo del hardware es el 25% del usado con el enfoque punto a punto. El multiplexor pone el dato seleccionado en un bus que alimenta las entradas de carga de todos los registros.

15

Page 16: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Esta dramática reducción en el costo del hardware se logra a un precio: el bus compartido (y su multiplexor) es un recurso crítico, debido a que sólo lo puede usar una transferencia a la vez. Sin embargo, el registro de origen todavía puede “transmitir” simultáneamente a más de un registro de destino.

Revisión de las Transferencias de Registros Para ver que ahora las transferencias requieren más estados, consideremos de nuevo la transferencia de R1 a R0 y de R2 a R3. Esto ahora requiere dos estados separados, que afirman las siguientes señales de control:

Estado X: (R1 R0) 01 S<1:0>; 1 LD0; Estado Y: (R2 R3) 10 S<1:0>; 1 LD3;

Revisión de la Operación INTERCAMBIAR (SWAP) Dado que el camino de datos ya no soporta más de dos transferencias simultáneas, la operación de intercambio de registros se hace mucho más difícil de implementar. Se debe llevar el dato a ser intercambiado por un registro temporario que se introduce en el camino de datos. Denominaremos al registro temporario R4. Esto significa que hay que hacer una expansión a un multiplexor 5 a 1.

El intercambio del contenido de los registros R1 y R2 ahora requiere las siguientes operaciones de transferencia de registros:

Estado X: (R1 R4) 001 S<2:0>; 1 LD4; Estado Y: (R2 R1) 010 S<2:0>; 1 LD1; Estado Z: (R4 R2) 100 S<2:0>; 1 LD2;

Con conexiones punto a punto, la operación INTERCAMBIAR se pudo implementar en un solo estado y con un solo ciclo de reloj (se asume un ciclo de reloj por estado). Sin embargo, usando una interconexión de un solo bus, INTERCAMBIAR requiere un registro extra, un MUX más grande y tres estados de control.

Discusión Esto ilustra un compromiso fundamental en el hardware de una computadora: una complejidad adicional en el camino de datos puede reducir la complejidad del control y viceversa. La decisión de diseño correcta depende de manera crítica de la frecuencia de las operaciones. Si rara vez se requieren transferencias simultáneas múltiples, la decisión correcta es el camino de datos

16

Page 17: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

más simple. Si la operación INTERCAMBIAR se necesita frecuentemente, se debería elegir el método punto a punto.

También es posible adoptar una estrategia de compromiso. Esto impacta en un balance entre la complejidad del control y del camino de datos, introduciendo un número pequeño de buses adicionales donde sean necesarios. Esto se verá en la Sección 11.2.3.

Multiplexores Versus Drivers con Tres Estados (Tri-State) Hasta ahora se han usado multiplexores para realizar la conexión entre fuentes y destinos. Una alternativa que reduce drásticamente el hardware necesario saca provecho de los buffers tri-state o de colector abierto. Recuerde que estos tipos de circuitos permiten que múltiples fuentes compartan el mismo cable, siempre y cuando solamente un buffer a la vez esté manejando la línea de datos compartida.

En la Figura 11.11 se muestra este método, usando drivers tri-state. Cualquiera de los cuatro registros puede ser la fuente del bus único o ser cargado desde el mismo. El decodificador garantiza que sólo uno de los registros esté conectado al bus a través de los buffers tri-state. La mayoría de los registros de lógica que viene empaquetada (comerciales) incluyen dispositivos de tres estados; de manera que esta forma de interconexión es conveniente.

11.2.3 Múltiples Buses

Los diseños de caminos de datos reales incorporan los compromisos usuales de la ingeniería entre la complejidad del control y del camino de datos. Típicamente tienen más de un bus, pero menos que un esquema punto a punto completo. En esta subsección se compara el esquema de bus único con una disposición de interconexión que usa un pequeño número de buses. La métrica que se usará para la comparación es la cantidad de estados del procesador (y de ciclos de reloj) que se requieren para implementar una instrucción simple.

Diagrama de Transferencia de Registros de Bus Único La Figura 11.12 muestra un diseño simple de bus único para el procesador descrito en la Figura 11.4. Los registros son MAR, MBR, PC, IR y AC; y la única unidad funcional es la ALU. El AC está cableado a la entrada A de la ALU y en el MAR sólo se puede escribir. A esta figura se la denomina diagrama de transferencia de registros porque destaca la forma en que se interconectan los registros y las unidades funcionales.

17

Page 18: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Examinando el camino de datos, rápidamente se pueden determinar las operaciones de transferencia de registros que soporta:

El bus como destino: PC BUS, IR BUS, AC BUS, MBR BUS, Resultado ALU BUS;

El bus como origen: BUS PC, BUS IR, BUS AC, BUS MBR, BUS ALU B, BUS MAR;

Cableado: AC ALU A;

Ejecución de una Instrucción Ciclo por Ciclo con Bus Único Considere la instrucción simple de CPU “SUMAR Mem [X]”, que suma el contenido del lugar de memoria X al AC y almacena el resultado de vuelta en el AC. Con el esquema de conexión de la Figura 11.12, el conjunto de pasos de la transferencia de registros para ejecutar la instrucción es el siguiente (se agrupan las operaciones por estado y ciclo):

Buscar el Operando

Ciclo 1: IR <dirección del operando > BUS; BUS MAR;

Ciclo 2:

Lectura de la Memoria; Bus de Datos MBR;

18

Page 19: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Realizar la SUMA

Ciclo 3: MBR BUS; BUS ALU B; AC ALU A; SUMAR;

Escribir el Resultado

Ciclo 4: Resultado de la ALU BUS; BUS AC;

Durante el ciclo 3, el bus conecta el operando que está en el MBR con la entrada de la ALU. El bus no se puede usar al mismo tiempo como camino entre el resultado de la ALU y el AC. Así, esta transferencia debe ser diferida hasta el próximo ciclo. Con esta organización, la ALU debe tener un cerrojo para mantener el resultado hasta que se lo pueda transferir en el próximo ciclo.

Diagrama de Transferencia de Registros de Bus Múltiple

La Figura 11.13 muestra una organización alternativa de tres buses que soporta un mayor paralelismo en el camino de datos. Más paralelismo significa que pueden tener lugar más transferencias en el mismo estado. Esto debería llevarnos a una menor cantidad de estados y ciclos para la instrucción típica.

Se divide funcionalmente el bus único en un Bus de Memoria (MBUS), un Bus de Resultados (RBUS) y un Bus de Direcciones (ABUS). El primero conecta el MBR con la ALU y el IR, el segundo establece un camino entre el resultado de la ALU y el AC y el MBR, y el último proporciona conexiones entre el IR, el PC y el MAR.

19

Page 20: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Ejecución de una Instrucción Ciclo por Ciclo con Bus Múltiple Las operaciones de transferencia de registros ciclo por ciclo ahora son:

Buscar el Operando

Ciclo 1: IR <dirección del operando > ABUS; ABUS MAR;

Ciclo 2:

Lectura de la Memoria; Bus de Datos MBR;

Realizar la SUMA

Ciclo 3: MBR MBUS; MBUS ALU B; AC ALU A; SUMAR;

Escribir el Resultado

Resultado de la ALU RBUS; RBUS AC;

Dado que el MBUS y el RBUS desacoplan las entradas de la ALU de las salidas, se pueden implementar operaciones del tipo SUMAR en un solo ciclo. La introducción de los buses adicionales ha disminuido la cantidad de ciclos de ejecución de cuatro a tres. Esto no representa totalmente un ahorro del 25% en el tiempo de ejecución de un programa típico, dado que esta cuenta de ciclos no incluye la búsqueda de la instrucción.

11.3 Máquina de Estados Finitos para CPUs Simples

En esta sección se deducirá el diagrama de estados y el camino de datos de un procesador simple. La máquina tendrá palabras de 16 bits y sólo cuatro instrucciones. Si bien este puede ser un ejemplo demasiado simplificado, ilustra el proceso de obtener el diagrama de estados y el camino de datos, y la interacción entre el diagrama de estados y las operaciones de transferencia de registros del camino de datos.

11.3.1 Introducción

En general, el diseño del control del procesador va de la mano con el diseño de la interconexión del camino de datos. Se pueden resumir los pasos como sigue:

1. Comience desarrollando el diagrama de estados y las operaciones de transferencia de registros asociadas de la unidad de control del procesador, asumiendo que el camino de datos soporta conexiones punto a punto.

20

Page 21: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

2. Luego, identifique las interconexiones entre registros que no se usan al mismo tiempo en cualquier estado de control. Ahora se pueden reemplazar las mismas por una interconexión estructurada en el bus.

3. Revise el diagrama de estados para reflejar las operaciones de transferencia de registros soportadas por el camino de datos modificado.

4. Finalmente, determine cómo implementar las operaciones de transferencia de registros utilizando secuencias de señales de control detalladas. Revise el diagrama de estados para afirmar estas señales en la secuencia deseada.

Ahora se está en condiciones de comenzar la especificación de la máquina de ejemplo.

Especificación del Procesador Para una primera aproximación, una computadora se describe mediante su conjunto de instrucciones y los registros visibles al programador. La nuestra es una máquina de un solo acumulador. Su formato de instrucción y codificación se muestra en la Figura 11.14.

Las palabras de las instrucciones y los datos son de 16 bits de ancho. Los dos bits más significativos de la instrucción contienen un código de operación para denominar el tipo de operación. Los 14 bits restantes se usan como dirección de memoria de la palabra del operando.

La Figura 11.15 muestra la interfaz procesador-memoria, basada en el esquema introducido en la Sección 11.1.4. El bus de datos y el bus de direcciones de la memoria son de 16 y 14 bits de ancho, respectivamente.

21

Page 22: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Las instrucciones del procesador son:

1. Cargar desde Memoria LD XXX: Memoria[XXX] AC

2. Almacenar en la Memoria ST XXX: AC Memoria[XXX];

3. Sumar desde la Memoria ADD XXX: AC + Memoria[XXX] AC;

4. Ramificar si el Acumulador es Negativo BRN XXX: SI AC<15> = 1 ENTONCES XXX PC;

En la Figura 11.16 se muestra un diagrama de estados de alto nivel del control del procesador. Este es el punto de partida para obtener la máquina de estados detallada en esta sección. No debería sorprender que sus componentes principales sean la secuencia familiar de búsqueda de la instrucción, decodificación de la operación y ejecución de la misma.

11.3.2 Obtención del Diagrama de Estados y del Camino de Datos

El diagrama de estados de la Figura 11.16 proporciona sólo un comienzo tosco de la máquina de estados detallada. Por ejemplo, la búsqueda de una instrucción implica un acceso a memoria, y esto requiere de varios estados. Y, tal como se señaló en la sección anterior, los detalles de las interconexiones del camino de datos afectan la cantidad de ciclos requerida para ejecutar la instrucción. El diagrama de estados final contendrá varios estados más que los que se han mostrado.

Refinamiento del Diagrama de Estados: Visión General Se comienza descomponiendo el diagrama de estados en sus tres componentes principales: búsqueda de la instrucción, decodificación de la operación y ejecución de la misma. A lo largo de esta sección, se refinará cada uno de ellos.

22

Page 23: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Para comenzar, se debe decidir entre una implementación de estilo Moore o Mealy. Seleccionemos la última y supongamos que nuestro controlador es una máquina Mealy sincrónica. Las salidas de control ahora están asociadas con transiciones, en lugar de estados. Las señales de control afirmadas tienen efecto cuando se llega al próximo estado.

Estado Reiniciar (Reset) Es una buena idea hacer que Reiniciar (RES) sea el primer estado. Esto arranca la máquina en un estado conocido cuando se afirma la señal de reiniciar (reset). Además, proporciona el lugar en el diagrama de estados desde el cual se puede afirmar una señal de control para forzar a partes del camino de datos a valores de arranque conocidos. Tal vez el registro más importante que hay que poner en el estado Reiniciar es el contador de programa. En nuestra máquina, se pondrá el PC en 0. La línea de Petición de Memoria también debería ser llevada a su valor negado en el arranque.

Búsqueda de la Instrucción Al estado Reiniciar (RES) le sigue una secuencia de estados para ir a buscar la primera instrucción en la memoria (IF0, IF1, IF2). Se lleva el contenido del PC al MAR, seguido de una secuencia de lectura de memoria. Revisando el fragmento de la máquina de estados Moore de la Figura 11.7, se obtiene la secuencia de cuatro estados Mealy mostrada en la figura 11.17.

Examinemos las señales de control transición por transición. Cuando se detecta por primera vez, la señal de reinicio externa fuerza a la máquina de estados al estado RES. Este estado reinicia el PC y las señales de Petición a Memoria. Esto se hace con la operación explícita 0 PC para reiniciar el PC cuando se llega a RES; la señal de Petición está negada debido a que no se la menciona de otro

23

Page 24: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

modo. Se supone que las operaciones de transferencia de registros que no están listadas en una transición se dejan implícitamente negadas.

Una vez que la señal de Reiniciar ya no está afirmada, la máquina avanza al estado IF0. En esta transición, se afirman las señales de control para transferir el PC al MAR. Este es un buen lugar, como cualquiera, para incrementar el PC, disponiéndolo para apuntar a la próxima instrucción secuencial. Se debería recordar que las sentencias de transferencia de registros no son como las sentencias de un lenguaje de programación convencional. El incremento del PC tiene lugar en el mismo flanco de reloj que ocasiona que el MAR se cargue con el valor anterior del PC. Suponiendo dispositivos disparados por flancos, los tiempos de establecimiento/retención y los retardos de propagación garantizan que el valor anterior del PC se transfiera al MAR. En la próxima subsección se reexaminarán estas consideraciones del temporizado.

La Figura 11.7 mostró que el protocolo de intercambio (handshake) de cuatro ciclos con la memoria puede comenzar únicamente cuando la señal de memoria Esperar está afirmada. Por lo tanto, se espera en el estado IF0 hasta que la señal Esperar esté afirmada.

Una vez que la memoria está lista para aceptar una petición y Esperar está afirmada, se puede empezar una secuencia de lectura en la memoria para obtener la instrucción. En la transición al estado IF1, se disponen las señales de control para conectar el MAR al Bus de Direcciones de Memoria y afirmar las señales Leer y Petición.

Una vez que se llega al estado IF1, se ha presentado la dirección de la instrucción a la memoria y se ha efectuado una petición de lectura de la memoria. Siempre que la señal Esperar esté afirmada, estas señales deben permanecer afirmadas.

Cuando la memoria finalmente niega Esperar se avanza al estado IF2, señalando que el dato está disponible en el Bus de Datos de la Memoria. En esta transición es seguro transferir los valores que están en el bus de la memoria al MBR. Esta transición también niega la señal Petición, indicando a la memoria que el procesador está listo para finalizar el ciclo de memoria. El protocolo de intercambio de cuatro ciclos nos mantiene en este estado hasta que se afirma nuevamente la señal Esperar. En esta transición de salida, se puede transferir el MBR al IR para comenzar el siguiente paso principal en la máquina de estados: la decodificación de la operación.

Decodificación de la Operación Debido a la simplicidad del conjunto de instrucciones, la fase de decodificación simplemente es un único estado que comprueba los bits del código de operación del registro de instrucción, para determinar el próximo estado. Esto se muestra en la figura 11.18. La notación en las transiciones desde el estado OD indica una verificación condicional de los bits 15 y 14 del IR. Por ejemplo, si IR<15:14> = 00, el próximo estado es LD0.

Ejecución de la Instrucción: CARGAR Ahora se examinarán las secuencias de ejecución de las cuatro instrucciones, comenzando con LD. La secuencia de ejecución de cargar se da en la Figura 11.19. Se toma la transición al estado LD0 si ambos bits del código de operación del IR están en 0. En esta transición, se transfiere la porción de la dirección del IR al MAR. Los estados LD0, LD1 y LD2 son casi idénticos a los estados de búsqueda de la instrucción, excepto que el destino del dato que viene de la memoria es el AC, en lugar del IR. El razonamiento para las transiciones de los estados es casi idéntico: cuando la memoria está lista, se afirman Leer y Petición y se mantienen afirmadas hasta que se niega Esperar. En este punto, se acerroja el dato en el MBR y luego se lo lleva al AC.

24

Page 25: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Ejecución de la Instrucción: ALMACENAR La secuencia de ejecución de almacenar se muestra en la Figura 11.20. En esencia, es una secuencia de escritura en memoria que es similar a la secuencia de lectura de cargar. En la transición desde el estado de decodificación, se transfiere al MAR la porción de la dirección de la instrucción actual, mientras que el AC se mueve al MBR. Si la memoria está lista para aceptar una nueva petición, se comienza un ciclo de escritura conectando

25

Page 26: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

el MAR y el MBR a los buses de memoria apropiados, mientras se afirman Leer/ Escribir y Petición. Estas señales permanecen afirmadas hasta que se niega Esperar. En este punto, el procesador reinicia el protocolo de intercambio y espera que la memoria haga lo mismo.

Ejecución de la Instrucción: SUMAR

La Figura 11.21 muestra la secuencia de ejecución de la instrucción SUMAR. La estructura básica repite la secuencia de carga. Sólo la transición desde el estado AD2 de vuelta hacia el estado reiniciar tiene una operación de transferencia ligeramente diferente.

Ejecución de la Instrucción: RAMIFICAR SI ES NEGATIVO

La Figura 11.22 da la secuencia de ejecución final, para la instrucción Ramificar si el AC es Negativo. Si el bit más significativo del AC es 1, los bits de dirección del IR reemplazan el contenido del PC. En caso contrario, el contenido actual del PC, ya incrementado en la transición RES a IF0 anterior, determina la ubicación de la próxima instrucción.

26

Page 27: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

27

Page 28: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Simplificación del Diagrama de Estados Debido a que la secuencia de búsqueda de la instrucción ya verifica si la memoria está lista para recibir una nueva petición, verificando que la señal Esperar esté afirmada, se puede eliminar el estado ST2. Por la misma razón, se puede eliminar el lazo de

espera Esperar y la salida por Esperar de los estados LD2 y AD2. De forma análoga, dado que el estado IF2 completa el protocolo de intercambio procesador-memoria, se puede eliminar el lazo de retorno y las condiciones de salida de los estado LD0, ST0 y AD0. La Figura 11.23 muestra el diagrama de estados completo, pero no muestra las operaciones detalladas de transferencia de registros.

En este punto del refinamiento de la máquina de estado, la lista de entradas y salidas de control es la siguiente.

Señales de Control y Condicionales de Entrada: Reiniciar (Reset) Esperar IR<15:14> AC<15>

28

Page 29: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Señales de Control de Salida: 0 PC PC + 1 PC PC MAR MAR Bus de Direcciones de Memoria Bus de Datos de Memoria MBR MBR Bus de Datos de Memoria MBR IR MBR AC AC MBR AC + MBR AC IR<13:0> MAR IR<13:0> PC

1 Leer/ Escribir

0 Leer/ Escribir 1 Petición

La Figura 11.24 muestra un diagrama en bloques revisado mostrando el flujo de señales entre el control, el camino de datos y la memoria.

29

Page 30: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

11.3.3 Operaciones de Transferencia de Registros y Control del Camino de Datos

Para la obtención del diagrama de estados de la subsección anterior, se supuso que había un camino directo entre cualquier fuente y destino de una operación de transferencia de registros que se necesitó. La Figura 11.25 muestra las consecuencias de esta suposición para el camino de datos. Se han etiquetado las conexiones con el tipo de instrucción (Cargar, Almacenar, Sumar, Ramificar) o etapa (Buscar, Decodificar, Ejecutar) que hace uso del camino.

Ahora se deben determinar cuáles de estas conexiones punto a punto se pueden combinar para formar buses compartidos. Las conexiones se pueden combinar cuando nunca (o infrecuentemente) se usan en la misma fase.

Interconexiones del Camino de Datos Dado que la búsqueda de una instrucción y la búsqueda de un operando tienen lugar en estados diferentes de la máquina de estados, se puede usar un único bus para conectar el IR, el PC y el MAR. De forma similar, se pueden combinar en un único bus las conexiones entre el MBR y el IR, la entrada ALU B y el AC. También se pueden combinar los caminos de Almacenamiento y Suma entre la ALU, el AC y el MBR, produciendo la arquitectura de tres buses de la figura 11.26. Esta es casi idéntica al camino de datos de la Figura 11.13.

Con esta organización se puede implementar la operación de transferencia AC + MBR AC en un solo estado. En caso contrario, se necesitaría revisar la porción del diagrama de estados de la secuencia de ejecución de SUMAR, para reflejar la verdadera secuencia de transferencias necesaria para implementar esta operación.

30

Page 31: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

En la Figura 11.26 el AC es el único registro conectado a más de un bus (se lo puede cargar desde el Bus de Resultados o desde el Bus de Memoria). Esta configuración se denomina de dos puertos, y requiere hardware adicional. Es útil tratar de reutilizar conexiones existentes siempre que sea posible. Usando un componente de la ALU que tenga la capacidad de pasar su entrada B directamente a la salida, se puede implementar el camino de carga desde el MBR al AC de la misma manera que el camino de la suma. Simplemente se le ordena a la ALU PASAR B en lugar de SUMAR A y B. Esto produce la arquitectura de tres buses introducida en la Figura 11.13, eliminando la complejidad adicional del camino de datos asociada con un AC de dos puertos. Se supone esta organización en el resto de esta subsección.

Implementación de las Operaciones de Transferencia de Registros Ahora que se han decidido las conexiones detalladas soportadas por el camino de datos, se está en condiciones de examinar cómo se implementan las operaciones de transferencia de registros. Un punto de control del camino de datos es una señal que ocasiona que el camino de datos realice alguna operación cuando se afirma dicha señal. Algunas operaciones de control, tales como SUMAR, PASAR B, 0 PC, PC + 1 PC, están implementadas directamente en las unidades funcionales ALU y PC. Para otras operaciones, como PC MAR, se tiene que afirmar más de un punto de control dentro del camino de datos. Estas señales de control más detalladas a menudo se denominan microoperaciones. Así, se puede descomponer una operación de transferencia de registros en una o más microoperaciones, y hay una microoperación para cada punto de control (por ejemplo, la entrada de carga de un registro o de control de habilitación del tercer estado) en el camino de datos.

Como ejemplo, se examinará la operación de transferencia de registros PC MAR. Para implementar ésta, se debe conectar el PC al Bus de Direcciones mientras se carga el MAR desde el mismo bus. En términos de microoperaciones, PC MAR se descompone en PC ABUS y ABUS MAR.

La Figura 11.27 muestra cómo estas operaciones manipulan los puntos de control en el camino de datos. El PC es un contador que se puede cargar, conectado al ABUS por medio de buffers tri-state. El MAR es un registro que se puede cargar, cuyas entradas de carga en paralelo se manejan desde el ABUS. Afirmando la microoperación PC ABUS se conecta el PC al ABUS. Afirmando la microoperación ABUS MAR se carga el MAR desde al ABUS.

31

Page 32: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Temporizado de las Operaciones de Transferencia de Registros

La Figura 11.28 muestra el diagrama de tiempo de estas señales. La forma de onda comienza con la llegada al estado RES, seguida por el avance al estado IF0. En este diagrama de tiempo se supone que la señal Reiniciar (Reset) tiene eliminado el rebote y está sincronizada con el reloj del sistema y que 0 PC está conectada directamente a la entrada sincronizada Reiniciar. En todo el desarrollo se usan registros y contadores disparados por flancos positivos con entradas de control sincrónicas. Si bien en este diagrama de tiempo se supone lógica positiva, se debe tener en cuenta que muchos componentes vienen con señales de control activas en bajo.

Un flip-flop sincronizador captura la señal Reiniciar en el primer flanco de subida de la figura. Un retardo de propagación después, la versión sincronizada de la señal de reinicio se presenta como entrada al control. Sin importar en qué estado esté la máquina, si se afirma Reiniciar el próximo estado es RES. La microoperación 0 PC está cableada directamente a la señal sincronizada Reiniciar. La entrada sincrónica CLR del contador tiene efecto en el próximo flanco de subida. Esto coincide con la transición al estado RES.

Una vez que se está en el estado RES, se asume que la entrada Reiniciar se niega. En caso contrario, se permanecería en un lazo en el estado, poniendo de forma continua el PC en 0 hasta que Reiniciar no esté más afirmada. Con la señal Reiniciar negada, IF0 es el próximo estado y se afirman las microoperaciones PC + 1 PC, PC ABUS, y ABUS MAR.

Debido a la forma en que están implementadas en el camino de datos, algunas de estas operaciones tienen lugar de forma inmediata, mientras que otras se retrasan hasta el próximo flanco del reloj o llegada al próximo estado. Por ejemplo, al afirmar PC ABUS se activa un buffer tri-state. Esto tiene lugar de inmediato. Microopraciones como PC + 1 PC (incrementar el contador) y ABUS MAR (cargar registro) son sincrónicas y por lo tanto postergadas hasta el próximo evento del reloj.

En la forma de onda, poco después de ingresar a RES con Reiniciar quitada, se conecta el PC al ABUS. Aún cuando la señal de cuenta del PC está afirmada, ésta no tiene efecto hasta el próximo flanco de subida, por lo que el ABUS recibe correctamente 0.

32

Page 33: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

En el próximo flanco de subida, el MAR acerroja el ABUS y se incrementa el PC. Debido a que el retardo de propagación del incremento excede el tiempo de retención de la señal de carga del MAR, el valor 0 del PC todavía está en el ABUS en el momento que se completa la carga. Cuando el destino es un bus, la microoperación usualmente tiene lugar de inmediato; si el destino es un registro, el efecto de la microoperación usualmente está retardado.

Tabla de Operaciones de Transferencia de Registros y Microoperaciones Las relaciones entre las operaciones de transferencia de registros y las microoperaciones son:

Transferencia de Registros Microoperaciones

0 PC 0 PC (retrasada);

PC + 1 PC PC + 1 PC (retrasada);

PC MAR PC ABUS (inmediata),

ABUS MAR (retrasada);

MAR Bus de Direcciones MAR Bus de Direcciones (inmediata);

Bus de Datos MBR Bus de Datos MBR (retrasada);

MBR Bus de Datos MBR Bus de Datos (inmediata);

33

Page 34: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Transferencia de Registros Microoperaciones

MBR IR MBR MBUS (inmediata),

MBUS IR (retrasada);

MBR AC MBR MBUS (inmediata),

MBUS ALU B (inmediata),

ALU PASAR B (inmediata),

Resultado ALU RBUS (inmediata),

RBUS AC (retrasada);

AC MBR AC ALU A (inmediata, cableada),

ALU PASAR A (inmediata),

Resultado ALU RBUS (inmediata, cableada),

RBUS MBR (retrasada);

AC + MBR AC AC ALU A (inmediata, cableada),

MBR MBUS (inmediata),

MBUS ALU B (inmediata),

ALU SUMAR (inmediata),

Resultado ALU RBUS (inmediata, cableada),

RBUS AC (retrasada);

IR<13:0> MAR IR ABUS (inmediata),

ABUS IR (retrasada);

IR<13:0> PC IR ABUS (inmediata),

ABUS PC (retrasada);

1 Leer/ Escribir Leer (inmediata);

0 Leer/ Escribir Escribir (inmediata);

1 Petición Petición (inmediata);

34

Page 35: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

Se pueden eliminar algunas de estas operaciones debido a que una conexión está dedicada a una función particular y por lo tanto no se las tiene que controlar explícitamente. AC ALU A y Resultado ALU RBUS son ejemplos de esto, dado que el AC es el único registro que se conecta a ALU A y Resultado ALU es la única fuente del RBUS.

Esto nos lleva al flujo de señal revisado de las microoperaciones, mostrado en la Figura 11.29. Dos

señales de control van a la memoria, Leer/ Escribir y Petición, y 16 señales van al camino de datos. El control tiene un total de cinco entradas: los dos bits del código de operación, el bit más significativo del AC, la señal Esperar de la memoria y la señal externa Reiniciar. Es crítico que las dos últimas estén sincronizadas con el reloj del control.

Resumen del Capítulo

En este capítulo se ha examinado la estructura fundamental de las computadoras. Una computadora, como muchos sistemas digitales, consta de un camino de datos y de control. El camino de datos

35

Page 36: Organización de Computadorasdea.unsj.edu.ar/sisdig2/Capitulo 11.pdf · Organización de Computadoras . V2.0 (2012) Traducción del Capítulo 11 del libro . Contemporary Logic Design

36

contiene los elementos de almacenamiento (registros) que guardan los operandos, las unidades funcionales (ALUs, registros de desplazamiento) que operan con los datos y las interconexiones (buses) entre ellos.

El control de la computadora no es otra cosa que una máquina de estados finitos. La máquina hace un ciclo por un conjunto de estados que buscan la próxima instrucción en la memoria, decodifican dicha instrucción para determinar su tipo y luego la ejecutan. El control ejecuta la instrucción afirmando señales en el camino de datos para provocar que el mismo lleve datos desde los registros a las unidades funcionales, realice las operaciones y retorne los resultados a los registros.

Las operaciones de transferencia de registros proporcionan una notación para describir las operaciones de las unidades funcionales y los movimientos de datos entre los registros y las unidades funcionales. Las operaciones de transferencia de registros normalmente se escriben de una forma que es independiente de las interconexiones detalladas soportadas por el camino de datos.

Una vez que se determinan las interconexiones del camino de datos, se reemplaza cada operación de transferencia de registros por una secuencia de microoperaciones. Esto corresponde a señales de control detalladas que se envían al camino de datos, las que se deben afirmar para provocar que tenga lugar una operación de transferencia de registros.

Las computadoras son interesantes debido a que son sistemas de hardware digital particularmente complejos. Esta complejidad no proviene del camino de datos, sino que viene de la parte de control de la máquina. En el próximo capítulo se verán maneras de organizar la compleja máquina de estados de control de una computadora digital.

Lectura Adicional

Desafortunadamente, la mayoría de los libros de texto sobre diseño lógico no proporcionan demasiada cobertura sobre organización de computadoras. Después de todo, un tratamiento detallado de las arquitecturas de las computadoras, los conjuntos de instrucciones y su implementación es un tópico para otro libro. Entre las notables excepciones se incluyen Johnson y Karim, Digital Design: A Pragmatic Approach, PWS Engineering, Boston, 1987, y Prosser y Winkel, The Art of Digital Design, 2nd ed., Prentice-Hall, Englewood Cliffs, NJ, 1987. Ambos libros tienen varios capítulos sobre estructuras de computadoras y su implementación en hardware.

Para tener una perspectiva histórica sobre cómo se han desarrollado las arquitecturas de las computadoras, un libro maravilloso es D. Patterson y J. Hennessy, Computer Architecture: A Quantitative Approach, Morgan-Kaufmann, Redwood City, CA, 1990.