Tema 6: Procesadores Vectoriales

Anuncio
7HPD3URFHVDGRUHV9HFWRULDOHV
•2EMHWLYRV
•5HIHUHQFLDV
•$UTXLWHFWXUDEiVLFD
–'LVHxRGHXQSURFHVDGRUYHFWRULDO
–6LVWHPDGHPHPRULD
–3UREOHPDV
–0HMRUDVDODDUTXLWHFWXUD
•9HFWRUL]DFLyQ GHOFyGLJR
•0iTXLQDV6,0'
•5HGHVGHLQWHUFRQH[LyQSDUDPiTXLQDV6,0'
1
Procesadores vectoriales
Objetivos
2EMHWLYRV
•&RPSUHQGHUODH[LVWHQFLDGHSDUDOHOLVPRGHGDWRVHQ
ORVSURJUDPDV
•&RQRFHUODVGLVWLQWDVIRUPDVGHH[SORWDUHVWHSDUDOHOLVPR
•&RPSUHQGHUODVOLPLWDFLRQHVTXHVHSUHVHQWDQDODKRUD
GHLQWHQWDUH[SORWDUOR
2
1
Procesadores vectoriales
Referencias
5HIHUHQFLDV
•3DUDPiTXLQDVYHFWRULDOHVHO+HQQHVV\3DWWHUVRQHGLFLyQ
PXFKDVILJXUDV\HMHPSORVHVWiQWRPDGDVGHpO
•3DUDPiTXLQDV6,0'HO.DL+ZDQJ
3
Procesadores vectoriales
Arquitectura básica
8WLOLGDGGHXQSURFHVDGRUYHFWRULDO
Ej.: calcular
<
= a*; + <
HVFDODU
YHFWRULDO
ld
addi
loop: ld
multd
ld
add
sd
addi
addi
sub
bnz
f0,a
r4,rx,#512
f2,0(rx)
f2,f0,f2
f4,0(ry)
f4,f2,f4
f4,0(ry)
rx,rx,#8
ry,ry,#8
r20,r4,rx
r20,loop
ld
f0,a
lv
v1,rx
multsv v2,f0,v1
lv
v3,ry
addv v4,v2,v3
sv
ry,v4
4
2
Procesadores vectoriales
Arquitectura básica
$UTXLWHFWXUDEiVLFDGHXQFRPSXWDGRUYHFWRULDO
PHPRULD
VXPDUHVWDHQ&)
FDUJDDOPDF
PXOWLSOLFDFLyQHQ&)
GLYLVLyQHQ&)
HQWHURV
OyJLFDV
unidades de ejecución
registros
vectoriales
registros
escalares
Procesadores vectoriales
5
Arquitectura básica
(OHPHQWRVGHODDUTXLWHFWXUD
5HJLVWURVYHFWRULDOHV
•contienen los operandos vectoriales en máquinas de registros
•no existen si la máquina es memoria-memoria
•valores típicos de componentes son 64 o 128
•deben tener al menos 2 puertos de lectura y uno de escritura
8QLGDGHVIXQFLRQDOHVYHFWRULDOHV
•ejecutan las operaciones vectoriales
•están segmentadas, y suelen tener latencia 1
•una unidad de control vigila las dependencias
8QLGDGGHFDUJD\DOPDFHQDPLHQWR
•gestiona transferencias de vectores desde/a memoria
•puede estar segmentada
•también puede ocuparse de los datos escalares
6
3
Procesadores vectoriales
Arquitectura básica
(OHPHQWRVGHODDUTXLWHFWXUD,,
5HJLVWURVHVFDODUHV
•contienen los operandos escalares
•se usan en operaciones vectoriales y para calcular direcciones
•se necesitan varios puertos de lectura y escritura
8QLGDGHVIXQFLRQDOHVHVFDODUHV
•pueden existir para operaciones específicamente escalares
•pueden no existir si para operaciones escalares se usan las
unidades vectoriales
7
Procesadores vectoriales
Arquitectura básica
9HQWDMDVGHODVPiTXLQDVYHFWRULDOHV
•3URSRUFLRQDQJUDQDSURYHFKDPLHQWRGHOSDUDOHOLVPRGHGDWRV
FRQXQFRQWUROUHODWLYDPHQWHVHQFLOOR
•8QD~QLFDLQVWUXFFLyQHVSHFLILFDXQDJUDQFDQWLGDGGHWUDEDMR
UHGXFLHQGRODQHFHVLGDGGHDQFKRGHEDQGDGHLQVWUXFFLRQHV
•2SWLPL]DQHOXVRGHODPHPRULDFRQDFFHVRVSUHGHFLEOHVTXH
VHSXHGHQVRODSDU
•(OLPLQDQGHSHQGHQFLDVGHFRQWUROHLQVWUXFFLRQHVGH
FRPSUREDFLyQ\FRQWDELOLGDG
8
4
Procesadores vectoriales
Arquitectura básica
6LVWHPDGHPHPRULD
(QXQDPiTXLQDYHFWRULDOORVDFFHVRVQRVRQDGDWRVLQGLYLGXDOHV
VLQRDFROHFFLRQHVGHHOORVYHFWRUHV
/DGLVWULEXFLyQGHHVWRVGDWRVHQPHPRULDVLJXHXQDHFXDFLyQ
JHQHUDOPHQWHVHQFLOOD3RUHMHPSORHQXQDPDWUL]DOPDFHQDGD
SRUILODV
•leer un vector-fila es leer posiciones de memoria consecutivas
•leer un vector-columna es leer posiciones distanciadas en Q,
donde Q es el número de elementos de una fila
(OVLVWHPDGHPHPRULDVHGLVHxDGHIRUPDTXH
•se puedan realizar accesos a varios elementos a la vez
•el tiempo de inicio del acceso sea sólo para el primer elemento
9
Procesadores vectoriales
Arquitectura básica
6LVWHPDGHPHPRULD,,
6HXWLOL]DQSULQFLSDOPHQWHGRVRSFLRQHV
•memoria entrelazada (generalmente de orden inferior, con
factor de entrelazado palabra)
•bancos de memoria independientes
/DPHPRULDHQWUHOD]DGDWLHQHXQGLVHxRPiVVHQFLOOR\PHQRV
FRVWRVRSHURPHQRVIOH[LEOH
/DPHPRULDHQEDQFRVLQGHSHQGLHQWHVHVPiVFRVWRVDFDGDEDQFR
QHFHVLWDVXEXVSHURHVPiVIOH[LEOH
6HSXHGHSHQVDUHQVROXFLRQHVLQWHUPHGLDVPHPRULDHQEDQFRV
LQGHSHQGLHQWHVFRQXQEXVFRPSDUWLGRSRUWRGRVORVEDQFRV 10
5
Procesadores vectoriales
Arquitectura básica
6LVWHPDGHPHPRULD,,,
1
PHPRULD
2
3
4
HQWUHOD]DGD
controlador
de memoria
CPU
1
2
3
controlador
de
memoria
CPU
PHPRULD
PXOWLEDQFR
4
11
Procesadores vectoriales
Arquitectura básica
6LVWHPDGHPHPRULD,9
Ejemplo de funcionamiento: acceso al vector de 8 dobles palabras
(8*64b) con dirección 136 (88h)
010 001 000
palabra del banco
Banco 0
dir
acceso
Banco 1
dir
acceso
Banco 2
dir
acceso
Banco 3
dir
acceso
Banco 4
dir
acceso
Banco 5
dir
acceso
Banco 6
dir
acceso
Banco 7
dir
acceso
nº banco
(192)
136
dato
dato
144
dato
PHPRULDHQWUHOD]DGD
152
dato
160
dato
168
dato
176
dato 184
12
6
Procesadores vectoriales
Arquitectura básica
6LVWHPDGHPHPRULD9
Ej.: el mismo acceso
Banco 0
dir
acceso
dato
Banco 1
dir
acceso
dato
192
136
Banco 2
dir
acceso
dato
144
Banco 3
dir
acceso
dato
152
Banco 4
dir
acceso
dato
160
Banco 5
dir
acceso
dato
168
Banco 6
dir
acceso
dato
176
Banco 7
dir
acceso
dato
184
PHPRULDPXOWLEDQFREXVGHGLFDGR
13
Procesadores vectoriales
Arquitectura básica
6LVWHPDGHPHPRULD9,
Ej.: el mismo acceso
Banco 0
dir
acceso
Banco 1
dir
acceso
Banco 2
dir
acceso
Banco 3
dir
acceso
Banco 4
dir
acceso
Banco 5
dir
acceso
Banco 6
dir
acceso
Banco 7
dir
acceso
dato
192
136
dato
dato
144
dato
152
dato
160
dato
168
dato
176
dato 184
PHPRULDPXOWLEDQFREXVGHGDWRVFRPSDUWLGR
14
7
Procesadores vectoriales
Arquitectura básica
3UREOHPDV
3UREOHPDODORQJLWXGGHOYHFWRUHQODDSOLFDFLyQQRWLHQHSRU
TXpFRLQFLGLUFRQHOWDPDxRGHORVUHJLVWURVJHQHUDOPHQWHQROR
KDFH
se añade un registro escalar llamado VLR (YHFWRUOHQJWK
UHJLVWHU, registro de longitud).
•Este registro contiene el número de elementos de los registros
que se utilizan en cada operación
•Si un cálculo necesita vectores mayores que lo que cabe en un
registro, se divide en bloques y se hace un bucle (VWULSPLQLQJ)
6ROXFLyQ
15
Procesadores vectoriales
Arquitectura básica
3UREOHPDV,,
10 i=1,n
Y(i) = a*X(i) + Y(i)
GR
Ejemplo de VWULSPLQLQJ:
10
inicio=1
VL=(n mod MVL)
GR 1 j=0,(n/MVL)
GR 10 i=inicio,inicio+VL-1
Y(i)=a*X(i)+Y(i)
10 FRQWLQXH
incio=inicio+VL
VL=MVL
1 FRQWLQXH
16
8
Procesadores vectoriales
Arquitectura básica
3UREOHPDV,,,
Ejecución del bucle con VWULSPLQLQJ
M
(nº de ejecuciones
del bucle externo)
1
0
UDQJRGHL
(nº de ejecuciones 1-m
m+1 del bucle externo)
- m+MVL
2
3
...
...
...
n/MVL
...
n-MVL
+1 -- n
donde: m=n mod MVL
17
Procesadores vectoriales
Arquitectura básica
3UREOHPDV,9
3UREOHPDHOHVSDFLDGRµVWULGH¶GHXQYHFWRUHQPHPRULDQR
WLHQHSRUTXpVHUHVGHFLUORVHOHPHQWRVGHXQYHFWRUSXHGHQ
QRHVWDUFRQWLJXRVHQPHPRULD
Ejemplo: almacenamiento de una matriz en memoria (por filas)
 D11
D
 21
 ...

D 1
D
12
D
22
...
D
2

... D 2 
... ... 

... D 
...
D
1
18
9
Procesadores vectoriales
Arquitectura básica
3UREOHPDV9
a11 a12 a13 ... a1n a21 a22 a23 ... a2n
...
an1 an2 an3 ... ann
Elementos de un vector fila. Tienen
espaciado = 1 componente
a11 a12 a13 ... a1n a21 a22 a23 ... a2n
...
an1 an2 an3 ... ann
Elementos de un vector columna. Tienen
espaciado = Q componentes (1 fila)
19
Procesadores vectoriales
Arquitectura básica
3UREOHPDV9,
6ROXFLyQ se indica el espaciado con un registro específico o con
un registro de datos. Se pueden incluir instrucciones específicas
para acceso a vectores espaciados, o hacer que las instrucciones
de carga y almacenamiento de vectores siempre trabajen con
espaciado.
Ejemplo: en DLX, versión vectorial, existen las instrucciones:
–LVWS V1,(R1,R2): carga desde la dirección en R1 con
el espaciado que indica R2 en V1
–SVWS (R1,R2),V1: almacena V1 a partir de la dirección en
R1 con el espaciado que indica R2
20
10
Procesadores vectoriales
Arquitectura básica
3UREOHPDV9,,
(IHFWRVREUHHOVLVWHPDGHPHPRULD
•Si el espaciado es 1, una memoria entrelazada, o un diseño
por bancos independientes, proporcionan el mejor rendimiento.
•Sin embargo, con espaciado no unidad, puede no alcanzarse
el rendimiento óptimo. Ejemplo: si el espaciado es 8, y hay 8
bancos, todos los accesos van al mismo banco
(=>secuencialización).
•Por esto, es interesante que el espaciado y el número de bancos
sean primos entre sí.
•Como el espaciado es una característica del problema, el
compilador puede intervenir si ocurre una coincidencia como
la del ejemplo (por ejemplo, añadiendo una columna “hueca”
en la matriz).
21
Procesadores vectoriales
Arquitectura básica
3UREOHPDV9,,,
3UREOHPDHOEXFOHTXHVHTXLHUHYHFWRUL]DU OOHYDGHQWUR
VHQWHQFLDVFRQGLFLRQDOHV
&
Ejemplo:
=$/%
Queremos que se calcule la división sólo si B(i) no es 0 (para que
no se genere una excepción).
GR
100 i = 1,64
LI (B(i).QH. 0) WKHQ
C(i)=A(i)/B(i)
HQGLI
100
FRQWLQXH
22
11
Procesadores vectoriales
Arquitectura básica
3UREOHPDV,;
6ROXFLyQ
utilizar vectores de máscara. Un vector de máscara es
un vector de valores booleanos (tantos como componentes tenga
el vector). Si para una componente la máscara es 0, la operación
con esa componente no se ejecuta.
lv
v1,ra
lv
v2,rb
ld
f0,#0
snesvf0,v1
divv v1,v1,v2
cvm
sv
ra,v1
Activa o no él bit de máscara
correspondiente a cada componente
Divide utilizando el vector
de máscara
Borra (pone a 1) los bits del
vector de máscara
23
Procesadores vectoriales
Arquitectura básica
0HMRUDVDODDUTXLWHFWXUD
(QFDGHQDPLHQWRµFKDLQLQJ¶
Consiste en solapar la ejecución de distintas instrucciones
vectoriales (aunque haya dependencias entre ellas).
Ejemplo: el par de instrucciones:
multv v1,v2,v3
addv v4,v1,v5
Como hay una dependencia (v1), no podrían ejecutarse en
paralelo.
Sin embargo, no es necesario que la suma espere a que termine
WRGDla multiplicación: a medida que se van generando
componentes de v1, la suma puede irlas procesando
24
12
Procesadores vectoriales
Arquitectura básica
0HMRUDVDODDUTXLWHFWXUD,,
Ejecución del código anterior sin y con encadenamiento
tiempo
VLQ
tiempo de arranque
de la multiplicación
tiempo de la
multiplicación
tiempo de arranque
de la suma
tiempo de
la suma
FRQ
25
Procesadores vectoriales
Vectorización del código
9HFWRUL]DFLyQGHOFyGLJR
+D\YDULRVUHTXLVLWRVSDUDSRGHUYHFWRUL]DUHOFyGLJR
1º: que no haya dependencias de datos
(por ejemplo, las hay en el cálculo de la suma de las
componentes de un vector)
2º: que el programa esté expresado de una forma que permita
su vectorización (al compilador)
/DFDOLGDGGHOFRPSLODGRUWDPELpQHVLPSRUWDQWH
Hay compiladores que son capaces de detectar más fácilmente
código vectorizable que otros.
26
13
Procesadores vectoriales
1 2 3 45 12 6 4
#
!"
Ejemplo de máquina vectorial
79
7:
&:
78
79
&8 7 :
8& & 8
&:
78
./0
&9
12 B 4 @ 3 3
& 8 ; ;# A
;
"
&8
;!
GIH GIJ K L M
@ ? ? @89
; ; &9
; ; 1 2 A 5 6 C4
C < & :
F 2 2 :
D
F
1 2 B 4 E 3 A3 2 8
29
D D" # DD D ! 2 2 8 9
E ?? E89
D D 2:
1 2 A 5 6 C4 = & + % , $
& ' ( ) $ $
& % $
' ( ) * + <% = > , ? $
& ' ( ) $UTXLWHFWXUDGHO
&5$<
% $
& ' ( ) 27
Procesadores vectoriales
Máquinas SIMD
$UTXLWHFWXUDGHXQDPiTXLQD6,0'
PHPRULDGLVWULEXLGD
Almacenamiento
externo
procesador
escalar
Memoria de control
Control
del array
E/S
Control de
la máquina
EP0
EP1
EP2
...
EPn
M0
M1
M2
...
Mn
Red de interconexión
28
Figura tomada de Kai Hwang, ‘Advanced Computer Architecture’
14
Procesadores vectoriales
Máquinas SIMD
$UTXLWHFWXUDGHXQDPiTXLQD6,0'
PHPRULDFRPSDUWLGD
Almacenamiento
externo
procesador
escalar
Memoria de control
Control
del array
EP0
EP1
EP2
...
E/S
Control de
la máquina
EPn
...
Red de interconexión
M0
M1
M2
Mm
29
Figura tomada de Kai Hwang, ‘Advanced Computer Architecture’
Procesadores vectoriales
Máquinas SIMD
0iTXLQDV6,0'
•/DVPiTXLQDV6,0'SODQWHDQRWUDIRUPDGHDSURYHFKDUHO
SDUDOHOLVPRHQORVGDWRV
•(MHFXWDQODPLVPDLQVWUXFFLyQVREUHGDWRVGLVWLQWRVGHIRUPD
VLPXOWiQHD
•&RQVWDQGHXQDUUD\GHHOHPHQWRVGHSURFHVR$/8VTXHVRQ
FRQWURODGRVHQFXDQWRDODRSHUDFLyQTXHUHDOL]DQ\ORVGDWRV
TXHXVDQSRUXQPyGXORGHFRQWUROGHODUUD\
•([LVWHWDPELpQXQSURFHVDGRUHVFDODUSDUDODVRSHUDFLRQHV6,6'
•/RVHOHPHQWRVGHSURFHVRHVWiQXQLGRVSRUXQDUHGGH
LQWHUFRQH[LyQ
30
15
Procesadores vectoriales
Máquinas SIMD
0iTXLQDV6,0',,
•(OPyGXORGHFRQWUROUHFLEHLQIRUPDFLyQSUHVHQWHHQHO
SURJUDPDVREUH:
la instrucción que hay que ejecutar
el estado de la red de interconexión (por si los datos de los EP
no se encuentran en su memoria local)
•7UDQVPLWHODRSHUDFLyQTXHKD\TXHUHDOL]DU\ODORFDOL]DFLyQ
GHORV RSHUDQGRV DORVHOHPHQWRVGHSURFHVR
•&RQILJXUDODUHGGHLQWHUFRQH[LyQVHJ~QFRQYHQJD
•(QHVHPRPHQWRORV(3VHMHFXWDQODLQVWUXFFLyQ
31
Procesadores vectoriales
Máquinas SIMD
0iTXLQDV6,0',,,
(OSURJUDPDGHEH
•HVSHFLILFDUODVLQVWUXFFLRQHVTXHVRQSDUDHMHFXWDUHQ
PRGR6,0'\ODVTXHVRQHVFDODUHV
•HVSHFLILFDUODGLVWULEXFLyQGHORVGDWRVHQODVPHPRULDV
•HVSHFLILFDUODFRQILJXUDFLyQGHODUHGHQFDGDLQVWDQWH
6LODPHPRULDHVFRPSDUWLGD
•ORVGDWRVQRVRQORFDOHVDFDGDHOHPHQWRGHSURFHVR
•HOQ~PHURGHPyGXORVGHPHPRULDQRWLHQHSRUTXp
FRLQFLGLUFRQHOGHHOHPHQWRVGHSURFHVR
•HOUHVWRGHODVFDUDFWHUtVWLFDVVRQSDUHFLGDV
32
16
Procesadores vectoriales
Máquinas SIMD
0iTXLQDV6,0',9
•(VSRVLEOHFRPELQDUODVFDUDFWHUtVWLFDVGHXQDPiTXLQDYHFWRULDO
\GHXQD6,0'
•(OGLVHxRVHUtDEiVLFDPHQWHHOGHXQDPiTXLQDYHFWRULDOTXH
WLHQHXQLGDGHVIXQFLRQDOHVUHSHWLGDV
•/DVXQLGDGHVIXQFLRQDOHVHVWDUtDQFRQHFWDGDVFRPRORVHOHPHQWRV
GHSURFHVRGHXQDPiTXLQD6,0'SDUDSRGHUWUDEDMDUGHIRUPD
VLPXOWiQHD
•(MHPSORXQDPiTXLQDYHFWRULDOFRQFXDWURXQLGDGHVGHVXPD
/DSULPHUDWUDEDMDUtDFRQODVFRPSRQHQWHVHWFGHFDGD
YHFWRUODVHJXQGDFRQODHWF\DVtVXFHVLYDPHQWH
.
Procesadores vectoriales
33
Redes de Interconexión para máquinas SIMD
5HGHVGHLQWHUFRQH[LyQ
•/DVGLVWLQWDVUHGHVGHFRQH[LyQVHSXHGHQFODVLILFDUGHYDULDV
PDQHUDV
–por el modo de operación: síncronas o asíncronas
–por la estrategia de control: centralizado o distribuido
–por la metodología de conmutación: de circuitos o de paquetes
(también existe la integrada, que puede funcionar de ambas
formas)
–por la topología: estáticas o dinámicas.
•/DVPiTXLQDV6,0'XWLOL]DQUHGHVVtQFURQDVFRQFRQWURO
FHQWUDOL]DGR \FRQFRQPXWDFLyQGHFLUFXLWRV3XHGHQVHUHVWiWLFDV
RGLQiPLFDV
34
17
Procesadores vectoriales
Redes de Interconexión para máquinas SIMD
5HGHVGHLQWHUFRQH[LyQ,,
(MHPSORVGH
UHGHVHVWiWLFDV
!
35
Procesadores vectoriales
Redes de Interconexión para máquinas SIMD
5HGHVGHLQWHUFRQH[LyQ,,,
5HGHVGLQiPLFDVVRQUHGHVFX\DFRQILJXUDFLyQSXHGH
PRGLILFDUVH+D\GRVWLSRV
•monoetapa
•multietapa
/DVUHGHVPRQRHWDSDUHDOL]DQFRQH[LRQHVHQWUHHOHPHQWRVGH
SURFHVRHQSDVR
Puede no ser posible llegar desde cualquier elemento a cualquiera,
por lo que puede ser necesario recircular la información (=>redes
recirculantes)
/DVUHGHVPXOWLHWDSDUHDOL]DQFRQH[LRQHVHQWUHORVHOHPHQWRV
GHSURFHVRHQPiVGHSDVR
36
18
Procesadores vectoriales
Redes de Interconexión para máquinas SIMD
5HGHVGHLQWHUFRQH[LyQ9
/DVUHGHVPXOWLHWDSDVHIRUPDQDSDUWLUGHFDMDVGHFRQPXWDFLyQ
/DVFXDWURFRQILJXUDFLRQHVSRVLEOHVGHXQDFDMDGH
FRQPXWDFLyQGHHQWUDGDV
37
Procesadores vectoriales
Redes de Interconexión para máquinas SIMD
5HGHVGHLQWHUFRQH[LyQ,9
•Las redes monoetapa tienen
un Selector de Entrada y un
Selector de Salida.
•El SE es básicamente un
demultiplexor, y el SS un
multiplexor.
•Un caso particular de red
monoetapa es la red de
barras cruzadas.
(MHPSORGHUHGPRQRHWDSD
38
19
Procesadores vectoriales
Redes de Interconexión para máquinas SIMD
5HGHVGHLQWHUFRQH[LyQ9,
5HGHVPXOWLHWDSD*UXSRFRQEORTXHR
la conexión simultánea
de varias parejas de terminales puede producir conflictos.
5HGGHOtQHDEDVH[
39
Procesadores vectoriales
Redes de Interconexión para máquinas SIMD
5HGHVGHLQWHUFRQH[LyQ9,,
5HGHVPXOWLHWDSD*UXSRUHRUGHQDEOH
reordenando la configuración es capaz
de establecer una línea de comunicación para una nueva pareja.
5HGGH%HQHV[
40
20
Procesadores vectoriales
Redes de Interconexión para máquinas SIMD
5HGHVGHLQWHUFRQH[LyQ9,,,
5HGHVPXOWLHWDSD*UXSRVLQEORTXHR
puede manejar todas las conexiones
posibles sin que se produzcan bloqueos.
nxm
rxr
1
1
mxn
1
1
1
n
n
2
2
2
r
m
r
41
21
Descargar