osdev.labedz.org

Jak to się zaczeło?

Rodzina procesorów IA-32 (ang. Intel Architecture) należała do czołówki technologii, które współtworzyły komputerową rewolucję XX wieku. Do dziś jest ona zaliczana do najbardziej popularnych technologii mikroprocesorowych. Jej sukces wynika przede wszystkim z dwóch czynników: zgodności programowej poszczególnych generacji, oraz faktu, że każdy następny procesor tej rodziny przynosił znaczny wzrost efektywności i funkcjonalności. Kod stworzony dla procesora wyprodukowanego w roku 1978 z powodzeniem może być wykonany na najnowszych układach!

Początki architektury IA-32 sięgają, poprzez układy 8085 i 8080, do pierwszego mikroprocesora zaprojektowanego w laboratoriach Intela - układu Intel 4004 (1969 rok). Jednak faktyczne narodziny technologii nastały wraz z wprowadzeniem 16-sto bitowych układów 8086 i 8088 (rok 1978).

Procesor 8086

Procesor 8086 posiada 16-bitowe rejestry, 16-bitową zewnętrzną szynę danych i 20-bitową szynę adresową, która umożliwia zaadresowanie 1 MB przestrzeni adresowej. 8088 różni się od swojego 'większego brata' jedynie ośmio-bitową zewnętrzną szyną danych. Procesory te wprowadziły segmentacje pamięci do rodziny procesorów IA-32 - 16-bitowy rejestr segmentowy zawiera wskaźnik do segmentu pamięci o rozmiarze do 64KB. Używanie jednocześnie czterech rejestrów segmentowych umożliwia procesorom rodziny 8086/8088 zaadresowanie do 256KB pamięci bez konieczności przełączania segmentów. Adres zewnętrzny o wielkości 20-tworzony jest poprzez złożenie rejestru segmentowego i rejestru wskaźnika zadania, co daje całkowity obszar 1MB. Układ produkowany był w wersjach z zegarem o prędkości taktowania do 10Mhz dla której osiągał prędkość około 0,75 MIPS. Szerokość ścieżki wynosiła 3 mikrony. Procesory pochodne serii 8086/8088 są jeszcze czasami używane w systemach sterowania.

Procesor Intel286

Wraz z wprowadzeniem procesora Intel286 w roku 1982, pojawił sie, występujący w architekturze IA-32, nowy tryb pracy nazwany trybem chronionym (ang. protected mode). Tryb chroniony używa zawartości rejestru segmentowego jako selektora (wskaźnika) pozycji w tzw. tablicy deskryptorów. Deskryptor składa się z 24-bitowego adresu bazowego, umożliwiającego procesorowi zaadresowanie do 16MB pamięci, oraz licznych flag wpływających na prace układu. Dodatkowe wprowadzone innowacje to wsparcie dla pamięci wirtualnej opartej na wymianie segmentów (ang. segment swapping), oraz zróżnicowane mechanizmy ochrony zasobów takie jak: kontrolowane ograniczenie wielkości segmentu, określenie charakteru segmentu (kod - tylko do odczytu, dane - zapis/odczyt), cztery poziomy uprzywilejowania do ochrony danych/kodu programów nadzorczych (np. systemu operacyjnego). Procesor serii 286 posiada również sprzętowy mechanizm przełączania zadań oraz lokalną tablicę deskryptorów, które umożliwiają systemowi operacyjnemu ochronę zasobów poprzez odseparowanie aplikacji i zadań użytkownika od siebie. Układ produkowany był w wersjach z zegarem o prędkości taktowania do 20Mhz dla której osiągał prędkość około 3 MIPS. Szerokość ścieżki wynosiła 1,5 mikrona.

Procesor Inter80386

Procesor Intel 80386 jest pierwszym układem 32-bitowym w rodzinie IA-32. Został on wprowadzony w roku 1985. Posiada zestaw 32-bitowych rejestrów ogólnego przeznaczenia. Aby zapewnić zgodność z poprzednimi, 16-bitowymi procesorami, rejestry dzielą się na dwie 16-bitowe części - dolna część jest używana jako rejestr 16-bitowy, identyczny z poprzednimi wersjami procesora. W nowym układzie został wprowadzony kolejny tryb pracy, zwany trybem wirtualnym (ang. virtual-8086), który zwiększa efektywność wykonywania kodu przeznaczonego dla starszych układów jednocześnie zachowując pełną kontrolę nad procesem. Procesor Intel 80386 posiada 32-bitową szynę adresową umożliwiającą zaadresowanie do 4GB fizycznej pamięci, a adres przestrzeni logicznej jest dostępny dla każdego uruchomionego procesu. Architektura procesora zapewnia zarówno segmentowy jak i prosty (ang. flat) model obsługi pamięci. W modelu prostym wszystkie rejestry wskazują na ten sam adres bazowy i mają wielkość 6GB. Dodatkowo został wbudowany mechanizm stronicowania ze stałym rozmiarem stron ustalonym na 4KB, umożliwiający zaimplementowanie pamięci wirtualnej opierającej się na wymianie stron (ang. page swapping). Procesor wykonuje wszystkie instrukcje znane z poprzednich modeli, jednak zostały one rozszerzone o nowe, 32-bitowe, operandy i tryby adresowania

Nowe technologie...

Procesor Intel386 jest pierwszym procesorem w którym zastosowano mechanizmy przetwarzania równoległego. Występuje sześć etapów wykonywanych w jednostkach: jednostka interfejsu magistrali (ang. bus interface unit) realizująca dostęp do pamięci oraz operacje wejścia/wyjścia dla pozostałych jednostek, jednostka pobrania kodu (ang. code prefetch unit) odbierająca odpowiedni fragment kodu z interfejsu magistrali i odkładająca go w 16-bajtową kolejkę rozkazów, jednostka dekodowania instrukcji (ang. instruction decode unit) dekodująca kod w instrukcje mikrokodu, jednostka wykonawcza (ang. execution unit) wykonująca instrukcje mikrokodu, jednostka mechanizmu segmentacji (ang. segment unit) tłumacząca logiczne adresy w adresy liniowe (ang. linear address) i sprawdzająca warunki ochrony segmentów, oraz jednostka mechanizmu stronicowania (ang. paging unit) tłumacząca adresy liniowe w adresy fizyczne, sprawdzająca warunki ochrony stron, oraz posiadająca pamięć podręczną zawierającą informację na temat najczęściej odwiedzonych stron o wielkość do 32 pozycji.