Architektura komputerów
Tydzień 6
RISC i CISC
Znaczenie terminów
CISC Complete Instruction Set
Computer komputer o pełnej liście
rozkazów.
RISC Reduced Instruction Set
Computer komputer o zredukowanej
liście rozkazów.
Filozofia CISC
Złożone listy rozkazów zaprojektowano
w celu:
ułatwienia tworzenia kompilatorów
poprawienia efektywności wykonywania
(złożone operacje odpowiadają
pojedynczym instrukcjom procesora)
wspierania złożonych języków
wysokiego poziomu
Filozofia RISC
Prosty zbiór rozkazów
Duża liczba rejestrów roboczych
Optymalizacja wykorzystania rejestrów
przez kompilator
Akcent na optymalizację potoku
rozkazów
Operacje
W programach kompilowanych z języków
wysokiego poziomu dominują instrukcje:
przemieszczenia danych
skoków warunkowych i porównania
Najbardziej czasochłonne są operacje
wywołania podprogramu i powrotu.
Te właśnie instrukcje powinny być
zoptymalizowane przez procesor.
Argumenty
Większość odniesień do danych dotyczy
prostych zmiennych skalarnych.
Ponad 80% tych skalarów to zmienne
lokalne.
Dlatego ważny jest szybki dostęp do
argumentów. Z badań wynika, że
pierwszym kandydatem do optymalizacji
jest mechanizm przechowywania i
osiągania zmiennych skalarnych.
Wywołania procedur
Najbardziej czasochłonne operacje, dlatego
korzystne byłoby ich zoptymalizowanie.
Badania wykazały, że:
98% procedur używa mniej niż 6
argumentów
92% z nich używa mniej niż 6 lokalnych
zmiennych skalarnych.
Czyli liczba słów przypadająca na jedno
wywołanie nie jest wielka.
Użycie dużej tablicy rejestrów
Potrzebny jest szybki dostęp do
argumentów.
Większość odniesień do argumentów
dotyczy lokalnych skalarów, które łatwo
możemy przechowywać w rejestrach.
Rejestry są najszybszą dostępną
pamięcią.
Zminimalizowanie operacji dostępu do
pamięci pozwala zwiększyć wydajność.
Okna rejestrów
Większość odniesień dotyczy lokalnych
skalarów, więc najlepiej przechowywać
je w rejestrach, z zostawieniem kilku
rejestrów na zmienne globalne.
Pojęcie lokalności zmienia się z każdym
wywołaniem procedury i powrotem.
Możemy użyć wielu małych zestawów
rejestrów przypisanych do konkretnych
procedur.
wN okno rejestrów
Okna rejestrów
dostępnych na raz
B.in
X.in parametry
A.loc
procedury X
B.loc
A.in
X.loc dane lokalne
procedury X
C.in
Okno w0 zawiera
H.loc
parametry wejściowe
C.loc
procedury A (A.in),
zmienne lokalne
H.in
procedury A (A.loc) oraz
rejestry na parametry
D.in
wywołania nowej
G.loc
procedury (B.in).
D.loc
Po wywołaniu procedury
G.in
B okno bieżące jest
zmieniane na w1,
E.in
F.loc
udostępniając nowy
E.loc
zestaw rejestrów na
F.in
zmienne lokalne i do
wywołania kolejnej procedury.
0
w
w
1
7
w
2
w
6
w
3
w
w
5
4
w
Zmienne globalne
Opisany wcześniej układ stanowi
efektywną organizację do przechowywania
zmiennych lokalnych w rejestrach. Nie
odpowiada jednak potrzebom
przechowywania zmiennych globalnych.
Są dwa możliwe rozwiązania:
Przypisanie zmiennych globalnych do
lokalnych rejestrów dla każdej
procedury.
Wydzielenie rejestrów globalnych.
Duża tablica rejestrów a
pamięć podręczna
Tablica rejestrów zorganizowana w
postaci okien jest podobna do pamięci
cache.
Tablica rejestrów może nieefektywnie
wykorzystać przestrzeń, ponieważ wiele
procedur nie wykorzysta wszystkich
przypisanych rejestrów.
Pamięć cache wczytuje dane w blokach, z
których część nie będzie nigdy
wykorzystana.
Porównanie własności
Tablica rejestrów Pamięć podręczna
Wszystkie skalary Ostatnio używane
lokalne skalary lokalne
Pojedyncze zmienne Bloki pamięci
Zmienne globalne Ostatnio używane
przypisane przez zmienne globalne
kompilator
Zachowywanie/odtwarza
Zachowywanie/odtwarza
nie oparte na algorytmie
nie oparte na głębokości
wymiany pamięci cache
zagnieżdżenia procedury
Adresowanie pamięci
Adresowanie rejestrów
Dostęp do lokalnych zmiennych
Rozkaz Rozkaz
Pamięć
R Adres
Rejestry podręczna
Numer
okna
Dekoder
Dane Dane
Dane
Porównanie
Wybór
Tablica rejestrów Pamięć
Dane
oparta na oknach podręczna
Znaczniki
Optymalizacja kompilatorem
Celem kompilatora jest maksymalnie długie
przechowywanie argumentów w rejestrach i
minimalizacja operacji ładowania i zapisu
do pamięci.
Każda zmienna jest przypisywana do
rejestru symbolicznego. Następnie nieogra-
niczona liczba rejestrów symbolicznych jest
odwzorowywana na rzeczywiste.
Istotą optymalizacji jest zdecydowanie
które wielkości mają być przypisane
rejestrom w określonym punkcie programu.
Powody używania CISC
Aatwiejsze tworzenie kompilatorów
Oczekiwanie mniejszych programów
(mniej instrukcji).
Oczekiwanie wydajniejszych programów
(jedna złożona instrukcja powinna
wykonać się szybciej niż kilka prostszych).
Zgodność z istniejącym
oprogramowaniem.
Powody używania RISC
Prosta konstrukcja procesora zapewnia
jego większą wydajność.
Jedna instrukcja jest wykonywana w
jednym cyklu zegara.
Prawie cała optymalizacja wydajności
leży po stronie kompilatora. Dzięki
temu możliwe jest tworzenie coraz
lepszych kompilatorów dla istniejącego
już sprzętu.
Porównanie własności
Złożoność Trudność przetwarzania Wspieranie
dekodowania potokowego kompilatora
Procesor
AMD29000
AMD29000 1 4 1 nie nie 1 nie 1 8 3
SPARC 1 4 2 nie nie 1 nie 1 5 4
HP PA 1 4 10 nie nie 1 nie 1 5 4
IBM 390 3 6 2 nie tak 2 tak 4 4 2
Intel i486 12 12 15 nie tak 2 tak 4 3 3
Intel i960 2 8 9 nie nie 1 tak 1 5 3
PowerPC 1 4 5 nie nie 1 tak 1 5 5
Alpha 1 4 1 nie nie 1 tak 1 5 5
pośrednie
rozkazów
adresowania
adresowanie
liczba trybów
adresowanie nie
liczba rozmiarów
zastosowań MMU
maksymalna liczba
maksymalna liczba
rejestru całkowitego
rozkazu (w bajtach)
liczba bitów numeru
liczba bitów numeru
argumentów pamięci
wyrównane do słowa
maksymalny rozmiar
operacje arytmetyczne
z dostępem do pamięci
rejestru zmiennopozyc.
Potoki RISC
Większość rozkazów jest typu rejestr-
rejestr i ma dwie fazy:
I: pobranie rozkazu
E: wykonanie rozkazu
Operacje ładowania i zapisu mają jeszcze
trzecią fazę:
D. Operacja dostępu do pamięci (pamięć-rejestr
lub rejestr-pamięć).
Jeśli rozkaz używa argumentu zmienionego
przez poprzedni, potrzebne jest opóznienie
Przebieg czasowy
przetwarzania potokowego
Aaduj A M
I E D
I E D
Aaduj B M
I E D
NOOP
I E
I E
Dodaj C A+B
I E
I E
I E
I E
I E D
I E D
Zapisz M C
I E
I E
Skok do X
Musimy użyć instrukcji NOOP ponieważ w przeciwnym
wypadku faza wykonania instrukcji dodawania pokryłaby się
z fazą pobierania danych poprzedniej instrukcji ładowania.
Optymalizacja przetwarzania
potokowego
100 Aaduj A M 100 Aaduj A M
I E D I E D
I E D I E D
101 NOOP 101 Skok do 105
I E I E
I E
I E
I E
102 Dodaj A A+I 102 Dodaj A A+I
I E I E
I E I E
103 Skok do 106
I E
I E
I E I E D
I E I E D
105 Zapisz M A
106 Zapisz M A
I E D
I E D
Rozkaz pusty umożliwia Zamieniona kolejność pozwala
dodawanie pominąć rozkaz pusty
Dzięki zamianie kolejności rozkazów skoku i dodawania
możliwe jest pominięcie pustej instrukcji opózniającej.
Taka zamiana jest jednak możliwa tylko w przypadkach,
kiedy nie zmieni to wyniku operacji.
Przyszłość RISC i CISC
W ciągu ostatnich lat polemika RISC kontra
CISC właściwie zanikła. Stopniowo
technologie się przenikają: systemy RISC
stały się bardziej złożone, architektury
CISC wdrażają wiele rozwiązań
związanych z RISC.
Np. procesory rodziny Pentium zawierają
wewnętrzne jądro w architekturze RISC z
układem tłumaczącym instrukcje CISC na
sekwencje mikrorozkazów wewnętrznych
Wyszukiwarka
Podobne podstrony:
ArchKomp CISC RISC Wyklad Gotowy PKos SKoz StudArchKomp CISC RISC Wyklad PKos StudTech tech chem11[31] Z5 06 usrodki ochrony 06[1]06 (184)0606 (35)Plakat WEGLINIEC Odjazdy wazny od 14 04 27 do 14 06 14Mechanika Techniczna I Opracowanie 06więcej podobnych podstron