Convergenza di architetture parallele
Le macchine parallele sono state sviluppate con diverse architetture distinte. In questa sezione, discuteremo le diverse architetture di computer paralleli e la natura della loro convergenza.
Architettura della comunicazione
L'architettura parallela migliora i concetti convenzionali dell'architettura del computer con l'architettura della comunicazione. L'architettura del computer definisce le astrazioni critiche (come il confine del sistema utente e il confine hardware-software) e la struttura organizzativa, mentre l'architettura della comunicazione definisce le operazioni di comunicazione e sincronizzazione di base. Affronta anche la struttura organizzativa.
Il modello di programmazione è lo strato superiore. Le applicazioni sono scritte nel modello di programmazione. I modelli di programmazione parallela includono:
- Spazio degli indirizzi condiviso
- Passaggio del messaggio
- Programmazione parallela dei dati
Shared addressprogrammare è proprio come usare una bacheca, dove si può comunicare con una o più persone inserendo informazioni in un luogo particolare, che è condiviso da tutte le altre persone. L'attività individuale è coordinata annotando chi sta facendo quale compito.
Message passing è come una telefonata o una lettera in cui un destinatario specifico riceve informazioni da un mittente specifico.
Data parallella programmazione è una forma organizzata di cooperazione. Qui, più persone eseguono un'azione su elementi separati di un set di dati contemporaneamente e condividono le informazioni a livello globale.
Memoria condivisa
I multiprocessori a memoria condivisa sono una delle classi più importanti di macchine parallele. Offre una migliore produttività sui carichi di lavoro multiprogrammazione e supporta programmi paralleli.
In questo caso, tutti i sistemi informatici consentono a un processore e un set di controller di I / O di accedere a una raccolta di moduli di memoria mediante un'interconnessione hardware. La capacità di memoria viene aumentata aggiungendo moduli di memoria e la capacità di I / O viene aumentata aggiungendo dispositivi al controller I / O o aggiungendo controller I / O aggiuntivo. La capacità di elaborazione può essere aumentata aspettando che sia disponibile un processore più veloce o aggiungendo più processori.
Tutte le risorse sono organizzate attorno a un bus di memoria centrale. Attraverso il meccanismo di accesso al bus, qualsiasi processore può accedere a qualsiasi indirizzo fisico nel sistema. Poiché tutti i processori sono equidistanti da tutte le posizioni di memoria, il tempo di accesso o la latenza di tutti i processori è la stessa su una posizione di memoria. Questo è chiamatosymmetric multiprocessor.
Architettura a passaggio di messaggi
L'architettura di passaggio dei messaggi è anche un'importante classe di macchine parallele. Fornisce la comunicazione tra i processori come operazioni di I / O esplicite. In questo caso, la comunicazione viene combinata a livello di I / O, invece del sistema di memoria.
Nell'architettura di trasmissione dei messaggi, la comunicazione utente viene eseguita utilizzando il sistema operativo o le chiamate di libreria che eseguono molte azioni di livello inferiore, inclusa l'effettiva operazione di comunicazione. Di conseguenza, esiste una distanza tra il modello di programmazione e le operazioni di comunicazione a livello di hardware fisico.
Send e receiveè la più comune operazione di comunicazione a livello di utente nel sistema di trasmissione dei messaggi. Invia specifica un buffer dati locale (che deve essere trasmesso) e un processore remoto ricevente. Ricevi specifica un processo di invio e un buffer dati locale in cui verranno inseriti i dati trasmessi. Nell'operazione di invio, un fileidentifier o a tag è allegato al messaggio e l'operazione di ricezione specifica la regola di corrispondenza come un tag specifico da un processore specifico o qualsiasi tag da qualsiasi processore.
La combinazione di un invio e di una ricezione corrispondente completa una copia da memoria a memoria. Ciascuna estremità specifica il proprio indirizzo dati locale e un evento di sincronizzazione a coppie.
Convergenza
Lo sviluppo dell'hardware e del software ha sbiadito il confine netto tra la memoria condivisa e i campi di passaggio dei messaggi. Il passaggio dei messaggi e uno spazio di indirizzi condiviso rappresentano due distinti modelli di programmazione; ciascuno fornisce un paradigma trasparente per la condivisione, la sincronizzazione e la comunicazione. Tuttavia, le strutture di base della macchina sono convergenti verso un'organizzazione comune.
Elaborazione parallela dei dati
Un'altra importante classe di macchine parallele è variamente chiamata: array di processori, architettura parallela di dati e macchine per dati multipli con istruzione singola. La caratteristica principale del modello di programmazione è che le operazioni possono essere eseguite in parallelo su ogni elemento di una grande struttura dati regolare (come array o matrice).
I linguaggi di programmazione parallela ai dati vengono generalmente applicati visualizzando lo spazio degli indirizzi locale di un gruppo di processi, uno per processore, che formano uno spazio globale esplicito. Poiché tutti i processori comunicano insieme e c'è una vista globale di tutte le operazioni, è possibile utilizzare uno spazio di indirizzi condiviso o il passaggio di messaggi.
Problemi di progettazione fondamentali
Lo sviluppo del modello di programmazione non può solo aumentare l'efficienza del computer, né lo sviluppo dell'hardware da solo può farlo. Tuttavia, lo sviluppo dell'architettura del computer può fare la differenza nelle prestazioni del computer. Possiamo comprendere il problema di progettazione concentrandoci su come i programmi utilizzano una macchina e su quali tecnologie di base vengono fornite.
In questa sezione, discuteremo dell'astrazione della comunicazione e dei requisiti di base del modello di programmazione.
Astrazione di comunicazione
L'astrazione della comunicazione è l'interfaccia principale tra il modello di programmazione e l'implementazione del sistema. È come il set di istruzioni che fornisce una piattaforma in modo che lo stesso programma possa essere eseguito correttamente su molte implementazioni. Le operazioni a questo livello devono essere semplici.
L'astrazione della comunicazione è come un contratto tra l'hardware e il software, che si concede reciprocamente la flessibilità per migliorare senza influire sul lavoro.
Requisiti del modello di programmazione
Un programma parallelo ha uno o più thread che operano sui dati. Un modello di programmazione parallela definisce quali dati possono essere forniti dai threadname, quale operations può essere eseguito sui dati nominati e quale ordine è seguito dalle operazioni.
Per confermare che le dipendenze tra i programmi vengono applicate, un programma parallelo deve coordinare l'attività dei suoi thread.