Top Banner
Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Architektura x86 Architektura Systemów Komputerowych mgr inż. Michał Misia
33

Architektura x86

Jan 15, 2016

Download

Documents

karim

Architektura x86. Architektura Systemów Komputerowych. mgr inż. Michał Misiak. Wstęp. x86 – termin odwołujący się do zbioru instrukcji procesora o jednym z największych sukcesów komercyjnych Wykorzystywany w procesorach AMD, Intel, VIA Kompatybilny ze starymi 16-bitowymi procesorami Intel - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Architektura x86

Uniwersytet ŁódzkiWydział Matematyki i Informatyki, Katedra Analizy Nieliniowej

Architektura x86

Architektura Systemów Komputerowych

mgr inż. Michał Misiak

Page 2: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Wstęp

x86 – termin odwołujący się do zbioru instrukcji procesora o jednym z największych sukcesów komercyjnych

Wykorzystywany w procesorach AMD, Intel, VIA Kompatybilny ze starymi 16-bitowymi procesorami Intel Historycznie zostało dodanych wiele nowych instrukcji w taki

sposób, że procesory są zgodne z poprzednikami Termin stał się popularny po wdrożeniu do sprzedaży procesora 32-

bit 80386 (należy wyróżnić procesory x86-16 i x86-64) Architektura popularna w rozwiązaniach PC, Notebook oraz

serwerach Architektura wspierana jest przez szereg systemów operacyjnych:

MS-DOS, Windows, Linux, BSD, Solaris

Page 3: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Historia

1978 – Intel 8086 8MHz, 0,029mln tranzystorów Układ 16 bitowy (w tańszej wersji posiadał 8 bitową

szynę danych 8088) 1982 – Intel 80286

12,5MHz, 0,134 mln Druga generacja układów x86, słowo 16 bitowe z

zwiększoną 24 bitową szyną adresową, nowe rozkazy oraz tryby pracy

Adresowanie umożliwiało obsługę 16 MB RAM oraz 1GB pamięci wirtualnej

Page 4: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Historia (2)

1985 – 80386 20 MHz, 0,275 mln Procesor 32 bity, poszerzone rejestry wewnętrzne, szyna danych oraz adresowa Posiada MMU, nowe rozkazy, tryb wirtualny, obsługa do 4GB pamięci RAM

1989 – i486 25 MHz, 1,2mln rozszerzono o kilka nowych instrukcji, zwiększona wydajność jednostki

stałoprzecinkowej. Posiada pamięć cache L1 1993 – Pentium

66 MHz, 3,1mln Powiększono pamięć cache L1, dodano jednostkę przewidywania skoków,

zewnętrzna magistrala danych do 64 bitów, szyna adresowa 36 bity, możliwość realizacji dwóch rozkazów jednocześnie. Procesor superskalarny.

Page 5: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Historia (3)

1995 - Pentium PRO (nieformalnie arch. i686) 200 MHz, 5,5 mln tranzystorów Dedykowany do serwerów i wydajnych stacji

roboczych, układ posiada wiele cech architektury RISC pod względem mikroarchitektury, 6 potoków, podstawa dla procesorów Pentium II i Pentium III, osobno wbudowana pamięć cache L2

1995 – Pentium MMX 233 MHz, 4,5 mln tranzystorów Ulepszony Pentium z rozkazami MMX

Page 6: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Historia (4)

1997 – Pentium II/III 266MHz, 7mln Technologie 3D Now, pamięć cache L3

2000 – Pentium IV 1,5GHz, 42 mln Nowy projekt procesora pod kątem maksymalnego

wykorzystania potkowości pozwalające osiągać duże częstotliwości zegara

2006 – Intel Core, Intel Core 2 Ok. 3GHz, 320 mln tranzystorów Niskonapięciowy, wolniejszy zegar, wielordzeniowy

Page 7: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Potrzebne skróty

IA-32 – nazwa 32 bitowej architektury x86 IA-64 – model programowy dla procesora do

serwerów z możliwością wykonywania kodu 32 bitowego

EM64T (Extended Memory 64 Technology) – nazwa implementacji technologii AMD x86-64

AMD64 – x86-64/x64 – architektura 64 firmy AMD. Procesory Athlon 64/FX/X2, Sempron, Turion, Opteron

Page 8: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Podstawowe cechy architektury x86

Instrukcje zmiennej długości Architektura CISC z uwzględnieniem

kompatybilności wstecz Słowo w porządku little-endian Adresy rejestrów w większości

przypadków 3 bitowe

Page 9: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Obecne implementacje

