29
Budowa wnętrza procesora x86 Marika Kuczyńska , Joanna Tokarz Akademia Górnicz- Hutnicza im. Stanisława Staszica w Krakowie Wydział Fizyki i Informatyki Stosowanej Fizyka Techniczna Kraków, 20.03.2013

Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Budowa wnętrza procesora x86Marika Kuczyńska , Joanna Tokarz

Akademia Górnicz- Hutnicza im. Stanisława Staszica w KrakowieWydział Fizyki i Informatyki StosowanejFizyka Techniczna

Kraków, 20.03.2013

Page 2: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Plan prezentacji

1. Schemat Budowy procesora Intel (IA-32)

3. Jednostka Wykonawcza

a) Rejestry ogólnego przeznaczenia

- rejestry arytmetyczne

- rejestry wskaźnikowe i indeksowe

a) Rejestr znaczników (EFLAG, RFLAG)

c) Wskaźnik instrukcji (EIP/RIP)

d) Jednostka zmiennoprzecinkowa, koprocesor (FPU)

e) Rejestry kontrolne (CR)

4. Instrukcje

a) rejestry MMX (64bit)

b) rejestry XXM (128bit)

c) rozszerzenie AVD (rejestr YMM) (255bit)

Page 3: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Schemat blokowy mikroprocesora Intel IE-32 (32-bity)

Jednostka wykonawcza Jednostka interfejsowa

Page 4: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Jednostka Wykonawcza

Jednostka wykonawcza składa się z:h

- podstawowych rejestrów wykonawczych:

– ogólnego przeznaczenia– segmentów– RFlag– wskaźnika instrukcji

- rejestrów koprocesora- rejestru kontrolnego- rejestru statusu- rejestru znaczników- rejestrów wskaźnikowych

- rejestrów XMM i MMX

Page 5: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Jednostka wykonawcza

mod 32 mod 64

Page 6: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestry jednostki wykonawczej

Główne rejestry:- 16 rejestrów ogólnego

przeznaczenia GPRs

(32/64 bity)

- 6 rejestrów segmentowych (16 bitów)

- rejestr znaczników (EFLAG\RFLAG)

(32/64 bity)

- licznik rozkazów – EIP/RIP

(32/64 bity)

- 8 rejestrów jednostki zmiennoprzecinkowej

- 16 rejestrów XMM (128 bitów)

Page 7: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestr ogólnego przeznaczeniaRejestr ogólnego przeznaczenia

Zastosowanie:pk

- Służą jako liczniki (głównie rejestr ECX)- Funkcjonują jako przechowalnie argumentów- Przechowywanie operandów i wyników obliczeń arytmetycznych.- Są wskaźnikami pamięci

Rejestr ogólnego przeznaczeniaRejestr ogólnego przeznaczenia

W skład bloku rejestru ogólnego przeznaczenia wchodzą:p

- rejestr arytmetyczny- rejestr wskaźnikowy- rejestr indeksowy

Page 8: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestr ogólnego przeznaczenia(General-Purpose Register)

- Rejestr bajtów (Byte Registers ) AL, BL, CL, DL, AH, BH, CH, DH - Rejestr słów (Word Registers) AX, BX, CX, DX, DI, SI, BP, SP - Rejestr podwójnych słów (Doubleword Registers ) EAX, EBX, ECX, EDX, EDI, ESI, EAX, EBX, ECX, EDX, EDI, ESI, EBP, EBP, ESP

8 bits 16 bits 32 bits

Page 9: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

- Rejestr poczwórnych słów (Quadword Registers ) RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8 - R15

Rejestr ogólnego przeznaczenia(General-Purpose Register)

Page 10: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestr ogólnego przeznaczenia(General-Purpose Register)

KIEDYŚ:Rejestry danych: Rejestry adresowe:EAX – rejestr akumulacji ESP – wskaźnik stosu

EBX - rejestr bazowy EBP – wskaźnik bazowy

ECX - rejestr licznika ESI - wskaźnik źródła

EDX - rejestr danych EDI - przeznaczenie k

TERAZ:Każdy z 16 rejestrów może wykonywać

każdą z wyżej wymienionych prac.

Nie ma podziału na rejestry poszczególnego

przeznaczenia, ponieważ rejestry są

przemienne i wymienne.k

R8 – R15 reprezentują 8 nowych GPR, gotowych do użycia.

Page 11: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestr znaczników (flag)

Dzięki rejestrowi znaczników mamy możliwość kontrolowania ustawień samego procesora.

k Zapisane są w nim takie ustawienia, jak np. :j

