1 Appunti sulle architetture multiprocessore a memoria distribuita Quando bisogna realizzare una architettura multiprocessore che prevede un elevato numero di processori non è possibile adottare una configurazione di tipo CSM (Centralized Shared Memory). Infatti dal momento che la memoria e il mezzo di comunicazione (Bus) sono condiviso da tutti i processori, nel caso in cui il numero di processori supera una certa dimensione (poche decine con la tecnologia attuale): • la memoria non riesce a gestire in maniera efficiente le richieste provenienti da tutti i processori • sul bus si genera un traffico eccessivo che: - limita il tasso di traferimento di istruzioni dalla memoria ai processori - aumenta la latenze di accesso al bus per tutti i dispositivi che vi sono connessi (memoria e processori). Pertanto la realizzazione di architetture con un elevato numero di processori prevede di impiego di tecniche di implementazione basate sul concetto di memoria distribuita. In questa configurazione una architettura è composta da una serie di nodi ciascuno dei quali è composto da un processore(con la relative cache) e una memoria. Nonostante la memoria sia distribuita (cioè composta da dispositivi fisicamente distinti), essa può essere condivisa oppure esclusiva. Nel primo caso ogni processore può accedere dati che risiedono nelle memorie associate ad altri processori; questo vuol dire che tutti i processori hanno il medesimo spazio degli indirizzi. Le architetture che ricadono in questa categoria sono le così dette DSM (Distributed Shared Memory) oppure NUMA (Non Uniform Memory Access) perchè l’accesso in memoria avrà tempi e modalità differenti a seconda del dispositivo di memoria che si sta accedendo. 2 Figura 1: Rete di tipo Array. Figura 2: Rete completamente connessa. Nel secondo caso ad ogni processore è fisicamente e anche logicamente associata una memoria; ciò vuol dire che ogni processore può accedere esclusivamente alla memoria che gli è associata per mezzo di uno spazio degli indirizzi proprio. In questa categoria ricadono le architetture di tipo Multicomputer (perchè ciascun nodo si comporta come una unità distinta dalle altre) oppure Cluster (cioè più computer fisicamente distinti collegati tra di loro per mezzo di una rete LAN). La più semplice topologia di interconnessione delle architetture a memoria distribuita è il Linear Array Questo topologia è estremamente semplice da realizzare ma è anche poco performante perchè la comunicazione tra due nodi coinvolge tutti gli altri nodi che si trovano sul percorso che li unisce. All’altro estremo si trova la topologia definita da una rete completamente connessa in cui ogni nodo è direttamente connesso a tutti gli altri. Questa è una topologia estremamente performante perchè ciascun nodo può raggiungere tutti gli altri attraverso un link dedicato ma è anche estremamente costosa. Ciò che rende una topologia differente da un’altra, sono i seguenti parametri: 3 • Costo: il costo di una rete è influenzato dal numero di link che essa prevede, dal numero di switch, dalla capacità e dalla lunghezza di ogni link • Prestazioni: le prestazioni di una rete sono definite dal numero di link (connettività della rete), capacità e lunghezza dei link, pattern di comunicazione • Fault Tolerance: la capacità di una rete di funzionare anche in presenza di guasti La qualità di una topologia è definita da i seguenti parametri: • Network Size (N): è il numero di nodi della rete • Node Degree (d): il numero di link incidenti su ciascun nodo • Diameter (D): il più lungo tra i percorsi di lunghezza minima che collegano tutte le possibili coppie di nodi (presi due nodi qualsiasi, possono esistere più percorsi che li colleghino; di questi percorsi si considera quello di lunghezza minima. Una volta definito l’insieme di percorsi di lunghezza minima per tutte le possibili coppie di nodi, il diametro è definito come il più lungo dei percorsi che appartengono a questo insieme) • Link Number (l): il numero totale di link della rete. Questa grandezza (che esprime una proprietà della topologia) definisce anche una caratteristica della rete chiamata Total Network Bandwidth pari a l × C se si assume che tutti i link abbiano la stessa capacità C • Bisection Width (b): il minimo numero di archi che attraversano una bisezione del grafo. Un bisezione è un taglio che divide il grafo in due insiemi ciascuno dei quali contiene la metà dei nodi (o la metà più uno se il numero di nodi è dispari). Questo taglio sarà attraversato da un determinato numero di archi. Di tutte le bisezioni possibili si considera solo quella in cui il taglio è attraversato dal minor 4 numero di archi (caso peggiore) e questo numero definisce la b della rete. Questa grandezza definisce anche una proprietà della rete che è la Bisection Bandwidth pari a b × C (analoga alla definizione della Total Network Bandwidth). • Simmetry: si dice che una rete è simmetrica se è esattamente uguale dal punto di vista di tutti i nodi. • Data Routing: è la politica di trasmissione dei dati e può essere statica o dinamica. Infatti per ogni coppia di nodi possono esistere diversi percorsi che li colleghino. La politica di routing stabilisce quale percorso debba essere seguito nella trasmissione delle informazioni da un nodo ad un’altro. Una politica statica è determinata a livello di progettazione della rete e idntifica sempre lo stesso percorso per unire due nodi (ad esempio una politica statica potrebbe essere quella che stabilisce che il percorso utilizzato debba essere sempre il più breve) mentre una politica dinamica decide il percorso migliore in base allo stato attuale della rete (ad esempio una politica dinamica potrebbe selezionare un percorso più lungo se quello più breve è interrotto o congestionato). Le reti possono essere raggruppate in due ifferenti categorie: reti statiche e dinamiche. Le reti satiche sono quelle in cui il percorsi che collegano un processore ad un altro sono staticamente definiti a livello di progettazione della rete. Esempi di reti statiche: Una rete completamente connessa ha un node degree d pari a N − 1, un diametro D = 1, un numero di link l = N (N − 1)/2 e una larghezza di bisezione b = (N/2)2 . Una rete di tipo ring ha un node degree d pari a 2, un diametro D = bN/2c, un numero di link l = N e una larghezza di bisezione b = 2. Una rete di tipo ipercubo (nella figura () è riportato un ipercubo di dimensione tre cioè un cubo) ha un node degree d pari a log2 N , un diametro D = log2 N , un numero di link l = N/2log2 N e una larghezza di bisezione b = N/2. 5 Figura 3: Rete completamente connessa. Figura 4: Rete ad anello. Figura 5: Rete ipercubo-3. 6 Straight Upper Bcast Cross Over Lower Bcast Figura 6: Configurazioni di funzionamento degli switch. Nelle reti dinamiche il percorso di comunicazione tra due (o più) nodi è dimanicamente definito in base allo stato della rete stessa per mezzo di switch. Si tratta di dispoditivi in grado di connettere due input a due output in base a diverse configurazioni riportate in figura (). 7 p1 p1 p2 p2 p3 p3 p4 p4 p5 p5 p6 p6 p7 p7 p8 p8 Figura 7: Rete dinamica di tipo baseline. 8 p1 p1 p2 p2 p3 p3 p4 p4 p5 p5 p6 p6 p7 p7 p8 p8 Figura 8: Rete dinamica di tipo omega.