przypisanie różnym strukturom programowym tych samych obszarów pamięci fizycznej



Podobne dokumenty
przypisanie różnym strukturom programowym tych samych obszarów pamięci fizycznej

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Zarządzanie pamięcią operacyjną

dr inż. Jarosław Forenc

Architektura komputerów

Architektura komputerów

architektura komputerów w. 8 Zarządzanie pamięcią

Zarządzanie pamięcią w systemie operacyjnym

Systemy operacyjne III

Architektura komputerów

Schematy zarzadzania pamięcia

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Zarządzanie pamięcią operacyjną

Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Od programu źródłowego do procesu

Architektura komputerów

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Zarządzanie zasobami pamięci

Logiczny model komputera i działanie procesora. Część 1.

System pamięci. Pamięć podręczna

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Wykład 7. Zarządzanie pamięcią

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Przykładowe pytania DSP 1

Architektura komputerów

Stronicowanie w systemie pamięci wirtualnej

Organizacja typowego mikroprocesora

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Mikroprocesory rodziny INTEL 80x86

Struktura i działanie jednostki centralnej

System pamięci. Pamięć podręczna

ARCHITEKTURA PROCESORA,

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Technologie Informacyjne

Pamięć wirtualna. Jan Tuziemski Źródło części materiałów: os-book.com

System plików przykłady. implementacji

Mikrokontroler ATmega32. Język symboliczny

4. Procesy pojęcia podstawowe

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

System plików przykłady implementacji

System plików. Warstwowy model systemu plików

dr inż. Jarosław Forenc

dr inŝ. Jarosław Forenc

Architektura komputerów

Działanie systemu operacyjnego

, " _/'--- " ~ n\l f.4e ' v. ,,v P-J.. ~ v v lu J. ... j -:;.",II. ,""", ",,> I->~" re. dr. f It41I r> ~ '<Q., M-c 'le...,,e. b,n '" u /.

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

4. Procesy pojęcia podstawowe

System pamięci. Pamięć wirtualna

Działanie systemu operacyjnego

Pamięci półprzewodnikowe w oparciu o książkę : Nowoczesne pamięci. Ptc 2013/

Magistrala systemowa (System Bus)

Systemy Operacyjne Pamięć wirtualna cz. 2

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

Działanie systemu operacyjnego

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Rys. 1. Podłączenie cache do procesora.

dr inż. Jarosław Forenc

System pamięci. Pamięć wirtualna

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Dotyczy jednostek operacyjnych i ich połączeń stanowiących realizację specyfikacji typu architektury

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

architektura komputerów w. 7 Cache

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Systemy operacyjne System plików

Arytmetyka binarna - wykład 6

Podstawowe zadanie komputera to wykonywanie programu Program składa się z rozkazów przechowywanych w pamięci Rozkazy są przetwarzane w dwu krokach:

Pamięci półprzewodnikowe

LEKCJA TEMAT: Zasada działania komputera.

System pamięci. Pamięć wirtualna

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Zarządzanie pamięcią operacyjną i pamięć wirtualna

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Pamięci półprzewodnikowe na podstawie książki: Nowoczesne pamięci

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

Kod U2 Opracował: Andrzej Nowak

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Temat: Pamięci. Programowalne struktury logiczne.

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Stan wysoki (H) i stan niski (L)

Transkrypt:

