Kertausluento luennoista 1-3 1

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

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

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

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

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. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne

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

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

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

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tiedon sijainti suoritusaikana. 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 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

Tietokoneen toiminta (Computer Organization I)

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

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)

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

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

Tietokoneen toiminta (Computer Organization I)

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

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta, K Tavoitteet (4)

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

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

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

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

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

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

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

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

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

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 (verkkoluento 2) Ttk-91 järjestelmä

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

Luento 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

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

Luento 4 Aliohjelmien toteutus

Jakso 10 Ohjelman suoritus järjestelmässä

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

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

Jakso 4 Aliohjelmien toteutus

Tietokoneen toiminta (Computer Organization I)

Jakso 4 Aliohjelmien toteutus

Tietokoneen toiminta (Computer Organization I)

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

Tietokoneen toiminta (Computer Organization I)

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

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

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

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

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

Tietokoneen toiminta (Computer Organization I)

Luento 12 Yhteenveto

Luento 12 Yhteenveto

Tietokoneen toiminta, K Tavoitteet (4)

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

Jakso 10 Ohjelman suoritus järjestelmässä

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

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

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

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 12 Yhteenveto

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

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

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

Lausekielestä suoritukseen (3) Luento 10 Käännös, linkitys ja lataus. Assembler-kielinen käännösyksikkö (2) Käännösyksikkö (4) Objektimoduuli (8)

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

Käännös, linkitys ja lataus

Lausekielestä suoritukseen (3) Luento 10 Käännös, linkitys ja lataus. Assembler-kielinen käännösyksikkö (2) Objektimoduuli (2) Symbolitaulu

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

1. Keskusyksikön rakenne

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

Transkriptio:

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi Järjestelmän eri tasot Laitteiston nopeus ttk-91 rakenne ja käskykantaarkkitehtuuri Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer) Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 2 Tietokone suoritin (CPU) väylä tai väylät laiteohjaimet Tietokoneohjelman sijainti ja esitysmuoto (jatkuu) Suoritusaikana ssa konekielisessä muodossa Suoritusaikainen talletus suoritin (CPU) muiden koneiden kanssa Ethernet, modem,... laitteiden kanssa DVD, CD, disk, diskette, printer,... ihmisten kanssa Mouse, joystick, monitor, game pad,... väylä tai väylät pitkäaikainen talletus 3 4 Konekieli Suorittimen konekielen käskykanta määrittelee tietokoneen käskykantaarkkitehtuurin ISA - Instruction Set Architecture Kukin käsky on esim. 10-numeroinen kokonaisluku Usein esitetty symbolisella konekielellä käsky jaettu osiin (kenttiin) LOAD,Summa joidenkin kenttien arvot kuvattu symboleilla helpompi ihmisten lukea ja kirjoittaa 2234563212 5437658756 5 Symbolinen konekieli Yleinen esitystapa konekielisille ohjelmille luettavassa muodossa oleva konekieli Helppo muuttaa konekieleksi suora vastaavuus konekieleen usein mielletään (vähän väärin, muttei paljon): symbolinen konekieli konekieli 129543876 LOAD R2, Summa ; R2 Mem(Summa) 439874387 ADD R2, =5 ; R2 R2 + 5 544399765 JUMP Loop ; PC Loop (koodi) (; kommentti) 6 Kertausluento luennoista 1-3 1

Suorittimen ja n sisältö suoritin konekäskyjen suorituspiirit väli väylä kirjastorutiinit ohjelma data 7 Teemun juustokakku (5) Rekisterien, välin, n, levyn ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä käsi pöytä laiterekisterit käyttöjärjestelmä 1 sek 0.5 sek (väli- (rekisteri) ) jääkaappi 10 sek () kuu 12 pv (levy) oikea: 10 ms Europa (Jupiter) 4 v (nauha, ihminen) 8 Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori Miksi TTK-91 TTK-91 rakenne ja käskykanta-arkkitehtuuri Mikä on simulaattori Miten TTK-91 ohjelmia suoritetaan simulaattorissa 9 10 Tietokone TTK-91 Laitteisto, hardware (HW) suoritin,, väylät, oheislaitteiden liitännät Käskykanta - konekieliarkkitehtuuri käyttöliittymä laitteistoon konekäskyt, tiedon esitysmuodot, tietotyypit Symbolinen konekieli luettavampi muoto konekielestä kullakin symbolilla yksikäsitteiset arvot Titokone Simulaattori TTK-91 koneen laitteiston simulaattori symbolisen konekielen kääntäjä graafinen käyttöliittymä, debugger-ympäristö TTK-91 laitteisto suoritin - CPU ALU CU väylä (kirjastorutiinit) rekisterit (käyttöjärjestelmä) MMU (sisältää välin) ohjelma data laiteohjaimet 11 12 Kertausluento luennoista 1-3 2

