0% encontró este documento útil (0 votos)
49 vistas47 páginas

Introducción al Paralelismo en Computación

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
49 vistas47 páginas

Introducción al Paralelismo en Computación

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Ingeniería de los

Computadores
Unidad 1. Introducción al paralelismo
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Evolución de la informática Necesidades computacionales


Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

60 70 80 90 00

Mainframes Servidores
Grandes
computadores para
aplicaciones de
Minicomputadores
negocios y científicas
de gran volumen. Aplicaciones científicas
en laboratorios y WWW
pequeñas
organizaciones.
Redes

PCs y
Microprocesadores Estaciones de
Trabajo

Computadores
Rápido crecimiento (tecnología y herramientas de diseño): Embebidos
electrónica digital de altas prestaciones, videojuegos,
teléfonos móviles, tarjetas inteligentes, conmutadores,…
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Mejora de prestaciones
➢ Avances en tecnologías (límites físicos: calor, ruido, etc.)

Aumento de la velocidad de
los dispositivos O(a)
Reducción de tamaño Aumento de la capacidad de
de dispositivos (a) procesamiento O(a3)
Aumento del número de
dispositivos O(a2)

Aumento de tamaño de Aumento del número de Aumento de la capacidad de


los CI (b) dispositivos O(b2) procesamiento O(b2)

Cambio de la tecnología Aumento de la velocidad de Aumento de la capacidad de


