Laitteistonläheinen ohjelmointi



Samankaltaiset tiedostot
Laitteistonläheinen ohjelmointi

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

Aktivaatiotietue. Yleiskäsite funktio (aliohjelma) -mekanismin tarvitsemille tiedoille. Kehysosoitin (%fp) missä tiedot ovat

Käskykannat. Tietokoneen rakenne. Ch [Sta06] Operaatioista Operandeista Osoitustavoista Pentium / PowerPC. Luento 7-1

Tietokoneen rakenne: Harjoitustyö. Motorola MC prosessori

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

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

Luento 7: Käskykannat Tietokoneen rakenne / 2006 / Teemu Kerola 9/25/2006

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

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

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Tietokoneen rakenne Käskysykli CPU suorittaa ohjelmaa konekielinen käsky kerrallaan

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Konekielinen ohjelmointi

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokonearitmetiikka

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)

Tietokonearitmetiikka

Jakso 5 Suoritin ja väylä

Jakso 5 Suoritin ja väylä

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (4) Tiedon esitys (7) Suorittimen ymmärtämä tieto (9) Tietokoneen toiminta, K

Luento 6 Tiedon esitysmuodot

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Jakso 5 Suoritin ja väylä. Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne

Java-kielen perusteet

1. Keskusyksikön rakenne

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

2 Konekieli, aliohjelmat, keskeytykset

13. Loogiset operaatiot 13.1

Tietokonearitmetiikka

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Tietokonearitmetiikka

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Tietokoneen toiminta Copyright Teemu Kerola Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 4 Aliohjelmien toteutus

Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne. Käskyjen nouto- ja suoritussykli (5)

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Luento 5 Suoritin ja väylä

Java-kielen perusteet

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

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

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

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

Tietokoneen toiminta, K Tavoitteet (4)

TKT-3201 Tietokonearkkitehtuuri 2

13. Loogiset operaatiot 13.1

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

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

Luento 5 Suoritin ja väylä

Tietotyypit ja operaattorit

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

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

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

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

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

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

Harjoitustyö: virtuaalikone

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

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

Kertausluento luennoista 1-3 1

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

Luento 2 TTK-91 tietokone ja sen simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91 (1) TTK-91 laitteisto

Luento 6 Tiedon esitysmuodot

Tiedon tyypit Kommunikointi ihmisen kanssa. Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (4) Suorittimen ymmärtämä tieto (9)

Jakso 6 Tiedon esitysmuodot

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 6 Tiedon esitysmuodot. Lukujärjestelmät Kokonaisluvut Liukuluvut Merkit, merkkijonot Totuusarvot Kuvat, äänet, hajut(?)

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Luento 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (3)

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (3)

ANSI/IEEE Std

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Intel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen

Käyttöjärjestelmän rakenne

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: tietotyypit (2)

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

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

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

SISÄLLYS sisällys 1 Tietokoneen toimintaperiaate ja käyttö 2 Tietokoneen historia 3 Tietokoneen rakenteen ja toiminnan perusteet

TIES325 Tietokonejärjestelmä. Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos

Transkriptio:

Laitteistonläheinen ohjelmointi 4 op Luennoija: Pertti Lehtinen Harjoitustyö: Mikko Vulli Esituedot: Mikroprosessorit Perusohjelmointikurssi Kurssin osat: luennot, harjoitustyö, tentti Materiaali: luentomoniste

Kurssin tavoite Oppia ymmärtämään konekielisiä ohjelmia Mitä on ohjelma prosessorin tasolla Saada käsitys ohjelman luontiprosessista Työkalut ja niiden tehtävät Tutustua lausekielten perusrakenteiden toteutukseen konekielitasolla Mitä kääntäjä tuottaa?

Miksi? Konekielinen ohjelmointi, kääntäjän toteuttaminen Oleellista jos teet Laiteohjainta Käyttöjärjestelmää Sulautettua järjestelmää Suunnittelet suoritinta

Luennot Prosessoriarkkitehtuuri Käskyt, osoitusmuodot, tietotyypit Kääntäminen Perusrakenteet, aliohjelmat Muistin käyttö Yhdistely, kirjastot Prosessorin kontrolli Cache, MMU, kontekstin vaihto, yms. Oheislaitteet ja väylän ohjaus Muuta Erikoiskäskyt, jne...

