You are on page 1of 56

ARQUITE

CTURA
MULTINU
CLEO

INTRODUCCIN

Conceptos

Microprocesador multi ncleo: Un computador


multincleo combina dos o ms procesadores (llamados
ncleos) en una nica pieza de silicio.

Memoria cach: acta como una memoria temporal


entre los registros de CPU, limitados y de gran velocidad
y la RAM, mucho mas grande y lenta.

MMX: conjunto de instrucciones SIMD.Introducido en 1997


en los microprocesadores Pentium MMX.

SSE: (Streaming SIMD Extensions) es una extensin al


grupo de instrucciones MMX.

FSB: (Front Side Bus) se encuentra conectado al chip


Northbridge, que es el ncleo de la placa base. La
frecuencia de un procesador se expresa en trminos de la
frecuencia del FSB multiplicado por un valor
3
predeterminado por el fabricante.

LIMITACIONES DE LAS ARQUITECTURAS


TRADICIONALES

Limitaciones de la tecnologa subyacente

Frecuencia de operacin.
Limitaciones en la escala de integracin y consumo de
energa.
Retardo RC: a altos niveles de integracin, la resistencia de
los cables se incrementa, as como la capacitancia entre
cables cada vez mas prximos.
Latencia de memoria.

Agotamiento de la

arquitectura secuencial

Necesidad de mayor capacidad de procesamiento.


4

RETO MULTINUCLEO
1) LA MAQUINA DE TURING:

Plantea un modelo matemtico de proceso de


cadenas que sirve para ejecutar algoritmos.

La tesis Church-Turing propone, sin que hasta el


momento se haya podido contradecir, que toda
funcin computable debe poder ser calculada.

2) LEY DE MOORE:

El numero de transistores en un

circuito integrado se duplica


aproximadamente cada dos aos.
5

RETO MULTINUCLEO
3) LEY DE AMDAHL:

La relacin que hay entre la ejecucin secuencial y


paralelizada de una aplicacin y predice el factor de
aceleracin de la aplicacin.

4) LEY DE GUSTAFSON:

Argumentando que en la produccin de software los programadores,


en general, tienden a establecer el tamao del programa en trminos
del equipo que tienen disponible para resolverlo en un cierto tiempo.
Por lo tanto, si el programador cuenta con equipo mas veloz (mas
paralelo), planteara programas mas grandes a ser resueltos en el
mismo tiempo.
6

DOBLE NUCLEO

CPU tiene no un procesador, si no dos en el


mismo paquete y se distribuyen el trabajo.

AMD e INTEL compiten con 4 ncleos.

Lo lgico es pensar que al tener dos cerebros


se puede procesar el doble de informacin,
pero, lamentablemente, no siempre es as.

Dos factores justifican esta limitacin:

1)

Ancho de banda / cuello de botella

2)

Aplicaciones

1) Ancho de banda

Problema comn en los Pentium D, que comparten


el FSB para recibir informacin y devolverla
procesada.

El FSB esta limitado en ancho y encima es


compartido por ambos ncleos, por lo que los
datos deben esperar su turno para procesarse.

La ventaja de poder incluir mas en menos espacio


y que las conexiones y distancias de los circuitos
sean mas pequeas es que se necesita menos
energa para mover un electrn de un lugar al
otro.
8

2) Aplicaciones

Pocas aplicaciones preparadas para sacar


provecho de dos ncleos (incluidos los juegos).

El nico lugar donde se saca realmente provecho


es del lado servidor y procesamiento de video.

Gran ventaja con mltiples ncleos: renderizando


una imagen 3D de alta resolucin, cada ncleo se
puede encargar de un frame, tener muchos
ncleos nos multiplicara el tiempo ahorrado.

Por esta razn se utilizan granjas de servidores


para procesar pelculas.

Bsicamente se aprovechan las ventajas en todas


las tareas que se puedan dividir en hilos y no ser
todo un conjunto de procesamiento.
9

Razn del aumento de velocidad

Un nuevo material con una propiedad llamada High-k


para el componente dielctrico de la compuerta del
transistor que reemplaza al dioxido de silicio.

Y a una combinacin de materiales metlicos para el


