Arquitectura
• Introducción
• Paralelismo de grano muy fino
• Paralelismo en la familia 80x86
1
Introducción
Paralelismo.
• Introducción y generalidades
• Paralelismo producido
internamente dentro de la CPU
• Paralelismos a nivel de máquina
2
Introducción al paralelismo
Introducción y generalidades
Definición y conceptos asociados al
paralelismo.
3
Introducción al paralelismo
Paralelismo producido
internamente dentro de la CPU
•
•
•
•
Estructura pipeline.
Arquitectura RISC.
Arquitecturas superescalar y supersegmentada.
Aplicación a las familias de Intel 80x86 y Pentium.
4
Introducción al paralelismo
Paralelismos a nivel de
máquina
• Máquinas para el aprovechamiento del paralelismo
de datos.
• Multiprocesadores.
• Arquitecturas específicas diseñadas para ámbitos
de aplicación concretos.
5
Introducción al paralelismo
Necesidades de mayor capacidad de
computación:
• Tratamiento de complejos modelos matemáticos
(meteorología, ecología, bioquímica, …)
• Manejo masivo de datos en tiempo real, fundamentalmente
aplicables al campo de las comunicaciones.
• Explotación de grandes bases de datos; extracción de
patrones y tendencias de los datos.
• Aplicaciones multimedia: imágenes de alta definición, música
de alta fidelidad, reconocimiento del lenguaje hablado...
• Inteligencia artificial y sistemas expertos.
6
Introducción al paralelismo
Mejora de la capacidad de computación:
• Aumento de la velocidad (frecuencia de funcionamiento de los
circuitos electrónicos). Limitaciones tecnológicas y físicas.
• Uso del Paralelismo.
Paralelismo: Capacidad de una máquina para simultanear
acciones. Vinculado al aumento del rendimiento de la máquina
(velocidad, capacidad de proceso).
7
Introducción al paralelismo
Exclusiones:
• Simultaneidad entre acciones de CPU y periféricos
(Operaciones en segundo plano).
• Redundancia en procesos para conseguir fiabilidad.
8
Introducción al paralelismo
Estructuras que producen el
paralelismo:
Unidades funcionales: Cada parte de una máquina
capaz de realizar acciones indpendientemente del
resto.
Configuración de las UFs.
• Pipeline (segmentada).
• Paralela.
• Pseudopipeline.
9
Introducción al paralelismo
Configuración pipeline:
10
Introducción al paralelismo
Configuración pipeline:
• Conexión en cascada, cada unidad recibe como
entrada la salida de la anterior.
• Acciones uniformes en fases y tiempos.
• Solapa el tiempo de proceso de las acciones.
• Una acción finalizada en cada intervalo si la cadena
está llena.
11
Introducción al paralelismo
Configuración paralela:
12
Introducción al paralelismo
Configuración paralela:
• Las entradas y las salidas son comunes a todas las
unidades.
• UFs sincronizadas.
• Las acciones se realizan completas en cada UF.
• Conflicto: acceso a recursos compartidos.
13
Introducción al paralelismo
Configuración pseudopipeline:
14
Introducción al paralelismo
Configuración pseudopipeline :
• Conexión de UFs en paralelo.
• Desfase en la entrada de acciones de n ciclos ( al
menos 1).
• Resultado indistinguible de PIPELINE.
• Reduce conflictos de PARALELA pero obtiene peor
respuesta en el tiempo.
15
Introducción al paralelismo
Conflictos del paralelismo, tipos :
• Desajustes de tiempo: Diferentes tiempos entre
diferentes UFs. Imponen parones en el pipeline.
• Accesos a recursos compartidos: Afectan
fundamentalmente a configuraciones paralelas.
• Dependencias: Afectan a la simultaneidad de
acciones.
– De operandos
– De saltos (condicionales e incondicionales)
16
Introducción al paralelismo
Conflictos del paralelismo:
Parón en un pipeline
17
Introducción al paralelismo
Grado de paralelismo:
• Número de acciones simultáneas que se realizan.
• Aplicable a la máquina o a parte de ella.
• El máximo lo establece el número de unidades
funcionales existentes.
• Queda limitado por las características de la
aplicación en curso.
18
Introducción al paralelismo
Eficiencia:
• Relación entre el Grado de paralelismo conseguido
y la capacidad teórica de paralelismo de la
máquina.
• El aumento de UFs, aumenta los conflictos y
disminuye la eficiencia.
• Se trabaja con valores medios.
19
Introducción al paralelismo
Grano de paralelismo:
Tamaño de cada una de las acciones en las que se
divide el proceso para su realización simultánea.
Clasificación cualitativa:
• Muy grueso: programas.
• Grueso: subprogramas, tareas hijas, ...
• Fino: instrucción.
• Muy fino: fases de instrucción.
Clasificación cualitativa: Medido en nº de instrucciones
20
Introducción al paralelismo
Tipos de paralelismo:
En función de quién especifique las acciones que se
pueden realizar simultáneamente.
• Explícito: El propio programa identifica las acciones
(programación concurrente).
• Implícito: No lo especifica el programa sino la
máquina.
– Por azar: Acciones independientes. Entorno
multiusuario.
– Extraído por la máquina (compilador).
21
Introducción al paralelismo
Fuentes de paralelismo:
Control. Diferentes acciones que se pueden realizar
simultáneamente.
22
Introducción al paralelismo
Fuentes de paralelismo:
Datos. Misma acción sobre un conjunto estructurado
de datos.
23
Introducción al paralelismo
Fuentes de paralelismo:
Flujo. Mismos procesos sobre una gran conjunto de
datos.
24
Introducción al paralelismo
Clasificación de Flynn:
• También conocida como taxonomía de Flynn
• Surge en los principios de los 70
• Aunque no es definitiva para caracterizar todos los
tipos de ordenadores se sigue utilizando como una
primera aproximación para definir un ordenador.
• Concibe al ordenador como un conjunto de
unidades de cjto. de uds. de control y proceso.
• Esas uds. reciben flujos de instrucciones y de
datos.
25
Introducción al paralelismo
Clasificación de Flynn:
Computadora SISD: (Single instruction (flow),
single data(flow). Sistemas clásicos de
monoprocesadores.
26
Introducción al paralelismo
Clasificación de Flynn:
Computadora SIMD: (Single instruction (flow),
multiple data(flow). Sistemas vectoriales y
matriciales.
27
Introducción al paralelismo
Clasificación de Flynn:
Computadora MISD: (Multiple instruction (flow), single
data(flow). Enunciado de forma teórica.
Se discute si hay alguna
máquina de este tipo.
Quizás los ordenadores
sistólicos
28
Introducción al paralelismo
Clasificación de Flynn:
Computadora MIMD: (Multiple instruction (flow),
multiple data(flow). Pertenecen a esta categoría los
sistemas pluriprocesadores.
29
Introducción al paralelismo
Clasificación de Flynn:
30
Paralelismo de grano muy fino
RISC vs. CISC:
Años 80. Implantación de modelos de control del
rendimiento. Nueva tecnología RISC: Simplificar la
unidad de control para mejorar su eficiencia.
Tecnología CISC: La existente hasta el momento.
Instrucciones muy complejas, a veces específicas y
muy numerosas.
• Salto semántico.
• Reducción de los ciclos de fetch.
• Tamaño del programa.
31
Paralelismo de grano muy fino
Procesadores CISC:
Consecuencias.
• Compiladores simples.
• Unidades de control complejas, microprogramadas.
• Bajo rendimiento en cadenas pipeline.
32
Paralelismo de grano muy fino
Procesadores CISC:
Ejecución de
una instrucción:
33
Paralelismo de grano muy fino
Procesadores CISC:
Lectura de
los operandos:
34
Paralelismo de grano muy fino
Procesadores CISC:
Almacenamiento
del resultado:
35
Paralelismo de grano muy fino
Procesadores CISC:
Pipeline de dos etapas (instrucciones poco
homogéneas):
• Conflicto de desajuste de tiempos.
• Conflicto de acceso a recursos.
• Conflicto de dependencia de saltos.
• No hay conflicto de dependencia de operandos.
36
Paralelismo de grano muy fino
Procesadores CISC:
Pipeline de seis etapas:
Máquinas de una sola dirección sin direccionamiento
indirecto ni ejecución múltiple.
• Pasos 3, 5, y 9 una sola vez.
• Pasos 4, 7 y 8 desaparecen.
37
Paralelismo de grano muy fino
Procesadores CISC:
Pipeline de seis etapas, conflictos:
•Desajustes de tiempos. Inevitables. No usar toda las
UFs. Tipo de instrucciones o dir. Fallos de caché.
• Acceso a recursos: FE, LO y ER acceden a memoria
Sol: Más registros, caché doble pto., doble caché.
• Dependencia de operandos: Requiere identificación
para evitar errores, reduce el rendimiento.
– Operandos registros: Bit de bloqueo.
– Operandos en memoria: Lista de direcciones bloqueadas.
• Dependencia de saltos.
38
Paralelismo de grano muy fino
Proc. CISC. Dependencia de operandos:
Ejemplo:
A+BA
C + (A + 8)  C
39
Paralelismo de grano muy fino
Proc. CISC. Dependencia de saltos:
• Saltos incondicionales: Identificación temprana, más
simple. Durante FE o LO.
• Saltos condicionales: Incertidumbre. Pérdida de
rendimiento.
–
–
–
–
–
Salto retardado (Se verá en procesadores RISC).
Flujos múltiples.
Precaptar destino del salto.
Buffer de bucles.
Predicción de salto.
40
Paralelismo de grano muy fino
Proc. CISC. Dependencia de saltos:
• Flujos múltiples.
– Duplicar primeras etapas del pipeline.
– Se opta por los dos caminos y cuando se ejecuta la
instrucción se descarta el camino fallido.
– A veces más de dos caminos para trabajar con
instrucciones de salto condicional encadenadas.
– Aumento significativo de los conflictos de acceso a los
recursos (memoria).
– Eliminación de la mayoría de los huecos debidos a saltos.
41
Paralelismo de grano muy fino
Proc. CISC. Dependencia de saltos:
• Precaptar destino del salto.
– Leer la siguiente instrucción y la del destino del salto.
– Se limita a la fase de fetch de ambas instrucciones.
– Reduce el hueco en el pipeline.
42
Paralelismo de grano muy fino
Proc. CISC. Dependencia de saltos:
• Buffer de bucles.
– Similar a una cola de Prefetch pero de mayor tamaño.
– Se pone en marcha al detectar un salto condicional hacia
atrás (típico de los bucles).
– Se pretende mantener en la cola todas las instrucciones del
bucle.
– Si sobra espacio se almacenan también las instrucciones
que siguen al bucle.
– Importante ahorro de ciclos de fetch en bucles pequeños.
43
Paralelismo de grano muy fino
Proc. CISC. Predicción de saltos:
Optar por una alternativa: Saltar / No saltar. Si acierta
sigue, si no deshacer proceso realizado (FE, DE, CD y LO).
• Criterios estáticos, no depende de la historia anterior.
–
–
–
–
No cumple condición. Alternativa más simple.
Cumple condición. Mantener antiguo PC.
Decisión según el código de operación. Instr. bucle.
Evaluación previa de la condición. Ayuda del compilador.
Consideraciones:
– Dirección del salto.
– Entornos paginados y saltos de página.
44
Paralelismo de grano muy fino
Proc. CISC. Predicción de saltos:
• Saltos dinámicos, depende de la historia anterior.
– Conmutador saltar/ no saltar. Asignación de un estado a
cada instrucción de salto. Al ejecutarla se observa el
resultado, que podrá cambiar de nuevo el estado.
– Tabla de historias de saltos (BHT). Similar al anterior,
almacena además del estado la dirección de destino del
salto. Mayor tamaño de la tabla y no aplicable a todos los
direccionamientos.
45
Paralelismo de grano muy fino
Proc. CISC. Predicción de saltos:
Saltos dinámicos, diferentes ejemplos:
46
Paralelismo de grano muy fino
Proc. CISC. Predicción de saltos:
Saltos dinámicos, diferentes ejemplos:
47
Paralelismo de grano muy fino
Procesadores RISC.
• Justificación:
– Instrucciones complejas poco utilizadas.
– Set amplio y complejo  Mayor dificultad de optimización.
– Instrucciones y operandos largos  posible mayor uso de
memoria a pesar del menor número de instrucciones.
– Ciclos de fetch más largos y cambios de página frec.
– Efectividad pipeline mermada por los desajustes de
tiempos.
• Solución: Conjunto de instrucciones simples,
uniformes, generales y poco numerosas.
48
Paralelismo de grano muy fino
Procesadores RISC.
• Principios generales:
– Aumentar el número de registros internos del micro. Esto
reduce los conflictos de acceso a memoria y el tiempo
empleado.
– Optimizar diseño del pipeline para mejorar su rendimiento.
Una instrucción por ciclo. Evitar conflictos y desajustes de
tiempos.
– Conjunto de instrucciones limitado, sencillo y homogéneo.
Única manera de mejorar el pipeline.
49
Paralelismo de grano muy fino
Procesadores RISC.
• Características:
– Instrucciones de mismo tamaño (32 bits) y mismo formato.
Facilita diseño decodificador y control de ajuste de tiempos.
– Unidad de control cableada. Mejora de la eficiencia.
– Pocos modos de direccionamiento de memoria. No al
direccionamiento indirecto.
– Máximo un operando en memoria.
– Instrucciones de proceso (ALU) sólo con registros.
– Operandos en memoria siempre alineados.
50
Paralelismo de grano muy fino
Procesadores RISC.
• Consecuencias:
– Compiladores más elaborados.
– Programas con mayor número de instrucciones más cortas.
– Aumento del rendimiento. Poder despachar una instrucción
ejecutada en cada ciclo de reloj.
51
Paralelismo de grano muy fino
Procesadores RISC.
Ficheros de registros.
Se usan en algunas CPUs
Además registros
globales y de coma
flotante.
Normalmente entre 8
y 16 niveles.
Al desbordarlo se usa
la Memoria Principal.
52
Paralelismo de grano muy fino
Procesadores RISC. Pipeline.
• Instrucciones que acceden a memoria:
– Lectura y decodificación de la instrucción.
– Calculo de la dirección del operando.
– Lectura o escritura del operando.
• Instrucciones que NO acceden a memoria:
– Lectura y decodificación de la instrucción.
– Ejecución.
53
Paralelismo de grano muy fino
Procesadores RISC. Pipeline.
Conflictos:
– Desajustes de tiempos: Minimizados.
– Accesos a memoria: Sólo en F/D y L/EO.
– Dependencias de operandos: Sólo entre
registros.
– Dependencias de saltos: Como en CISC y
además salto retardado.
54
Paralelismo de grano muy fino
Procesadores RISC.
Salto retardado:
– Intercambiar la instrucción de salto con la anterior a ella.
– Siempre se ejecutará la instrucción posterior al salto.
– Se evita el vaciado del pipeline.
No aplicable si:
– Hay dos instrucciones de salto seguidas.
– Salto es destino de varios orígenes.
– La instrucción modifica la condición de salto.
En estos casos se añade una instrucción NOP al salto.
55
Paralelismo de grano muy fino
Procesadores RISC. Salto retardado:
56
Paralelismo de grano muy fino
Procesadores RISC.
Salto retardado ejemplos:
En un sistema que usa la técnica del salto y con la siguiente secuencia
de instrucciones en el programa fuente:
–[I1] Instrucción que no es de salto
–[I2] Instrucción de comparación A-B
–[I3] Salto condicional si A>B
–[I4] Instrucción que no es de salto
¿Qué haría el compilador?
El compilador inserta una instrucción NOP dado que la instrucción I2 fija
la condición de salto a seguir por I3, estas no pueden alterar su orden,
por lo tanto, la secuencia que debería haber generado el compilador
sería: [I1] [I2] [I3] NOP [I4]
57
Paralelismo de grano muy fino
Procesadores RISC.
Salto retardado ejemplos:
En un sistema que usa la técnica del salto y con la siguiente secuencia
de instrucciones en el programa fuente:
–[I1] Instrucción que no es de salto
–[I2] Salto incondicional a eti1
–[I3] Salto condicional a eti2
–[I4] Instrucción que no es de salto
¿Qué haría el compilador?
La técnica del salto retardado se aplica tanto a los condicionales como a
los incondicionales, por lo tanto, la secuencia que debería haber
generado el compilador sería:
[I2] [I1] [I3] NOP [I4].
58
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
Arq. superescalar:
– Más de un pipeline trabajando en paralelo. Algún pipeline
puede ser de tipo específico.
– El grado de la arquitectura es igual al de pipelines.
– Si no hay conflictos se despachan tantas instrucciones como
pipelines hayan disponibles.
Arq. supersegmentada:
– Consiste en desdoblar en subfases las acciones que duren
menos de un ciclo (medio ciclo).
– Grado de la arquitectura: instrucciones que se pueden finalizar
en un ciclo.
59
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
Arquitectura
superescalar
60
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
Arq. supersegmentada
61
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
• EJECUCIÓN DESORDENADA DE INSTRUCCIONES:
– Reduce la pérdida de rendimiento por dependencias de
operandos.
– Aprovechar los tiempos muertos de las etapas de la CPU con
instrucciones posteriores mientras no se altere el resultado
– Existen distintas alternativas según la fase en la que se admita
el desorden (emisión, será necesario un buffer, o ejecución)
62
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
• EJECUCIÓN DESORDENADA DE INSTRUCCIONES :
63
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
• EJECUCIÓN DESORDENADA DE INSTRUCCIONES:
– FD1 y FD2 son etapas de prefetch y decodificación.
– EJ1 y EJ2 son unidades de ejecución de enteros y EJ3 de
coma flotante.
– ER1 y ER2 representan escritura de resultado.
– Secuencia de instrucciones: I1 .. I9.
– Instrucciones de 3 ciclos de duración, 1 por etapa, salvo I1 que
requiere dos ciclos en la fase de ejecución.
– I3 e I4 operan con datos en coma flotante.
– I5 e I6 presentan dependencia de operandos.
64
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
• PSEUDODEPENDENCIAS DE OPERANDOS:
Ejecución ordenada.
65
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
• PSEUDODEPENDENCIAS DE OPERANDOS:
Ejecución desordenada en escritura de resultados.
66
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
• PSEUDODEPENDENCIAS DE OPERANDOS:
Ejecución desordenada en emisión de instrucciones y ER.
67
Paralelismo en la familia 80x86
Arq. superescalar y supersegmentada.
• PSEUDODEPENDENCIAS DE OPERANDOS:
 Dependencia real (escritura/lectura): operando de Ik es
resultado de Ii. Se pueden producir siempre que haya
ejecución paralela.
R1 + R2  R3 (Ii)
R3 + R4  R5 (Ik)
 Pseudodependencia de salida (escritura/escritura): Ik e Ii
escriben sobre el mismo operando.
 Antidependencia (lectura/escritura): Ii lee un operando que
debe escribir Ik.
 Las pseudodependencias se resuelven con la técnica de
renombrado de registros
68
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
• PSEUDODEPENDENCIAS DE OPERANDOS:
 Dependencia real (escritura/lectura): operando de Ik es
resultado de Ii. Se pueden producir siempre que haya
ejecución paralela.
Ii  R1 + R2  R3
Ik  R3 + R4  R5
69
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
• PSEUDODEPENDENCIAS DE OPERANDOS:
 Pseudodependencia de salida (escritura/escritura): Ik e Ii
escriben sobre el mismo operando.
Ii  R1 + R2  R3
........................
Ik  R4 + R5  R3
Se resuelve con la técnica de
renombrado de registros
70
Paralelismo de grano muy fino
Arq. superescalar y supersegmentada.
• PSEUDODEPENDENCIAS DE OPERANDOS:
 Antidependencia (lectura/escritura): Ii lee un operando que
debe escribir Ik.
Ii  R1 + R2  R3
........................
Ik  R4 + R5  R1
Sólo se produce si en la ejecución desordenada se
ejecuta Ik antes que Ii
Se resuelve con la técnica de renombrado de registros
71
Paralelismo en la familia 80x86
Intel 8086 .. 80286
EU
BIU
Unidad de Control
Registros de segmento
ALU
ALU Cálculo de direcciones
Registros Propósito
Cola de Prefetch
general e índices
Paralelismo:
Mientras se ejecutan instrucciones en la EU (Execution Unit)
se calculan direcciones de operandos y se producen ciclos de
fetch adelantados en la BIU (Bus Interface Unit).
72
Paralelismo en la familia 80x86
Intel 80386
•Pipeline: 4/6 etapas
según criterio.
•Hasta 4 instrucciones en
ejecución.
• MMU Memory Management
Unit. Gestiona las tareas
de segmentación y
paginación.
73
Paralelismo en la familia 80x86
Intel 80486
- Prefetch: 5/9 etapas
según criterio.
- Hasta 6 instrucciones en
ejecución.
- Decodificador con lógica
cableada para instr. simples
y microprogramado para
las complejas.
74
Paralelismo en la familia 80x86
Coprocesadores matemáticos
• Circuitos inicialmente externos, cooperan con la CPU.
• Leen las instrucciones a la vez que la CPU. Si una
instrucción es de coprocesador la ejecutan.
• Si la instruccion tiene operandos en la memoria, la CPU
calcula y vuelca su dirección.
• Trabaja en paralelo con la CPU. Si la CPU debe
esperar al coprocesador, se inserta la instrucción
FWAIT.
75
Paralelismo en la familia 80x86
Procesadores CRISC.
• Disponen de características de CISC y de RISC.
• intel 80486 dispone de un núcleo cableado y otro
microprogramado.
• El cableado ejecuta las que se definen como core
instructions. Puede despachar una de estas
instrucciones ejecutada a cada ciclo de reloj.
• Resto de instrucciones en el núcleo microprogramado
requieren múltiples ciclos de reloj.
76
Paralelismo en la familia 80x86
Intel Pentium
- Arquitectura superescalar
de grado 2 (Pipes U y V).
- Ejecución ordenada.
- Doble caché.
- Unidad predicción saltos.
- Prefetch 128 bytes.
- Pipeline 5 etapas.
- MMU no representada.
77
Paralelismo en la familia 80x86
Intel Pentium Pro
Arquitectura superesc.
de grado 3.
Ejecución desordenada.
Doble caché L1 y L2.
Unidad predicción saltos.
Prefetch 128 bytes.
Pipeline 5 etapas.
MMU no representada.
78
Paralelismo en la familia 80x86
Intel Pentium Pro
Dispone de 3 decodificadores de instrucciones que trabajan de forma
ordenada.
Convierten las instrucciones en secuencias de microoperaciones.
• Instrucciones 'simples'  conversión rápida.
• Instrucciones 'complejas'  conversión por medio de un
microprograma.
Las microoperaciones se almacenan en el Instruction Pool.
5 Unidades de ejecución. 2 de enteros 2 de como flotante 1 de
lectura de memoria. Retiran las operaciones de forma desordenada.
79
Paralelismo en la familia 80x86
Intel Pentium Pro
Ejemplo:
mem + reg  mem
mem  regtemp (1 op.)
regtemp + reg  regtemp2 (1op)
regtemp2  mem (2 op.)
Registros 'alias': 40 registros de uso interno asignados por los
decodificadores a las microoperaciones.
Retire Unit: Permite ir retirando las operaciones del Instruction Pool
e ir escribiendo los resultados en los destinos correspondientes.
80
Paralelismo en la familia 80x86
Intel Pentium Pro
BTB: Branch Target Buffer. Almacena la dirección de las instrucciones
de salto, la historia relacionada con ella (estado) y la dirección de
destino.
Si no se ha ejecutado nunca se usa una predicción estática: que se
saltará si el salto es incondicional o hacia atrás en otro caso se
decide no saltar.
81
Descargar

Periféricos e interfaces