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\3DWWHUVRQHGLFLyQ 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