13 procesory superskalarne
Transkrypt
13 procesory superskalarne
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 r1,r2 mov 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 (I1) R4:=R3+1 (I2) R3:=R5+1 (I3) R7:=R3 op R4 (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) Wykonywanie rozkazu I3 nie może być zakończone, zanim nie zostanie rozpoczęte wykonywanie rozkazu I2 i nie zostaną pobrane jego argumenty. I3 aktualizuje rejestr R3, który jest źródłem argumentu dla rozkazu 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 Pobieranie rozkazu Pobieranie rozkazu Dekodowanie Dekodowanie WykonyZapis wanie opóźniony WykonyZapis wanie opóźniony r1 r2 Pobieranie rozkazu Pobieranie rozkazu Dekodowanie Dekodowanie WykonyZapis wanie opóźniony WykonyZapis wanie opóźniony r1 r2 r3 r4 r5 r6 Pobieranie rozkazu Pobieranie rozkazu Dekodowanie Dekodowanie WykonyZapis wanie opóźniony WykonyZapis wanie opóźniony Pobieranie rozkazu Pobieranie rozkazu r1 r2 Pobieranie rozkazu Pobieranie rozkazu Dekodowanie Dekodowanie Brak zależności Zależność danych (r2 wykorzystuje dane obliczone przez r1) Zależność proceduralna rozgałęzienie Dekodowanie Dekodowanie Pobieranie rozkazu Pobieranie rozkazu WykonyZapis wanie opóźniony WykonyZapis wanie opóźniony WykonyZapis wanie opóźniony WykonyZapis wanie opóźniony Dekodo- WykonyZapis wanie wanie opóźniony Dekodo- WykonyZapis wanie wanie opóźniony Konflikt dotyczący zasobów 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 rozkazu. Zmieniona kolejność wydawania i kończenia. – Wykorzystujemy bufor zdekodowanych rozkazów zwany oknem rozkazu. – 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. R3b:=R3a op R5a R4b:=R3b + 1 R3c:=R5a + 1 R7b:=R3c op R4b 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%.