Zastosowanie dodatkowych etapów dekodowania instrukcji w celu podziału na mniejsze części

Zastosowanie architektur: superskalarnej out-of-order execution

Rozszerzenia: 3DNow MMX SSE

Page 10: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

MMX

MultiMedia eXtensions lub Matrix Math eXtensions

Zestaw 57 instrukcji SIMD (Single Instruction, Multiple Data z taksonomii Flynna)

Stosowany w sytuacji, gdy przetwarzane są duże ilości danych przez jeden algorytm (np. obróbka dźwięku, obróbka obrazu)

Page 11: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

3DNow!

Rozszerzenie arch. x86 stworzone przez AMD Zwiększa wydajność obliczeń

zmiennoprzecinkowych wykorzystywane do odtwarzania grafiki trójwymiarowej i multimediów

Wspiera i rozszerza możliwości akceleratorów graficznych w początkowych etapach przetwarzania grafiki

Zawiera 21 instrukcji SIMD

Page 12: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

SSE

SSE - Streaming SIMD Extensions Nazwa zestawu instrukcji wprowadzonych w

procesora Pentium III Pozwala na wykonywanie działań

zmiennoprzecinkowych na 4 elementowych wektorach liczb pojedynczej precyzji

SSE wprowadza zmiany w arch. procesora: Dodano 8 rejestrów XMM w wersji 32 bity, a w

wersjach 64 bity jest dostępnych jeszcze kolejne 8

Page 13: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Out-of-order execution Nowe podejście przy przetwarzaniu w procesorze:

Pobranie instrukcji Zbuforowanie instrukcji w kolejce Instrukcja oczekuje w kolejce do momentu kiedy argument wejściowy staje się dostępny.

Instrukcja może opuścić kolejkę wcześniej przed starszymi instrukcjami Instrukcja jest przekazywana do właściwego bloku funkcjonalnego i wykonywana Rezultaty są kolejkowane Tylko w momencie, gdy wszystkie rezultaty zostaną zwrócone do rejestru wówczas cały

wynik jest zapisywany do rejestru Korzyści:

Wypełnianie pustych slotów czasowych (procesor wykonuje te instrukcje, do których są dane, później kolejkuje wynik)

Wzrost efektywności przetwarzania w sytuacji różnicy częstotliwości pamięci i procesora, procesor nie musi oczekiwać na napływające dane

Stosowanie w procesorach: Pentium PRO (’95), IBM/Motorola PowerPC (‘92), Fujitsu/HAL SPARC64 (’95)

Page 14: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Arch. Superskalarna

Możliwość ukończenia kilku instrukcji na raz w jednym cyklu pracy procesora

Procesor posiada zwielokrotnione jednostki wykonawcze umożliwiające obliczenia równoległe (np. ALU, jednostki zmiennopozycyjne)

Możliwość realizacji instrukcji w arch. Superskalarnej zależy od tego, czy dana instrukcja nie potrzebuje argumentów źródłowych z poprzedniej

Konieczna odpowiednia optymalizacja rozmieszczenia instrukcji, w celu unikania zależności danych

Pierwszym procesorem był Pentium z 2 jednostkami wykonawczymi (jedna wykonywała instrukcje proste).

Page 15: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Mechanizm segmentacji pamięci w x68

Pamięć dzielna jest na segmenty Adresacja przestrzeni dwuwymiarowa:

adres logiczny – widziany przez aplikacje, procesy adres fizyczny (pojawiający się na wyprowadzeniach procesora)

Do adresacji (adres liniowy) wykorzystywane są rejestry segmentowe: adres początkowy aplikacji oraz przesunięcie w stosunku do początku aplikacji

Zaletą segmentacji jest ochrona innych części pamięci przed zapisem bądź odczytem przez inną aplikację

Wady: ograniczone segmenty, konieczność dzielenia aplikacji pod wymiary segmentów

Page 16: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Translacja adresu logicznego na liniowy

Źródło: http://www.microsoft.com/poland/technet/article/art0092_01.mspx

Page 17: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Zestaw rejestrów

Rejestry jednostki stałopozycyjnej 8 32-bitowych rejestrów uniwersalnych mogących

przechowywać dane 16 i 32 bitowe Dane 16 bitowe przechowywane w mniej znaczących połówkach Możliwość przechowywania danych 8 bitowych w pierwszych 4

rejestrach Nazwy rejestrów pochodzą od nazw specjalizowanych

rejestrów ze starszych procesorów w arch. X86 16bit Nazwy rejestrów 32 bitowych powstały w wyniku

