Arkadiusz Pełdiak
2 TI
32-bitowy model pamięci
w systemie Windows
Wstęp
IA-32 (Intel Architecture 32 bit) – 32-bitowy
model
programowy
mikroprocesora
opracowany przez firmę Intel. Nazywany
czasem x86-32, jako że opiera się na 32-
bitowym rozwinięciu modelu programowego
rodziny x86.
Początki
Model IA-32 został wprowadzony w 1985
roku, wraz z procesorem Intel 80386 i jest
najpopularniejszym modelem architektury
stosowanym w komputerach osobistych i
serwerach.
Intel 80386 – pierwszy procesor na
x86-32
Tryby pracy IA-32
Procesory IA-32 posiadają trzy główne tryby
pracy:
rzeczywisty
chroniony
wirtualny
SMM
Tryb rzeczywisty (16 bit)
Tryb rzeczywisty jest trybem zgodnym z
najstarszymi procesowami x86 z Intel 8086
włącznie. W trybie tym występuje segmentacja
pamięci, rozmiar segmentu jest stały i wynosi 64
KB. Przestrzeń adresowa ograniczona jest do 1
MB, do adresowania wykorzystuje się rejestry
segmentowe oraz offset (informacje dotyczące o
odległości od początku pamięci).
W trybie tym współczesne procesory pracują
jedynie od chwili uruchomienia do przekazania
kontroli systemowi operacyjnemu.
M.in. BIOS pracuje w trybie rzeczywistym procesora.
Tryb chroniony (32 bit)
Tryb chroniony –inicjalizowany i w znacznej
mierze kontrolowany przez system operacyjny.
Pamięć może być zorganizowana w segmenty
dowolnej wielkości, fizyczna przestrzeń adresowa
ograniczona jest z reguły do 64 GB, liniowa
przestrzeń adresowa do 4 GB. W trybie
chronionym
procesor
obsługuje
wielozadaniowość,
chroni
przed
nieupoważnionym
dostępem
do
urządzeń
wejścia/wyjścia.
Tryb chroniony w praktyce
Tryb wirtualny
Tryb wirtualny V86 – odmiana trybu
chronionego, która jest symulacją trybu
rzeczywistego w trybie chronionym. Służy np.
do uruchamiania programów MS-DOS.
Tryb wirtualny jest używany m.in. do wyświetlania tego typu
programów
Tryb SMM
Tryb SMM (System Management Mode) – jest
to tryb przeznaczony do zarządzania
sprzętem
przez
systemy
operacyjne,
niedostępny z poziomu użytkownika.
Rejestry IA-32
Ogólnego przeznaczenia
Instrukcje
Procesory IA-32 posiadają rozbudowany zestaw instrukcji,
liczący kilkaset instrukcji. Liczba instrukcji rosła wraz z
wprowadzaniem kolejnych technologii rozwijających model
IA-32.
Instrukcje podzielić można na grupy:
instrukcje przesyłania danych
instrukcje kontroli przepływu (porównania, skoki, pętle)
instrukcje arytmetyczne (stałoprzecinkowe, wykonywane
przez jednostkę arytmetyczno-logiczną oraz
zmiennoprzecinkowe, wykonywane przez koprocesor)
instrukcje operacji logicznych
operacje bitowe
pozostałe
Kodowanie instrukcji
Kodowaniem instrukcji zajmuje się kompilator
lub asembler podczas kompilacji programu.
Wynikowy kod maszynowy musi być zgodny z
zasadami kodowania instrukcji IA-32. Rozkazy
koduje
się
w
postaci
ciągów
zerojedynkowych. W architekturze IA-32
rozkazy są zmiennej długości, od 1 do nawet
kilkunastu bajtów, w zależności od rodzaju
rozkazu i typu argumentów.
Cykl rozkazowy
Procesor wykonuje instrukcje programu po kolei, zgodnie z ustalonym
schematem, zwanym cyklem rozkazowym.
Na cykl rozkazowy składa się kolejno:
pobranie rozkazu z pamięci
dekodowanie kodu rozkazowego
obliczenie adresu efektywnego argumentu
obliczenie rzeczywistego położenia danej w pamięci fizycznej
pobranie argumentu z pamięci
wykonanie rozkazu
zapisanie wyniku
wyznaczenie położenia następnego rozkazu (odpowiednia
modyfikacja rejestru EIP).
Współczesne procesory IA-32 stosują przetwarzanie potokowe, czyli
technologię polegającą na jednoczesnym wykonywaniu kolejnych
etapów cyklu dla sąsiednich rozkazów przez różne bloki funkcjonalne.
Producenci IA-32
W ciągu ponad 25 lat istnienia i rozwoju
architektury IA-32, powstało bardzo dużo
procesorów opartych i implementujących ją.
Wśród największych producentów takich
procesorów należy wymienić: Intel, AMD, VIA,
IBM, SiS, ATi, nVidia.