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臋ci
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 operacje mno偶enia
Taksonomia Flynna Klasyfikacja system贸w r贸wnoleg艂ego przetwarzania danych:
SISD |
Single instruction, single data. Pojedynczy procesor obs艂uguje pojedynczy strumie艅 rozkaz贸w operuj膮c na danych zapisanych w pojedynczej pami臋ci - komputery jednoprocesorowe |
SIMD |
Single instruction, multiply data. Pojedynczy rozkaz maszynowy steruje dzia艂aniem wi臋kszej grupy element贸w przetwarzaj膮cych. Ka偶dy element posiada w艂asn膮 pami臋膰. Ka偶dy rozkaz jest wykonywany na r贸偶nych zbiorach danych przez r贸偶ne procesory. Procesory wektorowe i tablicowe. GPU. |
MISD |
Multiply instruction, single data. Wiele rozkaz贸w jest wykonywanych przez wiele procesor贸w na tym samym zbiorze danych. Nie zaimplementowano komerycjnie. |
MIMD |
Multiply instruction, multiply data. Wiele procesor贸w r贸wnocze艣nie wykonuje r贸偶ne rozkazy, na r贸偶nych danych. Implementacja w SMP, klastrach i NUMA. |
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 innego 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 - dodatkowa 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, stosowany 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
Rejestry:
Adresowanie:
Cykle
Dla sta艂ych i rejestr贸w
Watchdog - uk艂ad chroni膮cy mikroprocesor przed zbyt d艂ugim przebywaniem w stanie zawieszenia, implementowany jako dekrementuj膮cy si臋 licznik, odnawiany co jaki艣 czas przez mikroprocesor, je艣li mikroprocesor nie odnowi warto艣ci licznika i ten odliczy do zera, nast臋puje zresetowanie uk艂adu
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艣膰 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
Tryby Adresowania
natychmiastowy
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
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
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
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
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
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.
rejestrowy (i rejestrowy po艣redni)
bazowy
DMA
jest to bezpo艣redni dost臋p do pami臋ci, bez anga偶owania procesora.
wymaga dodatkowego modu艂u na magistrali systemowej
udaje procesor i w rzeczywisto艣ci przejmuje od procesora sterowanie systemem
modu艂 DMA dzia艂a na zasadzie wykradania cyklu procesora. Procesor zleca modu艂owi DMA operacje we/wy, a sam wykonuje inne operacje. Gdy transfer jest zako艅czony, modu艂 DMA wysy艂a sygna艂 przerwania do procesora. Dzi臋ki temu procesor jest anga偶owany tylko na pocz膮tku i na ko艅cu transferu.
ma za zadanie odci膮偶y膰 procesor g艂贸wny od samego przesy艂ania danych z miejsca na miejsce
Gdy procesor wydaje rozkaz modu艂owi wej艣cia-wyj艣cia, musi poczeka膰 na zako艅czenie operacji wej艣cia-wyj艣cia. Je艣li procesor jest szybszy ni偶 modu艂 wej艣cia-wyj艣cia, oznacza to strat臋 czasu procesora.
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
篓 przetwarzanie potokowe stanowi pewn膮 technik臋 wykonywania rozkaz贸w etapami, co umo偶liwia przyspieszenie pracy procesora; przetwarzanie potokowe rozkaz贸w jest podobne do u偶ycia linii monta偶owej w zak艂adzie produkcyjnym — mo偶liwa jest jednoczesna praca nad wyrobami w r贸偶nych stadiach produkcji; w potoku na jednym ko艅cu przyjmowane s膮 nowe elementy wej艣ciowe, zanim jeszcze elementy poprzednio przyj臋te uka偶膮 si臋 na wyj艣ciu;
篓 przetwarzanie potokowe jest stosowane w r贸偶nych typach procesor贸w, zar贸wno o architekturze CISC (Motorola 68K, Pentium), jak i w procesorach o zredukowanej liczbie rozkaz贸w (RISC); jednak uzyskanie przyspieszenia wymaga przygotowania odpowiedniego kodu przez kompilatory, kt贸re w przypadku architektury CISC zazwyczaj nie uwzgl臋dniaj膮 specyfiki przetwarzania potokowego;
篓 mo偶na przyj膮膰, 偶e ka偶dy etap zajmuje jeden cykl zegarowy; procesor przyjmuje nowy rozkaz do potoku po ka偶dym cyklu zegara, po czym rozkaz przechodzi kolejno przez poszczeg贸lne etapy; taka realizacja nie skraca czasu wykonywania rozkazu, ale zwi臋ksza ca艂kowit膮 przepustowo艣膰, powoduj膮c zako艅czenie jednego rozkazu po ka偶dym cyklu zegara;
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
Kod horyzontalny / wertykalny
Wertykalny(pionowy)- rozbudowany聽dekoder聽i聽minimalne聽s艂owo聽instrukcji!
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
Kernel
- 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 ( WTF ? :P ).
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
Rodzaje Sterownik贸w
( do uzupe艂nienia , bo te informacje z jego wyk艂adu to jaka艣 qpa jest ).
Linuch:
Character Devide Drivers - sterowniki urz膮dze艅 sekwencyjnych.
Block Device Drivers - sterowniki urz膮dze艅 blokowych.
Network Device Drivers - chyba nie musz臋 pisa膰.
Windows:
Dos - sterownik to plik wykonywalny pracuj膮cy w trybie rzeczywistym
MS Windows (nak艂adka na Dos) - sterowniki to wykonywalne pliki .drv
Windows 3.x - pojawienie si臋 koncepcji maszyny wirtualnej, pliki VxD ( Virtual Device Driver )
XP - WDM ( Windows Driver Model ).
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. Generalnie cech膮 kt贸ra tak mocno wyr贸偶nia pami臋膰 „SRAM” jest to , 偶e nie wymaga ona od艣wie偶ania. SRAM, aby okre艣li膰 warto艣膰 danej z kom贸rek pami臋ci, wykorzystuj膮 tranzystory. Tranzystory nie maj膮 艂adunku elektrycznego, kt贸ry trzeba by 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.
BIOS
BIOS to zapisany w pami臋ci sta艂ej, inny dla ka偶dego typu p艂yty g艂贸wnej komputera, zestaw podstawowych procedur po艣rednicz膮cych pomi臋dzy systemem operacyjnym a sprz臋tem. W wypadku p艂yty g艂贸wnej BIOS testuje sprz臋t po w艂膮czeniu komputera, przeprowadza tzw. POST ("Power On Self Test"), zajmuje si臋 wst臋pn膮 obs艂ug膮 urz膮dze艅 wej艣cia/wyj艣cia, kontroluje transfer danych pomi臋dzy komponentami takimi jak dysk twardy, procesor czy nap臋d CD-ROM. Inicjuje program rozruchowy.
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
Przerwanie- sygna艂 powoduj膮cy zmian臋 przep艂ywu sterowania, niezale偶nie od aktualnie wykonywanego programu. Pojawienie si臋 przerwania powoduje wstrzymanie aktualnie wykonywanego programu i wykonanie przez procesor kodu procedury obs艂ugi przerwania, kt贸ra ma wy偶szy priorytet ni偶 nasz program,
1) Za3manie wykonania programu
2) Odk艂adana jest warto艣膰 rejestru PC na stos
3) PC przyjmuje now膮 warto艣膰 04h
4) Procedura obs艂ugi przerwania ko艅czy si臋 instr.RETFIE
a)sprz臋towe
wyj膮tki- zdarzenia o najwi臋kszym znaczeniu dla dzia艂ania programu. Nie mo偶na ich od艂o偶y膰 na p贸藕niej. Musz膮 by膰 obs艂u偶one. Na przyk艂ad b艂膮d dzielenia przez 0 lub przerwanie niemaskowalne.
Maskowalne przerwania sprz臋towe-pochodz膮 od urz膮dze艅 peryferyjnych. Mog膮 by膰 blokowane i mog膮 mie膰 r贸偶ne priorytety. Np. przerwanie od uk艂adu Timera czy klawiatury
b) programowe
Przerwania programowe-programista sam umieszcza w programie instrukcje wywo艂ania przerwania. Wykorzystywane czasem do zapewnienia wsparcie sprz臋towego dla priorytet贸w wykonania pewnych fragment贸w kodu lub cz臋艣ciej do implementacji funkcji systemowych (np.. BIOS).
Pu艂apki (traps) - stosowane do 艣ledzenia wykonania programu w fazie testowania.
12