TTK-91 Käskykanta TTK-91 tietotyypit Tietotyypit Konekäskyjen tyypit Konekäskyn rakenne montako bittiä, minkälainen sisäinen rakenne Muistissa olevan tiedon osoitustavat konekielessä symbolisessa konekielessä Operaatiot 32 bittinen kokonaisluku noin 10-numeroinen desimaaliluku EI: liukulukuja merkkejä totuusarvoja 13 14 Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 15 16 Tiedon sijainti suoritusaikana Muistissa (=keskusssa) iso hidas data-alueella vai konekäskyssä vakiona Rekisterissä pieni nopea Probleemi: milloin muuttujan X arvo pidetään ssa ja milloin rekisterissä missä päin a miten siihen viitataan Esim. 256 MB, tai 64 milj. 32 bitin sanaa Esim. 10 ns Esim. 256 B, tai 64 kpl 32 bitin sanaa Esim. 1 ns TTK-91: 8 kpl + PC +... 17 Miten tietoon viitataan (3) Tieto ssa osoitteen (esim. 0x6F123456 tai 3459321) avulla symbolin (esim. HenkTunn tai X) avulla symbolista konekieltä käytettäessä symbolin arvo on osoite HenkTunn = 0x6F123456, X = 3459321 (heksadesimaali) (desimaali) Tieto välissa samalla tavalla kuin jos tieto olisi ssa viittaushetkellä ei tiedetä, kummasta paikasta tieto lopulta löytyy tai kauanko viittaamiseen kuluu aikaa! Tieto rekisterissä rekisterin osoitteen (esim. nro 6 tai 18) avulla symbolinen konekieli: R3, FP, F5, I2, jne Tieto konekäskyssä (vakiona) oletusarvoisesti, käskyssä on vain yksi paikka tiedolle 18 Kertausluento luennoista 1-3 3

muuttujan X osoite on symbolin X arvo X DC 12... LOAD, =X LOAD R2, X symbolin X arvo 230 int x =12; muuttujan X osoite 12345 muuttujan X arvo 12556 Muuttujan X osoite on 230 Muuttujan X arvo on 12 Tieto ja sen osoite (2) Symbolin X arvo on 230 X=230: 12 symbolit ovat yleensä olemassa 12998 vain käännösaikana virheilmoituksia varten symbolitaulua pidetään joskus yllä myös suoritusaikana 128765 12222 19 BASE LIMIT 0: iso: Muistitilan käyttö yhdelle ttk-91 ohjelmalle P (6) P 0: SP HP Ohjelmakoodi Globaalit muuttujat ja tietorakenteet Pino (stack) aliohjelmien toteuttamista varten (myös paikalliset muuttujat) Vapaa tila Keko (heap) dynaamisesti (esim. Javan new ) varattavia alueita varten (ei ttk-91:ssa ) 20 Tiedon sijainti suoritusaikana (3) Rekisteri (nopein) kääntäjä päättää milloin muuttujan arvo on rekisterissä Väli (nopea) laitteisto hoitaa automaattisesti joillekin alueille Muisti (hidas) kääntäjä/lataaja valitsee sijaintipaikan globaali data ohjelman latauksen yhteydessä vakiot konekäskyssä ohjelma sijoittaa suoritusaikana aliohjelmien paikalliset muuttujat, parametrit käyttöjärjestelmä sijoittaa suoritusaikana dynaaminen data keossa suorituksen aikana Levy, levypalvelin (liian hidas, ei mahdollista) vaatii käyttöjärjestelmän varusohjelmien apua 21 Ohjelmoinnin peruskäsitteet Aritmeettinen lauseke miten tehdä laskutoimitukset Yksinkertaiset tietorakenteet yksiulotteiset taulukot, tietueet Kontrolli mistä seuraava käsky valinta: if-then-else, case toisto: for-silmukka, while-silmukka aliohjelmat, virhetilanteet Monimutkaiset tietorakenteet listat, moniulotteiset taulukot 22 For lauseke (4) for (int i=20; i < 50; ++i) T[i] = 0; Olisiko parempi pitää i:n arvo rekisterissä Miksi Milloin Mikä on i:n arvo lopussa Onko sitä olemassa Entä jos toisenlainen loop-semantiikka I DC 0 LOAD, =20 Loop LOAD R2, =0 STORE R2, T() ADD, =1 LOAD R3, I COMP R3, =50 JLES Loop 23 While-do -lauseke (2) X = 14325; Xlog = 1; Y = 10; while (Y < X) { Xlog++; Y = 10*Y } Mitä kannattaa pitää ssa LOAD, =14325 STORE, X LOAD, =1 ; =Xlog LOAD R2, =10 ; R2=Y While COMP R2, X JNLES Done ADD, =1 MUL R2, =10 JUMP While Done STORE, Xlog ; talleta tulos STORE R2, Y Mitä kannattaa pitää missä rekisterissä ja milloin X in R3 24 Kertausluento luennoista 1-3 4

