Story Transcript
Unidades principales en la implementación Data Register # PC
Address
Instruction
Instruction memory
Registers Register #
ALU
Address Data memory
Register #
El procesador: camino de datos y control
Data
IEC – UTM Moisés E. Ramírez G.
1
Introducción
Instrucciones de acceso a memoria: lw, sw Instrucciones aritmético-lógicas: add, sub, slt, and, or Brincos: BEQ, J
Para mantener consistencia, y no entrar en detalles de los valores de voltaje, una señal acertada indicará un 1 lógico.
Cualquier valor que se almacene, será guardado durante el flanco de reloj.
En la implementación, cada instrucción inicia su ejecución sobre el flanco de reloj y la completa al siguiente flanco de reloj. El inconveniente es que todas las instrucciones están limitadas a la instrucción que ocupa más tiempo.
Pasos generales
Elementos que operan sobre datos (combinacionales) Elementos que contienen estados (secuenciales)3
Convenciones
Se diseñará una implementación que incluya las instrucciones más importantes.
Tipos de elementos:
Enviar el contador del programa (PC) a la memoria que contiene el código y atrapar la instrucción. Leer uno o dos registros usando los campos de la instrucción para seleccionar los registros a leer. Uso de la ALU para el cálculo de una dirección, ejecución de una operación aritmética o lógica o comparaciones. Acceso a la memoria de datos para lectura o escritura. 2
4
1
Elementos a usar para la búsqueda y captura de la instrucción a ejecutar (fetch)
La memoria de instrucciones almacenará las instrucciones a ejecutar.
El program counter, indica la instrucción que se está ejecutando
Un sumador es necesario para calcular la siguiente instrucción que se ejecutará (sumar 4 al PC).
Las entradas al archivo de registros deben incluir los números de los registros a leer y el número de registro a escribir, al igual que el dato que se escribirá en el registro especificado.
Para calcular la dirección en memoria a accesar, se suma el contenido del registro base con el desplazamiento de 16 bits.
La memoria de datos permitirá lecturas (cargas) y escrituras (almacenamientos).
El módulo de extensión de signo permitirá convertir una palabra de 16 a 32 bits. La constante es un valor expresado en complemento a 2 de esta manera permite acceder a direcciones anteriores o posteriores al registro base.
5
Archivo de registros (register file)
Cargas y almacenamientos
5 Register numbers
5 5
Data
3
Read register 1 Read register 2 Registers Write register Write data
ALUcontrol
Read data 1 Data
Zero ALU ALU result
Read data 2
7
Camino de datos para cargas y almacenamientos
Se accesa a los registros, posteriormente se calcula la dirección de memoria ya sea para leer o escribir y posteriormente, en el caso de una carga, se concluye con la escritura del registro.
RegWrite a. Registers
b. ALU
6
8
2
Saltos incodicionales J
Instrucción BEQ
El repertorio de instrucciones especifica que la base para el cálculo de la dirección destino es la dirección siguiente a la instrucción del brinco. Dado que en el camino de los datos dedicado a buscar y capturar la instrucción, calculamos PC + 4, este valor se usará como base para obtener el destino del salto.
Debido a que las instrucciones utilizan palabras de 32 bits, el desplazamiento debe corresponder a un desplazamiento de palabras y no de bytes. Para ello, una vez que se haya extendido en signo al campo del desplazamiento, será necesario multiplicarlo por 4, esto se consigue si se desplaza 2 lugares a la izquierda. 9
Camino de datos para BEQ
La instrucción j tiene dos campos, un campo de 6 bits que corresponde al opcode y otro de 26 bits que indica la dirección destino del salto. Para esta instrucción también deberá considerarse que las instrucciones ocupan 4 bytes, de manera que también será necesario desplazar este campo 2 bits a la izquierda. Después del desplazamiento se tendrán 28 bits, de manera que el nuevo valor del contador del programa se obtendrá concatenando los 4 bits más significativos del PC
11
Implementación
10
Debe tomarse en cuenta que se trata de una implementación que ejecutará todas las instrucciones en 1 ciclo de reloj. Esto significa que los recursos en el camino de los datos no pueden ser usados mas de una vez por instrucción, de manera que cualquier elemento que se requiera mas de una vez, deberá ser duplicado. Al compartir elementos, pueden requerirse múltiples conexiones a una entrada. Para ello se utilizarán multiplexores, y será el control el que determine cual de los datos fluirá a cada entrada. 12
3
Implementación de un ciclo
Tipo R + acceso a memoria
El primer operando en ambos casos es el dato escrito en el registro 1, obtenido del archivo de registros, sin embargo el segundo operando difiere para las dos instrucciones: En el caso de las instrucciones tipo-R el segundo operando es el dato escrito en el registro 2, 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. En la entrada de datos del archivo de registros también deberá colocarse un multiplexor por medio del cual se seleccione entre el dato que viene de memoria (lw) o el resultado de la operación de la ALU
BEQ: Un multiplexor a la entrada del PC, para permitirá seleccionar entre PC + 4 y el resultado de haber sumado a PC + 4 una constante. PCSrc
Add ALU Add result
4 RegWrite Instruction [25–21] PC
Read address Instruction [31– 0] Instruction memory
Instruction [20–16]
Read register 1 Read register 2
Read data 1 Read data 2
1 M u Instruction [15–11] x 0
Write register Write data Registers
RegDst Instruction [15–0]
16
Sign 32 extend
1 M u x 0
Shift left 2
MemWrite ALUSrc 1 M u x 0
ALU control
Zero ALU ALU result
MemtoReg Address
Read data
1 M u x 0
Write Data data memory MemRead
Instruction [5– 0]
13
15 ALUOp
Camino de datos para instrucciones tipo R y de acceso a memoria
Control de la ALU
14
Para cargas y almacenamientos se requiere que la ALU realice una suma para calcular la dirección de la localidad de memoria a la que se realizará el acceso. 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. Para el salto sobre igual la ALU necesita realizar una resta. 16
4
Diseño del control de la ALU
Campos en los tipos de instrucciones
Se usan dos formatos de instrucciones distintos Las instrucciones tipo R usan 3 registros como parámetros (fuentes: rs, rt; destino: rd) Las instrucciones de salto sobre igual y cargas y almacenamientos usan 2 registros rs y rt que serán evaluados para conocer si son iguales. En las cargas (35) y almacenamientos (43), el registro base rs, es el registro que se sumará a la dirección de 16 bits.
17
Tabla de verdad para controlar las operaciones de la ALU
19
Diseño del control principal
Opcode bits 31-26 -> op[5-0] En instrucciones tipo R, saltos sobre igual y almacenamientos, los registros a ser leídos: rs (25-21) y rt (20-16) El registro base para cargas y almacenamientos es rs (25-21) Los 16 bits de desplazamiento para brincos sobre igual, cargas y almacenamientos siempre están en los bits 15-0 El registro destino está en uno de dos lugares:
En caso de requerir más funciones, serán necesarias nuevas ecuaciones. Ya que habrá nuevas combinaciones. 18
instrucciones tipo R en rd (15-11) Cargas en rt (20-16)
Por lo tanto es necesario un multiplexor para seleccionar el campo que corresponda al registro que se escribirá de acuerdo a la operación. 20
5
Cada una de las señales de control
Camino de datos con las señales de control identificadas
21
23
El control principal
Señales del control principal
22
24
6
Control para la implementación de un solo ciclo
La unidad de control ajustará el valor de todas las señales dependiendo del código de operación, con excepción de PCSrc, ya que depende del resultado de la comparación en BEQ. Una de las entradas de la AND en PCSrc indica que se está realizando la operación de BEQ y la otra provendrá de la bandera de cero proveniente de la comparación dentro de la ALU| En la siguiente tabla se muestra las señales de control que deberán colocarse en función del Opcode
25
27
Implementación del control
26
28
7
Implementación de saltos incondicionales
Problemas en la implementación de un solo ciclo
J es un tipo de salto incondicional, ello implica que el salto siempre se realizará. La instrucción contiene una dirección de 26 bits que se extenderá a 28 bits (palabras en vez de bytes). Al realizarse un salto, la nueva dirección estará formada de:
No se usa una implementación de un solo ciclo porque no es eficiente. Una implementación de un solo ciclo tiene CPI de 1 (ciclos por instrucción). Todos los ciclos deberán ser del mismo tamaño, están determinados por la ruta o la instrucción que ocupa mayor cantidad de elementos en la máquina, la carga:
Los 4 bits más significativos de PC+4, 28 bits (26 + 2 bits) del campo inmediato de la instrucción de salto.
Memoria de instrucciones Archivo de registros ALU Memoria de datos Archivo de registros
Diferentes tipos de instrucciones se podrían ejecutar en menos tiempo.
29
31
Implementación multiciclos
Cada instrucción se dividirá en pasos:
30
lectura de la instrucción, decodificación, lectura de registros, etc.
Cada paso se realizará en un ciclo de reloj, todos los ciclos de la misma longitud. Se requerirán multiples ciclos para cada instrucción. El número de ciclos dependerá del tipo de instrucción. Una unidad funcional puede ser usada más de una vez por instrucción, en diferentes ciclos. 32
8
Ventajas de una implementación multiciclos
Consideraciones:
Cada instrucción puede tomar diferente número de ciclos de reloj. Se pueden compartir unidades funcionales dentro de la ejecución de una instrucción. Se puede usar una sola memoria para datos e instrucciones. Se puede usar una sola ALU Se agregan registros después de cada unidad funcional, para que éstos mantengan la salida hasta que su valor sea usado en un ciclo de reloj sucesivo. Estos registros no son visibles al programador. La colocación de los registros temporales depende de dos factores:
Se puede notar que existen:
34
El archivo de registros puede realizar a la vez dos lecturas o una escritura. La memoria puede realizar una lectura o una escritura. La ALU puede realizar una operación
Cada uno de estos tres elementos genera un resultado que debe salvarse para las próximas etapas. Se agregan a la implementación:
Registros temporales para respaldar la salida de la memoria:
IR Instruction Register (instrucción). Este es el único registro que se mantiene durante toda la ejecución de la instrucción. MDR memory data register (dato)
Ambos registros se almacenan por separado ya que ambos pueden ser necesarios en un mismo ciclo.
La salida del archivo de registros se almacenan en A y B. La salida de la ALU se almacena en ALUOut. 35
Implementación de múltiples ciclos.
Una sola memoria (instrucciones y datos) Una sola ALU, en vez de una ALU y dos sumadores.
En cada ciclo de reloj:
Las unidades funcionales que se requieren en cada ciclo Los datos que se requerirán en etapas posteriores. 33
Aproximación a un camino de datos de una implementación multiciclos
En los recuadros se marcan los registros necesarios para la implementación de múltiples ciclos.
36
9
Camino de datos y control para la implementación de múltiples ciclos.
Multiplexor para Instrucciones o Datos
Un multiplexor para seleccionar entre dos posibles direcciones:
Dirección de una instrucciones (que proviene del PC) Dirección de un dato (que se generó como el resultado de una operación de la ALU).
37
Multiplexores que controlan las entradas de la ALU
PC A (registro)
El segundo multiplexor
Posibles valores que escribirán en el PC
El primer multiplexor permite seleccionar entre
39
B 4 Salida de ext de signo 16->32 Dirección desplazada