1. Perspectiva general y sincronización Veremos dos realizaciones (estructuras) diferentes (monociclo y multiciclo) de la arquitectura MIPS. Se utilizará un subconjunto del repertorio de instrucciones: - De acceso a memoria: lw y sw. - Aritmético-lógicas: add, sub, and, or y slt. - De salto: beq (condicional) y j (incondicional). 1 Veremos: - La construcción paso a paso del camino de datos. Utilizaremos los componentes combinacionales y secuenciales necesarios y conectados de forma que se puedan realizar las transformaciones de datos necesarias para cada instrucción. - La definición de la unidad de control. La haremos mediante los valores de las señales de control necesarios en cada ciclo de reloj para ejecutar cada uno de los pasos de una instrucción. 2 Perspectiva general de la realización Gran parte de las transformaciones de datos necesarias es común a todas las instrucciones, con la excepción del salto incondicional. (1) Los dos primeros pasos son idénticos: - Leer de memoria la instrucción que está en la dirección contenida en el registro contador de programa (PC). - Leer uno o dos registros (de propósito general), especificados en la instrucción. 3 (2) A continuación, la transformación de datos depende del tipo de instrucción, aunque en todas ellas se utiliza la ALU: - De acceso a memoria: para calcular la dirección del operando en memoria. - Aritmético-lógicas: para ejecutar la operación. - De salto (condicional): para comparar los registros. 4 (3) Son distintas las transformaciones de datos necesarias para finalizar la ejecución de los diferentes tipos de instrucciones: - De acceso a memoria: lectura o escritura de un dato en memoria. - Aritmético-lógicas: escribir en un registro el resultado de la operación. - De salto: cambiar, según la comparación, el contenido del contador de programa. 5 La siguiente figura muestra la estructura general del camino de datos según lo que acabamos de ver: En el resto del tema completaremos esta estructura añadiendo componentes y conexiones entre ellos. 6 Metodología de sincronización Los componentes del camino de datos son de dos tipos: - Combinacionales: tratan los datos. - Secuenciales: almacenan los datos. Los componentes secuenciales se denominan elementos de estado, porque definen la situación en la que se encuentra el procesador en cada instante. La sincronización permite que se actualice correctamente el estado del procesador. 7 Los elementos de estado tienen: - Entrada de datos: valor del dato a escribir. - Señal de reloj: determina cuando se escribe el dato. - Salida de datos: valor del dato de leer (en cualquier instante). - Señales de lectura y escritura: para especificar la operación. Para simplificar, no se mostrará: - La señal de reloj. - La señal de lectura que se supone activa para todos los elementos de estado, que se leen todo el tiempo, excepto para la memoria de datos. - La señal de escritura cuando el elemento de estado correspondiente se escribe en cada ciclo de reloj. 8 Cualquier lógica combinatoria (circuito formado por componentes combinacionales) estará siempre entre dos elementos de estado. Î Esto quiere decir que sus datos de entrada vienen de un elemento de estado y sus datos de salida se almacenan en un elemento de estado. Suponemos sincronización por flanco de subida, es decir, todos los elementos de estado actualizan su almacenamiento en el flanco de subida del reloj. 9 La siguiente figura muestra entre dos elementos de estado un bloque de lógica combinatoria: Para asegurar que los valores almacenados en el flanco activo del reloj son válidos, el periodo del reloj debe ser suficientemente largo como para que se obtengan las salidas en el bloque de lógica combinatoria. 10 Esta metodología de sincronización permite que un mismo elemento de estado sea entrada y salida para un mismo bloque combinacional. De esta forma, se podrá leer el contenido de un registro, enviarlo a través de una lógica combinatoria y escribir en ese mismo registro en el mismo ciclo de reloj. En la estructura monociclo esto permite actualizar el valor del contador de programa y almacenar en el banco de registros el resultado de una operación aritmético-lógica. 11