Architettura di computer paralleli - Modelli
L'elaborazione parallela è stata sviluppata come una tecnologia efficace nei computer moderni per soddisfare la domanda di prestazioni più elevate, costi inferiori e risultati accurati nelle applicazioni della vita reale. Gli eventi simultanei sono comuni nei computer odierni a causa della pratica di multiprogrammazione, multiprocessing o multicomputing.
I computer moderni hanno pacchetti software potenti ed estesi. Per analizzare lo sviluppo delle prestazioni dei computer, dobbiamo prima comprendere lo sviluppo di base di hardware e software.
Computer Development Milestones - Ci sono due fasi principali di sviluppo del computer - mechanical o electromechanicalparti. I computer moderni si sono evoluti dopo l'introduzione dei componenti elettronici. Gli elettroni ad alta mobilità nei computer elettronici hanno sostituito le parti operative nei computer meccanici. Per la trasmissione delle informazioni, il segnale elettrico che viaggia quasi alla velocità di una luce ha sostituito gli ingranaggi o le leve meccaniche.
Elements of Modern computers - Un moderno sistema informatico è costituito da hardware, set di istruzioni, programmi applicativi, software di sistema e interfaccia utente.
I problemi di elaborazione sono classificati come calcolo numerico, ragionamento logico ed elaborazione delle transazioni. Alcuni problemi complessi potrebbero richiedere la combinazione di tutte e tre le modalità di elaborazione.
Evolution of Computer Architecture- Negli ultimi quattro decenni, l'architettura dei computer ha subito cambiamenti rivoluzionari. Abbiamo iniziato con l'architettura Von Neumann e ora abbiamo multicomputer e multiprocessori.
Performance of a computer system- Le prestazioni di un sistema informatico dipendono sia dalla capacità della macchina che dal comportamento del programma. La capacità della macchina può essere migliorata con una migliore tecnologia hardware, caratteristiche architettoniche avanzate e una gestione efficiente delle risorse. Il comportamento del programma è imprevedibile poiché dipende dall'applicazione e dalle condizioni di runtime
Multiprocessori e multicomputer
In questa sezione, discuteremo di due tipi di computer paralleli:
- Multiprocessors
- Multicomputers
Multicomputer a memoria condivisa
I tre modelli multiprocessore di memoria condivisa più comuni sono:
Accesso alla memoria uniforme (UMA)
In questo modello, tutti i processori condividono la memoria fisica in modo uniforme. Tutti i processori hanno lo stesso tempo di accesso a tutte le parole di memoria. Ogni processore può avere una memoria cache privata. La stessa regola viene seguita per i dispositivi periferici.
Quando tutti i processori hanno uguale accesso a tutte le periferiche, il sistema viene chiamato a symmetric multiprocessor. Quando solo uno o pochi processori possono accedere ai dispositivi periferici, il sistema viene chiamatoasymmetric multiprocessor.
Accesso alla memoria non uniforme (NUMA)
Nel modello multiprocessore NUMA, il tempo di accesso varia con la posizione della parola di memoria. Qui, la memoria condivisa è distribuita fisicamente tra tutti i processori, chiamati memorie locali. La raccolta di tutte le memorie locali forma uno spazio indirizzi globale a cui possono accedere tutti i processori.
Cache Only Memory Architecture (COMA)
Il modello COMA è un caso speciale del modello NUMA. Qui, tutte le memorie principali distribuite vengono convertite in memorie cache.
Distributed - Memory Multicomputers- Un sistema multicomputer a memoria distribuita è costituito da più computer, noti come nodi, interconnessi da una rete di passaggio di messaggi. Ogni nodo funge da computer autonomo con un processore, una memoria locale e talvolta dispositivi I / O. In questo caso, tutte le memorie locali sono private e sono accessibili solo ai processori locali. Ecco perché si chiamano le macchine tradizionalino-remote-memory-access (NORMA) macchine.
Computer multivettore e SIMD
In questa sezione, discuteremo di supercomputer e processori paralleli per l'elaborazione vettoriale e il parallelismo dei dati.
Supercomputer vettoriali
In un computer vettoriale, un processore vettoriale è collegato al processore scalare come funzionalità opzionale. Il computer host carica prima il programma ei dati nella memoria principale. Quindi l'unità di controllo scalare decodifica tutte le istruzioni. Se le istruzioni decodificate sono operazioni scalari o operazioni di programma, il processore scalare esegue tali operazioni utilizzando pipeline funzionali scalari.
Se invece le istruzioni decodificate sono operazioni vettoriali, le istruzioni verranno inviate all'unità di controllo vettoriale.
Supercomputer SIMD
Nei computer SIMD, un numero 'N' di processori è collegato a un'unità di controllo e tutti i processori hanno le loro unità di memoria individuali. Tutti i processori sono collegati da una rete di interconnessione.
Modelli PRAM e VLSI
Il modello ideale fornisce una struttura adeguata per lo sviluppo di algoritmi paralleli senza considerare i vincoli fisici oi dettagli di implementazione.
I modelli possono essere applicati per ottenere limiti teorici delle prestazioni su computer paralleli o per valutare la complessità VLSI sull'area del chip e il tempo operativo prima che il chip venga fabbricato.
Macchine parallele ad accesso casuale
Sheperdson e Sturgis (1963) hanno modellato i computer convenzionali uniprocessore come macchine ad accesso casuale (RAM). Fortune e Wyllie (1978) hanno sviluppato un modello PRAM (parallel random access-machine) per modellare un computer parallelo idealizzato con zero accessi alla memoria e sincronizzazione.
Una PRAM con N processori dispone di un'unità di memoria condivisa. Questa memoria condivisa può essere centralizzata o distribuita tra i processori. Questi processori operano su una memoria di lettura, una memoria di scrittura e un ciclo di calcolo sincronizzati. Quindi, questi modelli specificano come vengono gestite le operazioni di lettura e scrittura simultanee.
Di seguito sono riportate le possibili operazioni di aggiornamento della memoria:
Exclusive read (ER) - In questo metodo, in ogni ciclo un solo processore può leggere da qualsiasi posizione di memoria.
Exclusive write (EW) - In questo metodo, almeno un processore può scrivere in una posizione di memoria alla volta.
Concurrent read (CR) - Consente a più processori di leggere le stesse informazioni dalla stessa posizione di memoria nello stesso ciclo.
Concurrent write (CW)- Consente operazioni di scrittura simultanee nella stessa posizione di memoria. Per evitare conflitti di scrittura vengono impostati alcuni criteri.
Modello di complessità VLSI
I computer paralleli utilizzano chip VLSI per fabbricare array di processori, array di memoria e reti di commutazione su larga scala.
Al giorno d'oggi, le tecnologie VLSI sono bidimensionali. La dimensione di un chip VLSI è proporzionale alla quantità di spazio di archiviazione (memoria) disponibile in quel chip.
Possiamo calcolare la complessità spaziale di un algoritmo dall'area del chip (A) dell'implementazione del chip VLSI di quell'algoritmo. Se T è il tempo (latenza) necessario per eseguire l'algoritmo, AT fornisce un limite superiore al numero totale di bit elaborati attraverso il chip (o I / O). Per alcuni computer, esiste un limite inferiore, f (s), tale che
AT 2 > = O (f (s))
Dove A = area del chip e T = tempo
Tracce di sviluppo architettonico
L'evoluzione dei computer paralleli ho diffuso lungo i seguenti binari:
- Tracce multiple del processore
- Traccia multiprocessore
- Traccia multicomputer
- Traccia dati multipli
- Pista di vettore
- Traccia SIMD
- Traccia di più thread
- Traccia multithread
- Traccia del flusso di dati
In multiple processor track, si presume che diversi thread vengano eseguiti contemporaneamente su processori diversi e comunichino attraverso il sistema di memoria condivisa (traccia multiprocessore) o di passaggio di messaggi (traccia multicomputer).
In multiple data track, si presume che lo stesso codice venga eseguito sull'enorme quantità di dati. Viene fatto eseguendo le stesse istruzioni su una sequenza di elementi di dati (traccia vettoriale) o attraverso l'esecuzione della stessa sequenza di istruzioni su un insieme di dati simile (traccia SIMD).
In multiple threads track, si presume che l'esecuzione interfogliata di vari thread sullo stesso processore nasconda i ritardi di sincronizzazione tra i thread in esecuzione su processori diversi. L'interleaving dei thread può essere grossolano (traccia multithread) o fine (traccia del flusso di dati).