* Parallelismo: Esegue esplicitamente più istruzioni * contemporaneamente * utilizzando più unità di elaborazione (come più core in una CPU). Ciò richiede risorse hardware dedicate.
* Concorrenza: Si occupa dell'esecuzione di più istruzioni che * si sovrappongono * nel tempo, ma non necessariamente nello stesso istante. Questo può essere ottenuto attraverso varie tecniche, tra cui:
* Multitasking: Esecando più programmi apparentemente allo stesso tempo cambiando rapidamente tra di loro. L'elaborazione effettiva è ancora sequenziale, ma la commutazione è abbastanza veloce da dare l'illusione della concorrenza.
* Multithreading: Un singolo programma che esegue più thread di istruzioni contemporaneamente. Questi thread possono condividere risorse e un singolo core può spostarsi rapidamente tra loro (commutazione del contesto).
* Parallelismo a livello di istruzione (ILP): La CPU riorganizza ed esegue più istruzioni contemporaneamente all'interno di un singolo core, sfruttando il pipelining e altre tecniche per migliorare le prestazioni. Questo accade a un livello molto più basso rispetto al multitasking o al multithreading.
* SIMD (singola istruzione, più dati): Una singola istruzione opera su più punti dati contemporaneamente, spesso utilizzati nei calcoli di elaborazione dei vettori e GPU.
In sostanza, la concorrenza è un termine più compreso. Il parallelismo è un * tipo * di concorrenza in cui le istruzioni vengono eseguite contemporaneamente su unità hardware separate. La concorrenza può anche essere raggiunta senza un vero parallelismo, solo attraverso una programmazione intelligente e una gestione delle risorse. L'obiettivo di entrambi è migliorare le prestazioni complessive del sistema e il throughput sovrapponendo o eseguendo contemporaneamente diverse parti di un programma o più programmi.
Programmazione © www.354353.com