electrodo de la compuerta del transistor, lo que
reduce las fugas mas de 10 veces.

10

ESTRUCTURA NUCLEO

11

Acceso a memoria del uP

Los procesadores de una arquitectura multi-procesador


comparten la memoria principal - es decir, existen dos
alternativas para compartir la memoria principal

U.M.A (Acceso uniforme a memoria).

N.U.M.A. (Acceso no uniforme a memoria).

Descripcin del ncleo

Es la unidad mas importante del sistema. En su interior


alberga varias entidades, entre ellas la memoria cache,
el soporte de hardware necesario para locks y su propia
unidad de control.

Diagrama de la arquitectura

Partes

CPU: Impone las direcciones de memoria que necesita leer o escribir,


impone el valor del dato y la habilitacin por byte de una escritura,
receptor de los datos/instrucciones ledos

Bus transceivers: Son utilizados para acoplarse al bus de interconexin.

Memoria RAM Interna: Memoria sincrnica interna exclusiva de cada


ncleo, as cada uno puede correr un programa independientemente.

Soporte de hardware para el ndice de CPU: Registro constante que


almacena el ndice del ncleo.

Multiplexor del dato de lectura del CPU (cpuDataR s): Esta unidad
selecciona el dato que ser ledo por el CPU

Partes

Memoria cache: Esta compuesta por dos memorias sincrnicas de dos puertos
cada una, A y B. La primera de las memorias guarda los datos y la segunda los
indicadores, el puerto A se utiliza para atender solicitudes del CPU y el B para
la implementacin del algoritmo de coherencia de cache

Registros sincrnicos: Son un conjunto de registros sincrnicos que retrasan


algunas seales un ciclo de reloj, para poder conservar sus valores.

Soporte de hardware para los locks: La seal lockRequest se enva al


manejador de locks del multinucleo, quien luego decide que ncleo obtiene el
lock.

Multiplexor del puerto A de la cache: Mediante este multiplexor se selecciona


que seales controlan al puerto A. Las seales que se multiplexan son la
direccin de lectura/escritura, el dato a escribir, y la habilitacin por byte.

Puertos y seales

memBusy i (entrada): indica cuando la memoria se encuentra


ocupada. Esta seal puede ser activada por varias razones, por
ejemplo durante la inicializacin de la memoria, o cuando algun
nucleo realiza un acceso a memoria principal

busSnoop i (entrada): Seal para la implementacin de la


coherencia de cache, que indica que los datos del bus deben ser
ledos para luego verificar si se debe actualizar la cache o no.

busAddress io (entrada/salida 30 bits): Seal para acceder a


memoria y para la coherencia de cache. Es la direccion que se
impone en el bus.

busDataW io (entrada/salida 32 bits): Seal para acceder a


memoria y para la coherencia de cache. Cuando es salida es el
dato que escribe en memoria. Cuando es entrada es el dato
escrito por otro nucleo en memoria.

busWe io (entrada/salida 4 bits): Seal para acceder a


memoria y para la coherencia de cache. Es la
habilitacin por byte del dato a escribir puede ser
propia o de otro ncleo.

busDataR i (entrada 32 bits): Solo para el acceso a


memoria en particular cuando se realiza una lectura.

MULTINUCLEO VS MULTIHILADO

22

Procesadores Multincleo vs
HyperThreading
Los procesadores multi-ncleo es un
procesador que contiene dentro del chip
a varios ncleos o "cerebros".
La mayora de los procesadores son
mono-ncleo, o sea tienen un solo
cerebro.
Mientras un procesador mono-ncleo
tiene un solo cerebro para ejecutar
procesos, un procesador multi-ncleo
puede repartir los procesos entre sus
varios cerebros para su posterior
ejecucin.

Procesadores Multincleo

Un microprocesador multincleo es aquel que


combina
dos
o
mas
procesadores
independientes en un solo paquete, a menudo
en un solo circuito integrado. No confundir con
el multiprocesamiento que es tener dos
microprocesadores independientes en la
misma placa funcionando simultneamente.

HyperThreading

Esta tecnologa fue creada por Intel, para los


procesadores Pentium 4 y ms avanzados. El
Hyperthreading hace que el procesador funcione como
si fuera dos procesadores.

