Architektura komputerów 2
Prof. PWr dr hab. inż. Janusz Biernat
Wykład 03
SCHEMATY PRZETWARZANIA
" F (fetch) pobranie kodu rozkazu
" D (decode) dekodowanie w celu wytworzenia sygnałów sterujących
" R (read) pobranie operandu z pamięci (opcjonalne)
" E (execute) wytworzenie wyniku (zmienny czas)
" W (write) zwrotny zapis wyniku wykonania (do pamięci lub rejestru)
Oznaczenia na rysunkach;
" EU jednostka przetwarzająca (wykonawcza) schemat niezależny od architektury, zawsze
taki sam
" CU sterowanie 3 jednostki
" MU wytwarzanie adresu
" CR kody warunkowe (wynik wytworzony (wyznaczony)) -> flagi
" PC licznik rozkazów
Architektura procesora sekwencyjnego:
" F (pobranie kodu): adres (PC) -> pamięć -> rejestr rozkazów IR
" D (dekodowanie) : rejestr rozkazów IR sterowanie (CR,SR)
" R (odczyt danej): adres (RA) pamięć bufor (rejestr) MB
" E (wytworzenie wyniku): ALU (MB/R, R) bufor TMP/ rejestr R
" W (zapis wyniku): bufor MB pamięć (adres (RA))
Koncepcja przetwarzania potokowego:
" konieczna jest separacja poszczególnych etapów
" IA-32 potok od 12 do 36 etapów
" etapy można podzielić jeszcze na fazy
" długość etapu jest zdeterminowana przez długość wykonania najdłuższego z nich
" poszczególne etapy wykonują specjalizowane układy funkcjonalne
" jednokierunkowy przepływ danych między układami funkcjonalnymi
ć% możliwe jednoczesne wykonanie różnych etapów
" czas wykonania etapu:
ć% pobranie kodu rozkazu (fetch)
ª% rozmiar kodu rozkazu
ª% czas dostÄ™pu do pamiÄ™ci (odczyt sÅ‚owa lub jego części)
ć% dekodowanie (decode)
ª% architektura listy rozkazów (zÅ‚ożoność i różnorodność dziaÅ‚aÅ„)
ª% struktura kodu rozkazu (niejednorodność)
ć% pobranie operandu z pamięci (data read)
ª% tryb adresowania i czas dostÄ™pu do pamiÄ™ci (odczyt)
ć% wykonanie (execute)
ª% zÅ‚ożoność wykonywanych zadaÅ„
ć% zapis wyniku do rejestru (put away) [lub pamięci (data write)] [czas dostępu do pamięci
(zapis słowa lub jego częsci)]
Robienie powyżej 2 rozkazów równocześnie jest nieopłacalne, bo często zdarza się tak, że jeden
rozkaz korzysta z wyników poprzedniego. Superskalarne opłaca się do 2, superpotokowe
uzyskiwanie wyników jest szybsze, ale zwiększa się narzut związany z wyrównywaniem do
najdłuższego.
Skoro w RISCu jest dużo rejestrów, można pominąć pobieranie z pamięci (dekoder identyfikuje
rejestry z danymi i nie trzeba przesyłać do jednostki wykonawczej)
Sposoby osiągnięcia większych prędkości przetwarzania:
Pobieranie bloku na raz może stworzyć problemy, bo jeżeli pierwsza instrukcja byłaby instrukcją
rozgałęzienia to druga mogłaby być niepoprawna. Ale w innych przypadkach przetwarzanie byłoby
szybsze.
Można też dekodować po bloku, zamiast pojedynczego rozkazu żeby przyspieszyć.
Można równocześnie wykonywać operacje stało- i zmiennoprzecinkowe, bo od tego są dwie osobne
jednostki.
Gdyby zwiększyć ilość jednostek to można by było dostarczyć równocześnie dane do kilku i
przyspieszyć obliczenia.
Można powielić cały układ (zamiast jednego procesora mamy ich wiele). No chyba, że wszystkie
rozkazy trzeba wykonywać po kolei, wtedy żadne metod przyspieszania nic nie dadzą.
W przypadku możliwości powielenia mamy przyspieszenie (struktura macierzowa) (np.
przetwarzanie obrazów i sygnałów).
Wpływ na szybkość ma też sama architektura ALU. W CISC stosowa, w RISC rejestrowa.
Zawsze jest współpraca z CR (w CISC nie można wyłączyć, w RISC czasami się da).
Architektura procesora potokowego (rejestrowego):
Architektura jednostki wykonawczej procesora:
load-store:
Można stworzyć bardzo regularną strukturę rozkazów. (RISC)
szczegóły wykonania identyfikacja wszystkich możliwości jednego rozkazu
R0....R31 (31 rejestrów) 5 bitów
działanie dekodera:
rozgałęzienia:
adres docelowy nie może być w pełnej przestrzeni adresowej, bo się nie zmieści, tzn. że zasięg
rozgałęzień jest mniejszy od maksymalnego wynikającego z rozmiaru rejestru, można kombinować,
np. zrobić rozkaz w dwóch słowach (ale nie ma po co), mniejszy zakres wystarcza.
Nie można zapisać dowolnej stałej. (ograniczenie do stosunkowo niewielkich rozmiarów)
W IA-32 nie ma automatycznego rozszerzania argumentów (co trzeba robić żeby działać na
argumentach różnej długości)
Adresy traktujemy jako adres słowa, bo tak jest najwygodniej.
W CISC w kodzie rozkazu nie ma absolutnie żadnego porządku. Dekoder jest osobnym procesorem
żeby sobie poradzić. Wszystkie działania są sekwencyjne.
Identyfikatorem komórki jest zawsze adres!!! (np. przez wskaznik) nie da się inaczej.
Można adresować przez wskaznik stosu, albo normalny adres, ale trzeba uważać, żeby nie
przekroczyć rozmiaru stosu:
Wyszukiwarka
Podobne podstrony:
W08 AK2 BiernatW06 AK2 BiernatW05 AK2 BiernatW02 AK2 BiernatW01 AK2 BiernatW09 AK2 BiernatW07 AK2 BiernatStrona biernaW02 AK1 BiernatW03 Ontologia cz02stl w03W03 Fizyka HaranW03 Diody polprzewodnikoweTPL 3 W03 v1 0PiS15 W03 Zmienne losowe II 12Gazownictwo w03więcej podobnych podstron