1 / 33

Architektura x86

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

karim
Download Presentation

Architektura x86

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Architektura x86 Architektura Systemów Komputerowych mgr inż. Michał Misiak

  2. 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

  3. 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

  4. 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.

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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)

  11. 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

  12. 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

  13. 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)

  14. 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).

  15. 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

  16. Translacja adresu logicznego na liniowy Źródło: http://www.microsoft.com/poland/technet/article/art0092_01.mspx

  17. 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

  18. 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 Lista rejestrów

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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ń

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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

More Related