Esto fue hecho para que tenga la posibilidad de trabajar


de forma multihilo (multithread) real, es decir pueda
ejecutar muchos hilos simultneamente.

Un procesador con la tecnologa Hyperthreading tiene


un 5% ms de transistores que el mismo procesador sin
esa tecnologa.

HyperThreading
Esto conlleva una mejora
en la velocidad de las
aplicaciones que segn
Intel es aproximadamente
de un 60%

Esta tecnologa consiste en simular dos procesadores


lgicos dentro de un nico procesador fsico.

Diferencias entre Hyper-Threading y Multinucleo

Mientras que el hyper- threading simula la


existencia de dos procesadores rellenando
los huecos libres entre el procesamiento del
nucleo con otro nucleo "ficticio", el
multincleo simplemente inyecta ms
potencia de procesamiento mediante la
adesin de ms nucleos al procesor..

En el grafico podemos ver la comparativa


entre las tecnologas y su combinacin,
como la tecnologa hyper- threading
aprovecha ms la capacidad real del
ncleo

Multiprocesador y multincleo,
parecido pero no igual

Un sistema multiprocesador es aquel que


tiene ms de un zcalo donde pinchar
un procesador. A su vez, un procesador
puede contener uno o ms ncleos, en
cuyo caso se habla de procesador
multincleo, o multi-core

Para que Hyper-threading funcione en forma ptima,


todos los ncleos (virtuales) necesitan estar bajo carga.
El problema principal se da con aplicaciones antiguas o
poco optimizadas para dividir el procesamiento en
diferentes hilos o threads, que son los componentes con
los que el sistema operativo se comunica con los
programas.

ORGANIZACIN Y
CLASIFICACION MULTINUCLEO

31

ORGANIZACIN MULTINUCLEO

A un alto nivel de descripcin, las variables principales de una

organizacin multincleo son:


El nmero de ncleos de procesador en el chip
El nmero de niveles de memoria cache.
La cantidad de memoria cache que es compartida.
Ejemplos de organizacin multincleo:

Utilizada en chips embebidos.


Utiliza una memoria cache de nivel 1 on-chip dedicada.
Ejemplo: ARM11 MPCore

Ejemplos de organizacin multincleo:


Cache on-chip no compartida.
Incluye memoria cache dedicada de nivel 2.
Ejemplo: AMD Opteron

Utiliza memoria cache L2 compartida on-chip.


Ejemplo: Intel Core Duo

Se incrementa la cantidad de memoria cache disponible.


Incluye cache L1 y L2 dedicado y cache L3 compartida.
Ejemplo: Intel Core i7.

ORGANIZACIN MULTINUCLEO
El uso de una memoria cache L2 compartida en el chip tiene varias

ventajas frente a la dependencia exclusiva de caches dedicadas:


Se puede mejorar la tasa de aciertos.
Los datos compartidos por mltiples ncleos no se replican en el
nivel de memoria cache compartida.
Con algoritmos de reemplazo adecuados, la cantidad de cache
compartida asignada a cada
ncleo es dinmica y los hilos con
menor localidad pueden emplear mas cache.
La comunicacin interprocesadores es fcil de
mediante posiciones de memoria compartidas.

implementar

El uso de memoria cache L2 compartida confina los problemas de


coherencia cache a la cache L1, lo que puede proporcionar
algunas ventajas adicionales de rendimiento.
Una ventaja potencial de solo tener memoria cache L2 dedicada en
los chips es que cada ncleo obtiene acceso ms rpido a su
cache L2
privada. Esto es ventajoso para hilos con localidad
fuerte.

ORGANIZACIN MULTINUCLEO INTEL


Intel Core Duo
Se introdujo el 2006.
Implementa dos procesadores x86 superescalares con
cache L2 compartida.

una memoria

