2 por hoja

Post on 31-Jan-2017

225 views 0 download

Transcript of 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

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

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

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

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)

6

Arquitectura de Computadores II

Repaso circuitos (ii)

Arquitectura de Computadores II

Repaso circuitos (iii)

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

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)

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

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

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

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)

13

Arquitectura de Computadores IIUnidad m

icroprogramada

Arquitectura de Computadores II

Ruta de los datos (i)

14

Arquitectura de Computadores II

Ruta de los datos (ii)

Arquitectura de Computadores II

Microinstrucción

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

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)

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)

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

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}

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