- możliwość korzystania

z instrukcji wejścia-wyjścia,j

- informacje nt. ostatnio

przeprowadzanej operacji

arytmetycznej.

Page 12: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestr znaczników (flag) EFLAG

Flagi znajdujące się w rejestrze dzielimy na:k

- flagi stanu (S)flagi stanu (S) - flagi systemowe (X)flagi systemowe (X) - flagi sterowania (C)flagi sterowania (C)

Page 13: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Znaczenia flag

CF (carry flag) - znacznik przeniesienia0 - wynik operacji arytmetycznej nie powoduje powstania przeniesienia z najbardziej znaczącego bitu1 - wynik takie przeniesienie powoduje

PF (parity flag) - znacznik parzystości - ustawiany w zależności od liczby jedynek w najmniej znaczących 8 bitach wyniku

0 - liczba jedynek w wyniku operacji nieparzysta1 - liczba jedynek w wyniku operacji parzysta

AF (auxiliary carry flag) - znacznik przeniesienia połówkowego (pomocniczego)

0 - brak przeniesienia pomiędzy trzecim i czwartym bitem bajta (BCD)1 - występuje przeniesienie

Znaczenia flag (S)

Page 14: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Znaczenia flag

ZF (zero flag) - znacznik zera0 - wynik operacji różny od zera1 - wynik operacji równy zeru

S

SF (sign flag) - znacznik znaku - równy najbardziej znaczącemubitowi wyniku

0 - wynik operacji dodatni1 - wynik operacji ujemny

F

OF (overflow flag) - znacznik nadmiaru 0 - suma modulo 2 przeniesień z najbardziej

znaczącej pozycji i pozycji przedostatniej jest równa 0 1 - suma modulo 2 przeniesień z najbardziej znaczącej pozycji i pozycji przedostatniej jest równa 1 (przekroczenie zakresu w kodzie U2)F

TF (trap flag) - znacznik pułapki umożliwiającej pracę krokową0 - praca krokowa wyłączona1 - praca krokowa włączona, mikroprocesor po wykonaniu każdego rozkazu

wykona skok do odpowiedniego podprogramu obsługi przerwania

Znaczenia flag (S)

IF (interrupt flag) - znacznik przerwań 0 - brak zezwolenia na przyjmowanie

przerwań z wejścia INT 1 - zezwolenie na przyjmowanie przerwań

DF (direction flag) (C) - znacznik kierunku 0 - rejestry są zwiększane 1 - rejestry są zmniejszane

Page 15: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Znaczenia flag

IOPL (I/O priviege field) – poziom uprzywilejowania we/wy

0 - odczyt/zapis jest zabroniony 1 – odczyt/zapis jest dozwolonyd

NT (Nested task flag) - flaga zadania zagnieżdżonego

0 - obecny proces nie wywodzi się z żadnego innego

1 - proces jest zadaniem zagnieżdżonymg

RF (resume flag) – flaga wznowienia0 – nie wystąpiło przerwanie zatrzymujące

wykonanie programu1 - wystąpiło przerwanie zatrzymujące

wykonanie programug

VM (Virtual-8086 mode flag) – flaga trybu wirtualnego 8086

0 - brak przejścia, pozostanie w obecnym trybie 1 - przejście w tryb emulacji procesora 8086

Znaczenia flag (X)

AC (Alignment chcek flag) – sprawdzenie wyrownania

0 - włączone 1 - włączone

VIF (Virtual interrupt flag) – flaga przerwania wirtualnego

0 - nie pozwala na przerwania w trybie wirtualnym

1 – pozwala na wirtualne przerwania

VIP (Virtual interrupt pending flag) – oczekujące przerwanie wirtualne

0 - brak wirtualnych przerwań 1 - trwa wirtualne przerwanie

ID (identification flag) - identyfikacja 0 – nie można zmienić wartości 1 - można zmienić wartość

Page 16: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Wskaźnik instrukcji(instruction pointer)

IP - wskazuje na adres aktualnie wykonywanej instrukcji. Procesor ma zapętlony sposób działania: pobiera instrukcję, wykonuje ją i, na koniec cyklu, zwiększa zawartość rejestru IP o długość wykonanej instrukcji. W razie uruchomienia programu, początkowo rejestr IP wskazuje na początek segmentu kodu.

EIP – rozszerzenie IP na 32 bityRIP – rozszerzenie IP na 64 bity

- nie możemy się dostać do IP bezpośrednio przez software- kontrolowany jest przez instrukcje takie jak: JMP, Jcc, CALL,

