Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
Unidad de control Control cableado Control microprogramado
Arquitectura de Computadores II
La Unidad de Control
La instruccin contenida en el Instruction Register (IR) determina la accin de la Unidad de Control La ejecucin incluye los siguientes pasos:
Instruction Fetch (IF) Instruction Decode (ID) Operand Fetch (OF) Operation Execution (OE) Operand Store(OS)
La mayora de las instrucciones son registro-memoria o registro-registro 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 rpidos pero pueden ser inflexibles
Las funciones de control son fijas; si se necesita agregar instrucciones extra, la circuitera debe redisearse Algunos procesadores RISC usan control cableado para aumentar la velocidad
Normalmente se usa una combinacin de control cableado para instrucciones sencillas y microcdigo para instrucciones complejas y poco frecuentes
Arquitectura de Computadores II
Control microprogramado
Solucin en software del control de la mquina Un control microprogramado se puede ver como un computador interno que implementa las funciones requeridas por el set de instrucciones del computador externo Una secuencia de microinstrucciones ejecuta una macroinstruccin El cdigo elemental necesario para implementar las macroinstrucciones se almacena en memoria de microprograma
Usualmente denominado firmware
Arquitectura de Computadores II
La Unidad de Control
Es la encargada de controlar la ejecucin de una instruccin. Emite seales:
Internas. Externas.
Entrada
Registro de instruccin. Estado. Seales de control.
Arquitectura de Computadores II
Unidad de Control
Reloj
Arquitectura de Computadores II
Bus de Control
Entradas
Reloj
Una o varias micro-operaciones por ciclo
Flags de condicin
Estado de la CPU, resultado de operaciones previas
Arquitectura de Computadores II
Salidas
Internas a la CPU
Movimiento de datos entre registros Activar funciones
MBR<-(memory)
Habilitar transferencia entre MAR y bus de direcciones Seal de lectura de memoria Habilitar transferencia entre el bus de datos y MBR
Arquitectura de Computadores II
Arquitectura de Computadores II
Arquitectura de Computadores II
Arquitectura de Computadores II
Arquitectura de Computadores II
Arquitectura de Computadores II
Arquitectura de Computadores II
Seales de Control
C2 C5, CR C4 C8 C5, CR C4 C1
Indirecto
t1: MAR <- IR(dir) t2: MBR <- memory t3: IR(dir) <- MBR(dir) t1: MBR <-t2: MAR <-PC <-t3: Mem <-PC dirRet dirInt MBR
Interrupcin
C12 , CW
Arquitectura de Computadores II
Arquitectura de Computadores II
Fetch cycle routine Indirect Cycle routine Interrupt cycle routine Execute cycle begin AND routine ADD routine
Implementacin
Representar cada seal de control por un bit Una palabra de control para cada micro-operacin, o para todas las micro-operaciones que pueden realizarse concurrentemente Secuencia de palabras de control para cada instruccin Agregar un campo de direccin para especificar prxima micro-instruccin, dependiendo de las flags de condicin Microprocesadores actuales
Muchas instrucciones y hardware de registros asociados Muchas seales 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 seales que se deben generar.
Arquitectura de Computadores II
10
Tipos de microinstrucciones
El ancho de palabra de la memoria de microprograma depende de
Mximo nmero de micro-operaciones simultaneas soportado En que forma se representa o codifica la informacin de control? Cmo se especifica la direccin de la prxima microinstruccin
Microprogramacin horizontal
Cada micro-instruccin especifica las seales de control sin codificar (muchas seales se pueden generar en paralelo)
Microprogramacin vertical
Seales de control codificadas
Arquitectura de Computadores II
Micro-programacin Horizontal
Palabra de microprograma ancha Posibilidad de paralelismo Poca codificacin de la informacin de control
Internal CPU Control Signals Micro-instruction Address
Jump Condition
Compromiso
Dividir la informacin de control en grupos disjuntos Implementar cada grupo en campos diferentes de la palabra de control Soporta un nivel razonable de paralelismo sin demasiada complejidad
Arquitectura de Computadores II
11
Micro-programacin Vertical
Palabra de microprograma angosta n combinaciones de seales de control codificadas en log2 n bits Capacidad limitada para expresar paralelismo La informacin de control codificada requiere un decodificador externo para manipular las seales de control
Micro-instruction Address Function Codes Jump Condition
Arquitectura de Computadores II
Nanoprogramacin
w bits log2 m bits
Microprograma n n
Donde Mu[k]=Mn[Mi[k]]
w bits m Nanoprograma
Memoria Mu
Memoria Mi
Memoria Mn
12
Unidad microprogramada
Arquitectura de Computadores II
Arquitectura de Computadores II
13
Arquitectura de Computadores II
Microinstruccin
Arquitectura de Computadores II
14
Microcdigo
El microcdigo se almacena en una memoria por lo que no es ms 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.
Registros
PC AC SP IR TIR 0, 1, -1, AMASK, SMASK A al F
Arquitectura de Computadores II
15
Microassembler (i)
Microassembler permite especificar microinstrucciones a ms alto nivel, pero hay que tener en cuenta las limitaciones impuestas sobre una microinstruccin. Asignacin: :=
Ejemplos
ac := a ac := ac + a
Microassembler (ii)
Funciones (i)
Suma
Reg + Reg Ejemplos
ac + a ac + (-1)
And
band(Reg,Reg) Ejemplo
band(ir,amask)
Arquitectura de Computadores II
16
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)
Arquitectura de Computadores II
17
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 condicin. Ejemplo: alu:=ac; if z then goto 0
Arquitectura de Computadores II
18
Microcodigo (i)
Fetch
0: 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)
Ejecucin
Load direccion (0000dddddddddddd)
6: 7: 8: 9: tir:=band(ir,amask) mar:=tir;rd rd ac:=mbr;goto 0 {obtengo direccion de IR } {coloco direccion en MAR} {salto al ciclo de Fetch} {coloco direccion en MAR} {salto al ciclo de Fetch}
O
6: mar:=ir;rd 7: rd 8: ac:=mbr;goto 0
Arquitectura de Computadores II
19
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
Arquitectura de Computadores II
20