Prosessoriarkkitehtuuri Perinteisesti fetch-decode-execute Käskyt noudetaan ja suoritetaan järjestyksessä Ohjelmoijan perinteinen ajattelu, yhä voimissaan

Von-Neumann arkkitehtuuri CPU käsittelee muistissa olevan ohjelman käskyjen mukaisesti muistissa oleva dataa Yhteinen koodi- ja data muisti Von Neumann -pullonkaula --> muistiväylä Harvard-arkkitehtuuri Erillinen ohjelma- ja datamuisti (väylä) Muita vaihtoehtoja VLIW, TTA, SIMD

Prosessorin rakenne Toimintayksiköitä Laskentayksiköitä, yksi tai useampia Kokonaislukuyksiköt Liukuluku yksiköt Muut? (SSE, MMX, VIS,...) Ohjausyksikkö Hyppy-yksiköt Muistiyksiköt Muistiviittaukset (data), käskynnouto

Nykypäivän arkkitehtuurit Erilliset cachet, yhteinen keskusmuisti Siis sovellettu harvard arkkitehtuuri Liukuhihnoitettu suoritus Viivästetty lataus, viivästetty hyppy, scoreboarding Rinnakkaiset laskentayksiköt out-of-order-execution

Prosessori arkkitehtuuri Käskykanta Mitä sillä voi tehdä? Tietotyypit Millä se voi operoida? Osoitusmuodot Missä ne voivat olla?

Käskykanta Aritmeettisloogiset operaatiot Add, sub, neg, mul, div And, or, xor, complement,... Tst, cmp Siirtokäskyt Move, load, store kontrollinsiirto Bra, jmp, call, ret

Aritmetiikka Ainakin kokonaisluvuille Add, sub vähintään Nykyään myös mul ja div Liukulukuaritmetiikka Fadd, fsub, fmul, fdiv Joskus myös sin, cos,...

Loogiset operaatiot Peruslogiikka And, or ja complement usein myös xor Loogiset käskyt ovat bitwise käskyjä eivät siis totuusarvoisia

vertailut Vertailukäskyt Yleensä ainakin cmp, (compare) Joskus myös tst, (test, eli vertaa nollaan) Liittyvät ehdollisiin hyppyihin Asettavat tilaliput tai jonkun tilatiedon

Siirtokäskyt Rekisterisiirrot Move Muistista nouto Load Muistiin talletus Store

Kontrollin siirto Ehdottomat hypyt Jmp, bra Ehdolliset hypyt Beq, bne,... Aliohjelmakutsu ja -paluu Call, ret Palvelukutsut ja virhekäsittelyt Trap, svc, syscall,...

Ehdolliset hypyt Tilalippujen perusteella (IA-32, MC680X0, Sparc) Liput asettuvat Vain vertailukäskyillä (Sparc) Vertailu- ja aritmeettisloogisillakäskyilla (IA-32) Vertailu-, aritmeettisloogisilla- ja siirtokäskyillä (MC680x0) Lippurekisterien sisällön perusteella (PowerPC) Yleisrekisterien sisällön perusteella (MC88000, Alpha)

Tilaliput Zero Ilmaisee, onko tulos nolla Sign Tuloksen etumerkki Carry, overflow Etumerkitön ylivuoto, etumerkillinen ylivuoto, lainaus Joskus myös muita lippuja

Lipuista carry/borrow Laajennetussa aritmetiikassa tarpeellinen Add-with-carry,... Tavallinen aritmetiikka etumerkillistä Osoitteilla laskenta etumerkitöntä

Siirtokäskyt Siirrot rekisterien välillä Lataukset muistista/muistiin Oleellisen tärkeitä nykyään käytetyissä load-store arkkitehtuureissa

Aliohjelmakutsu Hyppy paluuosoitteen talletuksella Talletus (laitteisto)pinoon (perinteisesti) IA-32, MC680X0,... Automaattisesti mahdollistaa sisäkkäiset kutsut Talletus yleisrekisteriin (RISC-arkkitehtuurit) Sparc, MC88000,... Ohjelmallinen pino tarpeen sisäkkäisten kutsujen mahdollistamiseksi Paluu erikoiskäskyllä tai epäsuoralla hypyllä

Muut käskyt Cachen ohjaus Mmun ohjaus Keskeytysten hallinta käskykantalaajennukset

Millaisia operandeja Kokonaisluvut Liukuluvut Kiinteän pilkun luvut Totuusarvot merkkijonot Pixelit, bitit, yms

