SMP (Symmetric Multiprocessor)
Sprzętowa architektura komputera
Dwa lub więcej procesorów o podobnych możliwościach
Wspólna pamięć główna i urządzenia we-wy
Czas dostępu do pamięci taki sam (!) dla każdego procesora
Wszystkie procesory mogą realizować te same funkcje (stąd symmetric)
Sterowanie przez zintegrowany system operacyjny
Możliwość stopniowej rozbudowy
Uszkodzenie jednego procesora powoduje tylko obniżenie wydajności
Obsługa współdzielenia zasobów poprzez magistralę
NUMA
Rodzaj architektury
Charakteryzuje się niejednorodnym dostępem do pamięci (czas dostępu dla różnych procesorów jest różny)
Ma to służyć polepszeniu efektywności i nie przeciążaniu magistrali (według twórców dla aplikacji reprezentatywnych, które posiadają większość danych lokalnie w cache działa wydajniej niż SMP)
Wady: słaba przenoszalność pomiędzy SMP a (CC)-NUMA, dostępność
MESI
Główne rozwiązanie problemu spójności pamięci podręcznych (jeden procesor aktualizuje cache, inne procesory wówczas mają nieaktualne dane - stąd problem)
Każdy cache znakowany przez 2 bity stanu:
zmodyfikowany - wiersz w cache został zmodyfikowany i jest osiągalny tylko tam,
wyłączny - wiersz w cache jest identyczny jak ten w głównej pamięci i nie występuje w innych cache,
wspólny - wiersz w cache taki sam jak w pamięci i głównej i może występować w innych pamięciach,
nieważny - wiersz w cache nie zawiera danych ważnych
możliwości operacji na danych: chybienie / trafienie odczytu / zapisu
Failover i Failback
FO (przejmowania danych) - w odniesieniu do klastrów: funkcja przełączania aplikacji i zasobów danych z systemu uszkodzonego do inne go systemu w klastrze
FB (przywracanie) - w odniesieniu do klastrów: funkcja przywracania aplikacji i zasobów danych do systemu początkowego, gdy zostanie on naprawiony
Klaster
Alternatywna dla SMP i NUMA
Bardziej wydajny i dostępny - stosowany w serwerach
Grupa połączonych kompletnych (mogących funkcjonować w oderwaniu od klastra) komputerów (nazywanych węzłami), tworzących zasób obliczeniowy imitujący jedną maszynę
Możliwe jest tworzenie bardzo dużych klastrów przewyższających możliwościami największe samodzielne jednostki
Istnieje możliwość nieinwazyjnego stopniowego powiększania klastra
Każdy węzeł klastra jest kompletny - jego odłączenie nie powoduje uszkodzenia systemu
Bardzo dobry stosunek cena / wydajność
Rodzaje:
rezerwa bierna - pseudoklaster, istnieje dodatkowy serwer, który włącza się dopiero gdy serwer główny pada (przestaje wysyłać sygnał „bicia serca”)
dodatkowy czynny serwer - bardziej złożony, dodatkowy serwer nie „śpi” i również przetwarza dane
odrębne serwery - serwery pracują na oddzielnych dyskach, większa dostępność, większe obciążenie łącza (ciągłe kopiowanie danych)
serwery połączone z dyskami - praca na wspólnym dysku + własne dyski, mniejsze obciążenie łącza, wymaga tworzenia kopii RAID
serwery współużytkujące dyski - wiele serwerów ma jednocześnie dostęp do dysków, wymaga mechanizmów blokowania, niskie obciążenie łącza
Duży plus klastrów to zasadnicza jednolitość: sterowania, interfejsów, przestrzeni pamięci, hierarchii plików ...itd.
CISC
Architektura mikroprocesorów o pełnej liście rozkazów
Dużo ilość, skomplikowanych (zajmujących kilka cyklów procesora) rozkazów
Duża liczba trybów adresowania (5 do 20), powolny dekoder adresów
Projektowane głównie po to, by zapewnić odpowiednią współpracę z językami wysokiego poziomu, dążono do uproszczenia kompilatorów i lepszej wydajności
Stosowane dawniej również ze względów ekonomicznych - teoretycznie programy na architekturę CISC zajmowały mniej miejsca w pamięci, co było bardzo cenne
Wolniejsze od architektur typu RISC, bo jest duża liczba odwołań do danych w pamięci
Mniejsza liczba rejestrów
Różna długość rozkazów
Łatwiejsze programowanie, krótsze programy
Droższe w budowie i eksploatacji
Na każdy rozkaz składa się mikroprogram złożony z mikrooperacji/mikrorozkazów (a każdy mikrorozkaz zawiera sekwencję bitów, która reprezentuje mikrooperację sterującą przemieszczaniem informacji między różnymi podzespołami i rejestrami procesora);
RISC
Duża liczba rejestrów - operacje typu z rejestru do rejestru, implikują dużo szybsze działanie niż pobieranie danych z pamięci podręcznej
W dużych rejestrach zmienne lokalne, także globalne - szybsze wykonywanie rozkazów
Krótkie, proste rozkazy - łatwe do implementacji w procesorze, a jednocześnie będące podstawowym budulcem programów (wykorzystywane w ponad 90% przypadków)
Jeden rozkaz na jeden cykl - przyspieszenie działania
Proste tryby adresowania i ich niewielka liczba
Architektura load-store
Intensywne wykorzystanie przetwarzania potokowego
Proste formaty rozkazów
Rozkazy mają jednakową długość, brak adresowania pośredniego, brak operacji łączących ładowanie / zapis z arytmetyką
Przykłady realizacji:
MIPS - dodatkowe ALU,która mogłaby współpracować z istniejącymi. Potok wykorzystywany do aktywowania więcej niż jednej operacji. Ciężar zapewnienia poprawności wykonania spoczywa na kompilatorze; usprawnienie obliczeń
SPARC -otwarta architektura RISC, zysk z wyrzucenia sprzętu ze środka procesora a dołączenia wielu rejestrów generalnego przeznaczenia. przełączanie kontekstów, okno z rejestrami, dużo rejestrów
ARM - brak zagospodarowania wolnego miejsca (po redukcji rozkazów) - mniejsza jednostka (zmniejszenie struktury) - mniejsze zużycie energii, mniej wydalanego ciepła - możliwe wyższe obroty -czyli praca z wysokimi częstotliwościami
POWERPC - podobne do MIPS, dodatkowe bloki funkcjonalne (dla floatów np.); rozdzielamy pewne typy operacji i wykonujemy je na oddzielnych jednostkach, aby zrównoleglić obliczenia.
Porównywanie RISC i CISC jest o tyle niezasadne, iż obie technologie od jakiegoś czasu przenikają się, wpływają na siebie i uzupełniają się
Urządzenie Sterujące
Jeden z elementu funkcjonalnego obrazu komputera
Zarządza zasobami komputera i koordynuje działanie jego składników funkcjonalnych w zależności od wprowadzonych poleceń
Jednostka sterująca CPU - steruje działaniem komputera, składa się z: układów logicznego sterowania, rejestrów i dekoderów jednostki sterującej i pamięci sterującej
Schemat Funkcjonalny Komputera
Komputer realizuje 4 podstawowe funkcje: przetwarzanie danych, przechowywanie danych, przenoszenie danych, sterowanie
Jeżeli komputer otrzymuje dane od urządzenia bezpośrednio podłączonego do niego - to jest to proces we-wy, a urządzenie nazywa się peryferyjnym
Jeżeli przenoszenie danych odbywa się na duże odległości, to proces ten nazywamy transmisją danych
W komputerze wyróżnia się 4 podstawowe elementy: CPU, pamięć główna, wejście-wyjście i magistrala systemowa
RAID
Schemat projektowania baz danych dla pamięci wielodyskowych
Ma zwiększać wydajność (w pewnym sensie także pojemność całościową) pamięci dyskowych, a także polepszać bezpieczeństwo danych
Jest to zespół fizycznie istniejących napędów dyskowych, widzianych przez OS jako jeden napęd logiczny
Dane są rozproszone, tworzą tablice
Implementuje przechowywanie danych o parzystości, co gwarantuje odzyskiwanie danych w wypadku awarii któregoś z napędów
Istnieje siedem poziomów RAID:
RAID 0 - nie przewiduje redundancji, stos w celu poprawienia wydajności i pojemności, dane rozproszone na wszystkich dyskach w postaci pasków, zwiększa szybkość transferu we-wy
RAID 1 - redundancja osiąga przez powielanie wszystkich danych, takie same dane są równolegle na dwóch dyskach - szybszy odczyt, w razie awarii każde dane posiadają kopię na drugim dysku, wady: wolniejszy zapis i koszt
RAID 2 - dostęp do danych - równoległy, stosowany jest kod Hamminga, mniej kosztowny niż RAID 1, ale nadal kosztowny, stosowany dla tablic o dużej zawodności
RAID 3 - analogiczny do RAID 2, wymaga tylko jednego dysku redundancyjnego, dostęp równoległy, wykorzystuje obliczanie bitów parzystości (redundancja implementowana za pomocą funkcji XOR)
RAID 4 - dostęp do danych - niezależny, każdy dysk działa niezależnie, mogą być obsługiwane równolegle, dobry w sytuacji, gdy potrzeba szybkich odpowiedzi na żądania we-wy a niekoniecznie dużego transferu, gorsza wydajność zapisu, paski parzystości znajdują się na jednym dysku (wąskie gardło)
RAID 5 - podobny do RAID 4, jednak paski parzystości są rozproszone na wszystkich dyskach
RAID 6 - znaczne polepszenie dostępności, parzystość obliczana jest podwójne, jednak dzieje się to kosztem wydajności i szybkości zapisu
INTEL 8086
Mikroprocesor ogólnego przeznaczenia
Dużo bardziej zaawansowany, niż 8080
16-bitowy mikroprocesor
Szersza ścieżka danych, większe rejestry, podręczna pamięć rozkazów
Mechanizmy pracy wieloprocesorowej
Segmentacja pamięci
Rozszerzone możliwości adresowania operandów
Adresowanie natychmiastowe, rejestrowe, bezpośrednie, pośrednie, indeksowe i bazowe
Wprowadzenie układu kolejki (pamiętanie 6 bajtów z pamięci w czasie zajętości procesora)
2 części: jednostka wykonawcza, zespół łącza z magistralą systemową
Rozkazy: arytmetyczno-logiczne, przesłań, skoków, obsługi pętli, wywołań i powrotów z podprogramu, dotyczące rejestrów segmentowych ,wykonujące operacje na ciągach słów, wejścia/wyjścia i inne
PIC (16F84A)
Jednoukładowy komputer stosowany w systemach wbudowanych
Architektura RISC
Należy podłączyć do niego zegar i zasilanie
Zawiera 68 8-bitowych rejestrów, stos (8 wierszy 13-bitowych, ma do niego dostęp licznik programu),
Peryferyjne: pamięć EEPROM, TIMER, I/O Ports
Ostatni wpis ze stosu jest wpisywany do Program Counter
Zbudowany wg paradygmatu von Neumanna, jednak w architekturze Harvardzkiej - gwarantuje to większą szybkość - równoległe pobieranie danych i instrukcji
Stała długość instrukcji - 14 bitów
WDM
Typ sterowników typu PnP stosowany od Windowsa 98
następna VxD, obejmuje wsparciem Windowsy 98- Vista
Wyróżnia się 4 rodzaje (driver funkcyjny - główny driver, najczęściej napisany przez producenta i niezbędny do działania urządzenia) :
class driver - sterownik funkcyjny, mogący operować na dużej liczbie urządzeń tego samego typu (nie ma potrzeby pisania oddzielnych driverów dla każdej wersji urządzenia), w ujęciu programistycznym class driver może służyć jako baza dla bardziej specjalizowanych sterowników np. typu miniport (udostępnia interfejs)
miniport driver - sterownik funkcyjny do obsługi USB, SCSI, Audio i urządzeń sieciowych
bus driver - sterownik do obsługi magistral, może służyć jako kontroler, adapter czy mostek, może obsługiwać więcej niż jedną magistralę danego typu, używany jest do obsługi choćby USB, PCI, SCSI, FireWire...
filter driver - mogą dodawać i modyfikować funkcje obecnych już sterowników, nie muszą być związane z urządzeniem,
Wady: wygórowane wymagania dla nauki WDM, brak odpowiedniej współpracy z systemem zasilania, brak wsparcia dla sterowników pisanych czysto w user-mode
Scoreboarding
Algorytm stosowany w procesorach superskalarnych
Umożliwia synchronizację potoku i zabezpiecza przed hazardem RAW (wartość nim zostanie zapisana przez poprzednią instrukcję, jest już odczytana przez następną)
Polega na identyfikowaniu rejestrów procesora jako: ważnych i nieważnych
Odczyt możliwy jest tylko z ważnego rejestru
Rejestr oznaczany jest jako nieważny, gdy instrukcja mająca zapisać coś do tego rejestru opuszcza fazę odczytu
Wówczas inne instrukcje nie mają prawa korzystania z danego rejestru
Gdy instrukcja opuszcza fazę zapisu, rejestr oznaczany jest jako ważny i dane z rejestru są „odblokowywane” dla innych instrukcji
Algorytm Zastępowania Stron
Stosowany w stronicowaniu, jako element obsługi braku strony
W momencie, gdy brakuje wolnych ramek w pamięci należy zwolnić jedną z ramek poprzez zapisanie znajdującej się w niej strony na dysk
Taki zapis można dokonać tylko wówczas gdy odpowiedni bit (modyfikacji) w ramce jest ustawiony na 1
Szukaniem strony, która ma być usunięta z pamięci i zapisana na dysk zajmują się różne algorytmy:
FIFO - usuwamy stronę najdłużej znajdującą się w pamięci, prosty, łatwy w implementacji, zagrożenie to błędy - np. anomalia Beladiego
Algorytm Optymalny - usuwamy stronę najdłużej nieużywaną, idealny - teoretyczny - niemożliwy do implementacji
LRU - usuwamy stronę, która nie była używana najdłużej - lepszy wynik od FIFO, dosyć trudny do implementacji
Drugiej Szansy - analogiczny do FIFO, ale korzysta z bity odwołania (na początku zero, jeśli do strony się odwołaliśmy ustawiany na 1) - jeżeli bit odwołania jest równy 1, wówczas strona dostaje „drugą szansę” - bit ustawia się na 0 a strona ląduje na koniec kolejki
Zliczające (LFU i MFU) - zliczają liczby odwołań i usuwana jest albo strona o najmniejszej albo największej liczbie odwołań, trudne do implementacji, niezbyt skuteczne
Barrel Shifter
Ukł cyfrowy, zbudowany z MUX
Potrafi w jednym cyklu przesunąć słowo o daną liczbę bitów
Używany w ALU (jako stały komponent), chociażby przy okazji wyrównywania mantys w obliczeniach zmiennoprzecinkowych
DMA
jest to bezpośredni dostęp do pamięci
dodatkowy moduł na magistrali systemowej
udaje procesor i w rzeczywistości przejmuje od procesora sterowanie systemem
moduł DMA działa na zasadzie wykradania cyklu procesora
Tryby pracy kontrolera DMA
tryb spoczynkowy "I" (Idle) - podczas każdego cyklu zegara DMA testowane są stany wejść programowo nie maskowalnych;
tryb "S" (Single) - w tym trybie pracy dokonywane jest pojedyncze przesłanie. Wewnętrzny licznik transmisji jest zmniejszany o 1, a rejestr adresowy, zależnie od zaprogramowania, o 1 zwiększany lub zmniejszany;
tryb "B" (Block) - transmisja trwa nieprzerwanie do momentu wystąpienia zewnętrznego sygnału EOP (koniec transmisji) od urządzenia lub osiągnięcia przez licznik transmisji wartości FFFFh;
tryb "D" (Demand) - tryb ten jest podobny do trybu "B". Różnica polega na tym, że transmisja trwa do czasu zaniknięcia sygnału DREQn (urządzenie zewnętrzne żąda obsługi), pojawienia się sygnału EOP, wykonania zadanej w liczniku transmisji liczby przesłań lub nadejścia żądania obsługi o wyższym priorytecie. Czasowa dezaktywacja sygnału żądania na wejściu DREQn powoduje wstrzymanie (ale nie zakończenie) transmisji;
tryb "C" (Cascade) - w trybie tym przekazywane są tylko sygnały sterujące od układu nadrzędnego (Master). Układ pracujący jako podporządkowany (Slave) nie wystawia na szyny systemowe adresów ani sygnałów sterujących;
tryb "V" (Verify) - układ pracuje tak, jak przy transmisji, tzn. wytwarza adresy, reaguje na sygnał EOP i inne sygnały, ale nie generuje sygnałów dostępu do pamięci i urządzeń wejścia wyjścia. Tryb ten służy do diagnostyki wewnętrznej układu i nie ma nic wspólnego z weryfikacją danych.
Przetwarzanie potokowe
Na jednym końcu przyjmowane nowe elementy wejściowe, zanim jeszcze elementy poprzednio przyjęte ukażą się na wyjściu. W celu realizacji tej koncepcji stosujemy takie techniki jak:
zwielokrotnienie strumienia
pobieranie rozkazu z wyprzedzeniem
bufor pętli
przewidywanie rozgałęzienia
opóźnienie rozgałęzienia
System 360
był pierwszą zaplanowaną rodziną komputerów
modele różniły się wydajnością i ceną
wszystkie modele były kompatybilne programowo
z pewnymi rozszerzeniami i modyfikacjami architektura serii 360 pozostaje do dziś architekturą dużych komputerów
304 instrukcje o zmiennej długości i czasie wykonania
3 różne możliwe długości rozkazu
-16 trybów adresowania
Tryby Adresowania
natychmiastowy (PIC, 8086)
Argument pobierany jest bezpośrednio z rozkazu. W tym trybie wskazywany jest wyłącznie operand źródłowy. Np. MOV AX, 20 - w rejestrze AX zostanie zapisana liczba 20. używany tylko w odniesieniu do stałych: MOV LW
bezpośredni (PIC, 8086)
Adres operandu znajduje się bezpośrednio w kodzie instrukcji. Np. MOV AX, [40] - w rejestrze AX zostanie zapisana zawartość komórki pamięci (segment danych) o adresie 40.
pośredni (PIC, 8086)
W trybie adresowania pośredniego odwołujemy się do jednego z rejestrów roboczych procesora (np. BX) lub do komórki pamięci (np.19). W rejestrze (BX) zapisany jest numer komórki pamięci, do której trzeba sięgnąć aby odczytać tam zawarty adres i przenieść do drugiego rejestru (AX). Np. MOV AX, [CX] - w rejestrze AX zostanie zapisana zawartość komórki pamięci o adresie, który znajduje się w rejestrze CX.
ja bym ujęła to tak: instrukcja zawiera adres komórki pamięci, która zawiera adres efektywny.
implikowany (PIC)
Adresowanie implikowane dotyczy instrukcji jednobajtowych, dla których zarówno operand jak i miejsce przeznaczenia są określone przez dany rozkaz. Ten tryb adresowania jest używany wyłącznie w odniesieniu do wewnętrznych rejestrów mikrokontrolera, szczególnie w odniesieniu do akumulatora. Ze względu na krótki format instrukcji tryb ten jest bardzo efektywny, a ograniczeniem jest tylko liczba dostępnych rejestrów. Np. CLRW,
względny (PIC)
Adresowanie względne służy natomiast do adresowania pamięci względem adresu aktualnie wykonywanej instrukcji w pamięci programu. Adres ten jest przechowywany w specjalnie do tego przeznaczonym rejestrze zwanym wskaźnikiem instrukcji (IP). Tryb ten jest wykorzystywany przez rozkazy skoku.
indeksowy (PIC, 8086)
Adresowanie to polega na obliczaniu adresu przez sumowanie zawartości specjalnie przeznaczonego do indeksowania rejestru, zwanego rejestrem indeksowym z adresem bezpośrednim, zapisanym w instrukcji. Obliczony w ten sposób adres jest adresem efektywnym. Tryb ten jest korzystny, gdy operujemy na blokach danych.
bazowo-indeksowy ( 8086)
Zawartość rejestru bazowego (BX, BP) jest dodawana do zawartości rejestru indeksowego (SI, DI), tworząc adres do pamięci, pod którym znajduje się wartość danej. NOT [BX+DI]
bazowo-indeksowe z przemieszczeniem
Stała jest dodawana do rejestru bazowego (BX, BP) oraz rejestru indeksowego (SI, DI), tworząc adres do pamięci, pod którym znajduje się wartość danej np. NOT [BX+DI+8]
rejestrowy (i rejestrowy pośredni) (8086)
W adresowaniu rejestrowym operandy znajdują się w rejestrach wewnętrznych mikroprocesora. Jeżeli operand znajduje się w pamięci, to zespół wykonawczy EY oblicza jego 16-bitowy adres (przesunięcie) wewnątrz segmentu. Zespół BIU oblicza adres rzeczywisty na podstawie otrzymanego przesunięcia (adresu efektywnego EA) i zawartości wybranego rejestru segmentowego. Np. MOV AX, BX - w rejestrze AX zostanie zapisana zawartość rejestru BX.
bazowy (8086)
Adresowanie bazowe jest to rodzaj adresowania pośredniego, gdzie rozkaz wskazuje na jeden z rejestrów bazowych BX lub BP i może zawierać 8-; lub 16-bitową wartość stanowiącą lokalne przemieszczenie. Adresem efektywnym jest suma zawartości rejestru bazowego i przemieszczenia. Np. MOV AX, [BP].
BANKI PAMIĘCI
Jeden ze sposobów na zwiększenie obszaru adresowania
Przykład: magistrala 8-bitowa pozwala zaadresować 64 * wielkość słowa
Gdy przy stałej magistrali rosły wielkości pamięci pojawił się problem, jak zaadresować „nadmiarową” ilość pamięci
W PICu (także Atari, komputery Apple) użyto tzw. banków pamięci
Każdy bank na swój identyfikator (0,1...), każdy bank obejmuje odpowiednią część pamięci, naraz można się odwołać bezpośrednio tylko do jednego banku
By zmienić bank, należy zmienić bit RP0 w rejestrze statusu. Ten bit przechowuje najstarszy bit szyny adresowej.
Można się przełączać między bankami, lecz wymaga to instrukcji, które by zmieniały odpowiednio wartość rejestru
W prostych układach 8-bitowych, za przełączanie banków odpowiada MMU (Memory Management Unit)
Sposób dość powolny - duża strata czasu - przełączanie między bankami
Adres fizyczny jest sklejany: 1 bit z RP0 i 7 bitowy offset pobierany z instrukcji
SEGMENTACJA PAMIĘCI
Pamięć jest logicznie podzielona na pewne obszary
Każdy z obszarów jest reprezentowany w danym rejestrze segmentowym (Intel 8086 - CS,DS,SS,ES)
Adresowanie polega na sumowaniu wartości offsetu i zawartości danego rejestru-wymagana jest więc dodatkowa operacja dodawania
Takie „dwuetapowe” (najpierw segment, potem offset) adresowanie zwiększa ilość danych, które można zaadresować
Ponadto segmentacja umożliwiała logiczne oddzielenie różnych elementów w pamięci (programu, danych, stosu)
W rejestrach znajdowały się także odpowiednie bity odpowiadające za poziom dostępu do danego segmentu, co umożliwiało ochronę danych
Implementacje segmentacji wymuszały jednak dość ograniczone dzielenie pamięci, dzielenie jej w sposób dość nienaturalny i kłopotliwy, przez co obecnie segmentacja nie jest stosowana
Przenaszalnośc kodu w rózne miejsca pamięci
Każdy program mógł się zaczynać w dowolnym miejscu.
Początek segmentu umieszczany w adresach podzielnych przez 16
Rejestry PIC16F84A
- status(rejestr statusu, flag procesora)
- porta/b(reprezentacja stanów linii portu)
- trisa/b(konfiguracja wejść, wyjść na porcie)
- pcl(młodsze 8 bitów licznika programu)
- pclath(starsza część licznika programu)
- tmr0(rejestr Timera0)
CYKLE
- dekodowanie instrukcji(Program Counter->szyna, PC++)
- pobieranie argumentów(odczyt FLASH)
- wykonywanie(wypełnianie Instruction Reg(szyna danych - pobieranie komendy))
- zapis wyników(zmiany Instruction Reg i Program Counter zależnie od danych(skok))
Kernel
Jądro systemu
Podstawowa część systemu operacyjnego, odpowiedzialna za wszystkie jego zadania
Wyróżniamy kilka podstawowych metod konstrukcji jąder:
jądro monolityczne - często stosowane w systemach typu Unix. Wszystkie zadania są wykonywane przez jądro, będące jednym, dużym programem działającym w trybie jądra.
mikrojądro - w tej technice z monolitycznego jądra zostaje tylko jego podstawowa część, reszta realizowana jako osobne procesy.
nanokernel - nanokernel jest jeszcze mniejszy od mikrojądra
exokernel - odmiana nanojądra. Cechą wyróżniającą jest możliwość zarządzania zasobami systemu przez nieuprzywilejowanego użytkownika, a rola jądra sprowadza się do zabezpieczania zasobów.
cachekernel - w tej technice jądro systemu buforuje obiekty systemowe takie jak wątki czy przestrzenie adresowe tak jak sprzęt komputerowy buforuje pamięć
jądro hybrydowe - kompromis między architekturą jądra monolitycznego i mikrojądra. W krytycznych usługach - np. stos sieci - usługi są na stałe wkompilowane w główny kod jądra, inne usługi pozostają oddzielone od głównego jądra i działają jako serwery (w przestrzeni jądra).
Monolityczne: Linuch, Hybrydowe: Windows
TRYBY PRACY PROCESORA 386 określają m.in. sposób zarządzania pamięcią i uprawnienia uzytkownika
Tryb Rzeczywisty - W trybie tym brak ochrony pamięci przed użyciem przez inny proces i brak obsługi wielozadaniowości. W trybie rzeczywistym pracowały programy w systemie operacyjnym DOS. Dwa adresy logiczne mogą wskazywać na ten sam adres fizyczny. Adresowanie pamięci w zakresie 1 MB.
Tryb Chroniony - Umożliwia adresowanie pamięci w większym zakresie niż 1MB (tryb rzeczywisty), wprowadza wiele nowych udogodnień wspierających wielozadaniowość(!), takich jak: sprzętowa ochrona pamięci (układ MMU), wsparcie przełączania kontekstu procesora i wiele innych. Wszystko pod kontrolą OS, aby aplikacja nie mogła „namieszać” w systemie.
Tryb Wirtualny - Tryb pracy procesorów, dostępny w trybie chronionym, który umożliwia uruchamianie programów przeznaczonych dla trybu rzeczywistego. W odróżnieniu od "prawdziwego" trybu rzeczywistego, dostęp do portów procesora jest sankcjonowany przez system operacyjny pracujący w trybie chronionym.
Tryb Wirtualny jest wykorzystywany do uruchamiania programów DOS-owych. System Windows posiada wbudowane mechanizmy umożliwiające uruchomienie takich programów (w Windows NT jest to NTVDM), natomiast dla systemu Linux istnieją programy dosbox oraz dosemu.
Tryb SMM- tryb zarządzania sprzętem przez sys operacyjny, niedostępny z poziomu uzytkownika
Rodzaje Pamięci
Rejestry
RAM ( Random Access Memory )
SRAM ( Statyczna )
DRAM ( Dynamiczna )
SDRAM ( Synchronous Dynamic RAM , jedna dana na cykl zegara )
DDR ( Transmisja na obu zboczach sygnału )
RDRAM ( Rambus )
ROM (Read Only Memory )
PROM ( 1 krotnie programowalna , nie używana )
EPROM ( kasowanie za pomocą UV )
EEPROM ( wielokrotnie programowalna,kasowanie i zapis na drodze elektronicznej)
FLASH ( operacja na wielu komórkach w tym samym czasie ) ( NOR - RAM , NAND - w zastępstwie dysków )
Pamięć magnetyczna
DRAM jest tańszy oraz wolniejszy od SRAM.
SRAM nie wymaga ona odświeżania.
SRAM używa przerzutników (zestaw tranzystorów)
DRAM używa kondensatorów - ładunek trzeba odnawiać
SRAM jest bardzo drogi - jedna komórka pamięci składa się z czterech tranzystorów i dwóch oporników, dla porównania do utrzymania jednego bajta w DRAMie potrzeba jedynie tranzystora i kondensatora.
Pamięć dynamiczna
RAM to akronim od słów RANDOM ACCESS MEMORY. Pamięć ta jest najbardziej uniwersalna, ponieważ pozwala na wielokrotne zapisywanie i odczytywanie z niej informacji. Ze względu na rodzaj podzespołów jakich używa się do jej budowy można wyróżnić dwa rodzaje RAM - u: SRAM oraz DRAM
SRAM w dzisiejszych PC - etach, nie jest wykorzystywana jako pamięć główna, tylko jako szybka pamięć podręczna (tzw. CACHE) o bardzo krótkim czasie dostępu, służąca do tymczasowego zapamiętania potrzebnych danych. Pamięć SRAM jest pamięcią statyczną. Czas dostępu jest to czas jaki upłynie od podania adresu do mementu odczytania danych. W jej budowie wykorzystywane są przerzutniki. Pamięć ta zużywa dużo mocy w porównaniu z pamięcią typu DRAM. Jej produkcja jest niestety bardzo kosztowna. Wykonuje się ją głównie w technologii CMOS.
Od roku 1996 w powszechnym użyciu znajdują się pamięci typu SDRAM. SDRAM - y (synchroniczne dynamiczne pamięci RAM) różnią się zasadniczo od swych poprzedników - pracują synchronicznie i są taktowane częstotliwością magistrali. Obecnie dostępne są one w postaci 168 - pinowych DIMM - ów.
Pamięć cache - pamięć bufora, znacznie przyspiesza prace komputera. Jest to pamiec podręczna, która występuje bezpośrednio przy mikroprocesorze. Kopiowane są do niej całe bloki z pamięci ram. Dzieki temu mikroprocesor nie musi czekac na dostep do magistrali aby pobrac z pamieci dane.
Cykl rozkazowy (instrukcyjny) - sklada sie z kilku faz zwanych cyklami maszynowymi. Jest to czas potrzebny na odczytanie kodu operacyjnego rozkazu z pamieci, na pobranie argumentow, na wykonanie rozkazu i
cykl maszynowy - liczba cykli maszynowych odpowiada liczbie dostepow dopamieci. Cykle maszynowe najczesciej sa wykonywane synchronicznie z zegarem. Okres zegara nazywamy taktem grupy instrukcji w procesorze - arytmetyczno-logiczne(arytm., log, przesuwania), rozkazy przeslan, rozk.sterujace praca programu, rozk.ster. Praca procesora.
Sposoby logicznej organizacji pamięci. Praca w trybie chronionym.
Podczas pracy w trybie wirtualnym pamięć operacyjna także podzielona jest na segmenty które są rozłączne - nie zachodzą na siebie. Każdy z nich ma swój adres początkowy (adres bazowy) oraz określony rozmiar mieszczący się w granicach od 1 bajta do 64 kB. W czasie pracy w trybie adresowania wirtualnego fizyczny adres komórki jest liczbą trzybajtową. Komputer potrafi więc zaadresować
bajtów, czyli 16 MB pamięci fizycznej. Adres logiczny - podobnie jak w trybie rzeczywistym - składa się z dwóch elementów: segmentu i offsetu. 24 - bitowy adres początku segmentu pobierany jest z obszaru pamięci zwanego deskryptorem segmentu. Zestaw wszystkich deskryptorów to tablica deskryptorów segmentu. Adres początkowy tej tablicy przechowywany jest w dwóch rejestrach mikroprocesora - LDTR i GDTR
Schemat zamiany adresu logicznego na fizyczny w trybie chronionym przebiega w trzech fazach. Najpierw mikroprocesor odczytuje z zawartego w rejestrze segmentowym selektora, z którą tablicą deskryptorów (lokalną czy globalną) ma być skojarzony indeks. Następnie do adresu bazowego tablicy deskryptorów (znajdującego się w rejestrze LDTR lub GDTR) dodawana jest zawartość indeksu pomnożona przez osiem. W ten sposób wyliczany jest adres właściwego deskryptora w odpowiedniej tablicy. Wreszcie z tego deskryptora odczytywany jest trzy bajtowy adres bazowy segmentu: po dodaniu do niego szesnastobitowego offsetu mikroprocesor otrzymuje adres fizyczny.
ZARZĄDZANIE ZASOBAMI PAMIĘCI. STRUKTURA DESKRYPTORA KODU I DANYCH.
Dostęp do pamięci. Zadaniem procesora jest przetwarzanie danych złożonych w pamięci; tam też znajduje się kod realizowanego programu. CPU bardzo intensywnie współpracuje z układami pamięciowymi i bez nich nie może się obejść. Wykonywane operacje mają charakter dwukierunkowy: zapis lub odczyt. Przy zapisie procesor wystawia słowo na magistralę danych a stosowny adres na magistralę adresową. Podczas odczytu końcówki adresowe CPU definiują punkt odniesienia w pamięci a zawartość tej właśnie komórki zdejmowana jest przez procesor z magistrali danych. Nad sprawnym przebiegiem takich operacji czuwają oczywiście różne układy towarzyszące. których rytm pracy wyznaczają sygnały kontrolno-sterujące wytwarzane przez sam procesor. Procesory 16-bitowe pierwszej generacji (począwszy na modelu 8088 a skończywszy na układzie 80186) miały 20 końcówek adresowych. Architektura logiczna wyznaczała podział pamięci na 64 kB segmenty. Mechanizm adresowania składał się z dwóch rejestrów 16-bitowych: jeden określał początek segmentu (Segment) a drugi odległość punktu od tego początku (Offset). Para rejestrów Segment i Offset wyznaczała tzw. adres logiczny. Konieczność dopasowania tej logicznej struktury (16+16) do wymiaru 20-bitowej magistrali adresowej wyznaczyła następujący sposób przeliczenia:
Adres fizyczny = 16 x Segment + Offset Generowany według powyższej formuły adres fizyczny (tutaj 20-bitowy) wystawiany był na magistralę adresową. Powstające z prawej strony dodatkowe pozycje wypełnia się zerami a do uzyskanej w ten sposób liczby 20-bitowej dodaje się zawartość rejestru Offset.
adres liniowy. Stanowi on działania mechanizmu segmentacji w trakcie przetwarzania adresu logicznego. Adres jest liniowy dlatego, ponieważ bezpośredni system adresowania segmentu (w rejestrze segmentowym zawarty jest adres segmentu) gwarantuje, iż segment o adresie wyższym znajduje się fizycznie wyżej w pamięci. Aktywacja przestrzeni wirtualnej powoduje, iż mechanizm stronicowania odwzorowuje adres liniowy w adres fizyczny. Generacja procesorów 16-bitowych wyposażonych w 20-końcówkową magistralę adresową operowała w przestrzeni fizycznej o rozmiarze 1 MB. Procesory 32-bitowe (począwszy od 80386DX) mają już 32 końcówki adresowe co pozwala na pokrycie zakresu 4 GB
Wyróżnić należy trzy podstawowe tryby pracy procesora:
· Tryb rzeczywisty (Real Mode). Procesor 32-bitowy przełącza się w stan odwzorowujący zachowanie jednostki 16-bitowej. Zawartość rejestru segmentowego przesuwana jest o 4 pozycje binarne w lewo i dodawana do zawartości rejestru przesunięcia (l6xSegment + Offset). Wynik stanowi liczbę 20-bitową, która jest po prostu wystawiana na magistralę adresową. Proszę zwrócić uwagę, iż konstrukcja adresu według takiej reguły prowadzi do wieloznaczności. Różne pary liczb Segment:Offset mogą dawać jednakowy wynik i odwoływać się do tej samej komórki pamięci. W trybach chronionych jest to z różnych względów wykluczone.
· Tryb chroniony (Protected Mode). Tryb ten wprowadzony został (począwszy od modelu 80286) w celu ochrony poszczególnych zadań pracujących pod kontrolą wielozadaniowego (nrultitasking) systemu operacyjnego. Całość jest zaimplementowana jako czteropoziomowy system uprawnień. Układy sprzętowe wbudowane w procesor kontrolują odwołania do danych oraz kodu i wydają (lub odmawiają) zezwolenia na dostęp. Wzrost bezpieczeństwa okupuje się stosunkowo dużą komplikacją w obliczaniu adresu.
· Tryb wirtualny procesora 8086 (Virtual 8086 Mode). Tryb dostępny jest w układach rodziny Intel począwszy od modelu 80386. Koncepcja trybu wirtualnego stanowi kombinację dwóch wcześniej omówionych trybów. System operacyjny wykorzystujący tą możliwość pracy stawia do dyspozycji wykonywanych programów bardzo interesujące środowisko. Każdy z programów użytkowych widzi swój własny procesor 8086 pracujący w trybie rzeczywistym. System jako całość dysponuje jednak zaczerpniętymi z trybu chronionego mechanizmami gwarantującymi odpowiedni dobór praw dostępu do zasobów i uniemożliwiającymi wzajemne kolizje pomiędzy współ-uczestniczącymi zadaniami.
Rejestry ogólnego przeznaczenia MP 80386 i ich wykorzystanie.
Rejestry można podzielić na trzy funkcjonalne grupy : ogólnego przeznaczenia, sowe, statusowe i sterujące.
Rejestry ogólnego przeznaczenia:
AX - odpowiednik akumulatora, pamięć tego rejestru jest wykorzystywana przez arytmometr, AX jest rejestrem używanym w operacjach logicznych, arytmetycznych i do odkładania wyników wielu operacji.
BX - rejestr bazowy, służący do adresowania.CX - rejestr zliczający ( jest licznik w pętlach ).DX - rejestr danych, umożliwia przekazywanie i odbieranie danych z portów.SI - rejestr źródła ciągów łańcuchów danych.DI - rejestr przeznaczenia ciągów łańcuchów danych.
SP - wskaźnik stosu.BP - wskaźnik bazy.
15Rejestry sowe MP 80386 i ich przeznaczenie
Procesor 386 ma zespół ośmiu rejestrów 32 - bitowych ogolnego przeznaczenia EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, które mogą przechowywać dane albo adresy. Mymy równierz sześć rejestrów sowych CS, SS, DS., ES, FS i GS. Stosuje się je w połączeniu z adresami zapisanymi w rejestrach ogólnego przeznaczenia lub w rejestrze lub w rejestrze wskaźnika rozkazów (EIP) do uzyskania fizycznego adresu na szynie adresowej. Rejestr CS (s kodu ) z rejestrem wskaźnika rozkazów określa fizyczny adres do pobrania rozkazu, a rejestr SS (s stosu) jest używany do określenia adresu stosu. Inne rejestry sowe stosuje się zwykle do adresacji danych. Każdy z rejestrów sowych jest związany z rejestrem deskryptorów sów, niewidocznych dla programisty. Przy czym :
EAX - Aku EBX - Rej bazowy ECX - r licznika EDX - r danych ESI - Indeks źródłowy EDI - Indeks przeznaczenia ESP - W stosu EBP - W bazowy EIP - W rozkazuEFL - Znacznik stanu CS - S kodu SS - S stosuDS - S danych ES FS GS - S danych Architektura von Neumanna
Posiada skończoną i funkcjonalną listę rozkazów
Posiada ALU, urządzenia wejścia / wyjścia, pamięć (dane i program razem)
Posiada możliwość wprowadzenia programu z zewnątrz i przechowywania go wraz z danymi w pamięciu
Procesor ma jednakowy dostęp do instrukcji i danych
Instrukcje są wykonywane sekwencyjnie
Pierwsza architektura ogólnego przeznaczenia
Stworzona wspólnie z Eckertem i Mauchlym (1945)
Architektura Harvardzka
W odróżnieniu od AVN, dane i program znajdują się w osobnych pamięciach
Dzięki temu jest szybsza
Architektura
Atrybuty systemu widzialne dla programisty, mające wpływ na logiczne wykonywanie programu
Przykładowe atrybuty architektury: lista rozkazów, ilość bitów na dany typ, metody adresowania, mechanizmy wejścia-wyjścia
Architektura określa np. czy w komputerze występuje rozkaz mnożenia
Organizacja
Odnosi się do jednostek operacyjnych i połączeń, stanowiących realizację danej architektury
Rozwiązania sprzętowe niewidoczne dla programisty
Przykładowe atrybuty: sygnały sterujące, interfejs komputer - urządzenia peryferyjne, technologia pamięci
Organizacja określa np, co realizuje op mnożenia