1 2 3

Anuncio
Organización del Procesador
José Acosta
Temas a Tratar






Estructura del CPU
Registros
Ciclo de Instrucción
Ciclo Indirecto
Segmentación de
instrucciones
Tratamiento de Saltos

Referencia:
Organización y
Arquitectura de
Computadores
William Stallings 7 ed.
Cap. 12
Estructura del CPU
Funciones



Captar Instrucción:
leer la instrucción de
la memoria
Interpretar
Instrucción:
decodificación para
determinar acción
necesaria
Captar datos: leer
memoria o de
dispositivos E/S


Procesar Datos:
ejecución de
operaciones
aritméticas o lógicas
Escribir Datos: los
resultado se escriben
en la memoria o
dispositivos E/S
CPU: Bus del Sistema
Registros
Unidad
Aritmético
Lógica
(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
Interno del CPU
Desplazador
Complementador
Aritmética &
Lógica
Bus de Control
..
.
Registros
Unidad de
Control de
Programa
(UC)
Registros
Registros
Visibles por el usuario
Registros de Control y Estado
Uso general
Contador de Programa (PC)
Datos
Registro de Instrucción
Direcciones
Puntero de segmentos
Registro de Dirección de Memoria (MAR)
Puntero de pila
Registro Intermedio de Memoria (MBR)
Registros índice
Códigos de condición (Flag de Estados/PSW)
Registros
Consideraciones de Diseño

Tamaño


Suficiente como para
poder contener la
dirección/dato mayor
Cantidad


Menor cantidad
requiere mayor
acceso a memoria
Mayor cantidad no
reduce accesos a
memoria (salvo RISC)


Generalmente entre 8
a 32
Uso

Generales o
Específicos? Influyen
en el diseño del
repertorio de
instrucciones y en la
flexibilidad de
programación
Registros
Flag de Estados/Indicadores/PSW
Indicador
Uso
Sign
Si está activo indica que el resultado de operación o de comparación son
negativos.
Zero
Está activo si el resultado de operación es cero o resultado de comparación
igual.
Carry
Indicador de arrastre del bit de mayor orden, (operaciones de suma y resta)
Equal
Si está activo indica que el resultado de comparación es la igualdad
Overflow
Señala desbordamiento aritmético
Interrupt
Este bit controla el estado del sistema de interrupciones enmascarables.
Cuando está activo (1) permite las interrupciones; el estado inactivo (0) las
deshabilita.
Supervisor
Indica si el procesador trabaja en modo supervisor o usuario
Registros
Ejemplos de Registros
Registros de Datos
D0
D1
D2
D3
D4
D5
D6
D7
Registros Generales
AX - Acumulador
BX - Base
CX - Contador
DX - Datos
Registros Generales
EAX
EBX
ECX
EDX
AX
BX
CX
DX
ESP
EBP
ESI
EDI
SP
BP
SI
DI
Punteros e Índices
Registros de Direcciones
A0
A1
A2
A3
A4
A5
A6
A7
SP – Punt. Pila
BP – Punt. Base
SI – Índice Fuente
DI – Índice Destino
Segmento
CS - Código
DS - Datos
SS - Pila
ES - Extra
Estados del Programa
Registro FLAGS
Puntero Instrucciones
Estados del Programa
Estados del Programa
PC
PSW
Puntero Instrucciones
Indicadores
MC68000
8086
80386 - Pentium
Ciclo de Instrucción
Ciclo de Captación
Inicio







Busca siguiente
Instrucción
Decodifica
Instrucción
Ciclo de Ejecución
Ejecuta
Instrucción
Parada
Buscar siguiente instrucción de la memoria y transferirla al registro de
instrucciones
Modificar el contador de programa para que apunte a la siguiente instrucción
Determinar el tipo de instrucción
Determinar la posición de memoria de la palabra contenida en la instrucción (si
corresponde)
Buscar la palabra desde la memoria (si corresponde) y colocarla en un registro de
la CPU
Ejecutar la instrucción
Volver al primer paso para comenzar la siguiente instrucción
Ciclo de Instrucción
Ejemplo

Sumar el contenido de
la palabra de memoria
940 con el contenido de
la palabra de memoria
941 y almacenarlo en
esta ultima posición
Ciclo de Instrucción
Ejemplo

Fetch instrucción 1:


El PC señala la posición
de memoria 300
La instrucción de esta
posición se carga al IR
(esto implica el uso de
MAR y MBR)
Ciclo de Instrucción
Ejemplo

Ejecución instrucción 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 dirección
(es decir “940”).
Ciclo de Instrucción
Ejemplo

Fetch instrucción 2:

El registro de PC se
incrementa y se capta la
siguiente instrucción
(posición de memoria
301)
Ciclo de Instrucción
Ejemplo

Ejecución instrucción 2:


Los primeros 4 bits (“5”)
indican que la
instrucción es de suma
entre el acumulador y
una memoria
Los siguientes 12 bits
indican la dirección de
memoria (“941”). El
contenido de AC y el de
la posición 941 se suman
y el resultado se
almacena en AC
Ciclo de Instrucción
Ejemplo

Fetch instrucción 3:

El registro de PC se
incrementa y se capta la
siguiente instrucción
(posición de memoria
302)
Ciclo de Instrucción
Ejemplo

Ejecución instrucción 3:


Los primeros 4 bits
indican (“2”) que el
acumulador se debe
almacenar en una
memoria
Los siguientes 12 bits
indican la dirección de la
memoria (“941”). El
contenido de AC se
almacena en la posición
941
Ciclo Indirecto



Las instrucciones
pueden requerir accesos
a memoria para
búsqueda de datos
El direccionamiento
indirecto requiere mayor
acceso a memoria
Dependiendo de ciertas
condiciones se pueden
saltar a ejecución de sub
rutinas o interrupciones
del programa
FETCH
INTERRUPCION
INDIRECTO
EJECUCION
Ciclo Indirecto
Diagrama de Flujo
Indirección
Captar
instrucción
Indirección
Captar
operando
Almacenar
operando
Operandos
Múltiples
Calcular
dirección de
instrucción
Decodificar
operación de
instrucción
Calcular
dirección de
operando
Instrucción terminada
captar siguiente instrucción
Operación
de Datos
Buscar mas datos
de cadena o vector
Resultados
Múltiples
Calcular
dirección de
operando
No
Interrupción
Comprobar
interrupción
Interrupción
Ciclo Indirecto
Captar Instrucción

Depende del diseño de la
CPU y comprende:






PC contiene dirección de
prox. instrucción 1
Dirección movida a MAR 2
Dirección 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 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 (dirección del
operando) transferida a
MBR 3
2
1
3
Ciclo Indirecto
Ejecución

Puede tener varias
formas,
dependiendo de la
instrucción
ejecutada

Puede ser:




Leer/escribir en
Memoria
Entrada/Salida
Transferencia entre
registros
Operaciones de ALU
Ciclo Indirecto
Interrupción







Simple y predecible
Se guarda valor actual de
PC para permitir reasumirlo
después de la interrupción
Valor de PC copiado a MBR 1
Se carga ubicación especial
en la memoria (e.g. stack
pointer) en MAR 2
MBR se escribe en memoria 3
Se carga PC con dirección
de rutina de interrupción 4
Siguiente instrucción
(primera de la rutina de
interrupciones) puede ser
captada 5
5
4
1
2
3
Segmentación de Instrucciones


Cambios en la
organización del
procesador incide en
la mejora de sus
prestaciones
Uno de ellos es la
segmentación de
instrucciones o
Pipelining
(entubamiento)


Se semeja una línea
de producción
compuesta por etapas
independientes entre
si y que pueden
ejecutarse en
simultaneo
Se aceptan nuevas
instrucciones antes
que terminen de
ejecutarse las
anteriores
Segmentación de Instrucciones
Prefetch



Dos etapas
independientes
La primera capta
instrucción 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
reducción del tiempo de
instrucción a la mitad
Pero ocurren retrasos
por mayores tiempo de
proceso al ejecutar y/o
por acceso a subrutinas
o interrupciones
Se añaden mas etapas
para mejorar la
performance
Segmentación de Instrucciones
Prefetch
Esperar
Esperar
Nueva Dirección
Instrucción
Instrucción
Captar
Resultado
Ejecutar
Instrucción
Instrucción
Captar
Descartar
Visión Simplificada
Visión Ampliada
Resultado
Ejecutar
Segmentación de Instrucciones
Pipelining

Seis Etapas:


DI
(FI) Captar Instrucción
CO
(DI) Decodificar
Instrucción

(CO) Calcular Operandos

(FO) Captar Operandos

(EI) Ejecutar Instrucción


FI
SI
NO
FO
Actualizar
PC
(WO) Escribir Operando
Traslape de Etapas
Salto
Incondicional?
Vaciar
Cauce
EI
WO
SI
Salto o
Interrupción?
NO
Segmentación de Instrucciones
Pipelining – Diagrama de Tiempos
Segmentación de Instrucciones
Efecto de Saltos – Diagrama de Tiempos
Segmentación de Instrucciones
Diagrama de Tiempos Alternativos
Segmentación de Instrucciones
Factores de Aceleración
Factor de Aceleración
Factor de Aceleración
K = 12 etapas
n = 30 instrucciones
K = 9 etapas
n = 20 instrucciones
K = 6 etapas
Numero de Instrucciones
n = 10 instrucciones
Numero de Etapas
Tratamiento de Saltos
Tratamiento de Saltos
Flujos Múltiples
Prefetch destino del salto
Buffer de bucles
Predicción de saltos
Salto retardado
Nunca se salta
Siempre se salta
Según Codops
Switch saltar/no saltar
Tratamiento de Saltos



Asegurar flujo estable
de instrucciones en las
etapas iniciales del
cauce
Esto es afectado por
instrucción de salto
condicional
No se puede predecir
si va a ocurrir en tanto
no se ejecute la
instrucción

Se plantean
aproximaciones para
tratar su tratamiento:





Flujos Múltiples
Prefetch destino del
salto
Buffer de bucles
Predicción de saltos
Salto retardado
Tratamiento de Saltos
Flujos Múltiples & Prefecth Destino

Flujos Múltiples




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 instrucción
siguiente al salto
Si se produce el salto
ya se tiene la
dirección de destino
Tratamiento de Saltos
Buffer de Bucles

Buffer de bucles




Utiliza una memoria
pequeña y rápida 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
Dirección de salto
8
Buffer de
Bucles
(256 bytes)
Instrucción a decodificar
en caso de acierto
Bits de dirección mas significativos
comparados para determinar si hay acierto
Tratamiento de Saltos
Predicción de Saltos


Nunca se salta: se
asume que no ocurre
salto y se hace fetch
a siguiente
instrucción
Siempre se salta:
siempre se hace
fetch de la
instrucción destino


Según código de
operación: algunas
operaciones
terminan mas
frecuentemente en
salto que otras
(75%)
Switch saltar no
saltar: basado en
histórico de saltos,
bueno para loops
Tratamiento de Saltos
Predicción de saltos – Diagrama de Flujos
Leer la siguiente
instrucción de
salto condicional
Leer la siguiente
instrucción de
salto condicional
Predecir que
no habrá salto
Predecir que
habrá salto
NO
SI
Hay salto?
Hay salto?
SI
NO
Leer la siguiente
instrucción de
salto condicional
Leer la siguiente
instrucción de
salto condicional
Predecir que
habrá salto
Predecir que
no habrá salto
SI
NO
Hay salto?
NO
Hay salto?
SI
Descargar