Multiprocessori e multicomputer
In questo capitolo discuteremo di multiprocessori e multicomputer.
Interconnessioni di sistema multiprocessore
L'elaborazione parallela richiede l'uso di interconnessioni di sistema efficienti per una comunicazione veloce tra i dispositivi di input / output e periferici, i multiprocessori e la memoria condivisa.
Sistemi bus gerarchici
Un sistema bus gerarchico è costituito da una gerarchia di bus che collegano vari sistemi e sottosistemi / componenti in un computer. Ogni bus è costituito da una serie di linee di segnale, controllo e alimentazione. Bus diversi come bus locali, bus backplane e bus I / O vengono utilizzati per eseguire diverse funzioni di interconnessione.
I bus locali sono i bus implementati sui circuiti stampati. Un bus backplane è un circuito stampato su cui vengono utilizzati molti connettori per collegare schede funzionali. I bus che collegano i dispositivi di input / output a un sistema informatico sono noti come bus I / O.
Interruttore della barra trasversale e memoria multiporta
Le reti commutate forniscono interconnessioni dinamiche tra gli ingressi e le uscite. I sistemi di piccole o medie dimensioni utilizzano principalmente reti crossbar. Le reti multistadio possono essere estese ai sistemi più grandi, se il problema della maggiore latenza può essere risolto.
Sia lo switch crossbar che l'organizzazione della memoria multiporta sono una rete a stadio singolo. Sebbene una rete a stadio singolo sia più economica da costruire, potrebbero essere necessari più passaggi per stabilire determinate connessioni. Una rete multistadio ha più di uno stadio di scatole di commutazione. Queste reti dovrebbero essere in grado di collegare qualsiasi input a qualsiasi output.
Reti multistadio e combinate
Le reti a più stadi o le reti di interconnessione a più stadi sono una classe di reti di computer ad alta velocità composta principalmente da elementi di elaborazione su un'estremità della rete e elementi di memoria sull'altra estremità, collegati da elementi di commutazione.
Queste reti vengono applicate per costruire sistemi multiprocessore più grandi. Questo include Omega Network, Butterfly Network e molti altri.
Multicomputer
I multicomputer sono architetture MIMD a memoria distribuita. Il diagramma seguente mostra un modello concettuale di un multicomputer:
I multicomputer sono macchine che trasmettono messaggi che applicano il metodo di commutazione di pacchetto per lo scambio di dati. In questo caso, ogni processore ha una memoria privata, ma nessuno spazio di indirizzi globale in quanto un processore può accedere solo alla propria memoria locale. Quindi, la comunicazione non è trasparente: qui i programmatori devono inserire esplicitamente le primitive di comunicazione nel loro codice.
Non avere una memoria accessibile a livello globale è uno svantaggio dei multicomputer. Questo può essere risolto utilizzando i seguenti due schemi:
- Memoria condivisa virtuale (VSM)
- Memoria virtuale condivisa (SVM)
In questi schemi, il programmatore dell'applicazione presuppone una grande memoria condivisa indirizzabile a livello globale. Se necessario, i riferimenti alla memoria effettuati dalle applicazioni vengono tradotti nel paradigma del passaggio di messaggi.
Memoria condivisa virtuale (VSM)
VSM è un'implementazione hardware. Quindi, il sistema di memoria virtuale del sistema operativo è implementato in modo trasparente su VSM. Quindi, il sistema operativo pensa di essere in esecuzione su una macchina con una memoria condivisa.
Memoria virtuale condivisa (SVM)
SVM è un'implementazione software a livello di sistema operativo con supporto hardware dalla Memory Management Unit (MMU) del processore. Qui, l'unità di condivisione sono le pagine di memoria del sistema operativo.
Se un processore indirizza una particolare posizione di memoria, la MMU determina se la pagina di memoria associata all'accesso alla memoria si trova o meno nella memoria locale. Se la pagina non è in memoria, in un normale sistema informatico viene sostituita dal disco dal sistema operativo. Ma, in SVM, il sistema operativo recupera la pagina dal nodo remoto che possiede quella particolare pagina.
Tre generazioni di multicomputer
In questa sezione, discuteremo di tre generazioni di multicomputer.
Scelte progettuali in passato
Mentre seleziona una tecnologia di processore, un progettista di multicomputer sceglie processori a grana media a basso costo come elementi costitutivi. La maggior parte dei computer paralleli è costruita con microprocessori standard disponibili in commercio. La memoria distribuita è stata scelta per più computer anziché utilizzare la memoria condivisa, il che limitava la scalabilità. Ogni processore ha la propria unità di memoria locale.
Per lo schema di interconnessione, i multicomputer dispongono di reti dirette punto a punto con passaggio di messaggi anziché reti di commutazione degli indirizzi. Per la strategia di controllo, il progettista di più computer sceglie le operazioni asincrone MIMD, MPMD e SMPD. Il Cosmic Cube di Caltech (Seitz, 1983) è il primo multi-computer di prima generazione.
Sviluppo presente e futuro
I computer di nuova generazione si sono evoluti da multicomputer a grana media e fine utilizzando una memoria virtuale condivisa a livello globale. Al momento sono ancora in uso i multi-computer di seconda generazione. Ma utilizzando processori migliori come i386, i860, ecc. I computer di seconda generazione si sono sviluppati molto.
I computer di terza generazione sono i computer di prossima generazione in cui verranno utilizzati i nodi implementati VLSI. Ogni nodo può avere un processore da 14 MIPS, canali di routing da 20 Mbyte / se 16 Kbyte di RAM integrati su un singolo chip.
Il sistema Intel Paragon
In precedenza, i nodi omogenei venivano utilizzati per creare multicomputer ipercubo, poiché tutte le funzioni venivano assegnate all'host. Quindi, questo ha limitato la larghezza di banda di I / O. Pertanto, per risolvere problemi su larga scala in modo efficiente o con un throughput elevato, questi computer non potevano essere utilizzati. Il sistema Intel Paragon è stato progettato per superare questa difficoltà. Ha trasformato il multicomputer in un application server con accesso multiutente in un ambiente di rete.
Meccanismi di passaggio dei messaggi
I meccanismi di passaggio dei messaggi in una rete multicomputer richiedono un supporto hardware e software speciale. In questa sezione, discuteremo alcuni schemi.
Schemi di instradamento dei messaggi
In multicomputer con schema di memorizzazione e instradamento di inoltro, i pacchetti sono l'unità più piccola di trasmissione delle informazioni. Nelle reti con instradamento wormhole, i pacchetti vengono ulteriormente suddivisi in flit. La lunghezza del pacchetto è determinata dallo schema di routing e dall'implementazione della rete, mentre la lunghezza del flit è influenzata dalla dimensione della rete.
In Store and forward routing, i pacchetti sono l'unità di base della trasmissione delle informazioni. In questo caso, ogni nodo utilizza un buffer di pacchetto. Un pacchetto viene trasmesso da un nodo di origine a un nodo di destinazione attraverso una sequenza di nodi intermedi. La latenza è direttamente proporzionale alla distanza tra la sorgente e la destinazione.
In wormhole routing, la trasmissione dal nodo di origine al nodo di destinazione avviene tramite una sequenza di router. Tutti i flit dello stesso pacchetto vengono trasmessi in una sequenza inseparabile in modo pipeline. In questo caso, solo l'header flit sa dove sta andando il pacchetto.
Deadlock e canali virtuali
Un canale virtuale è un collegamento logico tra due nodi. È formato da un buffer flit nel nodo sorgente e nel nodo ricevitore e un canale fisico tra di loro. Quando un canale fisico viene allocato per una coppia, un buffer sorgente viene accoppiato con un buffer del ricevitore per formare un canale virtuale.
Quando tutti i canali sono occupati da messaggi e nessuno dei canali nel ciclo viene liberato, si verificherà una situazione di deadlock. Per evitare ciò, è necessario seguire uno schema di prevenzione dei deadlock.