Budowa wnętrza procesora x86

Podobne dokumenty
CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

Programowanie niskopoziomowe

Architektura komputerów. Asembler procesorów rodziny x86

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Procesory rodziny x86. Dariusz Chaberski

organizacja procesora 8086

Sprzęt i architektura komputerów

Architektura Systemów Komputerowych

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe

Sprzęt i architektura komputerów

Architektura komputerów

Architektura komputerów

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Programowanie w asemblerze Środowiska 64-bitowe

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Programowanie w asemblerze Środowiska 64-bitowe

Mikroinformatyka. Tryb wirtualny

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Metody Realizacji Języków Programowania

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

Organizacja typowego mikroprocesora

002 Opcode Strony projektu:

Lista instrukcji mikroprocesora Programowanie w assemblerze

Architektura komputerów

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Struktura i działanie jednostki centralnej

Materiały do wykładu. 7.Architekturax86. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Zaawansowane Architektury Procesorów Część 1

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Ćwiczenie 3. Konwersja liczb binarnych

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

BUDOWA I DZIAŁANIE MIKROPROCESORA

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Wybrane zagadnienia elektroniki współczesnej

Technika mikroprocesorowa I Wykład 2

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Programowanie Niskopoziomowe

Mikroinformatyka. Wielozadaniowość

LEKCJA TEMAT: Współczesne procesory.

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Programowanie komputera

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

J. Ułasiewicz Komputerowe systemy sterowania 1. 1 Architektura PC Ogólna struktura systemu jednoprocesorowego

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Architektura systemów komputerowych. Lista instrukcji procesora

Adam Kotynia, Łukasz Kowalczyk

Programowanie w asemblerze Architektura procesora

Architektura Systemów Komputerowych

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Programowalne układy logiczne

Architektura komputerów

WOJSKOWA AKADEMIA TECHNICZNA

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

PROGRAMOWANIE NISKOPOZIOMOWE

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu

Sterowanie pracą programu

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

Metody Realizacji Języków Programowania

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

1. Operacje logiczne A B A OR B

Budowa Mikrokomputera

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Podstawy programowania w języku C i C++

Mikroprocesor Intel 8088 (8086)

Magistrala systemowa (System Bus)

Programowanie w asemblerze Wprowadzenie

, " _/'--- " ~ n\l f.4e ' v. ,,v P-J.. ~ v v lu J. ... j -:;.",II. ,""", ",,> I->~" re. dr. f It41I r> ~ '<Q., M-c 'le...,,e. b,n '" u /.

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Mikroprocesory rodziny INTEL 80x86

Kurs Zaawansowany S7. Spis treści. Dzień 1

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Ćwiczenie nr 4. Zasady kodowania podprogramów

Schematy zarzadzania pamięcia

Załącznik do ćwiczenia w środowisku MASM32 Przesyłanie danych i zarządzanie danymi

Wprowadzenie do architektury komputerów. Model programowy procesora i jego struktura Procesory CISC i RISC

Materiały do wykładu. 4. Mikroprocesor. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Mikroinformatyka. Mechanizmy ochrony pamięci

Architektura systemów komputerowych. Konstrukcja i zasada działania mikroprocesora

Naturalny kod binarny (NKB)

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Programowanie w asemblerze Architektury równoległe

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Architektura typu Single-Cycle

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Transkrypt:

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

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)

Schemat blokowy mikroprocesora Intel IE-32 (32-bity) Jednostka wykonawcza Jednostka interfejsowa

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

Jednostka wykonawcza mod 32 mod 64

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)

Rejestr ogólnego przeznaczenia W skład bloku rejestru ogólnego przeznaczenia wchodzą: p - rejestr arytmetyczny - rejestr wskaźnikowy - rejestr indeksowy 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 przeznaczenia (General-Purpose Register) 8 bits 16 bits 32 bits - 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

