Está en la página 1de 45

Arquitectura de Computadoras

Fac. de Ingeniera de Sistemas e Informtica U.N.M.S.M.

Introduccin: por qu?


Cambios vertiginosos:
Tubo de vaco -> transistor -> IC -> VLSI Se duplica cada 18 meses:
Capacidad de la memoria Velocidad del procesador (x avances en tecnologa y organizacin)

De que trata este curso:


Cmo funcionan los computadores? Ejemplos Cmo analizar la performance? Temas importantes para procesadores modernos Servidores, embedded processors, que es esto?

Introduccin: para qu?


Entender la performance para construir programas y sistemas Conocer alternativas de compra; asesoramiento experto Entender las tcnicas de diseo, estructuras de mquinas, factores tecnolgicos, mtodos de evaluacin que determinan el desarrollo actual de los computadores

Tecnologa Aplicaciones

Paralelismo

Lenguajes de Programacin
Diseo de las Interfaces (ISA)

Arquitectura del Computador: Diseo del Set de Instrucciones Organizacin Hardware

Sistemas Operativos

Medidas& Evaluacin

Historia

Qu es un computador? (i)
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 mirando qu hace cada transistor Necesitamos abstraccin

Qu es un computador? (ii)
Application
Operating System
Compiler
Instr. Set Proc.

Firmware
I/O system

Instruction Set Architecture

Datapath & Control


Digital Design Circuit Design

Arquitectura, qu es?

Layout

Coordinacin de niveles de abstraccin Sometida a un conjunto de estmulos cambiantes Diseo, Medida, Evaluacin

Abstraccin
Programa en C swap(int v[], int k) {int temp; temp=v[k]; v[k]=v[k+1]; v[k+1]=temp; } Programa en Assembler swap: muli $t1, $a1,4 add $t1, $a0,$t1 lw $t0, 0($t1) lw $t2, 4($t1) sw $t2, 0($t1) Programa en Lenguaje de mquina 00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000

Compilador de C (MIPS)

Ensamblador (MIPS)

Si se omiten detalles innecesarios podemos manejar la complejidad

sw $t0, 4($t1) jr $ra

Set de Instrucciones
(Instruction Set Architecture ISA)
Una abstraccin importante
interfaz entre el hardware y el software de bajo nivel Estandariza instrucciones, lenguaje de mquina ventaja: es posible tener diferentes implementaciones de la misma arquitectura desventaja: puede impedir innovaciones

ISAs de hoy en da:


80x86/Pentium/AMD(K6, K7), PowerPC, DEC Alpha, MIPS, SPARC, HP

Arquitectura & Organizacin (i)


Arquitectura: atributos visibles al programador
Set de instrucciones, tamao de palabra, mecanismos de E/S, tcnicas de direccionamiento.
Por ejemplo: existe la multiplicacin?

Organizacin: cmo se implementan las caractersticas de la arquitectura


Seales de control, interfaces, tecnologa de memoria.
Por ejemplo: la multiplicacin se hace en hardware o mediante microprogramacin (usando la suma)?

Arquitectura & Organizacin (ii)


Toda la familia Intel x86 comparte la misma arquitectura bsica Otro ejemplo: la familia IBM System/370 Esto permite compatibilidad del cdigo
(al menos hacia atrs)

La organizacin difiere entre distintas versiones

Visin funcional
Estructura: de qu manera los componentes se relacionan entre si? Funcionalidad: operacin individual de c/componente como parte de una estructura Funciones de un computador:
Procesamiento de datos Almacenamiento de datos Transferencia de datos Control

Operaciones (i)

(1) Transferencia de datos

(2) Almacenamiento de datos

Operaciones (ii)

