30.07.2015 Views

Actas JP2011 - Universidad de La Laguna

Actas JP2011 - Universidad de La Laguna

Actas JP2011 - Universidad de La Laguna

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Actas</strong> XXII Jornadas <strong>de</strong> Paralelismo (<strong>JP2011</strong>) , <strong>La</strong> <strong>La</strong>guna, Tenerife, 7-9 septiembre 2011Directorio SCIArbol Arbol basado en proximidadH H H HFig. 1. Información <strong>de</strong> coherencia en directorio, SCI, árbol y árbol basado en proximidad. L1s con copia <strong>de</strong>l bloque mostradasen gris. Home L2 señalado con una H. Nótese como el árbol basado en proximidad es el único que reduce la distancia entrenodos contiguos.II. Arquitectura Base.Este trabajo utiliza una arquitectura tiled-CMP.En ella, el chip se forma mediante replicación <strong>de</strong> tiles.Cada tile contiene un core, una caché L1 privaday un banco <strong>de</strong> la caché L2 compartida. Los bloques<strong>de</strong> memoria se mapean a los bancos <strong>de</strong> L2 usandovarios bits <strong>de</strong> la dirección <strong>de</strong> bloque. <strong>La</strong> L2 a la queun bloque se mapea se llama “home L2”, y contienela información <strong>de</strong> directorio <strong>de</strong>l bloque si existen copias<strong>de</strong>l mismo en las L1s. Utilizamos un esquema <strong>de</strong>estados MOESI para la coherencia <strong>de</strong> los bloques <strong>de</strong>memoria. Los tiles se comunican mediante interfaces<strong>de</strong> red formando una malla 2D. No obstante, nuestroprotocolo pue<strong>de</strong> aplicarse a cualquier otra arquitectura<strong>de</strong> memoria compartida.III. Árbol Basado en Proximidad yPredicciónEl árbol binario que contiene los compartidores <strong>de</strong>un bloque parte <strong>de</strong>l nodo home L2, que almacenaun puntero a la L1 que es raíz <strong>de</strong>l árbol. <strong>La</strong>s cachésL1 tienen tres punteros asociados a cada entrada <strong>de</strong>caché: uno para apuntar al nodo padre (pue<strong>de</strong> ser elhome L2 u otra L1) y el resto para apuntar a hastados hijos (que serán cachés L1). Inicialmente noexiste árbol para el bloque. <strong>La</strong> primera caché L1 queacce<strong>de</strong> al bloque envía su petición al home L2 y pasaa ser el nodo raíz <strong>de</strong>l árbol. Cuando aparece unnuevo compartidor (una L1 que envía una petición<strong>de</strong> lectura al home L2), la petición se reenvía a laraíz, que provee el dato y almacena la i<strong>de</strong>ntidad <strong>de</strong>lnuevo compartidor, el cual almacena la i<strong>de</strong>ntidad <strong>de</strong>lnodo que le contesta en el puntero reservado para elnodo padre en su entrada <strong>de</strong> caché. Al surgir máscompartidores se llenan los punteros <strong>de</strong>l nodo raíz,y entonces es necesario recorrer el árbol hacia abajo,eligiendo ramas aleatoriamente, hasta encontrarun puntero libre. Cada mensaje enviado hacia abajoen el árbol es asentido por su receptor para evitarcarreras <strong>de</strong> coherencia. El peticionario a<strong>de</strong>más <strong>de</strong>beesperar a recibir la i<strong>de</strong>ntidad <strong>de</strong> su padre (el nodo enel que se encontró un puntero libre) antes <strong>de</strong> po<strong>de</strong>rreemplazar el bloque. En cualquier caso, la raíz proveeel dato para mantener corto el camino crítico <strong>de</strong>los fallos <strong>de</strong> lectura.Al producirse un reemplazo no invalidamos elsubárbol bajo el nodo que reemplaza, sino que utilizamosun mecanismo <strong>de</strong> reemplazo que reestructurael árbol. En él participan un abuelo, un padre y hastados hijos <strong>de</strong>l padre. Con un intercambio <strong>de</strong> 7 mensajesse reestructura el árbol <strong>de</strong> modo que el enlaceentre el abuelo y el padre se sustituye por un enlaceentre el abuelo y uno <strong>de</strong> sus nietos, y el otro nieto pasaa formar parte <strong>de</strong>l subárbol <strong>de</strong> su hermano (lo quepue<strong>de</strong> implicar más mensajes para po<strong>de</strong>r acomodaral hermano en un puntero libre). Este reemplazo esmás costoso que un reemplazo en SCI, pero evita invalidartodo el subárbol bajo el nodo que reemplaza,y previene condiciones <strong>de</strong> carrera.El hecho <strong>de</strong> tener la información <strong>de</strong> coherencia distribuidaen un árbol presenta oportunida<strong>de</strong>s para optimizacionesque no se pue<strong>de</strong>n realizar en enfoquesque mantienen la información <strong>de</strong> coherencia <strong>de</strong> unbloque en un único punto. A continuación veremoscómo aprovechar el árbol para enlazar nodos cercanosy para obtener bloques cercanos, y las ventajasque esto nos aporta.A. Proximidad en el ÁrbolUn árbol distribuido en el chip pue<strong>de</strong> crearse <strong>de</strong>manera que cada par <strong>de</strong> nodos contiguos se encuentrenfísicamente próximos en el chip. Esto trae importantesventajas en cuanto a tráfico cuando se realizancomunicaciones entre nodos contiguos <strong>de</strong>l árbol,como pue<strong>de</strong> ser el caso <strong>de</strong> una escritura <strong>de</strong> un bloqueque <strong>de</strong>be recorrer el árbol completamente parainvalidar a todos los compartidores, o a la hora <strong>de</strong>realizar un reemplazo.Hemos optado por una opción sencilla para creary gestionar el árbol que consiste en que, cuando unnodo no tiene punteros libres para almacenar a unnuevo compartidor, envía la información <strong>de</strong>l nuevocompartidor al hijo que se encuentre más cerca físicamente<strong>de</strong>l nuevo compartidor. Esto hace que, conformebajamos por las ramas <strong>de</strong>l árbol, vayamos encontrandonodos más cercanos entre sí. Un ejemplo<strong>de</strong> la estructura <strong>de</strong> la información <strong>de</strong> coherencia enun directorio, en SCI, en un árbol y en nuestro árbolbasado en proximidad pue<strong>de</strong> verse en la Figura 1.Es posible balancear el árbol cuando se produceninserciones o reemplazos para mantener distanciasmínimas entre nodos, pero creemos que las gananciasserán mínimas en comparación con el incremento enla complejidad <strong>de</strong> la gestión <strong>de</strong>l árbol. Es por elloque hemos optado por no realizar balanceo <strong>de</strong> ningúntipo.B. PredicciónEl uso <strong>de</strong> predicción <strong>de</strong> proveedor ante un fallo<strong>de</strong> lectura en caché pue<strong>de</strong> aprovecharse <strong>de</strong> la proximidadfísica <strong>de</strong> los procesadores en el árbol. Unprocesador pue<strong>de</strong> usar a su antiguo padre en el árbolcomo proveedor si es que el padre sigue teniendo unacopia válida <strong>de</strong>l bloque. Como el padre se encuentrafísicamente próximo en el árbol gracias a nuestromecanismo <strong>de</strong> inserción, el fallo <strong>de</strong> caché se resolverácon menor latencia y generando menos tráficoque si tuviésemos que acce<strong>de</strong>r al nodo home, que pue-<strong>JP2011</strong>-240

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!