You are on page 1of 37

Organizacin del Procesador

Jos 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 CPU


Funciones

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 CPU


Flag de Estados Desplazador Complementador

Interno del CPU

. . .

Registros

Aritmtica & Lgica

Unidad de Control de Programa (UC)

Bus de Control

Registros
Registros

Visibles por el usuario


Uso general

Registros de Control y Estado


Contador de Programa (PC) Registro de Instruccin Registro de Direccin de Memoria (MAR)

Datos
Direcciones 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

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

Estados del Programa


Registro FLAGS Puntero Instrucciones

Estados del Programa


PC
PSW

Estados del Programa


Puntero Instrucciones

Indicadores

MC68000

8086

80386 - Pentium

Ciclo de Instruccin
Ciclo 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 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:

El registro de PC se incrementa y se capta la siguiente instruccin (posicin de memoria 301)

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:

El registro de PC se incrementa y se capta la siguiente instruccin (posicin de memoria 302)

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

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 Indirecto
Captar 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

3 5

4 7 6

Ciclo Indirecto
Captar 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

Ciclo Indirecto
Ejecucin

Puede tener varias formas, dependiendo de la instruccin ejecutada

Puede ser:

Leer/escribir en Memoria Entrada/Salida Transferencia entre registros Operaciones de ALU

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 Nueva Direccin

Esperar

Instruccin

Instruccin

Resultado

Captar

Instruccin

Instruccin

Resultado

Ejecutar

Captar

Ejecutar

Descartar

Visin Simplificada

Visin Ampliada

Segmentacin de Instrucciones
Pipelining
Seis Etapas:

FI DI

(FI) Captar Instruccin

(DI) Decodificar Instruccin


(CO) Calcular Operandos (FO) Captar Operandos (EI) Ejecutar Instruccin (WO) Escribir Operando
Vaciar Cauce Actualizar PC

CO
SI

Salto Incondicional?

NO

FO EI WO

Traslape de Etapas

SI

Salto o Interrupcin?

NO

Segmentacin de Instrucciones
Pipelining Diagrama de Tiempos

Efecto de Saltos Diagrama de Tiempos

Segmentacin de Instrucciones

Segmentacin de Instrucciones
Diagrama de Tiempos Alternativos

Segmentacin de Instrucciones
Factores 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 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

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

Prediccin de saltos Diagrama de Flujos


Leer 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

You might also like