Luento 11 Tulkinta ja emulointi

Samankaltaiset tiedostot
Java ohjelmien suoritus (3) Luento 11 Tulkinta ja emulointi. Java virtuaalikone (JVM) (5) JVM:n tietorakenteet (8) JVM:n tietorakenteet (jatkuu) (6)

Jakso 11 Tulkinta ja emulointi

Javaohjelmien suoritus (3) Jakso 11 Tulkinta ja emulointi. Java-virtuaalikone (JVM) (5) JVM:n tietorakenteet (8) JVM:n tietorakenteet (jatkuu) (6)

Java ohjelmien suoritus (3) Luento 11 Tulkinta ja emulointi. Java virtuaalikone (JVM) (5) JVM:n tietorakenteet (9) JVM:n tietorakenteet (jatkuu)

Luento 11 Tulkinta ja emulointi

Tulkinta ja emulointi

Java ohjelmien suoritus (3) Luento 11 Tulkinta ja emulointi

Luento 11 Tulkinta ja emulointi

Luento 11 Tulkinta ja emulointi

Copyright 2018 Teemu Kerola

Tietokoneen toiminta, K Tavoitteet (4)

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Java-ohjelman suoritus Java tavukoodi, Java-virtuaalikone. Java-ohjelmien emulointi ja käännös Java-suorittimet. C# ttk-91, Crusoe

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Transmeta Architecture

Transmeta Architecture

Teemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?

Luento 4 Aliohjelmien toteutus

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Jakso 4 Aliohjelmien toteutus

Transmeta Architecture

Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)

Tietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Transmeta Architecture

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Kertausluento luennoista 1-3 1

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi

Jakso 4 Aliohjelmien toteutus

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Tietokoneen toiminta Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2010

Luento 4 Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Tietokoneen toiminta, K Tavoitteet (4)

Luento 4 Aliohjelmien toteutus

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2010

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 12 Yhteenveto

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, K2000

Luento 12 Yhteenveto

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat?

Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright Tavoitteet (4)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 5 (verkkoluento 5) Suoritin ja väylä

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Tietokoneen toiminta (Computer Organization I)

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Tavoitteet (4) Luento 12 Yhteenveto. Keskeisiä asioita. Mitä hyötyä tästä on? (2) Esimerkkikone: TTK-91 laitteisto suoritin - CPU

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? 29/01/2001 Teemu Kerola, Copyright 2001

Luento 12 Yhteenveto

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Tiedon sijainti suoritusaikana (3) Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Miten tietoon viitataan? (4)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I) Aihepiiri. Mitä hyötyä tästä on? (3) Tavoitteet. Kurssien välisiä riippuvuuksia

Jakso 10 Ohjelman suoritus järjestelmässä

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokoneen toiminta (Computer Organization I)

Tiedon sijainti suoritusaikana. Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokoneen toiminta (Computer Organization I)

Aihepiiri Tietokoneen toiminta (Computer Organization I) Tavoitteet (4) Mitä hyötyä tästä on? (4) Kurssien välisiä riippuvuuksia

Tietokoneen toiminta (Computer Organization I)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Tietokoneen toiminta (Computer Organization I)

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä?

Tietokoneen toiminta (Computer Organization I) Mitä hyötyä tästä on? (4) Kurssien välisiä riippuvuuksia. Aihepiiri.

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Oppimistavoitteet kurssilla Tietokoneen toiminta

Luento 5 (verkkoluento 5) Suoritin ja väylä

Luento 10 Käännös, linkitys ja lataus

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 10 Käännös, linkitys ja lataus. Käännös Linkitys Dynaaminen linkitys Lataus

Jakso 10 Ohjelman suoritus järjestelmässä. Käännös Linkitys Dynaaminen linkitys Lataus

Luento 10 Käännös, linkitys ja lataus

Transkriptio:

Luento 11 Tulkinta ja emulointi Tulkinta ja emulointi Java ohjelman suoritus, tulkinta ja kääntäminen Suorittimen emulointi 1 Java ohjelmien suoritus (3) Java virtuaalikone Java tulkki Pentium II load iload i iload j iadd istore k Java ( esimerkiksi) natiiviympäristö k = i+j; Java ohjelma Java käännös iload i Java iload j byte-koodi iadd istore k (JIT) käännös latausmoduuli Pentium II 2 Luento 11, Tulkinta ja emulointi 1

