IA-32 - Google

IA-32

Z Wikipedii

(Przekierowano z IA32)
Skocz do: nawigacji, szukaj

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. Architektura IA-32 zaliczana jest z reguły do kategorii CISC, choć technologie wprowadzane stopniowo w nowszych wersjach procesorów IA-32 spełniają także wiele cech procesorów RISC.

Model IA-32 został wprowadzony w 1985 roku procesorem Intel 80386 i do dnia dzisiejszego jest najpopularniejszym modelem architektury stosowanym w komputerach, choć rozpoczął się już proces wypierania go przez model 64-bitowy EM64T (tzw. x86-64) i inne architektury 64-bitowe.

Spis treści

[edytuj] Tryby pracy

Procesory IA-32 posiadają trzy podstawowe tryby pracy, określające m.in. sposób zarządzania pamięcią i uprawnienia użytkownika.

  • Tryb rzeczywisty – tryb zgodny z najstarszymi procesorami rodziny 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. W trybie tym współczesne procesory pracujÄ… jedynie od chwili uruchomienia do przekazania kontroli systemowi operacyjnemu.
  • Tryb chroniony - tryb 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. Rodzaj adresowania zależy od systemu operacyjnego - może być stosowany tzw. model pÅ‚aski (bez segmentacji), model z segmentacjÄ… analogicznÄ… do trybu rzeczywistego, lub - najczęściej - adresowanie nieliniowe (tzw. logiczne). W adresowaniu nieliniowym adres fizyczny jest zależny od wpisu w systemowej tablicy deskryptorów, na który wskazuje selektor. W trybie chronionym procesor wspiera wielozadaniowość, chroni przed nieupoważnionym dostÄ™pem do urzÄ…dzeÅ„ wejÅ›cia/wyjÅ›cia.
    • Tryb wirtualny V86 - odmiana trybu chronionego, która jest symulacjÄ… trybu rzeczywistego. SÅ‚uży np. do uruchamiania programów MS-DOS.
  • Tryb SMM (System Management Mode) - jest to tryb przeznaczony do zarzÄ…dzania sprzÄ™tem przez systemy operacyjne, niedostÄ™pny z poziomu użytkownika.

[edytuj] Rejestry

Podstawowe rejestry w architekturze IA-32
Podstawowe rejestry w architekturze IA-32

[edytuj] Rejestry ogólnego przeznaczenia

W procesorach opartych na modelu IA-32 dostępne jest osiem 32-bitowych rejestrów ogólnego przeznaczenia:

  • Rejestry danych
    • EAX - rejestr akumulacji
    • EBX - rejestr bazowy
    • ECX - rejestr licznika
    • EDX - rejestr danych
  • Rejestry adresowe
    • ESI - źródÅ‚o
    • EDI - przeznaczenie
    • EBP - wskaźnik bazowy
    • ESP - wskaźnik stosu

Z rejestrów ogólnego przeznaczenia można korzystać także jako rejestrów 16-bitowych (wykorzystywane jest wtedy młodsze 16 bitów rejestru 32-bitowego). Rejestry takie oznacza się z pominięciem litery E na początku symbolu. Dodatkowo, w przypadku rejestrów danych (EAX-EDX) można się odwoływać do ich 8-bitowych części - najmłodsze 8 bitów rejestru AX oznaczane jest przez AL, kolejne 8 przez AH. Odpowiednio najmłodsze bity rejestru BX oznacza się przez BL itd.

[edytuj] Rejestry koprocesora

Koprocesor arytmetyczny w procesorach IA-32 zrealizowany jest w architekturze stosowej, tzn. dane tworzą stos. Położenie danych w koprocesorze określa się przez "odległość" od wierzchołka stosu, a nie konkretny symbol rejestru. Stos koprocesora tworzy 8 rejestrów 80-bitowych. Wierzchołek stosu oznacza się symbolem ST lub ST(0), kolejne rejestry w głąb stosu odpowiednio ST(1), ST(2), aż do ST(7). Rejestry stosu koprocesora mogą przechowywać liczby w formacie zmiennoprzecinkowym zgodnym z normą IEEE 754, o rozmiarze 32, 64 lub 80 bitów.

Ponadto w koprocesorze znajdujÄ… siÄ™ 16-bitowe rejestry dodatkowe:

  • rejestr stanu stosu koprocesora, okreÅ›lajÄ…cy typ zawartoÅ›ci oÅ›miu rejestrów stosu
  • rejestr stanu koprocesora, m.in. sygnalizujÄ…cy wyjÄ…tki i okreÅ›lajÄ…cy poÅ‚ożenie wierzchoÅ‚ka stosu
  • rejestr sterujÄ…cy koprocesora, pozwala m.in. na ustawianie rodzaju zaokrÄ…glenia, maskowanie wyjÄ…tków