RET, przerwania i wyjątki

Page 17: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestry koprocesora FPU (floating point unit)

Czyli tak zwany koprocesor - Jest to blok procesora wspomagający go w obliczeniach zmiennoprzecinkowych

Składa się z:- Rejestrów kontrolnych- Rejestru statusu- rejestru znaczników- wskaźnika instrukcji- wskaźnika opernadów

Page 18: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestry kontrolne

Istnieje 5 rejestrów kontrolnych:d

CR0- Modyfikuje podstawowe operacje procesora.k

CR1- Ten rejestr jest zarezerwowany i nie mamy do niego żadnego dostępu.

d

CR2- Jeśli dojdzie do gdzieś do błędu, to adres wystąpienia tego błędu jest przechowywany właśnie w CR2

d

CR3- Używany tylko jeśli bit PG w CR0 jest ustawiony. CR3 umożliwia procesorowi zlokalizowanie położenia tablicy katalogu stron dla obecnego zadania. Ostatnie (wyższe) 20 bitów tego rejestru wskazują na wskaźnik na katalog stron zwany PDBR (ang. Page Directory Base Register).

d

CR4- Używany w trybie chronionym w celu kontrolowania operacji takich jak wsparcie wirtualnego 8086, technologii stronicowania pamięci, kontroli błędów sprzętowych i innych.

Page 19: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestry kontrolne

- Mają długość 32 bitów na procesorze 386 lub wyższym. - Na procesorze x86-64 analogicznie rejestry mają długość 64 bitów.

Page 20: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestry kontrolne - CR0

PE (Protection Enabled) 0 – pracuje w trybie rzeczywistym 1 – pracuje w trybie chronionym

MP (Monitor Coprocessor)1 – kontroluje instrukcje WAIT/FWAIT

EM (Emulate Flag) 0 – obecność jednostki x87 1 – nie ma żadnego koprocesora

TS (Task switched) Pozwala zachować zadania x87.1 – przełączanie zadań

ES (Extention type) Mówi nam jaki mamy koprocesor.0 – 80287

1 – 80387

NE (Numeric Error)1 – włącza wewnętrzne raportowanie błędów FPU

WP (Write Protection) 0 – ochrona wyłączona 1 – włącza ochronne zapisu

AM (Aligment Mask)0 – maska wyłączona 1 – włącza maskę wyrównania

NW (No Write-Through) 0 – zapis do pamięci poprzez cache 1 – bezpośredni zapis do pamięci

CD (Casche disable) 0 – pamięć cache włączona1 – pamięć cache wyłączona

PG (Paging Flag) 0 – wyłączone stronicowanie 1 – włączone stronicowanie

Page 21: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestry kontrolne - CR4

VEM (Virtual 8086 Mode Extensions)

1 – włącza wirtualną flagę przerwańg

PVI (Protected Mode Virtual Interrupts)

1 - włącza sprzętowe wsparcie dla wirtualnej

flagi przerwań (VIF) w trybie chronionym;jhbj

TSD (Time Stamp Disable)

0 - rozkaz RDTSC może być wykonany

na każdym poziomie uprzywilejowania

1 - rozkaz RDTSC może być wykonany

tylko w poziomie uprzywilejowania 0

(czyli w trybie jądra)s

PGE (Page Global Enabled)

1 – włącza globalne stronicowanie

PCE (Performance-Monitoring Counter Enable)

0 - rozkaz może być wykonany tylko w

trybie jądra (poziom 0)

1 - rozkaz RDPMC może być wykonany w

każdym poziomie uprzywilejowani;jhbdj

OSFXSR (Operating system support for FXSAVE

and FXSTOR instructions)

1 –Wsparcie systemu operacyjnego dla

instrukcji FXSAVE i FXSTORg,,

OSXMMEXCEPT (Operating System Support for

Unmasked SIMD Floating-Point Exceptions)

1 - Wsparcie systemu operacyjnego dla

niemaskowanych wyjątków technologii SIMD

Page 22: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestr MMX

* Rozszerzenie MMX wraz ze swoimi rejestrami zostało wprowadzone w procesorach Pentium (1997).

k

* Rejestry MMX są ponumerowane od

MM0 do MM7 i wszystkie są 64-bitowe. i

* Rejestry te nie są wydzielone, lecz

są częścią składową rejestrów jednostki

stałoprzecinkowej. i

* MMX pozwala na :

- przeprowadzanie kilku obliczeń stałoprzecinkowych jednocześnie.

