ak-teoria Flashcards
Opisz cechy architektury CISC
Rozwinięcie -
Complex Instruction Set Computers
Cechy:
wolne, małe i drogie pamięci, nieduża liczba rejestrów, model obliczeń pamięć - pamięć, duża(kompletna) liczba rozkazów, słaba skalowalność, dużo trybów adresowania, niejednorodna forma rozkazów
Opisz cechy architektury RISC
Rozwinięcie
Reduced Instruction Set Computers
Cechy:
wykonanie jednego rozkazu w jednym cyklu maszynowym, stała długość i prosty format rozkazu, nieduża liczba trybów adresowania, niezbyt obszerna lista rozkazów, model obliczeń rejestr-rejestr, dostęp do pamięci operacyjnej tylko w rozkazach LOAD i STORE, duży zbiór rejestrów uniwersalnych, układ sterowania – logika szyta, intensywne wykorzystanie przetwarzania potokowego, kompilatory o dużych możliwościach optymalizacji potoku rozkazów
Opisz rejestry architektury RISC
łącznie w bloku 32 - wysokie (6), lokalne (10), niskie (6), globalne (10),
łącznie łącznie 138
Rejestry niskie jednej procedury stają się rejestrami wysokimi następnej
Porównaj architekturę CISC i RISC
Trybów adresowania: dużo | mało
Model obliczeń: pamięć - pamięć | rejestr- rejestr
Rozmiar rozkazu: zmienny | stały
Ilość rozkazów: dużo | mało
Rejestrów uniwersalnych: mało | dużo
Wykonywanie rozkazów w jednym cyklu maszynowym: nie | tak
Gdzie jest wykorzystywane potokowanie rozkazów
wszędzie do CISC
Jakie są efekty przetwarzania potokowego
zrównoleglenie realizacji ciągu rozkazów, skrócenie czasu realizacji ciągu rozkazów
Dodatkowe rejestry wykorzystywane przez jednostki potokowe
rejestry zatrzaskowe
Rodzaje hazardów - wymień wszystkie wszystkie
Hazard danych, hazard zasobów, hazard sterowania. W hazardzie danych dodatkowo: prawdziwa zależność danych (Read After Write - RAW), zależność wyjściowa (Write After Write - WAW), antyzależność (Write After Read - WAR)
Opisz hazard danych
Zależności między argumentami kolejnych rozkazów.
Metody usuwania hazardu danych
wykrywanie na etapie kompilacji i modyfikacja programu:
- wstawieni rozkazu NOP - wada to strata taktu zegarowego,
- zamiana kolejności rozkazów - brak strata taktu zegarowego.
sprzętowe rozwiązanie:
- wstrzymanie napełniania potoku
wyprzedzające pobieranie argumentów (też do superskalarnej) –||-- Przykład: ADD r1, r2, r3 sub r4, r5, r1
Dla architektury superskalarnej:
Przemianowanie rejestrów - dynamiczne przypisywanie rejestrów. Gdy chcemy zapisać dane do jakiegoś rejestru to tworzy się jego kopie, jeżeli znod chcemy się odwołać do tego rejestru co ostatnio ro rozkaz musi przejść proces przemianowania. Przemianowanie dotyczy tylko fragmentu programu w aktualnym oknie. Dokonuje się go z użyciem stacjami rezerwacji (RS) lub rejestrami roboczymi. Algorytm Tomasulo rozwiązuje problem przemianowania rejestrów.
I1: r1b
Opisz hazard zasobów
Konflikt w dostępie do rejestrów lub do pamięci
Metody usuwania hazardu zasobów:
Rozdzielenie pamięci podręcznej poziomu L1 na pamięć rozkazów (programu) IM i pamięć danych DM pozwala uniknąć tego hazardu.
Dla hazardu dotyczącego dostępu do rejestrów założono, że operacja zapisu ma miejsce w pierwszej połowie taktu, a operacja odczytu w drugiej połowie.
Opisz hazard sterowania
Problemy z potokową realizacją skoków i rozgałęzień - po wykonaniu skoku trzeba usunąć z potoku rozkazy pobrane po skopu, w wypadku nietrafionego przewidywania trzeba się cofnąć.
Metody usuwania hazardu sterowania oraz potokowym wykonywaniem rozgałęzień
Wstrzymanie napełniania potoku po zdekodowaniu rozkazu skoku (rozgałęzienia) - prawdopodobnie strata trzech taktów,
skoki opóźnione - muszą być uwzględnione przez programistę, zapewnia pewne oszczędności czasowe, efekt skoku opóźniony o jeden rozkaz, uproszczenie układu sterowania
Problemy dwóch powyższych rozwiązań - trzeba wyczyścić potok w zależności od wykonania bądź nie skoku
przewidywanie rozgałęzień -
statyczne (zawsze skocz, albo nigdy nie skacz, podejmowanie decyzji na podstawie kodu rozkazu rozgałęzienia aka specjalny bit-wskazówka) || (przewidywanie, że skok wstecz względem licznika rozkazów zawsze nastąpi, przewidywanie, że skok do przodu względem licznika rozkazów nigdy nie nastąpi)
dynamiczne (historia rozgałęzień i na jej podstawie)
Operacje wykonywane na tablicy historii rozgałęzień
Sprawdzenie, po pobraniu rozkazu rozgałęzienia jako kolejnego rozkazu,
czy adres tego rozgałęzienia jest w tablicy:
• Nie – wtedy:
− przewidywanie rozgałęzienia jest wykonywane według jednej ze strategii statycznych
− do tablicy jest wpisywany adres rozkazu rozgałęzienia oraz informacja o wykonaniu/niewykonaniu rozgałęzienia (bit historii)
• Tak – wtedy:
− przewidywanie rozgałęzienia jest wykonywane według bitu historii
(przewidywanie, że będzie tak jak poprzednio)
− do tablicy jest wpisywana informacja o wykonaniu/niewykonaniu
rozgałęzienia (uaktualnienie bitu historii)
Opisz prawdziwą zależność danych
(Read After Write - RAW)
Przykład
I1: r1
Opisz zależność wyjściową
(Write After Write - WAW)
Przykład
I1: r1
Opisz antyzależność
(Write After Read - WAR)
W przypadku równoległej realizacji rozkazów I2 o raz I3, wykonanie rozazu I3 (zapis wyniku) nie może być zakończone, dopuki nie nastąpi pobranie argumentu (odczyt) w rozkazie I2. Analogiczna sytuacja dla rozkazów I3 i I4
Przykład
I1: r1
Co to jest aliasing (hazard sterowania)
Aliasing – sytuacja, dla której dwom różnym rozkazom skoków warunkowych (rozgałęzień) przypisana zostaje ta sama pozycja w tablicy historii rozgałęzień (w wyniku zgodności wybranych m bitów adresów tych skoków) - i tak można przewidywać rozgałęzienia
Predyktora Smith’a
Predyktora Smith’a - 4-stanowy (2 bitowy licznik z nasyceniem):
– dobry dla rozgałęzień powtarzalnych - eliminuje pierwszy błąd
przewidywania rozgałęzień dla zagnieżdżonych pętli
– zły dla często się zmieniających
Co to BTB
BTB (ang. Branch Target Buffer) - miejsce w którym są zapisywane adresy docelowe wykonywanych skoków
Operacje zmiennoprzecinkowe - cechy
Wykonanie
wykonywane zazwyczaj w wielu taktach
Moc komputerów:
podawana w ilości operacji zmiennoprzecinkowych na sekundę, glops
Problem
często jest wymagane wstrzymanie napełniania potoku dla uniknięcia hazardu danych
Architektura superskalarna - cechy
zawiera kilka potokowych jednostek funkcjonalnych, złożone układy przewidywania rozgałęzienia, wykonywanie kilku rozkazów w jednym takcie, pobieranie kilku rozkazów w jednym takcie, niekolejne wykonywanie rozkazów, spekulatywne wykonywanie rozkazów
Etapy rozkazów w procesorach superskalarnych
Pobieranie i inicjowanie rozkazów, wykonywanie rozkazów, zatwierdzenie rozkazów
Etap pobierania i inicjowanie rozkazów (architektura superskalarna)
Pobieranie - rozkazy pobierane w paczkach i ładowane do kolejki, w wypadku rozkazów rozgałęzień przewiduje się ich wykonanie po ich wykryciu.
Inicjowanie i rozsyłanie - pobieranie i dekodowanie rozkazów z kolejki, sprawdza się czy występuje hazard danych - jeżeli tak to przemianowuje się rejestry, pobierania argumentów, przekierowanie do kolejki przed jednostkami funkcjonalnymi (stacji rezerwacji). Tutaj też się potencjalnie przemianował rejestry
wykonywanie rozkazów (architektura superskalarna)
warunek - skompletowanie argumentów rozkazu, kolejność dowolna (out-of-order, niekolejne wykonywanie rozkazów - może doprowadzić do antyzależności lub zależności wyjściowej), w wypadku rozgałęzień - spekulatywne wykonywanie rozkazów,
zatwierdzenie rozkazów (architektura superskalarna)
zapisywanie wyniku, ale już w kolejności zgodnej z programem, przy rozgałęzieniach trzeba uzyskać potwierdzenie ich poprawności, zatwierdzanie - zapis wyników do rejestrów lub pamięci po czym są usuwane, tylko rozkazy wykonane legalnie (prawidłowa spekulacja rozgałęzienia) są zapisywane, tutaj podejmuje się decyzję o obsłudze wyjątku
Funkcje buforów LOAD (architektura superskalarna)
przechowywanie składników adresu efektywnego, śledzenie niewykonanych rozkazów LOAD czekających na dostęp do pamięci, przechowywanie wyników rozkazów LOAD czekających na dostęp do CDB