1 Arytmetyka 1.1 Reprezentacja danych 1.1.1 Kod znak moduł Intuicyjną metodą reprezentacji liczb całkowitych jest osobne kodowanie znaku + albo - i wartości bezwzględnej liczby. Kod 0... reprezentuje liczbę dodatnią, 1... liczbę ujemną. Zero można przedstawić jako +0 (00..00) lub -0 (10..00). 1.1.2 Kod U2 Aby uzyskać reprezentację w kodzie U2 liczby przeciwnej do liczby o kodzie np. 0100 1011 = 76 10, wykorzystujemy algorytm negowania bitów i dodania 1. 1.1.3 Kod ASCII Ze względu na początkowe bity (najwyższe) kodu ASCII mamy: Kody znaków sterujących 000b bbbb oraz 0111 1111 Kody liczb dziesiętnych 0011 bbbb gdzie bbbb jest dwójkowym kodem wartości liczby Kody liter alfabetu (małe) 011b bbbb gdzie b bbbb jest dwójkowym kodem nru. porządkowego w alfabecie Kody liter alfabetu (duże) 010b bbbb gdzie b bbbb jest dwójkowym kodem nru. porządkowego w alfabecie 1.1.4 Kod spolaryzowany +N Zapis spolaryzowany z przyjętym N = 2 n 1 1 powoduje, że gdyby bity z tego zapisu traktować jako NKB, od liczby dziesiętnej odejmujemy N, otrzymując naszą liczbę. Np. 1100 1001 = 201 +127 = (201 127) 2 = 73 2. 1.2 Arytmetyka zmiennoprzecinkowa 1.2.1 Normalizacja wyniku operacji zmiennoprzecinkowej Skutkiem normalizacji wyniku mnożenia może być nadmiar (niedomiar) lub usunięcie pozornego niedomiaru (nadmiaru), w zależności od potęgi w podstawie β. Skutkiem normalizacji wyniku dzielenia może być wystąpienie nadmiaru, niedomiaru bądź uzyskanie w wyniku nieskończoności. Skutkiem normalizacji wyniku dodawania lub odejmowania może być wystąpienie nadmiaru, niedomiaru bądź utrata dokładności wyniku. 2 Pamięć 2.1 Zarządzanie pamięcią 2.1.1 Pamięć wirtualna Zaniechanie bezpośredniego odwzorowania adresów logicznych używanych w programie na adresy fizyczne w pamięci głównej prowadzi do koncepcji pamięci wirtualnej. Brak stałych powiązań między logiczną i fizyczną strukturą pamięci umożliwia: przypisanie różnym strukturom programowym tych samych obszarów pamięci fizycznej łatwą realizację mechanizmów zarządzania pamięcią Translacja adresu wirtualnego na rzeczywisty wymaga relokacji bloków pamięci. Najprostszym mechanizmem translacji, który może być użyty gdy rozmiar pamięci wirtualnej jest mniejszy niż rozmiar pamięci rzeczywistej, jest relokacja. Polega ona na sumowaniu adresu wirtualnego i wektora relokacji pobranego z rejestru relokacji. Wyklucza on dzielenie zasobów pamięci (dla jednego procesu jest określony jeden wektor relokacji). Możliwa jest jednak ochrona zasobów przez porównanie adresu wirtualnego z zakresem jego zmienności, deponowanym w dodatkowym rejestrze ochrony. 1

Jednoczesna ochrona i dzielenie zasobów możliwe są podczas stronicowania lub segmentacji (możliwe jest jednoczesne stosowanie obu tych metod translacji adresu), które umożliwiają odwzorowanie większej wirtualnej przestrzeni adresowej w mniejszą rzeczywistą przestrzeń adresową. Cechą wspólną segmentacji i stronicowania jest adresowanie deskryptorowe. Adres wirtualny zawiera wskaźnik opisu adresu rzeczywistego umieszczonego w tablicy opisów oraz adres lokalny, określający względne położenie obiektu w segmencie lub na stronie (przemieszczenie adresu rzeczywistego względem adresu odniesienia). W stronicowaniu pamięci cały obszar pamięci rzeczywistej dzieli się na bloki o identycznym rozmiarze, zwane stronami, których typowym rozmiarem jest obecnie 4 kb przy 32-bitowych adresach rzeczywistych. Alternatywnie stosować można rozwiązanie integracji stron w bloki o rozmiarze 2 K. W segmentacji cały obszar pamięci rzeczywistej jest podzielony na bloki zwane segmentami o rozmiarach odpowiadających logicznym strukturom danych programu, definiowanych w przestrzeni adresów wirtualnych. 2.1.2 Różne obliczenia Rozmiar zbioru roboczego: ilość stron * rozmiar strony (bajtów) Wirtualna przestrzeń adresowa procesora m-bitowego: 2 (rozmiar ident. procesu bity uprawnień+m) bajtów Ilość różnych procesów: przestrzeń wirtualna / 2 m Ilość deskryptorów TLB: ilość stron Rozmiar skrótu adresu wirtualnego: ilość stron (rozmiar w bitach) Rozmiar tablicy TLB: ilość deskryptorów * rozmiar deskryptora 2.1.3 Pełna tablica stron Deskryptor w pełnej tablicy stron zawiera bit obecności, kod praw dostępu, numer segmentu wirtualnego i jego adres. 2.1.4 Odwrócona tablica stron Wykorzystywania do zmniejszenia rozmiaru tablicy, zawiera jeden wpis dla każdej strony rzeczywistej, który obejmuje znacznik strony (skrót wirtualnego adresu strony), numer strony wirtualnej i jej adres. 2.2 Organizacja pamięci Ze względu na sposób dostępu do danych wyróżnia się trzy rodzaje pamięci: pamięć o dostępie swodobnych (RAM) stały czas dostępu do danych pamięć tylko do odczytu (ROM) PROM pamięć programowalna EPROM pamięć kasowana promieniowaniem UV EEPROM pamięć kasowana silnym impulsem elektrycznym pamięć do odczytu-zapisu (RAM) DRAM pamięć dynamiczna SRAM pamięć statyczna NVRAM pamięć nieulotna (nie niszczona dzięki dodatkowemu zasilaniu) pamięć o dostępie sekwencyjnym (SAM) czas dostępu do danej zależy od jej położenia pamięci optyczne (nośniki CD) pamięci magnetyczne (dyski twarde, dyskietki) pamięć adresowana zawartością (CAM), zwana też pamięcią asocjacyjną 2