Java virtuaalikone (JVM) (5) Hypoteettinen Geneerinen, sitä on helppo simuloida kaikilla todellisilla suorittimilla Useita säikeitä (thread) voi olla samanaikaisesti suorituksessa Tietorakenteet virtuaalikoneen suorittimen rekisterit Käskyt virtuaalikoneen suorittimen konekäskyt 226 käskyä á 32 bittiä 3 JVM:n tietorakenteet (8) JVM pino vähän kuten tavallinen AT-pino koostuu useista raameista tai kehyksistä (frames) (vrt. aktivointitietue) ei tarvita yhtenäistä muistialuetta allokoidaan natiivi-arkkitehtuurin kasasta (heap) toteutuksesta riippuen rajallinen tai dynaamisesti laajennettavissa tila loppu StackOverflowError, OutOfMemoryError http://java.sun.com/docs/books/vmspec/2nd-edition/html/vmspectoc.doc.html 4 Luento 11, Tulkinta ja emulointi 2

JVM:n tietorakenteet (jatkuu) (6) JVM kasa (JVM heap) yhteinen kaikille saman virtuaalikoneen säikeille automaattinen roskienkeruu (garbage collector) ei-käytössä oleva muistialue palautetaan uusiokäyttöön ei tarvita erikseen free operaatiota Java ohjelmassa voi hidastaa suoritusta milloin vain toteutuksesta riippuen kiinteän kokoinen tai dynaamisesti laajennettavissa ei tarvitse muodostaa yhtenäistä muistialuetta natiivijärjestelmän kasassa tila loppu OutOfMemoryError 5 JVM:n tietorakenteet (jatkuu) (6) JVM metodialue (JVM Method Area) yhteinen kaikille JVM säikeille vastaa tavallista kääntäjän tuottamaa koodisegmenttiä loogisesti osa JVM kasaa toteutuksesta riippuen kiinteän kokoinen tai dynaamisesti laajennettavissa tila loppu OutOfMemoryError 6 Luento 11, Tulkinta ja emulointi 3

JVM:n tietorakenteet (jatkuu) (7) Javan suoritusaikainen vakioallas (runtime constant pool) joka luokalle (class) tai liittymälle (interface) omansa suoritusaikainen esitystapa tiedoston class constant_pool -taulukolle vastaa vähän tavallista symbolitaulua useita erilaisia vakioita (käännösaikaiset literaalit, suoritusaikana ratkottavat attribuutit, ) talletetaan JVM metodialueelle tila loppu OutOfMemoryError 7 JVM:n tietorakenteet (jatkuu) (6) Natiivimetodien pinot (Native Method Stacks) toteutus voi käyttää tavallisia pinoja ( C stacks ) sellaisten natiivimetodien tukena, jota ei ole kirjoitettu Javalla käytetään myös Java tulkin toteutuksessa ei tarvita JVM toteutuksissa, joissa ei voi la natiivimetodeja toteutuksesta riippuen kiinteän kokoinen tai dynaamisesti laajennettavissa tila loppu StackOverflowError, OutOfMemoryError 8 Luento 11, Tulkinta ja emulointi 4

JVM:n tietorakenteet (jatkuu) (6) JVM rekisterit ks. Fig. 4-10 [Tane99] PC osoittaa johonkin JVM metodialueelle CPP osoittaa vakioaltaaseen LV on paikallisten muuttujien kantaosoite (vähän kuten FP ttk-91:ssä) SP osoittaa JVM operandipinon huipulle kaikki rekisterit implisiittisiä; niitä ei erikseen nimetä JVM konekäskyissä 9 JVM:n tietorakenteet (jatkuu) (6) JVM raami (frame, kehys) talletetaan JVM pinoon, luodaan metodin kutsun yhteydessä, vapautetaan metodista poistuttaessa paikalliset muuttujat parametrit, paluuarvon ja välitulokset dynaamisen linkityksen toteutusväline keskeytysten toteutusväline 10 Luento 11, Tulkinta ja emulointi 5