Koodin generointi (7) Kääntäjän viimeinen vaihe voi olla 50% käännösajasta Tavallisen koodin generointi alustukset, lausekkeet, kontrollirakenteet Optimoidun koodin generointi käännös kestää (paljon) kauemmin suoritus tapahtuu (paljon) nopeammin milloin globaalin/paikallisen muuttujan X arvo kannattaa pitää rekisterissä ja milloin ei missä rekisterissä X:n arvo kannattaa pitää joskus :ssä, joskus R5:ssa 25 Taulukon indeksitarkistus (1) for (int i=20; i < 50; ++i) T[i] = 0; I DC 0 T Tsize DS 50 ; data DC 50 ; koko Voisiko loopin kontrollia ja indeksin tarkistusta yhdistää Optimoiva kääntäjä osaa! LOAD, =20 Loop LOAD R2, =0 JNNEG, ok1 SVC SP,=BadIndex ok1 COMP, Tsize JLES ok2 SVC SP, =BadIndex ok2 STORE R2, T() ADD, =1 ; 50 OK! LOAD R3, I COMP R3, =50 JLES Loop 26 Moni-ulotteiset taulukot (3) Talletus riveittäin C, Pascal, Java Talletus sarakkeittain Fortran 3- tai useampi ulotteiset vastaavalla tavalla! T: T: T[0][0] T[1][0] T[2][0] T[3][0] T[0][1] T[1][1] T[2][1] T[...][...] T[0][0] T[0][1] T[0][2] T[1][0] T[1][1] T[1][2] T[2][0] T[...][...] 27 : -1 R2: 132 R2: 0 R2: 77 R2: 33 Linkitetty lista (8) First Data Next Data Next Data Next 2-sanainen tietue First=200: 211 list_sum.k91 211: 222: 255: 33 255 55-1 44 222 Data EQU 0 ; suht. osoite Next EQU 1 Sum DC 0 Main LOAD, First ; ptrrec JNEG, Done LOAD R2,=0 ; sum Loop ADD R2, Data() LOAD, Next() JNNEG, Loop Done STORE R2, Sum SVC SP, =HALT Virhe, entä jos bugi! tyhjä Missä lista! 28 -- Luennon loppu -- Konrad Zuse: Z1 (1938) mekaaninen laskin, kellotaajuus 1 Hz (käännä kampea!) kertolasku 5 s data 64W à 24b ohjelma reikänauhalta (filmiltä) http://irb.cs.tu-berlin.de/~zuse/konrad_zuse/en/rechner_z1.html 29 Kertausluento luennoista 1-3 5