1.26k likes | 1.46k Vues
Capítulo 3. El procesador, la ruta de datos y el control (I Parte). Definición de arquitectura de computadores. 1950 a 1960 Abarcaba el tema de aritmética de computadores.
E N D
Capítulo 3 El procesador, la ruta de datos y el control (I Parte)
Definición de arquitectura de computadores • 1950 a 1960Abarcaba el tema de aritmética de computadores. • 1970a mediados de los 1980 abarcaba el tema de diseño de instrucciones especialmente la arquitectura ISA y sus correspondientes compiladores. • 1990en esta época se diseñaban los CPU, sistema de memoria, sistema de entrada/salida, los multiprocesadores y las redes. • 2000hasta nuestros días, se abarcan las arquitecturas de propósito especial, funcionalidad reconfigurable, consideraciones especiales para el bajo consumo y el procesamiento móvil.
Arquitectura de computadores • Con el término “Arquitectura de Computadores” nos referimos a una especificación computacional detallada, comunicación, y elementos para almacenar datos (hardware) de un sistema computador, como estos componentes interactúan (organización de la máquina), y como se controlan (conjunto de instrucciones). • La arquitectura de la máquina determina, cuales cálculos pueden realizarse eficientemente, cuales formatos de organización de datos y diseño de programas se pueden realizar óptimamente. • Este término fue aplicado por primera vez por Gene Amdahl, G. Anne Blaauw y Frederick Brooks, Jr. (diseñadores del IBM System/360), en 1964. • En las décadas de los 70 y 80, los arquitectos de computadores se concentraron en el conjunto de instrucciones. • En el presente los diseñadores se enfrentan al reto de implementar procesadores eficientes, diseñar sistemas de comunicación entre los diferentes niveles en la jerarquía de memorias, de integrar múltiples procesadores en un simple diseño y diseñar procesadores para aplicaciones específicas.
1971: INTEL 4004 • Primer procesador • Proceso de 10 micrones • 2300 transistores • Bus de 4 bits • 640 bytes de memoria • 750 Khz • Die de 12 mm2
2000: Intel Pentium 4 • Proceso de 0.18 micras • 42 millones de transistores • Die de 217 mm2 • Bus de 64 bits • 8 KBytes de memoria cache • 450 MHz
2004: Intel Itanium 2 • Proceso de 0.13 micras • 592 millones de transistores • Die de 432 mm2 • Bus de 128 bits • 1.4 GHz
2015: Proyecciones • Proceso de 0.025 micras • 7 billones de transistores • Die de 310 mm2 • 33 GHz en el chip • 29 GHz fuera del chip
40 Gate delay 35 Interconnect delay 30 25 20 15 10 5 0 0.65 1989 0.5 1992 0.35 1995 0.25 1998 0.18 2001 0.13 2004 0.1 2007 Source: SIA Roadmap 1997 RETARDO POR INTERCONECCION
Bus de direcciones Bus de datos BIU Generador de dir y Controlador de bus AH AL ADD BH BL CH CL 1 EU DH DL 2 BP 3 Cola de instrucciones CS DI 4 ES SI 5 SS SP 6 DS IP Bus interno de datos ALU banderas Arquitectura básica de un procesador UNIDAD DE INTERPRETACIÓN
Bus de direcciones Bus de datos BIU Generador de dir y Controlador de bus AH AL ADD BH BL CH CL 1 DH DL 2 EU BP 3 CS Cola de instrucciones DI 4 ES SI 5 SS SP 6 DS IP Bus interno de datos UNIDAD DE INTERPRETACIÓN ALU banderas La unidad de cálculo (ALU) • Se realizan las operaciones aritméticas y lógicas. • Se encuentra el registro de estado, donde se encuentran las banderas que son accionadas después de cada una de las operaciones. • Es operada por medio de la unidad de control por un grupo de primitivas de control que seleccionan la función a realizar, así como la fuente y el destino de los datos.
Bus de direcciones Bus de datos BIU Generador de dir y Controlador de bus AH AL ADD BH BL CH CL 1 EU DH DL 2 BP 3 Cola de instrucciones CS DI 4 ES SI 5 SS SP 6 DS IP Bus interno de datos UNIDAD DE INTERPRETACIÓN ALU banderas Los registros de trabajo • Los registros de trabajo son medios de almacenamiento temporal • Para el caso de la arquitectura IA86, específicamente para el microprocesador 8086/88 los registros de trabajo de 16 bits pueden ser: AX, BX, CX, DX , los cuales están compuestos por AH, AL; BH, BL; CH, CL; DH, DL; los cuales son de 8 bits cada uno. • Se utilizan dependiendo de la acción a realizar. Así por ejemplo si es necesario la utilización de una cuenta se utiliza el registro CX.
Bus de direcciones Bus de datos BIU Generador de dir y Controlador de bus AH AL ADD BH BL CH CL 1 EU DH DL 2 BP 3 Cola de instrucciones CS DI 4 ES SI 5 SS SP 6 DS IP Bus interno de datos UNIDAD DE INTERPRETACIÓN ALU banderas La interfaz con el bus • Esta unidad es la capaz de realiza el cálculo para la próxima dirección. • La cual se entrega a los diferentes buses de salida como lo son el de direcciones, datos y control.
Bus de direcciones Bus de datos BIU Generador de dir y Controlador de bus AH AL ADD BH BL CH CL 1 EU DH DL 2 BP 3 Cola de instrucciones CS DI 4 ES SI 5 SS SP 6 DS IP Bus interno de datos UNIDAD DE INTERPRETACIÓN ALU banderas La unidad de interpretación de instrucciones • En esta unidad se realiza la interpretación del código de operación, y se ejecutan todas las primitivas de control necesarias para dar servicio a la instrucción. • También se cuenta con una unidad de prueba de señales para generar interrupciones, generar saltos incondicionales y la prueba de banderas. • Además se generan todas las primitivas de control necesarias para que la arquitectura funcione correctamente.
Ejemplo de una máquina multinivel Alto nivel Nivel 5 Traducción (compilador) Lenguaje ensamblador Nivel 4 Traducción (ensamblador) Sistema operativo Interpretación parcial (Sistema Operativo) Nivel 3 Interpretación (microprograma) o ejecución directa Conjunto de instrucciones Nivel 2 Microarquitectura Nivel 1 Hardware Lógica digital Nivel 0
Ejemplo de una máquina multinivel temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; Alto nivel Nivel 5 • Cada arquitectura del computador tiene su propio lenguaje ensamblador • los lenguajes ensambladores tienen a ser de bajo nivel, donde algunos todavía escribimos código. • Mucho de ese código se escribe en HLLs y luego compilado. • El compilador es un programa que automáticamente convierte HLL a ensamblador. lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) Lenguaje ensamblador Nivel 4
Ejemplo de una máquina multinivel Alto nivel Nivel 5 • A este nivel algunas de las funciones del sistema operativo pueden ser ejecutadas como por ejemplo las interrupciones tipo 21H en el caso del procesador IAX86, lo que se conoce como llamados al sistema operativo. • También a este nivel puede dársele el control al sistema operativo para que administre el programa que hemos realizado, en este caso el usuario pierde el control sobre la ubicación del programa en la arquitectura del computador Lenguaje ensamblador Nivel 4 Sistema operativo Nivel 3
Ejemplo de una máquina multinivel Alto nivel Nivel 5 • A este nivel las instrucciones han sido compiladas para el nivel de interpretación del procesador, corresponden a una cadena de unos y ceros que representan las órdenes y los datos que se quieren ejecutar. Lenguaje ensamblador Nivel 4 Sistema operativo Nivel 3 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Conjunto de instrucciones Nivel 2
Ejemplo de una máquina multinivel Alto nivel Nivel 5 • Para estos últimos dos niveles las instrucciones han sido interpretadas y se ejecutan señales eléctricas que manejan la microarquitectura donde se ejecutaran las órdenes. • Esto es funciones lógicas a nivel de compuertas o transistores que pasan de la zona de saturación a la de corte. Lenguaje ensamblador Nivel 4 Sistema operativo Nivel 3 Conjunto de instrucciones Nivel 2 Microarquitectura Nivel 1 Lógica digital Nivel 0
¿Qué son las instrucciones? software Conjunto de instrucciones hardware
software Aplicaciones (iTunes) Control I Reg Mem ALU Vdd I1 O1 CONJUNTO DE INSTRUCCIONES Vdd Ruta de datos y control I1 O1 I2 O2 Diseño digital I1 O1 Diseño del circuito Transistores hardware ¿Qué son las instrucciones? Sistema operativo (MS-DOS, Windows, Linux, etc.) Compilador Ensamblador Procesador Memoria Sistema de I/O
temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; Programa: Programa en alto nivel Compilador Programa en lenguaje ensamblador Programa en ensamblador: lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) Ensamblador Lenguaje máquina Programa en memoria Código objeto de máquina Linker Código de máquina ejecutable Programa en lenguaje máquina: Loader 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Interpretación de máquina Especificación de las señales de control ALUOP[0:3] InstReg[9:11] & MASK Representación de capas Arquitectura del conjunto de instrucciones
Ciclo general de ejecución de instrucciones Búsqueda de instrucción Obtener la instrucción del programa almacenado Decodificación de la instrucción Determinar las acciones requeridas y el tamaño de la instrucción Búsqueda del operando Localizar y obtener el operando Ejecución Calcular el resultado o estado Almacenar el resultado Depositar el resultado en el medio de almacenamiento para un próximo uso Próxima instrucción Determinar la siguiente instrucción
Formato de Instrucciones • Las instrucciones consisten de un código de operación (opcode) y operandos. • El opcode identifica la operación a realizar • Los operandos identifican los datos a utilizar, y el lugar donde se almacenará el resultado. • Todas las instrucciones tienen código de operación, pero pueden o no tener operandos.
Formato de instrucciones • Las instrucciones pueden variar en su largo • Si todas las instrucciones tienen el mismo largo simplifica el proceso de decodificación de instrucciones, sin embargo se puede ver como un desperdicio de espacio. • Si todas las instrucciones tienen diferente largo se complica el proceso de decodificación pero permite un uso más eficiente de la memoria.
Criterios de diseño de instrucciones • El formato de las instrucciones es un aspecto de mucha importancia. • En el desarrollo de la arquitectura de los computadores, el diseño a nivel de lógica digital y de la microarquitectura tienen un mínimo impacto en la interfaz del computador a nivel de hardware y software. • El impacto es mínimo porque los diseños a bajo nivel se ocultan por el diseño de las instrucciones. • Sin embargo los cambios en el nivel del conjunto de instrucciones, y particularmente en el formato de las instrucciones, hace que algunos programas no funcionen correctamente en las nuevas generaciones de computadores.
Criterio de diseño para el formato de las instrucciones • El primer aspecto en el diseño de instrucciones se relaciona con su tamaño. • Entre más pequeño es el formato de las instrucciones, más rápido se pueden leer de memoria. • Siempre tenemos un ancho de banda de memoria limitado. • Sin embargo para obtener pequeñas instrucciones se presenta un compromiso: • Códigos de operación pequeños • Operandos pequeños o escasos • Se cuenta con mayor complejidad en la decodificación.
Criterio de diseño para el formato de las instrucciones • Códigos de operación pequeños • El tamaño del espacio para el código de operación limita el número de operaciones que se pueden realizar. • Operandos pequeños • Esta relacionado con la cantidad de registros que se pueden direccionar. • Esta relacionado con la cantidad de memoria que se puede direccionar. • Pocos operandos • Sin operandos el trabajo se debe realizar utilizando la pila • Utilizar un operando y trabajar con el operador • Utilizar dos operandos y tener el resultado en la entrada • Utilizar tres operandos. • Formatos más comprimidos • Mayor complejidad en la decodificación • Menos potencial para crecer
Soluciones de diseño para el formato de las instrucciones • Una vez que sabemos la cantidad de códigos de operación que se necesitan (basados en el número de operaciones que se quieren) y el número y tamaño de los operandos, luego debemos saber la cantidad de bits que se requieren para el formato de la instrucción. • Si tenemos 256 operaciones, entonces necesitamos 8 bits para representar los códigos de operación. • Si contamos con instrucciones con tres operandos, donde cada operando puede especificar direcciones de 32 bits, entonces necesitamos 96 bits para representar los operandos. • Por lo tanto, la unidad decodificadora utilizaría instrucciones de 104 bits. • Claramente no es un buen diseño a no ser de que se cuente con memoria extremadamente rápida. • La solución es utilizar códigos de operación expandibles.
Códigos de operación expandibles • El código de operación expandible es un opcode que toma más espacio cuando se requiere de menos espacio para almacenar los operandos. • La expansión de los opcodes tiene la ventaja en el hecho de que operaciones diferentes, tienen requerimientos diferentes para sus operandos • NOP no necesita operandos • GOTO necesita un operando • Operaciones de registro a registro necesitan de direcciones para operandos más pequeñas que operaciones de memoria a memoria. • Por lo tanto organice los operandos tal que se pueda realizar el compromiso entre el espacio de los códigos de operaciones y el espacio de los operandos.
Códigos de operación expandibles • EJEMPLO: • Considere el siguiente esquema basado en una palabra de 16 bits en donde se utilizan 4 bits para la dirección. • Una solución con un código de operación fijo, localiza 4 bits para el código de operación y 4 bits para cada uno de los tres operandos • Esta solución se limita a 16 códigos de operación. • Una solución utilizando los códigos expandibles, trata de incrementar el número de códigos de operación organizando el formato de las instrucciones basado en el tamaño de los operandos.
Solución utilizando la expansión de código • Instrucciones con tres operandos • Bits para el opcode: 12-15 • Rango del opcode: 0000 hasta 1110 • Número de instrucciones: 15 • Bits de datos: 0-11 • Instrucciones con dos operandos • Bits para el opcode: 8-15 • Rango del opcode: 1111 0000 hasta 1111 1110 • Número de instrucciones: 15 • Bits de datos: 0-7
Solución con la expansión del opcode • Instrucciones con un operando • Bits para el opcode: 4 - 15 • Rango del opcode: 1111 1111 hasta 1111 1111 1110 • Número de instrucciones: 15 • Bits de datos: 0-3 • Instrucciones sin operandos • Bits para el opcode: 0 - 15 • Rango del opcode: 1111 1111 1111 0000 hasta 1111 1111 1111 1111 • Número de instrucciones: 16 • Bits de datos: ninguno
Formato de instrucciones para PENTIUM II • Altamente complejas e irregulares • Espacios para seis variables, cinco de las cuales son opcionales • La complejidad e irregularidad es debida a la necesidad de mantener compatibilidad con la familia 80X86
Modelos de instrucciones • CISC (Complex Instruction Set Computer) • RISC (Reduced Instruction Set Computer) • CRISC (Complex Reduced Instruction Set Computer) • EPIC (Explicitly Parallel Instruction Computing )
CISC • Se enfatiza en hacer más en cada instrucción. • Motivado por el alto costo de la memoria y la capacidad de los discos duros. • Cuando se introdujo el M6800: 16K RAM = $500, 40M disco duro = $ 55, • Cuando se introdujo el MC68000: 64K RAM = $200, 10M HD = $5,000 • Gran variedad de modos de direccionamiento • 14 en el MC68000, 25 en MC68020 • Un número de modos de instrucciones para la posición y número de operandos. • El VAX tiene desde 0 hasta 3 instrucciones para direcciones. • Largo de las instrucciones variable.
RISC • Se enfatiza en reducir el número y la complejidad de las instrucciones. • CPI reducido. La meta por lo menos una instrucción por ciclo de reloj. • Diseñadas para una arquitectura de un procesador segmentado. • El largo de las instrucciones es el mismo. • Solo las instrucciones de cargue y almacene accesan la memoria. • Los modos de direccionamiento se han simplificado. • Generalmente limitado a: inmediato, indirecto por registro, desplazamiento con registro, indexado. • Las cargas y los saltos se retardo
EPIC • Pueden cambiar el número de canales que usan de generación en generación y aún conservar la compatibilidad con las aplicaciones existentes. • La información grabada en el grupo de instrucciones le dice explícitamente al procesador cuales de las instrucciones siguientes no tienen dependencia de los datos y por ende pueden ser ejecutadas simultáneamente.