3. diseño de la unidad central de procesamiento (cpu) 3.1...

19
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.

Upload: others

Post on 10-Aug-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 2: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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

Page 3: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 4: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 5: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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

Page 6: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 7: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 8: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 9: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 10: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 11: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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).

Page 12: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 13: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 14: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 15: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 16: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 17: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 18: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.

Page 19: 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 ...fsantiag/ArqElectronica/3a_Unidad_2020A.pdf · 3. Diseño de la Unidad Central de Procesamiento (CPU) 3.1 CPU básica

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.