rejestry pamięć główna pamięć wtórna archiwum czas dostępu 0.5 5 ns 20 120 ns 1 15 ms pojemność 128 1024 B 16 256 MB 1 40 GB > 100 GB pobór mocy duży mały bardzo mały bardzo mały Tablica 1: Hierarchia pamięci jednopoziomowej 2.2.1 Hierarchia pamięci jednopoziomowej 2.2.2 Skuteczność buforów cache Ilościowa ocena skuteczności: współczynnik trafień h współczynnik chybień m = 1 h t mp średnia strata czasu w razie chybienia Średni czas dostępu do pamięci: w pamięci jednopoziomowej t a = (1 m)t ca + m(t ram + t mp ) w pamięci dwupoziomowej t a = (1 m 1 )t cal + (m 1 m 2 )(t ca2 + t mp1 ) + m 2 (t ram + t mp1 + t mp2 ) 2.2.3 Linia adresowa Jeśli linia zawiera 2 k bajtów, to tylko część adresu fizycznego jest użyta jako identyfikator adresu linii, a pozostałe k bitów adresu służy do identyfikacji bajtów. Rozmiar linii powinien być dostosowany do możliwości szybkich transferów danych. Czas wyszukiwania w buforze log 2 N, optymalna ilość linii bufora to N = 2 n linii. Bufor pamięci podręcznej ma rozmiar C = s N, gdzie N to liczba, a s rozmiar linii. Jeśli szerokość magistrali danych wynosi 2 k bajtów, a transfer blokowy jest zestawieniem 2 m (zwykle 4) transferów całą szerokością magistrali, to linia powinna zawierać 2 k 2 m = 2 k+m bajtów. Z drugiej strony, liczba linii w pamięci podręcznej powinna umożliwić skopiowanie kilkunastu (najlepiej 2 N ) stron o rozmiarze 2 P bajtów każda. Linia zawiera zwykle 4, 8 lub q6 słów (16/32/6B), liczba linii wynosi od 2 7 do 2 1 5. 2.2.4 Charakterystyka pamięci podręcznej Pojemność bufora: ilość linii * rozmiar linii (bajty) Ilość bloków: ilość linii / drożność (2 b ) Identyfikator linii: rozmiar adresu fizycznego - rozmiar bloków (b) - rozmiar słowa - 1 W odwzorowaniu bez przeplotu, linie podzbioru pamięci głównej tworzą spójne obszary o rozmiarze 2 K+N, gdzie 2 K jest rozmiarem linii, zaś 2 N liczbą podzbiorów linii (liczbą bloków). W odwzorowaniu w przeplotem, podzbiór tworzą linie których adresy (etykiety) różnią się o 2 K+N. 2.2.5 Strategie wypełniania pamięci Zapis może być poprzedzony kopiowaniem nieobecnej linii (allocate on write), ale nie musi (no allocate on write). Organizacja całkowicie skojarzeniowa Linia pamięci może być kopiowana do jednej dowolnej lokacji pamięci podręcznej. W celu identyfikacji linii w pamięci podręcznej należy porównać adres tej linii z wszystkimi etykietami adresowymi, co komplikuje układ porównania i wydłuża czas kojarzenia. Zaletą pamięci całkowicie skojarzeniowej jest brak konfliktu odwzorowania (największy współczynnik trafień, zależny tylko od rozmiaru i liczby linii). Organizacja z odwzorowaniem bezpośrednim Zaletą pamięci z odwzorowaniem bezpośrednim jest najkrótszy czas kojarzenia. Adres linii porównywany jest tylko z jedną etykietą adresową, wskazaną przez rekord indeksujący adresu, odpowiadający numerowi linii pamięci głównej w zbiorze linii. W pamięci z odwzorowaniem bezpośrednim, linii pamięci jest przypisana lokacja w pamięci podręcznej. Jeśli dwie linie ze zbioru roboczego programu należą do tego samego zbioru skojarzeń, to wystąpi zjawisko migotania 3