JVM raamin (8) Paikalliset muuttujat sisältävä taulukko viittaukset indeksoituna (0, 1, 2, ) rekisterin LV suhteen indeksit sanoina kaksi sanaa vaativa muuttuja (long, double) sijoitetaan kahteen peräkkäiseen (32 bittiseen) sanaan big-endian talletus Parametrit, paluuarvon ja välitulokset sisältävä operandipino SP osoittaa pinon huipulle pinoarkkitehtuuri (vs. rekisteriarkkitehtuuri) 11 JVM:n tiedon osoitusmoodit (4) Välitön operandi Indeksoitu iinc 2 34 iinc 2 34 tehollinen muistiosoite (LV) + 2 Pino-osoitus iadd korvaa pinon kaksi päällä olevaa kokonaislukua niiden summalla Taulukko-osoitus pinon kautta iaload Korvaa pinon pinnalla olevat taulukon alkuosoite ja indeksi k.o. taulukon alkiolla 12 Luento 11, Tulkinta ja emulointi 6

JVM käskyt (7) Peruslaskutoimitukset add, sub, mul, div, rem, neg Boolean and, or, xor, shl, shr, ushr Pinon hallinta dup, pop, swap, tauluk. luonti, esitystavan muutokset Load/Store load, aload, store, astore, push-käskyt Vertailut Kontrollinsiirrot Muut ks. Fig. 5-36 [Tane99] 13 Java tulkki (4) Emuloi JVM konekielen käskyjä (byte-koodia) Yksi käsky kerrallaan JVM rekisterit ja muistialueet emuloitu tulkin tietorakenteina Hidasta, mutta joustavaa iload i iload j iadd istore k Java tulkki Pentium II 14 Luento 11, Tulkinta ja emulointi 7

Käännös natiivikoneelle (3) Käännetään tavukoodi natiivikoneen konekielelle, ja suoritetaan normaalin ohjelman tapaan Käännetään tavukoodi korkean tason kielelle, joka sitten käännetään natiivikoneen konekielelle ongelma: dynaaminen linkitys iload i iload j iadd istore k dl latausmoduuli käännös Pentium II 15 Java JIT käännös (6) JIT = Just-in-Time Emuloi JVM konekielen käskyjä (byte-koodia) Kääntää luokan natiivikonekielelle dynaamisesti linkitettäväksi moduuliksi, juuri ennen luokan metodin kutsua Tarvitsee paljon muistia Voi hidastaa suoritusta, jos käännökseen menee enemmän aikaa kuin tulkitsemiseen JVM rekisterit ja muistialueet emuloitu tulkin tietorakenteina JIT käännös dl latausmoduuli iload i iload j iadd istore k Java tulkki Pentium II 16 Luento 11, Tulkinta ja emulointi 8

Java : Sun PicoJAVA II (4) Suoritinmäärittely, jossa byte-koodi -muodossa olevia ohjelmia voidaan sellaisenaan suorittaa Valinnainen välimuisti ja liukuluku Kaikki 226 JVM konekäskyä jotkut käskyt toteutettu aliohjelmilla, jotka aktivoidaan keskeytyskäsittelymekanismin avulla Myös 115 muuta konekäskyä käyttöjärjestelmän ja muiden ohjelmointikielten toteuttamiseksi 17 PicoJAVA II pino 64 (välimuisti-) rekisteriä JVM pinon huipun talletukseen loput JVM pinosta muistissa rekisterit (cache) 64 muisti Shawn Lauzon, Survey of the JavaChip http://www.cs.berkeley.edu/~neefe/ntu.fa98/shawn.project/javachip.html 18 Luento 11, Tulkinta ja emulointi 9

PicoJAVA II rekisterit (11) 25 rekisteriä á 32 bittiä PC, LV, CPP, SP (pino kasvaa alaspäin) OPLIM alaraja SP:lle; alitus aiheuttaa keskeytyksen FRAME osoittaa paikallisten muuttujataulukon jälkeen talletettuun metodista paluu osoitteeseen PSW rekisteri, joka kertoo pinon välimuistirekistereiden tämänhetkisen käytön 4 rekisteriä keskeytysten ja break-point ien käsittelyyn 4 rekisteriä säikeiden hallintaan 4 rekisteriä C ja C++ ohjelmien toteutukseen 2 rajarekisteriä sallitun muistialueen rajoittamiseen suorittimen version numero ja konfiguraatiorekisterit 19 PicoJAVA ylim. käskyt (5) Read/write ylimääräisille rekistereille Osoittimien manipulointikäskyt mitä tahansa muistialuetta voidaan suoraan lukea/kirjoittaa tarvitaan C/C++ varten C/C++ aliohjelmien kutsu ja paluukäskyt Natiivi HW manipulointi tyhjennä välimuisti (osittain? kokonaan?),... Muut käskyt power on/off,... 20 Luento 11, Tulkinta ja emulointi 10