(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

Input Output

Communication lines

Estructura: la CPU
CPU
Computer
I/O

Registers

Arithmetic and Login Unit

System CPU Bus Memory

Internal CPU Interconnection

Control Unit

Estructura: Unidad de Control


Control Unit
CPU
ALU
Control Unit

Sequencing Login
Control Unit Registers and Decoders

Internal Bus Registers

Control Memory

Historia:
Generaciones de Computadores
Tubos de vaco - 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


Over 100,000,000 transistores en un chip

Ley de Moore
Gordon Moore - cofundador de Intel:
La capacidad de integracin se duplica cada ao

Desde los 70s se enlentece:


Nmero de transistores se duplica cada 18 meses

Algunas consecuencias:
Costo x chip no ha cambiado -> costo de la lgica y memoria baja dramticamente Mayor densidad -> cables ms cortos, mayor performance de la interconexin Ms circuitos x chip -> menos interconexiones, mayor confiablilidad Menor tamao -> mayor flexibilidad (poder de cmputo de un celular?) Requerimientos de alimentacin y refrigeracin

Ley de Moore:
Transistores x CPU, familia Intel

Ley de Moore:
otra mirada
Bit-level parallelism 100,000,000 Instruction-level Thread-level (?)

10,000,000

R10000

1,000,000

Pentium
Transistors

i80386
100,000

i80286 R2000

R3000

i8086
10,000

i8080 i8008 i4004


1,000 1970

1975

1980

1985

1990

1995

2000

2005

Aumentando la velocidad
Algunas tcnicas para mantener la CPU trabajando siempre:
Pipelining On board cache On board L1 & L2 cache Branch prediction Data flow analysis Ejecucin especulativa

Problemas de Performance
Incremento en velocidad del Procesador Incremento en capacidad de memoria Velocidad de acceso a la memoria crece mucho menos!

Uso de memoria

Soluciones
Incrementar la cantidad de bits accedidos cada vez
DRAM ms ancha

Cambio de la interfaz de memoria


Cach

Reducir la frecuencia de acceso a memoria


Cachs ms complejas, cach en el chip

Incrementar el ancho de banda de la interconexin


Buses de alta velocidad Jerarqua de buses

Una familia exitosa:


Intel (i)
1971 - 4004
Primer microprocesador CPU en un solo chip 4 bit

En 1972 aparece el 8008


8 bit Ambos diseados para aplicaciones especficas

1974 - 8080
Primer procesador de propsito general de Intel Data path de 8 bits Usado en el primer personal computer: Altair

Una familia exitosa:


Intel (ii)
1978 8086 (1980 coproc. matemtico 8087)
Ms poderoso 16 bit Cach de instrucciones, prefetch de instrucciones 8088 (bus externo de 8 bits) usado en el primer IBM PC

1982 - 80286
16 Mbyte de memoria direccionable (antes 1Mb)

1985 - 80386
32 bit Soporte para multitarea

1989 - 80486
sofisticado cach y pipelining de instrucciones coprocesador matemtico integrado

Una familia exitosa:


Intel (iii)
Pentium
Superescalar Multiples instrucciones ejecutadas en paralelo

Pentium Pro
Mejora de la organizacin superescalar Renombrado agresivo de registros branch prediction data flow analysis Ejecucin especulativa

Pentium II
Tecnologa MMX Procesamiento de grficos, video & audio

Una familia exitosa:


Intel (iv)
Pentium III
Ms instrucciones de punto flotante para grficos 3D

Pentium 4
Ms 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 difcil de entender

Pero:
lo que le falta en estilo al 80x86 lo resuelve en cantidad!

Repaso de los cursos anteriores


Sistemas de Numeracin Representacin interna de datos lgebra de Boole Sistemas combinacionales Mquina de estados Sistemas secuenciales

Mquina 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 mquina 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.) Aritmtica Modificacin de direcciones

Concepto de Programa
Sistemas cableados son inflexibles Hardware de propsito general puede hacer diferente tareas, excitado con las seales de control correctas En lugar de re-cablear, un nuevo conjunto de seales de control Qu es un programa?
Secuencia de pasos Por cada paso se completa una operacin aritmtica o lgica Para cada operacin se necesita un conjunto particular de seales de control

Funciones de la Unidad de Control


Cada operacin se corresponde con un cdigo nico
Ej. ADD, MOVE

El hardware acepta el cdigo y genera las seales de control necesariastenemos un computador!

Componentes
La Unidad de Control y la Unidad Aritmtico-Lgica constituyen la Unidad Central de Proceso (CPU) Datos e instrucciones deben ingresar al sistema, y los resultados deben salir
Entrada/Salida

Almacenamiento temporal de cdigo y resultados


Memoria principal

Ciclo de Instruccin
Dos pasos:
Fetch Execute

Ciclo de Instrucciones
Diagrama de Estados

Interrupciones
Mecanismo que permite a mdulos de E/S interrumpir la secuencia normal de procesamiento Programa (secuencial)
Ej. overflow, division by zero

Timer
Generado por el timer interno del procesador Usado in pre-emptive multi-tasking

E/S
Provocada por el controlador de E/S

Fallo de Hardware
Ej. memory parity error

Ciclo de Interrupciones
Se agrega al ciclo de instruccin Procesador chequea por la interrupcin
Indicado por una seal de interrupcin

Si no hay interrupcin, fetch prxima instruccin Si hay una interrupcin pendiente:


Suspender ejecucin del programa corriente Salvar contexto Setear PC a direccin de arranque del handler de la interrupcin Procesar interrupcin Restaurar contexto y continuar programa interrumpido

Transferencia de Control via Interrupciones

Ciclo de Instruccin con Interrupciones

Ciclo de Instruccin con Interrupciones


Diagrama de Estados

Mltiples Interrupciones
Deshabilitar interrupciones
El procesador ignorar las interrupciones mientras se procesa otra interrupcin Las interrupciones quedan pendientes y son rechequeadas una vez que la primera interrupcin ha sido procesada Las interrupciones son manejadas en secuencia

Definir prioridades
Interrupciones de baja prioridad pueden ser interrumpidas por las de mayor prioridad Una vez que se ha procesado la interrupcin de mayor prioridad, se retorna a la interrupcin previa

Mltiples Interrupciones Secuencial

Mltiples Interrupciones Anidadas