Cada ncleo tiene su propia cache dedicada L1 (32KB para datos y 32KB
para instrucciones).
Cada ncleo tiene una Unidad de Control Trmico independiente para
maximizar el rendimiento del procesador dentro de las restricciones
trmicas. Si la temperatura de un ncleo excede un umbral, la UCT
reduce la frecuencia de reloj para reducir la generacin de calor de
dicho ncleo.
El Advanced Programmable Interrupt Controller (APIC) realiza las
siguientes funciones:
Proporciona interrupciones interprocesador, lo que permite que cualquier
proceso interrumpa cualquier procesador o conjunto de procesadores .
Acepta interrupciones de E/S y enruta estas al ncleo apropiado.
Cada APIC incluye un timer, que puede ser fijado por el SO para generar
una interrupcin en el ncleo local.
El Power Management Logic es responsable de reducir el consumo de
energa, cuando sea posible, para incrementar el tiempo de vida de las
batera en equipos mviles.
Incluye una memoria cache L2 compartida de 2MB (MESI) con mejoras
para SMP

Intel Core i7
Se introdujo el
2008.
Implementa cuatro
procesadores x86
SMT, cada uno con
una cache L2
dedicada y una
cache L3
compartida.

Utiliza un mecanismo de pre extraccin para mejorar la efectividad de la memoria


cache.
El hardware examina los patrones de acceso a memoria e intenta llenar la cache de
manera especulativa con datos que probablemente sean requeridos pronto

Cada ncleo tiene su propia cache L2 dedicada y los cuatro ncleos comparten una cache
L3 de 8MB con pre extraccin basada en el anlisis de patrones de acceso
El controlador DDR3 soporta tres canales de 8 bytes de ancho para un ancho de bus total
de 192 bits y una tasa de transferencia agregada de hasta 32GBps
Se elimina la necesidad del Front Side Bus.
El Quick Path Interconnect (QPI) es un enlace punto a punto que permite comunicacin
de alta velocidad entre chips de procesadores interconectados. Opera a 6,4GTps
(transferencias por segundo). Con 16 bits por transferencia, alcanza 12.8GBps.
Puesto que los enlaces QPI comprenden pares bidireccionales dedicados, el ancho de
banda total es de 25.6GBps

Clasificacin de arquitecturas con varios


processadores
1.- Arquitecturas de memoria compartida
En este caso la arquitectura est compuesta por un conjunto de
procesadores (casi siempre homogneos) que comparten una nica
memoria centralizada, normalmente la memoria principal. En este tipo
de diseo el espacio de direcciones fsicas es global: todos los nodos
tienen una visin de la memoria simtrica. Por ello estas arquitecturas
suelen denominarse multiprocesadores o arquitecturas SMP (Symmetric
MultiProcessing). Adems, como los tiempos de acceso a todas las
direcciones de memoria son uniformes, es decir, siempre se tarda lo
mismo en realizar un acceso a memoria principal, tambin pueden
denominarse arquitecturas UMA (Uniform Memory Access). A veces
tambin se denominan sistemas fuertemente acoplados, ya que todos los
procesadores comparten un componente tan crtico como la memoria
principal.
Los diferentes procesadores y mdulos de memoria se interconectan a
travs de un bus o red de medio compartido. De la misma forma, los
mecanismos de E/S tambin suelen ser compartidos y se encuentran
conectados a este bus. Los procesos que se ejecutan en paralelo en los
diferentes procesadores que componen la arquitectura se sincronizan y
comunican a travs de la memoria compartida e interactan mediante
variables compartidas. Es decir, la comunicacin entre procesos es
implcita y se realiza con instrucciones de load y store (leyendo y
escribiendo variables compartidas en la memoria centralizada).

2.- Arquitecturas de memoria


compartida-distribuida
En este tipo de arquitectura cada nodo es un procesador con su
propia memoria principal y sus propios mecanismos de E/S. Los
nodos trabajan independientemente pero estn conectados
mediante una red de comunicaciones que les permite
intercambiar informacin mediante paso de mensajes.
Sin embargo existe un nico espacio de direcciones de memoria, es
decir, la misma direccin fsica en dos nodos del sistema
corresponde a la misma ubicacin de memoria principal. Por lo
tanto, se distribuye estticamente entre memorias principales
fsicamente diferentes, un nico espacio de direcciones, de
manera que a cada memoria principal de cada nodo le
corresponde almacenar una parte de este espacio nico y global
de memoria.
En este caso las arquitecturas suele denominarse NUMA (Non
Uniform Memory Access) ya que el tiempo de acceso a memoria
principal no es siempre el mismo, depende de la ubicacin del
dato. Un acceso a memoria puede ser:
Local: A la memoria principal del propio nodo.
Remoto: A la memoria principal de otro nodo, por lo tanto el load
o el store tiene que ser traducido a un mensaje de peticin por
la red, para acceder a la memoria remota en la que se
encuentra almacenado el dato.

