Title: Unidades Funcionales del CPU y ejecucin de las instrucciones
1Unidades Funcionales del CPU y ejecución de las
instrucciones
- Arquitectura de Computadoras
- Caps. 9, 10, 11 y 12
2Elementos básicos de una computadora
- Procesador
- Memoria principal
- Memoria real o primaria
- Volátil
- Módulos de E/S
- Dispositivos de memoria secundaria
- Equipo de comunicaciones
- Terminales
- Interconexión del sistema
- Comunicación entre procesadores, memoria, y
módulos de E/S
3Estructura del CPU
4Función del CPU
- El CPU debe
- Extraer instrucciones
- Interpretar instrucciones
- Extraer datos
- Procesar datos
- Escribir datos
5Unidad aritmética y lógica
- Hace los cálculos
- El resto de los elementos de la computadora están
para suministrar datos a la ALU - UDC, Registros, Memoria, E/S
- Maneja enteros
- Puede menajar números de punto flotante (reales)
- Puede ser una FPU separada (coprocesador
matemático)
6ALU Entradas y salidas
7Registros del CPU
- El CPU debe tener un espacio de trabajo
(almacenamiento temporal) - Llamados registros
- La cantidad y función varía dependiendo del
diseño del procesador - Una de las decisiones más importantes de diseño
- El nivel más alto en la jerarquía de memoria
8Componentes de la Computadoravisión de alto
nivel
9Componentes del nivel más alto (Registros)
- MAR - Memory Address Register
- Direcciona la siguiente lectura o escritura
- MBR - Memory Buffer Register
- Datos a ser escritos en memoria
- Recibe datos leidos de la memoria
- I/OAR - I/O Address
- Especifca un dispositivo de E/S en particular
- I/OBR - I/O Buffer
- Intercambio de datos entre un módulo de I/O y el
procesador
10Registros del Procesador
- Registros visibles al usuario
- Pueden referenciarse por el lenguaje máquina
- Disponibles a todos los programas - programas de
aplicación y programas del sistema - Tipos de registros
- Datos
- Direcciones
- Códigos de condición
11Registros Visibles al Usuario
- Registros de datos
- Registros de direcciones
- Registros índices
- Apuntador de segmentos
- Apuntador de stack
12Registros de control y estado
- Program Counter (PC)
- Instruction Register (IR)
- Program Status Word (PSW)
13Cuándo se modifican los registros?
- Ejecución de un programa
- Programa
- Secuencia de instrucciones máquina
- Ejecutadas por el CPU
14Qué son las instrucciones máquina?
- Conjunto de instrucciones
- La colección de instrucciones que entiende un CPU
- Lenguaje máquina
- Binario
- Usualmente representado por códigos en ensamblador
15Elementos de una instrucción
- Código de operación (Op code)
- Hacer esto
- Referencia al operando fuente
- A esto
- Referencia al operando resultante
- Poner la respuesta aquí
- Referencia a la siguiente instrucción
- Cuando termines, hacer esto...
16Dónde están los operandos?
- Memoria principal (o virtual, cache)
- Registros del CPU
- Dispositivo de E/S
17Representación de instrucciones
- En el código máquina cada instrucción tiene un
patrón de bits único - Para el entendimiento humano se usa una
representación simbólica - ejemplo. ADD, SUB, LOAD
- Los operandos también pueden representarse de esa
forma - ADD A,B
18Tipos de instrucciones
- Procesamiento de datos
- Almacenamiento de datos (memoria principal)
- Movimiento de datos (E/S)
- Flujo del programa
19Número de direcciones (a)
- 3 direcciones
- Operando 1, Operando 2, Resultado
- a b c
- No es común
- Requiere formatos grandes para tener todo
20Número de direcciones (b)
- 2 direcciones
- Una de las direcciones es operando y resultado
- a a b
- Reduce la longitud de la instrucción
- Requiere algo de trabajo extra
- Almacenamiento temporal para mantener algunos
resultados
21Número de direcciones (c)
- 1 dirección
- Segunda dirección implícita
- Usualmente un un registro (acumulador)
- No es común en máquinas actuales
22Número de direcciones (d)
- 0 (cero) direcciones
- Todas la direcciones son implícitas
- Usa un stack
- ejemplo.
- push a
- push b
- add
- pop c
- c a b
23Cuántas direcciones?
- Más direcciones
- Instrucciones más complejas (potentes??)
- Más registros
- Operaciones entre registros más rápidas
- Menos instrucciones por programa
- Menos direcciones
- Instrucciones menos complejas (potentes??)
- Más instrucciones por programa
- Extracción/ejecución de instruccíones más rápida
24Decisiones de diseño (1)
- Repertorio de operaciones
- Cuántas operaciones?
- Qué pueden hacer?
- Qué tan complejas son?
- Tipos de datos
- Formato de instrucciones
- Longitud del campo del código de operación (op)
- Número de direcciones
25Decisiones de diseño(2)
- Registros
- Número de registros del CPU disponibles
- Cuales operaciones pueden ejecutarse en cuáles
registros? - Modos de direccionamiento (más adelante)
- RISC v CISC
26Tipos de operandos
- Direcciones
- Números
- Enteros/Punto flotante
- Caracteres
- ASCII etc.
- Datos lógicos
- Bits o banderas
- Hay alguna diferencia entre números y
caracteres? - Qué dicen los programadores de C?
27Tipos de datos específicos
- General contenido binario arbitrario
- Entero Valor binario simple
- Ordinal Entero sin signo
- BCD No empaquetado un dígito por byte
- BCD Empaquetado - 2 dígitos BCD por byte
- Apuntador cercano desplazamiento de 32 bits
dentro del segmento - Campo bit
- Cadena de caracteres
- Punto flotante
28Tipos de operaciones
- Transferencia de datos
- Aritméticas
- Lógicas
- Conversión
- E/S
- Control del sistema
- Transferencia de control
29Transferencia de datos
- Hay que especificar
- Fuente
- Destino
- Cantidad de datos
- Pueden ser instrucciones diferentes instrucciones
para diferentes movimientos - O una instrucción y diferentes direcciones
30Aritmética
- Suma, Resta, Multiplicación, División
- Entero con signo
- Punto flotante?
- Puede incluir
- Incremento (a)
- Decremento (a--)
- Negación (-a)
31Lógicas
- Operaciones de bits
- AND, OR, NOT
32Conversión
33Entrada y Salida
- Pueden ser instrucciones específicas
- Pueden ser instrucciones simbólicas
- Puede hacerse con instrucciones de movimiento de
datos - Mapeo en memoria
- Puede hacerse por medio de un controlador
separado (DMA)
34Control del Sistema
- Instrucciones privilegiadas
- El CPU necesita estar en un estado específico
- Ring 0 en 80386
- Modo Kernel
- Para el uso de los SO
35Transferencia de Control
- Salto
- Ejemplo Hace la operación y salta a xxxx si el
resultado es cero - ISZ Register1
- Branch xxxx
- ADD A
- Llamada a una subrutina
- Llamada a una interrupción
36Modos de direccionamiento
- Inmediato
- Directo
- Indirecto
- Registro
- Registro Indirecto
- Desplazamiento (Indexedo)
- Stack
37Direccionamiento Inmediato
- El operando es parte de la instrucción
- Operando campo dirección
- ejemplo. ADD 5
- Suma 5 al contenido del acumulador
- 5 es operando
- No hay referencia a memoria para extraer datos
- Rápido
- Rango limitado
38Diagrama del Direccionamiento Inmediato
Instrucción
Operando
Opcode
39Direccionamiento Directo
- El campo de direcciónes contiene la dirección del
operando - La dirección efectiva (EA) campo de dirección
(A) - ejemplo. ADD A
- Suma el contenido de la celda A al acumulador
- Buscar en memoria la dirección A para el operando
- Una sola referencia a memoria para accesar datos
- No se hacen cálculos adicionales para trabajar la
dirección efectiva - Espacio de direcciones limitado
40Diagrama de Direccionamiento Directo
41Direccionamiento Indirecto (1)
- Celdas de memoria apuntadas por un campo de
dirección contiene la dirección (apuntador) al
oprando - EA (A)
- Busca en A, encuentra la dirección (A) y ahí
busca el operando - Ejemplo. ADD (A)
- Suma el contenido de una celda apuntada por el
contenido de A al acumulador
42Direccionamiento Indirecto (2)
- Espacio de direccionamiento grande
- 2n donde n es la longitud de la palabra
- Puede ser anidado, multinivel, en cascada
- ejemplo. EA (((A)))
- Cómo sería el diagrama?
- Varios accesos a memoria para encontrar el
operando - Más lento
43Diagrama de Direccionamiento Indirecto
44Direccionamiento Registro (1)
- El operando está en el registro nombrado en el
campo dirección - EA R
- Número limitado de registros
- Se requiere un campo de direcciones muy pequeño
- Instrucciones más cortas
- Extracción de instrucciones más rápida
45Direccionamiento registro (2)
- No se hace acceso a memoria
- La ejecución es muy rápida
- Espacio de direcciones muy limitado
- Muchos registros ayudan al rendimiento
- Requiere una buena programación en ensamblador o
el desarrollo de un buen compilador - Programando en C
- register int a
46Diagrama de direccionamiento Registro
47Direccionamiento indirecto con registro
- EA (R)
- El operando está en una celda de memoria apuntado
por el contenido del registro R - Espacio de direcciones grande (2n)
- Un acceso menos a memoria que el direccionamiento
indirecto
48Diagrama de direccionamiento Indirecto con
registro
49Direccionamiento con desplazamiento
- EA A (R)
- El campo de direcciones tiene dos valores
- A valor base
- R registro que tiene el desplazamiento
- o vice versa
50Direccionamiento con desplazamiento
51Direccionamiento relativo
- Una versión de direccionamiento con
desplazamiento - R Contador del programa, PC
- EA A (PC)
- Obtener operando de A celdas a partir de la
posición actual - Apuntada por el registro PC
- Localidad de referencias y el uso de la caché
52Direccionamiento base registro
- A desplazamiento
- R apuntador a la dirección base
- R puede ser implícito o explícito
- ejemplo. Registros de segmento en el 80x86
53Direccionamiento Indexado
- A base
- R desplazamiento
- EA A R
- Bueno para el acceso de arreglos
- EA A R
- R
54Formatos de Instrucciones
- Distribución de los bits en una instrucción
- Incluye el opcode
- Incluye operandos
- implícitos o explícitos
- Usualmente más que un formato de instrucciones es
un conjunto de instrucciones
55Longitud de la instrucción
- Afectado por y afecta
- Tamaño de la memoria
- Organización de la memoria
- Estructura del bus
- Complejidad del CPU
- Velocidad del CPU
- Repertorio de instrucciones potente o ahorrar
espacio?
56Asignación de bits
- Número de modos de direccionamiento
- Número de operandos
- Registros vs memoria
- Número de conjuntos de registros
- Rango de direccionamiento
- Granularidad en las direcciones
57Ejecución de una Instrucción
- El procesador ejecuta instrucciones en un
programa - Las instrucciones son capturadas de la memoria en
un tiempo
58Captura y ejecución de una instrucción
- El procesador captura la instrucción de la
memoria principal - El contador del programa (PC) tiene la dirección
de la siguiente instrucción a ser capturada - El contador del programa se incrementa después de
cada captura
59Ejemplo de la ejecución de un programa
60Ejecución de una Instrucción
- Dos pasos
- Captura
- Ejecución
Ciclo Fetch (Captura)
Ciclo de ejecución
Captura siguiente instrucción
Ejecuta instrucción
Captura siguiente instrucción
Ejecuta instrucción
INICIO
HALT
61Ciclo de Fetch (Captura)
- El contador del programa (PC) tiene la dirección
de la siguiente instrucción a extraer - El procesador extrae la instrucción de la
dirección de memoria apuntada por PC - Incrementa PC
- Al menos que se le indique otra cosa
- La instrucción se carga en el registro de
instrucción (IR) - El procesador interpreta la instrucción y ejecuta
las acciones requeridas
62Ciclo de ejecución
- Procesador-memoria
- Transferencia de datos entre el CPU y la memoria
principal - Procesador E/S
- Transferencia de datos entre CPU y un módulo de
E/S - Procesamiento de datos
- Alguna operación aritmética o lógica en los datos
- Control
- Alteración de la secuencia de las operaciones
- ejemplo. jump
- Combinación de los de arriba
63Diagrama de estados del ciclo de instrucción
Captación del operando
Alcacena- miento de operando
Captación de instrucción
Captación del operando
Alcacena- miento de operando
Captación de instrucción
Varios operandos
Varios operandos
Decodificación de la operación de la instrucción
Cálculo de la dirección del operando
Operación con datos
Cálculo de la dirección del operando
Decodificación de la operación de la instrucción
Cálculo de la dirección del operando
Operación con datos
Cálculo de la dirección del operando
Cálculo de la dirección de la instrucción
Cálculo de la dirección de la instrucción
Instrucción completada Captar la siguiente
instrucción
Cadena o vector de datos
64Ciclo indirecto
- Puede requerir acceso a memoria para extraer
operandos - El direccionamiento indirecto requiere más
accesos a memoria - Puede ser a través de como un subciclo de
instrucción adicional
65El ciclo de instrucción
66Diagrama de estados del ciclo de instrucción
Indirección
Indirección
Captación del operando
Captación del operando
Captación de instrucción
Alcacena- miento de operando
Captación de instrucción
Alcacena- miento de operando
Varios resultados
Varios operandos
Interrupción
Interrupción
Comproba- ción de interrupción
Comproba- ción de interrupción
Decodificación de la operación de la instrucción
Cálculo de la dirección del operando
Cálculo de la dirección de la instrucción
Decodificación de la operación de la instrucción
Cálculo de la dirección del operando
Operación con datos
Cálculo de la dirección del operando
Cálculo de la dirección de la instrucción
Operación con datos
Cálculo de la dirección del operando
Instrucción completada Captar la siguiente
instrucción
No interrupción
Volver a por otro dato de una cadena o un vector
67Flujo de datos (Extracción de los datos)
- Se examina IR
- Si es direccionamiento indirecto, se ejecuta el
ciclo indirecto - Los N bits más de la derecha de MBR se
transfieren a MAR - La unidad de control solicita lectura de memoria
- El resultado (dirección del operando) se mueve a
MBR
68Flujo de datos, ciclo de captación
Memoria
Memoria
Bus de datos
Bus de control
Bus de direcciones
MAR
PC
MAR
PC
Unidad De control
Unidad De control
IR
IR
MBR
MBR
69Flujo de datos, ciclo indirecto
Memoria
Memoria
MAR
MAR
Unidad De control
MBR
MBR
MBR
Bus de direcciones
Bus de datos
Bus de control
70Flujo de datos (Ejecución)
- Puede tomar varias formas
- Depende de la instrucción que se está ejecutando
- Puede incluir
- Lectura/Escritura de la memoria
- Entrada/Salida
- Transferencias de registros
- Operaciones en la ALU
71Pre-captura
- La captura se hace accesando memoria
- La ejecución usualmente no accesa memoria
principal - Puede capturar la siguiente instrucción durante
la ejecución de la instrucción actual - A esto se le llama pre-captura de instrucción
72Procesamiento en tuberías (Pipelining)
- Extraer instrucción
- Decodifica instrucción
- Calcula operandos
- Extraer operandos
- Ejecutar instrucciones
- Escribir resultados
- Sobreponer estas operaciones
73Mejora el rendimiento
- Pero no al doble
- La captura es normalmente más corta que la
ejecución - Pre-capturar más de una instrucción?
- Cualquier salto significa que las instrucciones
pre-capturadas no se requieren - Añade más estapas para mejorar el rendimiento
74Diagrama de tiempos del funcionamiento del cauce
de instrucciones
75Efecto de un salto condicional en el
funcionamiento del cauce de instrucciones
76Qué es superescalar?
- Las instrucciones comunes pueden iniciarse y
ejecutarse independientemente - Aritméticas, carga/almacenamiento, salto
condicional - Igualmente aplicable a RISC y CISC
- En práctica usualmente en RISC
77Por qué superescalar?
- La mayoría de las operaciones están en cantidades
escalares - Ver RISC
- Mejorar esas operaciones para obtener una mejora
global
78Organización superescalar usual
Banco de registros de punto flotante
Banco de registros de enteros
Unidades Funcionales segmentadas
Memoria
79Supersegmentado
- Muchas de las etapas de una tubería (pipeline)
necesitan menos que la mitad de un ciclo de reloj - Duplicando la velocidad interna de reloj
obtenemos dos tareas por ciclo externo de reloj - El superescalar permite extracción ejecución
paralela
80Comparación de superescalar y supersegmentada
(máquina base)
81Comparación de superescalar y supersegmentada
(supersegmentada)
82Comparación de superescalar y supersegmentada
(superescalar)
83RISC
- Reduced Instruction Set Computer
- Características clave
- Muchos registros de propósito general
- O el uso de la tecnología del compilador para
optimizar el uso de los registros - Conjunto de instrucciones limitado y simple
- Énfasis en optimizar el pipelining de las
instrucciones
84Características del RISC
- Una instrucción por ciclo
- Operaciones de registro a registro
- Menos, modos de direccionamiento simples
- Menos, formatos de instrucciones simples
- Formato de instrucción fijo
- Más tiempo/esfuerzo para compilar
85Intención del CISC
- Desarrollo fácil del compilador
- Hacer la ejecución eficiente
- Operaciones complejas en micro-código
- Soporta lenguajes de alto nivel más complejos
86Por qué CISC?
- El costo del software excede los costos del
hardware - Cada vez más lenguajes de alto nivel complejos
- Huecos en la semántica
87RISC vs CISC
- Los diseños RISC pueden sacar provecho de la
inclusión de algunas características CISC - y los CISC sacar provecho de algunas
características RISC - ejemplos. PowerPC y Pentium