QUEREMOS MÁS VELOCIDAD:
A menor Grano, mayor Grado
(Gp:) µP1
(Gp:) TAREA
(Gp:) µP2
(Gp:) µP3
(Gp:) µP4
(Gp:) µP5
! AUMENTAN LAS NECESIDADES DE COMUNICACIÓN !
Comunicación Hw < ===> Comunicación Sw
Memoria Común (Load/Store)
Comunicar µPi y Memoria
Paso Mensajes (Send/Receive)
Comunicar Pi con Pj
(Gp:) µP1
(Gp:) µP2
(Gp:) µPi
(Gp:) µPn
(Gp:) R E D
(Gp:) M1
(Gp:) Mj
(Gp:) Mk
(Gp:) P1
(Gp:) P2
(Gp:) Pi
(Gp:) Pn
(Gp:)
R E D
Es muy importante la Latencia y el Ancho de banda
¡ LA RED TIENE UNA IMPORTANCIA VITAL !
http://www.euroben.nl/reports/overview13.pdf
(Gp:) Gigabit Ethernet
(Gp:) 0,1
(Gp:) 29..120
(Gp:) Coste
*
50
¿Consumo?
¡ LA RED TIENE UNA IMPORTANCIA VITAL !
(Gp:) 2005: 30% consumo energía dinámica del chip y subiendo
(Gp:) 2010: 2,2 Km/cm2 de cables dentro de un MPSOC
(Gp:) LAN
(Gp:)
WAN
Sistema
Placa
ChipMulticore
(Gp:) Sistema
(Gp:) Placa
(Gp:) Chip
www.sicortex.com SC5832
(Gp:) 27 nodos
(Gp:) 36 placas
(Gp:) 6
núcleos
72 núcleos 96GB 100GF => 19.000
27/Mayo/2009: Quiebra
(Gp:) Tom Willis Sep/2007
Intel Connects Cables
(Gp:) IBM Sequoia
#2 Nov/12
1.572.864
nodos
(Gp:) LAN/WAN Internet
(Gp:) Multiprocesadores
(Gp:) Millones de nodos Cientos .. Miles
# Nodos dinámico Fijo
Enlaces largos Cortos
Red irregular Regular
Latencia alta Baja
CLASIFICACIÓN DE LAS REDES
MEDIO DE TRANSMISIÓN COMPARTIDO
DIRECTAS vs INDIRECTAS
TOTAL vs PARCIALMENTE CONECTADAS
PERFILES DE COMUNICACIÓN
1 => 1; N => N; 1 => N; N => 1
CARACTERIZACIÓN POR GRAFOS
GRADO Y DIÁMETRO
Medio de Transmisión Compartido: Ponerse de acuerdo en su uso (maestro/esclavo,
)
Síncronos vs asíncronos
Multiplexados
Arbitraje del bus
(Gp:) Redes locales
(Gp:) Ethernet
(Gp:) Token Ring
(Gp:) µP2
(Gp:) µPi
(Gp:) µPn
(Gp:) Mj
(Gp:) Mk
(Gp:) Buses (Backplane)
(Gp:) µP1
(Gp:) M1
Redes inalámbricas
Redes directas: Conexiones fijas entre los elementos (Pi, Pj) invariables durante la ejecución
(Gp:) P1
(Gp:) P4
(Gp:) P2
(Gp:) P3
Acoplamiento débil
Amplio uso en multicomputadores
Los propios Nodos encaminan
Los caminos del origen al
destino pueden ser distintos
(Gp:) Red Telefónica
Redes indirectas: Conexiones varían entre los elementos (µPi, Mj) variables durante la ejecución
Acoplamiento fuerte
Amplio uso en multiprocesadores
Encamina la propia red
(Gp:) µP1
(Gp:) µP2
(Gp:) µPi
(Gp:) µPn
(Gp:) R E D
(Gp:) M1
(Gp:) Mj
(Gp:) Mk
Totalmente conectadas: Cada elemento tiene conexión directa con los demás
(Gp:) Parcialmente conectadas:
¡ conexas !
(Gp:) Jerarquizadas: Aislar tráfico por localidades
(Gp:) Latencia mínima (Lm)
(Gp:) Alto coste O(n2)
(Gp:) No escalable
(Gp:) Menor coste O(n)
(Gp:) Mayor latencia (2Lm)
(Gp:) Encaminar más
complejo
Nodos => µP y/o Bancos de Memoria
Aristas => Enlaces de comunicación
Grado de un nodo: Líneas incidentes (Si unidireccionales Ge + Gs)
Relacionado con el número de puertos E/S
y, por lo tanto, con el coste
Deseable constante y pequeño
Grado de la red: El del nodo con mayor grado (4)
Deseable regularidad
Compromiso en el Grado
(Gp:) Más conectividad => Menor latencia
Mayor coste
(Gp:) Menor conectividad => Más latencia
Menor coste
(Gp:) 1
(Gp:) 2
(Gp:) 3
(Gp:) 4
(Gp:) 2
(Gp:) A
(Gp:) B
(Gp:) C
(Gp:) D
(Gp:) E
Diámetro de la red: Camino más distante de entre los mínimos que unen a dos nodos cualesquiera.
Relación directa con la latencia
(Gp:) ¿1, 2, 3, ……?
Métrica => Número de saltos => 2
(Gp:) 1
(Gp:) 4
(Gp:) 7
(Gp:) 6
(Gp:) 5
(Gp:) 9
(Gp:) 2
(Gp:) 8
(Gp:) 3
(Gp:) ¿5? => 2, 5, 4, 8, 7, 6
(Gp:) 4 => 2, 5, 4, 3, 6 más corto
Enlaces de comunicación establecidos concurrentemente.
(Gp:) 1 => 1
(Gp:) Ventanilla única
(Gp:) Bus Común
(Gp:) N => N
(Gp:) Varias Ventanillas
(Gp:) T.V. News
(Gp:) 1 => N
(Gp:) Difusión, Broadcast, Multicast
(Gp:) Reducción
(Gp:) N => 1
(Gp:) Máquinas CRCW
(Gp:) µP1
(Gp:) M1
(Gp:) Mj
(Gp:) Mk
(Gp:) µP2
(Gp:) µPi
(Gp:) µPn
¿Cuántos Pi podré instalar?
Pentium 4 a 3,8GHz
Bus de 64 bits y 800MHz
¿Un único Pi satura el Bus?
(Gp:) $
(Gp:) $
(Gp:) $
(Gp:) $
(Gp:) $
(Gp:) ¡ Cachés !
(Gp:) µP2
(Gp:) µPn
¡ Algunos problemas !
(Gp:) Fallo costoso
(Gp:) µP1
(Gp:) ? 98% Hit
(Gp:) colisiones
(Gp:) ¿ Niveles cache ?
(Gp:) ¿ Cuánto hit en cache ld ?
(Gp:) Simulación con:
PTLsim/X arquitectura tipo x86-64
L1D = 16KB [128 conjuntos, 4 vías]
SPEC CPU2006
400 millones de instrucciones simuladas
(Gp:) Benchmark
(Gp:) Benchmark
(Gp:) L1D
(Gp:) L2
(Gp:) L3
(Gp:) 88,3
(Gp:) 65,2
(Gp:) 22,7
(Gp:) L*
(Gp:) 98,0
(Gp:) %Hit
(Gp:) 16K
(Gp:) 256K
(Gp:) 4M
(Gp:) L1I 32K => 99,5%
(Gp:) µP1
(Gp:) M1
(Gp:) Mj
(Gp:) Mk
(Gp:) µP2
(Gp:) µPi
(Gp:) µPn
(Gp:) L
(Gp:) L
(Gp:) L
(Gp:) L
(Gp:)
Shared L3 cache
(Gp:) L3 cache controler
(Gp:) Shared Bus
(Gp:)
Shared L2 cache
(Gp:) L2 cache controler
(Gp:) Shared Bus
¿ Soluciones ?
Bus pipelining
(Gp:) Pedir bus
Arbitrar
Dar bus
Usar bus
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) RQ
(Gp:) ACK
(Gp:) 1 2 3 4 5
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) RQ
(Gp:) P
(Gp:) 1 2 3 4 5 6
(Gp:) RPLY
(Gp:) Write
(Gp:) Read
¿Cuántos ciclos 2W y 4R?
(Gp:) read 1
write 2
write 3
read 4
read 5
read 6
bus ocupado
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) RQ
(Gp:) RPL
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) Stall
(Gp:) P
(Gp:) Stall
(Gp:) RQ
(Gp:) ACK
(Gp:) AR
(Gp:) ARB
(Gp:) Stall
(Gp:) Stall
(Gp:) AG
(Gp:) Stall
(Gp:) RQ
(Gp:) ACK
(Gp:) AR
(Gp:) Stall
(Gp:) Stall
(Gp:) ARB
(Gp:) Stall
(Gp:) AG
(Gp:) Stall
(Gp:) RQ
(Gp:) RPL
(Gp:) P
(Gp:) AR
(Gp:) Stall
(Gp:) ARB
(Gp:) Stall
(Gp:) AG
(Gp:) RQ
(Gp:) RPL
(Gp:) P
(Gp:) AR
(Gp:) Stall
(Gp:) ARB
(Gp:) AG
(Gp:) Stall
(Gp:) Stall
(Gp:) RQ
(Gp:) RPL
(Gp:) P
(Gp:) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Con pipeline mejor
?
Split transaction: Pipelining + Dividir la transacción en dos
8 peticiones pendientes en SGI
112 peticiones pendientes en SUN E 6000
(Gp:) read 1
resp 1
write 2
ack 2
write 3
ack 3
read 4
resp 4
read 5
resp 5
read 6
resp 6
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) RQ
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) Stall
(Gp:) Stall
(Gp:) RQ
(Gp:) Stall
(Gp:) Stall
(Gp:) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
(Gp:) RPL
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) RQ
(Gp:) ACK
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) RQ
(Gp:) ACK
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) RQ
(Gp:) RPL
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) RPL
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) Stall
(Gp:) Stall
(Gp:) RQ
(Gp:) Stall
(Gp:) Stall
(Gp:) RPL
(Gp:) AR
(Gp:) ARB
(Gp:) AG
(Gp:) RpA
(Gp:) RqA
(Gp:) RqB
(Gp:) RqC
(Gp:) RpB
(Gp:) RpC
¿ Mejora ?
(Gp:) RqA
(Gp:) 1 2 3 4 5 6 7 8 9 10 11 12 13 14
(Gp:) RpA
(Gp:) RqB
(Gp:) RpB
(Gp:) RqC
(Gp:) RpC
(Gp:) Transacciones
variables: 1..6 ciclos
Modo ráfaga (Burst): Transacciones largas (línea de caché)
(Gp:) Normal
(Gp:) Arb
(Gp:) 1 2 3 4 5 6 7 8 9 10 11 12 13 14
(Gp:) Cmd
(Gp:) Dir
(Gp:) Dato
(Gp:) Arb
(Gp:) Cmd
(Gp:) Dir
(Gp:) Dato
(Gp:) Arb
(Gp:) Cmd
(Gp:) Dir
(Gp:) Dato
(Gp:) Arb
(Gp:) Cmd
(Gp:) Dir
(Gp:) Dato
(Gp:) Arb
(Gp:) Cmd
(Gp:) Dir
(Gp:) Dato
(Gp:) Dato
(Gp:) Dato
(Gp:) Dato
(Gp:) Ráfaga
¿ Inconveniente ?
(Gp:) arbitraje
mensaje A
mensaje B
(Gp:) GrA
(Gp:) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(Gp:) Cmd
(Gp:) Dir
(Gp:) Dato
(Gp:) Dato
(Gp:) Dato
(Gp:) Dato
(Gp:) GrB
(Gp:) Cmd
(Gp:) Dir
(Gp:) Dato
(Gp:) ReA
(Gp:) Eti
(Gp:) Dato
(Gp:) Dato
(Gp:) Dato
(Gp:) Dato
(Gp:) Mensaje más prioritario
(Gp:) Mensaje continuado
Buses jerárquicos
(Gp:) Buses múltiples
Concluyendo
Cachés (L1, L2 y L3)
Pipelining
Split Transaction
Modo ráfaga
Buses Jerárquicos
Buses Múltiples
Muy costoso + 32µP
(Gp:) Difusión
Serialización
(Gp:) Frecuencia
Secuencial
(Gp:) Evolución FSB Intel
Menor diámetro aumentando el grado
Compromiso grado vs diámetro y muchos nodos
Tabla de parámetros
Encaminamiento
Generalidades
Array lineal
Anillo simple y de grado n
Conectividad total
Árbol, Fat Tree y Estrella
Mallas, Toroides y WK-rec
Hipercubo con y sin ciclo
(Gp:) P
(Gp:) M
(Gp:) IC
(Gp:) Red con enlaces directos entre Pi
(Gp:) P
(Gp:) M
(Gp:) IC
(Gp:) P
(Gp:) M
(Gp:) IC
Nodos => PCs o similares
(Gp:) Pn
(Gp:) L2
(Gp:) Switch
(Gp:) MultiC más integrado
(Gp:) De otros nodos
(Gp:) A otros nodos
Ejemplos: Alpha 21364, SiCortex, Intel Core i7 y SCC
(Gp:) Buffers
Arbitraje
Encamina.
.. 10GBseg
15nseg Lat
.. 128 nodos [8×16]
.. 4 TB MP
12 diámetro
(Gp:) www.sicortex.com
(Gp:) 500MHz
(Gp:) 2007
2GBseg
1µseg Lat
(Gp:) Kautz Graph
(Gp:) www.intel.com/technology/quickpath/introduction.pdf
(Gp:) 2008
19,2..25,6 GBseg
(Gp:) 2012
Mayo 2010: Intel lanza de forma selectiva el SCC [prototipo]
48 IA-32
núcleos
Memoria común sin coherencia ? Sw
http://techresearch.intel.com/spaw2/uploads/files/SCC_Platform_Overview.pdf
64 GBseg
(Gp:) Nov 2012: Intel lanza el coprocesador Xeon Phi (60/61 núcleos)
70 GBseg
Jul 2014: Sale a la venta masiva la placa Parallella Epiphany-16
(Gp:) onChip Write
Network
(Gp:) offChip Write
Network
(Gp:) Read Request
Network
(Gp:) 8B / ciclo
(Gp:) 1B / ciclo
(Gp:) 1R / 8 ciclos
(Gp:) 38,4Gbps
(Gp:) 4,8Gbps
(Gp:) 2,4Gbps
Jul 2014: Sale a la venta masiva la placa Parallella Epiphany-16
Mecanismo Hw/Sw para que la información llegue del origen al
destino.
Hay que distinguir entre:
Algoritmo: Elección del camino y gestión de conflictos
Técnica: Modo de propagar la información
(Gp:) 1
(Gp:) 4
(Gp:) 7
(Gp:) 6
(Gp:) 5
(Gp:) 9
(Gp:) 2
(Gp:) 8
(Gp:) 3
(Gp:) Conmutación de paquetes
(Gp:) Redes directas
(Gp:) Conmutación de circuitos
(Gp:) Redes indirectas
8×8 = 64 nodos
Diámetro = 7+7=14
Numerar nodo 0..63
(Gp:) fila
(Gp:) col
(Gp:) 0..7
(Gp:) 0..7
(Gp:) 0,0
(Gp:) 0,1
(Gp:) 0,2
(Gp:) 0,7
(Gp:) 0,3
(Gp:) 0,4
(Gp:) 0,5
(Gp:) 0,6
(Gp:) 1,0
(Gp:) 2,0
(Gp:) 7,0
(Gp:) 3,0
(Gp:) 4,0
(Gp:) 5,0
(Gp:) 6,0
(Gp:) A
(Gp:) B
(Gp:) Dinámico: A[2,3] => B[5,1]
(Gp:) E
(Gp:) datos
(Gp:) L
(Gp:) 5,1
Algo: MovCol+MovFila
(Gp:) C
(Gp:) D
(Gp:) En origen: C[3,4] => D[1,6]
(Gp:) E
(Gp:) datos
(Gp:) L
(Gp:) 1,6
(Gp:) ,N,N,E,E
(Gp:) E
(Gp:) datos
(Gp:) L
(Gp:) 1,6
(Gp:) ,N,N,E
N[00], E[01], S[10], O[11]
(Gp:) SiCortex, Intel QuickPath, Epiphany
(Gp:) Epiphany-III
(Gp:) Dir
(Gp:) Dato
(Gp:) Ctrl
(Gp:) 32 64 8
(Gp:) fila
(Gp:) col
(Gp:) dirMemLocal
(Gp:) 6 6 20
Arbitraje Round Robin
Broadcast
En conmutación de paquetes veremos dos técnicas:
(Gp:) Buffer de
paquete
(Gp:) Los mensajes se
dividen en paquetes (64..1024bits) y se envían paquete a paquete
(Gp:) Origen
(Gp:) Almacenamiento y reenvío
(Gp:) Destino
Elevada latencia (3*Tiempo trans. Paquete Ttp)
(Gp:) Origen
(Gp:) Wormhole
(Gp:) Destino
Mejora la latencia (2*Tiempo trans. Flit + Ttp)
(Gp:) Buffer de
flit
(Gp:) Los paquetes se
dividen en flits (2..64bits) y se envían flit a flit
(Gp:) 2
(Gp:) 1
(Gp:) 0
(Gp:) 0
(Gp:) 0
(Gp:) 0
(Gp:) 1
(Gp:) 1
(Gp:) 0
(Gp:) 1
(Gp:) 2
(Gp:) 2
(Gp:) 0
(Gp:) 1
(Gp:) 2
(Gp:) Header
(Gp:) Payload
(Gp:) CRC
(Gp:) 8
(Gp:) 8
(Gp:) 64
(Gp:) 20 | 10 | 5
(Gp:) Flit
(Gp:) Phit
Distancia
Latencia
Almacena y
Reenvío
(Gp:) Wormhole
Toro2D 8*16 Alpha 21364
Diámetro = 12
Flit = 39 b Paquete = 702b
Ancho Banda = 3,2Gb*seg
Tflit = 12,1875nseg
Tpaq = 219,375nseg
AlmaReen => 2.632,5 nseg
Wormhole => 353,4 nseg
(Gp:) + 7 veces
mejor
(Gp:) A
(Gp:) B
(Gp:) C
(Gp:) D
(Gp:) D
(Gp:) C
(Gp:) A
(Gp:) B
(Gp:) D
(Gp:) C
(Gp:) A
(Gp:) B
(Gp:) D
(Gp:) C
(Gp:) A
(Gp:) B
(Gp:) D
(Gp:) C
(Gp:) A
(Gp:) B
¡ Interbloqueo !
(Gp:) A
(Gp:) D
(Gp:) B
(Gp:) A
(Gp:) D
(Gp:) B
(Gp:) A
(Gp:) D
Una forma de evitar el interbloqueo
(Gp:) ARRAY LINEAL
(Gp:) 0
(Gp:) 1
(Gp:) 2
(Gp:) 3
(Gp:) 4
(Gp:) 5
(Gp:) 6
(Gp:) 7
(Gp:) ANILLO (DE GRADO 2)
(Gp:) 0
(Gp:) 1
(Gp:) 2
(Gp:) 3
(Gp:) 4
(Gp:) 5
(Gp:) 6
(Gp:) 7
(Gp:) ANILLO (DE GRADO n 3)
(Gp:) 0
(Gp:) 1
(Gp:) 2
(Gp:) 3
(Gp:) 4
(Gp:) 5
(Gp:) 6
(Gp:) 7
Grado, diámetro, escalable,
Navigation in a small world Jon M. Kleinberg
Nature 24 Agosto 2000
N = 8 n = 3
(Gp:) Salto 3
(Gp:) 1
(Gp:) 1
(Gp:) 1
(Gp:) 2
(Gp:) 2
(Gp:) 2
(Gp:) 3
(Gp:) d = 3, d = 1,71
(Gp:) Salto 2
(Gp:) 1
(Gp:) 1
(Gp:) 1
(Gp:) 3
(Gp:) 2
(Gp:) 2
(Gp:) 2
(Gp:) d = 3, d = 1,71
(Gp:) Salto 4
(Gp:) 1
(Gp:) 2
(Gp:) 1
(Gp:) 1
(Gp:) 2
(Gp:) 2
(Gp:) 2
(Gp:) d = 2, d = 1,57
N = 16 n = 3
(Gp:) Salto 2
(Gp:) d = 6, d = 3,2
(Gp:) 6
(Gp:) Salto 3
(Gp:) 5
(Gp:) d = 5, d = 2,67
(Gp:) Salto 4
(Gp:) 4
(Gp:) d = 4, d = 2,27
Salto 5 iguala y 7 y 8 empeoran
N = 16 n = 4
(Gp:) d = 4, d = 2,13
(Gp:) 4
(Gp:) 3
(Gp:) d = 3, d = 2
(Gp:) Salto 5
(Gp:) 4
(Gp:) d = 4, d = 2,13
¿Cómo podría ser N=32 y n=5?
(Gp:) Salto 3
(Gp:) Salto 4
N = 32 n = 5
(Gp:) d = 4, d = ???
4
¿ Escalable ?
4
(Gp:) 0
(Gp:) 1
(Gp:) 2
(Gp:) 3
(Gp:) 4
(Gp:) 5
(Gp:) 6
(Gp:) 7
Grado, diámetro, escalable,
(Gp:) Moverse por aquí
con menor grado
(Gp:) K=1
(Gp:) K=2
(Gp:) K=3
(Gp:) K=4
ÁRBOL BINARIO
(Gp:) ÁRBOL BINARIO EQUILIBRADO
Fat Tree
(Gp:) 2
(Gp:) 2
(Gp:) 2
(Gp:) 2
(Gp:) 4
(Gp:) 4
Grado, diámetro, escalable,
Cuello de botella [tráfico aleatorio]
(Gp:) ¿Cómo encaminar A ? B?
(Gp:) ESTRELLA
Fat Tree ¡Indirectas!
¿Más nodos más niveles? => más latencia
(Gp:) 32
(Gp:) 16
(Gp:) 8
(Gp:) 8
Dragonfly high radix routers
local channels
(Gp:) 36, 100 .. 648
56Gb/s
(Gp:) K=3
(Gp:) MALLA 3D
MALLA 2D
(Gp:) K=1
(Gp:) K=2
M3D 102410*10*10 => D=27
¿Escalabilidad cuadrática o cúbica?
(Gp:) Encaminamiento ordenado por direcciones
(Gp:) O(1,1,1)
(Gp:) D(3,3,3)
(Gp:) O(2,2,1)
(Gp:) D(3,3,2)
¡Colisión!
¿ Interbloqueos ?
Grado, diámetro, escalable,
¿ Cuello de botella?
¿Cuello de botella tráfico N?N?
(Gp:) 18
(Gp:) 18
(Gp:) 18
(Gp:) 18
(Gp:) 18
(Gp:) 18
(Gp:) 18
(Gp:) 18
(Gp:) 18
(Gp:) 18
(Gp:) 18
(Gp:) 18
¡ 18 msj por todos los enlaces en cada sentido !
TOROIDES (2D y 3D)
K=1
K=2
T3D 102410*10*10 => D=15
¡ Anillo embebido !
Grado, diámetro, escalable,
Cables largos vs cortos
Muchos cruces
Grado, diámetro, escalable,
¿Grado 5?
(Gp:) Grado 3
(Gp:) (3,1)
(3,2)
(Gp:) (3,3)
(Gp:) Grado 4
(Gp:) (4,1)
(Gp:) (4,2)
(Gp:) (4,3)
(5,1)
(5,2)
WK (4,5) 1024 => D=31
¿Cuello de botella tráfico N?N?
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 5
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 9
(Gp:) 16
(Gp:) 16
(Gp:) 16
(Gp:) 16
(Gp:) 16
(Gp:) 16
HIPERCUBO
(Gp:) Dim1
Dim2
Dim3
Dim4
(Gp:) Diámetro = log2 N
(Gp:) Grado = log2 N
(Gp:) Fácil encaminar
N=2k nodos, k dimensiones = log2 N
Escalable a costa de demasiado grado
Topología cada vez menos utilizada
Encaminamiento en HIPERCUBO (Sea N=16)
(Gp:) 0001
(Gp:) 0010
(Gp:) 0100
(Gp:) 1000
(Gp:) 1
(Gp:) 2
(Gp:) 3
(Gp:) 4
(Gp:) 1. Numerar nodos en binario. Nodos adyacentes difieren en un bit (el asociado a la dirección que les une)
(Gp:) 0000
(Gp:) 4321
(Gp:) 1010
(Gp:) 1111
(Gp:) 0101
(Gp:) 0111
(Gp:) 0110
(Gp:) 0011
2. Enviar mensaje por el enlace asociado a la menor dirección donde no coinciden bit del nodo actual y bit del nodo destino
(Gp:) Nodo actual 0111
Nodo destino 1010
(Gp:) 0110
1010
(Gp:) 0010
1010
(Gp:) 1010
1010
¿ Realizar ORX ?
0111 ORX 1010 = 1101
(Gp:) ¿Caminos distintos?
HIPERCUBO CON CICLOS
K=3
(Gp:) 2
(Gp:) 2
(Gp:) 4
(Gp:) 3
(Gp:) 4
(Gp:) 5
(Gp:) 5
(Gp:) 4
(Gp:) 3
(Gp:) 4
(Gp:) 1
(Gp:) 3
(Gp:) 1
(Gp:) 2
(Gp:) 2
(Gp:) 3
(Gp:) 6
(Gp:) 4
(Gp:) 4
(Gp:) 3
(Gp:) 3
(Gp:) 1
(Gp:) 5
(Gp:) 0
Grado, diámetro, escalable,
¿ Diámetro ?
¿Cómo conectar unos 1024 nodos?
(Gp:) M3D 10*10*10
(Gp:) 27
(Gp:) 6*
(Gp:) T3D 10*10*10
(Gp:) 15
(Gp:) 6
(Gp:) Hipercubo 10
(Gp:) 10
(Gp:) 10
(Gp:) HiperCiclo 7
(Gp:) 3
(Gp:) 896 N
(Gp:) Grafo Kautz
(Gp:) 6
(Gp:) 3
(Gp:) 972 N
(Gp:) 16
(Gp:) WK 4ary 5rec
(Gp:) 31
(Gp:) 4*
(Gp:) M2D 32*32
(Gp:) 62
(Gp:) 4*
(Gp:) Árbol
(Gp:) 18
(Gp:) 3*
(Gp:) Topología
(Gp:) Diámetro
(Gp:) Grado
(Gp:) Total
(Gp:) 1
(Gp:) 1023
(Gp:) Anillo10
(Gp:) 9
(Gp:) 10
(Gp:) Anillo2
(Gp:) 512
(Gp:) 2
(Gp:) Array lineal
(Gp:) 1023
(Gp:) 2*
(Gp:) Topología
(Gp:) Grado
(Gp:) Diámetro
(Gp:) Nº de nodos
(Gp:) Array lineal
(Gp:) Anillo
(Gp:) Anillo de grado n
(Gp:) Árbol binario
(Gp:) Árbol binario equilibrado
(Gp:) Estrella
(Gp:) Malla
(Gp:) Toroide
(Gp:) Hipercubo
(Gp:) Hipercubo con ciclos
(Gp:) N
(Gp:) 2
(Gp:) N-1
(Gp:) N
(Gp:) 2
(Gp:) ?N/2?
(Gp:) N
(Gp:) n=log2N
(Gp:) n-1
(Gp:) 2K-1
(Gp:) 3
(Gp:) 2*(K-1)
(Gp:) 2K-1
(Gp:) 2K
(Gp:) 2*(K-1)
(Gp:) N
(Gp:) N-1
(Gp:) 2
(Gp:) nK
(Gp:) 2*K
(Gp:) K*(n-1)
(Gp:) nK
(Gp:) 2*K
(Gp:) K* ? n/2 ?
(Gp:) 2K
(Gp:) K
(Gp:) K
(Gp:) K*2K
(Gp:) 3
(Gp:) 2*K – 1 + ? K/2 ?
MIMD
HWANG (1993) IDENTIFICA TRES GENERACIONES:
1983-1987 Hipercubo con Encaminamiento Sw
1988-1992 Malla con Encaminamiento Hw (Sw de grano medio)
1993-1997 µP y comunicaciones en el mismo chip (grano fino)
(Gp:) Multiprocessor systems-on-chips (MPSoCs)
(Gp:) Hoy 4..16 núcleos
¿Se llegará a 400 en 2020?
(Gp:) 1983-1987
(Gp:) 1988-1992
(Gp:) 1993-1997
M1
M2
M3
Mm
?P1
?P2
?P3
?Pn
Crossbar
Funcionalidad de los conmutadores simples:
colisión
(Gp:) difusión
(Gp:) Perfil N*M
(Gp:) O (N2)
(Gp:) Muchas patas
8×8 OnChip
mm2 => 5 núcleos
W => 2 núcleos
(Gp:) crossbar
8*8
(Gp:) O (64)
Perfil 8*8
Latencia 1
¿ Reducir O( N2) a costa de
?
(Gp:) Usar sólo crossbar 2*2
(Gp:) directo
(Gp:) cruce
(Gp:) difusión
(Gp:) colisión
(Gp:) etapa 1
(Gp:) etapa 2
(Gp:) etapa m
(Gp:) Red de interconexión
(Gp:) Conjunto de crossbar 2*2
?
(Gp:) a
(Gp:) b
(Gp:) c
(Gp:) d
(Gp:) e
(Gp:) f
(Gp:) g
(Gp:) h
Red de interconexión perfect Suffle
Limitado a N = potencia de 2
(Gp:) N = 2
N = 4
Viable: [a,f b,e c,h d,g]
NoViable: [a,f – c,e –
….]
Crossbar ? 24
Red ? ? 16
Red de interconexión perfect Suffle
Limitado a N = potencia de 2
(Gp:) 000
(Gp:) 001
(Gp:) 010
(Gp:) 011
(Gp:) 100
(Gp:) 101
(Gp:) 110
(Gp:) 111
(Gp:) 000
(Gp:) 001
(Gp:) 010
(Gp:) 011
(Gp:) 100
(Gp:) 101
(Gp:) 110
(Gp:) 111
(Gp:) ¿Encaminamiento?
Sea de 001 a 010
(Gp:) 001
(Gp:) 010
(Gp:) 001
(Gp:) 010
(Gp:) Bit igual => directo
Bit distinto => cruce
(Gp:) 001
(Gp:) 010
(Gp:) 001
(Gp:) 010
(Gp:) 011
(Gp:) 001
(Gp:) 100
(Gp:) 100
(Gp:) 110
(Gp:) 101
Colisión
¿ Latencia
y O( ) ?
¿Mejorable?
(Gp:) 000
(Gp:) 001
(Gp:) 010
(Gp:) 011
(Gp:) 100
(Gp:) 101
(Gp:) 110
(Gp:) 111
(Gp:) 000
(Gp:) 001
(Gp:) 010
(Gp:) 011
(Gp:) 100
(Gp:) 101
(Gp:) 110
(Gp:) 111
(Gp:) 101
(Gp:) 000
(Gp:) 001
(Gp:) 010
(Gp:) 011
(Gp:) 100
(Gp:) 101
(Gp:) 110
(Gp:) 111
¡ Permite difusión !
BUS Barato y limitado 2..32
CROSSBAR Más caro. Bueno para N moderado
Mayor ancho de banda y fácil encaminar
MULTIETAPA Compromiso entre Bus y Crossbar
#NODOS TIPO DE RED SUPERCOMPUTADOR
..N Configurable Bull systems
>50.000 Dragonfly Cray Inc. XC30
.. 1.152 Toro 2y3D Cray Inc. XE6/XE6m
(96+96)*N Toro 3D Cray Inc. XK7
.. 4.096 ..? Toro 3D + Árbol Eurotech Aurora
.. 98.304 Toro 6D Fujitsu PRIMEHPC FX 10
.. 512 Crossbar multidim. Hitachi SR 16000
.. 1.572.864 Toro 5D IBM BlueGene/Q
256 x 2.048 Variable IBM eServer p775
.. 8.192 Crossbar multidim. NEC SX-9
.. 4.096 Toro 2D .. ? SGI Altix UV
intercluster