Architektura komputerów Tydzień 13 Procesory superskalarne
Procesor superskalarny Termin superskalarny określa procesory, które mogą wykonywać dwie lub więcej instrukcje skalarne (arytmetyczne, logiczne) jednocześnie. Rozwiązanie to stosuje się w nowoczesnych procesorach w celu zwiększenia wydajności.
Ograniczenia Następujące ograniczenia uniemożliwiają równoległe wykonywanie instrukcji: zależność danych zależność proceduralna konflikt dotyczący zasobów zależność wyjściowa antyzależność
Zależność danych add mov r1,r2 r3,r1 Drugi rozkaz może być pobrany i zdekodowany, ale nie może być wykonany zanim nie zostanie wykonany pierwszy rozkaz, ponieważ potrzebne są dane tworzone przez pierwszy.
Zależności proceduralne Obecność rozgałęzień w sekwencji rozkazów ma jeszcze większy wpływ na potok superskalarny, niż na pojedynczy. Straty spowodowane przez rozgałęzienie mogą być jeszcze większe, ponieważ więcej jest wykonywane w jednostce czasu.
Konflikt dotyczący zasobów Konflikt dotyczący zasobów polega na jednoczesnym rywalizowaniu dwóch instrukcji o te same zasoby. Przykładami takich zasobów są: pamięć magistrale kanały wejścia-wyjścia Takie konflikty mogą być rozwiązywane przez zwielokratnianie zasobów lub odpowiednią organizację.
Zależność wyjściowa W przykładowym kodzie: R3:=R3 op R5 R4:=R3+1 R3:=R5+1 R7:=R3 op R4 (I1) (I2) (I3) (I4) Rozkaz I3 nie jest zależny od I1, ale nie może być wykonany przed nim, gdyż wówczas I4 będzie miał niewłaściwą zawartość rejestru R3.
Antyzależność R3:=R3 op R5 R4:=R3 + 1 R3:=R5 + 1 (I1) (I2) (I3) I3 nie może być zakończone, zanim nie zostanie rozpoczęte wykonywanie I2 i nie zostaną pobrane jego argumenty. I3 aktualizuje rejestr R3, który jest źródłem argumentu dla I2. Ograniczenie jest podobne do zależności danych, lecz na odwrót: drugi rozkaz niszczy wartość używaną przez pierwszy.
Wpływ zależności r1 r2 Brak zależności r1 r2 Zależność danych (r2 wykorzystuje dane obliczone przez r1) r1 r2 Zależność proceduralna r3 r4 r1 r2 Konflikt dotyczący zasobów r5 r6 rozgałęzienie
Kolejność wykonania rozkazów Kolejne wydawanie połączone z kończeniem w zmienionej kolejności. Jeżeli rozkaz wykonuje się dłużej niż jeden cykl, jego wyniki mogą być osiągalne później, niż kolejnego. Zmieniona kolejność wydawania i kończenia. Wykorzystujemy bufor zdekodowanych rozkazów zwany oknem. Jednostka wykonawcza pobiera dowolny rozkaz z okna pod warunkiem spełnienia ograniczeń.
Przemianowanie rejestrów Metoda eliminowania konfliktów antyzależności i zależności wyjściowej przez powielenie zasobów. R3 b :=R3 a op R5 a R4 b :=R3 b + 1 R3 c :=R5 a + 1 R7 b :=R3 c op R4 b Użycie innego fizycznego rejestru R3c w rozkazie I3 zapobiega antyzależnośći w drugim rozkazie oraz zależności wyjściowej w pierwszym. Dzięki temu I3 może być wykonany natychmiast.
Procesor PowerPC 620 Procesor PowerPC 620 zawiera sześć niezależnych jednostek wykonawczych: jednostkę rozkazów trzy jednostki całkowitoliczbowe jednostkę ładowania/zapisu jednostkę zmiennopozycyjną Procesor może jednocześnie wykonywać do 4 rozkazów: 3 całkowitoliczbowe i 1 zmiennopozycyjny.
PowerPC 620 cd Procesor zawiera układy przewidywania rozgałęzień, bufory przemianowania rejestrów oraz stacje rezerwowe wewnątrz jednostek wykonawczych. Procesor ten może wykonywać do 4 nierozstrzygniętych rozkazów rozgałęzień. Przewidywanie skoków oparte jest na tablicy historii zawierającej 2048 zapisów. Skuteczność przewidywań: 90%.