(Ej. CMOS a GaAs los dispositivos procesamiento ??
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Mejora de prestaciones
➢ Avances en arquitecturas
➢ Paralelismo:
➢ Segmentación de cauces.
➢ Repetición de elementos: Utilizar varias unidades funcionales,
procesadores, módulos de memoria, etc. para distribuir el trabajo.
➢ Localidad: Acercar datos e instrucciones al lugar donde se necesitan para
que el acceso a los mismos sea lo más rápido posible (jerarquía de
memoria).
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Desarrollo de las arquitecturas de computadores - Objetivo

MAYOR CAPACIDAD COMPUTACIONAL

Iniciativas mayor peso software

➢ Repertorio de instrucciones (RISC, CISC, …)


➢ Arquitecturas VLIW
➢ Extensiones SIMD (MMX, SSE, 3DNOW, …)
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Desarrollo de las arquitecturas de computadores - Objetivo

MAYOR CAPACIDAD COMPUTACIONAL

Iniciativas mayor peso hardware

➢ Arquitecturas segmentadas
➢ Arquitecturas vectoriales
➢ Arquitecturas superescalares
➢ Arquitecturas paralelas o de alto rendimiento
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Arquitectura de Computadores

“Conjunto de instrucciones, recursos y características del procesador


que son visibles al software que se ejecuta en el mismo. Por tanto, la
arquitectura determina el software que el procesador puede ejecutar
directamente, y esencialmente define las especificaciones a las que
debe ajustarse la microarquitectura” [Ortega, 2005]

• En Ingeniería de Computadores veremos:


➢ Arquitecturas superescalares
➢ Arquitecturas paralelas: multicomputadores y multiprocesadores
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Ámbito de la arquitectura de computadores


➢ El lenguaje máquina del computador, la microarquitectura del
procesador y la interfaz para los programas en lenguaje máquina
(lenguaje máquina y arquitectura concreta del procesador).
➢ Los elementos del computador y como interactúan (es decir la
arquitectura concreta del computador, la estructura y
organización).
➢ La interfaz que se ofrece a los programas de alto nivel y los
módulos que permiten controlar el funcionamiento del
computador (sistema operativo y la arquitectura abstracta del
computador).
➢ Los procedimientos cuantitativos para evaluar los sistemas
(benchmarking).
➢ Las alternativas posibles y las tendencias en su evolución
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Niveles estructurales de Bell y Newell


➢ Descripción del computador mediante una aproximación por
capas.
➢ Cada capa utiliza los servicios que proporciona la del nivel inferior.
➢ Propone 5 niveles:
➢ De componente
➢ Electrónico
➢ Digital
➢ Transferencia entre registros (RT)
➢ Procesador-Memoria-Interconexión (PMS)
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Niveles de interpretación de Levy


• Contemplan al computador desde un punto de vista funcional.
• Constituido por una serie de máquinas virtuales superpuestas.
• Cada máquina interpreta las instrucciones de su nivel,
proporcionando servicios a la máquina de nivel superior y
aprovechando los de la máquina de nivel inferior.
• Se distinguen 5 niveles:
➢ Aplicaciones
➢ Lenguajes de alto nivel
➢ Sistema Operativo
➢ Instrucciones máquina
➢ Microinstrucciones
➢ Estos niveles son similares a los niveles funcionales de
Tanenbaum
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Niveles de abstracción de un computador


SW Niv. Soft. Superiores
Llamadas al Sistema, Comandos,…

ARQUITECTURA
Sistema Operativo
Sistemas de cómputo, Ensamblador,…

Sist. Computador IC
Integra la orientación estructural
de los niveles de Bell y Newell y Procesadores, Interfaces E/S, Datapath

el punto de vista funcional de los Nivel RT


niveles de Levy y Tanenbaum. ALUs, registros, memorias, MUX,…

TECNOLOGÍA Digital

Puertas lógicas, inversores, biestables

Electrónica
Uniones P N, Metal, Polisilicio

Componente
HW
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Taxonomía de Flynn
➢ SISD
FI

UC FI UP FD UM
E/S

FI
➢ SIMD UP1 UM1
FI FD

UC UP2 UM2
FI FD
. .
. .
UPn UMm
FI FD
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Taxonomía de Flynn
➢ MISD
FI1
FI2
FD

UC1 FI1 UP1 UM1

FD
UC2 UM2
FI2 UP2

. . FD .
. . .

UCn UPn UMm


FIn

FD

FIn
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Taxonomía de Flynn
➢ MIMD
FI2

FI1

UC1 UP1 UM1


FI1 FD

UC2 UP2 UM2


FI2 FD
. .
. .
UCn UPn UMm
FIn FD

FIn
Unidad 1. Introducción al paralelismo
1.1 Introducción y motivación
¿Qué?

• Taxonomía de Flynn-Johnson
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
Tipos de paralelismo

• Tipos de paralelismo
➢ Paralelismo de datos: La misma función, instrucción, etc. se
ejecuta en paralelo pero en cada una de esas ejecuciones se
aplica sobre un conjunto de datos distinto.
➢ Paralelismo funcional: Varias funciones, tareas, instrucciones,
etc. (iguales o distintas) se ejecutan en paralelo.
➢ Nivel de instrucción (ILP) – se ejecutan en paralelo las instrucciones de un
programa. Granularidad fina.
➢ Nivel de bucle o hebra (Thread) – se ejecutan en paralelo distintas
iteraciones de un bucle o secuencias de instrucciones de un programa.
Granularidad fina/media.
➢ Nivel de procedimiento (Proceso) –distintos procedimientos que
constituyen un programa se ejecutan simultáneamente. Grano medio.
➢ Nivel de programa – la plataforma ejecuta en paralelo programas
diferentes que pueden corresponder, o no, a una misma aplicación.
Granularidad gruesa.
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Segmentación: ILP
Procesador no segmentado
Inst. 1 IF ID EX MEM WB 1/(5T)
Inst. 2 5T IF ID EX MEM WB

Inst. 1 IF ID EX MEM WB Procesador segmentado

Inst. 2 IF ID EX MEM WB 1/(T)

Inst. 3 IF ID EX MEM WB

Inst. 4 IF ID EX MEM WB

Inst. 1 IF ID EX MEM WB Procesador supersegmentado


1/(T/2)=2/T
Inst. 2 IF ID EX MEM WB

Inst. 3 IF ID EX MEM WB

Inst. 4 IF ID EX MEM WB
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Segmentación
➢ Identificación de fases en el procesamiento de una tarea.
➢ Rediseño para implementar cada fase de forma independiente al resto.
➢ Paralelismo por etapas (el sistema procesa varias tareas al mismo tiempo
aunque sea en etapas distintas).
➢ Se aumenta el número de tareas que se completan por unidad de tiempo.

...
S1 S2 Sk

Clk t t1 ti
r
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Segmentación
Ganancia. Suponemos que TLI (tiempo de latencia de inicio) = T, tiempo que tarda
en ejecutarse una operación en una unidad sin segmentar.
TLI = k·t, siendo k el nº de etapas del cauce, y t la duración de cada etapa

T1 k·n·t
Gk = = =
Tk k· t + (n − 1)·t
k·n
=
k + n-1

lim Gk = k
n→
Normalmente, ¿TLI>T ó TLI<T?
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Ganancia real

Gk

Gmax
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Tipos de riesgos (detección del cauce)


➢ Riesgos de datos. Se producen por dependencias entre
operandos y resultados de instrucciones distintas.
➢ Riesgos de control. Se originan a partir de instrucciones de salto
condicional que, según su resultado, determinan la secuencia de
instrucciones que hay que procesar tras ellas.
➢ Riesgos estructurales o colisiones. Se producen cuando
instrucciones diferentes necesitan el mismo recurso al mismo
tiempo
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Riesgos de datos
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Soluciones a los riesgos de datos


➢ Reorganización de código (intercambio de instrucciones e inserción de NOP)
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Soluciones a los riesgos de datos


➢ Forwardings
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Soluciones a los riesgos de control


➢ Abortar operaciones
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Soluciones a los riesgos de control


➢ Bloqueos o uso de NOP
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
ILP

• Soluciones a los riesgos de control


➢ Delayed branch
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
Rendimiento

• Tiempo de ejecución de un programa


➢ Tiempo de CPU (usuario y sistema)
➢ Tiempo de E/S (comunicaciones, acceso a memoria, visualización,
etc.)
Ciclos_del_Programa
Tiempo de CPU (TCPU)= Ciclos_del_Programa x TCICLO =
Frecuencia_de_Reloj

Ciclos_del_Programa
Ciclos por Instrucción (CPI) =
Número_de_Instrucciones (NI)

TCICLO=1/F
TCPU = NI x CPI x TCICLO F=frecuencia
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
Rendimiento

• Tiempo para arquitecturas capaces de emitir a ejecución varias


instrucciones por unidad de tiempo

TCPU = NI x (CPE / IPE) x TCICLO

CPI

CPE = ciclos entre inicio de emisión de instrucciones.


IPE = instrucciones que pueden emitirse (empezar la ejecución) cada vez que se
produce ésta.
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
Rendimiento

Ejemplo: CPI = CPE/IPE

No segmentado
CPE=5 IPE=1 CPI=5
Inst. 1 IF ID EX MEM WB
Inst. 2 5T IF ID EX MEM WB

T Segmentado
Inst. 1 IF ID EX MEM WB
CPE=1 IPE=1 CPI=1
Inst. 2 IF ID EX MEM WB

Inst. 3 IF ID EX MEM WB

Inst. 4 IF ID EX MEM WB

Inst. 1 T
IF ID EX MEM WB Superescalar o VLIW
CPE=1 IPE=2 CPI=0.5
Inst. 2 IF ID EX MEM WB
Inst. 3 IF ID EX MEM WB
IF ID EX MEM WB
Inst. 4
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
Rendimiento

• Procesadores que codifican varias operaciones en una instrucción


(VLIW)

TCPU = (Noper / Op_instr) x CPI x TCICLO


NI

Noper = número de operaciones que realiza el programa.


Op_instr = número de operaciones que puede codificar una instrucción.
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
Rendimiento

Ejemplo:
NI = Noper/Op_instr
Ejemplo paralelismo datos
Procesador Matricial Noper=12 Op_instr=4 NI=3

UC EP1 EP2 EP3 EP4


C=A+B C[1]=A[1]+B[1] C[2]=A[2]+B[2] C[3]=A[3]+B[3] C[4]=A[4]+B[4]

F=D–E F[1]=D[1]-E[1] F[2]=D[2]-E[2] F[3]=D[3]-E[3] F[4]=D[4]-E[4]

G= K*H G[1]=K[1]*H[1] G[2]=K[2]*H[2] G[3]=K[3]*H[3] G[4]=K[4]*H[4]

Flujos de Instrucciones Flujos de Datos


Ejemplo paralelismo instrucciones
Unidad 1. Introducción al paralelismo
1.2 Paralelismo
Rendimiento

• Medidas de rendimiento:
➢ Ganancia T1
GP = ; GP  P
TP

➢ Eficiencia
Gp
EP = ; EP  1
P

➢ Productividad
Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

• Arquitecturas vectoriales: ILP y paralelismo de datos

El procesamiento de
Unidad Escalar
instrucciones está Reg. Escalares

segmentado y se utilizan Datos Escalares


múltiples unidades Control
Cauces Esc.
funcionales. E/S
Flujo Instr.
IF ID OF Cauces Vector.

Paralelismo de datos: Unidad


cada instrucción vectorial LOAD/STORE

Datos Vectoriales
codifica una operación Reg. Vectoriales
sobre todos los Procesador Unidad Vectorial
Vectorial
componentes del vector.
Memoria
Principal
b4
b3 Registro Vectorial
b2
b1 a8 a7 a6 a5 a4 a3
b8 b7 b6 b5 b4 b3 a2+b2
a4 a1+b1 Unidades funcionales
a3 Cauce Vectorial
a2 segmentadas
a1
Registros
Vectoriales
Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

• Arquitectura orientada al procesamiento de vectores (suma de


vectores, productos escalares, etc.)
• Repertorio de instrucciones especializado
• Características
➢ Cálculo de los componentes del vector de forma independiente
(buenos rendimientos)
➢ Cada operación vectorial codifica gran cantidad de cálculos (se
reduce el número de instrucciones y se evitan riesgos de control)
➢ Se optimiza el uso de memoria (entrelazado de memoria y
organizaciones S y C)
Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

Ejemplo: Sumar dos vectores de 100 elementos.


Pseudo-código escalar
for i:= 1 to 100 do c(i)=b(i)+a(i)
Ensamblador escalar (con bucle de 100 iteraciones)
LOADI R5, BASEa
LOADI R6, BASEb
LOADI R7, BASEc
LOADI R1, 0
INI ADDRI R5, R5, 1
ADDRI R6, R6, 1
ADDRI R7, R7, 1
ADDMR R8, R5, R6
STORE R7, R8
INC R1
COMP R1, 100
JUMP [Link] INI
Pseudo-código vectorial
c([Link]) = a([Link]) + b([Link])
Ensamblador vectorial
ADDV c, a, b, 1, 100
Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales
Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

• Entrelazado de memoria
Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

• Acceso a memoria simultáneo o tipo S


Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

• Acceso a memoria concurrente o tipo C


Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

• Operaciones gather-scatter
Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

• Enmascaramiento (gestión de matrices dispersas)


Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

• Rendimiento: encadenamiento de cauce


Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales

• Rendimiento: encadenamiento de cauce


Unidad 1. Introducción al paralelismo
1.3 Arquitecturas vectoriales
Vectoriales
Proc. Supersegmentado
con coproc. Vectoriales

Proc. Vectorial

Proc. Matricial

También podría gustarte