(trashing) naprzemianna wymiana tych linii której skutkiem są chybienia oraz zmniejszenie współczynnika trafień i wydłużenie czasu dostępu. Organizacja wielodrożna Pamięć wielodrożna jest rozwiązaniem kompromisowym. W danym podzbiorze linii takiego bufora mogą być kopiowane tylko linie skojarzonego z nimi podzbioru linii pamięci głównej. Identyfikacja po części adresu zwaną rekordem indeksującym, dzięki czemu poszukiwanie linii jest zawężone do podzbioru wskazanego indeksem, mamy rzadsze konflikty, osłabione jest zjawisko migotania i rośnie współczynnik trafień. 2.2.6 Model zbioru roboczego 1. Lokalność czasowa oznacza tendencję do powtarzania odwołań, realizowanych w niedawnej przeszłości. 2. Lokalność przestrzenna oznacza tendencję do odwołań do obiektów umieszczonych w obszarze adresowym obejmującym obiektu, które były już użyte w programie. 2.2.7 Strategie pobierania informacji Udostępnienie (czyli pobranie) informacji w celu jej użycia może być realizowane jako pobranie planowane w chwili ustanawiania procesu, pobranie wymuszone na skutek błędu braku obiektu (np. braku strony lub segmentu) oraz pobranie antycypowane na podstawie prognozy zapotrzebowania procesu na dane. Realizacja tego ostatniego jest bardzo trudna w segmentacji, ponieważ segmenty to niezależne jednostki logiczne, a ich zbiór nie okazuje lokalności przestrzennej. Dodatkowym problemem jest zmienny rozmiar segmentu, co znakomicie utrudnia planowanie przydziału pamięci. 2.2.8 Strategie przydzielania linii Aby uniknąć wymiany pamięci podczas przełączania procesów, jednemu procesowi jest przydzielana tylko część adresowalnego obszaru pamięci głównej zwana partycją. Obszar taki może być spójny (o ciągłym adresowaniu) lub podzielony na kilka bloków. Jeśli rozmiar pamięci udostępnionej procesom jest mniejszy od sumy potrzeb, konieczna jest wymiana przydzielanych bloków. Wyróżniamy partycję stałą, tj. taką o stałym w czasie życia procesu rozmiarze bloku (łatwa implementacja, nieefektywna przy procesach o dużej zmienności lokalności), oraz zmienną o dynamicznym przydziale pamięci, odpowiednio do aktualnych potrzeb procesu (trudniejsza do implementacji, umożliwiają relokację części pamięci przydzielonej innemu procesowi). Strategia przydziału powinna nie tylko minimalizować rozmiar dziur powstałych podczas wymiany linii (ze względu na fragmentację pamięci), ale także uwzględniać koszt relokacji. Najczęściej stosowane metody przydziału, dzięki którym możliwe jest efektywne usuwanie powstałych dziur z listy, to: BF najlepsze wpasowanie uporządkowanie według rosnących rozmiarów dziur, prowadzi do powstania w pamięci wielu bezużytecznych małych dziur WF najgorsze wpasowanie uporządkowanie według malejących rozmiarów dziur, statystycznie równoważna strategii WF FF pierwsze wpasowanie uporządkowanie według rosnących adresów, zasadniczą wadą jest kumulacja dziur o małym rozmiarze na początku listy BB wpasowanie binarne konieczne jest utworzenie wielu list i weryfikacji dwóch przy każdej wymianie 2.2.9 Strategie wymiany stron dla partycji stałych Dla partycji stałych stosowanymi strategiami wymiany są FIFO, gdzie kolejka stron do wymiany jest ustawiona w kolejności ich umieszczania w pamięci (nie uwzględnia intensywności używania stron), LRU, w której wymienia się stronę najdawniej używaną (wymaga użycia etykiet czasowych i indeksacji kolejności referencji). W przypadku strategii LRU stosujemy algorytmy przybliżone, tj. algorytm dodatkowych bitów odwołań (cykliczny łańcuch odniesień, przesuwanie bitu w lewo co określony czas) oraz algorytm drugiej szansy (zmodyfikowane FIFO, tj. FINUFO). 4

