Hoofdstuk 6 Flashcards
Multiprocessor
Een computer dat ten minste 2 processoren bevat. Men gelooft immers dat ILP haar grens bereikt heeft.
Multicore
Een processor die meerde cores bevat. Het verschil met multiprocessors is dat deze meerdere processoren hebben. Een multicoreprocessor heeft meerdere cores binnen 1 processor. Multicore processoren zijn meestal SMP’s.
Shared memory multiprocessor (SMP)
Een multiprocessor waarbij de verschillende processors dezelfde fysieke adresruimte delen. Een SMP kan UMA of NUMA als style hebben. Door het sharen van deze adresruimte moet er synchronisatie zijn zodanig dat de processoren gecoördineerd zijn met elkaar. Dit kan gebeuren met locks die ervoor zorgen dat slechts 1 processor tegelijk specifieke data kan accessen. (figuur tekenen).
Uniform Memory Access (UMA)
Een type van SMP waarbij de memory accesses van alle processoren even lang zijn.
Non-Uniform Memory Access (NUMA)
Een type van SMP waarbij sommige memory accesses veel sneller zijn dan andere omwille van welke processor de toegaan vraagt. Moeilijker dan UMA, maar NUMA machines kunnen beter scalen.
OpenMP
Een tool/API voor shared memory processing in C, C++ of Fortran. Deze API kan o.a. lussen parallelliseren, somreducties uitvoeren (trechtervormige uitvoering). De tool is wel moeilijk te debuggen.
Cluster / Message passing multiprocessor
Een set van computers verbonden met elkaar via LAN die samen functioneren als 1 grote multiprocessor. Het grote verschil met de shared memory processors, is dat clusters (ook wel message-passing multiprocessors genaamd) geen gedeeld geheugen hebben. Elke processor heeft zijn eigen fysieke adresruimte. Indien 2 processoren met elkaar willen communiceren, moet dit via message passing gebeuren zodanig dat berichten en data verstuurd en ontvangen kunnen worden. Clusters hebben een redelijk lage kost, hogere availability en snelle en eenvoudige expandibility hetgeen het attractief maakt voor service providers (zie WSC). Nadelen zijn dat elke processor een eigen kopie van het OS nodig heeft en lagere bandbreedte bereikt wordt dan in multicore processoren.
Address space
Voor virtuele adresruime, zie H5, maar kan ook slaan op de fysieke adresruimte, de adresruimte in het hoofdgeheugen. Bij shared memory
multiprocessors delen de verschillende processoren dezelfde fysieke adresruimte, bij clusters heeft elke processor zijn eigen fysieke adresruimte.
Hardware multithreading
Het gebruik van een processor verhogen door van de ene thread naar de andere te springen wanneer deze ene thread een stall heeft. Binnen 1 process zijn er meerdere threads. Deze delen de data en de heap, maar bevatten elk een eigen stack, eigen registers en een eigen program counter. Threads zorgen voor hogere responsiveness (vb. MS Word), eenvoudige resource sharing, bij stalls zijn thread switches sneller dan context switches en scalabilty (process kan eenvoudig gebruik maken van multiprocessor architecturen).
Coarse-grained multithreading
Een versie van hardware-multithreading waarbij switches van threads enkel gebeuren na significante gebeurtenissen (vb. last-level cache miss). Dit heeft als voordeel dat thread switches minder vaak voorkomen waardoor de werking ervan niet ontzettend snel moet zijn. Het grootste nadeel is het feit dat coarse-grained instructies uitvoert van één thread, waardoor bij een switch de pipeline geledigd moet worden. Dit is vooral nadelig bij korte stalls, coarse-grained is vooral nuttig bij lange stalls waar de start-up kost (voor het ledigen van de pipeline) verwaarloosbaar is tov de lengte van de stall.
Fine-grained multithreading
Een versie van hardware-multithreading waarbij er na elke instructie van thread geswitched wordt. Het voordeel van deze techniek is dat throughput losses, veroorzaakt door korte of lange stalls, verborgen blijven, aangezien instructies van andere threads uitgevoerd worden wanneer deze thread stallt. Door deze gezamenlijke uitvoer van meerdere threads is de uitvoersnelheid van 1 thread langzamer, daarnaast moeten de thread switches zeer snel gebeuren.
Simultaneous multithreading
Een versie van hardware-multithreading die zowel thread-level parallellisme als ILP exploiteert. Meestal zijn er immers meer functionele eenheden dan dat 1 thread kan vullen. Deze techniek is mogelijk op moderne processoren die dynamisch schedulen.
Data-level parallelism
Data opdelen in stukken zodanig dat er parallel aan deze stukken gewerkt kan worden. AVX is hier een voorbeeld van (DGEMM met meerdere elementen per lus).
MIMD
Multiple instruction streams, multiple data streams: multiprocessor, parallellisme op thread-niveau.
SIMD
Single input stream, multiple data stream: Data-level parallellisme (vb. AVX).