7HPD0XOWLSURFHVDGRUHV •2EMHWLYRV •5HIHUHQFLDV •,QWURGXFFLyQ •$UTXLWHFWXUDVFHQWUDOL]DGDVGHPHPRULDFRPSDUWLGD •$UTXLWHFWXUDVGLVWULEXLGDVGHPHPRULDFRPSDUWLGD •6LQFURQL]DFLyQ •0XOWLFRPSXWDGRUHV 1 Procesadores vectoriales Objetivos 2EMHWLYRV •&RQRFHUODVGLVWLQWDVPDQHUDVGHRUJDQL]DUXQVLVWHPD FRQP~OWLSOHVSURFHVDGRUHV\VXVFDUDFWHUtVWLFDV GLIHUHQFLDGRUDV •&RPSUHQGHUORVSUREOHPDVTXHSODQWHDODFRPSDUWLFLyQ GHGDWRV\VXVSRVLEOHVVROXFLRQHV 2 1 Procesadores vectoriales Referencias 5HIHUHQFLDV •3DUDPiTXLQDVGHPHPRULDFRPSDUWLGDHO+HQQHVV\3DWWHUVRQ HGLFLyQPXFKDVILJXUDV\HMHPSORVHVWiQWRPDGDVGHpO •/DLQIRUPDFLyQVREUHODFRKHUHQFLDSRUGLUHFWRULRVOD VLQFURQL]DFLyQ\ORV PXOWLFRPSXWDGRUHV HVWiVDFDGDGHO .DL+ZDQJ$GYDQFHG&RPSXWHU$UFKLWHFWXUH 3 Multiprocesadores Introducción 7LSRVGHPXOWLSURFHVDGRUHV •$UTXLWHFWXUDVFHQWUDOL]DGDVGHPHPRULDFRPSDUWLGD •$UTXLWHFWXUDVGHPHPRULDGLVWULEXLGD –con memoria compartida –con memoria privada (multicomputadores) ⇒Las máquinas con memoria compartida tienen un único mapa de memoria común a todos los procesadores. Esta memoria puede estar centralizada o repartida (distribuida) entre los procesadores. ⇒Las máquinas con memoria privada tienen un mapa de memoria por cada procesador. Esta memoria está distribuida (cada procesador tiene la suya) 4 2 Multiprocesadores Introducción $UTXLWHFWXUDFHQWUDOL]DGDGHPHPRULDFRPSDUWLGD Procesador Procesador Procesador Procesador caché caché caché caché bus Memoria E/S 5 Multiprocesadores Introducción $UTXLWHFWXUDGHPHPRULDGLVWULEXLGD red de interconexión mem e/s mem e/s mem e/s mem e/s caché caché caché caché Procesador Procesador Procesador Procesador nodo nodo nodo nodo 6 3 Multiprocesadores Introducción &RPXQLFDFLyQHQPXOWLSURFHVDGRUHV 6LODPHPRULDHVFRPSDUWLGD •Si es centralizada: todos los accesos se hacen a través del bus, y tardan más o menos lo mismo =>UMA (‘8QLIRUP0HPRU\ $FFHVV¶). •Si es distribuida: los accesos se realizan a la memoria local o a memoria remota, según el dato. Los accesos remotos tardan más que los locales. => NUMA (‘1RQ8QLIRUP0HPRU\$FFHVV¶). 6LODPHPRULDHVSULYDGD •Como los mapas de memoria son sólo locales, la comunicación es por medio de paso de mensajes. 7 Multiprocesadores Introducción &RPXQLFDFLyQHQPXOWLSURFHVDGRUHV,, 9HQWDMDVGHODPHPRULDFRPSDUWLGD •Está más estudiada. •Sencillez de programación. •Poco recargo de comunicación, mejor aprovechamiento del ancho de banda en datos pequeños. •Posibilidad de usar cachés (mejor tiempo medio de acceso y •menor flujo de datos en la red). 9HQWDMDVGHODPHPRULDSULYDGD •Sencillez del hardware •La comunicación es explícita (no es transparente) =>se ve claro lo que cuesta tiempo y lo que no. 8 4 Multiprocesadores Arquitecturas centralizadas de memoria compartida $UTXLWHFWXUDVFHQWUDOL]DGDVGHPHPRULDFRPSDUWLGD •Son máquinas que constan de varios procesadores (típicamente un número pequeño). •Como son pocos, la comunicación a través de un bus es económica y eficiente. •Cada procesador puede tener una memoria caché para reducir la cantidad de datos que viajan por el bus. •La comunicación entre procesadores es a través de variables compartidas y zonas de memoria comunes 9 Multiprocesadores Arquitecturas centralizadas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDFHQWUDOL]DGD (OSUREOHPDGHODFRKHUHQFLD •Los procesadores del sistema guardan en caché los datos con los que trabajan. •Los datos se dividen en: –privados: sólo los necesita un procesador. –compartidos: los necesitan varios procesadores. •Los datos compartidos son, por lo tanto, utilizados por varios procesadores. •El problema surge cuando un procesador modifica datos que otros tienen en sus cachés. 10 5 Multiprocesadores Arquitecturas centralizadas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDFHQWUDOL]DGD,, (MHPSOR •el dato X (valor inicial 0) es compartido •el procesador A carga el dato X (0) en su caché •el procesador B carga el dato X (0) en su caché •el procesador A modifica el dato X (toma el valor 1) •el procesador B lee el dato X (0, valor que había cargado en su caché El problema de utilizar cachés es que los datos pueden no ser coherentes (tener el mismo valor en todas las cachés) 11 Multiprocesadores Arquitecturas centralizadas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDFHQWUDOL]DGD,,, En un sistema de memoria centralizada, se suele usar la técnica de ‘VQRRSLQJ’ (fisgonear). Las cachés observan las transmisiones que se realizan en el bus, para saber cuándo alguna de las otras cargue una línea que tienen ellas. En el caso de que una de las cachés que tiene una copia de una línea compartida la modifique, es necesario que el resto se entere (porque sus versiones se han quedado anticuadas). 12 6 Multiprocesadores Arquitecturas centralizadas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDFHQWUDOL]DGD,9 ([LVWHQGRVPDQHUDVGHQRWLILFDUODVPRGLILFDFLRQHVHQODVOtQHDV 3URWRFRORGHLQYDOLGDFLyQSRUHVFULWXUDµZULWHLQYDOLGDWH SURWRFRO¶ Cuando un procesador realiza una escritura en una línea, esta acción invalida las copias de esa línea en las otras cachés. 3URWRFRORGHDFWXDOL]DFLyQHQHVFULWXUDµZULWHXSGDWHSURWRFRO¶ RµZULWHEURDGFDVWSURWRFRO¶ Cuando un procesador realiza una escritura en una línea, envía la nueva versión a las otras cachés. 13 Multiprocesadores Arquitecturas centralizadas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDFHQWUDOL]DGD9 'LIHUHQFLDVHQWUHDPEDVRSFLRQHV •Modificaciones sucesivas de un dato provocan el correspondiente envío de líneas a través del bus si se usa el protocolo de actualización. Si no hay lecturas entre medias, el protocolo de invalidación no supone tráfico adicional. •Modificaciones de varios datos en una misma línea suponen otros tantos envíos con actualización, por una única recarga por invalidación. •La invalidación de una línea puede provocar retardos, ya que el fallo de lectura en la caché destino se detecta (por la invalidación) en el momento de realizar el acceso. Con 14 actualización no se produce el fallo. 7 Multiprocesadores Arquitecturas distribuidas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDGLVWULEXLGD En una máquina de memoria distribuida un nodo no puede observar todas las transferencias entre los restantes nodos (en general, la topología de la red no se lo va a permitir). Por ello, si la memoria está distribuida se suele utilizar el protocolo de directorios. En este protocolo, existe una estructura de datos, el directorio, que contiene información sobre el estado de cada bloque. Esta estructura también puede estar distribuida. 15 Multiprocesadores Arquitecturas distribuidas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDGLVWULEXLGD,, •(OSURWRFRORGHGLUHFWRULRVQHFHVLWDTXHGHFDGDEORTXHGH PHPRULDVHWHQJDODVLJXLHQWHLQIRUPDFLyQ –(VWDGRGHOEORTXH si está sin usar, usado por un único procesador, compartido entre varios, etc. –3URFHVDGRUHVTXHWLHQHQHOEORTXHHQVXFDFKp para poderles avisar en caso de modificaciones o invalidaciones. •&RPRHOWDPDxRGHOGLUHFWRULRSXHGHOOHJDUDVHUPX\JUDQGH VHVXHOHHQFRQWUDUGLVWULEXLGR&DGDPyGXORGHPHPRULDWLHQH ODLQIRUPDFLyQGHORVEORTXHVTXHHVWiQXELFDGRVHQpO •6HJ~QODFDQWLGDGGHLQIRUPDFLyQTXHVHDOPDFHQHHQHO GLUHFWRULRH[LVWHQWUHVWLSRVGHSURWRFRORVGHGLUHFWRULRV FRPSOHWRVOLPLWDGRV \HQFDGHQDGRV 16 8 Multiprocesadores Arquitecturas distribuidas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDGLVWULEXLGD,,, 3URWRFRORVGHGLUHFWRULRVFRPSOHWRV •(QHVWHSURWRFRORFDGDPyGXORGHPHPRULDWLHQHHOGLUHFWRULR GHORVEORTXHVTXHFRQWLHQH •3DUDFDGDEORTXHODHQWUDGDGHOGLUHFWRULRFRQWLHQH –un bit por cada procesador en el sistema –un bit de ‘sucio’, para escrituras •$GHPiVODVFDFKpVWLHQHQELWVSRUEORTXH –uno para indicar si el bloque es válido –otro para indicar si se puede escribir en él 17 Multiprocesadores Arquitecturas distribuidas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDGLVWULEXLGD,9 3URWRFRORVGHGLUHFWRULRVFRPSOHWRV,, •&XDQGRXQSURFHVDGRUSLGHXQDFRSLDGHOEORTXHVHOHHQYtD\ VHDFWLYDVXELWFRUUHVSRQGLHQWH •&XDQGRXQSURFHVDGRUSLGHXQDHVFULWXUDDOEORTXHVHERUUDQ ORVELWVGHORVRWURVSURFHVDGRUHV\VHOHVDYLVD\VHDFWLYD HOELWGHVXFLR •(OELWGHVXFLR³GDSHUPLVR´RQRSDUDUHDOL]DUXQDHVFULWXUD •&RQHOELWGHVXFLRDFWLYDGRVyORXQRGHORVELWVGHORV SURFHVDGRUHVSXHGHHVWDUDFWLYDGR 18 9 Multiprocesadores Arquitecturas distribuidas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDGLVWULEXLGD9, 3URWRFRORVGHGLUHFWRULRVOLPLWDGRV •'HQXHYRFDGDPyGXORWLHQHHOGLUHFWRULRGHVXVEORTXHV •3HURDKRUDFDGDHQWUDGDQRWLHQHXQELWSRUFDGDSURFHVDGRU VyORSXHGHQWHQHUXQDFRSLDGHFDGDEORTXHXQQ~PHUROLPLWDGR SGHSURFHVDGRUHV •3DUDHOORFDGDHQWUDGDWLHQHHVSDFLRSDUDS LGHQWLILFDGRUHV •6LOOHJDXQDSHWLFLyQGHOHFWXUD\WRGRVORVHVSDFLRVHVWiQRFXSDGRV VHHOLPLQDXQR\VHDYLVDDOSURFHVDGRU(VXQPHFDQLVPR SDUHFLGRDOGHXQDFDFKpDVRFLDWLYDSRUFRQMXQWRV 19 Multiprocesadores Arquitecturas distribuidas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDGLVWULEXLGD9,, 3URWRFRORVGHGLUHFWRULRVHQFDGHQDGRV •(QHVWHHVTXHPDODOLVWDGHORVSURFHVDGRUHVTXHWLHQHQXQD FRSLDGHXQEORTXHHVWiGLVWULEXLGDHQWUHODVFDFKpV •(OPyGXORGHPHPRULDTXHSRVHHHOEORTXHWLHQHORVGDWRV\HO LQLFLRGHODOLVWDGHSXQWHURVDSURFHVDGRUHV •&DGDSURFHVDGRUTXHSLGHXQDFRSLDGHOEORTXHUHFLEHHO SXQWHURDODOLVWDHQVXHVWDGRDFWXDO •(OPyGXORGHPHPRULDVHTXHGDFRQODGLUHFFLyQGHOSURFHVDGRU TXHSLGHHOEORTXHTXHHVHOQXHYRLQLFLRGHODOLVWD 20 10 Multiprocesadores Arquitecturas distribuidas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDGLVWULEXLGD9,,, &RPSDUDFLyQGHORVWUHVSURWRFRORVGHGLUHFWRULRV •(OSURWRFRORGHGLUHFWRULRFRPSOHWRWLHQHWRGDODLQIRUPDFLyQ FHQWUDOL]DGDORTXHKDFHHILFLHQWHVXJHVWLyQ –Añadir o eliminar procesadores a la lista es activar o desactivar un bit. –Pero requiere espacio para todos los procesadores en cada una de las entradas (y la mayoría de los bits va a estar a 0 casi siempre). •(OSURWRFROROLPLWDGRWDPELpQWLHQHODLQIRUPDFLyQFHQWUDOL]DGD –Añadir y eliminar procesadores a la lista es sencillo. –Puede haber dificultades si el número de espacios para identificadores es pequeño. 21 Multiprocesadores Arquitecturas distribuidas de memoria compartida &RKHUHQFLDGHFDFKpHQPHPRULDGLVWULEXLGD9,,, &RPSDUDFLyQGHORVWUHVSURWRFRORVGHGLUHFWRULRV,, •(OSURWRFRORGHGLUHFWRULRVHQFDGHQDGRVWLHQHODLQIRUPDFLyQ GLVWULEXLGD –El espacio que ocupa la lista es proporcional al número de procesadores que tiene una copia del bloque. –Añadir y eliminar procesadores es un proceso largo. 22 11 Multiprocesadores Sincronización 6LQFURQL]DFLyQ •(VXQDIRUPDHVSHFLDOGHFRPXQLFDFLyQHQODTXHVHLQWHUFDPELD LQIRUPDFLyQGHFRQWUROHQOXJDUGHGDWRV •6HXWLOL]DSDUDFRQVHJXLUHOVHFXHQFLDPLHQWRFRUUHFWRGHORV SURFHVRV\ORVSURFHVDGRUHV •7DPELpQSHUPLWHHODFFHVRFRUUHFWRFRQH[FOXVLyQPXWXDDORV GDWRVFRPSDUWLGRV •1RHVXQDVXQWRH[FOXVLYRGHORVPXOWLSURFHVDGRUHV7DPELpQVH WUDWDHQHOGLVHxRGHORVVLVWHPDVRSHUDWLYRV 23 Multiprocesadores Sincronización 6LQFURQL]DFLyQ,, •/RVPHFDQLVPRVTXHVHXWLOL]DQSXHGHQVHUVRIWZDUHGHQWURGHO 62RHQHOOHQJXDMHGHSURJUDPDFLyQRKDUGZDUH •0HFDQLVPRVVRIWZDUHVRQORVVHPiIRURVRORVPRQLWRUHV •0HFDQLVPRVKDUGZDUHVRQODVRSHUDFLRQHVDWyPLFDVGH OHFWXUDHVFULWXUDRGHOHFWXUDPRGLILFDFLyQHVFULWXUDSULPLWLYDV •(MHPSORODLQVWUXFFLyQWHVWVHWUHVHW –OHHXQDYDULDEOH\FRPSUXHEDVLVXYDORUHV –PLHQWUDVHOYDORUQRVHDVHTXHGDDKt –FXDQGRHOYDORUVHDORYXHOYHDSRQHUD\FRQWLQ~DOD HMHFXFLyQ 24 12 Multiprocesadores Multicomputadores 0XOWLFRPSXWDGRUHV •6RQXQWLSRHVSHFLDOGHVLVWHPDVFRQP~OWLSOHVSURFHVDGRUHV/DV FDUDFWHUtVWLFDVTXHOHVGLVWLQJXHQVRQ –la memoria es privada (es decir, cada procesador tiene un mapa de direcciones propio que no es accesible directamente a los demás) –la comunicación entre procesadores es por paso de mensajes a través de una red de interconexión. •(QXQ PXOWLFRPSXWDGRUFDGDQRGRHVXQDFRPSXWDGRUDFOiVLFD •/RVQRGRVFRODERUDQSDUDUHVROYHUMXQWRVXQPLVPRSUREOHPD HMHFXWDUODPLVPDDSOLFDFLyQ •/D FRPSDUWLFLyQ GHGDWRVHVH[SOtFLWD\DTXHHODFFHVRDGDWRV FRPXQHVHVSRUSDVRGHPHQVDMHV 25 Multiprocesadores Multicomputadores 0XOWLFRPSXWDGRUHV,, Mem Mem Mem Proc Proc Proc Mem Proc Proc Mem Red de interconexión de paso de mensajes Mem Proc Proc Mem Mem Mem Mem Proc Proc Proc 0RGHORJHQpULFRGHXQPXOWLFRPSXWDGRU 26 Figura tomada del Kai Hwang: $GYDQFHG&RPSXWHU$UFKLWHFWXUH 13