W03 AK2 Biernat


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 Biernat
W06 AK2 Biernat
W05 AK2 Biernat
W02 AK2 Biernat
W01 AK2 Biernat
W09 AK2 Biernat
W07 AK2 Biernat
Strona bierna
W02 AK1 Biernat
W03 Ontologia cz02
stl w03
W03 Fizyka Haran
W03 Diody polprzewodnikowe
TPL 3 W03 v1 0
PiS15 W03 Zmienne losowe II 12
Gazownictwo w03

więcej podobnych podstron