Un sistema in cui CPU multiple, montate all'interno della stessa macchina
fisica, condividono la medesima memoria, i medesimi dischi, gli stessi
dispositivi di input/output e concorrono all'esecuzione dello stesso programma
o della stessa applicazione. Nel multiprocessing simmetrico il carico
di lavoro viene ripartito tra le diverse CPU in modo da ottenere una potenza
di calcolo cumulativamente maggiore rispetto a quella di ciascun processore.
Nel multiprocessing asimmetrico, invece, ciascuna CPU svolge un ruolo
diverso dalle altre. La simmetria ideale esiste solo a livello teorico
e nella pratica il parallelismo di esecuzione è tanto maggiore quanto
migliore è la sua implementazione da parte del particolare sistema operativo
impiegato. Di solito il sistema parte sotto la supervisione di una CPU
primaria la quale, successivamente carica la parte multiprocessing del
sistema operativo abilitando in tal modo le altre CPU. La configurazione
minima prevede almeno due processori accoppiati, ma si arriva fino a 32,
64 e anche oltre. Se una sola CPU va in avaria tutto il sistema deve fermarsi
(quasi sempre può comunque riavviarsi in automatico usando le CPU che
sono rimaste attive). Un'alternativa che garantisce maggiore protezione
è l'impiego di CPU ridondanti all'interno dello stesso sistema oppure
l'impiego di diversi sistemi collegati tra loro a grappolo (cluster) così
da concorrere tutti all'elaborazione della stessa applicazione. Nel caso
in cui i sistemi collegati a grappolo siano a loro volta di tipo SMP questa
configurazione prende il nome di Massive Parallel Processor (MPP).
|