poprzedzenia nazwy rejestru 16 bitowego literą E

Page 18: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Lista rejestrów

Nazwa: 8bit, 8bit, 16bit, 32bit Akumulator: AH, AL, AX, EAX Licznik: CH, CL, CX, ECX Rejestr adresowy: BH, BL, BX,

EBX Wskaźnik stosu: SP, ESP Wskaźnik ramki: BP, EBP Rejestry adresowe: SI i DI, ESI

i EDI Licznik instrukcji: IP, EIP Rejestr stanu: FLAGS,

EFLAGS

Rejestry selektorów: Selektor kodu CS Selektor stosu SS Główny selektor DS Dodatkowe selektory danych

ES, FS, GS

Page 19: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Funkcje rejestrów

Rejestr EAX (accumulator) – akumulator dla operacji mnożenia i dzielenia, operacji arytmetycznych na liczbach w kodzie BCD oraz instrukcji iteracyjnych

Rejestr ECX (counter) – licznik pętli, licznik iteracji w instrukcjach z pętlą, licznik pozycji w operacjach przesunięć i rotacji bitowych

Rejestr EDX (data) – rozszerzenie akumulatora w operacjach mnożenia i dzielenia

Rejestr ESP (stack pointer) – wskaźnikiem stosu Rejestr EBP (base pointer) – wskaźnikiem ramki Rejestr ESI (source index) – wskaźnik źródła dla instrukcji iteracyjnych Rejestr EDI (destination Index) – wskaźnik przeznaczenia dla instrukcji

iteracyjnych Wskaźnik instrukcji EIP (Instruction Pointer) – rejestr licznika instrukcji

Page 20: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Rejestr stanu (EFLAGS)

Zawiera bity znaczników i stanów aplikacji, informacje systemowe (dostępne do odczytu lub niedostępne dla użytkownika)

Z poziomu aplikacji dostępne są bity: CF – znacznik przeniesienia PF – znacznik parzystości AF – znacznik przeniesienia połówkowego ZF – znacznik zera SF – znak liczby w kodzie U2 OF – znacznik nadmiaru przy operacjach na liczbach w kodzie U2 DF – bit sterujący działaniem instrukcji iteracyjnych ID – bit sygnalizujący dostępność instrukcji CPUID. CPUID dostępny w

procesorach posiadających instrukcję CPUID

Page 21: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Rejestry selektorów

Przechowują identyfikatory segmentów Niewykorzystywane w środowiskach 32

bitowych, ograniczone wykorzystanie przez system operacyjny (używano w 16 bitowyc)

Rejestry są inicjalizowane przez OS przy starcie programu. Program użytkowy ma dostęp do rejestrów jednak nie powinien ich modyfikować

W x86 jest 6 rejestrów w tym 3 pomocnicze

Page 22: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Rejestry jednostki zmiennopozycyjnej

W układach do 80486 jednostka pozycyjna była realizowana w zew. układzie (np. dla procesora 8086 był to układ 8087)

Jednostka zm. poz. (x87) zawiera 8 rejestrów 80 bitowych zorganizowanych w postaci stosu rejestrów

Wierzchołek stosu traktowany jako domyślny argument Rejestry nie mają nazw są indeksowane za pomocą cyfr Rejestry przechowują dane w formacie

zmiennopozycyjnym podobnym do IEEE dla double jednak wydłużonym do 64 bitów

Page 23: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Rejestry 3DNow!/MMX

Jednostka wektorowa 3DNOW operuje na słowa 64 bitowych posiada 8 rejestrów

Rejestry są nałożone logicznie na rejestry zmiennopozycyjne można wykorzystywać tylko jeden, przełączenie z x87 na MMX

następuje po wywołaniu instrukcji MMX Przywrócenie stanu rejestrów sprzed wywołania MMX następuje po

wywołaniu EMMS i FEMMS Przewiduje się następujące sposoby interpretacji:

Pojedyncza dana całkowitoliczbowa o długości 64 bity 2xdana całkowitoliczbowa o długości 32 bit 4xdana całkowitoliczbowa o długości 16 bit 8xdana całkowitoliczbowa o długości 8 bit 2xdana zmiennopozycyjna w 3DNOW po 32 bity

Page 24: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Rejestry jednostki wektorowej SSE

Jednostka SSE zbudowana jest z 8 rejestrów 128 bitowych

Jednostka SSE może przechowywać dane w następujących formatach: 16 danych całkowitoliczbowych 8 bitowych 8 danych całkowitoliczbowych 16 bitowych 4 dane całkowitoliczbowe 32 bitowe 2 dane całkowitoliczbowe 64 bitowe 4 dane zmiennopozycyjne 32 bitowe 2 dane zmiennopozycyjne 64 bitowe

