Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructura y Función de la
CPU
INF 150
INFORMATICA 2
Tareas de la CPU
Captar Instrucción: Leer instrucción de la memoria
Interpretar la instrucción: Decodificar la
instrucción y determinar acciones a realizar
Captar datos: leer datos de memoria y/o E/S
Procesar datos: realizar operación aritmética y/o
lógica
Escribir datos: llevar datos a memoria o E/S
Para realizar estas operaciones, la CPU
requiere memoria interna
Estructura Interna CPU
Organización de los registros
La memoria para almacenamiento interno
posee REGISTROS (nivel más alto en
jerarquía de memoria)
Registros Visibles para el usuario: El
usuario puede usarlos para minimizar
accesos a memoria
Registros de control y de estado: Son
usados por la unidad de control y por
programas privilegiados para controlar la
ejecución de un programa
Registros de uso general
Como su nombre lo dice, pueden ser
utilizados para almacenar cualquier
información
Puede haber excepciones: Ej. Registros
para almacenar punto flotante, punteros de
pila, etc.
Algunas veces pueden almacenar
direcciones, en otros, existen registros para
datos y otros para direcciones
Ejemplo de registro de direcciones
Punteros de segmento: Usado en
memorias segmentadas, almacenan la
dirección base del segmento
Registros índices: Usado en
direccionamiento indexado, pueden ser
autoindexado
Puntero de pila: Mantiene la dirección de
la cabeza de la pila.
Códigos de Condición
También llamados Flags
Son bits fijados por la CPU como resultado
de una operación
Los códigos de condición se reúnen en uno o
más registros, generalmente forman parte de
un registro de control
Generalmente los bits pueden ser leidos por
referencia implícita, pero no pueden ser
modificados
Registros de Control y de Estado
Son esenciales cuatro registros para la
ejecución de una instrucción
Contador del Programa (PC): dirección de la
próxima instrucción a ejecutar
Registro de Instrucción: Instrucción captada mas
reciente
Registro de Dirección de Memoria: Dirección de
una posición de memoria.
Registro intermedio de memoria: Contiene la
palabra leída o a escribir en memoria
Palabra de Estado del Programa
(PSW)
Contiene información de estado
Signo: Signo del último resultado aritmético
Cero: Indica si el último resultado fue cero
Acarreo: Usado en operaciones multipalabra
Igual: Resultado de una operación lógica es igual
Desbordamiento: Overflow aritmético
Interrupciones Habilitadas/ deshabilitadas
Supervisor: Estado de la CPU en modo
supervisor o usuario
Otros Registros Estado y Control
Punteros a bloques de memoria con
información de estado adicional (PCB)
Maquinas con interrupciones vectorizadas,
registro de vector de interrupción
Punteros de pila
Punteros a tablas de páginas
Registros para control de E/S
Ejemplos de Organizaciones de
Microprocesadores
Ciclo de instrucción con
direccionamiento indirecto
Requiere mayores accesos a memoria
para extraer el operando (ciclo de fetch)
Puede ser resuelto como un subciclo
adicional dentro del ciclo de instrucción
Ciclo de Instrucción con
direccionamiento indirecto
Diagrama de estados del ciclo de
instrucción
Flujo de Datos
Dependen del diseño de la CPU
En general, considerando registros:
Registro de dirección de memoria MAR.
Registro intermedio de memoria MBR.
Contador de Programa PC
Registro de Instrucción IR.
Fetch de la Instrucción
PC contiene la dirección de la próxima
instrucción
Dirección es transferida al MAR
Dirección es llevada al bus de dirección
Unidad de control requiere lectura desde la
memoria
Resultado transferido al bus de datos, copiado
en el MBR, luego llevado al IR.
PC se incrementa en uno
Fetch de la Dirección
IR es examinada.
Si la dirección es indirecta, se ejecuta un
ciclo indirecto
Bits de la derecha de MBR es transferida
al MAR
Unidad de control requiere lectura de
memoria
El resultado es traslado al MBR
Fetch de la Dirección
Fetch de la Dirección
(ciclo indirecto)
Flujo de datos
(Ejecución)
Puede tomar múltiples formas
Depende de la instrucción que se
ejecutará
Puede incluir
Lectura/ escritura de memoria
Entrada/ Salida
Transferencia entre registros
Operaciones aritméticas y/o lógicas
Flujo de datos
(Interrupción)
Simple
El valor del PC es guardado para retornar luego de
la interrupción
Contenido del PC copiado en el MBR
Dirección especial de memoria copiada en el MAR
MBR se lleva a memoria
PC se carga con la dirección del manejador de
interrupciones
Nueva instrucción es extraída
Flujo de datos
(Interrupción)
PreFetch
Ciclo de Fetch accede a la memoria principal
Ciclo de ejecución no siempre accede a la
memoria principal.
Debido a lo anterior, se puede realizar el fetch
de la siguiente instrucción mientras se ejecuta la
anterior.
Se denomina pre-fetch o fetch overlap
(precaptación de la instrucción o solapamiento
de la captación)
Performance de PreFetch
Se puede suponer que se ejecuta la ejecución
de las instrucciones a la mitad, pero esto no es
válido:
El ciclo de fetch es mas corto que el de
ejecución
Las instrucciones de salto impiden saber la
próxima instrucción a ejecutar, por lo tanto no
se puede realizar prefetch con una instrucción
de salto.
Pipelining
Realizar solapamiento de las instrucciones,
aumentando las etapas de las ejecución.
Fetch instrucción
Decodificar la instrucción
Calcular operándoos
Captar operándoos
Ejecutar instrucción
Escribir operando
Pipelining
Pipelining
Manejo de los Saltos
Múltiples flujos
Prefetch destino del salto
Buffers de ciclos
Predicción de los saltos
Retardar los saltos
Múltiples Flujos
Posee dos Pipelines
Realiza un Prefetch de cada salto en un
pipeline separado
Utiliza el pipeline apropiado
Manejo de contención del bus y de
registro (retardos)
Prefetch destino del salto
Cuando se identifica una instrucción de
salto condicional, se precapta la
instrucción destino del salto,además de la
siguiente a l a bifuración
Si se produce el salto, el destino ya habrá
sido precaptado.
Buffers de Bucles
Es una memoria pequeña de gran
velocidad, gestionada por la etapa de
captación de instrucción del cauce.
Contiene secuencialmente las últimas n
instrucciones captadas
Antes de realizar una salto, se comprueba
si se encuentran las instrucciones en el
buffers
Buffers de Bucles
Ventajas:
Con precaptación, se anticipa, almacenando
las instrucciones que vendrán posteriormente,
evitando tiempo de acceso a memoria
Si ocurre un salto a pocas posiciones de la
actual, el destino ya está en buffers, útil para
instrucciones condicionales (if -else)
Se acomoda a manejo de ciclos, de ahí su
nombre.
Buffers de Bucles
Diferencia con cache:
Sólo almacena instrucciones consecutivas.
Más pequeño
Predicción de Saltos
Se pueden utilizar distintas técnicas para
predecir un salto:
Nunca se saltará
Siempre se saltará
Predecir según código de operación
Conmutador saltar/no saltar
Tabla de historia de saltos
Diagrama de Estado de
Predicción del Salto
Saltos Retardados
Se puede mejorar las prestaciones
reordenando automáticamente las
instrucciones de un programa, de forma
que las instrucciones de salto tengan lugar
después de lo realmente deseado.
Pipeline en Intel 80486
Cinco Etapas
Fetch
Etapa de decodificación 1
Etapa de decodificación 2
Ejecución
Escritura
Fetch
Se captan desde cache o memoria, y se
colocan en uno de los dos buffers de 16
bytes.
Objetivo: llenar los buffers de prebúsqueda
con nuevos datos, en cuanto los antiguos
sean tratados por el decodificador
Cantidad instrucciones variables en buffers
(Largo instrucciones 1 a 11 bytes).
Decodificación 1
Se decodifica el Código de operación y
modo de direccionamiento.
La información necesaria de longitud de
instrucción se encuentra, a lo más, en los
tres primeros bytes de la instrucción, por lo
tanto se leen tres bytes.
Si la instrucción ocupa más de tres bytes, se
indica a etapa D2 que capture el resto de
los bytes
Decodificación 2
Capta el resto de los bytes de la
instrucción, en el caso de poseer más de
tres bytes
Envía señales de control a la ALU.
Realiza cálculo de direccionamientos
complejos.
Ejecución
Operaciones de la ALU, acceso a cache,
actualización de registros.
Escritura
Actualiza los registros y flag modificados
durante la etapa anterior
Si la instrucción actualiza la memoria, el
resultado es enviado tanto a la cache y a
los buffers de escritura de la interfaz del
bus.
Pipeline en 80486
Registros en 80486
Registro EFLAG
Registros EFLAG
Trap Flag: Provoca una interrupción
después de cada instrucción (trace)
Interrupt enable: Procesador acepta
interrupciones externas
Direction Flag: Indica si las instrucciones
de cadena modifican DI y SI
I/O privilege level: Procesador genera una
excepción al haber accesos no
autorizados a E/S
Registros EFLAG
Resume Flag: Permite que al reanudar de una
Trap Flag no se produzca una interrupción
Alignment check: Indica si una palabra (o doble)
puede ser referenciada en una dirección que no
sea múltiplo de 2 (o cuatro)
Identification Flag: Si se puede modificar el
registro, indica que posee instrucción CPUID,
para poder obtener información de que
procesador es.
Registros de Control
Registros de Control
Protección Enable: Habilita/desabilita modo
protegido
Monitor coprocesador: Preprocedaor presente,
anterior a Pentium II
Emulation: Procesador sin unidad de Punto
Flotante
Task Switched: Procesador tiene tareas
conmutadas
Extención Type: Instrucciones que soporta
cooprocesador matemático
Registros de Control
Numeric Error: Habilita mecanismo para
informar error en operación de p. flotante
Write Protect: Se puede escribir en páginas de
sólo lectura
Alignenment mask: Habilita comprobación de
alineación
Not write through: Habilita cache de datos
Cache disable: Habilita uso de cache interna
Paging: Habilita la paginación
Registros MMX
Trabaja con tipos de datos de 64 bits.
Usa tres bits para indicar el registro (8
registros)
No son registros específicos, utiliza los
registros de punto flotante, pero accede
directamente éstos (no en forma de pila)
Registros MMX
Manejo de Interrupciones
Interrupciones: Provocadas por el HW.
Enmascarables
No enmascarables