View
18
Download
0
Category
Preview:
Citation preview
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 1
3. Diseño de la Unidad Central de Procesamiento (CPU)
3.1 CPU básica
Para entender cómo el hardware ejecuta las instrucciones, se revisará el diseño de un
procesador que incluya un sub-conjunto básico MIPS, con las instrucciones siguientes:
Instrucciones de acceso a memoria: Carga y almacenamiento de palabras (lw y sw).
Instrucciones aritmético-lógicas: add, sub, and, or y slt.
Brincos sobre igual (beq).
Se creará el camino de datos y el control para este conjunto de instrucciones, suficiente
para observar cómo el repertorio de instrucciones determina muchos aspectos de la
implementación.
A la CPU básica se le podrán agregar otras instrucciones con cambios ligeros en la
implementación.
El procesador trabajará a un ciclo de reloj, es decir, el periodo de la señal de reloj debe ser
suficiente para que los elementos combinacionales provean las señales que serán
almacenadas en los elementos de estado. En la figura 3.1 se muestra la sincronización,
Fig. 3.1 Los elementos de estado se sincronizan con la señal de reloj.
Independientemente de la instrucción que se ejecute, los primeros dos pasos son idénticos
en todos los casos:
1. Enviar el contador del programa (PC) a la memoria de código y leer la instrucción de
esa memoria.
2. Leer uno o dos registros, usando los campos de la instrucción para seleccionarlos. La
instrucción de carga sólo requiere la lectura de un registro, pero para las demás
instrucciones se deben leer dos de ellos.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 2
Después de estos pasos, las acciones para completar la instrucción dependen de la clase de
instrucción. Sin embargo, a pesar de ser instrucciones diferentes, en el paso siguiente se
requiere de la unidad aritmético-lógica (ALU):
Acceso a memoria: Con la ALU se calcula la dirección.
Aritmético lógicas: Para la ejecución de la operación.
Brincos sobre igual: para la comparación.
Como se puede ver, la simplicidad y regularidad del repertorio de instrucciones simplifica
la implementación haciendo la ejecución similar en diferentes clases de instrucciones.
Después de usar la ALU, las acciones para completar la instrucción son distintas en cada
clase:
Almacenamientos - Escritura en memoria.
Cargas – Lectura de memoria.
Aritmético lógicas - Escritura del resultado en el registro destino.
Brincos - Tal vez requieran cambiar el valor del PC, de acuerdo al resultado de la
comparación.
En la figura 3.2 se muestra un vistazo de la implementación MIPS. Los detalles de las
conexiones se revisarán poco a poco.
Fig. 3.2 Un vistazo de la implementación.
3.2 Registros de propósito específico
El Contador de Programa (PC, Program counter) es el único registro de propósito
específico que se muestra en la figura 3.2, este contiene la dirección de la instrucción bajo
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 3
ejecución. El registro inicia con el valor 0, después de un reset, y se actualiza en cada ciclo
de reloj, pudiendo escribir el valor de PC + 4 para pasar a la siguiente instrucción
(considerando que cada instrucción ocupa 4 bytes y la memoria está organizada por bytes)
o la dirección destino de un salto relativo (PC + 4 + k).
En esta arquitectura no hay un registro de instrucción (IR, Instruction Register) porque las
instrucciones son tomadas directamente de una memoria caché, la lectura de la memoria
deja disponible a la instrucción durante todo el ciclo de reloj para su ejecución.
Tampoco hay un espacio especial para la pila, ésta se maneja en la memoria de datos y el
apuntador de pila (SP, Stack Pointer) es parte del archivo de registros ($sp = $29).
3.3 Registros de propósito general
Como se observó en la unidad 2, la arquitectura MIPS tiene 32 registros y cada uno es de
32 bits. Los registros son referidos con el símbolo $: $0, $1, $2, … $31, aunque también
tienen nombres relacionados con sus diferentes funciones.
Las instrucciones aritméticas necesitan dos registros como operandos y un registro como
destino, de manera que el archivo de registros debe permitir dos lecturas y una escritura, en
la figura 3.3 se muestra su interfaz.
Fig. 3.3 Archivo de registros.
La ejecución de una instrucción por ciclo de reloj es posible porque sólo las escrituras se
sincronizan con la señal de reloj, las lecturas son asíncronas. Con 5 bits es posible
direccionar a cualquiera de los 32 registros de propósito general, los datos leídos quedan
disponibles en buses Read data 1 y Read data 2 (de 32 bits) y el dato a escribir debe ser
colocado en el bus Write Data (también de 32 bits).
La escritura requiere de una habilitación explícita porque no todas las instrucciones
escriben resultados en los registros.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 4
3.4 Camino de Datos (Datapath)
El diseño inicia revisando los componentes requeridos por cada clase de instrucción. En
principio, es necesario un espacio para almacenar las instrucciones, un registro que indique
la instrucción que se está ejecutando y algún medio que permita avanzar a la siguiente
instrucción.
En la figura 3.4 se muestran estos tres elementos. Los dos primeros son elementos de
estado, una memoria y un registro, mientras que para calcular la dirección de la siguiente
instrucción se utilizará un sumador, por medio del cual se sumará 4 al registro del contador
del programa (es más simple que una ALU, puesto que solo realizará la operación de la
suma).
Fig. 3.4 Elementos requeridos para la búsqueda y captura de instrucciones.
La conexión de los elementos de la figura 3.4 se muestran en la figura 3.5, el contenido del
contador del programa corresponde a la dirección de la instrucción que se está ejecutando,
por lo que se conecta al bus de direcciones de la memoria de instrucciones. La dirección de
la siguiente instrucción se obtiene sumando 4 al contador del programa. En estos elementos
de estado no se muestran sus señales de control, porque se modificarán en todos los flancos.
Este es el hardware que ejecuta la búsqueda y captura de la instrucción (ciclo de fetch).
Fig. 3.5 Parte del camino de datos: Búsqueda y captura de instrucciones.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 5
Para las Instrucciones tipo R o aritmético-lógicas, además del archivo de registros se
requiere de la ALU, de esta clase se están considerando las instrucciones add, sub, slt,
and y or. En la figura 3.6 se puede ver cómo los operandos de leen del archivo de
registros, la ALU realiza la operación y el resultado se guarda en el archivo de registros.
Fig. 3.6 Camino de datos para instrucciones tipo R.
La ALU es un circuito combinacional, la duración del ciclo se realiza la lectura de
registros, opera la ALU y el resultado queda disponible para escribirse en el siguiente ciclo
de reloj.
Las siguientes instrucciones a considerar corresponden a las cargas y almacenamientos,
cuyos formatos son: lw $t1, cte ($t2) y sw $t1, cte ($t2). Estas
instrucciones realizan transferencias de memoria a registro o de registros a memoria, para
calcular la dirección de acceso a memoria se suma el contenido del registro base con el
desplazamiento. El desplazamiento es una constante de 16 bits incluida en la instrucción.
Además del archivo de registros y de la ALU, para soportar estas instrucciones se necesitan
otros elementos: una memoria de datos, la cual permitirá lecturas (para cargas) y escrituras
(para almacenamientos) y un módulo de extensión de signo; el cual en su entrada tendrá
una palabra de 16 bits y la extenderá en signo para completar una palabra de 32 bits.
La extensión de signo es necesaria porque la constante incluida en la instrucción es de 16
bits y la ALU es de 32 bits. En la figura 3.7 se muestran esos dos elementos, la memoria
incluye dos señales de control porque la escritura o lectura solo la realizan algunas
instrucciones. La memoria de datos es un elemento de estado y la unidad de extensión de
signo es un circuito combinacional.
Para combinar estos dos tipos de instrucciones debe notarse que ambos utilizan a la ALU y
el primer operando en los dos casos se obtiene del registro Rs del archivo de registros. Sin
embargo, el segundo operando difiere: En el caso de las instrucciones tipo-R el segundo
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 6
operando es el registro Rt, obtenido del archivo de registros. Mientras que para los accesos
a memoria, el segundo operando es una constante extendida en signo. Por lo que es
necesario un multiplexor en la entrada del segundo operando de la ALU.
Fig. 3.7 Elementos necesarios para las instrucciones de acceso a memoria.
También se debe notar que tanto las instrucciones tipo-R como las cargas escriben en el
archivo de registros, las tipo-R escriben el resultado de la ALU y las cargas escriben un
dato obtenido de memoria.
Entonces, en la entrada de datos del archivo de registros también debe colocarse otro
multiplexor para hacer esta selección. Este multiplexor no es importante para los
almacenamientos porque no hacen escritura en registro. En la figura 3.8 se muestra la
combinación de ambos caminos de datos, los multiplexores agregan nuevas señales de
control.
Fig. 3.8 Camino de datos para instrucciones Tipo-R y accesos a memoria.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 7
La parte de búsqueda y captura de la instrucción mostrada en la figura 3.5 puede fácilmente
agregarse a la figura 3.8 para producir la figura 3.9, en la cual se muestra la presencia de las
dos memorias, la memoria de instrucciones y la memoria de datos. Este camino de datos
requiere de un sumador además de la ALU porque el cálculo de la dirección de la siguiente
instrucción se realiza de manera simultánea a la operación sobre los datos.
Fig. 3.9 La parte de captura de la instrucción se agrega al camino de los datos.
Como instrucción condicional se está considerando a beq, esta instrucción tiene tres
operandos: dos registros que se comparan para la igualdad y una constante de 16 bits
utilizada para calcular el destino del brinco. Su forma es beq $t1, $t2, constante.
Para implementar esta instrucción se debe calcular la dirección destino sumando la
constante extendida en signo al PC. Hay dos detalles en su definición:
La base para el cálculo del destino es la dirección siguiente a la instrucción del brinco.
Por lo que debe usarse PC + 4 como base para obtener el destino del brinco.
La constante en la instrucción hace referencia al número de instrucciones a brincar y
cada instrucción ocupa 4 bytes, por ello, esta constante debe extenderse en sigo y
posteriormente multiplicarse por 4, esto se consigue con un desplazamiento de 2
posiciones a la izquierda.
La suma del desplazamiento con PC + 4 hace necesaria la presencia de otro sumador,
porque la ALU se utilizará para comparar los registros mediante una resta. Por lo tanto, el
brinco queda condicionado a la puesta en alto la bandera de zero, si la bandera se pone en
alto significa que los registros son iguales y el brinco debe realizarse, en caso contrario el
brinco se continúa con la siguiente instrucción. En la figura 3.10 se muestra el camino de
datos requerido por las instrucciones beq.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 8
Fig. 3.10 Camino de datos para instrucciones beq.
Para combinar el hardware de la figura 3.10 con el camino de datos de la figura 3.9, es
necesario un multiplexor a la entrada del PC, para poder seleccionar entre PC + 4 y el
resultado de haber sumado PC + 4 con una constante. En la figura 3.11 se muestra el
camino de los datos capaz de ejecutar instrucciones tipo-R, cargas, almacenamientos y
brincos sobre igual.
Fig. 3.11 Camino de datos para instrucciones tipo-R, LW, SW tipo-R, LW, SW y beq.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 9
3.5 La unidad de control
Completado el camino de los datos se procede con la unidad de control, un módulo que
genera las señales de escritura para los elementos de estado, realiza la selección en los
multiplexores y define la operación de la ALU; esto a partir de los bits que definan el tipo
de instrucción (opcode).
Sin embargo, dado que las instrucciones aritmético-lógicas comparten el mismo opcode, es
conveniente primero desarrollar un control para la ALU y posteriormente la unidad de
control principal.
3.5.1 Control de la ALU
La ALU tiene tres entradas de control y su comportamiento se muestra en la figura 3.12,
puede notarse que sólo 5 de las 8 combinaciones posibles son empleadas.
Operación de la ALU Funcionalidad
000 AND
001 OR
010 Suma
110 Resta
111 SLT
Fig. 3.12 Funcionalidad de la ALU
La selección entre cada una de estas cinco funciones dependerá de la clase de instrucción:
Para cargas y almacenamientos se requiere una suma para calcular la dirección de la
localidad de memoria a la que se realizará el acceso.
Para el brinco sobre igual la ALU necesita realizar una resta.
Para instrucciones aritmético-lógicas la ALU realizará una suma, resta, AND, OR o
ajuste sobre menor que, dependiendo del campo de función (6 bits menos significativos
de la instrucción).
Puesto que son 3 tareas, el Control de la ALU debe tener una entrada de 2 bits denominada
ALUOp. Esta entrada determina si la ALU realizará una suma (ALUOp = 00) para cargas
y almacenamientos, una resta (ALUOp = 01) para brincos sobre igual o si la operación
quedará determinada por el campo de función (ALUOp = 10) para instrucciones
aritméticas y lógicas. La salida del Control de la ALU debe ser de 3 bits para conectarse
directamente con las líneas de control de la ALU. En la tabla 3.1 se muestra el
comportamiento del Control de la ALU basado en su entrada de dos bits (ALUOp) y en los
6 bits del campo de función.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 10
Instrucción
(opcode) ALUOp Operación
Campo de
Función
Operación de la
ALU
LW 00 Cargar palabra XXXXXX 010
SW 00 Almacenar palabra XXXXXX 010
BEQ 01 Saltar sobre igual XXXXXX 110
Tipo-R 10 Suma (Add) 100000 010
Tipo-R 10 Resta (Sub) 100010 110
Tipo-R 10 AND 100100 000
Tipo-R 10 OR 100101 001
Tipo-R 10 Ajuste sobre menor
que (slt) 101010 111
Tabla 3.1 Comportamiento de la ALU en función de ALUOp y del campo de función.
Al usar dos niveles en el control se reduce el tamaño del control principal porque ya no
requiere como entrada al campo de función, solamente al código de operación (opcode),
con ello, su velocidad de respuesta se aumentará considerablemente. La unidad de control
principal es quien va a genera los valores para ALUOp.
En la tabla 3.1 se puede ver que para el control de la ALU también se deben considerar los
6 bits del campo de función, por lo que se trata de un circuito combinacional con 8 entradas
y 3 salidas. Para hacer un diseño simple (con pocas compuertas) se deben considerar sólo
las condiciones necesarias y suficientes para generar cada una de las salidas del control
(entradas a la ALU). En la tabla 3.2 se han colocado X en aquellos valores que no son
determinantes para definir la operación.
ALUOp Campo de función Operación
ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Sal2 Sal1 Sal0
0 0 X X X X X X 0 1 0
X 1 X X X X X X 1 1 0
1 X X X 0 0 0 0 0 1 0
1 X X X 0 0 1 0 1 1 0
1 X X X 0 1 0 0 0 0 0
1 X X X 0 1 0 1 0 0 1
1 X X X 1 0 1 0 1 1 1 Tabla 3.2 Tabla de verdad que simplifica el control de la ALU.
Analizando la tabla 3.2 y considerando las condiciones mínimas para la generación de cada
salida, se puede llegar a:
Sal0 = ALUOp1·F3 + ALUOp1·F0 = ALUOp1· (F3 + F0)
Sal1 = ALUOp1’·ALUOp0’ + ALUOp0 + ALUOp1·F2’ = ALUOp1’ + F2’
Sal2 = ALUOp0 + ALUOp1·F1
Las ecuaciones deben revisarse si se introducen nuevas instrucciones aritméticas o lógicas
porque podrían no resolver las nuevas situaciones.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 11
3.5.2 Control principal
Para el diseño del control principal es conveniente revisar los formatos de las instrucciones
que se están considerando, las instrucciones: add, sub, and, or y slt son del Tipo-R, su
formato es:
OP RS RT RD shamt FUNCT 31 . . . . . 26 25 . . . . . 21 20 . . . . . 16 15 . . . . . 11 10 . . . . . . 6 5 . . . . . . 0
Las instrucciones LW, SW y BEQ son del Tipo I, el formato que le corresponde es:
OP RS RT Inmediato 31 . . . . . 26 25 . . . . . 21 20 . . . . . 16 15 . . . . . . . . . 0
Revisando los formatos, puede notarse que:
El código de operación (opcode) está contenido en los bits 31-26. Este campo será
referido como Op[5-0].
Las instrucciones artimético-lógicas y los brincos sobre igual requieren la lectura de los
registros especificados por los campos RS y RT, en las posiciones 25-21 y 20-16.
Las instrucciones de carga y almacenamientos leen al registro RS (registro base) que
está en los bits 25-21.
Los 16 bits de la constante empleada por los brincos sobre igual, cargas y
almacenamientos están siempre en las posiciones 15-0.
El registro destino está en uno de dos lugares, para las cargas está en los bits de
posición 20-16 (RT), mientras que para instrucciones aritmético-lógicas su posición es
15-11 (RD). Por lo que es necesario el uso de un multiplexor para seleccionar el campo
que corresponda al registro que se escribirá de acuerdo a la instrucción.
Con esta información se complementa el camino de datos, agregando el multiplexor y el
control de la ALU, en la figura 3.13 se puede ver el resultado en donde también se han
etiquetado todas las señales de control, se tienen 7 señales de control además de las 2
señales para el control de la ALU (ALUOp).
En la tabla 3.3 se describe el efecto de acertar o desacertar a cada una de las señales.
Acertado significa lógicamente verdadero y depende del valor necesario para la habilitación
de un dispositivo, para los multiplexores se considerará acertado = 1. Sin embargo, para
algunas memorias sus señales de activación son activas en un nivel bajo.
La unidad de control ajusta el valor de todas las señales dependiendo del código de
operación (opcode).
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 12
Fig. 3.13 Camino de datos con el Control de la ALU y señales para el control principal.
Señal Efecto cuando es desacertada Efecto cuando es acertada
RegDst El registro destino para la escritura
viene del campo RT (20-16)
El registro destino para la escritura
viene del campo RD (15-11)
RegWrite Ninguno Se escribe un dato en el archivo de
registros
ALUSrc El segundo operando de la ALU es
el contenido del registro RT.
El segundo operando de la ALU es
una constante de 16 bits tomada de
la instrucción y extendida en signo
PCSrc El PC es remplazado por PC + 4 El PC es remplazado por la
dirección calculada para un brinco
MemRead Ninguno Lectura de la memoria de datos
MemWrite Ninguno Escritura en la memoria de datos
MemtoReg En el archivo de registros se
escribirá el resultado de la ALU
En el archivo de registros se
escribirá un dato extraído de la
memoria Tabla 3.3 Efecto en cada una de las señales de control.
La señal PCSrc debe acertarse cuando se trata de un brinco condicional pero sólo si el
resultado de la comparación es verdadero. Para no llevar la bandera de zero a la unidad de
control, se agregará una AND de dos entradas al sistema, una entrada provendrá de la
bandera zero (producida por la ALU) y la otra la generará la unidad de control cuando
detecte que se trata de un brinco, a esta última señal se le denomina branch. La salida de
esta AND remplaza a la señal PCSrc para el manejo del multiplexor. En la figura 3.14 se
muestra la incorporación de la AND y de la unidad de control al procesador.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 13
Fig. 3.14 Camino de datos y unidad de control para un procesador básico.
El control básicamente es un circuito lógico combinacional cuyas entradas corresponden a
los 6 bits del opcode (Instruction [31-26]) y sus salidas son las 7 señales de control más las
2 señales que requiere el control de la ALU, como se puede ver en la figura 3.14.
En la tabla 3.4 se muestra el valor requerido por las señales de control en función del
opcode. Se presentan algunos casos en los que el valor de la señal no importa, por ejemplo,
si no se escribirá en un registro, no importa de dónde provenga el dato. Con respecto a las
memorias y al archivo de registros, se consideró que acertado equivale a 1.
Instrucción Reg
Dst
ALU
Src
Memto
Reg
Reg
Write
Mem
Read
Mem
Write Branch ALUOp1 ALUOp0
Tipo-R 1 0 0 1 0 0 0 1 0
LW 0 1 1 1 1 0 0 0 0
SW X 1 X 0 0 1 0 0 0
BEQ X 0 X 0 0 0 1 0 1 Tabla 3.4 Valores requeridos para las señales de control.
Para la realización del circuito de control de deben tomar en cuenta los códigos de
operación de cada una de las instrucciones, éstos se muestran en la tabla 3.5.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 14
Instrucción Opcode
en Decimal
Opcode en binario
Op5 Op4 Op3 Op2 Op1 Op0
Tipo-R 0 0 0 0 0 0 0
LW 35 1 0 0 0 1 1
SW 43 1 0 1 0 1 1
BEQ 4 0 0 0 1 0 0 Tabla 3.5 Los códigos de operación en decimal y en binario.
A partir de las tablas 3.4 y 3.5 se obtiene el circuito del control, el cual se muestra en la
figura 3.15.
Fig. 3.15 Control principal para un procesador básico.
Implementación de los Saltos
A la implementación mostrada en la figura 3.14 se le agregará el hardware necesario para
soportar los saltos. El formato de la instrucción j es:
2 Dirección 31 . . . . . 26 25 . . . . . 0
La diferencia entre j y beq es que la primera instrucción es incondicional, de manera que el
salto siempre se realizará. Sin embargo, mantienen en común el hecho de que se trata de un
salto de palabras de 4 bytes, por lo que los 26 bits encontrados en la instrucción deben
desplazarse a la izquierda en 2, llenando estos espacios con ceros.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 15
De manera que al realizarse el salto, el nuevo valor del contador del programa se formará
por la concatenación de:
Los 4 bits más significativos del valor de PC + 4 (estos son los bits 31-28 de la
dirección secuencialmente continúa al salto).
Los 26 bits del campo inmediato de la instrucción del salto.
Los bits 00dos agregados por el desplazamiento.
Es necesario agregar otro multiplexor para seleccionar entre PC + 4 y el valor obtenido de
la concatenación anterior. En la figura 3.16 se muestra la inclusión del hardware para los
saltos en el procesador básico, se agrega una nueva señal de control (Jump) para la
selección del valor correcto para el PC. En la tabla 3.6 se observa como esta nueva señal no
afecta el comportamiento de las demás instrucciones.
Instrucción Reg
Dst
ALU
Src
Memto
Reg
Reg
Write
Mem
Read
Mem
Write Branch ALUOp[1:0] Jump
Tipo-R 1 0 0 1 0 0 0 10 0
LW 0 1 1 1 1 0 0 00 0
SW X 1 X 0 0 1 0 00 0
BEQ X 0 X 0 0 0 1 01 0
J X X X 0 0 0 0 XX 1 Tabla 3.6 Señales de control después de agregar la instrucción J
3.6 Ciclo de instrucción del CPU
El procesador básico mostrado en la figura 3.16 trabaja correctamente, ejecutando una
instrucción por ciclo de reloj, al comienzo del ciclo la instrucción está disponible en el bus
de salida de la memoria de instrucciones, la duración del ciclo debe ser suficiente para que
todas las unidades funcionales trabajen, al final del ciclo el resultado de la instrucción
queda listo para actualizar a los elementos de estado.
La ejecución en un solo ciclo de reloj es posible porque la escritura de los elementos de
estado se sincroniza con uno de los flancos de la señal de reloj (generalmente es el flanco
de subida) y la lectura de los mismos es asíncrona, de manera que no requiere de un flanco
de activación.
Es importante señalar que los diseños que trabajan en un ciclo de reloj no son usados en los
procesadores modernos porque son ineficientes. Una implementación de este estilo tiene un
CPI igual a 1 (Ciclos por Instrucción) y el tamaño del ciclo de reloj está determinado por la
ruta más larga posible en la máquina.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 16
Fig. 3.16 El camino de los datos con la unidad de control, soporta la ejecución de instrucciones tipo-R, cargas, almacenamientos, brincos y saltos.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 17
La ruta crítica la establece una instrucción de carga, la cual utiliza todas las unidades
funcionales en serie:
La instrucción se lee de la memoria de instrucciones.
Se lee el registro base del archivo de registros.
La ALU se emplea para calcular la dirección de acceso.
Se lee la memoria de datos.
Se prepara el dato para su escritura en el archivo de registros.
Las instrucciones que utilizan pocos recursos, como los saltos que solo ocupan la memoria
de instrucciones, tardan lo mismo que las cargas. Entonces, aunque el CPI es igual a 1, el
rendimiento de esta implementación no es bueno.
3.7 Excepciones o interrupciones
Un procesador debe incluir el manejo de excepciones o interrupciones – eventos que
cambian el flujo normal de la ejecución de instrucciones. Una excepción es un evento
inesperado desde dentro del procesador, por ejemplo, un sobre-flujo aritmético. Una
interrupción es un evento que también cambia el flujo normal de la ejecución pero viene
desde fuera del procesador. Las interrupciones son usadas por los dispositivos de entrada y
salida para comunicarse con el procesador.
Muchas arquitecturas y autores no distinguen entre excepciones e interrupciones. La
arquitectura MIPS utiliza el término excepción para referir a cualquier cambio inesperado
en el flujo de la ejecución de un programa, sin distinguir si la causa es interna o externa.
Mientras que la arquitectura Intel 80x86 usa la palabra interrupción para todos estos
eventos.
Hay dos métodos para conocer la causa de una excepción; el primero consiste en la
inclusión de un registro en el que se escriba la razón de la excepción. Por hardware se
transfiere la ejecución a una dirección establecida y por software se lee el registro para
conocer la causa y manejar la excepción.
El segundo método consiste en el uso de un vector de interrupciones. El vector contiene un
conjunto predefinido de direcciones a las cuales será transferido el control dependiendo de
la causa de la interrupción.
MIPS emplea el primer método y agrega dos registros de 32 bits al camino de datos para el
manejo de excepciones:
EPC (Exception Program Counter): Empleado para mantener la dirección de la
instrucción afectada.
Cause: Registro usado para escribir la causa de la excepción.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 18
Para ejemplificar la forma en que el procesador atiende las excepciones se consideran dos
posibles situaciones: la presencia de una instrucción desconocida (causa = 0) y un sobre-
flujo aritmético (causa = 1). La primera es generada por el control y la segunda por la ALU.
El control de excepciones debe respaldar la dirección de la instrucción afectada en el
registro EPC y después transferir el control del programa a la dirección C0000000hex, que
es en donde se deberá colocar el código que atiende las excepciones. En la figura 3.17 se
muestra el hardware que se agrega para el manejo de excepciones.
Fig. 3.17 Requerimientos de hardware para el manejo de excepciones.
A partir del contenido del registro cause, el sistema operativo debe tomar la acción
apropiada, involucrando algún servicio al usuario del programa, tomando una acción
preestablecida o deteniendo la ejecución del programa y reportando el error.
Después de realizar cualquier acción requerida por la excepción, el sistema operativo puede
terminar con la ejecución del programa o continuar su ejecución desde el punto donde
ocurrió la excepción, utilizando al registro EPC.
Ejercicios:
1. Suponiendo que los registros $t0 y $t1 tienen los valores 30 y 40 respectivamente, al
ejecutarse la instrucción: add $t2, $t1, $t0. En la figura 3.16, resalte las líneas que
estarán activas durante la ejecución de esta instrucción y escriba el valor de cada una de
las líneas activas.
2. Este ejercicio es similar al anterior, pero ahora se trata de la instrucción: beq $t1, $t2,
et1 y se debe suponer que tanto $t1 y $t2 tienen el dato 33, que la instrucción está
ubicada en la dirección 4000diez y que la etiqueta está ubicada 10 instrucciones antes de
la que se está evaluando.
Arquitectura de Computadoras 3. Diseño de la CPU
Santiago E. Felipe/UTM-2019 19
3. Al resultado mostrado en la figura 3.16, agregue el hardware necesario (camino de los
datos y señales de control) para poder soportar a la instrucción addi. Muestre que
tendrán las señales de control cuando se ejecute esta instrucción.
4. Esta pregunta es similar a la anterior, pero ahora se trata de soportar a la instrucción jal.
Proyecto para el Parcial
Simular con ayuda del Active-HDL un Procesador MIPS de 32 bits que trabaje a un ciclo
de reloj y soporte las siguientes instrucciones:
Instrucción Descripción
ADDI Suma Inmediata
Tipo R Operaciones entre registros, incluyendo: AND, OR, SUB, ADD, SLT, JR,
SLL
BEQ/BNE Saltos condicionales, sobre igual y diferente
J/JAL Saltos incondicionales (JAL además almacena PC + 4 en un registro)
SW/LW Transferencias a memoria
Evaluar con pequeños segmentos de código que contengan instrucciones diferentes, el
objetivo es probar la funcionalidad de las 14 instrucciones.
Recommended