Unidad 3 - 2 Organizacion Del Procesador
Unidad 3 - 2 Organizacion Del Procesador
Unidad 3 - 2 Organizacion Del Procesador
Jos Acosta
Temas a Tratar
Estructura del CPU Registros Ciclo de Instruccin Ciclo Indirecto Segmentacin de instrucciones Tratamiento de Saltos
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
Registros
Bus de Control
. . .
Registros
Bus de Control
Registros
Registros
Datos
Direcciones Puntero de segmentos Puntero de pila Registros ndice
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
Uso
Si 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
Zero
Carry Equal Overflow Interrupt Supervisor
Ejemplos de Registros
Registros de Datos
D0 D1 D2 D3 D4 D5 D6 D7
Registros
EAX EBX ECX EDX
Registros Generales
AX - Acumulador BX - Base CX - Contador DX - Datos
Registros Generales
AX BX CX DX
Punteros e ndices
SP Punt. Pila BP Punt. Base SI ndice Fuente DI ndice Destino ESP EBP ESI EDI SP BP SI DI
Registros de Direcciones
A0 A1 A2 A3 A4 A5 A6 A7
Segmento
CS - Cdigo DS - Datos SS - Pila ES - Extra
Indicadores
MC68000
8086
80386 - Pentium
Ciclo de Instruccin
Ciclo de Captacin Ciclo de Ejecucin
Inicio
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 Instruccin
Ejemplo
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 Instruccin
Ejemplo
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 Instruccin
Ejemplo
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 Instruccin
Ejemplo
Fetch instruccin 2:
Ciclo de Instruccin
Ejemplo
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 Instruccin
Ejemplo
Fetch instruccin 3:
Ciclo de Instruccin
Ejemplo
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 Indirecto
Diagrama de Flujo
Indireccin
Indireccin
Captar instruccin
Captar operando
Almacenar operando
Operandos Mltiples
Resultados Mltiples
Operacin de Datos
Comprobar interrupcin
Interrupcin
No Interrupcin
Ciclo Indirecto
Captar Instruccin
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
3 5
4 7 6
Ciclo Indirecto
Captar Datos
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
Ciclo Indirecto
Ejecucin
Puede ser:
Ciclo Indirecto
Interrupcin
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
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 Instrucciones
Prefetch
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 Instrucciones
Prefetch
Esperar
Instruccin
Instruccin
Resultado
Captar
Instruccin
Instruccin
Resultado
Ejecutar
Captar
Ejecutar
Descartar
Visin Simplificada
Visin Ampliada
Segmentacin de Instrucciones
Pipelining
Seis Etapas:
FI DI
CO
SI
Salto Incondicional?
NO
FO EI WO
Traslape de Etapas
SI
Salto o Interrupcin?
NO
Segmentacin de Instrucciones
Pipelining Diagrama de Tiempos
Segmentacin de Instrucciones
Segmentacin de Instrucciones
Diagrama de Tiempos Alternativos
Segmentacin de Instrucciones
Factores de Aceleracin
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
Flujos Mltiples Prefetch destino del salto Buffer de bucles Prediccin de saltos Salto retardado
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
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 Saltos
Buffer 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
Tratamiento de Saltos
Prediccin 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
Tratamiento de Saltos
SI Hay salto?
NO
NO Hay salto? SI