Wstęp do Informatyki
Wykład 11
Jednostka sterująca
Autor: Dr hab. Marek J. Greniewski
Miejsce procesora w
komputerze
Miejsce i rola jednostki sterującej
• Jednostka sterująca (Control Unit) jest częścią składową
procesora.
• Jednostka sterująca - steruje zarówno pracą procesora, jak
również za pośrednictwem wysyłanych na zewnątrz sygnałów
steruje pracą pozostałych modułów komputera.
• Na wejściu jednostki sterującej podawane są sygnały z rejestru
rozkazów (Instruction Register), rejestru znaczników (Flage’s
Register) oraz sygnały sterujące ze źródeł zewnętrznych – np.
sygnałów przerwań (Interapt’s Signals).
• Podstawową funkcjonalnością jednostki sterującej jest
powodowanie występowania sekwencji operacji elementarnych,
zwanych mikrooperacjami, podczas wykonywania cyklu
rozkazów.
Model jednostki sterującej
rejestr rozkazów
jednostka
sterująca
sygnały
sterujące z
magistrali
systemowej
sygnały sterujące do
magistrali systemowej
szyna
sterowania
komputera
flag
i
sta
nu
zegar
sygnały
sterujące
wewnątrz
procesora
Sygnały sterujące pracą jednostki
sterującej
• Zegar
. Dzięki zegarowi działanie jednostki sterującej jest
związane z przebiegiem czasu. Jednostka sterująca powoduje
wykonanie jednej mikrooperacji (lub zbioru jednoczesnych
mikrooperacji) po każdym impulsie zegarowym. Jest to
określane jako czas cyklu zegara.
• Rejestr rozkazów
. Kod bieżącej operacji określa, które
mikrooperacje oraz w jakiej kolejności mają być wykonane.
• Flagi stanu
. Są wykorzystywane przez jednostkę sterującą dla
stanu procesora i wyników poprzednich operacji ALU. Np.
wykonując rozkaz skoku warunkowego - zwiększenie stanu
licznika PC następuje, jedynie wtedy gdy warunek wykonania
skoku nie jest spełniony.
• Magistrala sterowania komputerem
. Magistrala sterowania
stanowi część magistrali systemowej i przekazuje sygnały do
jednostki sterującej, takie jak sygnały przerwania i sygnały
potwierdzeń.
Sygnały sterujące generowane
przez jednostkę sterującą
• Wewnętrzne sygnały sterujące procesora
. Są to
dwa rodzaje sygnałów sterujących:
– Sygnały powodujące przenoszenie danych pomiędzy
rejestrami procesora;
– Sygnały aktywujące określone funkcje ALU.
• Sygnały sterujące wysyłane do magistrali
systemowej
. Również w tym przypadku mamy do
czynienie z dwoma rodzajami sygnałów
sterujących:
– Sygnały sterowania pamięcią;
– Sygnały sterujące modułami wejścia i wyjścia.
Realizacja cyklu pobierania
• Jednostka sterująca uruchamia i śledzi wykonanie etapów cyklu
sterowania.
• Np. jednostka sterowania, w następnym etapie działania będzie
realizować cykl pobierania - w trzech sukcesywnych krokach.
• Krok 1
– przeniesienie zawartości licznika PC do rejestru MAR.
Jednostka sterująca dokonuje tego przez podanie sygnału
sterującego, który otwiera bramki pomiędzy bitami licznika PC i
bitami rejestru MAR.
• Krok 2
– odczytanie słowa z pamięci do MBR i zwiększenie
zawartości licznika PC. Jednostka sterująca dokonuje tego
wysyłając jednocześnie cztery sygnały sterujące:
– Sygnał otwarcia bramek pomiędzy bitami rejestru MAR, a szyną adresową,
– Sygnał sterujący odczytem zawartości komórki pamięci do szyny
sterowania,
– Sygnał sterujący otwarcia bramek pomiędzy bitami szyny danych a
rejestrem MBR,
– Sygnał sterujący do układów logicznych powodujących dodanie 1 do
zawartości rejestru PC i zapisanie wyniku w rejestrze PC.
• Krok 3
– wysłanie sygnałów sterujących, otwierających bramki
pomiędzy bitami rejestrów MBR i IR.
Przykład oddziaływania sygnałów
sterujących
Sygnały sterujące
Fla
gi
c6
c
3
c1
c10
c2
Rejestr IR
Rejestr PC
Rejestr AC
M
B
R
M
A
R
Zegar
AL
U
Jednostka
sterująca
Sygna
ły
steruj
ące
Pobieranie t1: MAR := PC c1,c2, Cykl pośredni t1: MAR := IR(adres) c6,c2
t2: MBR := pamięć PC:= PC + 1 c3, c4 t2: MBR := pamięć c4
t3: IR := MBR c5 t3: IR(adres) := MBR(adres) c5
Przerwanie
t1: MBR := PC c8
t2: MAR := adres do zachowania c1,c2
PC := adres podprogramu c9, c7,c1
t3: pamięć := MBR c10
c4
Plus
1
c7
c8
c5
c9
Jednostka sterująca z dekoderem
wejścia
Jednostka
sterująca
Rejestr rozkazów IR
Generator
taktowania
Dekoder
t1
t2
tn
c0 c1
cm
Sygnały sterujące
Flagi
Zegar
Sterowanie za pomocą
mikroprogramu
• Termin mikroprogram został wprowadzony przez M.V. Wilkes’a
we wczesnych latach pięćdziesiątych. Wilkes zaproponował
pewien rodzaj systematyki w projektowaniu jednostek
sterujących, który był pewną „ciekawostką”, ale nie mógł
bezpośrednio realizowany ze względu na możliwości ówczesnej
techniki cyfrowej.
• W 1964 roku firma IBM wprowadziła sterowanie
mikroprogramowe w nowo wprowadzonej na rynek serii
komputerów System/360 IBM.
• Notacja służąca do opisu mikroprogramów wygląda jak język
programowania, którym jest w rzeczywistości.
• Każdy wiersz w tej notacji opisuje zbiór jednocześnie
wykonywanych mikrooperacji i jest nazywany mikrorozkazem.
• Sekwencja mikrorozkazów jest nazywana mikroprogramem lub
oprogramowaniem układowym (firmware).
• Oznacza to, że mikroprogram znajduje się pomiędzy sprzętem
komputera – a jego oprogramowaniem.
Zasada działania
mikroprogramu
•
Powstaje pytanie – „Jak zastosować koncepcję
mikroprogramowania do zbudowania jednostki sterującej?”
•
Każda mikrooperacja generuje zbiór sygnałów wyjściowych
, tym
samym, każda linia sterowania wyprowadzona z jednostki
sterującej, jest albo włączona przez mikrorozkaz, albo wyłączona.
Stan taki jest reprezentowany przez cyfrę binarną związaną z
daną linią sterowania.
•
Możemy więc utworzyć słowo sterujące
, w którym każdy bit
reprezentuje jedną linię sterowania.
•
Każda instrukcja jest realizowana przez zmienną sekwencję
mikrorozkazów, o której z góry trudno jest powiedzieć, jaka jest
jej długość
. Np. czasami wystąpi cykl adresowania pośredniego,
ale również może nie wystąpić.
•
Poszczególne mikrorozkazy sekwencji umieścimy pod stałymi
adresami w pamięci sterowania
.
•
Dla zbudowania sekwencji mikrorozkazów, rozszerzmy słowo
sterujące o adres mikrooperacji, którą należy wykonać w ramach
sekwencji oraz o kilka bitów warunków.
Mikrorozkaz uzależniony
od warunku, w przypadku bitu warunku =1 wykona skok pod
wskazany adres, a w przypadku bitu = 0 przejdzie do
mikrorozkazu umieszczonego pod kolejnym adresem.
Format prostego mikrorozkazu
(tzw. mikrorozkaz poziomy)
Adres mikrorozkazu
Warunek skoku:
- bezwarunkowy / warunkowy
- numer flaga (jeśli warunkowy)
- skok przy 0
- skok przy 1
Sygnały sterujące magistralą systemową komputera
Wewnętrzne sygnały sterujące procesorem
Mikrorozkaz poziomy
• Format mikrorozkazu jest następujący:
– Pole zawierające jednym bicie na każdą wewnętrzna (procesorową) linię
sterującą;
– Pole zawierające jednym bicie na każdą linię sterującą magistrali
systemowej;
– Pole warunku – rozróżniające mikrorozkazy bezwarunkowe i warunkowe, a w
przypadku mikrorozkazu warunkowego - wskazujące flagę i kryterium
rozgałęzienia;
– Pole adresu mikrooperacji wykonywanej przy spełnieniu warunku.
• Wykonanie mikrorozkazu powoduje włączenie wszystkich linii
sterowania, którym odpowiada wartość 1 danego bitu oraz
wyłączenie wszystkich linii sterowania, którym odpowiada
wartość 0 danego bitu.
• Jeśli wskazany przez pole warunku – warunek nie jest spełniony,
to następnym do wykonania jest kolejny mikrorozkaz sekwencji.
• Jeśli wskazany przez pole warunku – warunek jest spełniony, to
następnym do wykonania jest mikrorozkaz znajdujący się pod
adresem określonym przez pole adresu.
Mikrorozkaz pionowy
Adres mikrorozkazu
Warunek skoku:
- bezwarunkowy / warunkowy
- numer flaga (jeśli warunkowy)
- skok przy 0
- skok przy 1
Sygnały sterujące magistralą systemową komputera
Wewnętrzne sygnały sterujące procesorem
dekoder
Ciąg bitów sterujących
zespołami bramek
Kod funkcji
Transfer
Organizacja
pamięci
sterującej
Podprogram cyklu adresowania pośredniego
Ostatni mikrorozkaz: skok do wykonania
Podprogram cyklu pobierania
Ostatni mikrorozkaz: skok do cyklu adresowania
pośredniego lub wykonywania
Podprogram cyklu przerwania
Ostatni mikrorozkaz: skok do pobierania
Początek cyklu wykonywania
Skok do podprogramu wg. kodu operacji
Podprogram AND
Ostatni mikrorozkaz: skok do cyklu
pobierania lub przerwania
Podprogram ADD
Ostatni mikrorozkaz: skok do cyklu
pobierania lub przerwania
Podprogram IOF
Ostatni mikrorozkaz: skok do cyklu
pobierania lub przerwania
Kierunek wzrostu
wartości adresów
pamięci sterującej
Mikroprogramowa jednostka
sterująca
Zegar
Odczyt
Wewnętrzne sygnały procesora
Sygnały sterujące magistrali
Rejestr rozkazów
Dekoder
Buforowy rejestr sterowania
Dekoder
Pamięć
sterująca
Rejestr adresu sterowania
Układy
logiczne
szeregow
ania
Sterowanie następnym
adresem
Fla
gi
Odcz
yt
Jednostka sterująca
Uwaga:
Dekoder wyjściowy,
jest stosowany tylko
w przypadku
zastosowania
mikrorozkazów
pionowych
Działanie jednostki sterującej
1. W celu wykonania rozkazu szeregująca jednostka logiczna
wydaje rozkaz pamięci sterującej odczyt.
2. Słowo (mikrorozkaz), którego adres został umieszczony w
rejestrze sterowania, jest wczytane do buforowego rejestru
sterowania.
3. Zawartość rejestru buforowego sterowania generuje sygnały
sterujące oraz przesyła część adresową słowa do logicznej
jednostki szeregowania.
4. Logiczna jednostka szeregowania ładuje nowy adres do
rejestru adresu sterowania na podstawie informacji o
następnym adresie przesłanej z buforowego rejestru
sterowania wraz z uwzględnieniem stanu flag. Zależnie od
stanu flag – podejmowana jest jedna z trzech decyzji:
•
Przejście do następnego rozkazu
. Dodanie 1 do rejestru adresu
sterowania.
•
Skok do następnego programu standardowego w wyniku mikrorozkazu
skokowego
. Ładowanie pola adresu buforowego rejestru sterowania do
rejestru adresu sterowania.
•
Skok do programu standardowego kodu maszynowego
. Ładowanie
rejestru adresu sterowania na podstawie kodu operacji znajdującego się
w rejestrze rozkazów (IR).
Zalety i wady sterowania
mikroprogramowego
• Główną zaletą mikroprogramowanej jednostki sterującej
jest istotne uproszczenie projektowania logicznego
.
• Rozwiązanie mikroprogramowe jest zarówno tańsze, jak
i bardziej odporne na błędy.
• Układowa jednostka sterująca musi zawierać
skomplikowane układy logiczne w celu zapewnienia
szeregowania wielu mikrooperacji w cyklu rozkazu.
• Dekodery i logiczna jednostka szeregowania
mikroprogramowej jednostki sterującej – są bardzo
prostymi układami kombinacyjnymi.
• Główną wadą mikroprogramowej jednostki sterującej
jest to, że jest ona nieco wolniejsza od jednostki
układowej wykonanej w równorzędnej technologii
.
• Mimo powyższej wady, we współczesnych procesorach
dominują mikroprogramowe jednostki sterujące.
Metody generowania adresu
mikrorozkazu
• Metody jawne:
– Dwupolowa (czyli
dwa alternatywne
adresy)
– Rozgałęzienie
bezwarunkowe lub
warunkowe
– Zmienny format
mikroinstrukcji
• Metody niejawne:
– Odwzorowanie
– Dodawanie
– Sterowanie
szczątkowe.
Przetwarzanie
wieloprocesorowe
w tym architektury
równoległe
Przetwarzanie
wieloprocesorowe
• Luźno powiązane systemy wieloprocesorowe
. System taki
stanowi zbiór stosunkowo autonomicznych jednostek, przy
czym każdy procesor ma własną pamięć główną i kanały
wejścia-wyjścia. W tym kontekście jest często stosowany
termin systemy wielokomputerowe.
• Procesory wyspecjalizowane funkcjonalnie
. Chodzi o jednostki
takie, jak procesory wejścia-wyjścia. W tym przypadku
istnieje główny procesor o ogólnym przeznaczeniu oraz
wyspecjalizowane procesory, które są sterowane przez
główny procesor i wykonują dla niego usługi.
• Silnie powiązane systemy wieloprocesorowe
. System taki
obejmuje zbiór procesorów o wspólnej pamięci głównej,
działający pod zintegrowaną kontrolą systemu operacyjnego.
• Systemy z przetwarzaniem równoległym
. Silnie powiązane
systemy wieloprocesorowe, które mogą współpracować,
pracując równolegle nad jednym zadaniem.
Silnie powiązany system
wieloprocesorowy
1. System obejmuje dwa lub więcej podobnych procesorów o
ogólnym przeznaczeniu i o porównywalnych możliwościach.
2. Wszystkie procesory mają dostęp do tej samej (wspólnej)
pamięci globalnej. Mogą też posiadać pamięci lokalne
(własne).
3. Wszystkie procesory dzielą się dostępem do urządzeń
wejścia-wyjścia za pośrednictwem tych samych kanałów,
albo przez różne kanały umożliwiające dostęp do tych
samych urządzeń.
4. System jest sterowany przez zintegrowany system
operacyjny, zapewniający współpracę pomiędzy
procesorami i ich programami na poziomie zadania,
procesu, pliku i elementu danych.
•
Uwaga: silnie powiązany system wieloprocesorowy, często
nazywany jest
wielo-procesorem
.
Schemat blokowy silnie
powiązanego systemu
wieloprocesorowego
Układ połączeń
silnie powiązanego
systemu
wieloprocesorowego
Procesor
Procesor
Procesor
We-wy
We-wy
We-wy
Pamięć główna
Sposoby łączenia procesorów z
pamięcią współdzieloną
• Należą do nich, między innymi:
– magistrala z podziałem czasu,
– zastosowanie pamięci wieloportowej,
– wykorzystanie przełącznika
krzyżowego, dającego bezpośrednie
połączenie każdego modułu z
każdym.
Organizacja magistrali z podziałem
czasu
(a) podstawowa; (b) z pamięcią podręczną
(a)
We-wy
Pamięć
Procesor
Magistrala systemowa
Procesor
Pamięć
We-wy
We-wy
Pamięć
Procesor
z
pamięcią
podręczną
Magistrala systemowa
Procesor
z
pamięcią
podręczną
Pamięć
We-wy
(b)
Magistrala z podziałem czasu
•
Magistrala składa się z trzech grup linii:
–
szyny sterowania
–
szyny adresowej
–
szyny danych.
1. Adresowanie
. Musi istnieć możliwość rozróżniania modułów
na magistrali w celu określenia źródła danych i zlewu
danych.
2. Arbitraż
. Dowolny moduł wejścia-wyjścia może okresowo
funkcjonować jako jednostka nadrzędna. Mechanizm
arbitrażu pomiędzy jednostkami rywalizującymi o
sterowanie magistralą, korzystający z zadanego schematu
nadawania priorytetów.
3. Podział czasu
. Gdy jeden z modułów steruje magistralą,
pozostałe są odłączone i muszą w razie konieczności
zawiesić działanie, do czasu uzyskania dostępu do
magistrali.
•
Uwaga: struktura i interfejsy magistrali silnie powiązanego
systemu wieloprocesorowego, są w zasadzie takie same jak
w systemie jedno-procesorowym.
Zalety i wady magistrali
w stosunku do innych rozwiązań
• Prostota
. Jest to najprostsze rozwiązanie organizacji
wieloprocesorowej. Interfejs fizyczny, adresowanie, arbitraż i
układy logiczne podziału czasu w każdym procesorze
pozostają takie same, jak w systemie jedno-procesorowym.
• Elastyczność
. Łatwo jest na ogół rozszerzyć system przez
dołączenie następnych procesorów do magistrali.
• Niezawodność
. Magistrala jest w zasadzie układem pasywnym
i uszkodzenie któregokolwiek z dołączonych urządzeń nie
powinno spowodować uszkodzenia całego systemu.
• Wady
. Główną wadą organizacji magistralowej jest w zasadzie
ograniczona wydajność. Wszystkie odniesienia do pamięci
przechodzą wspólną magistralą, wobec tego szybkość
systemu jest ograniczona cyklem zegara. W celu poprawienia
wydajności należy wyposażyć każdy z procesorów w dużą
pamięć podręczną. Co z kolei komplikuje projekt.
Pamięć wieloportowa
We-wy
Pamięć
Procesor
z
pamięcią
podręczną
Pamięć
Pamięć
Procesor
z
pamięcią
podręczną
We-wy
Pamięć wieloportowa
• Rozwiązanie z pamięcią wieloportową jest bardziej złożone od
magistrali
, wymaga bowiem dodania do systemu pamięci dość
dużej liczby układów logicznych.
• Rozwiązanie to,
pozwala na uzyskanie znacznie wyższej
wydajności
, ponieważ każdy z procesorów ma własną ścieżkę
dostępu do pamięci.
• Dodatkową zaletą rozwiązania wieloportowego
jest możliwość
skonfigurowania części pamięci jako pamięci „własnych” jednego
lub kilku procesorów i / lub modułów wejścia-wyjścia
. Możliwość
ta pozwala na poprawę zabezpieczenia przed nieuprawnionym
dostępem oraz na przechowywanie podprogramów regeneracji
w obszarach pamięci, które nie mogą modyfikowane przez inne
procesory.
• Sterowanie pamięciami podręcznymi powinno być realizowane
metodą jednoczesnego zapisu
, ponieważ nie ma innych środków
informowania pozostałych procesorów o aktualizacji pamięci.
Centralna jednostka sterująca
•
Centralna jednostka sterująca silnie powiązanego systemu
wielo-procesorowego – kieruje przepływem oddzielnych
strumieni danych pomiędzy niezależnymi modułami:
– Procesorami
,
– Modułami pamięci
,
– Modułami wejścia-wyjścia
.
•
Centralna jednostka sterująca silnie powiązanego systemu
wielo-procesorowego może również buforować
zapotrzebowania, dokonywać arbitrażu i realizować
taktowanie. Przekazuje również wiadomości dotyczące
stanu i sterowania pomiędzy procesorami,
a także zawiadamiać o aktualizacji pamięci podręcznych.
•
Struktura oparta o centralną jednostkę sterującą , była
powszechnie stosowana w systemach wieloprocesorowych
klasy
mainframe
, takich jak S/370 IBM.
Wieloprocesorowe systemy
operacyjne
• W przypadku silnie powiązanego systemu
wieloprocesorowego użytkownik widzi jeden system
operacyjny sterujący zasobami systemu.
• Silnie powiązany system wieloprocesorowy wygląda jak
wieloprogramowy system jednoprocesorowy. W obu
przypadkach może być jednocześnie aktywizowanych wiele
zadań i procesów, a rolą systemu operacyjnego jest
planowanie ich wykonania oraz przydzielanie zasobów.
• Identyfikowanych jest siedem funkcji wieloprocesorowego
systemu operacyjnego:
– Przydzielanie zasobów i zarządzanie niemi,
– Ochrona tablic i danych,
– Zapobieganie zakleszczaniu systemu,
– Zakończenia awaryjne,
– Równoważenie obciążenie wejścia-wyjścia,
– Równoważenie obciążeń procesorów,
– Rekonfiguracja.
Wieloprocesorowe systemy
operacyjne
• Trzy ostatnie funkcje występują jedynie w systemach
wieloprocesorowych
• Silnie powiązane wielo-procesory prowadzą jedną wspólną
kolejkę krótko-okresową zadań, z której trafiają do wybranego,
aktualnie dostępnego procesora.
• System operacyjny zawsze jest na jednym konkretnym
procesorze, pełniącym wówczas rolę procesora nadrzędnego,
którego jednostka sterująca pełni funkcję centralnej jednostki
sterującej wielo-procesora.
• Procesor nadrzędny jest odpowiedzialny za planowanie zadań
oraz prowadzenia kolejek zadań.
• Każdy z procesorów podległych, gdy wymaga obsługi (np.
wywołania wejścia-wyjścia) musi wysyłać zgłoszenia do
procesora nadrzędnego, a następnie czekać na obsługę.
• Rozwiązywanie konfliktów jest uproszczone, ponieważ procesor
nadrzędny kontroluje wszystkie zasoby pamięci oraz wejścia
wyjścia.
• Rozwiązanie to ma dwie wady: (1) uszkodzenie procesora
nadrzędnego unieruchamia cały system, (2) procesor nadrzędny
może stać się wąskim gardłem wydajności.
Organizacja wielo-procesora
IBM 3033
złożonego z pary komputerów S/370 IBM
Procesor
Kanały
Pamięć
podręczna
Procesor
Kanały
Pamięć
podręczna
Jednostka
komunikacyjna
wielo-procesora
Moduły
pamięci
Spójność pamięci podręcznych
• We współczesnych systemach wieloprocesorowych z każdym
procesorem jest zwykle związana jedno- lub dwupoziomowa
pamięć podręczna.
• Organizacja taka jest niezbędna dla uzyskania rozsądnej
wydajności.
• Powoduje ona powstanie tzw. problemu spójności pamięci
podręcznej (
cache coherence
).
• Istota tego problemu jest następująca: wiele kopii tych samych
danych może jednocześnie występować w różnych pamięciach
podręcznych oraz jeśli procesory mogą swobodnie aktualizować
własne kopie, to w wyniku może powstać niespójny obraz pamięci.
• Istnieje kilka różnych rozwiązań mających na celu zapewnienie
spójności pamięci podręcznych.
• Najczęściej stosowanym rozwiązaniem jest protokół MESI. Pewna
wersja tegoż protokółu jest stosowna w procesorach Pentium i
PowerPC.
Protokół MESI
•
Pamięć podręczna danych zawiera w swoim wskaźniku 2
bity stanu dla każdego wiersza pamięci podręcznej.
•
Każdy wiersz pamięci podręcznej danych może
znajdować się w jednym z czterech stanów:
1. Zmodyfikowany
. Wiersz pamięci podręcznej został
zmodyfikowany (różni się od odpowiednika w pamięci głównej) i
jest osiągalny tylko w pamięci podręcznej.
2. Wyłączny
. Wiersz pamięci podręcznej jest taki sam, jak w pamięci
głównej i nie występuje w innych pamięciach podręcznych.
3. Wspólny
. Wiersz pamięci podręcznej jest taki sam, jak w pamięci
głównej i może występować w innej pamięci podręcznej.
4. Nieważny
. Wiersz pamięci podręcznej nie zawiera danych
ważnych.
•
Rozróżniamy cztery możliwości wyniku działania:
–
Chybienie odczytu.
–
Trafienie odczytu.
–
Chybienie zapisu.
–
Trafienie zapisu.
Chybienie odczytu
•
Gdy w lokalnej pamięci podręcznej następuje chybienie
odczytu, procesor inicjuje odczyt z pamięci głównej
wiersza zawierającego brakujący adres.
•
Procesor umieszcza sygnał na magistrali alarmujący
wszystkie pozostałe procesory / pamięci podręczne,
żeby śledziły transakcje.
•
Wynikają stąd następujące możliwe sytuacje:
1. Jeśli jeden z procesorów ma czystą (niezmodyfikowaną od czasu
odczytu z pamięci głównej) kopię wiersza w stanie
wyłącznym
,
to sygnalizuje w odpowiedzi, że dysponuje tym wierszem.
Odpowiadający procesor zmienia stan swojej kopii z
wyłącznego
na
wspólny
.
2. Jeśli jeden lub więcej procesorów ma czystą kopie wiersza w
stanie
wspólnym
to każdy z nich sygnalizuje ten stan. Procesor
dysponujący kopią przejmuje sterowanie magistralą i zapisuje
zmodyfikowany wiersz w pamięci głównej.
3. Jeśli jeden z procesorów ma
zmodyfikowaną
kopię wiersza, to
sygnalizuje procesorowi inicjującemu celowość ponownej próby.
4. Jeśli żadna inna pamięć podręczna nie ma kopii
wiersza
, to w
odpowiedzi nie są przesyłane żadne sygnały.
•
W sytuacjach 1, 2 i 3 procesor inicjujący wczytuje wiersz
i zmienia jego stan w pamięci podręcznej na
wspólny
. W
sytuacji 4 procesor inicjujący wczytuje wiersz i zmienia
jego stan w pamięci podręcznej na
wyłączny
.
Trafienie odczytu
• Gdy następuje trafienie odczytu wiersza w
lokalnej pamięci podręcznej procesora, to
następuje odczytanie wymaganych danych i
nie następuje zmiana stanu.
Chybienie zapisu
•
Gdy następuje chybienie zapisu w lokalnej pamięci
podręcznej, procesor inicjuje odczyt z pamięci głównej
potrzebnego wiersza do swojej pamięci podręcznej.
•
Odczyt z pamięci głównej jest poprzedzony sygnałem
podanym na magistralę – odczyt bez zamiaru
modyfikacji. Wówczas możliwe są dwa scenariusze:
1. Jedna z pozostałych pamięci podręcznych zawiera
zmodyfikowaną
kopię wiersza. W tym przypadku
zaalarmowany procesor sygnalizuje procesorowi inicjującemu
powyższy fakt i zmienia stan wiersza na
nieważny
. Po
dokonaniu zapisu w pamięci głównej przez procesor inicjujący,
zmodyfikowany wiersz danych w pamięci głównej – jest
przepisywany do pamięci podręcznej procesora.
2. Żadna z pozostałych pamięci podręcznych niema
zmodyfikowanej
kopii wiersza. Wówczas następuje zapisanie
wiersza danych w pamięci głównej.
Trafienie zapisu
•
Gdy następuje trafienie zapisu do wiersza w
pamięci podręcznej, wynik zależy od bieżącego
stanu tego wiersza w pamięci podręcznej:
1. Wspólny
. Przed przeprowadzeniem aktualizacji procesor
musi uzyskać prawo wyłączności dostępu do wiersza.
Procesor sygnalizuje ten fakt za pośrednictwem
magistrali. Każdy procesor, który ma wspólną kopię
wiersza w swojej pamięci podręcznej, zmienia stan
wiersza ze
wspólnego
na
nieważny
. Następnie procesor
inicjujący dokonuje aktualizacji i zmienia stan kopii
wiersza ze
wspólnego
na
zmodyfikowany
.
2. Wyłączny
. Procesor ma wyłączną kontrolę nad wierszem,
więc przeprowadza aktualizację i zmienia stan wiersza
danych ze
wyłącznego
na
zmodyfikowany
.
3. Zmodyfikowany
. Procesor ma wyłączną kontrolę nad
wierszem i wiersz ten ma stan
zmodyfikowany
, więc
dokonuje aktualizacji.
Graf protokołu MESI
Nieważny
Wyłączny
Zmodyfi-
kowany
Wspólny
Procesory wektorowe
- trzy główne kategorie
• ALU z przetwarzaniem potokowym.
• Równoległe ALU, każde z przetwarzaniem
potokowym.
• Równoległe procesory.
Jednostki wektorowe ALU
Przykład czterech etapów wykonywania
operacji dodawania
zmiennoprzecinkowego
Porównywanie
wykładników
Normalizacja
wyniku
Dodawanie
mantys
Przesuwanie
mantysy
C
S
A
N
Komputer wektorowy
ALU z przetwarzaniem
potokowym
Pamięć
Bank rejestrów
wejściowych
Bank rejestrów
wyjściowych
ALU z przetwarzaniem
potokowym
Jednostka wektorowa ALU
C
S
A
N
z
i
x
i
y
i
Działanie
ALU z przetwarzaniem
potokowym
C S A N
C S A N
C S A N
C S A N
C S A N
x
1
, y
1
x
2
,
y
2
x
3
,
y
3
x
4
, y
4
x
5
,
y
5
z
1
z
2
z
3
z
4
z
5
Komputer wektorowy
równoległe ALU
Pamięć
ALU
ALU
ALU
Bank rejestrów
wejściowych
Bank rejestrów
wyjściowych
Przetwarzanie potokowe trzy
równoległe ALU
C
S
A
N
z
i+3
x
i+3
y
i+3
C
S
A
N
z
i+2
x
i+2
y
i+2
C
S
A
N
z
i+1
x
i+1
y
i+
1
Działanie systemu trzy równoległe
ALU z przetwarzaniem potokowym
C S A N
C S A N
C S A N
C S A N
C S A N
x
1
, y
1
x
4
,
y
4
x
7
,
y
7
x
10
, y
10
x
13
,
y
13
z
1
z
4
z
7
z
10
z
13
C S A N
C S A N
C S A N
C S A N
C S A N
x
3
, y
3
x
6
, y
6
x
9
, y
9
x
12
, y
12
x
15
, y
15
z
3
z
6
z
9
z
12
z
15
C S A N
C S A N
C S A N
C S A N
C S A N
x
2
, y
2
x
5
,
y
5
x
8
,
y
8
x
11
, y
11
x
14
,
y
14
z
2
z
5
z
8
z
11
z
14
Komputer wektorowy -
rejestry
• Kluczowym urządzeniem komputera wektorowego są
rejestry, a dokładniej mówiąc
bank rejestrów
.
• Efektywna organizacja komputera wektorowego wymaga
maksymalizacji
udziału operacji – działających na na
zasadzie rejestr rejestr
. Dodatkowo operacje na rejestrach
powinny być łączone w tzw. łańcuchy (
operation chaining
).
• Przykładami takich komputerów wektorowych są
komputery CRAY oraz IBM 3090.
• Ten ostatni z wymienionych komputerów jest wyposażony
w
bank złożony z 8 grup rejestrów 64 bitowych, gdzie
każda grupa zawiera 128 słów
, oraz specjalnych rejestrów:
maski wektorowej, rejestru stanu wektora oraz licznika.
IBM 3090 z urządzeniem
wektorowym
Pamięć główna
Pamięć
podręczna
Dekoder
instrukcji
Procesor
skalarny
Procesor
wektorowy
Rejestry
skalarne
Rejestry
wektorowe
Składowe wektora
Rozkazy wektorowe
Rozkazy skalarne
Wartości skalarne
CPU 3090
Urządzenie wektorowe
Taksonomia organizacji
komputerów
Pojedyncza jednostka sterująca
Wiele jednostek sterujących
Komputery ALU Równoległe Wielo-
procesor Procesory
jednoprocesorowe z przetwarzaniem ALU
równoległe
potokowym
Schemat klasyfikacji Flynna
SISD – jeden strumień rozkazów i jeden strumień danych
SIMD – jeden strumień rozkazów i wiele strumieni danych
MISD – wiele strumieni rozkazów i jeden strumień danych (nie występuje)
MIMD – wiele strumieni rozkazów i wiele strumieni danych
Schemat klasyfikacji Duncana
Procesor wektorowy SIMD
• Procesor zawiera kilka identycznych elementów
przetwarzających (processing element - PE), z
których każdy ma lokalną lub podręczną pamięć
(M) do przechowywania argumentów przed
obliczeniami i po ich wykonaniu.
• Główny układ sterujący pobiera rozkazy z pamięci
głównej i dekoduje je. Jeśli są to rozkazy
wektorowe, to przekazuje je do wszystkich
elementów przetwarzających.
• Każdy element przetwarzający wykonuje te same
obliczenia synchronicznie z innymi na swoich
lokalnych danych.
Procesor wektorowy SIMD
Procesor wektorowy SIMD
•
W celu wykonania, np. dodawania wektorów
C := A + B
– gdzie A i B są odpowiednio wektorami (a
1
, a
2
, ... ,
a
n
) oraz
– (b
1
, b
2
, ... , b
n
),
•
jednostka sterująca ładuje do każdego
modułu pamięci M
i
argumenty a
i
oraz b
i
, a
następnie - zleca wszystkim elementom
przetwarzającym wykonanie rozkazu
•
C := A + B.
Komputer sterowany danymi
Graf zależności danych programu obliczającego wyrażenie (3*a + 4*b)
Komputer sterowany danymi
• Każdy węzeł pracuje niezależnie,
wykonując konkretne operacje
natychmiast po otrzymaniu wszystkich
argumentów.
• Wynik jest przekazywany do następnego
węzła albo węzłów grafu.
• Liczba węzłów, które mogą być
„odpalane” jednocześnie, zależy od
organizacji sprzętu.
Pierścieniowa struktura
implementacji przepływu
danych
• Systemy wieloprocesorowe MIMD zawierają wiele
niezależnych procesorów, które działają na
oddzielnych strumieniach danych, wykorzystując
oddzielne strumienie rozkazów.
• Wyróżnia się dwa modele architektury:
– silnie powiązany - procesory uzyskują dostęp do
rozkazów i danych za pośrednictwem globalnej
współdzielonej pamięci,
– luźno powiązany - każdy procesor ma dużą pamięć
lokalną, które może używać przy dostępie do większości
swoich rozkazów i danych,
• Procesory wymieniają dane i przesyłając
komunikaty.
Architektury systemów MIMD
Topologia połączeń MIMD
1. Pierścień procesorów
. Jeśli komunikacja wzdłuż pierścienia
jest dwukierunkowa, to maksymalna odległość między
dwoma dowolnymi węzłami n-węzłowego pierścienia wynosi
n/2. Taka topologa jest odpowiednia dla stosunkowo
niewielkiej liczby procesorów przy minimalnej komunikacji
danych.
2. Siatka procesorów
. Najprostszą formą siatki jest
dwuwymiarowa matryca, w której każdy jest połączony z
czterema sąsiadami. Zasięg komunikacji w prostej matrycy
wynosi 2(n-1). Jest to dobra organizacja dla realizacji
algorytmów działania na macierzach.
3. Drzewo procesorów
(np. tzw. klastry).
4. Hyper-sześcian procesorów
. Topologia hypersześcienna
używa N =2
n
procesorów ułożonych w postaci n-
wymiarowego sześcianu, w którym każdy węzeł ma n = log
2
N
dwukierunkowych powiązań z sąsiednimi węzłami. Zasięg
komunikacyjny takkiego hypersześcianu wynosi n.
Systemy wieloprocesorowe o
architekturze hyper-sześcianu
Przykład 4-wymiarowego hyper-sześcianu
Łączność w warunkach najgorszego
przypadku
Liczba węzłów
Siatka
Hyper-sześcian
16
6 skoków
4 skoki
256
30 skoków
8 skoków
1024
62 skoki
10 skoków
2048
126 skoków
11 skoków
16384
254 skoki
16 skoków