Bibliografía: William Stallings Computer Organization and

advertisement
Bibliografía: William Stallings
Computer Organization and Architecture
6th Edition
Tema 5 Estructura y función de la CPU
Contenidos:
• Resumen y repaso de la organización del
procesador
• Análisis de los registros que constituyen la
memoria interna del procesador.
• Descripción del ciclo de instrucción
• Descripción de la técnica de segmentación
Estructura de la CPU
• CPU debe:
—Captar instrucciones de la memoria
—Interpretar instrucciones ( decodificar)
—Captar datos ( leer de memoria o de un mòdulo E/S)
—Procesar datos
—Escribir datos ( en la memoria o en modulo de E/S)
• Para esto la CPU necesita:
—Recordar la direccion de la ultima instruccion, para
captar la siguiente
—Almacenar instrucciones y datos temporalmente
mientras una instruccion se ejecuta
—El procesador necesita una pequeña memoria
interna.
La CPU y el Bus del sistema
Estructra Interna de la CPU
Organización de los registros
• La CPU debe tener algún espacio de trabajo
(almacenamiento temporario)
• Llamados registros
• Su número y función varía entre diseños de
procesadores.
• Esto es una de las mayores decisiones de diseño
• En el nivel más alto de la jerarquía de memorias
• Pueden ser de dos tipos:
— Registros visibles para el usuario: permiten al programador
de ensamblador minimizar las referencias a memoria principal
por medio de su uso.
— Registros de control y de estado: son utilizados por la
unidad de control para el control del funcionamiento de la CPU y
por programas privilegiados del sistema operativo para controlar
la ejecucion.
Registros visibles para el usuario (I)
• Puede ser referenciado por medio del lenguaje
de máquina que ejecuta la CPU.
• Categorías:
—Propósito general
—Datos
—Direcciones
—Códigos de condición
Registros de Propósito General: (I.I)
• Pueden ser utilizados por el programador para
diversas funciones.
• Puede contener el operando para cualquier
código de operación( ortogonal a la operación)
• Existen restricciones: específicos para
operaciones de coma flotante y operaciones de
pila
• En algunos casos pueden usarse para funciones
de direccionamiento
• En otros hay una separación total o parcial entre
registros de datos y regitros de direcciones.
Registros visibles para el usuario. (I)
• Registros de datos (I.2)
—Para contener datos
—No pueden emplearse en el calculo de una dirección
de operando.
• Registros de dirección (I.3)
—Punteros de segmento: En una maquina con
direccionamiento segmentado, contiene la dirección
de base del segmento.
—Registros de índice: Se usan para direccionamiento
indexado, y pueden ser autoindexados.
—Puntero de pila : Si existe direccionamiento a pila
visible al usuario, la pila en memoria y y este registro
apunta a la cabecera.
Registros de uso general:
• Cuestiones de diseño a estudiar:
• 1) Usar registros de uso completamente general
—Incrementa la flexibilidad y las opciones del
programador
—Incrementa el tamaño de instrucción y la
complejidad.
• 2) o Usar registros especializados
—Instrucciones más cortas y rápidas
—Limita la flexibilidad del programador
—La tendencia va en este sentido.
Registros de uso general: Cuestiones de
diseño a estudiar:
• 3) Cuántos registros de uso general se deben
incluir?
• Esto afecta el diseño del repertorio de
instrucciones
• Número ópimo entre 8 - 32
• Menos registros = más referencias a memoria
• Más registros no reducen notablemente las
referencias a memoria
• Una aproximación distinta en algunos sistemas
RISC: uso de cientos de registros.
Registros de uso general: Cuestiones de diseño
a estudiar:
• 4) Cuán largos?
• Registros de direcciones: tan grandes como
para albergar la dirección más grande
• Registros de datos: deben ser capaces de
contener valores de la mayoría de tipos de
datos.
• Algunas máquinas permiten que dos registros
contiguos sean usados como uno sólo para
contener valores de doble longitud.
—C programación
—double int a;
—long int a;
Registros visibles para el usuario: Registros de
códigos de condición (I.4)
• Son al menos parcialmente visibles para los
usuarios (“indicadores “ o “Flags”).
• Conjuntos de bits individuales fijados por el
hardware de la CPU:
—ejemplo: resultado de la última operación fue cero
• Pueden leerse por referencia implícita, mediante
programas
—ejemplo: Jump if zero
• No pueden ser alterados por el programador
• Los bits de código de condición se reúnen en
uno o más registros.
• Normalmente forman parte de un registro de
control
Registros de control y de estado
• La mayoría de ellos en la mayor parte de las maquinas
no son visibles para el usuario.
• Maquinas diferentes tendrán diferentes organizaciones
de registro y terminología.
• Son esenciales 4 registros para la ejecución de una
instrucción:
• Contador de Programa (Program Counter, PC)
• Registro de instrucción (Instruction Register, IR)
• Registro de dirección de memoria (Memory Address
Register, MAR)
• Registro intermedio de memoria (Memory Buffer
Register, MBR)
• Revisión: Cómo funcionan todos ellos ?
Registros de control y de estado
• La CPU los emplea para controlar su
funcionamiento
• Son esenciales cuatro registros para la
ejecución de una instrucción:
• PC: Contiene la dirección de la instrucción a
captar
• IR: contiene la instrucción captada más
recientemente
• MAR: contiene la dirección de una posición
de memoria
• MBR: contiene la palabra de datos a escribir
en memoria, o la palabra leída más
recientemente.
Registros de control y de estado
• La CPU actualiza el contador de programa después
de cada captación de instrucción.
• Siempre apunta a la siguiente instrucción a ejecutar.
• Una inst. de bifurcación también modificará el
contenido de PC. La inst. captada se carga en IR,
donde son analizados el código de operación y los
campos de operando.
• Se intercambian datos con la memoria por medio de
MR y de MBR.
• En un sistema con organización de bus, MAR se
conecta directamente al bus de direcciones y MBR
directamente al bus de datos.
• Los registros visibles por el usuario intercambian
repetidamente datos con MBR. Estos 4 se usan para
la transferencia de datos entre CPU y la memoria.
Registros de control y de estado
• Dentro del procesador, los datos se ofrecen a
la ALU.
• Esta puede acceder al MBR y a los registros
visibles por el usuario.
• La ALU puede tener registros intermedios
adicionales
Palabra de estado del programa
• Todos los diseños de CPU incluyen registros con
información de estado.
• Es un conjunto de bits (PSW: Program Status Word)
• Contiene códigos de condición.
• Signo: Contiene el bit de signo del resultado de la
última operación aritmética
• Cero: Puesto a uno cuando el resultado es 0.
• Acarreo: Puesto a uno si si una operación da lugar a un
acarreo.
• Igual: Puesto a uno si el resultado de una comparación
lógica es la igualdad.
• Desbordamiento
• Interrupciones habilitadas/inhabilitadas
• Supervisor: Indica si la CPU funciona en modo
supervisor o usuario.
Modo Supervisor
• Modo núcleo
• Permite la ejecución de instrucciones
privilegiadas
• Usado por el sistema operativo
• No está disponible para usuarios de programas
Otros registros
• Puede haber registros señalando a:
—Un bloque de memoria que contenga información
adicional (e.j. Bloques de control de procesos)
—Registro de vector de interrupción.
—Registros para el control de operaciones de E/S.
• El diseño de CPU y el diseño del sistema
operativo están estrechamente ligados-> la
organización de los registros se adapta al S.O.
• Decisión clave de diseño es la distribución de la
información de control entre registros y
memoria. Habitual compromiso entre coste y
velocidad.
Ejemplos de organización de registros
Ejemplos de organización de registros
• Motorola: Quiso un repertorio de instrucciones muy
regular.
• Sin registros de uso especial.
• Su interés por la eficiencia del código los condujo a
dividir los registros en dos componentes funcionales
• Intel: Cada uno de los registros tiene un uso
especial.
• Algunos se emplean para uso general.
• Tiene 4 registros de datos de 16 bits.
• No hay una filosofía universalmente aceptada sobre
la mejor forma de organizar los registros de la CPU.
Ciclo de instrucción
Ciclo de instrucción
• Un ciclo incluye los siguientes sub_ciclos:
• Captación: Llevar la siguiente instrucción de la
memoria a la CPU.
• Ejecución: Interpretar el código de operación y
llevar a cabo la operación indicada
• Interrupción: Si las interrupciones están
habilitadas y ha ocurrido una interrupción salvar
el estado del proceso actual y atender la
interrupción.
Ciclo de instrucción indirecto
El ciclo indirecto
• La ej. de una instrucción-->puede involucrar a
uno o más operandos en memoria.
• Cada operando requiere un acceso a memoria.
• Si se usa direccionamiento indirecto serán
necesarios accesos a memorias adicionales
• La captación de direcciones indirectas puede
considerarse como un sub-ciclo de instrucción
más
• Alterna la captación con la ejecución de
instrucciones
Diagrama de estados del ciclo de
instrucción
Flujo de datos
• Son esenciales 4 registros para la ejecución de
una instrucción:
• Contador de Programa (Program Counter, PC):
—Contiene la dirección de la instrucción a captar
• Registro de instrucción (Instruction Register, IR)
—Contiene la instrucción captada mas recientemente
• Registro de dirección de memoria (Memory
Address Register, MAR)
—Contiene la dirección de una posición de memoria
• Registro intermedio de memoria (Memory Buffer
Register, MBR)
—Contiene la palabra de datos a escribir en memoria o
la palabra leída mas recientemente.
Flujo de datos (Instrucción de captación )
• Depende del diseño de la CPU. En general:
• Captación:
—Se lee una instrucción de la memoria.
—El PC contiene la dirección de la instrucción siguiente
—Esta dirección se lleva a MAR
—Se coloca en el bus de dirección
—La unidad de control requiere una lectura de
memoria
—Resultado se pone en el bus de datos, se copia en
MBR y se lleva a IR
—Mientras tanto el PC se incrementa en 1
Flujo de datos (Diagrama de Captación)
Flujo de datos (Concluida la Captación)
• La UC examina los contenidos de IR
• Determina si contiene un campo de operando que
use direccionamiento indirecto
• Si es así se lleva a cabo un ciclo indirecto
—Los N bits más a la derecha de MBR se
transfieren a MAR
—La unidad de Control solicita una lectura de
memoria
—El resultado (dirección del operando deseado)
se mueve a MBR
Flujo de datos (Ciclo indirecto)
Flujo de datos (Ejecución)
• Puede tomar muchas formas
• Depende de cuál de las diversas instrucciones
maquina esté en IR
• Puede incluir
—Lectura o escritura de memoria o E/S
—Entrada o salida
—Transferencia de datos entre registros
—Invocación a la ALU
Flujo de datos (Ciclo Interrupción)
• Simple y Predecible
• Contenido actual de PC salvado para permitir
que la CPU reanude su actividad
• Contenido de PC se transfiere a MBR
• La posición de memoria especial (ej. Puntero
de pila) se carga en MAR desde UC
• MBR será escrito en memoria
• PC se carga con la dirección de la rutina de
interrupción
• Siguiente instrucción (primera del manejador de
interrupciones) puede ser captada
Flujo de datos (Ciclo de Interrupción)
Estrategia de segmentación de instrucciones
• Mayores prestaciones de CPU:
—- Aprovechando circuitos mas rápidos ( progresos de
la tecnología).
— Avances en la organización de la CPU
• Similar al uso de una cadena de montaje en una
fábrica.
• Proceso de segmentación de cauce: en un
extremo se aceptan nuevas entradas, antes de
que algunas entradas anteriores aparezcan
como salidas.
• Subdivisión de procesamiento en dos etapas:
—Captación de instrucción
—Ejecución de instrucción
Pipeline de instrucciones con dos etapas
Precaptación
• El tiempo de ejecución en que no se accede a
memoria principal->podría utilizarse para captar la
sgte. inst. en paralelo
• La ejecución no accede generalmente a memoria
principal
• Puede captar la siguiente instrucción durante la
ejecución de la instrucción corriente
• Se llaman instrucciones de precaptación o
solapamiento de la captación ( fetch overlap)
• Este proceso acelerara la ejecución de instrucciones.
Incremento de performance
• Si captación y ejecución fueran de = duración->
• Tiempo del ciclo de instrucción se reduciría a la
mitad.
• Velocidad duplicada de ejecución es poco probable:
—Captación es en general más corta que la ejecución
– Deberá esperar algún tiempo antes de vaciar su bufffer
—Cualquier bifurcación o salto significa que la instrucción
precaptada no sea la instrucción requerida.
—Captación debe esperar la dirección de la siguiente
instrucción desde la etapa de ejecución.
• Agregar mayores niveles para incrementar la
performance.
Segmentación de cauce (Pipelining)
• Considerar la siguiente descomposición del
procesamiento:
• Captación de instrucción (Fetch Instruction, FI)
• Decodificación de la instrucción (Decode
Instruction, DI)
• Calculo de operandos (Calculate Operands, CO)
(i.e. EAs): Calcular la EA de c/operando.
• Captación de operandos ( Fetch Operands, FO)
• Ejecución de instrucciones (Execute Instruction, EI)
• Escritura de resultados (Write Operand, WO)
• Sobreposicionamiento de estas operaciones
Diagrama de tiempos del pipeline
Cauce de instrucciones
• Factores que limitan las prestaciones:
• Si las seis etapas no son de igual duración->habrá
espera en ciertas etapas
• La instrucción de bifurcación condicional:
—Puede invalidar varias captaciones de instrucción
• Otro evento impredecible:
—Llegada de una interrupción
• Otra situación:
—La etapa CO (Calcular Operandos) puede depender
del contenido de un registro que podría verse alterado
por una instrucción previa que aun esta en el cauce
—Conflictos con registros y memoria
Cauce de instrucciones
• El diagrama supone que todas las etapas pueden
funcionar en paralelo.
• Se supone que no hay conflictos de memoria.
• Por ejemplo las etapas FI, FO y WO requieren acceso
a memoria.
• El diagrama implica que todos estos accesos pueden
tener lugar simultáneamente pero en la realidad no
sucede así.
• No obstante el valor deseado puede estar en la caché,
o las etapas FO o WO pueden ser nulas.
• Los conflictos de memoria en general, no reducirán la
velocidad del cauce.
Efecto de una bifurcación condicional
Efecto de una bifurcación condicional
•Se supone que la instrucción 3 es una bifurcación
condicional a la instrucción 15. Hasta que no se ejecuta
la instrucción no hay forma de saber que instrucción
vendrá a continuación.
•El cauce carga la siguiente instrucción secuencialmente
( la 4 ) y continua. Aquí se produce un salto.
•Éste no se determina hasta el final de la unidad de
tiempo 7. En ese momento el cauce debe limpiarse de
instrucciones que no son útiles. Durante la unidad de
tiempo 8, la instrucción 15 entra en el cauce. Ninguna
instrucción termina durante las unidades 9 a la 12
•Esta es la penalización en las prestaciones sufrida por
no haber podido prever el salto.
Cauce de instrucciones de una CPU con
seis etapas
Segmentación y performance
• Factores que frustran este patrón sencillo de diseño
de altas prestaciones
• 1) En c/ etapa del cauce: gasto extra debido a la
transferencia de datos de buffer a buffer, y a la
realización de varias funciones de preparación y
distribución. Esto puede prolongar sensiblemente el
tiempo de ejecución total de una instrucción
aislada.
• Importante cuando las instrucciones secuenciales
son lógicamente dependientes: a causa de un uso
abundante de bifurcaciones, o debido a
dependencias de acceso a memoria.
Segmentación y performance
• 2) La cdad de lógica de control necesaria para manejar
dependencias de memoria y de registros y para optimizar el
uso del cauce aumenta enormemente con el número de
etapas.
• Eso puede lleva a una situación donde la lógica para
controlar el paso entre etapas sea más compleja que las
etapas controladas.
• Conclusión: Es una poderosa técnica para
aumentar las prestaciones pero requiere un diseño
cuidadoso si se quieren obtener resultados óptimos
con una complejidad razonable.
Factores de aceleración en segmentación de
cauces: en funcion del nro de inst. Que se ejecutan sin saltos
(a) En función del nro. de
instrucciones que se ejecutan sin
saltos. En el limite (n-> ∞) la
velocidad se incrementa k veces.
(b) Se aproxima al nro. de instr.
que pueden introducirse en el cauce
sin saltos. Cuanto > es el nro. de
etapas del cauce, > es su potencial
para conseguir aceleración.
A tener en cuenta: Los beneficios
potenciales de etapas adicionales
en el cauce se contrarrestan por
los incrementos en coste, los
retardos entre etapas y la
necesidad de vaciar el cauce.
Procesamiento de interrupciones
• Es un servicio que se proporciona para apoyar al
sistema operativo.
• Permite que un programa de aplicación sea
suspendido
• -- Se atiendan una gran variedad de causas de
interrupción
• ---Reanudado más tarde
Procesamiento de Interrupciones en el
Pentium II
• Interrupciones: se generan por una señal de
hardware y pueden ocurrir en momentos aleatorios de la
ejecución.
— Enmascarables
— No enmascarables
• Excepciones: se genera desde el software y es
provocada por la ejecución de una instrucción.
— Detectadas por el procesador
— Programadas: Por instrucciones especificas que las generan
(INTO, INT 3, INT, y BOUND)
• Tabla de vectores de interrupción
— Cada tipo de instrucción tiene asignado un número
— Que sirve para indexar en la tabla
— 256 vectores de interrupción de 32 bits
— Cada uno es la direccion de la rutina de servicios de interrupcion
del nro correspondiente
• 5 clases de prioridades
Gestión de Interrupciones en el Pentium II
• Un transferencia a una rutina de interrupción: Usa la
pila del sistema para almacenar el estado del
procesador. Se produce una secuencia de eventos:
— Si hay un cambio del nivel de privilegio: contenidos actuales se
introducen en la pila
— El valor actual del registro EFLAGS (indica el estado del procesador)
se introduce en la pila
— Indicadores de Interrupciones (IF) y de trampa (TF) se ponen a 0.
— Los contenidos actuales del puntero de segmento de código (CS) y de
puntero de instrucción (IP o EIP) se introducen en la pila
— Código de error se introduce en la pila
— Los contenidos del vector de interrupción se captan y cargan en los
registros CS e IP o EIP.
— La ejecución continua por la rutina de servicio de interrupción.
— Se ejecuta una instrucción IRET: provoca que los valores almacenados
en la pila sean restblecidos.
— La ejecución se reanuda a partir del punto de interrupción.
Descargar