kokonaisluvut 8, 16, 32 vai 64-bittiä? Etumerkillinen vai etumerkitön? Kahden komplementtiesitys käytössä

liukuluvut 32-bittinen (float) Etumerkki, 8-bittinen exponentti, 23-bittinen mantissa Normalisoitu esitys, ns. hidden bitti käytössä 64-bittinen (double) Etumerkki, 11-bittinen exponentti, 52-bittinen mantissa Normalisoitu esitys, ns, Hidden-bitti käytössä 80-bittinen (extended) Liukuluku yksikön väliaikainen esitysmuoto, käytössä sisäisesti

Normalisoitu liukuluku Ensin etumerkki Sitten exponentti, sitten mantissa Käytetty exponentti valitaan niin, että ensimmäinen mantissan merkitsevä bitti on yksi, -> hidden bitti voidaan jättää pois Exponentti skaalataan 127:llä, välille 0-255 (32- bittiset), 1023:lla välille0-2047 (64-bittiset)

Kiinteänpilkun luvut Kokonaisluvuon tulkinta Sovitaan lukuun pilkun paikka Operoidaan kuten kokonaisluvuilla Korjataan kerto- ja jakolaskujen yhteydessä Käytetään liukulukujen sijasta, jos lukualue riittää Esitä eurot sentteinä (kaksi desimaalia) Fraktaaleissa mandelbrot tarvii kokonaisosaa vain 2.0:n asti

totuusarvot Testit palauttavat tiedon tilalipuissa Yleensä ei sidottu arkkitehtuurissa Totuusarvon esitys ohjelmoijan valittavissa C-kielen valinta 0 <=> false, 1 <=> true, kun luodaan 0 <=> false, ei 0 <=> true, kun testataan

Merkkijonot Jotkut arkkitehtuurit sisältävät merkkijonojen käsittelyyn suunniteltuja käskyjä Merkkijono <=> tavujono, lohko Harvinaisia ja usein vähän käytettyjä

Muut tietotyypit Lisäksi voi tavata operaatioita muilla tietotyypeillä Bitti-operaatioita Pixelit 32-bittinen (8+8+8+8 bittiä)rgb. BCD-luvut

Missä operandit ovat Implisiittisiä vai explisiittisiä? 0, 1, 2 tai 3-operandi arkkitehtuuri Rekistereissä vai muistissa? Hierarkkinen muisti Rekisteri (cachet) keskusmuisti - (massamuisti) Load-store -arkkitehtuuri

Missä operandit ovat? 0-operandi arkkitehtuuri Pinoarkkitehtuuri Käskyssä kerrotaan vain operaatio, operandit implisiittisiä, samoin tuloksen sijoitus Käytetty joissakin vanhemmissa arkkitehtuureissa

esimerkki Laskemme e = a/b + c*d load a -- instr/address 3 iaar load b -- instr/address 3 iaar div -- instr 1 irrw load c -- instr/address 3 iaar load d -- instr/address 3 iaar mul -- instr 1 irrw add -- instr 1 irrw store e -- inst/address 3 iaaw Kaikkiaan 18 sanaa, 18+10+4 jaksoa

Missä operandit ovat 1-operandi arkkitehtuuri Käskyssä kerrotaan yksi operandi, toinen operandi ja tuloksen sijainti implisiittisiä ns. akkukone Useimmat 8-bittiset arkkitehtuurit (Z80, 6502, MC6800, 8085, myös 8086 )

esimerkki Laskemme e = a/b + c*d ld a -- inst/adr 3 iar div b -- inst/adr 3 iar st tmp -- inst/adr 3 iaw ld c -- inst/adr 3 iar mul d -- inst/adr 3 iar add tmp -- inst/adr 3 iar st e -- inst/adr 3 iaw Kaikkiaan 21 sanaa, 14+5+2 jaksoa

Missä operandit ovat 2-operandi arkkitehtuuri Käsky spesifioi kaksi operandia, joista toinen tulkitaan myös tuloksen sijaintipaikaksi Ns yleisrekisterikone mm. MC680x0, ia-32 tällaisia Operandit rekister(e)issä tai muistissa

esimerkki Laskemme e = a/b + c*d mov a,r0 --inst/adr 3 iaar div b,r0 -- inst/adr 3 iaar mov c,r1 --inst/adr 3 iaar mul d,r1 -- inst/adr 3 iaar add R1,R0 --inst 1 i mov R0,e --inst/adr 3 iaaw Kaikkiaan 16 sanaa, 16+4+1 jaksoa

