Simmetria del processoreModifica
In un sistema multiprocessing, tutte le CPU possono essere uguali, o alcune possono essere riservate per scopi speciali. Una combinazione di considerazioni di progettazione dell’hardware e del software del sistema operativo determinano la simmetria (o la sua mancanza) in un dato sistema. Per esempio, considerazioni hardware o software possono richiedere che solo una particolare CPU risponda a tutti gli interrupt hardware, mentre tutto il resto del lavoro nel sistema può essere distribuito equamente tra le CPU; o l’esecuzione del codice in modalità kernel può essere limitata a una sola particolare CPU, mentre il codice in modalità utente può essere eseguito in qualsiasi combinazione di processori. I sistemi multiprocesso sono spesso più facili da progettare se tali restrizioni sono imposte, ma tendono ad essere meno efficienti dei sistemi in cui tutte le CPU sono utilizzate.
I sistemi che trattano tutte le CPU allo stesso modo sono chiamati sistemi multiprocesso simmetrico (SMP). Nei sistemi in cui tutte le CPU non sono uguali, le risorse del sistema possono essere divise in diversi modi, incluso il multiprocesso asimmetrico (ASMP), il multiprocesso con accesso non uniforme alla memoria (NUMA) e il multiprocesso a grappolo.
Sistema multiprocessore master/slaveModifica
In un sistema multiprocessore master/slave, la CPU master ha il controllo del computer e la CPU slave svolge i compiti assegnati. Le CPU possono essere completamente diverse in termini di velocità e architettura. Alcune (o tutte) le CPU possono avere un bus comune, ciascuna può anche avere un bus privato (per risorse private), o possono essere isolate tranne che per un percorso di comunicazione comune. Allo stesso modo, le CPU possono condividere la RAM comune e/o avere una RAM privata a cui gli altri processori non possono accedere. I ruoli di master e slave possono cambiare da una CPU all’altra.
Un primo esempio di un sistema multiprocessore master/slave è il computer desktop Tandy/Radio Shack TRS-80 Model 16 che uscì nel febbraio 1982 e faceva funzionare il sistema operativo multiutente/multi-tasking Xenix, la versione di Microsoft di UNIX (chiamato TRS-XENIX). Il Model 16 ha 3 microprocessori, una CPU Zilog Z80 a 8 bit che gira a 4MHz, una CPU Motorola 68000 a 16 bit che gira a 6MHz e un Intel 8021 nella tastiera. Quando il sistema veniva avviato, lo Z-80 era il master e il processo di avvio Xenix inizializzava il 68000 slave, e poi trasferiva il controllo al 68000, dopodiché le CPU cambiavano i ruoli e lo Z-80 diventava un processore slave che era responsabile di tutte le operazioni di I/O inclusi disco, comunicazioni, stampante e rete, così come la tastiera e il monitor integrato, mentre il sistema operativo e le applicazioni giravano sulla CPU 68000. Lo Z-80 poteva essere usato per svolgere altri compiti.
Anche il precedente TRS-80 Model II, uscito nel 1979, poteva essere considerato un sistema multiprocessore, poiché aveva sia una CPU Z-80 che un microprocessore Intel 8021 nella tastiera. L’8021 fece del Model II il primo sistema di computer da tavolo con una tastiera separata, staccabile e leggera, collegata da un singolo filo sottile e flessibile, e probabilmente la prima tastiera a usare un microprocessore dedicato, entrambi attributi che sarebbero stati poi copiati anni dopo da Apple e IBM.
Flussi di istruzioni e datiModifica
Nel multiprocesso, i processori possono essere usati per eseguire una singola sequenza di istruzioni in contesti multipli (single-instruction, multiple-data o SIMD, spesso usato nell’elaborazione vettoriale), più sequenze di istruzioni in un singolo contesto (multiple-instruction, single-data o MISD, usato per la ridondanza nei sistemi fail-safe e talvolta applicato per descrivere processori pipeline o hyper-threading), o più sequenze di istruzioni in più contesti (multiple-instruction, multiple-data o MIMD).
Accoppiamento di processoriModifica
Sistema multiprocessore strettamente accoppiatoModifica
I sistemi multiprocessore strettamente accoppiati contengono CPU multiple che sono collegate a livello di bus. Queste CPU possono avere accesso a una memoria centrale condivisa (SMP o UMA), o possono partecipare a una gerarchia di memoria con memoria locale e condivisa (SM) (NUMA). L’IBM p690 Regatta è un esempio di un sistema SMP di fascia alta. I processori Intel Xeon hanno dominato il mercato dei multiprocessori per i PC aziendali e sono stati l’unica opzione x86 importante fino al rilascio della gamma di processori Opteron di AMD nel 2004. Entrambe le gamme di processori avevano la propria cache a bordo ma fornivano l’accesso alla memoria condivisa; i processori Xeon attraverso un tubo comune e i processori Opteron attraverso percorsi indipendenti alla RAM di sistema.
I multiprocessori su chip, conosciuti anche come multi-core computing, coinvolgono più di un processore posto su un singolo chip e possono essere considerati la forma più estrema di multiprocessing strettamente accoppiato. I sistemi mainframe con più processori sono spesso strettamente accoppiati.
Sistema multiprocessore liberamente accoppiatoModifica
I sistemi multiprocessore liberamente accoppiati (spesso indicati come cluster) sono basati su più computer standalone a singolo o doppio processore interconnessi tramite un sistema di comunicazione ad alta velocità (Gigabit Ethernet è comune). Un cluster Linux Beowulf è un esempio di un sistema strettamente accoppiato.
I sistemi strettamente accoppiati hanno prestazioni migliori e sono fisicamente più piccoli dei sistemi strettamente accoppiati, ma hanno storicamente richiesto maggiori investimenti iniziali e possono deprezzarsi rapidamente; i nodi in un sistema strettamente accoppiato sono di solito computer economici e possono essere riciclati come macchine indipendenti al momento del ritiro dal cluster.
Anche il consumo energetico è una considerazione. I sistemi strettamente accoppiati tendono ad essere molto più efficienti dal punto di vista energetico rispetto ai cluster. Questo perché una considerevole economia può essere realizzata progettando i componenti per lavorare insieme fin dall’inizio nei sistemi strettamente accoppiati, mentre i sistemi liberamente accoppiati usano componenti che non erano necessariamente destinati specificamente all’uso in tali sistemi.
I sistemi liberamente accoppiati hanno la capacità di eseguire diversi sistemi operativi o versioni del sistema operativo su diversi sistemi.
Si tratta di un’altra considerazione.