Arquitectura II Docentes: Lucas Benjamín Cicerchia lucas.cicerchia@itt.unnoba.edu.ar Arquitectura II Contenidos del día - El Procesador - Registros - ALU - Unidad de Control Memorias - Ciclo de Ejecución - CISC VS. RISC Arquitectura II REPASANDO Un computador a) se lo conoce como programa cableado Arquitectura II REPASANDO Un computador Se construye una configuraciónde usogeneral de funciones lógicas y aritméticas. Este hardware realizara diferentes funciones de acuerdo a las señales de control aplicadas al mismo. Acepta DATOS, SEÑALES DE CONTROL y PRODUCE RESULTADOS. En lugar de reconfigurar el hardware, reconfiguramos las SEÑALES DE CONTROL para cada caso -Cada programa es una secuencia de pasos -En cada paso se realiza una operación aritmética o lógica con ciertos datos. -Para cada paso se necesita un nuevo conjunto de señales lógicas Arquitectura II REPASANDO Arquitectura Von Neumann CPU - El Procesador Unidad de Control (UC) Controla todos los componentes Interpreta instrucciones Decodifica y Ejecuta instrucciones. Transforma instrucciones en órdenes a otros componentes Puede ser programada por hardware (cableada) y “microprogramada” (varias microinstrucciones por instrucción) Unidad Aritmético Lógica (ALU) Realiza operaciones matemáticas y lógicas Sumas, restas, multiplicaciones Operaciones lógicas: And, Or, Xor Registros Tamaño fijo y Almacenan datos binarios Acceso rápido De propósito general (programas) - Ax, Bx, Cx, Dx Específicos Registros de Instrucción Arquitectura II CPU - Procesador En los procesadores actuales no solo tienen estos 3 componentes sino además contiene: Unidades de ejecución SIMD: unidades especializadas en la ejecución de instrucciones SIMD (single instruction, multiple data), instrucciones que trabajan con estructuras de datos vectoriales, como por ejemplo instrucciones multimedia. Memoria caché: prácticamente todos los procesadores modernos incorporan dentro del propio chip del procesador algunos niveles de memoria caché. Unidad de gestión de memoria o memory management unit (MMU): gestiona el espacio de direcciones virtuales, traduciendo las direcciones de memoria virtual a direcciones de memoria física en tiempo de ejecución. Unidad de punto flotante o floating point unit (FPU): unidad especializada en hacer operaciones en punto flotante; puede funcionar de manera autónoma, ya que dispone de un conjunto de registros propio. Arquitectura II Ciclo de Ejecución de una Instrucción 1. Recuperar la siguiente instrucción desde memoria (apuntada por el program counter) y luego incrementar el program counter. 2. Decodificar el patrón de bits en el registro de instrucción IR 3. Ejecutar la instrucción indicada en el registro de instrucción IR Arquitectura II Ciclo de Ejecución de una Instrucción 1. UC obtiene la próxima instrucción de memoria (usando el registro PC) y dejando la información en el registro IR – Fetch de Instrucción (FI) 2. Se incrementa el PC 3. La instrucción es decodificada (del IR) a un lenguaje que entiende la ALU - Decode de Instrucción (DI) 4. Obtiene de memoria los operando requeridos por la instrucción – Calcular Operandos (CO) y Fetch de Operandos (FO) 5. La ALU ejecuta y deja los resultados en registros o en memoria - Execute Instrucción (EI) y Write Operand (WO) 6. Volver al paso 1 Arquitectura II Segmentación de las instrucciones La segmentación de las instrucciones (pipeline) consiste en dividir el ciclo de ejecución de las instrucciones en un conjunto de etapas pueden coincidir o no con las fases del ciclo de ejecución de las instrucciones. Arquitectura II Segmentación de las instrucciones Arquitectura II Registros Memoria de rápido acceso dentro del procesador. Utilizadas por la ALU para almacenamiento temporal. Tipos: Registros de Propósito general Registros de Instrucción Registros de Acceso a Memoria Registros de Estado y Control Arquitectura II Registros de Propósito General Los registros de propósito general son los que suelen utilizarse como operandos en las instrucciones assembler. Estos registros se pueden asignar a funciones concretas: datos, direccionamiento o ambos (en algunos procesadores). Los registros de datos se pueden diferenciar por el formato y el tamaño de los datos que almacenan; por ejemplo, puede haber registros para números enteros y para números en punto flotante. Los registros de direccionamiento se utilizan para acceder a memoria y pueden almacenar direcciones o índices. Arquitectura II Registros de Instrucción Los registros relacionados a las instrucciones son: Program Counter o Instruction Pointer (PC o IP): registro contador de programa, contiene la dirección de la instrucción siguiente que hay que leer de la memoria (segmento de código) Instruction Register (IR): registro puntero de instrucción, contiene la dirección (del segmento de código) de la próxima instrucción a ejecutar. Arquitectura II Registros de Acceso a Memoria Los registros de lectura y escritura en memoria son: Memory Address Register (MAR): registro de direcciones de memoria, donde ponemos la dirección de memoria a la que queremos acceder. Memory Buffer Register (MBR): registro de datos de memoria, registro donde la memoria deposita el dato leído o el dato que se quiere escribir. Arquitectura II Registros de Estado y de Control La información sobre el estado del procesador puede estar almacenada en un registro o mas de uno aunque habitualmente suele ser uno llamado registro de estado. Los bits del registro de estado son modificados por el procesador como resultado de la ejecución de algunos tipos de instrucciones. Ejemplo: en una operación aritmética los flags. Los registros de control son los que dependen más de la organización del procesador. Información de la unidad de control o del sistema operativo. Arquitectura II Unidad Aritmética Lógica - ALU Es la encargada de resolver todas las operaciones aritméticas y lógicas. Las operaciones aritméticas tanto con números enteros (representados en Ca2) como con números reales (representados en IEEE754, simple, doble y hasta cuádruple representación) Las operaciones lógicas AND, OR, NOT, XOR, operaciones de desplazamiento y rotaciones de bits. Las operaciones matemáticas anteriormente se utilizaba un co-procesador matemático, en la actualidad con el avance en el desarrollo de los procesadores hizo que dicho co-procesador se encuentre dentro del mismo micro. Arquitectura II Unidad de Control - UC La unidad de control se puede considerar el cerebro del computador. Como el cerebro, está conectada al resto de los componentes del computador mediante las señales de control (el sistema nervioso del computador). La función básica de la unidad de control es la ejecución de las instrucciones. Es imprescindible para coordinar los diferentes elementos que tiene el computador y hacer un buen uso de ellos. Arquitectura II Unidad de Control – UC - Microoperaciones En base a lo visto en el ciclo de ejecución la unidad de control deberá: Leer una instrucción Leer los operandos fuente Ejecutar una instrucción y almacenar los operandos en destino Comprobar interrupciones Cada una de estas operaciones tiene microoperaciones, que no son ni mas ni menos que transformación y transferencia de información. Arquitectura II Unidad de Control – UC - Microoperaciones Los tipos de microoperaciones que esta realiza son: Transferencia interna: transferencia entre registros internos al procesador Transferencia interna con transformación: operaciones aritméticas y lógicas entre registros internos al procesador Transferencia externa: transferencia entre registros internos al procesador y módulos o registros externos al procesador (bus o memoria principal) Arquitectura II Unidad de Control ¿Qué es un programa? -Una secuencia de pasos -Para cada paso se realiza una operación lógica o matemática -Para cada operación se necesita un set de señales de control diferentes La CPU genera las direcciones, mientras que la memoria las recibe. El usuario escribe un programa en lenguaje de alto nivel, el cual se traduce a un lenguaje ensamblador por medio de un programa compilador. Un programa ensamblador convierteel programa lenguaje simbólico o lenguaje de máquina en Arquitectura II ¿Qué es un programa? LENGUAJE DE ALTO NIVEL Var = Var + 1 COMPILADOR LENGUAJE ENSAMBLADOR INC VAR ENSAMBLADOR LENGUAJE DE MAQUINA 0110 1011 1010 1101 Arquitectura II ¿Qué es un programa? Lenguaje de maquina: Lenguaje que puede entender el hardware. Utiliza palabras binarias Lenguaje ensamblador (o simbólico): Funcionalmente equivalente al lenguaje de máquina pero que utiliza nombres mas intuitivos (Add, Jmp) Add AX, BX → 0110 1011 1010 ENSAMBLADOR MAQUINA Para cada operación se provee un código único ej: ADD, MOV Un segmento de hardware acepta ese código y genera las señales de control necesarias YA TENEMOS UNA COMPUTADORA Arquitectura II Formato en lenguaje simbólico Lab_1: add AX, BX ;Ejemplo de código simbólico Comentario Rotulo Operandos de destino Mnemonico Operandos de origen Arquitectura II Ciclo de Instrucción básico de 2 pasos Extraer Ejecutar Al comienzo de cada ciclo de instrucción, la CPU capta una instrucción de memoria. Se utiliza un registro llamado contador de programa ( PC Program Counter ) para seguir los pista de la instrucción que debe captarse a continuación Arquitectura II Instrucciones Secuencia de bits divididas en campos. Para no usar secuencias de bits se utiliza una representación simbólica. CODOP REFERENCIA A OPERANDO REFERENCIA A OPERANDO Arquitectura II Mediante un programa ensamblador convierte el programa mnemonico en lenguaje simbólico o lenguaje de máquina Arquitectura II Diagrama de estado del ciclo de instrucción Arquitectura II Flujo de Datos. Ciclo de extracción Depende del diseño particular de la CPU pero en general se cumplen los siguientes pasos: CARGA PC contiene la dirección de la próxima instrucción La dirección se mueve al MAR La dirección se coloca en el bus de direcciones La unidad de control requiere la lectura de memoria El procesador interpreta y ejecuta la acción Los resultados se colocan en el bus de datos, copiados al MBR y luego al IR mientras tanto el PC se incrementa en 1 Se examina el IR Si el direccionamiento es indirecto, se ejecuta este. Los N bits de la derecha del MBR se transfieren al MAR La unidad de control requiere la lectura en memoria El resultado (las direcciones de los operandos) se mueven al MBR Arquitectura II Flujo de Datos. Ciclo de extracción Arquitectura II Ciclo de Instrucción con interrupción Arquitectura II Ejecución de un programa -Un procesador posee un solo registro de datos llamado ACUMULADOR (AC). -Las INSTRUCCIONES y los DATOS son de 16 bits (suposición para el ejemplo). -El FORMATO DE INSTRUCCIÓN (4 bits CODOP y 12 bits DATOS) indica que puede haber 24=16 códigos de operación (codops) diferentes y se pueden redireccionar hasta 212=4096 palabras de memoria (o datos) Codops 0001=1 0010=2 0101=5 16 16 16 = cargar AC desde memoria = Almacenar AC en memoria =sumar a AC un dato de memoria Arquitectura II Ejecución de programa Memoria y contenido de registros Arquitectura II Unidad de Control TAREAS Hacer que el procesador ejecute las tareas en la secuencia correcta determinada por el programa que se esta ejecutando Generar las señales de control que provocan la ejecuciónde cada micropperación Incluimos otro registro ICC (Instrucción Cicle Code) que nos dirá en que parte del ciclo esta 00 CAPTACIÓN 01 INDIRECTO 10 EJECUCIÓN 11 INTERRUPCIÓN Arquitectura II Ciclo de captación Consta de tres pasos y cuatro microoperaciones T1= MAR←(PC) T2= T3= MBR←MEMORIA PC ←(PC)+1 IR ←(MBR) Ciclo de instrucción La dirección de la instrucción indicara si la dirección es: Directa / Indirecta Si la dirección es indirecta, el ciclo indirecto precede a la ejecución T1 MAR ← (IR(DIRECCIÓN)) DEL BUS DIRECCIONES T2 MBR ← MEMORIA DEL BUS DATOS T3 IR (DIRECCIÓN) ← (MBR(DIRECCIÓN)) Arquitectura II Ciclo de Interrupción Finalizado el CICLO DE EJECUCIÓN tiene lugar una comprobación que no exista una INTERRUPCIÓN HABILITADA T1: T2: MBR ← (PC) MAR ← DIRECCIÓN DE SALVAGUARDA PC ← DIRECCIÓN DE LA RUTINA T3:MEMORIA ← (MBR) Arquitectura II Ejemplo de Ciclo de Ejecución En una máquina con N códigos de operación puede tener N secuencias diferentes de microoperaciones SUMA ADD AX, VAR Suma el contenido de la posición VAR al registro R1 T1: T2: T3: MAR ← (IR(DIRECCION)) MBR ← MEMORIA (VAR) AX ← (AX) + (MBR) Arquitectura II Ejemplo Incrementar y saltar Si es Cero ISZ Var El contenido de Var se incrementa en 1 y si el resultado es 0, se salta T1: T2: T3: T4: MAR ← (IR direccion) MBR ← MEMORIA (VAR) MBR ← (MBR) + 1 MEMORIA ← MBR Si ((MBR):0) entonces PC ← ((PC)+1) Arquitectura II Ejecución de programa 1. El CONTADOR DE PROGRAMA (PC) contiene el valor 300 (dirección de la primera instrucción). Esta instrucción se carga en el REGISTRO DE INSTRUCCIÓN (IR) MEMORIA REGISTROS 300 1940 300 301 5941 302 2941 … 940 0003 941 0002 PC AX 1940 IR Arquitectura II Ejecución de programa 2. Los primeros cuatro bits de IR indican que el acumulador (AX) se va a cargar. Los restantes 12 bits especifican la dirección que es 940 (recordar que son valores hexadecimales) MEMORIA REGISTROS 300 1940 300 PC 301 5941 0003 AX 302 2941 1940 IR … 940 0003 941 0002 Arquitectura II Ejecución de programa 3. El registro PC se incrementa y capta la siguiente instrucción. MEMORI A REGISTROS 300 1940 301 PC 301 5941 0003 AX 302 2941 5941 IR … 940 0003 941 0002 Arquitectura II Ejecución de programa El contenido anterior de AX y el de la posición de memoria 941 se suman y el resultado se almacena en AX MEMORIA REGISTROS 4. 300 1940 301 PC 301 5941 0005 AX 302 2941 5941 IR … 940 0003 941 0002 316+216=516 Arquitectura II Ejecución de programa 5. El registro PC se incrementa y se capta la siguiente instrucción MEMORIA REGISTROS 300 1940 302 PC 301 5941 0005 AX 302 2941 2941 IR … 940 0003 941 0002 Arquitectura II Ejecución de programa 6. El contenido de AC se almacena en la posición 941 MEMORIA REGISTROS 300 1940 301 PC 301 5941 0005 AX 302 2941 2941 IR … 940 0003 941 0005 Arquitectura II Set de Instrucciones (ISA) ¿Qué tipos de datos puede manejar “nativamente”? ¿Cómo se almacenan? ¿Cómo se acceden? ¿Qué operaciones (instrucciones) puede ejecutar? ¿Cómo se codifican estas operaciones? Un conjunto de respuestas a estas preguntas se llama Instruction Set Architectura. También conocida como ISA. Cuando estamos estudiando una ISA, la organización se vuelve un detalle que sólo interesa para entender el comportamiento. Arquitectura II Métricas del Set de Instrucciones (ISA) Cantidad total de instrucciones disponibles (“largo”). Complejidad del conjunto de instrucciones: RISC: Reduced Instruction Set Computer CISC: Complex Instruction Set Computer Longitud de las instrucciones (“ancho”). Cantidad de memoria que un programa requiere (“largo x ancho”). Tipos de datos Enteros (8, 16, 32 bis; complemento a 2) Punto flotante. Punto fijo ¿BCD, ASCII? Almacenamiento: Big Endian y Little Endian Arquitectura II Little Endian vs Big Endian Cantidad total de instrucciones disponibles (“largo”). Endianness se refiere a la forma en que la computadora guarda datos multibyte. Little endian: el byte en una posición de memoria menor, es menos significativo. En general, Intel y computadoras CISC. Big endian: el byte en una posición de memoria menor, es el más significativo. En general, Motorola, computadoras RISC y redes. Ejemplo: ¿Cómo se almacena 0x1234 (16bits) en 8 bits? Little endian: M[0] = 0x34 M[1] = 0x12 Big endian: M[0] = 0x12 M[1] = 0x34 Arquitectura II CISC La microprogramación es una característica importante y esencial de casi todas las arquitecturas CISC. La microprogramación significa que cada instrucción de máquina es interpretada por un microprograma localizado en una memoria en el circuito integrado del procesador. Ejemplos son: – Intel 8086, 8088, 80286, 80386, 80486. – Motorola 68000, 68010, 68020, 68030, 6840 Arquitectura II CISC El objetivo de CISC será completar la tarea en tan pocas líneas de código como sea posible. Esto se lleva a cabo a través de la construcción de un microprocesador que entienda y ejecute un conjunto de operaciones. El formato de instrucción es de longitud variable. Dispone de un gran juego de instrucciones, habitualmente más de cien, para dar respuesta a la mayoría de las necesidades de los programadores. Dispone de un número muy elevado de modos de direccionamiento. Es una familia anterior a la de los procesadores RISC. La unidad de control es microprogramada; es decir, la ejecución de instrucciones se realiza descomponiendo la instrucción en una secuencia de microinstrucciones muy simples. Procesa instrucciones largas y de tamaño variable, lo que dificulta el procesamiento simultáneo de instrucciones. Arquitectura II CISC Imaginemos que para éste ejemplo tenemos la instrucción "MULT". Cuandose ejecuta la instrucción, ésta carga los dos operandos en registros separados La ejecución de la instrucción concluye con solo la siguiente instrucción: MOV AX, DS:[0052h] MULT DS:[0023h], AX MULT es una “instrucción compleja”, ya que opera directamente en la memoria de la computadora y no requiere indicaciones explicitas por el programador para realizar la carga de los datos. Analizando un poco la expresión tendríamos que ésta representa una instrucción como: a = a * b Una ventaja es que el compilador tiene poco trabajo que hacer al traducir la instrucción a un lenguaje de alto nivel. Arquitectura II RISC Debido a que se tiene un conjunto de instrucciones simplificado, éstas se pueden implantar por hardware directamente en la CPU, lo cual elimina la microprogramación y la necesidad de decodificar instrucciones complejas. Permite el uso de la técnica denominada Pipeline para paralelizar la ejecución de instrucciones Ejemplos son: PowerPC, Alpha-Dec, MIPS Arquitectura II RISC El formato de instrucción es de tamaño fijo y corto, lo que permite un procesamiento más fácil y rápido. El juego de instrucciones se reduce a instrucciones básicas y simples, con las que se deben implementar todas las operaciones complejas. Una instrucción de un procesador CISC se tiene que escribir como un conjunto de instrucciones RISC. Dispone de un número muy reducido de modos de direccionamiento. La arquitectura es de tipo load-store (carga y almacena) o registroregistro. Las únicas instrucciones que tienen acceso a memoria son LOAD y STORE, y el resto de las instrucciones utilizan registros como operandos. Dispone de un amplio banco de registros de propósito general. Casi todas las instrucciones se pueden ejecutar en pocos ciclos de reloj. Este tipo de juego de instrucción facilita la segmentación del ciclo de ejecución, lo que permite la ejecución simultánea de instrucciones. La unidad de control es cableada y microprogramada. Arquitectura II RISC El código apropiado para esta ejecución es; LOAD AX, DS:[0023h] LOAD BX, DS:[0052h] PROD AX, BX STORE DS:[0023h], AX De entrada parece que el programa es menos eficiente ya que requiere de más instrucciones para ejecutarse, más memoria para almacenarse y el compilador deberá trabajar más para realizar la traducción a partir de un lenguaje de alto nivel. Sin embargo los microprocesadores RISC tienen ventajas al ejecutar cada instrucción en un ciclo de reloj. El tiempo de ejecución sería muy similar al de CISC. También requiere de menos transistores en el hardware que las instrucciones complejas permitiendo un número Arquitectura II CISC vs. RISC Los procesadores actuales no son completamente CISC o RISC. Los nuevos diseños de una familia de procesadores con características típicamente CISC incorporan características RISC, de la misma manera que las familias con características típicamente RISC incorporan características CISC. Ejemplo PowerPC, que se puede considerar un procesador RISC, incorpora características CISC, tales como un juego de instrucciones muy amplio (más de doscientas instrucciones). Los últimos procesadores de Intel (fabricante de procesadores típicamente CISC) también incorporan características RISC. Arquitectura II ¿Preguntas?