1 / 39

ISA-niveauet (1)

ISA-niveauet (1). Machine Language : You try to shoot yourself in the foot only to discover you must first reinvent the gun, gunpowder, the bullet, and your foot. Niveauer af virtuelle maskiner. h øjniveausprog. symbolsk maskin kodeniveau. ISA niveauet / maskin kodeniveauet / maskinniveau.

Download Presentation

ISA-niveauet (1)

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. ISA-niveauet (1) Machine Language: You try to shoot yourself in the foot only to discover you must first reinvent the gun, gunpowder, the bullet, and your foot. dComNet

  2. Niveauer af virtuelle maskiner højniveausprog symbolsk maskinkodeniveau ISA niveauet / maskinkodeniveauet / maskinniveau dComNet

  3. Instruction Set Architecture Level Grænseflade mellem hardware og software: k = 6-i-j oversættelse 01100011100 …. Fysisk maskine: Pentium, UltraSPARC, Intel 8051,… Interessant for maskinkodeprogrammører (eks: device drivere, optimering) og oversættere (compilere). dComNet

  4. Fornuftige spørgsmål om en maskine 1. Hvad skal maskinen bruges til? 2. Hvordan programmeres maskinen? 3. Hvordan er maskinen opbygget? dComNet

  5. Svar for ISA-niveauet • Hvad skal maskinen bruges til? Til afvikling af programmer skrevet i højniveausprog. 2. Hvordan programmeres maskinen? I maskinkode, men i praksis skrives programmer i symbolsk maskinkode, som derefter oversættes til absolut maskinkode. • Hvordan er maskinen opbygget? Baseret på von Neumann maskinarkitektur. dComNet

  6. Opbygning og begreber Afvikle absolut maskinkode gemt i lageret (Main memory) Begreber: Kontrol- og beregningsenhed, registre. Lager, lagerceller, lagermodellen. Maskininstruktioner (ordrer), instruktionssæt, ordreformat. Ydre enheder (I/O devices). dComNet

  7. Instruktionsformat og repræsentation højniveau Symbolsk maskinkode absolut maskinkode k = 6-i-j; bipush 6 0x10 0x06 iload 1 0x15 0x01 isub 0x64 iload 2 0x15 0x02 isub 0x64 istore 3 0x36 Absolut maskinkode her opskrevet i hexadecimal notation, men ligger i binær representation i lageret. dComNet

  8. Udførsel af maskinkode Via fetch-decode-execute cycle (SCO s. 54): • Fetch the next instruction from memory into the instruction register. • Change the program counter to point to the following instruction • Determine the type of instruction just fetched. • If the instruction uses a word in memory, determine where it is. • Fetch the word, if needed, into a CPU register. • Execute the instruction. • Go to step 1 to begin executing the following instruction. Hver iteration af løkken udfører en maskininstruktion. dComNet

  9. Udførsel af maskininstruktion Involverer oftest den aritmetisk logiske enhed (ALU’en): Operander må typisk hentes ind fra lageret før ALU’en kan opererer på dem ifm. udførsel af instruktionen. dComNet

  10. Registre Kan lagre et antal bit afhængig af registerbredden. Kontrolinformation program counter instruktionsregister stack pointer stack frame pointer … Operander Ikke alle registre er tilgængelige for ISA-programmøren. dComNet

  11. Lageret Indeholder program og operander (data). Organiseret som sekvens af celler som hver lagrer et antal bit: 1 byte er 8 bit Celler i lageret udpeges af adresser 0,...,n-1. dComNet

  12. Maskinord Celler grupperes i maskinord (words) Typisk 4 eller 8 byte (32 eller 64 bit). Størrelsen er typisk relateret til bredden af registre på maskinen. dComNet

  13. Foreløbig opsummering Maskinordrer (programmet) befinder sig i lageret. Operander (data) befinder sig i lageret og i registre. Kontrolinformation befinder sig i registre. Hvordan tilgås operander i lageret? Hvordan implementeres metodekald i maskinkode? dComNet

  14. IJVM • Simplificering Java’s Virtuelle Maskine (JVM): • Kun heltalsoperationer og ingen objektorientering. dComNet

  15. ? • Overvej med DIG SELV hvad outputtet er fra følgende program: • Diskuter med din nabo hvad svaret er .method main bipush 88 bipush 2 bipush 3 iadd ireturn 2 3 5 88 90 93 udefineret dComNet

  16. IJVM ordreformat dComNet

  17. Eksempel: ordreformat bipush 6 0x10 0x06 iload 1 0x15 0x01 isub 0x64 iload 2 0x15 0x02 isub 0x64 istore 3 0x36 dComNet

  18. 32 bit 8 bit 32 bit IJVM Lagermodel Opdelt i tre områder (konstant pool, stakken, method area): Indlejret i et 4Gb lineært lager: 4.294.967.296 celler (1 byte/celle). dComNet

  19. IJVM registre Program Counter (PC): 32-bit register Udpeger aktuel instruktion (byte) i method area. Stack Pointer (SP) :32-bit register Udpeger øverste element (word) på stakken. Local Variable Frame Pointer (LV):32-bit register Udpeger bunden (word) af det aktuelle stakafsnit. Constant Pool Pointer:32-bit register Udpeger bunden (word) af konstant pool i lageret Ingen registre kan direkte tilgås via IJVM instruktioner. dComNet

  20. Udførsel af instruktioner Ændrer maskinens tilstand jf. ”Meaning”: bipush 6 0x10 0x06 (PC, SP, LV, Stak) → (PC', SP', LV', Stak') dComNet

  21. Stakken En “abstraktion” ovenpå lageret. Bruges til at lave beregninger: Bruges til udførsel af metodekald: dComNet

  22. Rekursive metodekald /* towers.java */ public class towers { public static void towers(int n, int i, int j) { int k; if (n == 1) System.out.println ("Move a disk from " + i + " to " + j); else { k = 6 - i - j; towers(n-1, i, k); towers(1, i, j); towers(n-1, k, j); } } public static void main(String[] args) { towers(3, 1, 3); } } Værdier af parametre er lokale for hver instans? Returnering til den korrekte instans ved terminering? dComNet

  23. Metodekald Understøttes af instruktionerne: invokevirtual, ireturn, iload, istore Baseret på begrebet stakafsnit (stack frame): • Etableres når en metode kaldes (invokevirtual). • Nedlægges når metoden returnerer (ireturn). Et stakafsnit indeholder: • Argumenter/parametre for metoden (tilgås via iload) • Værdier for lokale variable (tilgås via iload/istore) • Kontrolinformation til genetablering af tilstand. Registret LV udpeger altid bunden af det aktuelle stakafsnit. dComNet

  24. invokevirtual callee dComNet

  25. ireturn dComNet

  26. ? • Overvej med DIG SELV hvad outputtet er fra følgende program: • Diskuter med din nabo hvad svaret er .method test .args 2 .define x = 1 iload x bipush 1 isub ireturn .method main bipush 88 bipush 2 invokevirtual test ireturn dComNet

  27. ? dComNet

  28. IJVM ISA-niveau Kan implementeres via et mikroprogram på Mic-1 mikroarkitekturen: dComNet

  29. IJVM Simulator Kan afvikles på alle DAIMI Linux-maskiner efter daimi-setup -a /users/kursus/dArk/dArk-tools ijvm-asm oversætter fra symbolsk IJVM maskinkode ijvm simulerer udførelsen af IJVM maskinkode Læs i IJVM Tools Manual tilgængelig via hjemmesiden. Afvikler IJVM maskinkode som om den var en fysisk arkitektur. dComNet

  30. Windows (NOT SUPPORTED) • Se hjemmesiden – ijvm tools manual dComNet

  31. dComNet

  32. dComNet

  33. test.j .method main // int main .args 3 // ( int a, int b ) .define a = 1 .define b = 2 // { bipush 88 // Push object reference. iload a iload b invokevirtual min ireturn // return min ( a, b ); // } dComNet

  34. .method min // int min .args 3 // ( int a, int b ){ .define a = 1 .define b = 2 .locals 1 // int r; .define r = 3 iload a // if ( a >= b ) iload b isub // stack = a - b, ... ; a - b < 0 => a < b iflt else iload b // r = b; istore r goto end_if else: // else iload a // r = a; istore r end_if: iload r // return r; ireturn // } dComNet

  35. oversættes til ijvm-asm test.j test.bc main index: 0 method area: 40 bytes 00 03 00 00 10 58 15 01 15 02 b6 00 01 ac 00 03 00 01 15 01 15 02 64 9b 00 0a 15 02 36 03 a7 00 07 15 01 36 03 15 03 ac constant pool: 2 words 00000000 0000000e test.j fortolkes af ijvm test.bc 77 43 IJVM simulator dComNet

  36. Antal argumenter for main Antal lokale variable for main Start adresse for main Start adresse for min main index: 0 method area: 40 bytes 0 00 03 2 00 00 4 10 58 bipush 88 6 15 01 iload 1 8 15 02 iload 2 10 b6 00 01 invokevirtual 1 13 ac ireturn 14 00 03 16 00 01 18 15 01 iload 1 20 15 02 iload 2 22 64 isub 23 9b 00 0a iflt 10 26 15 02 iload 2 28 36 03 istore 3 30 a7 00 07 goto 7 33 15 01 iload 1 35 36 03 istore 3 37 15 03 iload 3 39 ac ireturn constant pool: 2 words 00000000 0000000e dComNet

  37. ijvm test.bc 77 43 IJVM Trace of foo stack = 0, 1, 43, 77, 15 bipush 88 [10 58] stack = 88, 0, 1, 43, 77, 15 iload 1 [15 01] stack = 77, 88, 0, 1, 43, 77, 15 iload 2 [15 02] stack = 43, 77, 88, 0, 1, 43, 77, 15 invokevirtual 1 [b6 00 01] stack = 12, 13, 0, 43, 77, 21, 0, 1 iload 1 [15 01] stack = 77, 12, 13, 0, 43, 77, 21, 0 iload 2 [15 02] stack = 43, 77, 12, 13, 0, 43, 77, 21 isub [64] stack = 34, 12, 13, 0, 43, 77, 21, 0 iflt 10 [9b 00 0a] stack = 12, 13, 0, 43, 77, 21, 0, 1 iload 2 [15 02] stack = 43, 12, 13, 0, 43, 77, 21, 0 istore 3 [36 03] stack = 12, 13, 43, 43, 77, 21, 0, 1 goto 7 [a7 00 07] stack = 12, 13, 43, 43, 77, 21, 0, 1 iload 3 [15 03] stack = 43, 12, 13, 43, 43, 77, 21, 0 ireturn [ac] stack = 43, 0, 1, 43, 77, 15 ireturn [ac] stack = 43 return value: 43 dComNet

  38. Opsummering ISA-niveauet: Maskininstruktioner og instruktionsformat. Absolut maskinkode. Registre og lagermodellen. IJVM maskinen: Registre: PC, SP, LV, CPP. Lagermodel: method area, constant pool, stakken. Metodekald og stakafsnit, parametre og lokale variable. IJVM simulatoren --> --> dComNet

  39. Bachelor og kandidat orientering HUSK: Bachelor- og kandidatorientering i lille og store aud. (INCUBA) fredag d. 28 oktober 14-17Bachelororientering it: Store Aud. 14-15 Bachelororientering datalogi: Lille Aud. 14-16Kandidatorientering: Store Aud. 15-17I kan møde og stille spørgsmål om kurserne til undervisere fra instituttets forskningsgrupper i området udenfor auditoriet - hvor der også vil være kaffe/the og kage

More Related