Professional Documents
Culture Documents
implementación multiciclo
Recordando monociclo
1. Introducción.
8. Tratamiento de excepciones.
1. Introducción
2. Camino de datos multiciclo
Las instrucciones pueden durar un número variable de ciclos en función
de la tarea que realicen.
Es preciso añadir varios registros temporales de propósito específico,
que almacenen las salidas de las distintas unidades funcionales, para
que así dichas salidas estén disponibles en ciclos posteriores.
Aquí se
agregan 4
bits a los 28
Camino de datos y control: implementación multiciclo
Señales de control
Señal de control Efecto cuando está inactiva Efecto cuando está activa
RegDst El identificador de registro destino está en rt El identificador de registro destino está en rd (bits 15-11)
(bits 20-16)
El registro destino se escribe con el valor
RegWrite Ninguno
correspondiente
El primer operando de la UAL proviene del
ALUSrcA El primer operando de la UAL proviene del registro A
PC
Se lee una posición de memoria y su contenido se
MemRead Ninguno
coloca a la salida de datos
Se escribe una posición de memoria con el valor
MemWrite Ninguno
dado en la entrada de datos
El valor en la entrada del banco de registros El valor de la entrada del banco de registros procede del
MemtoReg procede de la UAL registro MDR
El PC suministra la dirección para acceder a ALUOut suministra la dirección para acceder a
IorD memoria memoria
Señales de control
10 La operación realizada por la UAL viene dada por el campo Funct de la instrucción
ALUSrcB El segundo operando de la UAL son los 16 bits menos significativos del IR extendidos
10
en signo a 32 bits
El segundo operando de la UAL son los 16 bits menos significativos del IR extendidos
11
en signo a 32 bits y desplazados dos lugares hacia la izquierda
00 La salida de la UAL (PC+4) se envía para ser escrita en el PC
1 2 3 4 5 6 7 8 9 10
Tiempo
Escribir dato
Calcular dirección de Leer dato residente en
Leer instrucción Calcular dirección del dato: memoria (dirección dada desde MDR
ramificación: en banco de
Calcular PC+4 A + ext_signo(IR[15..0]) por ALUOut)
PC+ext_signo(IR[15..0]<<2) registros
Leer
registros
PC apunta a fuente Dato leído de la
Instrucción grabada Dirección grabada memoria y Dato grabado
dirección en en registro rd
en IR en ALUOut grabado en MDR
memoria de la
instrucción PC incrementado
grabado en PC Registro rs grabado en A
Registro rt grabado en B
Dirección de ramificación
grabada en ALUOut
Ejecución de instrucciones multiciclo: tipo R
Ejecución de instrucciones multiciclo: beq
Camino de datos y control: implementación multiciclo
Start
Memory access
R-type instructions Branch instruction Jump instruction
instructions
Camino de datos multiciclo
Camino de datos incluyendo el control para instrucciones de salto (cond. e incond.)
Camino de datos y control: implementación multiciclo
( Op = JMP )
MEF acceso a MEF tipo R MEF salto MEF Jump
memoria condicional
(Branch)
Acceso a
LW )
memoria Acceso a
memoria
3 5
MemRead MemWrite
IoD = 1 IoD = 1
Etapa de
escritura
4
RegWrite Al estado 0
MemtoReg = 1
RegDst = 0
Camino de datos y control: implementación multiciclo
Del estado 1
(Op = tipo R)
Ejecución
6
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
Al estado 0
Camino de datos y control: implementación multiciclo
ALUSrcA = 1
ALUSrcB = 00 PC Write
ALUOp = 01
PCSource = 10
PCWriteCond
PCSource = 01
Al estado 0 Al estado 0
Autómata con las señales de control en multiciclo
Recordatorio
• Diagrama de estados del controlador multiciclo (inf. de otra fuente)
PCE PC-4
PC Dir_Excp
0 10 causa 0
Búsqueda 11 IR Memoria( PC )
de instrucción PC PC + 4
PCE PC-4
PC Dir_Excp Instrucción no definida
causa 1
1
Decod. A BR( rs )
+ REG overflow B BR( rt )
op = ‘lw’
6 8
2 Zero = 0
Ejecución
ALUout A funct B ALUout A + SignExt( inmed ) A -B
Zero = 1
3 5
Acceso a MDR Memoria( ALUout ) Memoria( ALUout ) B
memoria
7 4 9
BR( rd ) ALUout BR( rt ) MDR PC PC + 4·SignExt( inmed )
Write-
back
12
interrupción PCE PC
PC Dir_Excp
Camino de datos y control: implementación multiciclo
op2
op0
op1
s3
s2
s1
s0
instrucción (IR).
Instruction register State register
opcode field
Camino de datos y control: implementación multiciclo
MemtoReg
PCSource
ALUOp
Número de entradas de dirección= 10 =Número de bits del Outputs
ALUSrcB
registro de estado (4) + número de bits del código de operación (6) ALUSrcA
RegWrite
RegDst
Inputs
Número de palabras de la memoria: 210= 1024. NS3
NS2
NS1
NS0
Ancho de cada palabra: 20 bits= Número de salidas de control
(16) + número de bits del registro de estado (4)
Instruction register State register
opcode field
PCWriteCond
PCSource 1
PCSource 0
MemtoReg
MemWrite
MemRead
ALUSrcB0
ALUSrcA
ALUSrcB1
RegWrite
ALUop 1
ALUop 0
Estado actual PCWrite
IRWrite
RegDst
IorD
0000 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0
0001 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
0010 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
0011 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0100 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0
0101 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
0110 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0
0111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
1000 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0
1001 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Resto (estados 1010
hasta 1111)
Cada fila (estado) se repite 64 veces en la ROM (hay 26= 64 códigos de operación),
variando los bits de la función de transición (mostrados en la tabla de la transparencia
siguiente). La fila etiquetada “Resto” representa 64 x 6 = 384 filas en la ROM que nunca se
usan.
Control con una ROM: transiciones de estado
Códigos de operación (Op[5-0])
Estado actual
000000 000010 000100 100011 101011
Cq otro
(Instrucción R) (Instrucción J) (Instrucción BEQ) (Instrucción LW) (Instrucción SW)
valor
0000 0001 0001 0001 0001 0001 0001
0001 0110 1001 1000 0010 0010 ilegal
0010 xxxx xxxx xxxx 0011 0101 ilegal
0011 0100 0100 0100 0100 0100 ilegal
0100 0000 0000 0000 0000 0000 ilegal
0101 0000 0000 0000 0000 0000 ilegal
0110 0111 0111 0111 0111 0111 ilegal
0111 0000 0000 0000 0000 0000 ilegal
1000 0000 0000 0000 0000 0000 ilegal
1001 0000 0000 0000 0000 0000 ilegal
Resto (estados
? ? ? ? ?
1010 hasta 1111)
Cada casilla muestra los 4 bits de la palabra de control cuya dirección viene dada por
los bits del estado actual y los bits Op. Por ej. Si el estado es 0000 la salida es
siempre 0001. Notar que en este caso hay 64 posiciones en la ROM con el mismo
valor=0001 ya que el código de operación puede tomar cq. Valor.
Hay muchas casillas (filas de la ROM) no accesibles:
•”?”>> estados no existentes en la máquina.
•XXXX: siguiente estado indiferente (combinaciones imposibles).
•Ilegal: códigos de operación no especificados (cada casilla son 64 filas de la ROM).
Camino de datos y control: implementación multiciclo
Una solución posible es usar una ROM para las transiciones de estado y otra para
las salidas (¿cuáles serían sus tamaños?).
•Aún sobraría información (estados inexistentes, transiciones independientes de IR, etc).
Camino de datos y control: implementación multiciclo
Op1
Op0
PCWrite
En nuestro caso, la PLA tendría 17 minterms PCWriteCond
IorD
Instruction register
(opcode)
Control con un secuenciador: transiciones
Envío (dispatch): salto en función del código de operación.
•En nuestro diagrama de estados hay dos situaciones de envío (estados 1 y 2).
Puede utilizarse una tabla (ROM o PLA) para cada estado en el que sea
preciso realizar un envío (bits de dirección: código de operación, quizá
compactado). PLA or ROM
AddrCtl
1
Valor de
Acción State
AddrCtl Adder
Lógica de selecc.
de dirección
Instruction register
opcode field
Podría usarse una única tabla para todos los envíos (bits de dirección:
estado+código de operación).
Control con un secuenciador: transiciones
Bits 17-0
PCWriteCond
PCSource
PCSource
1 0
ALUSrcB
ALUSrcB
ALUSrcA
1 0
MemtoReg
Estado
RegWrite
AddrCtr
AddrCtl
MemWrite
MemRead
1 0
ALUOp
ALUOp
RegDst
1 0
PCWrite
actual
IRWrite
IorD
0000 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1
0001 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1
0010 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0
0011 0 1 0 0 1 1
0100 0 1 0 1 0 0 0
0101 0 1 0 1 0 0 0 0
0110 0 1 0 1 0 0 1 1
0111 0 1 1 0 0
1000 0 1 0 1 0 1 0 1 0 0 0 0
1001 1 0 1 0 0 0 0
Resto
(estados
1010 ? ? ? ?
hasta
1111)
Camino de datos y control: implementación multiciclo
8. Excepciones e interrupciones
Excepciones e interrupciones
La terminología difiere según las arquitecturas:
•PowerPC:
Excepción: suceso inusual.
Interrupción: cambio en el flujo de control de la ejecución de
instrucciones.
Camino de datos y control: implementación multiciclo
Excepciones e interrupciones
Terminología MIPS:
•Excepción: cualquier cambio inesperado en el flujo de control, sin distinguir si
se debe a causas internas o externas.
•Interrupción: excepción debido a causas externas.
Tipos de excepciones:
•Excepción por eventos externos: se deben a eventos externos al procesador
como son las interrupciones o los errores de bus.
•Excepciones por traducción de direcciones de memoria.
•Excepciones por errores en la ejecución de instrucciones (desbordamiento,
error de alineamiento de dirección, etc).
•Problemas de integridad en los datos: errores de paridad.
•Llamadas a sistema.
Camino de datos y control: implementación multiciclo
Excepciones en MIPS
•Las rutinas de manejo de las excepciones forman parte del sistema operativo
de los computadores.
Por tanto, el código de dichas rutinas reside en memoria principal.
43
Camino de datos y control: implementación multiciclo
op = ‘lw’
6 8
2 Zero = 0
Ejecución
ALUout A funct B ALUout A + SignExt( inmed ) A -B
Zero = 1
3 5
Acceso a MDR Memoria( ALUout ) Memoria( ALUout ) B
memoria
7 4 9
BR( rd ) ALUout BR( rt ) MDR PC PC + 4·SignExt( inmed )
Write-
back
12
interrupción PCE PC
PC Dir_Excp
Camino de datos y control: implementación multiciclo
Tendencias:
•RISC: Reduced Instruction Set Computer (computador con repertorio de instrucciones
reducido). Ejemplo: MIPS.
•CISC: Complex Instruction Set Computer (computador con repertorio de instrucciones
complejo). Ejemplo: Motorola 68000.