Post on 19-Jul-2015
Organizacin del ProcesadorJos Acosta
Temas a Tratar
Estructura del CPU Registros Ciclo de Instruccin Ciclo Indirecto Segmentacin de instrucciones Tratamiento de Saltos
Referencia: Organizacin y Arquitectura de Computadores William Stallings 7 ed. Cap. 12
Estructura del CPUFunciones
Captar Instruccin: leer la instruccin de la memoria Interpretar Instruccin: decodificacin para determinar accin necesaria Captar datos: leer memoria o de dispositivos E/S
Procesar Datos: ejecucin de operaciones aritmticas o lgicas Escribir Datos: los resultado se escriben en la memoria o dispositivos E/S
CPU: Bus del Sistema
Registros
Unidad Aritmtico Lgica (ALU)
Unidad de Control de Programa (UC)
Bus de Control
Bus de Bus de Datos Direcciones
Bus del Sistema
Estructura Interna del CPUFlag de Estados Desplazador Complementador
Interno del CPU
. . .
Registros
Aritmtica & Lgica
Unidad de Control de Programa (UC)
Bus de Control
RegistrosRegistros
Visibles por el usuarioUso general
Registros de Control y EstadoContador de Programa (PC) Registro de Instruccin Registro de Direccin de Memoria (MAR)
DatosDirecciones Puntero de segmentos Puntero de pila Registros ndice
Registro Intermedio de Memoria (MBR)
Cdigos de condicin (Flag de Estados/PSW)
Consideraciones de Diseo
Registros
Tamao
Suficiente como para poder contener la direccin/dato mayor Menor cantidad requiere mayor acceso a memoria Mayor cantidad no reduce accesos a memoria (salvo RISC)
Generalmente entre 8 a 32 Generales o Especficos? Influyen en el diseo del repertorio de instrucciones y en la flexibilidad de programacin
Uso
Cantidad
Flag de Estados/Indicadores/PSW
Registros
Indicador Sign
UsoSi est activo indica que el resultado de operacin o de comparacin son negativos. Est activo si el resultado de operacin es cero o resultado de comparacin igual. Indicador de arrastre del bit de mayor orden, (operaciones de suma y resta) Si est activo indica que el resultado de comparacin es la igualdad Seala desbordamiento aritmtico Este bit controla el estado del sistema de interrupciones enmascarables. Cuando est activo (1) permite las interrupciones; el estado inactivo (0) las deshabilita. Indica si el procesador trabaja en modo supervisor o usuario
ZeroCarry Equal Overflow Interrupt Supervisor
Ejemplos de RegistrosRegistros de DatosD0 D1 D2 D3 D4 D5 D6 D7
RegistrosEAX EBX ECX EDX
Registros GeneralesAX - Acumulador BX - Base CX - Contador DX - Datos
Registros GeneralesAX BX CX DX
Punteros e ndicesSP Punt. Pila BP Punt. Base SI ndice Fuente DI ndice Destino ESP EBP ESI EDI SP BP SI DI
Registros de DireccionesA0 A1 A2 A3 A4 A5 A6 A7
SegmentoCS - Cdigo DS - Datos SS - Pila ES - Extra
Estados del ProgramaRegistro FLAGS Puntero Instrucciones
Estados del ProgramaPCPSW
Estados del ProgramaPuntero Instrucciones
Indicadores
MC68000
8086
80386 - Pentium
Ciclo de InstruccinCiclo de Captacin Ciclo de Ejecucin
Inicio
Busca siguiente Instruccin
Decodifica Instruccin
Ejecuta Instruccin
Parada
Buscar siguiente instruccin de la memoria y transferirla al registro de instrucciones Modificar el contador de programa para que apunte a la siguiente instruccin Determinar el tipo de instruccin Determinar la posicin de memoria de la palabra contenida en la instruccin (si corresponde) Buscar la palabra desde la memoria (si corresponde) y colocarla en un registro de la CPU Ejecutar la instruccin Volver al primer paso para comenzar la siguiente instruccin
Ciclo de InstruccinEjemplo
Sumar el contenido de la palabra de memoria 940 con el contenido de la palabra de memoria 941 y almacenarlo en esta ultima posicin
Ciclo de InstruccinEjemplo
Fetch instruccin 1:
El PC seala la posicin de memoria 300 La instruccin de esta posicin se carga al IR (esto implica el uso de MAR y MBR)
Ciclo de InstruccinEjemplo
Ejecucin instruccin 1:
Los primeros 4 bits de IR (1 hex) indican que el acumulador AC se va a cargar con un dato de la memoria Los 12 bits siguientes especifican la direccin (es decir 940).
Ciclo de InstruccinEjemplo
Fetch instruccin 2:
El registro de PC se incrementa y se capta la siguiente instruccin (posicin de memoria 301)
Ciclo de InstruccinEjemplo
Ejecucin instruccin 2:
Los primeros 4 bits (5) indican que la instruccin es de suma entre el acumulador y una memoria Los siguientes 12 bits indican la direccin de memoria (941). El contenido de AC y el de la posicin 941 se suman y el resultado se almacena en AC
Ciclo de InstruccinEjemplo
Fetch instruccin 3:
El registro de PC se incrementa y se capta la siguiente instruccin (posicin de memoria 302)
Ciclo de InstruccinEjemplo
Ejecucin instruccin 3:
Los primeros 4 bits indican (2) que el acumulador se debe almacenar en una memoria Los siguientes 12 bits indican la direccin de la memoria (941). El contenido de AC se almacena en la posicin 941
Ciclo Indirecto
Las instrucciones pueden requerir accesos a memoria para bsqueda de datos El direccionamiento indirecto requiere mayor acceso a memoria Dependiendo de ciertas condiciones se pueden saltar a ejecucin de sub rutinas o interrupciones del programa
FETCH
INTERRUPCION
INDIRECTO
EJECUCION
Ciclo IndirectoDiagrama de Flujo
Indireccin
Indireccin
Captar instruccin
Captar operando
Almacenar operando
Operandos Mltiples
Resultados Mltiples
Calcular direccin de instruccin
Decodificar operacin de instruccin
Calcular direccin de operando
Operacin de Datos
Calcular direccin de operando
Comprobar interrupcin
Interrupcin
Instruccin terminada captar siguiente instruccin
Buscar mas datos de cadena o vector
No Interrupcin
Ciclo IndirectoCaptar Instruccin
Depende del diseo de la CPU y comprende:
PC contiene direccin de prox. instruccin 1 Direccin movida a MAR 2 Direccin puesta en bus de direcciones 3 Unidad de Control dispone lectura de memoria 4 Resultado puesto en bus de datos, copiado a MBR y luego a IR 5, 6, 7 PC incrementado en 1 8
1
2
3 5
8
4 7 6
Ciclo IndirectoCaptar Datos
Se examina IR Si existe direccionamiento indirecto, se ejecuta ciclo indirecto:
N bits de la derecha del MBR transferidos a MAR 1 Unida de Control dispone lectura de memoria 2 Resultado (direccin del operando) transferida a MBR 3
2 1
3
Ciclo IndirectoEjecucin
Puede tener varias formas, dependiendo de la instruccin ejecutada
Puede ser:
Leer/escribir en Memoria Entrada/Salida Transferencia entre registros Operaciones de ALU
Ciclo IndirectoInterrupcin
Simple y predecible Se guarda valor actual de PC para permitir reasumirlo despus de la interrupcin Valor de PC copiado a MBR 1 Se carga ubicacin especial en la memoria (e.g. stack pointer) en MAR 2 MBR se escribe en memoria 3 Se carga PC con direccin de rutina de interrupcin 4 Siguiente instruccin (primera de la rutina de interrupciones) puede ser captada 5
5
4
2
3
1
Segmentacin de Instrucciones
Cambios en la organizacin del procesador incide en la mejora de sus prestaciones Uno de ellos es la segmentacin de instrucciones o Pipelining (entubamiento)
Se semeja una lnea de produccin compuesta por etapas independientes entre si y que pueden ejecutarse en simultaneo Se aceptan nuevas instrucciones antes que terminen de ejecutarse las anteriores
Segmentacin de InstruccionesPrefetch
Dos etapas independientes La primera capta instruccin y lo almacena hasta que la segunda est libre Cuando ocurre, la primera est libre para captar nuevas instrucciones mientras que la segunda est ocupada
Esto se conoce como Prefetch y supone la reduccin del tiempo de instruccin a la mitad Pero ocurren retrasos por mayores tiempo de proceso al ejecutar y/o por acceso a subrutinas o interrupciones Se aaden mas etapas para mejorar la performance
Segmentacin de InstruccionesPrefetch
Esperar Nueva Direccin
Esperar
Instruccin
Instruccin
Resultado
Captar
Instruccin
Instruccin
Resultado
Ejecutar
Captar
Ejecutar
Descartar
Visin Simplificada
Visin Ampliada
Segmentacin de InstruccionesPipeliningSeis Etapas: FI DI
(FI) Captar Instruccin
(DI) Decodificar Instruccin(CO) Calcular Operandos (FO) Captar Operandos (EI) Ejecutar Instruccin (WO) Escribir OperandoVaciar Cauce Actualizar PC
COSI
Salto Incondicional?
NO
FO EI WO
Traslape de Etapas
SI
Salto o Interrupcin?
NO
Segmentacin de InstruccionesPipelining Diagrama de Tiempos
Efecto de Saltos Diagrama de Tiempos
Segmentacin de Instrucciones
Segmentacin de InstruccionesDiagrama de Tiempos Alternativos
Segmentacin de InstruccionesFactores de Aceleracin
Factor de Aceleracin K = 12 etapas
Factor de Aceleracin
n = 30 instrucciones
K = 9 etapas
n = 20 instrucciones
K = 6 etapas
n = 10 instrucciones
Numero de Instrucciones
Numero de Etapas
Tratamiento de Saltos
Flujos Mltiples Tratamiento de Saltos Prefetch destino del salto Buffer de bucles Prediccin de saltos Salto retardado Nunca se salta Siempre se salta Segn Codops Switch saltar/no saltar
Tratamiento de Saltos
Asegurar flujo estable de instrucciones en las etapas iniciales del cauce Esto es afectado por instruccin de salto condicional No se puede predecir si va a ocurrir en tanto no se ejecute la instruccin
Se plantean aproximaciones para tratar su tratamiento:
Flujos Mltiples Prefetch destino del salto Buffer de bucles Prediccin de saltos Salto retardado
Flujos Mltiples & Prefecth Destino
Tratamiento de Saltos
Flujos Mltiples
Utiliza dos pipelines o cauces Se hace Prefetch del salto a otro pipeline Puede generar retardos por competencia de acceso a registros Pueden entrar otros saltos en el prefetch
Prefetch destino del salto
Se hace prefetch del destino del salto y de la instruccin siguiente al salto Si se produce el salto ya se tiene la direccin de destino
Tratamiento de SaltosBuffer de Bucles
Buffer de bucles
Utiliza una memoria pequea y rpida con las n instrucciones mas recientes Gestionada por la etapa de Fetch Si hay salto, se busca destino en el buffer Optimo para saltos o loops
Direccin de salto
8
Buffer de Bucles (256 bytes)
Instruccin a decodificar en caso de acierto
Bits de direccin mas significativos comparados para determinar si hay acierto
Tratamiento de SaltosPrediccin de Saltos
Nunca se salta: se asume que no ocurre salto y se hace fetch a siguiente instruccin Siempre se salta: siempre se hace fetch de la instruccin destino
Segn cdigo de operacin: algunas operaciones terminan mas frecuentemente en salto que otras (75%) Switch saltar no saltar: basado en histrico de saltos, bueno para loops
Prediccin de saltos Diagrama de FlujosLeer la siguiente instruccin de salto condicional Leer la siguiente instruccin de salto condicional
Tratamiento de Saltos
Predecir que habr salto
Predecir que no habr salto
SI Hay salto? NO Leer la siguiente instruccin de salto condicional
NO Hay salto? SI Leer la siguiente instruccin de salto condicional
Predecir que habr salto
Predecir que no habr salto
SI Hay salto?
NO
NO Hay salto? SI