IA-32 (Intel Architecture 32 bit) –32-bitowy model programowymikroprocesora opracowany przez firmęIntel. Nazywany równieżx86-32, jako że opiera się na32-bitowym rozwinięciumodelu programowego rodzinyx86. Architektura IA-32 zaliczana jest z reguły do kategoriiCISC, choć technologie wprowadzane stopniowo w nowszych wersjach procesorów IA-32 spełniają także wiele cech procesorówRISC.
Model IA-32 został wprowadzony w1985 roku, wraz z procesoremIntel 80386 i jest najpopularniejszym modelemarchitektury stosowanym w komputerach ogólnego przeznaczenia (tzn.komputerach osobistych,serwerach). Stopniowo jest wypierany przez model64-bitowyAMD64,Intel 64 (EM64T), czyli tzw. x86-64.
Procesory IA-32 posiadają trzy podstawowe tryby pracy, określające m.in. sposób zarządzaniapamięcią i uprawnienia użytkownika.
W procesorach opartych na modelu IA-32 dostępne jest osiem 32-bitowychrejestrów ogólnego przeznaczenia:
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 literyE 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.
Koprocesor arytmetyczny w procesorach IA-32 zrealizowany jest warchitekturze 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ę symbolemST lubST(0), kolejne rejestry w głąb stosu odpowiednioST(1),ST(2), aż doST(7). Rejestry stosu koprocesora mogą przechowywać liczby wformacie zmiennoprzecinkowym zgodnym z normąIEEE 754, o rozmiarze 32, 64 lub 80 bitów.
Ponadto w koprocesorze znajdują się 16-bitowe rejestry dodatkowe:
W procesorach IA-32 zdefiniowano sześć 16-bitowychrejestrów segmentowych, służących albo do bezpośredniego określaniaadresu fizycznego w trybach stosującychsegmentację pamięci, bądź jakoselektory wtrybie chronionym procesora. Rejestry te to:
W procesorach IA-32 występuje również szereg innych rejestrów. Są to m.in.:
Procesory IA-32 posiadają rozbudowany zestawinstrukcji, liczący kilkaset instrukcji. Liczba instrukcji rosła wraz z wprowadzaniem kolejnych technologii rozwijających model IA-32, jakMMX,SSE,3DNow! itd. Cechą zestawu instrukcji IA-32, charakterystyczną dla architekturCISC 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 identyfikowane są przez procesor na podstawie binarnegokodu maszynowego. Dla wygody programistów opisano je jednakmnemonikami, ułatwiającymi programowanie na poziomieasemblera.
Kodowaniem instrukcji zajmuje siękompilator lubasembler podczaskompilacji programu. Wynikowykod maszynowy musi być zgodny z zasadami kodowania instrukcji IA-32. Rozkazy koduje się w postaci ciągów zero-jedynkowych. 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 zoperandów oraz że tylko jeden z argumentów danej instrukcji może odwoływać się dopamięci.
Schemat kodu każdego rozkazu można podzielić na następujące części:
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.
Procesor wykonuje instrukcje programu po kolei, zgodnie z ustalonym schematem, zwanymcyklem rozkazowym. Na cykl rozkazowy składa się kolejno:
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.
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 warto wymienić:Intel,AMD,VIA,Cyrix,Centaur Technology,Transmeta,IBM,NexGen,NEC,UMC,SiS,ALi,nVidia. Część z tych firm produkowała lub projektowała procesory z architekturą IA-32 tylko przez pewien okres, część również przestała istnieć lub została wykupiona przez innych producentów.
Wycofane z produkcji |
| ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Obecnie produkowane | |||||||||||||||||||||||
Planowane | |||||||||||||||||||||||
Kategorie | |||||||||||||||||||||||
Mikroarchitektury i nazwy kodowe |
|