Missä operandit ovat 3-operandikone Käsky spesifioi erikseen kaksi lähdeoperandia ja kohdeoperandin Yleinen RISC-arkkitehtuureissa Operandit yleensä rekisterioperandeja (tai vakioita)

esimerkki Laskemme e = a/b + c*d ld R7,#base -- inst 2 ii ld R0,a[R7] -- inst 1 ir ld R1,b[R7] -- inst 1 ir div R0,R1,R2 -- inst 1 i ld R2,c[R7] -- inst 1 ir ld R3,d[R7] -- inst 1 ir mul R2,R3,R4 -- inst 1 i add R4,R2,R5 -- inst 1 i st R5,e [R7] -- inst 1 iw Kaikkiaan 8 sanaa, 10+4+1 jaksoa

Mistä rakenne määräytyy Suunnittelijan valinnat Käskykoodin pituus (16, 32, tai muuta) Kiinteä pituus, vaihtuva pituus Rekisterien määrä (4, 8, 16, 32, 256)?

Muistiosoitus Joko suoraan operandissa Tai erikseen load- ja store käskyissä Perinteiset arkkitehtuurit (ia-32, mc680x0) sallivat operandit suoraan muistiin Uudet arkkitehtuurit (sparc, arm, powerpc) load-store -arkkitehtuureita, joissa muistiviittaukset vain load- ja storekäskyillä

Osoitusmuodot Suorat osoitukset Absoluuttinen osoite Suhteellinen osoite rekisteri Hyppykäskyissä yleisiä Jmp, bra, call, ret

Osoitusmuodot Epäsuorat osoitukset Osoite rekisterissä Vakio indeksi + kantaosoite rekisterissä Indeksi rekisterissä + kantaosoite rekisterissä Sparc-arkkitehtuurissa vain nämä dataa osoitettaessa Joskus myös monimutkaisempia Vakio+indeksirekisteri+kantarekisteri Joskus myös moninkertaista epäsuoruutta

Osoitusmuodot Autoinkrementointi Rekisteriä kasvatetaan viittauksen yhteydessä Autodekrementointi Rekisteriä vähennetään viittauksen yhteydessä Implisiittisesti pinon yhteydessä (ia-32) Explisiittisesti (mc680x0, pdp-11,... ) Writeback indeksoitaessa (arm)

Poikkeukset Prosesoreissa virhetilanteet käsitelään poikkeuksina Osoitevirhe (address/alignment error) Viittausvirhe (access error/ bus fault/bus error) Suojausvirhe( privilege violation, protection error ) Ohjelmallinen keskeytys (trap, service call) Ulkoinen keskeytys (interrupt)

Address error Monasti muistiviittaus salittu vain osoitteisiin, jotka ovat kohdealkion koon monikertoja Tavu (8-bittiä) kaikista osoitteista Sana (16-bittiä) vain parillisista osoitteista Pitkäsana (32-ittiä) vain neljällä jaollisista osoitteista Arkkitehtuuri kohtainen ominaisuus

Bus error Väyläajastimen antamana Viittaus olemattomaan muistipaikkaan Väylän varaus epäonnistui (multimaster väylällä) MMU-tarjoaa Virtuaalimuistissa sivutuspyyntö Tai kielletty viittaus (olematon sivu, kirjoitussuojattu sivu tai supervisor sivu)

suojausvirhe Yritetään suorittaa etuoikeutettua käskyä käyttäjän tilassa

Ohjelmallinen keskeytys Käyttöjärjestelmä kutsu Service call Myös mahdolliset ohjelmavirheet Trap on overflow, divide by zero, range check Liukulukuemulointi Liukulukuprosessorin puuttuessa liukulukukäskyt käsitellään poikkeuksien kautta (virhe tai emulointi)

Muut virhetilanteet Laiton käsky (illegal instruction) virhetilanne Toteuttamaton käsky (unimplemented) Yhteensopivuus kysymys (virhe vai emulointi?) Joskus myös muita mahdollisia poikkeuksia

Ulkoinen keskeytys Käsitellään poikkeuksena Lähde tunnistettava Tunnettu (vain yksi syy) Laite palauttaa tunnisteen (vektoroitu keskeytys) Syy kysellään (pollattu keskeytys) Keskeytysohjaimelta Laitteilta