La CPU: Organización, Registros y Flujo de Datos
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
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 unidad de control y por programas
privilegiados para controlar la ejecución de un programa
Registro de uso gral
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
Ej. De registr de direcc
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 leído por referencia implícita, pero no pueden ser modificados
Registrosdecontrol yestado
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
PSW(palabra de estado del programa)
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 instrucc
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 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
Prefetch
Ciclo de Fetch accesa la memoria principal
Ciclo de ejecución no siempre accesa 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)
Manejo de 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 la bifuración
Si se produce el salto, el destino ya habrá sido precaptado
Buffers de ciclos
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 un salto, se comprueba si se encuentran las instrucciones en el buffers
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.
Diferencia con cache:
Sólo almacena instrucciones consecutivas.
Más pequeño
Predicción de los saltos
técnicas: Nunca se saltará ; Siempre se saltará; Predecir según código de operación; Conmutador saltar/no saltar; Tabla de historia de saltos
Retardar los saltos
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.
Pipelining
Realizar solapamiento de las instrucciones, aumentando las etapas de las ejecución.
Fetch instrucción
Decodificar la instrucción
Calcular operandos
Captar operandos
Ejecutar instrucción
Escribir operando
Pipe(Intel 80486)
5 etapas;
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
Decodif1:
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
Deco2:
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.
Registro 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 intrucciones de cadena modifican DI y SI
I/O privilege level: Procesador genera una excepción al haber accesos no autorizados a E/S
Resume Flag: Permite que al reanudar de una Trap Flag no se produzca una interrupción
Alignment check: Indica si una palabra puede ser referenciada en una dirección que no sea múltiplo de 2
Identification Flag: Si se puede modificar el registro, indica que posee instrucción CPUID, para poder obtener
información de que procesador es.
registro de control
regitso 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 accesa directamente éstos
Manejo de interrupciones
Interrupciones: Provocadas por el HW.
Enmascarables
No enmascarables
Excepciones: Provocadas por SW.
Detectadas por el procesador (p.E. Overflow)
Programadas mediante instrucción especial(int)
Vector de Interrupción:
Cada interrupción está asignada a un número
El número se utiliza de índice en una tabla.
Cada posición de la tabla posee una dirección de 32 bits
Tamaño de la tabla: 256 * 32 bits
5 Prioridades:
Clase 1:
Interrupción en instrucción previa
Clase 2:
Interrupción externas
Clase 3:
Fallos captando la siguiente instrucción
Clase 4:
Fallos decodificando la siguiente instrucción
Clase 5:
Fallos ejecutando la siguiente instrucción