RS11 Hipotetički procesori x86 - 1 Matematička gimnazija Beograd
Računarstvo i informatika III
Lekcija 11 - Hipotetički procesori x86 886, 8286, 8486 i 8686
RS11 Hipotetički procesori x86 - 2 Matematička gimnazija Beograd
Šta ćemo učiti
skup instrukcija
načini adresiranja
kodiranje instrukcija
sekvencijalno izvršavanje
bafer naredbi (prefetch queue)
tekuće linije (pipelines)
superskalarne operacije
U ovoj lekciji...U ovoj lekciji...U ovoj lekciji...U ovoj lekciji...
RS11 Hipotetički procesori x86 - 3 Matematička gimnazija Beograd
Arhitektura procesora x86
° CPU registri - 16 bitova- Opšti Specijalizovani- AX - Akumulator IP - instruction pointer- BX - Bazni registar Registar stanja (Flag)- CX - Count - DX - Data
° Aritmetičko - logički uređaj (ALU)
° Bus interface unit (BIU)
RS11 Hipotetički procesori x86 - 4 Matematička gimnazija Beograd
Skup instrukcija x86
° 20 instrukcija• 7 sa 2 argumenta
MOV (2 forme), ADD, SUB, CMP, AND, OR• 8 sa jednim
NOT, JE, JNE, JB, JBE, JA, JAE, JMP• 5 bez, argumenta
BRK, IRET, HALT, GET i PUT
° Instrukcija za prenošenje podataka MOV
° Aritmetičke i logičke instrukcije
° Instrukcije za predaju upravljanja
RS11 Hipotetički procesori x86 - 5 Matematička gimnazija Beograd
Instrukcije za prenošenje podataka
° MOV reg, reg/mem/imm
° MOV mem, reg
Konvencije:mem (memory) - argument u memorijireg (register) - argument u procesorskom registruimm (immediate) - neposredni argument (konstanta)
RS11 Hipotetički procesori x86 - 6 Matematička gimnazija Beograd
Aritmetičke i logičke instrukcije
° ADD reg, reg/mem/imm
° SUB reg, reg/mem/imm
° CMP reg, reg/mem/imm
° AND reg, reg/mem/imm
° OR reg, reg/mem/imm
° NOT reg/mem
RS11 Hipotetički procesori x86 - 7 Matematička gimnazija Beograd
Instrukcije za predaju upravljanja
° JA destskok ako je prvi veći (Above)
° JAE dest skok ako je prvi veći ili jednak (Above or Equal)
° JB destskok ako je prvi manji (Below)
° JBE dest skok ako je prvi manji ili jednak (Below or Equal)
° JE destskok ako su jednaki (Equal)
° JNE dest skok su različiti (Not Equal)
° JMP dest bezuslovni skok
° IRET povratak iz interapta (Interrupt RETurn)
RS11 Hipotetički procesori x86 - 8 Matematička gimnazija Beograd
Ostale instrukcije
° GET čita heksadek. podatak sa ulaza u AX
° PUT štampa heksadek. podatak iz AX
° HALT završava rad programa
° BRK privremeno prekida rad programa
RS11 Hipotetički procesori x86 - 9 Matematička gimnazija Beograd
Mesta sa kojih naredbe dobavljaju argumente
RS11 Hipotetički procesori x86 - 10 Matematička gimnazija Beograd
Vreme izračunavanja argumenata
vreme argumenti
asembliranja punjenja izvršavanja
NEPOSREDNI *****
REGISTARSKI *****MEMORIJSKI direktni indirektni ***** *****
RS11 Hipotetički procesori x86 - 11 Matematička gimnazija Beograd
Načini adresiranja
° forma zadavanja adrese argumenta
° Registarsko- MOV AX,BX
° Neposredno- MOV AX,3
° Direktno- MOV AX, [1000]
° Indirektno- MOV AX, [BX]
° Indeksno- MOV AX, [1000+BX]
RS11 Hipotetički procesori x86 - 12 Matematička gimnazija Beograd
Indirektno i indeksno adresiranje
RS11 Hipotetički procesori x86 - 13 Matematička gimnazija Beograd
8 bitova za OPKOD 16-bitno polje kod JMP instrukcija ili ako se za memorijski argument koristi neposredno, indirektno ili indeksno adresiranje
I I I R R M M M
000 = special 00 = AX 000 = AX 001 = OR 01 = BX 001 = BX010 = AND 10 = CX 010 = CX011 = CMP 11 = DX 011 = DX100 = SUB 100 = [BX]101 = ADD 101 = [xxxx+BX]110 = MOV reg, reg/mem/imm 110 = [xxxx]111 = MOV mem, reg 111 = const
Kodiranje instrukcija sa dva argumenta
RS11 Hipotetički procesori x86 - 14 Matematička gimnazija Beograd
000 + 5 bitova + 16-bitno polje jedino kod JMP instrukcija ili ako se za memorijski argument koristi neposredno,
OPKOD indirektno ili indeksno adresiranje I I M M M 00 =bez arg. 000 = AX 01 = JMP 001 = BX10 = NOT 010 = CX011 = ilegalna 011 = DX
100 = [BX]101 = [xxxx+BX]110 = [xxxx]111 = const
Kodiranje instrukcija sa jednim argumentom
RS11 Hipotetički procesori x86 - 15 Matematička gimnazija Beograd
000 00 + 3 bita za OPKOD
000 = ilegalna 100 = IRET001 = ilegalna 101 = HALT010 = ilegalna 110 = GET011 = BRK 111 = PUT
Kodiranje instrukcija bez argumenata
RS11 Hipotetički procesori x86 - 16 Matematička gimnazija Beograd
000 01 + OPKOD 16-bitno polje sadrži adresu na koju će skok predati upravljanje (adresu koja će biti upisana u IP)
000 = JE 001 = JNE010 = JB 011 = JBE100 = JA 101 = JAE110 = JMP111 = ilegalan
Kodiranje instrukcija skoka
RS11 Hipotetički procesori x86 - 17 Matematička gimnazija Beograd
MOV reg, reg/mem/imm° K1 - Donošenje bajta sa opkodom instrukcije iz memorije 1
takt
° K2 - Uvećanje IP da pokazuje na sledeći bajt 1 takt
° K3 - Dekodiranje instrukcije 1 takt
° K4 - Ako je potrebno, donošenje 16-bitne const iz memorije 0-2 takta
° K5 - Ako je potrebno,uvećanje IP da pokazuje na bajt iza argumenta
0-1 takt
° K6 - Ako je potrebno, izračunavanje memorijske adrese0-2 takta
° K7 - Donošenje izvornog argumenta 0-3 takta
° K8 - Upisivanje donetog argumenta u procesorski registar 1 takt
ukupno: 5-11 taktova
Izvršavanje instrukcija na 886 procesoru
RS11 Hipotetički procesori x86 - 18 Matematička gimnazija Beograd
Izvršavanje MOV reg,reg i MOV reg,mem
° MOV AX,BX 110 00 001 C1
- K1- K2- K3- K7- K8
° ukupno 5 taktova
° MOV AX,xxxx 110 00 111 xxxx C7 xxxx
- K1- K2- K3- K4- K5- K8
° ukupno 6-7 taktova
RS11 Hipotetički procesori x86 - 19 Matematička gimnazija Beograd
Izvršavanje MOV reg,[BX] i MOV reg,[xxxx]
° MOV AX,[BX]110 00 100 C4
- K1- K2- K3- K6- K7- K8
° ukupno 7-8 taktova
° MOV AX,[xxxx]110 00 110 xxxx C6 xxxx
- K1- K2- K3- K4- K5- K7- K8
° ukupno 8-10 taktova
RS11 Hipotetički procesori x86 - 20 Matematička gimnazija Beograd
Izvršavanje MOV reg,[xxxx+BX]
° MOV AX,[xxxx+BX]110 00 110 xxxx C5 xxxx
- K1- K2- K3- K4- K5- K6- K7- K8
° ukupno 10-12 taktova
RS11 Hipotetički procesori x86 - 21 Matematička gimnazija Beograd
Vreme izvršavanja instrukcija na procesoru 886
RS11 Hipotetički procesori x86 - 22 Matematička gimnazija Beograd
Ubrzanja
° preklapanjem koraka izvršavanja
° dodavanjem bafera u procesor za čuvanje unapred donetih naredbi - bafer naredbi (prefetch queue) 8286
° korišćenjem tekućih linija (pipelines) 8486
° korišćenjem ugrađenog keša (cache) 8486
° korišćenjem više tekućih linija - superskalaranim izvršavanjem 8686
RS11 Hipotetički procesori x86 - 23 Matematička gimnazija Beograd
Preklapanje koraka
° #1: K4, K5, K6, K7 (npr. MOV AX,[1000+BX]) K4, K5/6, K7
° #2: K4, K5, K7 (npr. MOV AX,[1000]) K4, K5/7
° #3: K6, K7 (npr. MOV AX,[BX]) K6, K7
° #4: K7 (npr. MOV AX,BX) K7
° K1' - Donošenje bajta instrukcije iz memorije;
° K2' - Dekodiranje instrukcije i ažuriranje IP;
° K3' - Ako je potrebno, donošenje 16-bitne konstante iz memorije;
° K4' - Ako je potrebno, izračunavanje memorijske adrese;
° K5' - Donošenje izvornog argumenta i ažuriranje IP;
° K6' - Upisivanje donetog argumenta na odredište.
RS11 Hipotetički procesori x86 - 24 Matematička gimnazija Beograd
Korišćenje bafera naredbi
Prefetch queue kod realnih procesora8086 - 6 bajtova80386 - 16 bajtova8486 - 32 bajta
RS11 Hipotetički procesori x86 - 25 Matematička gimnazija Beograd
Vreme izvršavanja instrukcija na procesoru 8286
RS11 Hipotetički procesori x86 - 26 Matematička gimnazija Beograd
Korišćenje tekućih linija
RS11 Hipotetički procesori x86 - 27 Matematička gimnazija Beograd
Prazni odeljci na tekućoj liniji (Pipeline Stall)
RS11 Hipotetički procesori x86 - 28 Matematička gimnazija Beograd
Harvardska arhitektura računara
RS11 Hipotetički procesori x86 - 29 Matematička gimnazija Beograd
Interna struktura procesora 8486
RS11 Hipotetički procesori x86 - 30 Matematička gimnazija Beograd
Opasnost za podatake (data hazard)
Opasnost od mešanja podataka i njeno otklanjanje
RS11 Hipotetički procesori x86 - 31 Matematička gimnazija Beograd
Interna struktura procesora 8686
RS11 Hipotetički procesori x86 - 32 Matematička gimnazija Beograd
Pitanja i zadaci
1. Opišite arhitekturu hipotetičkih procesora x86.
2. Koje instrukcije čine skup instrukcija x86?
3. Koje načine adresiranja koriste procesori x86?
4. Kako se kodiraju instrukcije sa 2 argumenta, sa jednim argumentom i bez argumenata procesora x86?
5. Kako se kodiraju instrukcije skoka?
6. Opišite sekvencijalno izvršavanje instrukcija 886 proceosra.
7. Kako se može ubrzati izvršavanje instrukcija?
8. Šta je bafer naredbi (prefetch queue)?
9. Šta su tekuće linije (pipelines) i koji se problemi javljaju kada se koriste tekuće linije za izvršavanje instrukcija?
10. Kako se realizuje superskalarno izvršavanje?
RS11 Hipotetički procesori x86 - 33 Matematička gimnazija Beograd
Pogled unapred
Arhitektura i organizacija RS
Modul 7: Funkcije i organizacija OM
Modul 8: Organizacija I/O sistema i spoljašnje memorije
Modul 11:Hipotetički procesori x86
Modul 10: Arhitektura skupa instrukcija
Modul 9: Funkcije i organizacija CPU
Operativni sistemi