[edytuj] Rejestry segmentowe

W procesorach IA-32 zdefiniowano sześć 16-bitowych rejestrów segmentowych, służących albo do bezpośredniego określania adresu fizycznego w trybach stosujących segmentację pamięci, bądź jako selektory w trybie chronionym procesora. Rejestry te to:

  • CS - rejestr segmentu kodu programu
  • DS - rejestr segmentu danych
  • SS - rejestr segmentu stosu
  • ES, FS, GS - rejestry pomocnicze dla danych

[edytuj] Rejestr flag procesora

Do opisu stanu procesora w architekturze IA-32 wykorzystuje się rejestr stanu procesora EFLAGS. Poniższa tabela przedstawia nazwy i znaczenie poszczególnych bitów w tym rejestrze:

Rejestr flag w architekturze Intel x86
nr bitu skrót lub wartość opis kategoria*
0 CF flaga przeniesienia (carry) S
1 1 zarezerwowany  
2 PF flaga parzystości (parity) S
3 0 zarezerwowany  
4 AF flaga wyrównania (adjust) S
5 0 zarezerwowany  
6 ZF flaga zera (zero) S
7 SF flaga znaku (sign) S
8 TP flaga umożliwiająca krokowe wykonanie (trap) X
9 IF flaga zezwolenia na przerwania (interrupt enable) X
10 DF flaga kierunku (direction) C
11 OF flaga przepełnienia (overflow) S
12, 13 IOPL poziom uprawnień we/wy (I/O privilege level, od 286) X
14 NT nested task flag (od 286) X
15 0 zarezerwowany  
16 RF flaga wznowienia (resume, od 386) X
17 VM flaga trybu Virtual 8086 (od 386) X
18 AC alignment check (od 486SX) X
19 VIF Virtual interrupt flag (od Pentium) X
20 VIP Virtual interrupt pending (od Pentium) X
21 ID Identification (od Pentium) X
22 0 zarezerwowany  
23 0 zarezerwowany  
24 0 zarezerwowany  
25 0 zarezerwowany  
26 0 zarezerwowany  
27 0 zarezerwowany  
28 0 zarezerwowany  
29 0 zarezerwowany  
30 0 zarezerwowany  
31 0 zarezerwowany  

S: Znacznik stanu
C: Znacznik kontrolny
X: Znacznik systemowy

[edytuj] Inne rejestry

W procesorach IA-32 występuje również szereg innych rejestrów. Są to m.in.:

[edytuj] Wykonywanie programów

[edytuj] Zestaw instrukcji

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, jak MMX, SSE, 3DNow! itd. Cechą zestawu instrukcji IA-32, charakterystyczną dla architektur CISC jest fakt, że wiele ze złożonych instrukcji można zastąpić instrukcjami prostszymi, np. pętlę zrealizować można dokonując porównań i skoków warunkowych, lub za pomocą specjalizowanej instrukcji pętli LOOP.

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
  • inne instrukcje

Instrukcje identyfikowane są przez procesor na podstawie binarnego kodu maszynowego. Dla wygody programistów opisano je jednak mnemonikami, ułatwiającymi programowanie na poziomie asemblera.

[edytuj] 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.

Kod instrukcji zawiera identyfikator rozkazu oraz - jeśli posiada argumenty - położenie ich w pamięci lub ich wartości. W modelu IA-32, w celu ograniczenia długości rozkazu, w przypadku większości rozkazów przyjęto, że docelowe miejsce zapisu wyniku określone jest przez pierwszy z operandów oraz że tylko jeden z argumentów danej instrukcji może odwoływać się do pamięci.

Schemat kodu każdego rozkazu można podzielić na następujące części:

  • Prefiksy instrukcji (opcjonalne) - do czterech bajtów dodatkowych informacji o instrukcji:
  • prefiks LOCK (zapewniajÄ…cy wyłączność dostÄ™pu do pamiÄ™ci wspólnej dla danej instrukcji),
  • prefiksy powtarzania (REP, REPE, REPZ...) wykorzystywane w operacjach na blokach danych,
  • prefiksy chwilowej zmiany segmentu,
  • prefiks podpowiedzi rozgałęzienia (branch hint), pozwalajÄ…cy procesorowi na wybór bardziej prawdopodobnej Å›cieżki wykonania w przetwarzaniu potokowym,
  • prefiksy zmiany rozmiaru operandu i zmiany rozmiaru adresu.
  • Kod operacji (opcode) dÅ‚ugoÅ›ci 1-3 bajtów, zawierajÄ…cy czÄ™sto dodatkowe informacje:
  • bit wskazujÄ…cy, w którym operandzie zapisać wynik,
  • bit oznaczajÄ…cy rozmiar operandów.
