Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Estructura de un computador que el programador en lenguaje mquina debe conocer si quiere escribir un programa correcto para dicho computador
Bsicamente: Registros y memoria Conjunto de instrucciones y su formato Modos de direccionamiento Codificacin de las instrucciones No considera la forma en que se implementan las instrucciones
multinivel jerrquica:
El tercer nivel se corresponde con el de Amdahl. El cuarto nivel trata sobre las interconexiones entre el procesador, la memoria y el resto de elementos del sistema
3
Especificacin funcional (cmo se va a trabajar) Implementacin hardware (cmo est construido) (Sima, 1977):
Equivalentemente
(Dasgupta, 1981):
Una arquitectura se define mediante diferentes niveles de abstraccin. En cada nivel se especificar:
Modelo computacional
Von Neumann, Reduccin, Flujo de datos. Cmo interacta con el medio? Cmo se relaciona para procesar la informacin? Tipos de datos y operaciones disponibles
Generalmente, se aceptan diversas generaciones de ordenadores. Causas fsicas: evolucin de los componentes (rels, vlvulas de vaco, transistores, circuitos integrados, VLSI. ) Causas no fsicas: reorganizacin de los componentes del ordenador (interconexiones y lgica de funcionamiento).
1 Generacin (1938-1953):
Primer computador analgico: 1938 Primer computador digital electrnico: 1946 (ENIAC) Dispositivos de conmutacin: paso de rels a vlvulas de vaco. Componentes hardware muy caros Operaciones en CPU bit a bit (en serie) Lenguaje de programacin: cdigo mquina binario Primer programa almacenado (1950)
2 Generacin (1952-1963):
Primer computador con transistores: 1954 Memorias de ferrita Primeros lenguajes de alto nivel: FORTRAN y ALGOL Primeros ordenadores con mejoras en arquitectura: LARC (1959), con E/S independiente de otras unidades de proceso Forma normal de trabajo: procesamiento por lotes, donde los programas se ejecutan secuencialmente, uno cada vez y de principio a fin.
3 Generacin (1962-1975):
Circuitos integrados de pequea y mediana escala de integracin. Memorias de estado slido (abaratamiento de memoria) Programas ms grandes Introduccin a la multiprogramacin, con el propsito de permitir la ejecucin de mltiples segmentos de programa intercalados con operaciones de E/S Primeros procesadores vectoriales Introduccin a la memoria virtual
4 Generacin (1972-):
Circuitos VLSI (reduccin de tamaos y costes) Ampliacin de los lenguajes de alto nivel, para considerar a un tiempo datos escalares y vectoriales La mayora de los sistemas operativos son de tiempo compartido y emplean memoria virtual. Compiladores con capacidad de vectorizacin Procesadores moleculares Lenguajes de cada vez ms alto nivel (casi lenguaje natural)
10
Futuro
Procesamiento de datos Procesamiento de la informacin (no slo los datos, sino la forma en que se organizan) Procesamiento del conocimiento (conclusiones extraidas de la informacin) Procesamiento de la inteligencia (sistemas de razonamiento basados en el conocimiento)
11
Modelo Computacional:
Computacin basada en los datos Los datos son entidades identificables y distinguibles Un problema se soluciona mediante una secuencia de instrucciones que modifican los datos. Lenguajes imperativos (C, Pascal, Fortran,) Las instrucciones se ejecutan, por defecto, secuencialmente, aunque puede saltarse de un punto a otro del cdigo.
Modelo de ejecucin:
12
Funcional
Basado en el procesamiento Definicin formal del planteamiento del problema Recursivo
13
Por qu tantas arquitecturas y diseos diferentes? Todas las arquitecturas valen para lo mismo? Cmo evaluar el rendimiento? Cmo influye el coste al disear un equipo? Va igual de rpido un Pentium 1.8 GHz que un Athlon 1.8 GHz?
14
El tiempo es la medida del rendimiento del computador: el computador que realiza la misma cantidad de trabajo en el mnimo tiempo es el ms rpido. El tiempo de ejecucin de un programa se mide en
15
Los procesadores utilizan un reloj que funciona a una frecuencia constante. Estos eventos se denominan ciclos de reloj. Los diseadores de computadores referencian el tiempo de un ciclo de reloj por su duracin (p.ej. 10 ns) o por su frecuencia (p.ej. 100Mhz) El Tiempo de CPU se puede expresar como
TCPU=(Ciclos de reloj de CPU para un programa)x(Duracin del ciclo de reloj) TCPU=(Ciclos de reloj de CPU para un programa) / (Frecuencia de reloj)
16
Sabiendo el nmero de instrucciones ejecutadas (NI) y el nmero de ciclos de reloj, podemos calcular el nmero medio de Ciclos por Instruccin: CPI=Ciclos de reloj de CPU para un programa / NI Esta medida sirve para comparar entre distintos repertorios de instrucciones.
17
Trasponiendo la expresin anterior: TCPU=NI x CPI x (Duracin del ciclo de reloj) TCPU=NI x CPI / (Frecuencia de reloj)
El rendimiento de la CPU depende de:
Frecuencia de reloj: Tecnologa hardware y organizacin CPI: Organizacin y arquitectura a nivel lenguaje mquina NI:Arquitectura a nivel leguaje mquina y bondad del compilador
18
Rendimiento de la CPU
A veces es til, al disear la CPU, calcular el nmero total de ciclos de reloj de la CPU como: Ciclos de Reloj de la CPU= Donde Ii representa el nmero de veces que se ejecuta la instruccin i en un programa, y CPIi representa el nmero medio de ciclos de reloj para la instruccin i. Por tanto, el tiempo de CPU se puede expresar como: TCPU=
(CPI xI
i i=1
19
CPU A. Una instruccin de comparacin inicializa un cdigo de condicin y es seguida por un salto que examina el cdigo de condicin CPU B: Se incluye una comparacin en el salto
En ambas CPU, la instruccin de salto condicional emplea 2 ciclos de reloj y las dems instrucciones 1. En la CPU A, el 20% de todas las instrucciones ejecutadas son saltos condicionales; como cada salto necesita una comparacin, otro 20% de las instrucciones son comparaciones. Debido a que la CPU A no incluye la comparacin en el salto, su ciclo de reloj es un 20% ms rpido que el de la CPU B. Qu CPU es ms rpida? Y si conseguimos que la duracin de los ciclos de reloj de B se reduzca en un 10%?
20
Solucin Ejemplo 1
Las comparaciones no se ejecutan en la CPU B por lo tanto 20/80, es decir, un 25% de las instrucciones ahora son bifurcaciones con 2 ciclos de reloj y el 75% restante sern operaciones de 1 ciclo de reloj. Adems, el ciclo de reloj de la CPU en A es un 25% ms rpido que el ciclo en la CPU B y por lo tanto TCiclo = 1,25 * TCiclo
B A
Completando: Resumiendo: La CPU A es ms rpida que la CPU B aunque tenga un nmero menor de instrucciones
21
Solucin Ejemplo1
22
Una mquina, inicialmente, slo tiene instrucciones de carga y de almacenamiento en memoria y, despus, todas las operaciones se realizan en los registros. Las medidas son:
OPERACIN Ops ALU Cargas Almacenamientos Saltos FRECUENCIA 43% 21% 12% 24% CICLOS DE RELOJ 1 2 2 2
Supongamos que el 25% de las ops. de la ALU usan directamente un operando cargado que no se utiliza de nuevo Proponemos aadir instrucciones ALU que tengan un operando fuente en memoria, que usan 2 ciclos de reloj. Supongamos que el repertorio extendido de instrucciones incrementa en 1 el nmero de ciclos para los saltos. Mejorar el rendimiento de la CPU?
23
Solucin Ejemplo 2
( 0 , 21 0 , 25 * 0 , 43 ) * 2 + 0 ,12 * 2 + 0 , 24 * 3 = 1 , 908 1 ( 0 , 25 * 0 , 43 )
Y por tanto
Lo que nos dice que la respuesta es no, es una mala decisin agregar nuevas instrucciones a esta computadora
24
La nica medida fiable del rendimiento es el tiempo de ejecucin de los programas reales. Otras medidas, utilizadas principalmente por las casas comerciales:
Dependen del repertorio de instrucciones Varan entre programas en el mismo computador Pueden variar inversamente al rendimiento!. Ej: operaciones coma flotante por hardware. Utilizar MIPS relativos a una mquina de referencia MIPS relativos= (Tr/Tt) x MIPSr (Tr=Tiempo en la mquina de referencia, Tr=Tiempo en la mquina que se testea, MIPSr=MIPS en la mquina de referencia)
Posible solucin:
25
(X)
Supongamos que construimos un compilador optimizado para la mquina del ejemplo anterior. El compilador descarta el 50% de las instrucciones de la ALU, aunque no pueda reducir cargas, almacenamientos, ni saltos. Ignorando las prestaciones del sistema, y suponiendo una duracin del ciclo de reloj de 20ns (frecuencia 50MHz), Cul es la frecuencia en MIPS para el cdigo optimizado frente al cdigo sin optimizar? Y el tiempo de CPU optimizada?
26
Y por tanto el rendimiento es TCPU Original = InstruccionesOriginal *1,57 * (20 *10 9 ) = Y el optimizado:
TCPU =0,785 InstruccioOriginal 1,73 2*10 9*= 272*10 9 *InstruccioOriginale * nes * * , nes Opt
Por tanto, el cdigo optimizado es el 13% ms rpido pero su frecuencia en MIPS es inferior
27
(XI)
MFLOPS es una medida similar a las MIPS, pero cindose slo a las operaciones en coma flotante. MFLOPS= (N operaciones de punto flotante de un programa)/(Tejecucin x 106) Evidentemente, dependen del programa y de la mquina. El trmino MFLOPS habla de operaciones, no de instrucciones. Supuestamente debera dar igual en todas las mquinas, pero no: Cray-2 no tiene instruccin de dividir Motorola 68882 tiene divisin, raz cuadrada, seno y coseno No todas las operaciones en punto flotante tardan lo mismo Solucin: definicin de benchmarks y utilizar MFLOPS normalizados
28
El programa Spice se ejecuta en la DECstation 3100 en 94 segundos. El nmero de operaciones de punto flotante ejecutadas en ese programa se indica a continuacin: Operaciones reales PF Operaciones normalizadas PF ADDD 25 999 440 ADD, SUB, COMPARE, MULT 1 SUBD 18 266 439 DIVIDE, SQRT 4 MULD 33 880 810 EXP, SIN 8 DIVD 15 682 333 COMPARED 9 745 930 Operaciones en PF reales frente NEGD 2 617 846 a las normalizadas ABSD 2 195 930 CONVERTD 1 581 450 TOTAL 109 970 178 Calcular MFLOPS nativos y MFLOPS normalizados, haciendo uso de la tabla adjunta
29
MFLOPS Nativos
Y los MFLOPS normalizados se diferencian solamente en las operaciones de dividir que se elevan en casi un 50%, haciendo 110M 15,6+15,6*4 son aproximadamente 157M
MFLOPS Norm
30
Ley de Amdahl
La ganancia de rendimiento que se puede obtener con la mejora de una parte de un ordenador se puede calcular con la Ley de Amdahl:
Ganancia de Velocidad=Sp=Vp/Vb=Tb/Tp
Vp=Velocidad de la mquina con una mejora de P Vb=Velocidad de la mquina base Tp=Tiempo de ejecucin en la mquina mejorada Tb=Tiempo de ejecucin en la mquina base
31
Ley de Amdahl
La ley de Amdahl nos permite calcular rpidamente la ganancia de velocidad (Sp), que depende de: f: Fraccin del tiempo de clculo de la mquina original en que
puede utilizarse la mejora (0<=f<=1) p: Incremento de velocidad que podra conseguirse si se pudiese utilizar la mejora todo el tiempo (p>1)
Sp =
1 (1 f)+ f / p
32
Supongamos que estamos considerando la mejora de un procesador de un servidor web. La nueva CPU es 10 veces ms rpida que la original. Suponiendo que la mquina original est un 40% del tiempo haciendo clculos, y un 60% con operaciones de E/S, Cul es la mejora de velocidad que se obtiene?
S=
1 (1 0,4) + 0,4 10
= 1,56
33
Supongamos que la funcin FPSQR (raz cuadrada en coma flotante) supone un 20% del tiempo de ejecucin en un programa grfico. Una propuesta para mejorar el hardware sobre el que se ejecuta es mejorar esta operacin en un factor de 10. Otra posibilidad es mejorar todas las operaciones de coma flotante (FP suponen el 50% del total del tiempo de ejecucin) hacindolas un 1.6 ms rpidas. Qu opcin es mejor? A) B)
S= 1 0,2 (1 0,2) + 10 = 1,22
S=
= 1,23
34
Programa:
Para el programador: Conjunto ordenado de instrucciones. Para el S.O: Fichero ejecutable en memoria externa
Hebra: Secuencia de instrucciones que se crea y pertenece a un proceso concreto. Todas las hebras creadas en un proceso comparten los recursos, en concreto el espacio de memoria
Tarea: Trmino usado en los SO antiguos (DOS, MVT) para definir los procesos. No implica ningn tipo de reserva de memoria ni gestin de concurrencia (no lo permitan los SO).
OS/2, WinNT utilizaban hebras Una hebra puede estar ejecutndose, preparada para ejecutarse o bloqueada.
35
Ejecucin concurrente: es el comportamiento temporal del modelo 1 servidor-N clientes. Es secuencial si lo miramos en un instante pequeo de tiempo pero simultneo si lo vemos con una perspectiva temporal ms amplia
Cuestin a resolver: cmo los clientes acceden a los recursos del servidor de una manera eficiente y justa.
Tiempo compartido: ninguna tarea se apropia del servidor, sino que este
Ejecucin paralela: Corresponde con el modelo N Clientes N Servidores. Esto permite estar trabajando a la vez con ms de un cliente (proceso o hebras) a la vez.
Debe haber mecanismos para la gestin de los recursos compartidos (memoria, dispositivos).
36
1.
Niveles de paralelismo A nivel de instruccin (fine-grained) A nivel de bucle (middle-grained) A nivel de procedimiento (middle-grained) A nivel de programa (coarse-grained) Los niveles 1 a 3 se pueden explotar mediante la arquitectura de la mquina Los niveles 2 a 4 se pueden explotar mediante el sistema operativo
37
Posibilidad 1 (multiprocesador)
for all EPi (i:=1 to 64) do begin C[i]:=A[i]+B[i]; F[i]:=D[i]-E[i]; G[i]:=K[i]*H[i]; end;
38
Utilizacin del paralelismo funcional A nivel de instruccin. Arquitecturas ILP (Instruction Level Parallel)
ejecutadas concurrentemente en un mismo procesador bajo la gestin del SO. Multitarea: Ejecucin concurrente de procesos. Multiprogramacin: Utilizacin efectiva del procesador por varios procesos correspondientes a varios usuarios (internamente es una multitarea). Si un proceso se bloquea, entonces otro se comienza a ejecutar. Tiempo compartido: No espera a que un proceso se bloquee para ejecutar otro, sino que asigna a cada uno un espacio de tiempo dependiendo de varios factores.
Multihebra: Para cada proceso se pueden generar varias hebras que son
39
Taxonoma de Flynn
Se basa en el nmero de unidades de control y de procesadores disponibles en el computador Introdujo las nociones de:
Flujo de instrucciones simple (SI): La arquitectura tiene una nica unidad de control que produce un nico flujo de instrucciones Flujo de instrucciones mltiple (MI): La arquitectura tiene mltiple unidades de control, cada una produciendo un flujo distinto de instrucciones Flujo de datos simple (SD): Slo hay un procesador que ejecuta un nico flujo de datos Flujo de datos mltiple (MD): Hay varios procesadores, cada uno de ellos ejecutando un flujo de datos distinto.
40
datos distintos. Cada procesador tiene su propia memoria de datos, pero la memoria para almacenar las instrucciones y la unidad de control son nicas. Ej: procesadores vectoriales MISD. No se ha construido ninguna arquitectura comercial. MIMD. Cada procesador coge sus instrucciones y opera con sus propios datos
Taxonomia de Flynn SISD SIMD MIMD Multiprocesadores Multicomputadores Clusters Paralelismo funcional Proc. Segmentados Proc. Superescalares Proc. VLIW Proc. Vectoriales Proc. Matriciales Proc. Sistlicos Paralelismo de datos
SISD . Los sistemas monoprocesadores SIMD. La misma instruccin se ejecuta en varios procesadores sobre
41
SISD
Representa a la mayoria de los ordenadores actuales. Las instrucciones se ejecutan secuencialmente, aunque pueden estar solapadas sus etapas de ejecucin. Un computador SISD puede tener ms de una unidad funcional, aunque todas bajo la supervisin de una nica unidad de control.
42
SIMD
Se corresponde con los ordenadores matriciales. Hay mltiples unidades de proceso, supervisadas por una nica unidad de control. Todos los procesadores reciben la misma instruccin, pero cada uno opera sobre datos distintos.
43
MISD
Hay n procesadores, cada uno recibe una instruccin diferente pero operan sobre el mismo conjunto de datos. La salida de un procesador es la entrada del siguiente. No hay ninguna mquina que la siga.
44
MIMD
Sistemas multiprocesadores. Una memoria compartida entre n elementos de proceso. Sistemas multicomputador. Memoria distribuida.
45
Los sistemas monoprocesador se basan en la arquitectura Von Neumann. Formas de dotar paralelismo:
Multiplicidad de unidades funcionales Segmentacin encauzada (pipelining) Solapamiento de operaciones de E/S y CPU Uso de sistemas jerrquicos de memoria Equilibrado de los ancho de banda de los subsistemas Multiprogramacin y tiempo compartido
46
Actualmente, casi todos tienen mltiples unidades funcionales. Fases de ejecucin de una instruccin
Segmentacin encauzada
Estas etapas se ejecutan una tras otra Se puede estar a la vez ejecutando distintas instrucciones, pero cada una estar en una etapa distinta
47
Las operaciones de E/S son mucho ms lenta que los clculos (dependen del dispositivo) Por qu tener el procesador parado esperando a que responda el dispositivo? Uso de controladores de E/S Descarga CPU El DMA puede utilizarse para transmitir directamente la informacin desde los dispositivos de E/S hasta la memoria del sistema. De esta gestin se encarga el SO
48
La memoria se divide en niveles jerrquicos Debido a las propiedades de localidad espacial y temporal, se puede hacer uso de memorias ms pequeas pero ms rpidas entre el procesador y la memoria principal.
Localidad espacial: la siguiente instruccin suele estar cerca Localidad temporal: la siguiente instruccin suele haberse ejecutado hace poco
49
En general, la CPU es la unidad ms rpida, con un tiempo de ciclo Tp. El tiempo de ciclo de memoria se denota por Tm Los dispositivos de E/S son los ms lentos, y en general se denomina Tes Se cumple por tanto la siguiente relacin:
Tes>Tm>Tp
Nmero de operaciones que se pueden realizar por unidad de tiempo. Nmero de palabras que se pueden acceder por unidad de tiempo Nmero de bytes que se pueden acceder por unidad de tiempo
50
Tcnicas de equilibrado:
Multiprogramacin: Usar las operaciones de E/S de un proceso para ejecutar otro (siempre que no se pisen recursos) Tiempo compartido: Evitar que un proceso monopolice el procesador (p.ej. Si no hace operaciones de E/S)
51
Se aprovecha que las instrucciones se dividen en etapas separadas para solapar la ejecucin de varias instrucciones. Un ciclo de ejecucin consta de varios ciclos de cauce. El ciclo de cauce viene determinado por el retardo de la etapa ms lenta. En teora, un ordenador con k-etapas podra ser k-veces ms rpido que su equivalente no segmentado. Computador paralelo y sncrono con mltiples ALUs que pueden operar en paralelo realizando la misma funcin. Las instrucciones escalares y de control se ejecutan en la UC, mientras que las vectoriales se transmiten a los elementos de proceso (ALU+Mem) Los elementos de proceso estn conectados mediante una red dinmica.
Procesadores matriciales
52
Sistemas Multiprocesadores
Consta de varios procesadores con capacidades similares, compartiendo accesos a una memoria comn y dividida en mdulos. El sistema entero est gestionado por un nico sistema operativo Cada procesador dispone de su propia memoria local y puede acceder a dispositivos propios de E/S. La comunicacin entre procesadores se puede realizar mediante:
53
Nuevas tendencias
Ordenar las instrucciones en funcin de las dependencias de datos Los programas se representan como grafos de flujos de datos. Las instrucciones se implementaran con plantillas. Esto permite un anlisis formal del programa y verificar su correccin.
54
La modelizacin de la superficie terrestre o de la atmsfera supone una gran carga computacional (unos 1000 millones de MFLOPS) P. ej. La prediccin del tiempo a 24 horas vista, con precisin de 160000 km2 (400x400) supone unos 100 billones de operaciones (100 minutos en un Cray-1). Si queremos precisin de 40.000 km2, se necesitaran 14 horas. Anlisis de elementos finitos, aerodinmica computacional, inteligencia artificial Modelizacin de yacimientos, seguridad de reactores nucleares Tomografa computerizada, sntesis de protenas,
55
Investigacin mdica