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.