2 por hoja

20
1 Arquitectura de Computadores II Clase #4 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Arquitectura de Computadores II Contenido Unidad de control Control cableado Control microprogramado MIC-1

Upload: trantruc

Post on 31-Jan-2017

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2 por hoja

1

Arquitectura de Computadores IIClase #4

Facultad de Ingeniería

Universidad de la República

Instituto de Computación

Curso 2010

Arquitectura de Computadores II

Contenido

� Unidad de control

� Control cableado

� Control microprogramado� MIC-1

Page 2: 2 por hoja

2

Arquitectura de Computadores II

La Unidad de Control� La instrucción contenida en el Instruction Register (IR)

determina la acción de la Unidad de Control

� La ejecución incluye los siguientes pasos:

• Instruction Fetch (IF)

• Instruction Decode (ID)

• Operand Fetch (OF)

• Operation Execution (OE)

• Operand Store(OS)

� La Unidad de Control debe controlar la secuencia de pasos discretos que son necesarios para decodificar y ejecutar las instrucciones; se puede ver como un problema que se puede resolver en hardware o en software.

Arquitectura de Computadores II

Control cableado

� Se implementa como un circuito secuencial, usando compuertas y componentes (NAND, NOR, flip-flops, contadores, etc.).

� Los sistemas cableados son rápidos pero pueden ser inflexibles

� Las funciones de control son fijas; si se necesita agregar instrucciones extra, el circuito debe rediseñarse

� Algunos procesadores RISC usan control cableado para aumentar la velocidad

� Normalmente se usa una combinación de control cableado para instrucciones sencillas y microcódigopara instrucciones complejas y poco frecuentes

Page 3: 2 por hoja

3

Arquitectura de Computadores II

Control microprogramado

� Solución en software del control de la máquina

� Un control microprogramado se puede ver como un computador “interno” que implementa el ciclo de instrucción de la CPU

� Para cada “macroinstrucción” existe una secuencia específica de microinstrucciones que la implementa

� El código elemental necesario para implementar el ciclo de instrucción de la CPU se almacena en memoria de microprograma de tipo ROM

� Usualmente denominado firmware

Arquitectura de Computadores II

La Unidad de Control

� La unidad de control emite señales:� Internas

� Externas

� Tiene como entradas:� Registro de instrucción

� Estado

� Señales de control externas

Page 4: 2 por hoja

4

Arquitectura de Computadores II

Vista general de la Unidad de Control

Unidad de Control

Registro de Instrucción

Flags

Reloj

Señales de Controlinternas a la CPU

Señales de Control desdeel Bus del sistema

Señales de Control haciael Bus del sistema

Bus deControl

Arquitectura de Computadores II

Entradas

� Reloj� Una o varias micro-operaciones por ciclo

� Registro de Instrucción (IR)� Opcode de la instrucción en ejecución

� Determina qué micro-operaciones deben ser ejecutadas

� Flags de condición� Estado de la CPU, resultado de operaciones previas

� Del bus de control� Ej. Interrupciones

Page 5: 2 por hoja

5

Arquitectura de Computadores II

Salidas

� Internas a la CPU� Movimiento de datos entre registros

� Activar funciones de ALU

� Hacia el bus de control� Memoria

� E/S

� Ejemplo, señales de control en fetch• Habilitar transferencia entre PC y MAR

• Habilitar transferencia entre MAR y bus de direcciones

• Señal de lectura de memoria

• Habilitar transferencia entre el bus de datos y MBR

Arquitectura de Computadores II

Repaso circuitos (i)

Page 6: 2 por hoja

6

Arquitectura de Computadores II

Repaso circuitos (ii)

Arquitectura de Computadores II

Repaso circuitos (iii)

Page 7: 2 por hoja

7

Arquitectura de Computadores II

Repaso circuitos (iv)

Arquitectura de Computadores II

Control implementado en Hardware (i)

� Las entradas, como flags, IR, y señales del bus de control, determinan, junto con el estado actual (ej. etapa del ciclo de instrucción), las señales de control que deben enviarse a los diferentes componentes de la CPU y hacia el exterior de la CPU.

� Instruction register� Cada código de operación (op-code) implica diferentes señales de control