3.-Arquitecturas de memoria
distribuida
En este tipo de arquitecturas de nuevo cada nodo es un procesador con su
propia memoria principal y sus propios mecanismos de E/S. Los nodos
trabajan independientemente pero estn conectados mediante una red
de comunicaciones que les permite intercambiar informacin mediante
paso de mensajes. A veces se denominan sistemas o arquitecturas
dbilmente acopladas. Pero en el caso de la memoria distribuida
completamente, la memoria principal se encuentra dividida, fsica y
lgicamente en espacios de direcciones fsicas independientes. Es
decir, la misma direccin fsica de memoria en diferentes procesadores
hace referencia a distintas ubicaciones fsicas, cada una dentro d e la
memoria principal local de cada nodo.
Como cada procesador puede acceder nicamente a su espacio de
direcciones local, la comunicacin entre procesos debe ser explcita
mediante paso de mensajes.
En este tipo de arquitecturas es habitual que los nodos que componen el
sistema sean heterogneos o terminen sindolo. Estas arquitecturas
suelen denominarse multicomputadores, para dar una idea de que
estn compuestas por computadoras completas e independientes que
trabajan conjuntamente para resolver un nico problema. Como se
ver en secciones posteriores, de nuevo ser necesario un middleware
entre las aplicaciones y el hardware que permita utilizar una
arquitectura de este tipo como un nico sistema y no como nodos
independientes que simplemente estn conectados por una red de
comunicaciones.

RENDIMIENTO

41

Rendimiento de un
sistema paralelo
Rendimiento en un sistema con un
procesador:

Tcpu = RI x CPI x tciclo


Con

RI : recuento de instrucciones
CPI: ciclos promedio por instruccin tciclo:
duracin del ciclo de reloj

Rendimiento en un sistema con P procesadores:

T RI * 1 *t
P IPC
CPU

Con

CICLO

P : nmero de procesadores
IPC: nmero de instrucciones por ciclo de reloj tciclo:
duracin del ciclo de reloj
4
2

Rendimiento de un
sistema paralelo
Segn Amdahl:
Cuando la fraccin de un trabajo serie de un problema es pequea, y
la denominamos s, la mxima aceleracin o Speedup alcanzable
(incluso para un nmero infinito de procesadores) es slo 1/s

tiempo = 1

Ejecucin serie
en un
procesador

Ag s n 1
s pn s p
n

Ejecucin en un sistema
paralelo de p procesadores

tiempo = s + n/p
4
3

Lmites del paralelismo


Segn la ley de Amdahl:
En todo problema hay una parte secuencial, fs, en la que no es
posible utilizar la potencia de los p procesadores de un sistema. De
este modo, la ganancia de velocidad se ve limitada como se
muestra a continuacin

Rendimiento basado en media


aritmtica (Simple)
Rendimiento inversamente proporcional a la suma de los
tiempos de ejecucin
n

1
R
a

tiempo
i
1

Con tiempoi, tiempo de ejecucin del programa i-esimo de


un total de n de la carga de trabajo

45

Ejemplo
La tabla muestra los tiempos de ejecucin de 2
programas en tres mquinas distintas
Segundos

Mquina A Mquina B Mquina C

Programa 1

10

20

Programa 2

1000

100

20

total

1001

110

40

Se ve que
A es 1900% ms rpido que C para el programa 1
B es 100% ms rpido que C para el programa 1
B es 900% ms rpido que A para el programa 2
.
B es 810% ms rpido que A para los programas 1 y 2
C es 2400% ms rpido que A para los programas 1 y 2
B es 175% ms rpido que B para los programas 1 y 2
46

Ejemplo
La media aritmtica para las 3 mquinas A, B y C
ser:

T
A

RA = 1/TA = 0,002

1 1000

