Arquitectura de Computadores II Clase #1 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010
Aspectos administrativos: quiénes, cuándo? Docentes Eduardo Grampín Álvaro Martín Luis Michelena Matías Richart Juan Saavedra Gonzalo Tejera Teórico Miércoles y Viernes de 8:00 a 10:30 hs. Salón A12 Taller Lunes de 16 a 18 hs. Salón A21
Aspectos administrativos: laboratorios Microarquitectura MIC-1 Presentación: clase del 18/8/2010 Entrega: 12/9/2010 Arquitectura Intel IA-32 Presentación: clase del 8/10/2010 Entrega: 7/11/2010
Recursos Página web http://www.fing.edu.uy/inco/cursos/arqsis2/ Newsgroup fing.cursos.arqsis2 Bibliografía William Stallings, Computer Organization and Architecture 5th Edition, Prentice Hall, 2000, ISBN: 0130812943. J. L. Hennessy and D. A. Patterson, Computer Architecture: A Quantitative Approach, 3rd Edition, Morgan Kaufmann Publishing Co., 2002, ISBN: 1558607242 Andrew S. Tanenbaum, Structured Computer Organization 4th Edition, Prentice Hall, 1998, ISBN: 0130959901.
Veremos Introducción, por qué estudiar la arquitectura del computador? Definición de Arquitectura, Organización e Implementación Perspectiva histórica:mejorando la performance. La máquina de von Neumann
Por qué estudiar esto? (1/3) Cambios vertiginosos: Tubo de vacío -> transistor -> IC -> VLSI Se duplica cada 18 meses: Capacidad de la memoria Velocidad del procesador (x avances en tecnología y organización) De que trata este curso: Cómo funcionan los computadores? Ejemplos Cómo analizar la performance? Temas importantes para procesadores modernos Servidores, sistemas embebidos, que es esto?
Por qué estudiar esto? (2/3) Las computadores le dan sentido práctico a la Ciencia de la computación. Considerar el computador como caja negra es riesgoso Programas eficientes en diferentes arquitecturas? Qué sistema elegir? Servidores? Performance? Y si tuviera que implementar un sistema embebido? Es importante conocer la relación entre lenguajes de alto y bajo nivel y su relación con el hardware La arquitectura soporta el sistema operativo y los lenguajes de programación Más vale conocerla!
Por qué estudiar esto? (3/3) Entender los factores que influyen sobre la performance para construir programas y sistemas Conocer alternativas de compra; asesoramiento experto Entender las técnicas de diseño, estructuras de máquinas, factores tecnológicos, métodos de evaluación que determinan el desarrollo actual de los computadores Aplicaciones Tecnología Paralelismo Arquitectura del Computador: Diseño del Set de Instrucciones Organización Hardware Lenguajes de Programación Diseño de las Interfaces (ISA) Sistemas Operativos Medidas& Evaluación Historia
Qué es un computador? (1/2) Componentes: entrada (mouse, teclado) salida (monitor, impresora) memoria (discos duros, DRAM, SRAM, CD) red Nos centraremos en el procesador (datapath y control) Implementado con millones de transistores Imposible de entender analizando qué hace cada transistor Necesitamos abstracción
Qué es un computador? (2/2) Arquitectura, qué es? Application Compiler Instr. Set Proc. Operating System Digital Design Circuit Design Firmware I/O system Datapath & Control Layout Coordinación de niveles de abstracción Sometida a un conjunto de estímulos cambiantes Instruction Set Architecture
Abstracción Programa en C swap(int v[], int k) {int temp; } temp=v[k]; v[k]=v[k+1]; v[k+1]=temp; Abstracción permite manejar la complejidad Compilador de C (MIPS) Programa en Assembler swap: Ensamblador (MIPS) muli $t1, $a1,4 add $t1, $a0,$t1 lw $t0, 0($t1) Programa en Lenguaje de máquina lw $t2, 4($t1) 00000000101000010000000000011000 sw $t2, 0($t1) 00000000100011100001100000100001 sw $t0, 4($t1) 10001100011000100000000000000000 jr $ra 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000
Arquitectura del Computador Instruction Set Architecture (IBM 360) atributos de un sistema [computacional] visto por el programador/compilador. Es decir, la estructura conceptual y el comportamiento funcional, a diferencia de la organización del flujo de datos y el control, el diseño lógico y la implementación física. -- Amdahl, Blaaw, & Brooks, 1964 Códigos de operación, modos de direccionamiento, registros enteros y de punto flotante Organización (microarquitectura) Visión del diseñador del procesador/sistema: ALUs y otras unidades funcionales, pipelines, caches, registros físicos, buses, memorias, etc Implementación Compuertas, transistores, pistas
Qué temas se resuelven en cada nivel? Arquitectura: atributos visibles al programador Set de instrucciones, tamaño de palabra, mecanismos de E/S, técnicas de direccionamiento. Por ejemplo: existe la multiplicación? Organización: cómo se implementan las características de la arquitectura Señales de control, interfaces, tecnología de memoria. Por ejemplo: la multiplicación se hace en hardware o mediante microprogramación (usando la suma)? Implementación: diseño físico, eléctrico, mecánico Cuantas capas tiene la placa madre? Circuitería extra en un solo integrado?
Set de Instrucciones (Instruction Set Architecture ISA) Una abstracción importante interfaz entre el hardware y el software de bajo nivel Estandariza instrucciones, lenguaje de máquina ventaja: es posible tener diferentes implementaciones de la misma arquitectura desventaja: puede impedir innovaciones Ejemplos: x86, x86-64 (AMD/Intel), IA-64 (Itanium), SPARC, PowerPC, MIPS, la familia IBM System/370 Compatibilidad del código (al menos hacia atrás) La organización difiere entre distintas versiones
Estructura y funcionamiento Estructura: de qué manera los componentes se relacionan entre si? Funcionalidad: operación individual de c/componente como parte de una estructura
Visión funcional Funciones de un computador: Procesamiento de datos Almacenamiento de datos Transferencia de datos Control
Operaciones (1/2) (1) Transferencia de datos (2) Almacenamiento de datos
Operaciones (2/2) (3) Procesamiento desde/hacia almacenamiento (4) Procesamiento desde almacenamiento a E/S
Estructura: alto nivel Peripherals Computer Central Processing Unit Main Memory Computer Systems Interconnection Communication lines Input Output
Estructura: la CPU CPU I/O Computer System Bus Memory CPU Registers Internal CPU Interconnection Arithmetic and Login Unit Control Unit
Estructura: Unidad de Control Control Unit ALU CPU Internal Bus Registers Control Unit Sequencing Login Control Unit Registers and Decoders Control Memory
Historia: Generaciones de Computadores Tubos de vacío - 1946-1957 Transistores - 1958-1964 Small scale integration - 1965 en adelante Hasta 100 transistores en un chip Medium scale integration - hacia 1971 100-3,000 transistores en un chip Large scale integration - 1971-1977 3,000-100,000 transistores en un chip Very large scale integration - 1978 a la fecha 100,000-100,000,000 transistores en un chip Ultra large scale integration Más de 100,000,000 transistores en un chip
Ley de Moore Gordon Moore - cofundador de Intel: La capacidad de integración se duplica cada año Desde los 70 s se enlentece : Número de transistores se duplica cada 18 meses Algunas consecuencias: Costo x chip no ha cambiado -> costo de la lógica y memoria baja dramáticamente Mayor densidad -> cables más cortos, mayor performance de la interconexión Más circuitos x chip -> menos interconexiones, mayor confiablilidad Menor tamaño -> mayor flexibilidad (poder de cómputo de un celular?) Requerimientos de alimentación y refrigeración
Ley de Moore: Transistores x CPU, familia Intel
Ley de Moore: otra mirada 100,000,000 Bit-level parallelism Instruction-level Thread-level (?) Transistors 10,000,000 1,000,000 100,000 i80286 R10000 Pentium i80386 R2000 R3000 i8086 10,000 i8080 i8008 i4004 1,000 1970 1975 1980 1985 1990 1995 2000 2005
Aumentando la velocidad Algunas técnicas para mantener la CPU trabajando siempre: Pipelining On board cache On board L1 & L2 cache Branch prediction Data flow analysis Ejecución especulativa
Problemas de Performance Incremento en velocidad del Procesador Incremento en capacidad de memoria Velocidad de acceso a la memoria crece mucho menos!
Performance: Memoria vs. Lógica (CPU)
Uso de memoria
Soluciones Incrementar la cantidad de bits accedidos cada vez DRAM más ancha Cambio de la interfaz de memoria Caché Reducir la frecuencia de acceso a memoria Cachés más complejas, caché en el chip Incrementar el ancho de banda de la interconexión Buses de alta velocidad Jerarquía de buses
Una familia exitosa: Intel (1/4) 1971-4004 Primer microprocesador CPU en un solo chip 4 bits En 1972 aparece el 8008 8 bits Ambos diseñados para aplicaciones específicas 1974-8080 Primer procesador de propósito general de Intel Data path de 8 bits Usado en el primer personal computer : Altair
Una familia exitosa: Intel (2/4) 1978 8086 (1980 coproc. matemático 8087) Más poderoso 16 bits Caché de instrucciones, prefetch de instrucciones 8088 (bus externo de 8 bits) usado en el primer IBM PC 1982-80286 16 Mbytes de memoria direccionable (antes 1Mb) 1985-80386 32 bits Soporte para multitarea 1989-80486 sofisticado caché y pipelining de instrucciones coprocesador matemático integrado
Una familia exitosa: Intel (3/4) Pentium Superescalar Múltiples instrucciones ejecutadas en paralelo Pentium Pro Mejora de la organización superescalar Renombrado agresivo de registros branch prediction data flow analysis Ejecución especulativa Pentium II Tecnología MMX Procesamiento de gráficos, video & audio
Una familia exitosa: Intel (4/4) Pentium III Más instrucciones de punto flotante para gráficos 3D Pentium 4 Más mejoras de punto flotante y multimedia Itanium 64 bit Arquitectura nueva! Se dice la arquitectura Intel está esposada por la necesidad de retrocompatibilidad es una arquitectura difícil de entender Pero: sigue evolucionando y se sigue usando. Demostración: x86-64
Repaso del curso anterior Sistemas de Numeración Representación interna de datos Tipos de datos Álgebra de Boole Combinatoria Máquina de estados Sistemas secuenciales Máquina lógica general Interrupciones
Curso anterior -> este curso: Máquina de von Neumann Concepto de Programa Almacenado Memoria principal almacena programas y datos ALU opera con datos binarios La unidad de control manda a ejecutar las instrucciones almacenadas en memoria Dispositivos de Entrada/Salida operados por la unidad de control Se completó en 1952 en el Princeton Institute for Advanced Studies Se denominó IAS
Estructura de la máquina de von Neumann
Estructura en detalle de la IAS Palabra de 40 bits: Entero con signo 2 instrucciones de 20 bits por palabra Instrucciones: Transferencia de datos Saltos (Cond. e Incond.) Aritmética Modificación de direcciones
Concepto de Programa Sistemas cableados son inflexibles Hardware de propósito general puede hacer diferente tareas, excitado con las señales de control correctas En lugar de re-cablear, un nuevo conjunto de señales de control Qué es un programa? Secuencia de pasos Por cada paso se completa una operación aritmética o lógica Para cada operación se necesita un conjunto particular de señales de control
Funciones de la Unidad de Control Cada operación se corresponde con un código único Ej. ADD, MOVE El hardware acepta el código y genera las señales de control necesarias tenemos un computador!
Componentes La Unidad de Control y la Unidad Aritmético-Lógica constituyen la Unidad Central de Proceso (CPU) Datos e instrucciones deben ingresar al sistema, y los resultados deben salir Entrada/Salida Almacenamiento temporal de código y resultados Memoria principal
Preguntas?