Page 25: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Realizacja operacji warunkowych

Realizacja zgodnie z modelem operacji warunkowych ze znacznikami typowy dla architektur CISC

Znaczniki ustawiane przez instrukcje arytmetyczne i logiczne nie są natomiast ustawiane przez instrukcje przesłań

Page 26: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Tryby pracy

Tryb rzeczywisty Procesor pracuje jak procesor 8086 Brak ochrony pamięci przed użyciem przez inny proces oraz brak

obsługi wielozadaniowości w oparciu o tryb rzeczywisty pracowały programy w DOS w latach 80 i

90 Dostępna pamięć do 1 MB Adres logiczny złożony z 2 x liczba 16 bitowa (nr segmentu oraz

przemieszczenia) Tryb chroniony

Tryb wprowadzony w mikroprocesorze 80286 Możliwość adresacji w obszarze większym niż 1 MB Wprowadza udogodnienia dla wielozadaniowości: sprzętowa ochrona

pamięci (MMU), wsparcie dla przełączenia kontekstu procesora

Page 27: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

MMU

MMU – Memory Management Unit Zestaw układ realizujących dostęp do pamięci

fizycznej żądanej przez CPU Zadania układu:

Translacja pamięci wirtualnej do pamięci fizycznej Ochrona pamięci Obsługa pamięci podręcznej Zarządzanie szynami danych

Page 28: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

MMU (2)

Układy MMU dzielą przestrzeń logiczną na strony o rozmiarze 2N Młodsze N bitów odpowiada Tłumaczenie adresów logicznych na fizyczne realizowane przy

pomocy asocjacyjnej pamięci podręcznej TLB (Translation Lookaside Buffer)

W przypadku braku przypisania wykorzystywane są wolniejsze sprzętowe mechanizmy procesora przeszukujące struktury danych znajdujących się w pamięci

Struktura nosi nazwę Page Table Adres fizyczny ustalany po dodaniu przesunięcia (offset) do numeru

strony, a wpisy nazywają się Page Table Entries. W x86 wymagane jest 4kB do przechowywania katalogu stron

Page 29: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Wykonywanie programów na IA-32

IA-32 posiada rozbudowany zestaw instrukcji (kilkaset) rozbudowywany wraz z wprowadzaniem nowych technologii MMX, SSE, 3DNow!

Grupy instrukcji: Instrukcje przesyłania danych Instrukcje kontroli przepływu (porównania skoki, pętle) Instrukcje arytmetyczne Instrukcje operacji logicznych Operacje bitowe

Instrukcje identyfikowane na podstawie binarnego kodu maszynowego. W celu ułatwienia programowania zastąpione memonikami

Page 30: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Kodowanie instrukcji

Kodowaniem instrukcji zajmuje się kompilator Rozkazy zakodowane w postaci ciągów 0 i 1 Rozkazy zmiennej długości od 1 do kilkunastu

bajtów Kod instrukcji: identyfikator rozkazu + położenie

argumentów w pamięci Wynik zapisywany jest w miejscu pierwszego

operandu

Page 31: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Budowa rozkazu

Prefiks instrukcji (o) LOCK – zapewnia wyłączność dostępu do pamięci dla danej instrukcji Prefiks powtarzanie – używany na blokach danych Prefiks chwilowej zmiany segmentu Prefiks zmiany rozmiaru argumentu oraz rozmiaru adresu

Kod operacji Bit wskazujący w którym argumencie zapisać wynik Bit oznaczający rozmiar argumentów

Baj modR/M dla instrukcji posiadających argumenty w pamięci bądź rejestrach, wykorzystywany do określenia położenia argumentów

Bajt SIB – określa dodatkowe parametry modyfikacji adresowych, m.in.. współczynnik skali pozwalający wygodnie operować na tablicach

Pole przesunięcia – podaje odległość danych w stosunku do początku Dane stałe – zawiera bezpośrednio podaną wartość argumentu

Page 32: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008

Cykl wykonania rozkazu

Pobranie rozkazu z pamięci Dekodowanie rozkazu Obliczenie adresu efektywnego uwzględniającego

modyfikacje adresowe w przypadku odwołania do pamięci

Obliczenie adresu fizycznego operandu Pobranie argumentu z pamięci Wykonanie rozkazu Zapisanie wyniku Wyznaczenie położenia następnego rozkazu

Page 33: Architektura x86

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008