Contenidos del Curso
Introducción Arquitectura de conjunto de instrucciones y
programación assembly Métricas de desempeño Arquitectura y organización de
procesadores Sistemas de Memoria Entrada/salida
Qué es un computador?
Computador es una máquina que ejecuta algoritmos expresados como un programa en lenguaje de máquina. Fundamentalmente, un circuito
secuencial sincrónico Problema a resolver Conjunto de algoritmos Algoritmos Programa en lenguaje de alto nivel (C, C+
+, Java, etc.) Programa lenguaje de alto nivel Programa lenguaje
de máquina
¿Por qué, para qué?
Especificar correctamente un equipo computacional dependiendo de requerimientos Tipo de aplicaciones que debe soportar Tipo y número de usuarios
Optimizar el desempeño de un programa en cualquier lenguaje
Diseñar sistemas digitales avanzados para aplicaciones de alto desempeño
La implementación de abstracciones es una de las bases de la ingeniería, y además es entretenido!
Organización de un Sistema computacional
Hardware y software
Datos y control Arquitectura de
conjunto de instrucciones (ISA)
CPU
Memoria
Módulosde
Salida
Secciónde
Datos
Sw
Secciónde
Control
Módulosde
Entrada Fwy
Hw
Compilador oIntérprete
Interfaz de SwI SA
Sistema Operativo
Aplicaciones
Arquitectura y organización de computadores
Consiste en el estudio de Estructura: Como se organizan los
componentes internos en forma estática Organización: Interacción dinámica entre
sus partes y el control involucrado Implementación: diseño de bloques
específicos Desempeño: estudio del comportamiento
del sistema o de sus componentes
EstructuraModelo de Von Neumann
Jerarquía
De Memoria
I/Ocontrol ALU
RegistrosPC
estado
Buses memoria
Buses Entrada/Salida
CPU: sección datos, control
+
Arquitectura de computadoresEnfoque ISA
ISA: Instrucción Set Architecture Arquitectura: interfaz entre niveles ISA interfaz entre HW y SW ISA es la parte visible al programador ISA consiste en:
Instrucciones (operaciones con su respectiva codificación) Formato de instrucciones Tipos de datos soportados por la arquitectura Modos de direccionamiento Unidades de información (tamaño, como se direccionan) Registros que representan el estado del procesador Control Entrada/Salida
Interfaz HW/SW
swap (int v[], int k){
int tmp;tmp=v[k];v[k]=v[k+1];v[k+1]=tmp;
}swap: muli $2,$5,4
add $2,$4,$2 lw $15,0($2) lw $16,4($2) sw $16,0($2) sw $15,4($2) jr $31
Compilador C
Ensamblador
000100 00101 00010 0000000000000100000000 00100 00010 00010 00000 000001100011 00010 01111 0000000000000000100011 00010 10000 0000000000000100101011 00010 10000 0000000000000000101011 00010 01111 0000000000000100000000 11111 00000 00000 00000 001000
Programa C
Programa Assembler
Programa Lenguaje Máquina
InstruccionesDirectas a la CPU
Ejemplo: ISA MIPS 3000 Localización de datos
Instrucciones operan con datos en registros internos
Instrucciones para mover datos entre memoria y registros
Tipos de instrucciones Load/store Lógica y aritmética entera Control de flujo (saltos) Punto flotante Excepciones
Tipos de datos Enteros complemento a 2 Punto flotante IEEE
R0 - R31
PC
HI
LO
Registros
Tres formatos de instrucciones: 32 bits
OP
OP
OP
rs rt rd sa funct
rs rt immediate
jump target
Organización
Implementación de la arquitectura Cuáles son los componentes básicos de un
computador y como se relacionan entre sí Componentes básicos de la CPU Componentes básicos de la jerarquía de
memoria Como están diseñados, controlados y
conectados los componentes básicos Organización utilizada en forma
transparente a la arquitectura ISA + Organización Desempeño
Historia
Generación 0: Dispositivos Mecánicos (1642 - 1945) Pascal (1642): suma y resta Von Leibniz (1672):
multiplicación y división Babbage (1792 - 1871):
máquina diferencial y máquina analítica
1930 - 1944: máquinas electromagnéticas, aritmética binaria, Aiken: Mark I y Mark II
Historia
Generación 1: Tubos de Vacío (1945 - 1955) ENIAC (1946):
18000 tubos 5000 sumas/segundo 1500 relés 30 toneladas 140 KWatts
EDSAC, JOHNIAC, ILLIAC, MANIAC, WEIZAC, EDVAC
IAS: originó la arquitectura de von Neumann. Programa representado
digitalmente, almacenado en memoria junto a datos
Organización de máquinas contemporáneas
Historia
Generación 2: Transistores (1955 - 1965) DEC PDP-1 (1961): 4 KB
memoria, 18 bits, 5 ms. IBM 7090, 7094: 32K memoria,
36 bits, 2 ms. IBM 1401 aplicaciones
comerciales 4 KB CDC 6600 (1964): alto
desempeño en aplicaciones numéricas paralelismo interno en CPU
Burroughs B5000: diseñada para facilitar tarea al compilador
Historia
Generación 3: Circuitos integrados (1965 - 1980) IBM/360: familia de
modelos compatibles (ISA diferente de implementación). Memoria de 250 nseg a 1 mseg, límite de 16 MB. Multiprogramación.
DEC PDP-11: minicomputador precio/desempeño
Historia
Generación 4: Circuitos VLSI (1980 - ????) PCs Workstations Mainframes Supercomputadores Redes de Computadores Sistemas portables
Historia
Qué viene ahora? portabilidad
extrema? Computación
distribuida? Grid Computing? Nuevos modelos
computacionales? Cuántica, DNA?
Desarrollo histórico de la tecnología
CPU Tubos al vacío
Transistores(on/off interruptor eléctrico)
Cirtuitos integrados(combina cientos de transistores en un chip)
VLSI(combina millones de transistores en un chip)
Memorias Tubos al vacío
Ferrite core Semiconductores(sustancia que no conduce bien la electricidad)
Semiconductores
Estructura CPU
Una CPU Mainframes Micros y minis Arq de 64 bits
Superescalares
Multihebras
Procesadores Dual core
Relación entre Estructuras
Referencia: DAP Spr. 1998 ©UCB
Cambiando un poco
Razones de cambio Avance tecnológico, costo, funcionalidad
Referencia: DAP Spr. 1998 ©UCB
Moore’s Law
The observation made in 1965 by Gordon Moore, co-founder of Intel, that the number of transistors per square inch on integrated circuits had doubled every year since the integrated circuit was invented. Moore predicted that this trend would continue for the foreseeable future. In subsequent years, the pace slowed down a bit, but data density has doubled approximately every 18 months, and this is the current definition of Moore's Law, which Moore himself has blessed. Most experts, including Moore himself, expect Moore's Law to hold for at least another two decades. Definición en: http://www.webopedia.com/
Referencia: Intel 2005 As of 2006, chip areas range from a few square mm to around 250 mm2, with up
to 1 million transistors per mm2 (wikipedia)
Tendencia en tecnología
Tendencia en velocidad de procesador intel
0
500
1000
1500
2000
2500
3000
3500
4000
1971 1974 1979 1982 1985 1989 1993 1997 1998 1999 2000 2001 2002 2003
Year
Sp
eed
(M
Hz)
Referencia: Universidad USA
Tendencia en Capacidad y velocidad de Memoria DRAM
Referencia: DAP Spr. 1998 ©UCB
Tecnología: avances dramáticos
Ley de Moore: desempeño se duplica cada 18 meses
DRAM
Year Size
1980 64 Kb
1983 256 Kb
1986 1 Mb
1989 4 Mb
1992 16 Mb
1996 64 Mb
2000 256 Mb
2002 1 Gb
uP-Name
Microprocessor Logic DensityDRAM chip capacity
i4004
i8086
i80386
Pentium
i80486
i80286
SU MIPS
R3010
R4400
R10000
1000
10000
100000
1000000
10000000
100000000
1965 1970 1975 1980 1985 1990 1995 2000 2005
Tra
nsis
tors
i80x86
M68K
MIPS
Alpha
Algunas compañías importantes
IBM 704, 709, 70xx etc.. De 1955 hasta 1965 360, 370, 43xx, 33xx De 1965 hasta ahora Power PC
DEC PDP-11, VAX De 1970 hasta 1985 Alpha (Compaq, HP) en años 1990
SUN Microsystems Sparc, Ultra Sparc desde 1985
Mips Silicon Graphics Mips 2000, 3000, 4400, 10000 desde 1985
Algunas compañías importantes
Intel Primeros microcomputadores 40xx in early 70’s x86 (086,…,486, Pentium, Pentium Pro, Pentium 3, Pentium 4)
desde 1980 IA-64 (Itanium) en 2001
AMD Opteron
The world’s highest performing 2P and 4P servers are now powered by AMD Opteron™ processors. Receive the performance and security benefits of 64-bit computing, while getting the best 32-bit performance available anywhere. http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8825,00.html
Athlon 64 bits. The FIRST Windows®-Compatible 64-bit PC Processor Turion 64 bits
Pentium 4 en CMOS 90nm
Más de 125.000.000 transistores
Velocidad de operación de 3.2GHz
Más de 1MByte de memoria cache en el chip
Consumo energía menor que 100W
Tamaño: 112 mm2
Precio inferior a US$200 permite su uso en computadores personales
Desempeño de procesadores se duplica consistentemente cada 18 meses (Ley de Moore)
Comparación: Xbox 360
Especificaciones técnicas CPU IBM con tres procesadores de 3.2GHz en
un solo chip 512MBytes de RAM Disco duro de 20GBytes Tarjeta gráfica ATI de 500MHz Lector de DVD Tarjeta de red inalámbrica incorporada Soporta televisión de alta definición
Precio: alrededor de US$400
¡Relación precio/desempeño ha mejorado en un factor de más de 8 órdenes de magnitud en los últimos 25 años!
Comparar con otra industria
RISC vs. CISC
CISC: Complex Instruction Set Computer Instrucciones poderosas ISA más cercana a operaciones de lenguajes de alto nivel Codificación variada de instrucciones, formatos complejos Instrucciones más poderosas, pero también más difíciles de implementar Ejemplos: VAX, Intel Pentium
RISC: Reduced Instruction Set Computer Instrucciones sencillas ALU sólo opera con operandos en registros Codificación sencilla, pocos formatos Únicas instrucciones que accesan la memoria son load/store Más fácil de implementar más rápido Optimizaciones de código a cargo del compilador Ejemplos: MIPS, PowerPC, Alpha
Registros
Son las unidades básicas de almacenamiento en la CPU
Son parte esencial de la arquitectura Puente entre HW y programador
Son las unidades que proporcionan mayor velocidad de acceso en la CPU
Normalmente número de registros es reducido en la arquitectura (típicamente 32 o 64) por lo tanto fáciles de identificar
También se usan para direccionar la memoria
Registros
No todos son iguales en términos de funcionalidad Algunos son de propósito específico
Ejemplos: PC (Contador de programas), estado (almacena estado de CPU)
Algunos son usados para operaciones enteras y otros para operaciones de punto flotante
Por qué tipicamente 32 o 64 Codificación para direccionamiento de registros
requiere mas HW (más líneas para direccioarlos)
Almacenamiento
Sistema de almacenamiento definido mediante jerarquía de memoria Registros Caches (dentro y fuera del chip) Memoria principal (DRAM) Memoria secundaria (disco)
Unidades de información
Bit: Unidad básica Bits: Agrupados para formar otras
unidades Byte: 8 bits Word: 16 bits Double word: 32 bits
Direccionamiento a Memoria
Memoria, arreglo de unidades de información Cada unidad tiene el mismo tamaño Cada unidad tiene su propia dirección Direcciones y contenido de unidades son distintas
-128
0
20
0
1
2
direcciones contenidos
Direccionamiento
En la mayoría de los computadores modernos, la unidad básica de direccionamiento es el byte MIPS
Espacio de direccionamiento de un proceso es el conjunto de todas las unidades que un programa puede direccionar El espacio de direccionamiento está ligado al largo de los
registros MIPS tiene registros de 32 bits. Por lo tanto su espacio de
direccionamiento es 2^32 : 4GB Procesadores mas antiguos tenían 16 bits, 2^16 : 64KB Algunos procesadores actuales (Alpha, Itanium, Sparc,
Althon) tienen 64 bits, 2^64 :
Direccionando words
A pesar que memorias son direccionables al byte, lo que mas se usa como unidad de almacenamiento es la word
Cada word comienza en una dirección divisible por cuatro
04812
Big-endian vs little-endian
Orden de bytes en una word
0123 Little-endian,MIPS
310 2 Big-endian
Qué es una instrucción?
Comando que le dice a la CPU que operación realizar Mediante código de operación
Todas las instrucciones están codificadas Donde se encuentran los operandos necesarios para ejecutar la
operación ISA de una instrucción especifica
Código de operación Cuántos operandos son necesarios, tipos, tamaños, ubicación
Operandos Registros (enteros, punto flotante, PC) Dirección de memoria Constantes
Ejecución de instrucción de máquina
CPU ejecuta instrucciones de un programa ciclo
Instrucciones especifican operaciones sobre operandos y generan resultados
Datos pueden encontrarse en memoria (RAM, ROM) o en registros internos al procesador
Instrucciones pueden también modificar el flujo de control (saltos, llamadas a procedimiento)
Instrucciones pueden crear excepciones
LeerInstrucción
Decodificar
LeerOperandos
EjecutarInstrucción
AlmacenarResultados
Cálculo SgteInstrucción