- wykorzystywane są również przez rozszerzenia stworzone przez AMD - 3DNow oraz 3DNow!, które z kolei umożliwiają przeprowadzanie obliczeń zmiennoprzecinkowych.

Page 23: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestr XMM

* Rejestry XMM zostały wprowadzone

wraz z rozszerzeniem SSE w

procesorach Pentium III (1999).

* Są ponumerowane od XMM0 do XMM7,

każdy po 128 bitów.

* Rozszerzenie SSE jest kontynuacją

rozszerzenia MMX, gdyż założenia są

podobne, lecz umożliwiają dodatkowo

obliczenia na liczbach

zmiennoprzecinkowych.

* Co więcej rejestry XMM nie są "aliasami"

na rejestry FPU, zatem koprocesor i

Rejestry technologii SSE mogą być

używane równolegle.

Page 24: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Rejestr YMM

AVX (Advanced Vector Extensions) – rozszerzenie zestawu instrukcji SSE opublikowane w marcu 2008 przez firmę Intel.

* wprowadzono 256-bitowe rejestry

* Dodano kilka rozkazów działających wyłącznie na rejestrach YMM (19 instr).

* Dodane specjalizowane instrukcje wspomagające szyfrowanie AES (6 instr).

* Rozszerzone kodowanie rozkazów(166 instr).

* Dodane 4-argumentowe rozkazy akumulujące wyniki mnożenia wektorów liczb zmiennoprzecinkowych (12 instr).

Page 25: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Mnemoniki instrukcji

PS, PD - wektor liczb zmiennoprzecinkowych,SS, SD - skalar (pierwszy element wektora), tj.

liczba zmiennoprzecinkowa, odpowiednio, pojedynczej i podwójnej precyzji.

i

wyniki mnożenia rozpoczynają się od VFM lub VFNM, np. VFMADDPD

natomiast mnemoniki rozkazów wspomagających szyfrowanie od AES. np. AESDEC

Page 26: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Instrukcje

Przesłaniania:- MOV – przesłanianie proste

- XCHG – wymiana

- MIVSX – przesłanianie z rozszerzeniem bitu znaku

- MOVZX – przesłanie z rozszerzonymi zerami

Arytmetyczno-logiczne (jednoargumentowe):- INC, DEC – inkrementacja, dekrementacja

- NOT, NEG – negacja bitów, zamiana znaku

Arytmetyczno-logiczne (dwuargumentowe):- ADD, ADC – inkrementacja, dekrementacja

- SUB, SBB – odejmowanie zwykłe i z przeniesieniem

- CMP – porównanie: odejmowanie bez zapisu wyniku

- AND, OR, XOR – logiczne bitowe

- TEST – test: iloczyn logiczny bez zapisu wyniku

Page 27: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Instrukcje

Przesunięcia i rotacje:liczba pozycja zapisana jest jako stała w instrukcji albo w CL

- SHL, SHR – logiczne w lewo/prawo; z dopełnieniem zerami

- SAR – arytmetyczne w prawo; z kopiowaniem znaku

- ROL, ROR – rotacja w lewo/prawo

- RCL, RCR – rotacja z bitem przeniesienia

- SHLD, SHRD – przesunięcie dwóch słów w lewo/prawo z zapisem bardziej/mniej znaczącego słowa wyniku

Pobieranie adresu efektywnego: LEA- LEA EAX [EBX*8]

- LEA EAX [EBX+EBX*8]

- stosowane często do mnożenia przez 3,4,5,8,9

Page 28: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

Instrukcje

Mnożenie i dzielenie:

- jednoargumentowe – zawiera argument domyślny

- dwuargumentowe – rejestr, rejestr/pamięć

- trójargumentowe – rejestr, rejestr/pamięć, stała

- MUL, IMUL, DIV, IDIV – bez znaku i ze znakiem

Skoki: - JMP – skok bezwarunkowy

- CALL – skok ze śladem powrotu, przekazanie sterowania do procedury

- Jcc– skok po spełnieniu warunku

- JMP EAX– skok ze wskazanym zmiennym adresem docelowym

- JMP [EBX+ECX*4]– skok ze wskazanym zmiennym adresem docelowym

- RET – powrót z procedury

- RET n – powrót z procedury, po zdjęciu ze stosu n bajtów argumentów

Page 29: Budowa wnętrza procesora x86 - AGH University of Science ...orion.fis.agh.edu.pl/~swientek/asm/1b_Kuczynska... · RF (resume flag) – flaga wznowienia 0 – nie wystąpiło przerwanie

DZIĘKUJEMY ZA UWAGĘ!