Dodatkowe 3 bity kodu operacji znajdować się mogą także zamiast pola reg w bajcie ModR/M.
  • Bajt ModR/M (tylko w przypadku instrukcji posiadajÄ…cych argumenty w pamiÄ™ci lub rejestrach) - sÅ‚uży do okreÅ›lenia poÅ‚ożenia argumentów. SkÅ‚ada siÄ™ z trzech części:
  • pole mod (2 bity) - okreÅ›la czy operacja odwoÅ‚uje siÄ™ do pamiÄ™ci, oraz jakÄ… dÅ‚ugość ma ewentualne pole przesuniÄ™cia;
  • pole reg (3 bity) - kod rejestru lub modyfikacji adresowej pierwszego argumentu, czasem wystÄ™puje w roli dodatkowych bitów kodu operacji;
  • pole R/M (3 bity) - kod rejestru lub modyfikacji adresowej drugiego argumentu.
  • Bajt SIB (tylko w przypadku operacji o zÅ‚ożonym sposobie odwoÅ‚ywania siÄ™ do pamiÄ™ci, np. za pomocÄ… podwójnej modyfikacji adresowej) - sÅ‚uży do okreÅ›lenia dodatkowych parametrów modyfikacji adresowych, m.in. współczynnik skali pozwalajÄ…cy na wygodne operowanie na tablicach.
  • Pole przesuniÄ™cia (opcjonalne) - podaje odlegÅ‚ość danych w stosunku do poczÄ…tku segmentu, może mieć dÅ‚ugość 1, 2 lub 4 bajtów.
  • Dane staÅ‚e (immediate, opcjonalne) - podana bezpoÅ›rednio wartość liczbowa argumentu o dÅ‚ugoÅ›ci 1, 2 lub 4 bajtów.

Kod prostych instrukcji bez argumentów zajmuje z reguły 1 bajt, a np. skomplikowane operacje przesyłania danych do pamięci mogą zajmować 9 bajtów.

[edytuj] 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 z uwzglÄ™dnieniem modyfikacji adresowych, jeÅ›li polecenie odwoÅ‚uje siÄ™ do pamiÄ™ci,
  • obliczenie adresu fizycznego argumentu (rzeczywistego poÅ‚ożenia danej w pamiÄ™ci fizycznej)
  • pobranie argumentu z pamiÄ™ci
  • wykonanie rozkazu (np. obliczenie wÅ‚aÅ›ciwego wyniku)
  • 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.

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne


Giełdowy krach uderzył po kieszeni rosyjskich oligarchów
Rosyjscy oligarchowie stracili ok. 230 mld USD na giełdowym krachu londyńskiej giełdy, która ma za sobą tydzień największych spadków od 1987 r. oraz na spadkach notowań w Moskwie i na innych parkietach - pisze sobotni "The Times".
Bush: kryzys finansowy wymaga skoordynowanej reakcji
Prezydent Stanów Zjednoczonych George W. Bush powiedział w sobotę, że kryzys na rynkach finansowych wymaga skoordynowanej odpowiedzi i że główne kraje uprzemysłowione będą pracować wspólnie nad jak najszybszym znalezieniem rozwiązania.
Od bezrobocia siÄ™ ubezpieczysz
Rośnie zainteresowanie ubezpieczeniami na życie, zwłaszcza tymi, które oferują dodatkową ochronę w wypadku utraty pracy - czytamy w "Polska The Times".
Polacy rzucili się do kupowania mieszkań
Powraca koniunktura na rynku nieruchomości. Polacy chcą zdążyć z kupnem mieszkania przed zapowiadanym zaostrzeniem polityki kredytowej banków - pisze dziennik "Polska The Times".
Zamożni biznesmeni inwestują w dzieła sztuki
Obrazy, rzeźby i ryciny są jedną z najlepszych inwestycji na niepewne czasy. Przychód domów aukcyjnych wzrósł w ostatnich dniach o kilkadziesiąt procent - czytamy w "Dzienniku".
Linki: Strona g³ówna