2.2.10 Strategie wymiany stron dla partycji zmiennych Partycje zmienne są nieco trudniejsze w realizacji od partycji stałych, ale umożliwiają dynamiczne zmiany obszaru przydzielonej pamięci. Wyróżniamy strategie dla pamięci stronicowanych oraz segmentowanych. Dla stronicowanych wyróżniamy: WS strategia globalna, w której występuje wymiana całego zbioru roboczego; przyjmuje się, że zbiór roboczy tworzą wszystkie strony, do których nastąpiło d ostatnich lub wszystkie odwołania w ustalonym przedziale czasu między kolejnymi wywłaszczeniami procesu (po każdym planowym wznowieniu procesu następuje korekcja rozmiaru); PFF stosownie do częstości błędu braku strony, ustalamy wartości progowe min i max i jeśli częstość błędy jest mniejsza od wartości minimalnej, to pomniejszamy rozmiar partycji o wszystkie strony nieużywane od ostatniej wymiany, jeśli zaś większe od wartości maksymalnej, to wstrzymana jest wymiana stron, a rozmiar partycji zostaje zwiększony; Partycje zmienne są bardzo trudne do stosowania, jeśli używana jest segmentacja, bo rozszerzenia musiałyby mieć rozmiar segmentu, który nie jest stały. W praktyce ustala się rozmiar partycji równy wielokrotności standardowego rozmiaru segmentu lub jego połowy (zwykle 32 lub 64 KB), choć problem można rozwiązać stosując segmentację stronicową. 2.2.11 Obsługa linii Unieważnienie linii następuje przed pierwszym wypełnieniem (linie nie wypełnione) wskutek zewnętrznej zmiany oryginału danych w pamięci głównej wskutek przełączania procesów Wypełnianie linii oraz wymiana linii następuje wskutek chybienia podczas odczytu wskutek chybienia (w trybie allocate on write) podczas zapisu Podczas odczytu danej trafienie powoduje brak zmian stanu linii chybienie uruchamia procedurę wypełniania linii i powoduje przestój potoku Podczas zapisu danej wskutek trafienia * wykonujemy zapis skrośny modyfikacja kopii w buforze wyższego poziomu * wykonujemy zapis lokalny + opóźniony zapis do bufora wyższego poz. podczas usuwania linii * wykonujemy unieważnienie linii trafionej i zapis bezpośredni do p. głównej lub bufora w. poz. wskutek chybienia no allocate on write zapis do pamięci głównej lub bufora poziomu wyższego allocate on write wypełnienie i zapis 3 Przepływ sterowania 3.1 Obszar bloku aktywacji na stosie funkcje W tym obszarze stosu znajdują się: parametry bezpośrednie przekazane przez funkcję wywołującą parametry implikowane (tworzone automatycznie) wskaźnik powiązania statycznego funkcji nadrzędnej wskaźnik powiązania dynamicznego funkcji nadrzędnej adres powrotu kontekst funkcji wywołującej (słowo procesora PSW i zawartość rejestrów) dane lokalne 5