� Se puede implementar usando un decodificador que para cada código de operación activa una única salida• n entradas binarias y 2n salidas

Page 8: 2 por hoja

8

Arquitectura de Computadores II

Control implementado en Hardware (ii)

� Reloj� Secuencia de pulsos que determina la duración de las micro-operaciones

� El ciclo de reloj debe ser lo suficientemente largo para permitir la propagación de las señales

� Se deben generar señales de control en diferentes intervalos dentro del ciclo de instrucción

� Contador con diferentes señales para t1, t2 etc.

� Problemas del control cableado � Lógica compleja

� Difícil de diseñar y probar

� Diseño inflexible

� Difícil agregar nuevas instrucciones

Arquitectura de Computadores II

Control implementado en Hardware (iii)

Page 9: 2 por hoja

9

Arquitectura de Computadores II

Control implementado en Hardware (iv)

C2C5, CRNo se muestra en figura

C4

t1: MAR <- PC

t2: MBR <- memory

PC <- PC+1

t3: IR <- MBR

Fetch

Señales de ControlMicrooperacionesSubciclo

CR = Señal Read hacia el bus del sistema

Arquitectura de Computadores II

Unidad de Control microprogramada

Page 10: 2 por hoja

10

Arquitectura de Computadores II

Organización de la memoria de Control

--

Jump to Indirect or Execute

--

Jump to Execute

--

Jump to Fetch

Jump to Op code routine

-

-

Jump to Fetch or Interrupt

-

-

Jump to Fetch or Interrupt

Fetch cycle routine

Indirect Cycle routine

Interrupt cycle routine

Execute cycle begin

AND routine

ADD routine

Arquitectura de Computadores II

� Asociar a cada señal de control un bit de micro-instrucción

� Una palabra de control para cada micro-operación, o para todas las micro-operaciones que pueden realizarse concurrentemente

� Secuencia de palabras de control para cada instrucción

� Agregar un campo de dirección para especificar próxima micro-instrucción, dependiendo de las flags de condición

� Microprocesadores actuales� Muchas instrucciones y hardware complejo

� Muchas señales de control

� El resultado es una memoria de control que: • Contiene una gran cantidad de palabras, debido al amplio repertorio de instrucciones.

• Tiene un ancho de palabra grande, debido a la gran cantidad de señales que se deben generar.

Implementación

Page 11: 2 por hoja

11

Arquitectura de Computadores II

Tipos de microinstrucciones

� El ancho de palabra de la memoria de microprograma depende de� Cómo se codifica la información de control

� Cómo se especifica la dirección de la próxima micro-instrucción

� Microprogramación horizontal� Cada micro-instrucción especifica las señales de control sin codificar (muchas señales se pueden generar en paralelo)

� Microprogramación vertical� Señales de control codificadas

Arquitectura de Computadores II

Micro-programación Horizontal

Internal CPU Control Signals Micro-instruction Address

Jump ConditionSystem BusControl Signals

� Palabra de microprograma ancha

� Posibilidad de paralelismo

� Poca codificación de la información de control

� Compromiso

� Dividir la información de control en grupos disjuntos

� Codificar cada grupo en campos diferentes de la palabra de control

� Soporta un nivel “razonable” de paralelismo sin demasiada complejidad

Page 12: 2 por hoja

12

Arquitectura de Computadores II

Micro-programación Vertical

� Palabra de microprograma angosta� n combinaciones de señales de control codificadas en log2 n bits

� Capacidad limitada para expresar paralelismo� La información de control codificada requiere un decodificador externo para manipular las señales de control

Micro-instruction Address

Function Codes

Jump Condition

Arquitectura de Computadores II

Nanoprogramación

Microprograma

n

w bits

n

log2 m bits

w bits

m Nanoprograma

Memoria Mu Memoria Mn

Donde Mu[k]=Mn[Mi[k]]

Memoria Mi

Tamaño(Mu) # Tamaño(Mn)+ Tamaño(Mi)

Page 13: 2 por hoja

13

Arquitectura de Computadores IIUnidad m

icroprogramada

Arquitectura de Computadores II

Ruta de los datos (i)

Page 14: 2 por hoja

14

Arquitectura de Computadores II

