ASK egzamin


Zestaw A
1. Omówić podstawową strukturę i działanie mikroprogramowanej jednostki sterującej.
Zbiór mikrorozkazów jest przechowywany w pamięci sterującej. Rejestr adresów sterowanie zawiera adres następnego mikrorozkazu, który
ma być odczytany. Po odczytaniu mikrorozkazu z pamięci sterującej jest on przenoszony do buforowego rejestru sterowania. Lewa część tego
rejestru jest połączona z liniami sterowania wychodzącymi z jednostki sterującej. Odczytanie mikrorozkazu z pamięci sterującej jest więc tym
samym, co wykonanie tego mikrorozkazu. Trzecim elementem jest jednostka szeregująca, która ładuje rejestr adresu sterowania i wydaje
rozkaz odczytu. Jednostka sterująca działa następująco:
1. W celu wykonania rozkazu szeregująca jednostka logiczna wydaje rozkaz READ (odczyt) odnoszący się do pamięci sterującej.
2. Słowo, którego adres jest określony w rejestrze adresu sterowania jest wczytywane do buforowego rejestru sterowania.
3. Zawartość buforowego rejestru sterowania generuje sygnały sterujące oraz informacje o następnym adresie skierowaną do logicznej
jednostki szeregowania.
4. Logiczna jednostka szeregowania ładuje nowy adres do rejestru sterowania na podstawie informacji o następnym adresie uzyskanej z
buforowego rejestru sterowania i na podstawie znaczników stanu ALU.
2. Budowa mikrorozkazu w mikroprogramowanej jednostce sterującej. Metody realizacji rozgałęzień w mikroprogramie.
Mikrorozkaz poziomy: występuje w nim po jednym bicie na każdą wewnętrzną linię sterowania procesora i po jednym bicie na każdą linię
sterowania magistrali systemowej. Występuje też pole warunku wskazujące warunek rozgałęzienia oraz pole adresu następnego mikrorozkazu,
który ma być wykonywany, jeśli nastąpi rozgałęzienie.
Schemat: 1. Adres mikrorozkazu, 2. Warunek stosu(bezwarunkowy, zero, przepełnienie, bit pośredniości), 3. Sygnały sterujące magistrali
systemowej, 4. Wewnętrzne sygnały sterujące CPU
Mikrorozkaz pionowy schemat: 1. Adres mikrorozkazu, 2. Warunek skoku 3. Kody funkcji
Interpretacja: 1. W celu wykonania mikrorozkazu należy włączyć wszystkie linie sterowania wskazane przez bity 1 i pozostawić wyłączone
wszystkie linie sterowania wskazane przez 0. Wynikające stąd sygnały sterujące spowodują wykonanie jednej lub wielu mikrooperacji. 2. Jeśli
warunek wskazany przez bity warunku nie jest spełniony, to należy wykonać następny mikrorozkaz w sekwencji. 3. Jeśli warunek wskazany
przez bity warunku jest spełniony, to następny mikrorozkaz przewidziany do wykonania jest wskazany w polu adresowym.
3. Zasady potokowego wykonywania rozkazów. Jakie problemy utrudniają wykonywanie rozkazów w potoku.
Przetwarzanie potokowe jest jednym ze sposobów sekwencyjnego (szeregowego) przetwarzania danych. Sposób działania: cykl przetwarzania
dzieli się na odrębne bloki przetwarzania, z których każdy oprócz ostatniego jest połączony z następnym. Dane po przejściu przez jeden blok
trafiają do następnego, aż osiągną ostatni blok.
Potokowość  technika budowy procesorów polegająca na podziale logiki procesora odpowiedzialnej za proces wykonywania programu
(instrukcji procesora) na specjalizowane grupy w taki sposób, aby każda z grup wykonywała część pracy związanej z wykonaniem rozkazu.
Grupy te są połączone sekwencyjnie  potok i wykonują pracę równocześnie, pobierając dane od poprzedniego elementu w sekwencji. W
każdej z tych grup rozkaz jest na innym stadium wykonania. Można to porównać do taśmy produkcyjnej.
Zasady potokowego wykonywania rozkazów:
" Pobranie instrukcji z pamięci
" Zdekodowanie instrukcji
" Wykonanie instrukcji
" Dostęp do pamięci
" Zapisanie wyników działania instrukcji
Podstawowym mankamentem techniki potoku są rozkazy skoku, powodujące w najgorszym wypadku potrzebę przeczyszczenia całego potoku i
wycofania rozkazów, które następowały zaraz po instrukcji skoku i rozpoczęcie zapełniania potoku od początku od adresu, do którego
następował skok. Taki rozkaz skoku może powodować ogromne opóznienia w wykonywaniu programu  tym większe, im większa jest długość
potoku. Dodatkowo szacuje się, że dla modelu programowego x86 taki skok występuje co kilkanaście rozkazów. Z tego powodu niektóre
architektury programowe (np. SPARC) zakładały zawsze wykonanie jednego lub większej ilości rozkazów następujących po rozkazie skoku,
tzw. skok opózniony. Stosuje się także skomplikowane metody predykcji skoku lub metody programowania bez użycia skoków.
4. Omówić metody przewidywania rozgałęzień w przetwarzaniu potokowym rozkazów.
1. Przewidywanie nigdy nienastępującego rozgałęzienia, rozwiązanie statyczne, przewiduje się że nigdy nie nastąpi rozgałęzienie i są pobierane
kolejne rozkazy ( sekwencja)
2. Przewidywanie zawsze następującego rozgałęzienia - statyczne rozwiązanie, przewiduje się że zawsze nastąpi rozgałęzienie i pobiera się
rozkaz w celu rozgałęzienia
3. Przewidywanie za pomocą kodu operacji - rozwiązanie statyczne, podejmuje się decyzje czy pobrać rozkaz w celu rozgałęzienia czy kolejny
rozkaz z sekwencji na podstawie kodu operacji, to przy jakim kodzie ma być nacisk na rozgałęzienie jest z góry ustalone ( przez projektanta(?) )
4. Przełącznik nastąpiło/nie nastąpiło - dynamiczne rozwiązanie, przechowuje się w pamięci tymczasowej bit związany z danym rozkazem, na
podstawie historii ( wyniku poprzedniego uruchomienia tego rozkazu ) podejmuje siÄ™ odpowiednia decyzje(, z czasem udoskonalono to
rozwiÄ…zanie stosujÄ…c dwa bity)
5. Tablica historii rozgałęzień - dynamiczne rozwiązanie, tablica złożona z 3 kolumn ( adres rozkazu, pewna liczba bitów historii, informacja o
rozkazie docelowym lub adres rozkazu docelowego, ewentualnie sam rozkaz docelowy) umieszczona w malej pamięci podręcznej.
5. Omówić cechy procesorów RISC w porównaniu z procesorami CISC.
Podstawowe cechy architektury RISC to:
Zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi kilkadziesiąt, podczas gdy w procesorach CISC sięga setek.
Upraszcza to znacznie dekoder rozkazów.
Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, bardziej zunifikowane, co dodatkowo upraszcza wspomniany
wcześniej dekoder rozkazów. Ponadto wprowadzono tryb adresowania, który ogranicza ilość przesłań
Zwiększenie liczby rejestrów (np. 32, 192, 256, podczas gdy np. w architekturze x86 jest zaledwie 8 rejestrów), co również ma wpływ na
zmniejszenie liczby odwołań do pamięci.
Dzięki rozbiciu przetwarzania rozkazu na kilka prostych etapów, które mogą być wykonywane przez stosunkowo proste i w znacznym stopniu
autonomiczne jednostki, bardziej nadające się do zrealizowania w nowocześniejszej technologii niż złożona i bardziej związana struktura
procesora CISC, łatwiej można skonstruować CPU z większą częstotliwością zegara taktującego. Dlatego procesory RISC są dużo wydajniejsze od
procesorów CISC
6. Omówić argumenty przemawiające za stosowaniem procesorów CISC.
- Å‚atwiejszy proces kompilacji
- długość kodu jest niewielka, wiec nie potrzeba dużej ilości pamięci RAM do przechowywania instrukcji
- niewielka liczba instrukcji potrzebna do wykonania określonego zadania, co pozwala na wydajniejsze zarządzanie pamięcią
- kompatybilność w gore , nowy procesor będzie zawierał zestaw instrukcji poprzednika
7. Omówić argumenty przemawiające za stosowaniem procesorów RISC.
- Przez zastosowanie architektury potokowej uzyskujemy w procesorach RISC możliwość wykonywania rozkazów w jednym cyklu zegara
- Zastosowanie architektury load/store (ładuj/zapisz), czyli rozdzielenie rozkazów operujących na pamięci od reszty rozkazów
- Zwiększenie liczby rejestrów
- Szybsze wykonywanie instrukcji
- Aatwiejsza realizacja sterowania
- Możliwość osiągnięcia wyższego taktowania , co przekłada sie na wyższą wydajność
8. Na czym polega optymalizacja wykorzystania rejestrów w procesorach RISC.
Optymalizacja wykorzystania rejestrów wykonywana na etapie kompilacji:
- Gdy rejestrów jest niewiele (16-32)
- Przyporządkowanie wybranych zmiennych do symbolicznych rejestrów
- Odwzorowanie symbolicznych rejestrów w fizyczne rejestry
- Symboliczne rejestry, których czas życia nie nakłada się mogą być odwzorowane w jeden rejestr fizyczny
- Gdy brakuje fizycznych rejestrów, niektóre symboliczne rejestry musza być odwzorowane w pamięci
W skrócie: Optymalizowane za pomocą kolorowania grafu(Jeden rejestr przypisany do wielu zmiennych które nie są wykorzystywane w tym
samym czasie)
9. Zasada przetwarzania superskalarnego. Problemy utrudniające realizację superskalarnego wykonywania programów.
Technika przetwarzania superskalarnego polega na zastosowaniu kilku działających równolegle potoków przetwarzających dane skalarne, co
pozwala na wykonywanie więcej niż jednego rozkazu w jednym cyklu zegara.
Dzięki równoległemu wykonywaniu rozkazów, możliwe jest wykonywanie instrukcji całkowitoliczbowych w obu potokach w jednym cyklu
rozkazowym.
Podstawową trudnością w realizacji przetwarzania superskalarnego jest wzajemna współzależność rozkazów wykonywanych w
poszczególnych potokach, wynikająca m.in. z rozgałęzień oraz uzależnień i konfliktów w dostępie do zasobów.
10. Omówić zasady szeregowanie rozkazów w przetwarzaniu superskalarnym.
Ogólnie rzecz biorąc superskalarne strategie wydawania rozkazów możemy podzielić na następujące kategorie:
· kolejne wydawanie poÅ‚Ä…czone z kolejnym koÅ„czeniem;
· kolejne wydawanie poÅ‚Ä…czone z koÅ„czeniem w zmienionej kolejnoÅ›ci;
· wydawanie w zmienionej kolejnoÅ›ci poÅ‚Ä…czone z koÅ„czeniem w zmienionej kolejnoÅ›ci.
Najprostszą strategią wydawania rozkazów jest wydawanie ich w dokładnej kolejności zgodnej z wykonywaniem sekwencyjnym (kolejne
wydawanie) i zapisywanie wyników w tej samej kolejności (kolejne kończenie). Nawet skalarne potoki nie dopuszczają tak uproszczonej
strategii. Jest jednak użyteczne rozważenie tej strategii jako podstawy do porównywania bardziej wyrafinowanych rozwiązań
Przy zmienionej kolejności kończenia w określonym czasie na etapie wykonywania może się znajdować dowolna liczba rozkazów, aż do
osiągnięcia maksymalnego stopnia paralelizmu maszynowego we wszystkich jednostkach funkcjonalnych. Wydawanie rozkazów jest
zatrzymywane w wyniku konfliktu dotyczącego zasobów, zależności danych lub zależności proceduralnej.
W przypadku kolejnego wydawania rozkazów procesor jedynie dekoduje rozkazy aż do wystąpienia zależności lub konfliktu. Żadne nowe
rozkazy nie są dekodowane, dopóki konflikt nie jest rozstrzygnięty. W rezultacie procesor nie może wyprzedzić punktu konfliktu w celu
znalezienia następnych rozkazów, które mogą być niezależne od rozkazów znajdujących się już w potoku i które mogą być z pożytkiem
wprowadzone do potoku. Aby umożliwić wydawanie rozkazów w zmienionej kolejności, konieczne
jest rozłączenie etapów dekodowania i wykonywania w potoku. Czyni się to za pomocą bufora nazywanego oknem rozkazu. Przy takiej
organizacji, rozkaz po zdekodowaniu przez procesor jest umieszczany w oknie rozkazu. Dopóki bufor ten nie jest zapełniony, procesor może
kontynuować pobieranie i dekodowanie nowych rozkazów. Gdy jednostka funkcjonalna na etapie wykonywania staje się osiągalna, rozkaz może
być wydany z okna rozkazu do etapu wykonywania. Może być wydany dowolny rozkaz pod warunkiem, że (a) potrzebuje on określonej
jednostki funkcjonalnej, która jest osiągalna, oraz (b) żaden konflikt lub zależność nie blokuje tego rozkazu.
11. Omówić klasyfikację Flynna architektur komputerowych.
Taksonomia Flynna jest klasyfikacją architektur komputerowych, zaproponowaną w latach sześćdziesiątych XX wieku przez Michaela Flynna,
opierająca się na liczbie przetwarzanych strumieni danych i strumieni rozkazów. W taksonomii tej wyróżnia się cztery grupy:
SISD (Single Instruction, Single Data) - przetwarzany jest jeden strumień danych przez jeden wykonywany program - komputery skalarne
(sekwencyjne).
SIMD (Single Instruction, Multiple Data) - przetwarzanych jest wiele strumieni danych przez jeden wykonywany program - tzw. komputery
wektorowe.
MISD (Multiple Instruction, Single Data) - wiele równolegle wykonywanych programów przetwarza jednocześnie jeden wspólny strumień
danych. W zasadzie jedynym zastosowaniem są systemy wykorzystujące redundancję (wielokrotne wykonywanie tych samych obliczeń) do
minimalizacji błędów.
MIMD (Multiple Instruction, Multiple Data) - równolegle wykonywanych jest wiele programów, z których każdy przetwarza własne strumienie
danych - przykładem mogą być komputery wieloprocesorowe, a także klastry i gridy.
12. Na czym polega przetwarzanie wektorowe? Podać przykładowe zastosowania. Jak jest to realizowane w procesorach.
Superkomputery służą do wykonywania przetwarzań wektorowych. Program, który powtarzalnie wykonuje zmiennopozycyjne operacje na
arytmetyczne na dużych tablicach liczb. Symulacja pola ciągłego. Sytuacja fizyczna może być opisana przez powierzchnię lub obszar w trzech
wymiarach. Powierzchnia ta jest aproksymowana przez siatkę punktów. Zbiór równań różniczkowych określa fizyczne zachowanie powierzchni
w każdym punkcie. Równania są reprezentowane jako tablice wartości i współczynników, a rozwiązanie polega na powtarzaniu operacji
arytmetycznych na tablicach danych.
Zastosowanie: rzeczywiste problemy w procesach aerodynamicznych, sejsmologicznych, meteorologicznych, fizyce atomowej, jÄ…drowej,
plazmowej.
Założenie przetwarzania: jest możliwe operowanie na jednowymiarowych wektorach danych. Notacja (J=1,N) wskazuje, że operacje na
wszystkich elementach J w danym przedziale powinny być przeprowadzone jako jedna operacja.
Przykład:
DO 100 I = 1,N
C(I,J) = 0,0 (J=1,N)
DO 100K = 1,N
C(I,J)=C(I,J)+A(I,K)+B(K,J)(J=1,N)
100 CONTINUE
Realizacja w procesorach: 1. ALU z przetwarzaniem potokowym, 2. Równolegle ALU 3. Równoległe procesory
13. Cechy i możliwe organizacje architektury SMP
W klasycznych wieloprocesorowych serwerach wykorzystuje się tzw. architekturę SMP (Symmetric MultiProcessing), która pozwala na
symetryczne przetwarzanie danych jednocześnie na kilku procesorach. Procesory te współdzielą ze sobą zasoby pamięci (pamięć operacyjną
RAM i pamięć masową  np. dyski twarde) oraz interfejsy I/O. Co ważne, procesory w architekturze SMP komunikują się ze sobą za pomocą
wspólnej magistrali systemowej, a przydział procesorów dla poszczególnych zadań (wątków, ang. thread) realizowany jest przez system
operacyjny. Oznacza to, że system musi być przystosowany do dzielenia zadań na fragmenty i rozdzieleniem ich na wiele procesorów. Zaletą
architektury SMP jest jej prosta sprzętowa implementacja i prosty model programowy.
Największymi ograniczeniami wielordzeniowej architektury SMP jest skończona skalowalność, wynikająca z "rywalizacji" poszczególnych
rdzeni o zasoby pamięci operacyjnej i zasoby I/O, a także fizyczną przepustowość magistrali systemowej, za pomocą której komunikują się
rdzenie ze sobą i wykorzystywaną wspólnie pamięć cache.
SMP (ang. Symmetric Multiprocessing, przetwarzanie symetryczne) - architektura komputerowa, która pozwala na znaczne zwiększenie mocy
obliczeniowej systemu komputerowego poprzez wykorzystanie 2 lub więcej procesorów do jednoczesnego wykonywania zadań.
Cechy:
Procesory o porównywalnych możliwościach
Procesory współdzielą pamięć i urządzenia we/wy
Procesory połączone wspólna szyna lub innymi wewnętrznym połączeniami
Wszystkie procesory maja zbliżony czas dostępu do pamięci
Wszystkie procesory mogą wykonywać takie same funkcje (tzn.sa symetryczne)
Komputer jest sterowany przez zintegrowany system operacyjny
Możliwe organizacje:
Magistrala z podziałem czasu
Pamięć wieloportowa
Z centralna jednostka sterujÄ…cÄ…
14. Na czym polega problem spójności pamięci podręcznej. W jakich architekturach występuje. Jak się ten problem rozwiązuje.
Na czym polega:
We współczesnych systemach wieloprocesorowych z każdym procesorem jest zwykle związana jedno lub dwupoziomowa pamięć podręczna.
Organizacja taka ma zasadnicze znaczenie dla uzyskania rozsądnej wydajności. Powoduje ona jednak powstanie problemu znanego jako
problem spójności pamięci podręcznych. Istota tego problemu jest następująca: wiele kopii tych samych danych może jednocześnie występować
w rożnych pamięciach podręcznych i jeśli procesory mogą swobodnie aktualizować własne kopie, to w rezultacie może powstać niespójny
obraz pamięci.
W jakich architekturach występuje:
-Występuje w architekturach SMP
Jak siÄ™ ten problem rozwiÄ…zuje
RozwiÄ…zania programowe:
-Obsługa przez kompilator i system operacyjny:
(polegają na analizie programów wykonywanych przez układy wieloprocesorowe już w fazie kompilacji i określaniu, które przetwarzane przez
nie dane są narażone na niespójność. System operacyjny i sam program zapobiega kierowaniu takich danych do pamięci podręcznych - każdy
procesor musi je odczytywać zawsze z pamięci głównej (pomijając cache) i tam zapisywać ich zmiany)
Rozwiązania sprzętowe:
-Protokoły spójności cache:
-Protokoły katalogowe - to jedno z rozwiązań sprzętowych. Polega na wprowadzeniu tak zwanego katalogu pamięci i specjalnego sterownika,
który zapisuje w nim aktualne informacje o kopiach danych przechowywanych przez różne procesory
-Protokoły podglądania - stanowią kolejne rozwiązanie sprzętowe, w którym odpowiedzialność za utrzymanie spójności danych rozkłada się na
wszystkie sterowniki pamięci podręcznych.
15. Klastry: cechy, wady i zalety oraz możliwe organizacje.
Klaster (ang. cluster)  grupa połączonych jednostek komputerowych, które współpracują ze sobą w celu udostępnienia zintegrowanego
środowiska pracy. Komputery połączone taką siecią stanowią więc zazwyczaj jeden spójny system udostępniający usługi użytkownikom.
Określenie kompletny komputer oznacza system zdolny do pracy samodzielnej - po za klastrem; w literaturze każdy komputer w kastrze jest
zwykle określany jako węzeł.
Zalety
- skalowalność bezwzględna ( jest możliwe tworzenie wielkich klastrów, które daleko przekraczają możliwości nawet największych maszyn
samodzielnych. Klaster może zawierać dziesiątki komputerów, z których każdy jest wieloprocesorem.
- Skalowalność przyrostowa ( klastry są konfigurowane tak, ze jest możliwe dodawanie do nich nowych systemów w postaci niewielkich
przyrostów. Użytkownik może zatem rozpocząć od systemu o umiarkowanych rozmiarach i poszerzać go stosownie do potrzeb, bez
konieczności dokonywania poważnej modernizacji polegającej na zastępowaniu niewielkiego systemu większym)
- wysoka dostępność (odporność na uszkodzenia) (ponieważ każdy węzeł klastra jest samodzielnym komputerem, uszkodzenie jednego węzła
nie oznacza utraty możliwości obsługi. W wielu produktach odpowiednie zmiany są dokonywane automatycznie dzięki oprogramowaniu)
- korzystny stosunek koszt/wydajność (dzięki stosowaniu typowych składników dostępnych w handlu, jest możliwe złożenie klastra o
zdolności obliczeniowej co najmniej takiej samej, jak pojedynczego, dużego komputera, przy znacznie mniejszym koszcie)
Wady
-Większa podatność na awarie
-Większa złożoność i pracochłonność projektu
Organizacje klastrow
- Rezerwa bierna (dodatkowy serwer przejmuje zadania w przypadku uszkodzenia serwera podstawowego)
- Dodatkowy serwer czynny (dodatkowy serwer również służy do przetwarzania)
- Odrębne serwery (odbrebne serwery dysponują własnymi dyskami. Dane są ciągle kopiowane z serwera podstawowego do dodatkowego)
- Serwery połączone z dyskami (serwery są połączone z tymi samymi dyskami, jednak każdy z nich ma własne dyski. Gdy jeden serwer ulega
uszkodzeniu, dyski sÄ… przejmowane przez drugi serwer)
- Serwery współużytkujące dyski (wiele serwerów jednocześnie ma dostęp do dysków)
16. Zadania i cechy oprogramowania zarzÄ…dzajÄ…cego klastrem.
W każdym komputerze zainstalowana jest warstwa oprogramowania pośredniego, umożliwiająca działanie w klastrze. Oprogramowanie to
zapewnia użytkownikowi obraz jednolitego systemu. Jest ono również odpowiedzialne za zapewnianie wysokiej dostępności przez
równoważenie obciążenia i reagowanie na uszkodzenia poszczególnych składników.
Pożądane funkcje i usługi
- Pojedynczy punkt wejściowy (użytkownik loguje sie do klastra, a nie do pojedynczego komputera)
- Pojedyncza hierarchia plików (użytkownik postrzega jedna hierarchie katalogów, należącą do tego samego katalogu głównego)
- Pojedynczy punkt sterowania (istnieje domyślna stacja robocza służąca do zarządzania klastrem i sterowania nim)
- Pojedyncza sieć wirtualna (dowolny węzeł ma dostęp do dowolnego punktu klastra, jeśli nawet rzeczywista konfiguracja klastra może sie
składacz wielu połączonych ze sobą sieci. Działanie wirtualnej sieci jest jednolite)
- Pojedyncza przestrzeń pamięci (rozproszona pamięć współużytkowana umożliwia wspólne używanie zmiennych przez rożne programy)
- Pojedynczy system zarządzania zadaniami (dzięki klastrowemu programowi szeregującemu użytkownik może przedkładać zadanie bez
określania komputera, który ma je wykonać)
- Pojedynczy interfejs użytkownika (wspólny interfejs graficzny obsługuje wszystkich użytkowników, niezależnie od stacji roboczej, za
pośrednictwem której posługują sie oni klastrem)
- Pojedyncza przestrzeń we/wy (dowolny węzeł może dysponować zdalnym dostępem do dowolnego urządzenia peryferyjnego lub dysku bez
znajomości jego lokalizacji fizycznej)
- Pojedyncza przestrzeń procesów (używany jest jednolity system identyfikowania procesów. Proces realizowany w jednym węzle może sie
komunikowac z dowolnym procesem w wezle odleglym)
- Wprowadzanie punktów kontrolnych (polega na okresowym zapisywaniu stanu procesu i pośrednich wyników obliczeń w celu umożliwienia
przywracania stanu po uszkodzeniu)
- Migracja procesów (funkcja ta umożliwia równoważenie obciążenia)
17. Cechy architektury CC-NUMA.
Charakteryzuje się niejednorodnym dostępem do pamięci, ze spójną pamięcią podręczną, udostępnia użytkownikowi spójną logicznie
przestrzeń adresową, pomimo tego, że pamięć jest fizycznie podzielona.
W CC-NUMA pamięci podręczne muszą być spójne. Spójność ta jest zrealizowana za pomocą dodatkowego sprzętu oraz protokołu.
Wykorzystywany do tego jest katalog czyli dodatkowa pamięć, która służy do zapamiętywania faktu pobrania danych z pamięci i przesłania ich
do węzła lub w bardziej skomplikowanych przypadkach miejsca pobytu wszystkich kopii danych.
18. Omówić cechy architektury wspierające system operacyjny.
Cechy sprzętowe:
-Ochrona pamięci
(Wykorzystanie programu użytkownika nie może powodować zmian w obszarze pamięci zajętym przez program zarządzający. Jeśli występują
takie usiłowanie , to procesor wykrywa błąd i przekazuje sterowanie programowi zarządzającemu. Program ten porzuca zadanie , drukuje
komunikat o bledzie i ładuje następne zadanie
-Czasomierz
(Czasomierz jest używany do zapobiegania monopolizacji systemu przez pojedyncze zadanie. Jest on ustawiany na początku każdego zadania.
Po dojściu do określonego wskazania, następuje przerwanie i sterowanie wraca do programu zarządzającego.
-Rozkazy uprzywilejowane
(Pewne rozkazy są oznaczone jako uprzywilejowane i mogą być wykonywane tylko przez program zarządzający. Nałęża do nich rozkazy
wyjścia-wejścia. Zapobiega to na przykład temu, żeby program użytkownika przypadkowo przyjął rozkazy sterowania pochodzące z
następnego zadania. Jeśli z programu użytkownika wynika potrzeba operacji wyjścia-wejścia, to musi on zwrócić sie do programu
zarządzającego, aby ten wykonał w jego imieniu te operacje. Jeśli procesor napotka rozkaz uprzywilejowany podczas wykonywania programu
użytkownika, to traktuje to jako błąd i przekazuje sterowanie programowi zarządzającemu.
-Przerwania
(Wczesne modele komputerów nie dysponowały ta zdolnością. Właściwość ta daje systemowi operacyjnemu większa elastyczność, jeśli chodzi
o rezygnowanie ze sterowania i przejmowanie go od programów użytkowych)
Zestaw B
1. Mikroprogramowanie poziome a mikroprogramowanie pionowe. Metody minimalizacji długości słowa mikrorozkazu.
2. Metody wyznaczania adresu następnej mikroinstrukcji w mikroprogramowanej jednostce sterującej.
Trzy kategorie metod: 1. Dwa pola adresowe. 2. Jedno pole adresowe. 3. Format zmienny.
Najprostszym rozwiązaniem jest uwzględnienie dwóch pól adresowych w każdym mikrorozkazie. Np. rys. 17.6 Występuje multiplekser służący
jako miejsce docelowe obu pól adresowych i zawartości rejestru rozkazu. Na podstawie wejścia wyboru adres multiplekser przekazuje do
rejestru sterowania CAR albo kod operacji, albo jeden z dwóch adresów. Zawartość rejestru CAR jest następnie dekodowana w celu utworzenia
adresu następnego mikrorozkazu.
Jedno pole adresowe, opcje: pole adresowe, kod rejestru rozkazu, następny adres w sekwencji. Sygnały wyboru adresu określają, która z tych
pozycji zostanie wybrana. Rozwiązanie to powoduje zredukowanie liczby pól adresowych do jednego.
Innym rozwiązaniem jest przyjęcie dwóch całkowicie różnych formatów mikrorozkazu. Za pomocą jednego bitu określa się, który format
będzie używany. W jednym formacie pozostałe bity są używane do aktywowania sygnałów sterujących. W drugim formacie niektóre bity sterują
modułem logicznym rozgałęzienia, a pozostałe dostarczają adres.
3. Omówić i porównać metody optymalizacji rozgałęzień w potokowym wykonywania rozkazów.
1. Zwielokrotnienie strumienia
W przypadku prostego potoku występują straty spowodowane przez rozkaz rozgałęzienia, ponieważ konieczne jest wybranie jednego z dwóch
możliwych rozkazów i wybór ten może się okazać niewłaściwy. Rozwiązaniem jest powielenie początkowych części potoku i umożliwienie
równoczesnego pobrania obu rozkazów za pomocą dwóch strumieni.
2. Pobieranie docelowego rozkazu z wyprzedzeniem
Gdy rozpoznawszy jest rozkaz rozgałęzienia warunkowego, następuje wyprzedzające pobranie rozkazu docelowego razem z rozkazem
następującym po rozgałęzieniu. Rozkaz docelowy jest następnie zachowywany aż do czasu wykonania rozkazu rozgałęzienia. W momencie
rozgałęzienia rozkaz docelowy jest już pobrany.
3. Bufor pętli
Jest mała, bardzo szybką pamięcią związaną z etapem pobierania rozkazów potoku. Zawiera on kolejno n ostatnio pobieranych rozkazów. Jeśli
ma nastąpić rozgałęzienie, sprawdza się najpierw, czy cel rozgałęzienia znajduje się wewnątrz bufora. Jeśli tak, to następny rozkaz jest
pobierany z bufora. Stosowanie bufora pętli ma trzy zalety:
a) Dzięki pobieraniu z wyprzedzaniem buforu pętli zawiera pewne rozkazy następujące po kolei po adresie pobrania bieżącego rozkazu.
Wobec tego kolejno pobierane rozkazy będą dostępne bez straty czasu wymaganego na dostęp do pamięci.
b) Jeśli następuje rozgałęzienie do rozkazu znajdującego się o kilka pozycji dalej od adresu rozgałęzienia, to rozkaz docelowy będzie się
już znajdował w buforze .
c) Taki sposób postępowania jest szczególnie przydatny w operowaniu pętlami. Jeżeli bufor jest dostatecznie pojemy, aby zmieścić
wszystkie rozkazy składające się na pętlę, to rozkazy te musza być pobrane tylko raz, przy pierwszej iteracji. W przypadku następnej
iteracji wszystkie potrzebne rozkazy będą się już tam znajdowały w buforze.
4. Przewidywanie rozgałęzień
Metody: przewidywanie nigdy nie następującego rozgałęzienia, przewidywanie zawsze następującego rozgałęzienia, przewidywanie za pomocą
kodu operacji, przełącznik nastąpiło/nie nastąpiło, tablica historii rozgałęzień.
Pierwsze trzy  stateczne, nie zależą one od historii poprzedzającej rozkaz rozgałęzienia warunkowego. Ostatnie dwa są dynamiczne: zależą od
historii.
5. Opóznione rozgałęzienie
Możliwe jest poprawienie wydajności potoku za pomocą automatycznej zmiany porządku rozkazu wewnątrz rozkazu wewnątrz programu, tak
żeby rozkazy rozgałęzienia występowały pózniej.
4. Omówić zasadę działania okien rejestrów.
Koncepcja ta jest zilustrowana na rysunku 13.1. W dowolnej chwili widzialne i adresowalne jest tylko jedno okno rejestrów, tak jak gdyby
istniał tylko jeden zestaw rejestrów (o adresach np. od  do N-1). Okno jest podzielone na trzy obszary o stałych rozmiarach. W rejestrach
parametrów przechowuje się parametry przekazane przez procedurę, która spowodowała wywołanie bieżącej procedury, oraz wyniki, które
mają być przekazane z powrotem. Rejestry lokalne są używane do przechowywania zmiennych lokalnych przypisanych przez kompilator.
Rejestry tymczasowe służą do wymiany parametrów i wyników z następnym niższym poziomem (z procedurą wywołaną przez procedurę
bieżącą). Rejestry tymczasowe jednego poziomu są fizycznie tymi samymi rejestrami co rejestry parametrów następnego niższego poziomu. To
nakładanie się umożliwia przekazywanie parametrów bez rzeczywistego przenoszenia danych.
Wydawałoby się, że w celu sprostania dowolnym możliwym układom wywołań i powrotów liczba okien rejestrów powinna być nieograniczona.
W rzeczywistości okna rejestrów mogą być używane do przechowywania argumentów kilku ostatnio wywołanych procedur. Argumenty
starszych procedur musza być zapisywane w pamięci oraz odtwarzane pózniej, gdy maleje głębokość zagnieżdżenia. Wobec tego rzeczywista
organizacja tablicy rejestrów ma charakter cyklicznego bufora złożonego z nakładających się częściowo okien.
5. Omówić zadania optymalizacyjne kompilatora dla procesorów RISC.
6. Omówić cechy architektury RISC ułatwiające stosowanie przetwarzania potokowego.
Większość rozkazów jest typu rejestr-rejestr, a cykl rozkazu ma następujące dwie fazy: I. Pobranie rozkazu. E. Wykonanie rozkazu.
Wykonywania jest operacja ALU, przy czym dane wejściowe pobierane z rejestrów i do rejestrów są kierowane wyniki.
W przypadku operacji ładowania i zapisu są trzy fazy: I. Pobranie rozkazu. E. Wykonanie rozkazu. Obliczenie adresu pamięci. D. Pamięć.
Operacja rejestr-pamięć lub pamięć-rejestr.
Nawet bardzo proste przetwarzania potokowe może istotnie zwiększyć wydajność. Na rysunku 13.6b jest pokazany 2-etapowy schemat
przetwarzania potokowego, w którym fazy I oraz E dwóch różnych rozkazów są realizowane równocześnie. Rozwiązanie to może umożliwić
niemal dwukrotne zwiększenie szybkości wykonywania rozkazów w porównaniu ze schematem szeregowym. Dwa problemy uniemożliwiające
osiągniecie maksymalnego przyspieszenia. Po pierwsze zakładamy, że jest stosowana pamięć z jednym portem i w określonej fazie jest możliwy
tylko jeden dostęp do pamięci. Wymaga to uwzględnienia stanu oczekiwania w przypadku niektórych rozkazów. Po drugie, rozkaz rozgałęzienia
przerywa szeregowy proces wykonywania. W celu dostosowania się do tych ograniczeń przy minimalnej rozbudowie układów, za pomocą
kompilatora lub asemblera w strumieniu rozkazów można umieścić rozkaz NOOP. Dalszą poprawę przetwarzania potokowego można uzyskać
przez umożliwienie dwóch dostępów do pamięci w ciągu tej samej fazy. Prowadzi to do sekwencji pokazanej na rys. 13.6c. Teraz możę
występować nakładanie się do 3 rozkazów, a poprawa wydajności może być nawet 3-krotna. I znów rozkazy rozgałęziania powodują niepełne
wykorzystanie możliwości przyspieszenia. Zauważmy, że zależność między danymi również wywierają pewien wpływ. Jeśli rozkaz wymaga
argumentu, który został zmieniony przez poprzedni rozkaz, jest potrzebne opóznienie. Podobne jak poprzednio, można się do tego dostosować
za pomocą rozkazu NOOP. Przetwarzanie potokowe przedstawione wcześniej funkcjonuje najlepiej, jeśli trzy fazy trwają w przybliżeniu tyle
samo. Ponieważ faza E obejmuje zwykle operacje ALU, może być ona dłuższa. Możemy ją podzielić na podfazy: E1. Odczyt pliku z rejestru. E2.
Operacja ALU i zapis w rejestrze.
Ze względu na prostotę i regularność listy rozkazów, zaprojektowanie schematu 3- lub 4-fazowego jest łatwe. W określonej chwili w trakcie
wykonywania może się znajdować do 4 rozkazów, co daje maksymalny potencjalny czynnik przyspieszenia równy 4. W celu dostosowania się
do opóznień, spowodowanych przez rozgałęzienie i zależność danych, znów są potrzebne rozkazy NOOP.
7. Jak rozwiązać problem prawdziwej zależności danych w przetwarzaniu superskalarnym. Podać przykład.
Rozważmy następującą sekwencję rozkazów:
add rl, r2 ; ładuj rejestr r l zawartością rejestru r2 plus zawartość r l
move r3, rl ; ładuj rejestr r3 zawartością rl
Drugi rozkaz może być pobrany i zdekodowany, jednak nie może być wykonany, zanim nie zostanie wykonany pierwszy rozkaz. Powodem jest
to, że drugi rozkaz potrzebuje danych tworzonych za pomocą pierwszego rozkazu.
Sytuacja taka jest określana jako prawdziwa zależność danych (nazywana również zależnością przepływu lub zależnością zapis-odczyt).
Na rysunku 13.2 jest zilustrowana ta zależność w maszynie superskalarne stopnia 2. Gdy nie występuje zależność, oba rozkazy mogą być
pobierane i wykonywane równolegle. Jeśli natomiast istnieje zależność danych między pierwszym a drugim rozkazem, to drugi rozkaz ulega
opóznieniu o tyle cykli zegara, ile jest wymaganych do usunięcia zależności. Ogólnie rzecz biorąc, dowolny rozkaz musi być opózniony, aż
zostaną utworzone jego wszystkie wartości wejściowe.
Prawdziwa zależność danych ogranicza wydajność każdego rodzaju potoku. W prostym potoku skalarnym powyższy ciąg rozkazów nie wywoła
opóznienia. Rozważmy jednak następującą sekwencję:
load rl.eff ; ładuj rejestr rl zawartością efektywnego adresu pamięci eff
move r3, rl ; ładuj rejestr r3 zawartością rl
Typowy procesor RISC potrzebuje dwóch lub więcej cykli w celu przeprowadzenia ładowania z pamięci ze względu na opóznienie dostępu do
pamięci znajdującej się poza mikroukładem. Jednym ze sposobów skompensowania tego
opóznienia jest zmiana kolejności rozkazów przez kompilator, dzięki czemu jeden lub więcej kolejnych rozkazów nie zależących od ładowania z
pamięci może rozpocząć przepływ przez potok. Schemat ten jest mniej efektywny w przypadku potoku superskalarnego. Niezależne rozkazy
wykonywane podczas Å‚adowania najprawdopodobniej zostanÄ… wykonane podczas pierwszego cyklu Å‚adowania, pozostawiajÄ…c procesor bez
zajęcia do zakończenia ładowania.
8. Jak rozwiązać problem zależności proceduralnej w przetwarzaniu superskalarnym. Podać przykład.
Jak stwierdziliśmy w rozdziale 11, obecność rozgałęzień w sekwencji rozkazów komplikuje działanie potoku. Rozkazy następujące po
rozgałęzieniu (dokonanym lub nie dokonanym) wykazują zależność proceduralną od rozgałęzienia i nie mogą być wykonywane przed
zakończeniem rozgałęzienia. Na rysunku 13.2 jest pokazany wpływ rozgałęzienia na potok superskalarny stopnia 2. Jak widzieliśmy, ten rodzaj
zależności proceduralnej oddziałuje także na potok skalarny. Jednak podobnie jak poprzednio, konsekwencje w odniesieniu do potoku
superskalarnego są poważniejsze, ze względu na większe możliwości tracone przy każdym opóznieniu. Jeśli są używane rozkazy o zmiennej
długości, to powstaje inny rodzaj zależności proceduralnej. Ponieważ długość określonego rozkazu nie jest znana,
musi on być przynajmniej częściowo zdekodowany, zanim będzie mógł być pobrany następny rozkaz. Nie jest potrzebne jednoczesne
pobieranie wymagane przez potok superskalarny. Jest to jeden z powodów, dla których metody superskalarne są łatwiejsze do zastosowania w
architekturach RISC lub zbliżonych do RISC, które mają ustalone długości rozkazów.
9. Jak rozwiązać problem konfliktu dostępu do zasobów w przetwarzaniu superskalarnym. Podać przykład takiego konfliktu.
Konflikt dotyczący zasobów polega na jednoczesnym rywalizowaniu dwóch lub wielu rozkazów o te same zasoby. Przykładami takich zasobów
są pamięci, pamięci podręczne, magistrale, porty tablic rejestrów i jednostki funkcjonalne (np.
sumator ALU).
W odniesieniu do potoku konflikt dotyczący zasobów wygląda podobnie jak w przypadku zależności danych (rys. 13.2). Istnieją jednak pewne
różnice. Po pierwsze, problemy dotyczące zasobów mogą być przezwyciężone przez powielenie zasobów, podczas gdy prawdziwa zależność
danych nie może być wyeliminowana. Po drugie, gdy czas trwania operacji jest długi, konflikt dotyczący zasobów może być zminimalizowany
przez zastosowanie przetwarzania potokowego w odpowiedniej jednostce funkcjonalnej. Na przykład we wszystkich jednostkach
funkcjonalnych w procesorze Motorola 88000 zastosowano przetwarzanie potokowe.
10. Jak rozwiązać problem antyzależności w przetwarzaniu superskalarnym. Podać przykład.
Polityka zmienionej kolejności wydawania i zmienionej kolejności kończenia podlega tym samym ograniczeniom, które opisaliśmy wyżej.
Rozkaz nie może być wydany, jeśli narusza to zależność lub powoduje konflikt. Różnica polega na tym, że więcej rozkazów jest dostępnych do
wydawania, co zmniejsza prawdopodobieństwo zatrzymania potoku. Powstaje ponadto nowego rodzaju zależność, którą określiliśmy wcześniej
jako antyzależność (nazwana także zależnością odczyt-zapis). Zależność tę ilustruje fragment programu:
I1: R3 <- R3 op R5
I2: R4 <- R3 + 1
I3: R3 <- R5 +1
I4: R7 <- R3 op R4
Wykonywanie rozkazu I3 nie może być zakończone, zanim nie zostanie rozpoczęte wykonywanie rozkazu I2 i nie zostaną pobrane jego
argumenty. Dzieje się tak, ponieważ rozkaz I3 aktualizuje rejestr R3, który jest zródłem argumentu dla rozkazu I2. Stosowany jest termin
antyzależności, ponieważ ograniczenie jest podobne do prawdziwej zależności danych, jednak jest odwrócone: to nie pierwszy rozkaz tworzy
wartość używaną przez drugi rozkaz, lecz drugi rozkaz niszczy wartość używaną przez pierwszy rozkaz.
11. Jak rozwiązać problem zależności wyjściowej w przetwarzaniu superskalarnym. Podać przykład.
Zależność wyjściowa (zależność odczyt-zapis).
I1: R3 <- R3 op R5
I2: R4 <- R3 + 1
I3: R3 <- R5 +1
I4: R7 <- R3 op R4
Rozkaz I2 nie może być wykonany przed rozkazem I1, ponieważ potrzebuje wyniku w rejestrze R3 tworzonego przez rozkaz I1; jest to przykład
prawdziwej zależności danych. Podobnie rozkaz I4 musi czekać na I3, ponieważ używa wyniku tworzonego przez I3. Co można powiedzieć o
zależności między rozkazami I1 a I3? Jeśli wykonywanie rozkazu I3 zakończy się przed I1, to do wykonania I4 zostanie pobrana niewłaściwa
zawartość rejestru R3. Wobec tego wykonywanie rozkazu I3 musi zakończyć się po rozkazie I1, żeby otrzymać prawidłowe wartości wyjściowe.
Aby to zapewnić, wydawani trzeciego rozkazu musi zostać wstrzymane, jeśli jego wynik może być pózniej skasowany przez starszy rozkaz
wymagający dłuższego czasu do zakończenia.
Zmieniona kolejność kończenia wymaga bardziej złożonych układów logicznych wydawania rozkaz niż kończenie kolejne. Ponadto trudniejsze
jest postępowanie z przerwaniami i wyjątkami. Gdy następuje przerwanie, wykonywanie rozkazu w bieżącym punkcie jest zawieszane, a w
pózniejszym czasie wznowione. Procesor, musi zapewnić, żeby przy wznawianiu było wzięte pod uwagę to, że wykonywanie rozkazów
znajdujących się przed rozkazem powodującym przerwanie mogło już być zakończone.
12. Na czym polegają obliczenia spekulatywne? Podać przykład i zastosowania.
Wykonywanie spekulatywne (ang. speculative execution) - zdolność mikroprocesorów przetwarzających instrukcje potokowo do
wykonywania instrukcji znajdujących się za skokiem warunkowym, co do którego jeszcze nie wiadomo, czy nastąpi, a więc czy (formalnie)
kolejne instrukcje zostaną wykonane. Ostatecznie wyniki wyliczone z wyprzedzeniem zostaną albo uwzględnione, albo odrzucone, zależnie od
tego, czy skok siÄ™ wykona.
Tego typu przetwarzanie jest możliwe w mikroprocesorach mogących zmieniać kolejność wykonywania instrukcji, aby najpełniej wykorzystać
dostępne jednostki wykonawcze.
Mechanizmy redukcji opóznień mają charakter heurystyczny. Oznacza to, że procesor próbuje  zgadywać przebieg wykonania programu i na
tej podstawie pobiera i wykonuje kolejne instrukcji. Procesor nie ma pewności, czy  zgadywanie dało właściwy efekt aż do czasu wykonania
instrukcji skoku. Wszystkie instrukcje wykonywane w tym czasie muszą być wykonywane w taki sposób, aby ich wyniki mogły zostać
anulowane.
Taki sposób wykonania instrukcji nazywamy spekulatywnym. Współczesne procesory praktycznie przez cały czas pracują spekulatywnie.
13. Omówić główne cechy architektury SIMD.
SIMD Single Instruction stream, Multiple Data stream - pojedynczy strumień rozkazów, wielokrotny strumień danych.
Architektura SIMD charakteryzuje się zwielokrotnieniem jednostek przetwarzających. Każda z nich realizuje ten sam, pojedynczy strumień
rozkazów, dekodowany przez pojedynczą, wspólną jednostkę sterującą. Praca jednostek przetwarzających ma charakter synchroniczny: w
danym momencie każda z nich wykonuje ten sam rozkaz, choć na innych danych, dostarczanych jej oddzielnym strumieniem ze wspólnej PaO.
Często tylko niektóre z jednostek wykonują rozkaz - dokonuje się to przez maskowanie wybranych jednostek za pomocą informacji w rozkazie.
PraktycznÄ… implementacjÄ… architektury SIMD sÄ… procesory macierzowe (array procesor).
Pojedynczy strumień instrukcji dzielony między procesory. Do każdego procesora podłączony inny strumień danych. Te same instrukcje na
różnych danych. Przykład - multiprocesory wektorowe
14. Omówić protokoły katalogowe zapewniające spójność pamięci podręcznej.
Protokoły katalogowe polegają na zbieraniu i przechowywaniu informacji o tym, gdzie rezydują kopie bloków danych. Zwykle istnieje centralny
sterownik będący częścią sterownika pamięci głównej, a katalog jest przechowywany w pamięci głównej. Katalog zawiera globalną informację o
stanie zawartości różnych lokalnych pamięci podręcznych. Gdy sterownik określonej pamięci podręcznej zgłasza zapotrzebowanie, sterownik
centralny sprawdza i wydaje niezbędne rozkazy zapewniające przesyłanie danych między pamięcią główną, a pamięciami podręcznymi lub
miedzy pamięciami podręcznymi. Jest on także odpowiedzialny za utrzymanie i ciągłe aktualizowanie informacji o stanie; informacja o każdym
działaniu lokalnym, które może wpłynąć na globalny stan bloku danych, musi trafić do sterownika centralnego.
Sterownik zachowuje zwykle informacje o tym , które procesy mają kopię których bloków. Zanim procesor będzie mógł dokonać operacji zapisu
w lokalnej kopii bloku, musi zgłosić do sterownika centralnego zapotrzebowanie na wyłączny dostęp do tego bloku. Przed udzieleniem zgody na
wyłączony dostęp, sterownik wysyła wiadomość do wszystkich procesów przechowujących w pamięci podręcznej kopię tego bloku, zmuszając
każdy procesor do unieważnienia kopii. Po otrzymaniu potwierdzeń unieważnia od każdego procesora, sterownik udziela prawa wyłącznego
dostępu procesorowi zgłaszającemu zapotrzebowanie. Gdy inny procesor próbuje odczytać blok udostępniony na zasadzie wyłączności innemu
procesorowi, wysyła zawiadomienie o chybieniu do sterownika. Sterownik wydaje wtedy procesorowy dysponującemu blokiem rozkaz zapisu
do pamięci głównej. Teraz blok może być jednocześnie odczytywany przez oba procesory.
Wadą rozwiązań katalogowych jest wąskie gardło, jakie może wystąpić w centralnym sterowaniu, oraz obciążenie komunikacją między różnymi
sterownikami pamięci podręcznych a sterownikiem centralnym. Są one jednak efektywne w dużych systemach magistralnych lub z innym
złożonym układem połączeń.
15. Omówić protokół podglądania zapewniający spójność pamięci podręcznej.
W protokołach podglądania odpowiedzialność za utrzymywanie spójności pamięci podręcznych jest rozkładana na wszystkie sterowniki tych
pamięci w wieloprocesorze. Pamięć podręczna musi rozpoznać sytuację, w której przechowywany przez nią blok występuje również w innych
pamięciach podręcznych. Gdy jest aktualizowany blok wspólny, muszą być o tym powiadomione pozostałe pamięci podręczne za
pośrednictwem pewnego mechanizmu rozgłaszania. Każdy sterownik pamięci podręcznej może przeglądać sieć w poszukiwaniu takich
powiadomień i odpowiednio reagować.
Protokoły podglądania są idealne dostosowane do wielorprocesorów o organizacji magistralowej, gdyż wspólna magistrala stanowi idealny
ośrodek rozgłaszania i podglądania. Ponieważ jednym z celów stosowania lokalnych pamięci podręcznych jest unikanie dostępów do magistrali,
trzeba zadbać o to, żeby zwiększony ruch na magistrali wywołany przez rozgłaszani i podglądanie nie skompensował korzyści z używania
lokalnych pamięci podręcznych.
Zbadane zostały dwa podstawowe rozwiązania protokołów podglądania: zapis z unieważnieniem i zapis z aktualizacją. W pierwszym
przypadku w danej chwili może występować wiele jednostek odczytujących, ale jedna zapisująca.
W drugim przypadku może występować zarówno wiele jednostek zapisujących jak i wiele odczytujących.
16. Metody programowego zapewnienia spójności pamięci podręcznej w architekturach wieloprocesorowych.
Mechanizmy spójności oparte na kompilatorze polegają na analizowaniu programu w celu stwierdzenia, które dane mogą stanowić
niebezpieczeństwo przy wprowadzaniu ich do pamięci podręcznych, oraz na odpowiednim znakowaniu tych danych. Następnie system
operacyjny lub sprzęt zapobiegają kierowaniu tych danych do pamięci podręcznych.
Najprostszym rozwiązaniem jest zapobieganie temu, żeby jakiekolwiek wspólne zmienne były kierowane do pamięci podręcznych. Jest to
jednak rozwiązanie zbyt konserwatywne, ponieważ wspólne struktury danych mogą być w pewnych okresach używane na zasadzie
wyłączności, natomiast w pozostałych okresach mogą być efektywnie odczytywane. Spójność pamięci podręcznych stanowi problem tylko
wówczas, gdy przynajmniej jeden proces może aktualizować zmienną i przynajmniej jeden inny proces może sięgać po tę zmienną.
W bardziej efektywnych rozwiązaniach program jest analizowany w celu określenia okresów bezpiecznych dla wspólnych zmiennych.
Następnie kompilator umieszcza w generowanym programie rozkaz, który wymusza spójność pamięci podręcznych podczas okresów
krytycznych. Opracowano wiele metod przeprowadzania takiej analizy i wymuszania spójności; opisano je w [LILJ93] i w [STEN90].
17. Metody przetwarzania równoległego w klastrach. Podać przykłady praktycznych zastosowań.
18. Cechy architektury COMA.
" Migracja danych do pamięci lokalnej procesora, który z nich korzysta
" Pamięć lokalna w węzle jest traktowana jak duża pamięć podręczna procesora (attraction memory)
" Każdy blok pamięci ma swój adres (tag) i może się znajdować w dowolnym węzle
Organizacja hierarchiczna
" Struktura drzewiasta
" Liscie: procesory + AM
" Wezły: katalogi
Organizacja płaska
" Katalog zawiera informacje o wszystkich lokalnych blokach
" Bloki migruja, a katalog jest stały
Architektura COMA (Cache Only Memory Architecture) - Pamięć podręczna dla tego typu architektury została powiększona w celu
zminimalizowania czasu dostępu do pamięci w przypadku odległych do niej odwołań, a w przeciwieństwie do ccNUMA globalna pamięć
dzielona nie występuje.
Typowe systemy reprezentujÄ…ce architektury COMA to:
" SUN S3.MP
" Kendall Square Research (KSR) AllCache
ZALETY
Dostarcza mechanizmu który pozwala na migracje od nic-niedzielącej architektury MPP do modelów programowania na systemach dzielących
wspólną pamięć
WADY
1. Złożony podsystem zarządzania pamięci wirtualnej bazujący na migracji stronic pamięci i ich replikacji.
2. Wymaga kosztownych zmian kontrolerów pamięci poszczególnych węzłów.
Jednym z pomysłów zmierzających do przełamania tego fatum jest wykorzystanie głównej pamięci każdego procesora jako dużej pamięci
podręcznej. Istotną cechą opartych na tym pomyśle wieloprocesorów, oznaczanych akronimem COMA (Cache Only Memory Access, dostęp
wyłącznie przez pamięć cache), jest rezygnacja z przypisywania poszczególnych fragmentów (stron) fizycznej przestrzeni adresowej do
określonych procesorów macierzystych, jak w przypadku maszyn NUMA; tak naprawdę strony te w ogóle tracą swe znaczenie. W zamian
fizyczna przestrzeń adresowa podzielona zostaje na linie cache, które mogą na żądanie migrować po systemie. Bloki odpowiadające liniom
cache nie mają macierzystych procesorów, podobnie jak nomadowie w niektórych krajach Trzeciego Świata mają swe domy tam, gdzie się
aktualnie znajdują. Pamięć zawierająca potrzebny wiersz (blok) nosi nazwę pamięci oddziaływania (attraction memory). Wykorzystanie
pamięci głównej jako wielkiego cache znacząco zwiększa prawdopodobieństwo trafienia, a w konsekwencji wydajność.
Zestaw C
1. Zaprojektować strukturę układu adresowania (sekwensera) w mikroprogramowanej jednostce sterującej umożliwiającej
realizację zadanych metod adresowania mikrorozkazów.
2. Przedstawić schemat przetwarzania potokowego zadanej sekwencji rozkazów dla podanej struktury procesora.
3. Zaprojektować budowę rozkazu procesora RISC o zadanych parametrach.
4. Zoptymalizować zadany fragment programu dla przetwarzania superskalarnego o podanych parametrach.
5. Przedstawić stan poszczególnych bloków pamięci podręcznej stosującej protokół MESI dla zadanej architektury SMP i podanego
scenariusza sekwencji odczytów/zapisów z/do pamięci.
6. Zaprojektować optymalny schemat przetwarzania równoległego i optymalną architekturę wieloprocesorową dla zadanego
problemu obliczeniowego


Wyszukiwarka

Podobne podstrony:
ask egzamin Grupa A
ask egzamin grupa B
ask egzamin rozwiazny
ask egzamin pytania
ASK EGZAMIN
03 ASK Opracowania na egzaminidA35
[ASK] Opracowanie zagadnień na egzamin w trakcie składania
t15 Egzamin praktyczny 2016 CZERWIEC
Egzamin Czerwiec E12
PKC pytania na egzamin

więcej podobnych podstron