3.2 Kontekst procesora i procesu Kontekst procesora obejmuje rejestr stanu, licznik programu, rejestry ogólne, rejestry sterujące i połączenia do procesów współpracujących. 3.2.1 Kontekst procesu Blok sterujący procesu zawiera informacje identyfikując proces, obejmujące: identyfikator procesu priorytet i informacje o harmonogramie wykonania procesu rozmiar i lokalizacja przydzielonej pamięci wskaźnik kontekstu procesora wskaźnik kontekstu pamięci 3.3 Przerwania Przełączanie procesów jest inicjowane przez przerwanie wewnętrzne lub zewnętrzne. Nie wszystkie są jednakowo ważne, więc mamy priorytety przerwań (H high, M medium, L low). Przerwania najwyższego rzędu (H) muszą być bezzwłocznie obsłużone. Przerwania poziomu pośredniego (M) muszą być obsłużone bez opóźnień Odłożenie obsługi przerwania poziomu najniższego (L) grozi tylko zmniejszeniem przepustowości systemu lub opóźnieniem wykonania procesu. Z uwagi na hierarchię przerwań i potrzebę synchronizacji procesów ich obsługi z innymi procesami, niezbędna jest kontrola możliwości zgłoszenia. Takie sterowanie można zrealizować za pomocą mechanizmów maskowania przerwań i odkładania obsługi. Najprostszy sposób maskowania polega na blokowaniu wszystkich przerwań danej klasy, z tym, że przerwania z klasy H są przerwaniami niemaskowalnymi, zatem częściej stosujemy odkładanie przerwań, aczkolwiek odkładanie przerwań krytycznych ze względu na czas obsługi poziomu M może powodować takie same skutki jak ich ignorowanie. Choć zgłoszenia przerwań mogą być asynchroniczne, to ich obsługa musi być synchroniczna. Wyróżniamy przerwania precyzyjne i nieprecyzyjne. Przerwania precyzyjne ich obsługa może rozpocząć się dopiero po zakończeniu instrukcji, podczas której nastąpiło zgłoszenie i wszystkich instrukcji ją poprzedzających. Mogą być inicjowane zdarzeniami zewnętrznymi albo być skutkiem wykonania instrukcji. Jest ono skutkiem: wytworzenia błędnego wyniku (wyjątek programowy) naruszenia reguł ochrony niemożliwego wykonania instrukcji (np. brak strony na dysku) wstrzymania instrukcji sygnalizacji żądania obsługi we/wy Nie zablokowanie przerwania precyzyjnego skutkuje zatrzymaniem potoku. Przerwania nieprecyzyjne ich obsługa rozpoczyna się natychmiast po zgłoszeniu, bez względu na stan procesu. Mają one charakter katastroficzny i są zwykle związane z błędem sprzętu albo zerowaniem systemu. 4 Przetwarzanie potokowe 4.1 Rozwiązywanie konfliktów przetwarzania W sekwencyjnym przetwarzaniu programu przyczyną zakłóceń są przerwania lub wyjątki, które wymuszają wstrzymanie wykonania programu w celu obsługi tych zdarzeń. Przyczyny blokady potoku można podzielić na trzy zasadnicze grupy - konflikt sterowania, konflikt danych i konflikt strukturalny. 6