PicoJAVA toteutuksia (2) Sun microjava 701 valinnainen välimuisti oma muistiväylä PCI väylä muille laitteille 16 ohjelmoitavaa I/O johdinta näppäimet, LEDit, 3 ohjelmoitavaa ajastinta ( kellolaitekeskeytykset) suunnattu halpoihin kannettaviin laitteisiin (kämmenmikro, PDA - Personal Digital Assistant) Sun ultrajava nopeampi, parempi, kalliimpi, suunnattu grafiikka- ja multimediasovelluksiin 21 Muita Java suorittimia JEM (Rockwell Collins) PSC1000 (Patriot Scientific) MJ501 (LG Semicon) 22 Luento 11, Tulkinta ja emulointi 11

Sun MAJC MAJC - Microprocessor Architecture for Java Computing arkkitehtuurin määrittely tavoitteena suuri nopeus Java, C ja C++ sovelluksille suunnattu multimediasovelluksiin verkossa tukee hyvin JIT-käännöstä 23 MAJC toteutus: MAJC 5200 (4) 1-4 ta Useiden (peräkkäin kutsuttavien) metodien samanaikainen suoritus eri suorittimilla ennakoiva (speculative) suoritukselle oma kasa peruutus (rollback), jos ennakoitu suoritus meni pieleen 4 säiettä suorituksessa per säikeen vaihto nopeampaa kuin muistista luku! laiterekisterit 4:lle säikeelle! välimuistin hudin aikana suoritetaan muita säikeitä Suunnattu interaktiiviseen TV:hen, virtuaalitodellisuussovelluksiin,... 24 Luento 11, Tulkinta ja emulointi 12

25 TTK-91 Emulointi (5) TTK-91 konekielen emulointi KOKSI simulaattorin osa Yksi käsky kerrallaan TTK-91 koneen rekisterit ja muisti emuloitu tulkin tietorakenteina ks. simulaattorin koodi load R1, 234 add R1, =5 mul R1, R2 TTK-91 emulaattori Pentium II 26 Luento 11, Tulkinta ja emulointi 13

Transmetan Crusoe (8) x86 konekielen emulointi, JIT käännös Natiivi käskykantaa ei ole julkistettu nopeampi, sama teknologia? yhtä nopea, vähemmän virtaa Monta x86 käskyä yhtäaikaa, sikin sokin emuloinnissa x86 rekisterit emuloitu natiivijärjestelmän laiterekistereillä x86 muisti emuloitu suojattuna tietorakenteina Tarkat keskeytykset: suorituksen peruutus uusi, hidas JIT käännös hidas mutta tarkka emulointi movl %esp, %ebp subl $4, %esp pushl %eax Pääohjelma Dl lataus moduuli Crusoen 27 Crusoe emulaattorin suoritus muisti emulaattori ohjelma LDA R1, =543 ADD R2, R4, R5 x86-ohjelma mov %exc1, >% ebp+0xc! add %eax!, #4 välimuisti konekäskyjen suorituspiirit JIT käännös laiterekisterit x86 koneen laiterekisterit Crusoe 28 Luento 11, Tulkinta ja emulointi 14

Crusoe suorittimen looginen rakenne emuloitava käyttöjärjestelmä Koodin generaattori Morph-host emulaattori emuloitava sovellus Käännöspuskuri Tapahtumaperustainen pääohjelma Natiivi käyttöjärjestelmä HW - laitteisto konekäskyt keskeytykset 29 Vahvistetut x86 laiterek. Crusoe suorittimen fyysinen rakenne Emuloidut x86 laiterek. muisti emuloitava käyttöjärjestelmä emuloitava sovellus konekäskyjen suorituspiirit TLB muistipuskurin rekisterit välimuisti natiivi käyttöjärjestelmä?? koodin generaattori emulaattori omat laiterekisterit ALIASrekisterit muistipuskuri käännöspuskuri muistiväylä 30 Luento 11, Tulkinta ja emulointi 15

-- Luennon 11 loppu -- 31 Luento 11, Tulkinta ja emulointi 16