Rejestr ogólnego przeznaczenia (General-Purpose Register) - Rejestr poczwórnych słów (Quadword Registers ) RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8 - R15

Rejestr ogólnego przeznaczenia (General-Purpose Register) KIEDYŚ: Rejestry danych: EAX rejestr akumulacji EBX - rejestr bazowy ECX - rejestr licznika EDX - rejestr danych Rejestry adresowe: ESP wskaźnik stosu EBP wskaźnik bazowy ESI - wskaźnik źródła 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.

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 j - możliwość korzystania z instrukcji wejścia-wyjścia, - informacje nt. ostatnio przeprowadzanej operacji arytmetycznej.

Rejestr znaczników (flag) EFLAG Flagi znajdujące się w rejestrze dzielimy na: k - flagi stanu (S) - flagi systemowe (X) - flagi sterowania (C)

Znaczenia flag (S) CF (carry flag) - znacznik przeniesienia 0 - wynik operacji arytmetycznej nie powoduje powstania przeniesienia z najbardziej znaczącego bitu 1 - 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 nieparzysta 1 - 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) ZF (zero flag) - znacznik zera 0 - wynik operacji różny od zera 1 - wynik operacji równy zeru S SF (sign flag) - znacznik znaku - równy najbardziej znaczącemu bitowi wyniku 0 - wynik operacji dodatni 1 - 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łączona 1 - praca krokowa włączona, mikroprocesor po wykonaniu każdego rozkazu wykona skok do odpowiedniego podprogramu obsługi przerwania 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

Znaczenia flag (X) IOPL (I/O priviege field) poziom uprzywilejowania we/wy 0 - odczyt/zapis jest zabroniony 1 odczyt/zapis jest dozwolony d NT (Nested task flag) - flaga zadania zagnieżdżonego 0 - obecny proces nie wywodzi się z żadnego innego 1 - proces jest zadaniem zagnieżdżonym g RF (resume flag) flaga wznowienia 0 nie wystąpiło przerwanie zatrzymujące wykonanie programu 1 - wystąpiło przerwanie zatrzymujące wykonanie programu g 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 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ść

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 bity RIP 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

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

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.

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.

Rejestry kontrolne - CR0 PE (Protection Enabled) 0 pracuje w trybie rzeczywistym 1 pracuje w trybie chronionym WP (Write Protection) 0 ochrona wyłączona 1 włącza ochronne zapisu 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 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łączona 1 pamięć cache wyłączona PG (Paging Flag) 0 wyłączone stronicowanie 1 włączone stronicowanie

Rejestry kontrolne - CR4 VEM (Virtual 8086 Mode Extensions) PCE (Performance-Monitoring Counter Enable) 1 włącza wirtualną flagę przerwań g 0 - rozkaz może być wykonany tylko w PVI (Protected Mode Virtual Interrupts) trybie jądra (poziom 0) 1 - włącza sprzętowe wsparcie dla wirtualnej 1 - rozkaz RDPMC może być wykonany w flagi przerwań (VIF) w trybie chronionym każdym poziomie uprzywilejowani ;jhbj ;jhbdj TSD (Time Stamp Disable) OSFXSR (Operating system support for FXSAVE 0 - rozkaz RDTSC może być wykonany and FXSTOR instructions) na każdym poziomie uprzywilejowania 1 Wsparcie systemu operacyjnego dla 1 - rozkaz RDTSC może być wykonany instrukcji FXSAVE i FXSTOR g,, tylko w poziomie uprzywilejowania 0 OSXMMEXCEPT (Operating System Support for (czyli w trybie jądra) s Unmasked SIMD Floating-Point Exceptions) PGE (Page Global Enabled) 1 - Wsparcie systemu operacyjnego dla 1 włącza globalne stronicowanie niemaskowanych wyjątków technologii SIMD

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.

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.

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

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

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

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

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

DZIĘKUJEMY ZA UWAGĘ!