4.1.1 Konflikt strukturalny Konflikt strukturalny, nazywany też konfliktem zasobu lub konfliktem dostępu może przejawiać się jako konflikt dostępu do pamięci podręcznej (w wyniku żądania dostępu do 2 linii jednocześnie), konflikt wydłużonego dostępu do pamięci (chybienie), konflikt dostępu do pliku rejestrowego (jednoczesne żądania użycia rejestrów pliki), konflikt przedłużonego wykonania instrukcji złożonej. 4.1.2 Konflikt danych Sposoby łagodzenia lub eliminacji konfliktów zależą od typu zależności. Wyróżnia się cztery rodzaje komfliktów: RAR odczyt po odczycie; wymagane umożliwienie dwuportowego odczytu rejestrów RAW odczyt po zapisie; skrót na ścieżkach przepływu danych WAR zapis do odczycie; przemianowanie rejestrów, ze względu na destruktywność operacji zapisu WAW zapis do zapisie; jak wyżej - przemianowanie rejestrów 4.1.3 Konflikt sterowania Konflikty sterowania można minimalizować na podstawie prognozy rozgałęzienia (skoku). Prognoza może być statyczna oparta na identyfikacji kodu rozkazu, lub dynamiczna oparta na historii przetwarzania. Straty wywołane przez rozgałęzienia warunkowe można zmniejszać metodami programowymi (przyspieszenie chwili wytworzenia warunku przez zmianę sekwencji rozkazów) lub sprzętowymi. Prognoza statyczna jest oparta na rozpoznawaniu skoków bezwarunkowych lub warunkowych i polega na dwóch regułach statystycznych: Prawo 90/10 około 90% rozgałęzień warunkowych w tył jest wykonywanych Prawo 50/50 szanse wykonania i niewykonania rozgałęzienia warunkowego do przodu są jednakowe Nie jest ona skuteczna dla skoku warunkowego i skoku pośredniego. Prognoza dynamiczna jest oparta na analizie szansy wykonania rozgałęzienia na podstawie dotychczasowej historii jego wykonania. Etykieta szansy skoku jest przypisana adresowi docelowemu skoku, więc układ dynamicznej prognozy rozgałęzień musi zawierać rejestr wcześniejszych rozgałęzień, zwany buforem prognozy BTB. Przechowuje on etykietę szansy (bit prognozy statycznej) oraz adres instrukcji docelowej skoku. Bufor ten jest aktualizowany po wykonaniu każdego skoku warunkowego. Jest ona weryfikowana w trakcie dekodowania i może być połączona z prognozą statyczną. 5 Architektura 80x86/Pentium 5.1 Lista rozkazów jednostki MMX Jednostka MMX operuje na argumentach 64-bitowych i używa rejestrów pliku zmiennoprzecinkowego, lecz w trybie dostępu swobodnego a nie sekwencyjnego jak FPU. Podczas wykonywania działań MMX rejestry stosu są nazywane MM# (numery od 0 do 7), a dla każdego działania jeden z operandów może być umieszczony w pamięci. Rozkazy MMX operują na 8-, 16- lub 32-bitowych rekordach słowa podwójnej długości (64-bitowego), wykonując wskazane działanie współbieżnie na wszystkich rekordach. Argumentu rozkazów MMX są zawsze traktowane jako stałoprzecinkowe. 7

Spis treści 1 Arytmetyka 1 1.1 Reprezentacja danych........................................... 1 1.1.1 Kod znak moduł.......................................... 1 1.1.2 Kod U2............................................... 1 1.1.3 Kod ASCII............................................. 1 1.1.4 Kod spolaryzowany +N...................................... 1 1.2 Arytmetyka zmiennoprzecinkowa..................................... 1 1.2.1 Normalizacja wyniku operacji zmiennoprzecinkowej....................... 1 2 Pamięć 1 2.1 Zarządzanie pamięcią............................................ 1 2.1.1 Pamięć wirtualna.......................................... 1 2.1.2 Różne obliczenia.......................................... 2 2.1.3 Pełna tablica stron......................................... 2 2.1.4 Odwrócona tablica stron...................................... 2 2.2 Organizacja pamięci............................................ 2 2.2.1 Hierarchia pamięci jednopoziomowej............................... 3 2.2.2 Skuteczność buforów cache.................................... 3 2.2.3 Linia adresowa........................................... 3 2.2.4 Charakterystyka pamięci podręcznej............................... 3 2.2.5 Strategie wypełniania pamięci................................... 3 2.2.6 Model zbioru roboczego...................................... 4 2.2.7 Strategie pobierania informacji.................................. 4 2.2.8 Strategie przydzielania linii.................................... 4 2.2.9 Strategie wymiany stron dla partycji stałych.......................... 4 2.2.10 Strategie wymiany stron dla partycji zmiennych......................... 5 2.2.11 Obsługa linii............................................ 5 3 Przepływ sterowania 5 3.1 Obszar bloku aktywacji na stosie funkcje................................ 5 3.2 Kontekst procesora i procesu....................................... 6 3.2.1 Kontekst procesu.......................................... 6 3.3 Przerwania................................................. 6 4 Przetwarzanie potokowe 6 4.1 Rozwiązywanie konfliktów przetwarzania................................. 6 4.1.1 Konflikt strukturalny....................................... 7 4.1.2 Konflikt danych.......................................... 7 4.1.3 Konflikt sterowania......................................... 7 5 Architektura 80x86/Pentium 7 5.1 Lista rozkazów jednostki MMX...................................... 7 Ostatnia aktualizacja: 16 czerwca 2010, 22:30 8