Ruta de los datos (ii)

Arquitectura de Computadores II

Microinstrucción

Page 15: 2 por hoja

15

Arquitectura de Computadores II

Microcódigo

� El microcódigo se almacena en una memoria por lo que no es más que una secuencia de ceros y unos.

� Una manera de especificar las instrucciones es indicar para cada campo distinto de cero su valor.� Ejemplo: Sumar el contenido del registro AC al contenido del registro A y almacenar el resultado en AC. ENC=1, C=1, B=1, A=10.

� Sin embargo podemos definir un lenguaje de más alto nivel -> Microassembler

Arquitectura de Computadores II

Registros

� PC

� AC

� SP

� IR

� TIR

� 0, 1, -1, AMASK, SMASK

� A al F

Page 16: 2 por hoja

16

Arquitectura de Computadores II

Microassembler (i)

� Microassembler permite especificar microinstrucciones a más alto nivel, pero hay que tener en cuenta las limitaciones impuestas sobre una microinstrucción.

� Asignación: ‘:=‘� Ejemplos

• ac := a

• ac := ac + a

� El operando destino puede ser cualquiera de los registros PC a F, MAR y MBR. Tener en cuenta que entrada a MAR no pasa por ALU. MAR no puede ser operando de origen.

Arquitectura de Computadores II

Microassembler (ii)

� Funciones (i)� Suma

• Reg + Reg

• Ejemplos

• ac + a

• ac + (-1)

� And• band(Reg,Reg)

• Ejemplo

• band(ir,amask)

Page 17: 2 por hoja

17

Arquitectura de Computadores II

Microassembler (iii)

� Funciones (ii)� not

• inv(Reg)

• Ejemplo

• inv(b)

Arquitectura de Computadores II

Microassembler (iv)

� Desplazamineto� A la izquierda

• lshift(AluFunc)

• Ejemplo

• lshift(ir)

• lshift(ir+ir)

� A la derecha• rshift(AluFunc)

• Ejemplo

• rshift(ir)

• rshift(ir+ir)

Page 18: 2 por hoja

18

Arquitectura de Computadores II

Microassembler (v)

� Memoria� Lectura: rd

� Escritura: wr

� Saltos incondicionales� goto direccion

� Ejemplo: goto 20

� Saltos condicionales� if (cond) then goto direccion

� Ejemplos

• if n then goto 30

• if z then goto 10

Arquitectura de Computadores II

Microassembler (vi)

� Pseudo variable� alu, permite utilizar un registro para testear una condición.

� Ejemplo: alu:=ac; if z then goto 0

Page 19: 2 por hoja

19

Arquitectura de Computadores II

Microcodigo (i)

� Fetch0: mar:=pc;rd {main loop}

1: pc:=pc+1;rd {incrementa PC}

2: ir:=mbr;if n then goto 28 {obtiene IR y decodifica}

3: tir:=lshift(ir+ir);if n then goto 19{opcod 00xx o 01xx?}

4: tir:=lshift(tir);if n then goto 11 {opcod 000x o 001x?}

5: alu:=tir;if n then goto 9 {opcod 0000 o 0001?}

11: alu:=tir;if n then goto 15 {opcod 0010 o 0011?}

19: tir:=lshift(tir);if n then goto 25 {opcod 010x o 011x?}

20: alu:=tir;if n then goto 23 {opcod 0100 o 0101?}

Arquitectura de Computadores II

Microcodigo (ii)

� Ejecución� Load direccion (0000dddddddddddd)

6: tir:=band(ir,amask) {obtengo direccion de IR }

7: mar:=tir;rd {coloco direccion en MAR}

8: rd

9: ac:=mbr;goto 0 {salto al ciclo de Fetch}

� O6: mar:=ir;rd {coloco direccion en MAR}

7: rd

8: ac:=mbr;goto 0 {salto al ciclo de Fetch}

Page 20: 2 por hoja

20

Arquitectura de Computadores II

Referencias

� Andrew S. Tanenbaum, Structured Computer Organization, 3rd Edition, Prentice Hall, 1989.

� Sitio web del simulador: http://cis.stvincent.edu/carlsond/cs330/mic1/mic1.html

Arquitectura de Computadores II

Preguntas