Podręcznik
4. Procesor – informacje ogólne
4.7. Wieloprocesorowość
Inną metodą zwiększania wydajności systemu komputerowego jest równoległe wykonanie wielu instrukcji zupełnie niezależnie od siebie. Jedną z pierwszych tego typu technik było przetwarzanie współbieżne. W początkowym etapie najczęściej wykorzystywane było tzw. symetryczne przetwarzanie współbieżne (SMP – ang. Symmetric MultiProcessing), gdzie niewielka liczba niezależnych procesorów miała dostęp do wspólnej pamięci operacyjnej. Każdy z procesorów musiał być wyposażony w dodatkowe, sprzętowe mechanizmy zapewniające utrzymanie spójnej i aktualnej zawartości pamięci operacyjnej i pamięci cache. W praktyce takie podejście daje dobre rezultaty, gdy liczba procesorów nie jest duża, do 8. Przy większej liczbie procesorów utrzymanie spójnej pamięci pochłania zbyt wiele czasu i zasobów. Następnie pojawiły się procesory, gdzie dwa lub więcej rdzeni (ang. core) umieszczano w jednym chipie. Pojawiły się też zaawansowane metody rozwiązywania spójności pamięci dzielonej między rdzeniami. Jest to tzw. architektura superskalarna (wielopotokowa) (Rys. 14).
Rys. 14. Architektura superskalarna
W architekturze superskalarnej pojawiły się jednak pewne ograniczenia:
- zależności danych – wynik operacji musi być znany przed wykonaniem kolejnej instrukcji; konflikty związane z odczytem-po-zapisie, zapisem-po-zapisie,
- konflikty zasobów – dwie instrukcje próbują odwołać się do tego samego zasobu,
- zależności procedur – rozgałęzienia – procesor musi czekać na obliczenie wyniku.
Od ich przezwyciężenia zależy wydajność procesora wielordzeniowego. Jednym z najważniejszych zagadnień do rozwiązania jest właściwe przewidywanie rozgałęzień programu. Służy do tego sprzętowy układ przewidywania skoków.