338

Szczegóły
Tytuł 338
Rozszerzenie: PDF
Jesteś autorem/wydawcą tego dokumentu/książki i zauważyłeś że ktoś wgrał ją bez Twojej zgody? Nie życzysz sobie, aby podgląd był dostępny w naszym serwisie? Napisz na adres [email protected] a my odpowiemy na skargę i usuniemy zabroniony dokument w ciągu 24 godzin.

338 PDF - Pobierz:

Pobierz PDF

 

Zobacz podgląd pliku o nazwie 338 PDF poniżej lub pobierz go na swoje urządzenie za darmo bez rejestracji. Możesz również pozostać na naszej stronie i czytać dokument online bez limitów.

338 - podejrzyj 20 pierwszych stron:

Piotr Metzger Adam Je�owicki Anatomia PC wydanie V poprawione i uzupe�nione Kolejne wydanie znanej ksi��ki b�d�cej ca�o�ciowym om�wieniem architektury komputer�w zgodnych z IBM PC. W ksi��ce om�wiono: elementy p�yty g��wnej � procesor, uk�ady wieloprocesorowe, magistral� systemow�; uk�ady obs�ugi przerwa� � uk�ady bezpo�redniego dost�pu do pami�ci, uk�ady czasowe; pami�ci masowe � sterowniki i nap�dy dysk�w twardych i elastycznych, techniki zapisu; komunikacj� z urz�dzeniami peryferyjnymi � interfejs r�wnoleg�y i szeregowy; urz�dzenia wej�cia� klawiatur�, myszk�, j oystick oraz ich obs�ug� programowania; konfiguracj� systemu � program setup. Wydanie pi�te uzupe�niono o opis uk�ad�w pami�ci i tryb�w EPP i ECP z��cza r�wnoleg�ego. Projekt ok�adki: Maciej Pasek, �ARTGRAF" Copyright � HELION 1999 ISBN: 83-7197-182-6 Wydawnictwo HELION ul. Chopina 6, 44-100 GLIWICE tel/fax.: (32) 230-98-63, (32) 232-22-19 e-mail: [email protected]. http://www.helion.com.pl (najnowszy katalog, mo�liwo�� zamawiania ksi��ek przez Internet) Wyst�puj�ce w tek�cie znaki s� zastrze�onymi znakami firmowymi b�d� towarowymi ich w�a�cicieli. Autor oraz Wydawnictwo HELION do�o�yli wszelkich stara�, by zawarte w tej ksi��ce informacje by�y kompletne i rzetelne. Nie bior� jednak �adnej odpowiedzialno�ci ani za ich wykorzystanie, ani za zwi�zane z tym ewentualne naruszenie praw patentowych lub autorskich. Wszelkie prawa zastrze�one. Nieautoryzowane rozpowszechnianie ca�o�ci lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metod� kserograficzn�, fotograficzn�, a tak�e kopiowanie ksi��ki na no�niku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Printed in Poland. * * * Rozdzial 1 Rozdzia� 1. Komunikacja procesora z innymi elementami architektury komputera Ka�da z opisanych w tym rozdziale konfiguracji sprz�towych posiada centralny o�rodek zarz�dzania, kt�rym jest procesor. Najnowsze osi�gni�cia w technologii produkcji uk�ad�w scalonych pozwalaj� na realizacj� coraz to pot�niejszych mikroprocesor�w. Jednak bez wzgl�du na szeroko�� ich magistral, cz�stotliwo�� pracy czy wielko�� zintegrowanej w uk�adzie pami�ci, pierwotna zasada dzia�ania pozostaje - przynajmniej na razie - bez wi�kszych zmian. Procesor Rozw�j mikroelektroniki i technologii sprzyja opracowywaniu coraz to pot�niejszych mikroprocesor�w. Post�p w miniaturyzacji pozwala na zwi�kszenie stopnia upakowania i wzrost cz�stotliwo�ci taktuj�cej. Dobrze opanowana jest technika 0,35 um a ju� obserwuje si� przej�cie w kierunku 0,25 um, a nawet 0,18 um. To dzi�ki temu nieustannemu zmniejszaniu rozmiar�w elementarnych tranzystor�w (mimo sta�ego wzrostu ich liczby) pob�r mocy nowych procesor�w mie�ci si� w granicach zdrowego rozs�dku. Konstrukcja komputera PC podlega r�wnie� sta�ej ewolucji, wymuszanej przez wymagania nak�adane ze strony wsp�czesnego oprogramowania. �Pami�cio�eme" aplikacje i rozszerzenia multimedialne s� w stanie zniwelowa� ka�d� sprz�tow� inwestycj�. Rynek przyjmuje z wdzi�czno�ci� nowe opracowania procesor�w gdy� cz�sty brak kompatybilno�ci z poprzednimi modelami zmusza do wymiany p�yt g��wnych i stanowi d�wigni� nap�dow� do nowych zakup�w. Niezale�nie od cz�stotliwo�ci taktuj�cej i charakterystycznych dla danej firmy rozwi�za� indywidualnych ka�dy mikroprocesor da si� przedstawi� jako zesp� wsp�pracuj�cych ze sob� blok�w funkcjonalnych (rysunek 1.1). Architektura komputera PC zak�ada bardzo siln� wi� mikroprocesora z pami�ci� operacyjn�. W niej to bowiem przechowywane s� dane i rozkazy, tam te� odsy�a si� wyniki oblicze�. Za wsp�prac� z pami�ci� odpowiada wyizolowany blok komunikacyjny (BU - Bus Unit). Po��czenie realizowane jest zwykle w formie dw�ch odseparowanych od siebie magistral: oddzielnie dla danych (w tym kodu) i adres�w. Zarz�dzanie ruchem na magistralach gwarantuj � dodatkowe sygna�y steruj�ce. Konieczno�� zapewnienia p�ynnego funkcjonowania procesora wymaga, by dane do wykonania (kod programowy) pobierane by�y w wi�kszych porcjach i gromadzone w kolejce, gdzie oczekuj� na wykonanie. Ka�dy ze spoczywaj�cych tu bajt�w stanowi pewn� zakodowan� informacj� o koniecznych do wykonania operacjach. Odtworzenie tej informacji odbywa si� w bloku dekodera (IU - Instntction Unit). Praca tego uk�adu wspomagana jest cz�sto przez obszern� podr�czn� pami�� sta�� (ROM), w kt�rej zawarty jest s�ownik t�umacz�cy przyjmowane kody rozkazowe na sekwencje ukrywaj�cych si� pod nimi operacji. Rozkodowane instrukcje przekazywane s� do uk�adu wykonawczego (EU - Execution Unit), gdzie realizowana jest operacja okre�lona danym kodem rozkazowym. Znaczna cz�� powszechnie u�ywanego kodu pracuje na liczbach sta�oprzecinkowych (Integer) i podlega obr�bce w module ALU (Arithmetic-Logic Unit) sterowanego z bloku CU (Control Unit}. Je�li jednak rozkaz dotyczy� obiekt�w zmiennoprzecinkowych jego realizacja w sta�oprzecinkowych uk�adach logicznych zaj�aby zbyt wiele czasu. W takim wypadku przekazuje si� go do wyspecjalizowanej jednostki zmiennoprzecinkowej (FPU - Floaling Point Unit). Rozkazy pos�uguj� si� zwykle pewnymi argumentami (parametry funkcji, na przyk�ad sk�adniki przy dodawaniu), kt�re r�wnie� trzeba pobra� z pami�ci operacyjnej. Cz�sto wymaga si�, by wynik operacji przes�a� pod okre�lony adres. Obs�ug� tego rodzaju �ycze� bierze na siebie jednostka adresowania (AU - Addressing Unii). Wzgl�dy natury technicznej (stronicowanie i segmentacja) powoduj�, i� dost�p do pami�ci operacyjnej wymaga pewnych dodatkowych nak�ad�w, kt�rych realizacji po�wi�ca si� jednostk� zarz�dzania pami�ci� (MMU - Memory Management U nit). Rozwini�cie przedstawionego powy�ej og�lnego schematu blokowego do postaci bardziej szczeg�owej nast�pi przy okazji omawiania r�nic w konkretnych modelach procesor�w. Przetwarzanie rozkaz�w Obraz architektury wsp�czesnych procesor�w jest wynikiem wp�yw�w wielu czynnik�w. Sta�a pogo� za wzrostem mocy obliczeniowej zmusza do szukania nowych dr�g. Nie wszystkie z nich s� tak nowatorskie jak mog�oby si� wydawa�. Wiele z rozwi�za� ma swoje pierwowzory w procesorach du�ych maszyn, kt�re ujrza�y �wiat�o dzienne na d�ugo przed komputerami klasy PC. Wspomniany, w poprzednim punkcie, klasyczny model mikroprocesora by� dobry jeszcze przed kilkoma laty. Mocno zarysowany podzia� na wyspecjalizowane bloki nie zawsze da si� zastosowa� do wsp�czesnych konstrukcji i ulega stopniowemu rozmyciu. S�ownictwo w tej dziedzinie wzbogaci�o si� o szereg nowych, cz�sto tajemniczo brzmi�cych, zwrot�w. W publikowanych pracach teoretycznych nie zawsze panuje zgodno�� pogl�d�w. G��bokie zaz�bianie si� zagadnie� teoretycznych z konkretnymi rozwi�zaniami sprz�towymi prowadzi do spor�w odno�nie definiowanych okre�le� (kwesti� sporn� jest nawet sprecyzowanie zakresu obejmowanego poj�ciem architektura). W tej cz�ci rozdzia�u om�wione zostan� skr�towo podstawowe poj�cia z tego zakresu. RISC i CISC Termin RISC (Reduced Instruction Set Computer} zrodzi� si� w toku prac nad projektem 801 firmy IBM ( Idea podchwycona zosta�a przez wielu innych projektant�w i utrwalona mi�dzyinnymi w projektach: AMD 29000, HP PA-RISC, Intel 860 i 960 oraz IBM RS/6000). i oznacza� tendencj� do ograniczania listy rozkaz�w procesora do niewielu b�yskawicznie wykonywanych instrukcji. Realizacja ka�dej z nich by�a wynikiem odwo�ania si� do wyspecjalizowanego obwodu elektronicznego, kt�ry nie traci� czasu na t�umaczenie rozkazu. Rozpisanie algorytmu wykonywanego programu, kt�ry przecie� sk�ada� si� z operacji du�o bardziej skomplikowanych ni� przepisanie z rejestru do rejestru, nale�a�o do obowi�zk�w kompilatora. Warto zwr�ci� uwag�, �e system taki wyzwala ogromne obci��enie magistrali pami�ciowej - kod przet�umaczony przez kompilator znajduje si� przecie� w pami�ci operacyjnej i ka�dy z elementarnych �klock�w" musi zosta� pobrany przez procesor. Pr�dko�� przetwarzania jest bardzo du�a ' i taka musi te� by� przepustowo�� magistrali. Problem ten rozwi�zuje si� wsp�cze�nie przez zastosowanie szybkich pami�ci podr�cznych (LI i L2). Spore uproszczenie konstrukcji typu RISC zawdzi�cza si� sta�ej d�ugo�ci wszystkich mikrorozkaz�w. Istniej� jednak projekty procesor�w (na przyk�ad Thumb firmy ARM) dopuszczaj�ce zmienn� d�ugo�� instrukcji. Odmienny punkt widzenia reprezentuje filozofia CISC (Complex Instniction Set Computer} dominuj�ca w rodzinach x86 Intela i 680xx Motoroli. Procesory budowane wed�ug tej zasady bior� na siebie coraz to wi�ksze zadania. Pobierany z pami�ci pojedynczy rozkaz wywo�uje szereg kompleksowych dzia�a�. Czas opracowywania takiego polecenia mo�e dochodzi� nawet do kilkudziesi�ciu cykli zegarowych. Kod programu jest bardzo zwarty a proces jego transportu do procesora znacznie mniej krytyczny. Jakkolwiek oba poj�cia definiowa�y pocz�tkowo kategorie przeciwstawne, to obecnie coraz trudniej jednoznacznie przypisa� dany procesor do jednej nich. Ostry podzia� na RISC i CISC ma coraz mniejszy sens. Mo�na co najwy�ej m�wi� o pewnych cechach architektury a i to wy��cznie w odniesieniu do fragment�w okre�lonej konstrukcji. Klasyczny przyk�ad stanowi� procesory K6 i Pentium Pro. Chocia� same zaliczaj� si� do grupy CISC (akceptuj� przecie� na swym wej�ciu z�o�one instrukcje x86), wyposa�one s� w dekoder t�umacz�cy na wewn�trzny kod mikroprocesora a wi�c ich j�dro pracuje w trybie RISC (RISC Kernel). Uznawany za cz�onka rodziny RISC procesor PowerPC 601 mo�e z kolei poszczyci� si� chyba zbyt nadmiern� jak na �zredukowan�" (R - Reduced) liczb� rozkaz�w: samych rozga��zie� mo�na naliczy� ponad 150. �atwiejsze do sklasyfikowania s� typy Pentium oraz Ml (podobnie jak ich mutacje z rozszerzeniami MMX) przetwarzaj�ce dostarczany kod w spos�b bezpo�redni (Native C ode). Pipeline Niezale�nie od powy�szej klasyfikacji ka�dy procesor mo�na por�wna� do zak�adu produkcyjnego, kt�ry z dostarczonych materia��w (dane w pami�ci) wytwarza wed�ug okre�lonego algorytmu (kod programu) pewien okre�lony produkt wyj�ciowy (inny stan danych). Analogia ta pozwala na si�gni�cie do jednego z bardziej rewolucyjnych pomys��w racjonalizatorskich - ta�my produkcyjnej. Wprowadzona po raz pierwszy w zak�adach Forda idea podzielenia cyklu produkcyjnego na wiele ma�ych i szybkich operacji wydaje si� pozornie bezu�yteczna: czas pracy nad produktem nie ulega przecie� zmianie (mo�e si� nawet wyd�u�y� je�li szwankuj� po��czenia mi�dzy poszczeg�lnymi etapami). Nie o ten czas tu jednak chodzi, ale o zwi�kszenie przepustowo�ci. Przeniesienie powy�szej idei na grunt architektury mikroprocesor�w odby�o si� po raz pierwszy w roku 1960 podczas prac nad projektem IBM procesora klasy mainframe typu 7030; mikroprocesory do��czy�y dopiero w 20 lat p�niej. Charakterystyczny jest podzia� czasu pracy nad pojedynczym rozkazem na wyra�nie zarysowane fazy. Symboliczna ta�ma produkcyjna nazywana jest tutaj potokiem przetwarzaj�cym (Pipeline lub w skr�cie Pip�} a jej poszczeg�lne punkty stopniami (Pipeline Stages). Potok pracuje jednocze�nie nad kilkoma rozkazami a ka�dy z nich znajduje si� w innej fazie wykonania. Chocia� czas przetwarzania ka�dego z nich wynosi wielokrotno�� okresu zegara taktuj�cego, to w ka�dym jego cyklu ta�m� opuszcza kompletny produkt finalny. Podobnie pracuje ta�ma monta�owa w fabryce samochod�w - mimo, �e co minut� zje�d�a z niej gotowy samoch�d, czas monta�u mo�e wynosi� wiele godzin. Po��czenia pomi�dzy poszczeg�lnymi stacjami mog� by� elastyczne, co pozwala na zmniejszenie dyscypliny ca�ej ta�my. Czas przebywania rozkazu w poszczeg�lnych stopniach zale�y cz�sto od czynnik�w zewn�trznych i �cis�e przestrzeganie re�imu czasowego nie zawsze jest mo�liwe. W punktach krytycznych montowane s� wi�c ma�e magazyny po�rednie (bufory) nazywane te� kolejkami (Queue}. Stopie� rozdrobnienia takiej linii produkcyjnej (ilo�� stopni) nazywany jest te� g��boko�ci� potoku. Wielko�� ta ma fundamentalne znaczenie dla kluczowych parametr�w procesora. Rozbicie procesu produkcyjnego na bardzo wiele ma�ych operacji pozwala na ich przyspieszenie - dwaj robotnicy przykr�caj�cy po jednym kole pracuj� szybciej ni� jeden, kt�ry musi zamontowa� dwa. W przeniesieniu na grunt architektury procesora oznacza to mo�liwo�� zwi�kszenie cz�stotliwo�ci taktuj�cej i og�lnej wydajno�ci. Poszczeg�lne stacje mog� pracowa� wr�cz szybciej ni� wynika to z wymiaru zewn�trznego zegara (Super-Pipeline). Model powy�szy nie bierze jednak pod uwag� sytuacji awaryjnych a analogia do ta�my produkcyjnej nie znajduje tutaj pe�nego zastosowania. Mi�dzystopniowa kontrola jako�ci mo�e po prostu odrzuci� wadliwy wyr�b na dowolnym etapie przetwarzania. Odbywa si� to bez wi�kszej szkody dla ca�ej ta�my. Inaczej jest jednak w przypadku procesor�w. Stwierdzenie b��du (na przyk�ad opracowywana w�a�nie instrukcja sprowadza si� do dzielenia przez zero) oznacza konieczno�� oczyszczenia ca�ego potoku. Punkt w kt�rym taka sytuacja zosta�a rozpoznana znajduke si� z natury rzeczy daleko od wej�cia, a na pewno tym dalej im wi�cej stopni ma potok. Dodatkowym czynnikiem ograniczaj�cym wzrost wydajno�ci wraz z rozdrobnieniem potoku s� wzajemne uzale�nienia pomi�dzy instrukcjami oraz konflikty w wykorzystaniu zasob�w zewn�trznych. Zagadnienia te om�wione zostan� bardziej szczeg�owo w dalszej cz�ci rozdzia�u. Dla zanalizowania powy�szej zale�no�ci przeprowadzone zosta�y r�norodne badania symulacyjne. Wyniki test�w wykazuj�, i� istnieje warto�� optymalna g��boko�ci le��ca w okolicy liczby 8. Taki te� wymiar maj� potoki przetwarzaj�ce wi�kszo�ci procesor�w (tabela 1.1). Tabela 1.1. Liczba stopni w potokach wsp�czesnych procesor�w CPU - Liczba stopni w potoku; Pentium - 5; Pentiumx MMX - 6/8*; Pentium Pro - 12; Pentium II - 12/14*; M1 - 7; M2 - 7; K5 - 7; K6 - 6; * - Druga z podanych warto�ci obowi�zuje dla instrukcji MMX Procesory wyposa�one w potok pracuj� nad kolejnymi rozkazami wed�ug �ci�le okre�lonego schematu. Przetwarzana instrukcja przesuwa si� wzd�u� linii produkcyjnej zaliczaj�c kolejne etapy. Niezale�nie od r�nic w architekturze, nale�� do nich zawsze cztery podstawowe czynno�ci: pobranie, dekodowanie, wykonanie i zako�czenie. Ka�da z nich mo�e by� rozpisana na kilka czynno�ci bardziej elementarnych, na przyk�ad: pobranie wst�pne i pobranie w�a�ciwe, wykonanie cz�� pierwsza i nast�pne itp. Faza pierwsza: pobranie (Prefetch, PF) Zak�adamy obecno�� kodu w kolejce rozkazowej procesora. Zape�niane tej kolejki odbywa si� poprzez si�ganie do pami�ci podr�cznej L1. Je�li rozkaz znajduje si� w pami�ci operacyjnej uruchamiana jest procedura zape�niania linijki pami�ci podr�cznej L1, z ewentualnym uwzgl�dnieniem po�redniej pami�ci L2. Faza druga: dekodowanie (Decode, DE) W pierwszej cz�ci tej fazy analizowany jest kod operacyjny instrukcji i je�li to konieczne separuje si� przedrostki i argumenty. W drugiej cz�ci oblicza si� adres efektywny argument�w (je�li takowe wyst�puj�). Faza trzecia: wykonanie (Execute, EX) W fazie tej nast�puje fizyczny dost�p do pami�ci w celu pobrania ewentualnych argument�w rozkazu oraz operacje na argumentach okre�lane kodem instrukcji. Faza czwarta: zako�czenie i zapisanie wynik�w (Write Back, WB)Literatura angloj�zyczna u�ywa te� cz�sto terminu Retire (spoczynek) Wynik operacji wykonanej w fazie EX umieszczany jest w miejscu okre�lonym w kodzie rozkazowym (rejestry lub pami��). Na zako�czenie przywracany jest stan pocz�tkowy wewn�trznych (niewidocznych dla u�ytkownika i programisty) uk�ad�w procesora oraz ustawiane s� bity sygnalizuj�ce pewne stany charakterystyczne dla zako�czonej w�a�nie operacji (znaczniki, s�owa stanu itp.). Przyjrzyjmy si� bli�ej poszczeg�lnym etapom przetwarzania nast�puj�cego rozkazu: add ax, [bx] ; dodaj zawarto�� rejestru AX do zawarto�ci kom�rki, ; kt�rej adres znajdziesz w BX, wynik prze�lij do AX � Faza PF. Pobranie kodu instrukcji. � Faza DE. Okre�lenie czynno�ci do wykonania, obliczenie adresu efektywnego dla drugiego argumentu (16 x DS) + BX � Faza EX. Dost�p do kom�rki pami�ci o adresie (16 x DS) + BX, operacja dodawania do AX. � Faza WB. Umieszczenie wyniku w AX, ustawienie flag. Techniki przyspieszania Wzrost mocy obliczeniowej mierzy si� ilo�ci� wykonywanych operacji w jednostce czasu. Zwi�kszanie cz�stotliwo�ci taktuj�cej (skr�cenie czasu trwania pojedynczego cyklu) jest najbardziej oczywistym czynnikiem gwarantuj�cym przyrost wydajno�ci (pod warunkiem, i� nad��aj� uk�ady otaczaj�ce procesor, g��wnie systemy pami�ciowe). Na okre�lonym etapie rozwoju technologii, dalszy wzrost cz�stotliwo�ci taktuj�cej nie jest ju� mo�liwy i trzeba si�ga� do innych rozwi�za�. Je�li trzyma� si� analogii do zak�adu produkcyjnego, ogromne mo�liwo�ci drzemi� zawsze we w�a�ciwej �organizacji pracy" i r�nych drobnych usprawnieniach. W �wiecie mikroprocesor�w nale�� do nich mi�dzy innymi: techniki superskalarne, przemianowywanie rejestr�w, przepowiadanie rozga��zie� i odpowiednie (zoptymalizowane pod k�tem konstrukcji wewn�trznej danego procesora) przygotowanie kodu. Techniki superskalarne Je�li nie mo�na zwi�kszy� wydajno�ci pojedynczej linii produkcyjnej nale�y wybudowa� drug�. Procesor taki nosi miano superskalarnego. Uruchomienie dodatkowych, r�wnoleg�ych linii produkcyjnych gwarantuje oczywi�cie zwielokrotnienie produkcji. Model taki nie sprawdza si� jednak na gruncie mikroprocesor�w. Strumie� rozkaz�w do wykonania naszpikowany jest wzajemnymi uzale�nieniami i pe�en punkt�w rozga��zie�. Ponadto pracuj�ce r�wnolegle ta�my produkcyjne procesora (potoki) nie stanowi� nie-zale�nych obiekt�w, gdy� korzystaj � z wielu wsp�lnych element�w architektury (cho�by rejestr�w). Te i inne ograniczenia powoduj�, i� do�o�enie wi�cej ni� jednego potoku nie wp�ywa ju� w istotnej mierze na wzrost wydajno�ci. Zwielokrotniona (przynajmniej teoretycznie) moc obliczeniowa procesora konsumowana jest w wi�kszo�ci przez wewn�trzny system komunikacji mi�dzypotokowej. Zdecydowana wi�kszo�� dominuj�cych obecnie na rynku procesor�w posiada wi�c dwa r�wnoleg�e kana�y przetwarzaj�ce dane typu Integer (okre�lane zwykle symbolami U i V). Jednostka zmiennoprzecinkowa (FPU - Floating Point U ni f) zosta�a ju� stosunkowo dawno (w czasach 8087) wydzielona z w�a�ciwej struktury logicznej i ma swoje w�asne �ycie wewn�trzne. Mo�na �mia�o powiedzie�, i� stanowi ona trzeci r�wnoleg�y potok. Z nap�ywaj�cego do procesora strumienia rozkaz�w od�awiane s� te, kt�re operuj� na danych zmiennoprzecinkowych i kierowane do w�a�ciwego im potoku. Reszta kodu podlega przetwarzaniu w sekcji Integer. To, kt�ry z rozkaz�w nich l�duje w ci�gu U, a kt�ry w ci�gu V stanowi wynik pracy uk�adu rozdzielacza. Istniej�ce regu�y rozdzia�u wynikaj� g��wnie z drobnych r�nic w budowie wewn�trznej U i V oraz z wymog�w synchronizacji potok�w. Mo�liwo�� niezale�nego (asynchronicznego) doprowadzania do ko�ca instrukcji r�wnocze�nie zapocz�tkowanych w dw�ch potokach (Ont of Order Completiori) nie jest bowiem cech� ka�dego procesora. Warunki takie ma na przyk�ad M2 Cyrixa, natomiast architektura Intel MMX wymaga synchronicznej pracy obu linii. Je�li jest to niemo�liwe (na przyk�ad oczekiwanie na wyniki po�rednie) drugi potok zostaje zatrzymany. Przemianowywanie rejestr�w Wykonywany przez procesor program stanowi w najbardziej korzystnym przypadku sekwencj� instrukcji, kt�re daj� si� naprzemiennie kierowa� do potok�w U i V. Technika taka nosi miano parowania rozkaz�w. Nie wszystkie rozkazy podlegaj� parowaniu i nie zawsze przez ich r�wnoleg�e wykonywania mo�na cokolwiek przyspieszy�. Rozkazy odwo�uj�ce si� do tych samych lokalizacji pami�ci lub oceniaj�ce status procesora nie mog� by� przecie� wykonywane wcze�niej ni� to wynika z ich naturalnego po�o�enia w sekwencji kodu. Najcz�stsza przyczyna uzale�nie� le�y jednak w zaz�bieniach powsta�ych skutkiem odwo�ywania si� do tych samych programowych rejestr�w procesora. Przyk�adowy ci�g instrukcja asemblera: mov bx, ax ; -> do potoku U add ax, ex ; -> do potoku V prowadzi do powstania uzale�nienia od rejestru AX. Przepisanie stanu CX do AX w drugiej z podanej pary instrukcji nie mo�e by� przeprowadzone wcze�niej ni� zako�czenie realizacji odczytu AX w pierwszej instrukcji pary. Opisana sytuacja stanowi przyk�ad uzale�nienia typu WAR (Write After Read- najpierw odczyt, p�niej zapis). Zestaw rejedtr�w procesora Rejestry og�lnego przeznaczenia bajt 15 do bajt 8; bajt 7 do bajt 0 Akumulator(AX) - AH; AL Rejestr bazowy(BX) - BH; BL Rejestr licznika(CX) - CH; CL Rejestr danych(DX) - DH; DL Wska�nik stosu - SP Wska�nik bazowy - BP Indeksowanie �r�d�a - SI Indeksowanie celu - DI Rejestry segmentowe Segment danych - DS Segment bloku - CS Segment stosdu - SS Segment dodatkowy - ES Rejestrty informacyjne Zestaw znacznik�w - FLAGS Wska�nik instrukcji - IP Dwie nast�puj�ce kolejno po sobie instrukcje dost�pu do rejestru mog� w zale�no�ci od trybu dost�pu (zapis/odczyt) prowadzi� do czterech stan�w zebranych w tabeli l .2. Tabela 1.2. Sekwencje rozkaz�w, kt�rych nie mo�na parowa� Typ zale�no�ci - 1)RAR (Read After Read); 2)RAW; 3)RAW; 4)WAR (Write After Read); 5)WAW (Write After Write); Przyk�ad - 1)add bx, ax; ax mov, ax; 2)add ax, bx; bx mov, ax; 3)mov ax, bx; mov [mem], ax; 4) mov bx, ax; add ax, cx; 5)mov ax, [mem]; add ax, bx; Rozwi�zanie - 1) Dual Pip� Access; 2)Result Forwarding; 3)Operand Forwarding; 4)Register Renaming; 5)Register Renaming; Pierwsza kolumna symbolizuje dwa nast�puj�ce po sobie (w kodzie programu) a jednocze�nie wyst�puj�ce (w przypadku rozes�ania do potok�w U i V) cykle odczytu zawarto�ci rejestru AX. Nie mamy to do czynienia z hazardem danych a uzale�nienie tego typu jest stosunkowo �atwe do usuni�cia poprzez wbudowanie podw�jnych port�w odczytu dla rejestr�w. Dzi�ki takiemu usprawnieniu stan ka�dego z rejestr�w mo�e by� pobierany niezale�nie i jednocze�nie przez U i V. Istotne problemy wywo�uj� sekwencje rozkaz�w w dalszych kolumnach. Dwie ostatnie prezentuj � sytuacje powsta�� w wyniku pr�by jednoczesnego zapisu rejestru generowane przez potoki U i V. Prostym sposobem wyj�cia z tej opresji jest tymczasowe podstawienie dodatkowego rejestru pomocniczego (rysunek 1.4), tak by nie zamazywa� warto�ci zapisanej jako wcze�niejsza. Technika ta nazywa si� przemianowywaniem rejestr�w (Register Renaming). R�ne procesory pos�uguj� si� t� technik� w mniejszym lub wi�kszym zakresie. W najprostszej formie procesor wyposa�a si� w zestaw dodatkowych rejestr�w, kt�re stoj� do dyspozycji jednostki steruj�cej. W razie napotkania pary rozkaz�w powoduj�cej uzale�nienie typu WAR: mov bx, ax add ax, cx uk�ad sterowania dokonuje szybkiego podstawienia: AX -> RegO BX -> Reg1 CX -> Reg2 Je�li teraz dokona� przemianowania AX -> Reg3 to mo�na bez trudu wykona� r�wnolegle operacje: Reg1:= RegO || Reg3 := Reg2 + RegO Liczba stoj�cych do dyspozycji tej techniki rejestr�w jest r�na w zale�no�ci od modelu i typu procesora. Pentium i Pentium MMX nie maj� ich wcale a AMD K6 dysponuje zestawem 48 (tabela 1.3). Tabela 1.3. Liczba przemianowanych rejestr�w CPU; Liczba przemianowanych rejestr�w ; Pentium - 8 + 0; Pentium MMX -8 + 0; Pentium Pro - 8 + 32; M1, M2 - 8 + 24; K5 - 8 +8; K6 - 8 + 40 ; Trudno�ci innego typu wyst�puj� w sytuacjach przedstawionych symbolicznie jako zale�no�ci RAW. Nie ma tutaj kolizji przy zapisie do rejestru lecz pojawia si� konieczno�� oczekiwania na wynik wcze�niejszej operacji (obliczenia lub przes�ania). Aby tego unikn��, potok potencjalnie nara�ony na strat� czasu sam przeprowadza r�wnolegle t� sam� operacj�. Je�li jest to obliczenie, technika nazywana jest Result Forwarding, a je�li przes�anie m�wimy o Operand Forwarding. Przepowiadanie Wykorzystanie pe�nych mocy obliczeniowej procesor�w wyposa�onych w potoki przetwarzaj�ce (pipeline) wymaga sta�ego zasilania instrukcjami. Program, kt�rego realizacja przebiega kolejno od jednej instrukcji do nast�pnej nie stwarza w tym zakresie �adnych problem�w. R�wnie� bezwarunkowe skoki typu go to maj� jasno okre�lony punkt docelowy. K�opoty pojawiaj� si� w momencie napotkania warunkowej instrukcji rozga��zienia kiedy to dalsza realizacja programu mo�e w zale�no�ci od spe�nienia okre�lonych warunk�w przebiega� sekwencyjnie dalej lub te� przemie�ci� si� do odleg�ego obszaru kodu. Mimo i� nie jest wiadomo kt�ra z instrukcji b�dzie wykonywana jako nast�pna po problematycznej if potok musi zosta� czym� nape�niony. Problem przybiera na sile wraz ze wzrostem d�ugo�ci potoku - coraz wi�cej operacji tkwi ju� g��boko w systemie przetwarzania, cho� nie do ko�ca wiadomo czy s�usznie. Ostateczne rozstrzygni�cie warunku zawartego w if odbywa si� w najlepszym razie w okolicach �rodka potoku. Mo�e si� wi�c zdarzy�, i� wszystko to co jest za instrukcj� warunkow� nale�y usun��. Oczyszczenie ca�ego skomplikowanego aparatu przetwarzaj�cego ze zb�dnych wynik�w po�rednich zajmuje d�u�sz� chwil� (Dla K.6 wynosi l - 4 cykle zegarowe, M2 karany jest 5 cyklami natomiast Pentium Pro ze wzgl�du na d�ugo�� potoku musi czeka� a� 15 cykli.) Krok taki jest z punktu widzenia wydajno�ci procesora ogromn� strat� czasu. Dodatkowe op�nienia mog� r�wnie� powstawa� w systemach pobierania rozkaz�w, a zw�aszcza w procesorach z j�drem RISC. Dekodery tych procesor�w rozk�adaj�ce instrukcje x86 na drobne mikrooperacje te� musz� pracowa� z du�� wydajno�ci�. Oczekuj� wi�c nieprzerwanego dop�ywu przetwarzanego materia�u od uk�ad�w wsp�pracy z pami�ci� podr�czn� i magistralami. Od systemu pobierania kolejnych instrukcji x86, czy to z przeznaczeniem na rozk�ad na mikrokroki (RISC) czy te� do bezpo�redniego przetworzenia wymaga si� wi�c r�wnie� orientacji w zamiarach programu. Stosowane w praktyce pr�by rozwi�zania tego dylematu grupuj� si� wok� dw�ch podstawowych sposob�w rozumowania: � Dalszy bieg programu mo�na z wi�kszym lub mniejszym powodzeniem spr�bowa� przewidzie� (Branch Prediction). � W przypadku rozga��zienia pod��a si� na wszelki wypadek w obydwu kierunkach (Muliiple Paths of Executiori). Oba punkty podej�cia maj� swoje dobre i z�e strony. Prawdopodobie�stwo w�a�ciwego przepowiedzenia jest zawsze mniejsze od jedno�ci a prowadzenie programu kilkoma �cie�kami jednocze�nie (Idea wcielona w �ycie \v niekt�rych modelach procesor�w IBM (na przyk�ad 3033)).prowadzi do ogromnej komplikacji sprz�towej. Powielaniu podlegaj� nie tylko jednostki wykonawcze ale i dekodery oraz systemy pami�ci podr�cznej. Wielokrotnie zagnie�d�one lub nast�puj�ce szybko po sobie p�tle szybko uporaj� si� z ka�d� ilo�ci� zasob�w sprz�towych. Wybranie przypuszczalnie s�usznej drogi i jej realizacja (Specnlative Execution} te� niesie z sob� spor� doz� komplikacji ca�ego systemu. Wyniki wszystkich operacji l�duj� w buforach po�rednich bowiem nie wolno jeszcze przecie� niczego zmienia� w �wiecie poza procesorem (zapis do pami�ci wywo�any sekwencj� programu, kt�ra nigdy nie mia�a by� wykonana mia�by przecie� katastrofalne skutki). Wsp�czesne procesory korzystaj� w wi�kszo�ci z techniki przepowiadania biegu programu a stopie� komplikacji stosowanych system�w odpowiada z grubsza uzyskiwanym wynikom. Podstawow� struktur� informacyjn� tych uk�ad�w jest tablica BTB (Branch Target Buffer} - rysunek 1.5. Jest to szybka podr�czna pami�� asocjacyjna grupuj�ca zwykle 128-1 024 rekord�w. Ka�dy z wierszy zawiera w sobie informacje o jednym z punkt�w rozga��zienia programu. BTB w najprostszej formie to zestaw adres�w instrukcji skok�w i adres�w tych skok�w. Dodatkowo zapami�tywany jest status danej linijki (V: Valid) oraz omawiane poni�ej bity opisuj�ce zachowanie si� instrukcji (Hl, H2: History Bits). W tablicy umieszczane s� tylko te instrukcje (w miar� dost�pnego w buforze miejsca), kt�re ju� si� wykona�y, innymi s�owy takie, kt�rych zachowanie zosta�o zaobserwowane i udokumentowane. �rednia ilo�� trafnych przepowiedni pozostaje w �cis�ym zwi�zku z rozmiarami tablicy BTB. Statystyczna analiza typowych program�w prowadzi do wyznaczenia nast�puj�cych wsp�czynnik�w: Rozmiar BTB; �rednia ilo�� trafnych przepowiedni [%]; 16 - 40; 32 - 50; 64 - 65; 128 - 72; 256 - 78; 512 - 80; 1024 - 85; 2048 - 87 ; System nadzoruj�cy pobieranie kolejnych bajt�w rozkazowych mo�e wi�c w wypadku napotkania rozga��zienia zwr�ci� si� do tabeli BTB z zapytaniem o przewidywany dalszy bieg programu. Wiarygodno�� uzyskanej odpowiedzi zale�y oczywi�cie nie tylko od samych rozmiar�w tabeli. Cho� istnieje wiele ciekawych sposob�w podej�cia do tego zagadnienia tylko kilka z nich znalaz�o praktyczne zastosowanie. We wszystkich przypadkach instrukcje rozga��zie� opatruje si� dodatkow� sygnatur�, zwykle nie d�u�sz� ni� 2 bity. W nich to pr�buje si� zawrze�, w mniej lub bardziej udany spos�b �charakter i osobowo��" danego rozga��zienia. Stosowane algorytmy przepowiadania r�ni� si� miedzy sob� w sposobie wykorzystania tej niezmiernie ograniczonej porcji informacji. Metoda statyczna Stosowany jest zwykle jeden bit a jego ustawienie odbywa si� stosunkowo wcze�nie bo jeszcze w fazie kompilacji. Faktyczny przebieg programu nie jest w stanie ju� nic zmieni�. Metoda szybka, tania i ma�o skuteczna. Metody dynamiczne Metody tej grupy operuj� na jednym lub dw�ch bitach, kt�rymi manipuluje si� w fazie wykonywania programu. Jednym z mo�liwych punkt�w podej�cia jest przyj�cie za�o�enia o powtarzalno�ci przebiegu. Ka�demu rozga��zieniu towarzyszy jeden bit informacyjny, kt�ry podlega ustawieniu na l je�li nast�pi� skok. Proste przej�cie przez rozwidlenie (do kolejnej w szeregu instrukcji) kwitowane jest wyzerowaniem tego bitu. Je�li w wyniku dalszego wykonywania programu znajdziemy si� ponownie w tym samym punkcie, system przewidywania typuje wynik zgodny z poprzednio utrwalonym zachowaniem. Stan taki utrzymuje si� do czasu pierwszego b��du w przepowiedni (typowe wyj�cie z wielokrotnej p�tli po spe�nieniu okre�lonego warunku), co powoduje zmian� warto�ci bitu kontrolnego. Bardziej rozbudowana logika wkomponowana jest w uk�ady dwubitowe. Sygnatura; Opis; 00; Mocne za�o�enie o braku skoku; 01; S�abe za�o�enie o braku skoku; 10; S�abe za�o�enie o skoku; 11; Mocne za�o�enie o skoku; Punktem wyj�ciowym algorytmu jest przyj�cie za�o�enia, �e wszystkie po raz pierwszy napotkane rozga��zienia nie prowadz� do skok�w. Opatruje si� je sygnatur� 00 i przyst�puje do wykonywania programu. Pierwsze przej�cie przez dane rozwidlenie zgodnie z przepowiedni�- brak skoku - nie modyfikuje sygnatury i nadal zak�ada si� i� stan ten utrzyma si� do nast�pnego razu. Jak d�ugo rozga��zienie istotnie nie nast�pi, uk�ad typuje prawid�owo. Je�eli jednak dojdzie do skoku, mamy pierwsze niepowodzenie. W odpowiedzi na nie system zmienia stan sygnatury na 01 ale nadal zak�ada, �e kolejne skoki nie b�d� mia�y miejsca. Nast�pna ocena odbywa si� w trakcie kolejnego przej�cia. Je�li skok istotnie si� nie powt�rzy�, nast�puje powr�t do stanu 00. W przeciwnym razie instrukcja opatrywana jest sygnatur� 11. Uk�ad pozostaje w tym stanie tak d�ugo, jak d�ugo skoki istotnie maj� miejsce. Gdy po raz pierwszy nast�pi pomy�ka modyfikuje si� sygnatur� do postaci 10. System przepowiadania nadal jest zdania, i� nast�pnym razem skok b�dzie jednak mia� miejsce i tak� te� odpowied� zwraca. Gdy przewidywanie by�o s�uszne nast�puje powr�t do postaci 11 z mocnym przekonaniem o dalszych skokach, je�eli jednak system pomyli� si� powt�rnie, sygnatura przechodzi do stanu 00. Optymalizacja kodu Je�eli zna si� dobrze szczeg�y konstrukcyjne konkretnego procesora mo�na pr�bowa� tak pisa� program (ju� w fazie doboru algorytmu i podej�cia do problemu a potem na etapie kompilacji) by wykorzysta� dobre strony konstrukcji a omin�� punkty s�abe. Optymalizacja kodu jest konieczna w przypadku Intel Pentium, gdy� nie radzi on sobie (potoki synchroniczne) z doborem parowanych instrukcji. Procesor ten pobiera po prostu kolejne instrukcje z sekwencji programowej i (je�li spe�niaj� tylko pewne warunki wst�pne) rozsy�a je na chybi� trafi� do potok�w U i V. Powstaj�ce uzale�nienia nie s� neutralizowane przez podmian� rejestr�w i jeden z potok�w po prostu czeka na zako�czenie pracy (ewentualnie na udost�pnienie wynik�w) w drugim. 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. Kilka poni�szych uwag ma pom�c Czytelnikowi w wyja�nieniu zachodz�cych przy tym zjawisk. Maj� one kluczowe znaczenie dla zrozumienia dzia�ania CPU. 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 rejes-tr�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 adres logiczny. Konieczno�� dopasowania tej struktury (16 + 16) do wymiaru 20-bitowej magistrali adresowej wyznaczy�a nast�puj�cy spos�b przeliczenia: Adres fizyczny = 16 * Segment + Offset Generowany wed�ug powy�szej formu�y adres fizyczny (tutaj 20-bitowy) wystawiany by� na magistral� adresow�. Operacja mno�enia przez 16 stanowi w dziedzinie liczb binarnych przesuni�cie w lewo o 4 pozycje - tak z 16 bit�w robi si� potrzebne 20. 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. Warto w tym miejscu wspomnie� o adresie liniowym. Stanowi on efekt 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. Je�li omawiany w dalszej cz�ci rozdzia�u mechanizm stronicowania jest wy��czony (i pami�� wirtualna nieaktywna), adres liniowy odwzoro-wywany jest wprost w adres fizyczny: 20-, 24- lub 32-bitowy, zale�nie od szeroko�ci magistrali. 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 l MB (220). Wyj�tek stanowi� model 80286 dysponuj�cy 24 liniami adresowymi i obejmuj�cy tym samym przestrze� 16 MB (224). Procesory 32-bitowe (pocz�wszy od 80386DX) maj� ju� 32 ko�c�wki adresowe co pozwala na pokrycie zakresu 4 GB (2j2). Architektura nowoczesnych procesor�w 32-bitowych ulega�a licznym przeobra�eniom a implementacja nowych, dostosowanych do wsp�czesnych wymog�w tryb�w pracy spowodowa�a spor� komplikacj� w przeliczeniach adres�w logicznych, kt�rymi operuje program, na rzeczywisty stan ko�c�wek adresowych CPU. Wyr�ni� nale�y trzy podstawowe tryby pracy procesora: � Tryb rzeczywisty (Real Mod�). Procesor 32-bitowy prze��cza si� w stan odwzo-rowuj�cy zachowanie jednostki 16-bitowej. Zawarto�� rejestru segmentowego przesuwana jest o 4 pozycje binarne w lewo i dodawana do zawarto�ci rejestru przesuni�cia (16 x Segment + 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 Mod�). Tryb ten wprowadzony zosta� (pocz�wszy od modelu 80286) w celu ochrony poszczeg�lnych zada� pracuj�cych pod kontrol� wielozadaniowego (multitasking) systemu operacyjnego. Ca�o�� jest zaimple-mentowana 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 Mod�). 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. Najbardziej istotn� innowacj� (opr�cz architektury 32-bitowej) wprowadzon� do rodziny procesor�w Intela pocz�wszy od modelu 80386 jest jednak jednostka stronicowania (Paging Unit). W kolejnej cz�ci rozdzia�u zostan� om�wione mo�liwo�ci jakie oferuje to rozszerzenie. Adresowanie Znana z trybu rzeczywistego prosta projekcja zawarto�ci rejestr�w segmentowych i przesuni�cia na adres fizyczny zatraca si� wyra�nie w chronionych trybach pracy. Wspomniane rejestry s� od siebie ca�kowicie odseparowane i chocia� nadal dost�pne programowo, interpretacja ich zawarto�ci jest zupe�nie inna. Rejestr segmentowy stanowi teraz selektor segmentu a nie wprost jego adres. 13 najstarszych pozycji tego rejestru stanowi wska�nik do 8-bajtowej struktury opisuj�cej dany segment (Segment Descriptor). Z pozosta�ych trzech bit�w dwa po�wi�cone zosta�y na implementacj� czteropoziomowego systemu praw dost�pu do segmentu a jeden okre�la czy wspomniany powy�ej wska�nik odnosi si� do tzw. tablicy lokalnej czy globalnej. Rekordami w tych tablicach s� w�a�nie deskryptory segment�w. Ka�dy z nich zawiera jednoznaczn� informacj� o lokalizacji segmentu w pami�ci i jego rozmiarach. W ten spos�b definiowany jest sp�jny obszar o adresie pocz�tkowym wyznaczanym liczb� 32-bitow�. Na liczb� okre�laj�c� rozmiar takiego bloku przeznaczone zosta�o pole 20-bito-we. Istniej� dwie mo�liwo�ci interpretowania liczby w tym polu. W trybie 1:1 (granulacja l B) rozmiar maksymalny wynosi po prostu 2^20= l MB. Gdyba jednak przyj�� jednostk� 4 kB (granulacja 4 kB), rozmiar segmentu mo�e si�ga� do 2^20 * 2^12 = 2^32 = 4 GB. Informacja o tym, kt�ra z konwencji jest aktualnie obowi�zuj�ca zawarta jest w des-kryptorze. Adres logiczny do kt�rego odwo�uje si� procesor 32-bitowy budowany jest ze z�o�enia zawarto�ci 16-bitowego rejestru segmentowego i 32-bitowego rejestru przesuni�cia. W przypadku granulacji 4 kB maksymalny wymiar segmentu wynosi 4 GB. Liczba mo�liwych segment�w wynosi 2^14 (2^13 deskryptor�w lokalnych i tyle samo globalnych) co daje w sumie astronomiczn� obj�to�� 64 TB (2^14 * 2^32). W�a�ciwie ju� jeden taki Komunikacja procesora z innymi elementami architektury komputera 29 segment stanowi wielko�� optymaln�: 4 GB przestrzeni adresowej zaspokaja przy obecnym rozwoju techniki PC najbardziej wyg�rowane wymagania. Rozwi�zanie takie, okre�lane jako �p�aski model pami�ci" stosowane jest w systemie Windows NT. Segmenty l MB (granulacja bajtowa) pozwalaj� na utworzenie przestrzeni wirtualnej o rozmiarze 16 GB (2^14 * 2^20). Utworzenie pami�ci operacyjnej o takiej pojemno�ci w oparciu o p�przewodnikowe uk�ady scalone jest absolutnie nierealne. Samo zasilanie i sterowanie zespo�u l 000 uk�ad�w SIMM (16 MB) nastr�cza�o by zbyt wiele trudno�ci technicznych, nie m�wi�c o kosztach. Jest wi�c rzecz� oczywist�, i� nie wszystkie segmenty jednocze�nie mog� by� przechowywane w pami�ci operacyjnej. Cz�� z nich sk�aduje si� wi�c (Swapping) na znacznie ta�szym no�niku magnetycznym (zwykle dysk twardy). Du�a pami�� wirtualna realizowana jest wi�c jako z�o�enie ma�ej i szybkiej pami�ci RAM i obszernej pami�ci masowej. System operacyjny nadzoruje mechanizm sk�adowania ustawiaj�c odpowiednie znaczniki w tabelach deskryptor�w. Je�li procesor ��da dost�pu do takiego �od�o�onego na bok" segmentu, sprz�t wyzwala tzw. wyj�tek (Exception) b�d�cy odpowiednikiem przerwania OxOb. Wzywany jest podprogram obs�ugi przerwania, kt�ry sprowadza potrzebny segment z dysku do pami�ci. Om�wione powy�ej sk�adowanie segment�w pozwala na wykorzystanie znacznie wi�kszego wycinka logicznej przestrzeni adresowej procesora ni� wymiar fizycznie obecnej pami�ci operacyjnej. Mechanizm ten nie jest jednak pozbawiony wad. Prosz� zwr�ci� uwag�, i� elementarn� jednostk� wymiany informacji pomi�dzy pami�ci� RAM a pami�ci� masow� jest segment. Jego rozmiar niekoniecznie musi odpowiada� strukturze przetwarzanych obiekt�w. Obszerne bloki danych typowe dla zagadnie� numerycznych, modu�y du�ych program�w, mapy bitowe i im podobne lokowane s� w du�ych segmentach. Zwi�z�e procedury, bloki danych kr�tkich program�w umieszcza si� oczywi�cie w dopasowanych do ich rozmiar�w mniejszych segmentach. Potrzeba sprowadzenia do pami�ci jednego z du�ych segment�w mo�e oznacza� konieczno�� zwolnienia miejsca zajmowanego przez szereg mniejszych blok�w. Je�li przetwarzane zagadnienie wymaga naprzemiennego si�gania do sprowadzanego w�a�nie du�ego segmentu oraz wyeksportowanych przed chwil� segment�w mniejszych (klasyczny przyk�ad: kompaktowy kod obs�ugi bazy danych i obszerne struktury samych danych) rozpoczyna si� intensywny proces wymiany informacji pomi�dzy dyskiem a pami�ci�. Operacje takie poch�aniaj� oczywi�cie znaczn� cz�� mocy obliczeniowej. Opisany problem staje si� szczeg�lnie dotkliwy w komputerach sk�po wyposa�onych w pami�� RAM. Nale�y przecie� pami�ta�, i� tylko pewna cz�� pami�ci operacyjnej mo�e by� oddana do dyspozycji mechanizmu obs�uguj�cego zrzuty na dysk. Wolna przestrze� to reszta, kt�ra pozostaje po rozlokowaniu kodu i danych systemu operacyjnego oraz sterownik�w i innych niezb�dnych element�w. Mo�e si� wr�cz zdarzy�, i� segment po kt�ry chcemy aktualnie si�gn�� nie mie�ci si� w og�le w wolnej przestrzeni. Uruchamiana jest wtedy skomplikowana procedura analizuj�ca stopie� wykorzystania obecnego w pami�ci kodu i podejmuje si� decyzj�, kt�re z jego fragment�w mog� by� odes�ane na dysk. Powy�sze wzgl�dy zadecydowa�y o konieczno�ci poszukiwania bardziej efektywnej metody zagospodarowania oferowanej przez nowoczesny procesor wirtualnej przestrzeni adresowej. Opracowany system okre�lany jest mianem stronicowania. Stronicowanie Stronicowanie (Paging) stanowi specyficzn� funkcj� odwzorowuj�c� ogrom przestrzeni wirtualnej na stosunkowo w�skie pole pami�ci RAM plus obszar udost�pniany przez pami�� masow�. Odwzorowanie to odbywa si� za po�rednictwem ma�ych porcji zwanych stronami (Pages). Rozmiar stron jest sta�y i wynosi 4 kB. W przypadku omawianego tutaj modelu 80386, wielko�� ta jest �zaszyta" we wn�trzu CPU i nie mo�e by� zmieniana. Niekt�re procesory najnowszej generacji (na przyk�ad Pentium) pozwalaj� na pewne odst�pstwa od tej regu�y. Mo�na w nich wybra� jeden z dw�ch rozmiar�w stron: standardowy 4 kB lub rozszerzony 4 MB. Procesor mo�e ale nie musi korzysta� z mechanizmu stronicowania. Odpowiedni �wy��cznik" zamontowany jest w jednym z rejestr�w konfiguracyjnych (bit PG w rejestrze CRO). Samo ustawienie PG oznacza jedynie inn� interpretacj� adres�w i jeszcze niczego nie za�atwia. To system operacyjny musi bra� na siebie obs�ug� ca�ego zwi�zanego z tym mechanizmu. Je�li stronicowanie jest aktywne, adres logiczny podlega dwustopniowym przekszta�ceniom (rysunek 1.6). W pierwszej fazie odbywa si� opisany wcze�niej proces segmentacji. 16-bitowy selektor segmentu wskazuje na rekord adresowy w tablicy deskryptor�w. Do uzyskanego w ten spos�b adresu podstawy dodaje si� 32-bitowe przesuni�cie. Dopiero generowany w powy�szy spos�b adres liniowy (rysunek 1.7) podlega transformacji na fizyczny adres obiektu. Transformacja ta stanowi sedno mechanizmu stronicowania a jej istota rzeczy polega na innej interpretacji adresu liniowego (rysunek 1.8). 32-bitowe s�owo adresowe podzielone jest na trzy grupy. W pierwszych dziesi�ciu najstarszych bitach przechowywany jest numer rekordu w katalogu stron (Page Directory). Katalog zawiera l 024 takich rekord�w a ka�dy z nich wskazuje na tablic� stron (Page Tables). Pierwszy rekord w katalogu stron wskazuje adres bazowy tablicy stron o numerach 0 - l 023, drugi dotyczy tablicy l 024 - 2 047 a ostatni odnosi si� do stron o numerach l 047 552 - l 048 575. 10 kolejnych bit�w adresu liniowego (Page) wskazuje na jeden z l 024 rekord�w w danej tablicy. Same rekordy w tablicach stron stanowi� z kolei wska�niki do stron, z kt�rych ka�da ma wymiar 4 kB. Adresowany obiekt ulokowany jest w obr�bie danej strony. Jego dok�adna pozycja ustalana jest na podstawie pola Offset - dwunastu najm�odszych bit�w adresu liniowego (2^17 = 4kB). Caching Coraz szybciej taktowane procesory wymagaj� coraz to szybszych uk�ad�w pami�ciowych. Czas przetwarzania prostego rozkazu nie jest zwykle d�u�szy od pojedynczego cyklu zegarowego (5 ns przy cz�stotliwo�ci 200 MHz). Pami�� operacyjna wsp�czesnych komputer�w PC zbudowana jest z uk�ad�w scalonych DRAM, kt�re cechuje czas dost�pu wi�kszy o rz�d wielko�ci. Na c� zda� si� mo�e procesor pracuj�cy z tak du�� pr�dko�ci�, je�li czas oczekiwania na kolejn� porcj� danych wynosi w najlepszym razie 50 ns. Istniej� oczywi�cie typy pami�ci (SRAM, Static RAM) mog�ce sprosta� takim podwy�szonym wymaganiom, ale ze wzgl�d�w ekonomicznych (s� kilkana�cie razy dro�sze) nie mo�na z nich zbudowa� ca�ej pami�ci operacyjnej. Dla zlikwidowania tego w�skiego gard�a wprowadzona zosta�a pami�� podr�czna stanowi�ca bufor o kr�tkim czasie dost�pu (poni�ej 10 ns). Rozwi�zanie jest ekonomicznie uzasadnionym kompromisem: du�a i tania pami�� g��wna wspierana jest przez ma��, szybk� i nie a� tak drog� pami�� podr�czn� (Cache). Rozwi�zanie takie nie by�o by mo�liwe, gdyby nie jedna cenna w�a�ciwo�� przetwarzanego przez komputery PC kodu: jest on stosunkowo sp�jny. Procesor �porusza si�" przez d�u�szy czas w tym samym rejonie pami�ci a nie skacze chaotycznie po ca�ym jej obszarze. Analizowane rozkazy u�o�one s� przecie� w pami�ci sekwencyjnie (nie licz�c oczywi�cie rozga��zie� i skok�w) a bloki danych te� nie s� �wiadomie rozpraszane po ca�ej przestrzeni adresowej. Rozwa�ania teoretyczne i symulacje doprowadzi�y do wyznaczenia przybli�onych rozmiar�w takiego obszaru. Mo�na przyj�� z prawdopodobie�stwem r�wnym 0,9 i� wi�kszo�� odwo�a� do pami�ci mie�ci� si� b�dzie w bloku nie przekraczaj�cym wymiar�w 16 kB. W tabeli 1.4 zestawiono rozmiary pami�ci podr�cznej stosowanej we wsp�czesnych procesorach. Topologie Buforowe dzia�anie pami�ci podr�cznej osi�ga si� umieszczaj�c j� �po drodze" lub �przy drodze" do pami�ci g��wnej. Niezale�nie od r�nic w strategii dost�pu (r�norodne algorytmy), w chwili obecnej wyst�puj� w �wiecie PC trzy podstawowe uk�ady topologiczne. Tabela 1.4. Rozmiar pami�ci podr�cznej wsp�czesnych procesor�w Typ procesora; LI -kod [kB]; LI -dane [kB;] 12 [kB]; Pentium; 8; 8; -; Pentium MMX; 16; 16; -; Pentium Pro; 8; 8; 256/512; Pentium II; 16; 16; 512; Celeron; 16; 16; -; Celeron A; 16; 16; 128; Typ procesora; LI -kodfkB]; LI -dane [kB]; 12 [kB]; Ml; 16*; 16*; -; M2; 64*; 64*; -; M3; 16; 16; 256; K5; 16; 8; -; K6, K6-2; 32; 32; -; K6III; 32; 32; 256; K7; 64; 64; >512; * Wsp�lny dla kodu i danych, ponadto 256 bajt�w Instruction Lin� Cache Uk�ad konwencjonalny (cz�sto okre�lany nazw� Look-Aside) - rysunek 1.10 - z kt�rym mamy do czynienia w procesorach x86 i rodzinie Pentium z MMX w��cznie. Tutaj pami�� podr�czna L2 do��czona jest r�wnolegle do magistrali pami�ciowej. Rysunek 1.10. Uktad konwencjonalny (Look-Aside) pod��czenia pami�ci podr�cznej CPU (strza�ka w obie strony w d� do ram) do niej dochodzi strza�ka w obie strony w bok do Cache RAM Wida� wyra�nie, i� procesor odwo�uje si� do pami�ci podr�cznej wykorzystuj�c magistral� pami�ciow�: cz�stotliwo�ci pracy pami�ci podr�cznej jest wi�c taka sama jak pami�ci g��wnej, jedynie czas dost�pu mo�e ulec skr�ceniu. Drugi spos�b pod��czenia przedstawiony jest na rysunku 1.11 i okre�lany jest mianem Look-Through lub Inline Cache. Procesor, zanim si�gnie do pami�ci g��wnej, napotyka uk�ad pami�ci podr�cznej. Ta z kolei, sprz�ona jest z pami�ci� g��wn� poprzez w�a�ciw� magistral� pami�ciow�. Pami�� podr�czna mo�e wi�c by� taktowana inn� cz�stotliwo�ci� ni� sama magistrala pami�ciowa. Rysunek 1.11. Uktad Look-Through pod��czenia pami�ci podr�cznej CPU (strza�ka w obie strony} Czche (strza�ka w obie strony} RAM Ca�kowite oddzielenie pami�ci podr�cznej od magistrali pami�ciowej umo�liwia dominuj�ca obecnie architektura okre�lana mianem Backside - rysunek 1.12. Rysunek 1.12. Uk�ad Backside pod��czenia pami�ci podr�cznej CPU <->(strza�jka w obie strony w bok do) Cache (od cpu do ram strz. w ob