500,5seg.

RB = 1/TB = 0,018

10 100

20 20

55seg.

20seg.

RC = 1/TC = 0,05

R C > RB >

RA
47

Rendimiento basado en media


aritmtica (Ponderado)
Rendimiento inversamente proporcional a la suma de los
tiempos de ejecucin ponderados por la frecuencia del
programa en la carga de trabajo

1
f *tiempo
R
n

i1

Con tiempoi, tiempo de ejecucin del programa i-esimo de


un total de n de la carga de trabajo y fi, la frecuencia
relativa del i-esimo programa en la carga de trabajo

48

Ejemplo
Media aritmtica ponderada para las 3 mquinas A, B y C segn
2 cargas distintas
f1 = 50%
f2 = 50%

Prog. 1

10

20

Prog. 2

1000

100

20

total

1001

110

40

media
aritmtica

500,5

55

20

ponderacin equivalente (media aritmtica


simple)

fi

Ti *
j1

1
Tj

ponderacin inversamente proporcional a los tiempos


de ejecucin en la mquina A
f1 = 1000/1001 = 0,999 f2 = 1/1001 = 0,001

f1 = 99,9%
f2 = 0,1%

Prog. 1

10

20

Prog. 2

1000

100

20

total

1001

110

40

media
aritmtica

2,0

10,09

20,0

49

Rendimiento basado en media


geomtrica (Normalizado)
Rendimiento inversamente proporcional al producto de los
tiempos de ejecucin

1
R

i1

f *tiempo
i

Con tiempoi, tiempo de ejecucin del programa i-esimo de


un total de n de la carga de trabajo y fi, la frecuencia
relativa del i-esimo programa en la carga de trabajo

50

Ejemplo
Media geomtrica normalizada para las 3 mquinas A, B y C.
Normalizado para A (%)

Normalizado para B (%)

Prog. 1

100

1000

2000

Prog. 2

100

10

M. arit.

100

505

1001

M. Geom.

100

100

63

Tiempo
total

100

11

Normalizado para C (%)

10

100

200

50

100

1000

100

20

5000

500

100

100

110

2503

275

100

100

100

63

158

158

100

910

100

36

2503

275

100

505

El rendimiento de la media aritmtica vara dependiendo de cual sea la mquina de


referencia

RA>RB

RA<RB

El rendimiento de la media geomtrica es ms consistente independientemente de la


normalizacin

RC= 63% de RA

RC= 63% de RB y

51

Rendimiento basado en media


armnica (ponderado)
Rendimiento o velocidad de ejecucin para
el programa i-esimo de un total de n de la
carga de trabajo

R T1
i

1
(f/R)
n

i1

Con fi, la frecuencia relativa del iesimo programa en la carga de


trabajo

52

FACTORES QUE IMPIDEN UN ALTO


RENDIMIENTO EN SISTEMAS
MULTICORE
Si el rendimiento de las aplicaciones en entornos multicore/multi-thread escalara linealmente al aumentar el nmero
de threads con los que se ejecuta la aplicacin, el problema
estara resuelto.
Pero lo cierto es que en este tipo de entornos, existen una
serie de factores que impiden que esta escalabilidad sea
lineal. Entre ellos, resaltan:

OVERHEADS POR CREACIN/ELIMINACIN DE THREADS

El overhead ha de ser pequeo en comparacin con


(tiempo de ejecucin / n threads). Se est suponiendo que
el volumen de cmputo se reparte de forma equitativa.

DESBALANCEO (EN LAS APLICACIONES)


Una incorrecta distribucin del volumen de cmputo por
thread implicar que algunos threads finalicen su trabajo
antes que otros. Por lo que los threads que han finalizado
tendrn que esperar. Esta espera supone un coste en ciclos
de reloj del procesador desaprovechados y por lo tanto un
overhead.
LA COMUNICACIN ENTRE LAS MEMORIAS DE LOS CORES.
Los threads de una ejecucin multi-thread pueden trabajar de manera
independiente y con datos independientes.
Este intercambio de datos se realiza de manera transparente al thread ya
que ste nicamente acceder a unas posiciones de memoria que
previamente otro thread habr modificado.

FIN

56

You might also like