1 / 33

Računarstvo i informatika III Lekcija 11 - Hipoteti č ki procesori x86

Računarstvo i informatika III Lekcija 11 - Hipoteti č ki procesori x86. 886, 8286, 8486 i 8686. U ovoj lekciji. A rhitektura procesora x86. CPU registri - 16 bitova Opšti Specijalizovani AX - Akumulator IP - instruction pointer BX - Bazni registar Registar stanja (Flag)

marcos
Download Presentation

Računarstvo i informatika III Lekcija 11 - Hipoteti č ki procesori 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. Računarstvo i informatika IIILekcija 11 - Hipotetički procesori x86 886, 8286, 8486 i 8686

  2. U ovojlekciji...

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

  4. Skup instrukcija x86 • 20 instrukcija • 7 sa 2 argumentaMOV (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

  5. Instrukcije za prenošenje podataka • MOV reg, reg/mem/imm • MOV mem, reg Konvencije: mem (memory) - argument u memoriji reg (register) - argument u procesorskom registru imm (immediate) - neposredni argument (konstanta)

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

  7. Instrukcije za predaju upravljanja • JA dest skok ako je prvi veći (Above) • JAE dest skok ako je prvi veći ili jednak (Above or Equal) • JB dest skok ako je prvi manji (Below) • JBE dest skok ako je prvi manji ili jednak (Below or Equal) • JE dest skok ako su jednaki (Equal) • JNE dest skok su različiti (Not Equal) • JMP dest bezuslovni skok • IRET povratak iz interapta (Interrupt RETurn)

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

  9. Mesta sa kojih naredbe dobavljaju argumente

  10. Vreme izračunavanja argumenata

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

  12. Indirektno i indeksno adresiranje

  13. Kodiranje instrukcija sa dva argumenta 8 bitova za OPKOD16-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 = BX 010 = AND 10 = CX 010 = CX 011 = CMP 11 = DX 011 = DX 100 = SUB 100 = [BX] 101 = ADD 101 = [xxxx+BX] 110 = MOV reg, reg/mem/imm 110 = [xxxx] 111 = MOVmem, reg 111 = const

  14. Kodiranje instrukcija sa jednim argumentom 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 = BX 10 = NOT 010 = CX 011 = ilegalna 011 = DX 100 = [BX] 101 = [xxxx+BX] 110 = [xxxx] 111 = const

  15. Kodiranje instrukcija bez argumenata 000 00 + 3 bita za OPKOD 000 = ilegalna 100 = IRET 001 = ilegalna 101 = HALT 010 = ilegalna 110 = GET 011 = BRK 111 = PUT

  16. Kodiranje instrukcija skoka 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 = JNE 010 = JB 011 = JBE 100 = JA 101 = JAE 110 = JMP 111 = ilegalan

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

  18. 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 Izvršavanje MOV reg,reg i MOV reg,mem

  19. 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 Izvršavanje MOV reg,[BX] i MOV reg,[xxxx]

  20. MOV AX,[xxxx+BX]110 00 110 xxxx C5 xxxx K1 K2 K3 K4 K5 K6 K7 K8 ukupno 10-12 taktova Izvršavanje MOV reg,[xxxx+BX]

  21. Vreme izvršavanja instrukcija na procesoru 886

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

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

  24. Korišćenje bafera naredbi • Prefetch queue kod realnih procesora • 8086 - 6 bajtova • 80386 - 16 bajtova • 8486 - 32 bajta

  25. Vreme izvršavanja instrukcija na procesoru 8286

  26. Korišćenje tekućih linija

  27. Prazni odeljci na tekućoj liniji (Pipeline Stall)

  28. Harvardska arhitektura računara

  29. Interna struktura procesora 8486

  30. Opasnost za podatake (data hazard) Opasnost od mešanja podataka i njeno otklanjanje

  31. Interna struktura procesora 8686

  32. Pitanja i zadaci • Opišite arhitekturu hipotetičkih procesora x86. • Koje instrukcije čine skup instrukcija x86? • Koje načine adresiranja koriste procesori x86? • Kako se kodiraju instrukcije sa 2 argumenta, sa jednim argumentom i bez argumenata procesora x86? • Kako se kodiraju instrukcije skoka? • Opišite sekvencijalno izvršavanje instrukcija 886 proceosra. • Kako se može ubrzati izvršavanje instrukcija? • Šta je bafer naredbi (prefetch queue)? • Šta su tekuće linije (pipelines) i koji se problemi javljaju kada se koriste tekuće linije za izvršavanje instrukcija? • Kako se realizuje superskalarno izvršavanje?

More Related