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

Samankaltaiset tiedostot
Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

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

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

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

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

Luento 1 Tietokonejärjestelmän rakenne

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 5 (verkkoluento 5) Suoritin ja väylä

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

Jakso 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus

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

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

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

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

1. Keskusyksikön rakenne

Jakso 4 Aliohjelmien toteutus

Luento 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ä?

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

4. Lausekielinen ohjelmointi 4.1

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

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

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

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

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

Luento 4 Aliohjelmien toteutus

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 4 Aliohjelmien toteutus

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Kertausluento luennoista 1-3 1

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

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

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena

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

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

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

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

Monipuolinen esimerkki

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

JOHDATUS TIETOKONETEKNIIKKAAN. Tietokoneiden loogisten toimintaperiaatteiden kuvaus kuvitteellisen tietokoneen avulla

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Käyttöjärjestelmän rakenne

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

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

Ohjelmoinnin perusteet Y Python

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

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)

11/20: Konepelti auki

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011

Ohjelmoinnin peruskurssi Y1

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

4. Lausekielinen ohjelmointi 4.1

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 3 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

Ttk-91 esimerkkitietokone ja sen simulaattori

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

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

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Ohjelmoinnin perusteet Y Python

Eloisuusanalyysi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Eloisuusanalyysi.

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Lisää pysähtymisaiheisia ongelmia

Jakso 5 Suoritin ja väylä

Jakso 5 Suoritin ja väylä

Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit

Ohjelmoinnin perusteet Y Python

Johdanto kurssin sisältöön

811120P Diskreetit rakenteet

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Ohjelmoinnin peruskurssi Y1

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

Ohjelmoinnin perusteet Y Python

Johdatus ohjelmointiin

Transkriptio:

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan erilaisia tietokoneita? 2

Binäärikoodin ja -lukujen kirjoittaminen ei ole ihmisille kovin mielekästä. Siksi kannattaakin miettiä tarkoitukseen sopivaa (ohjelmointi)kieltä, jolla voitaisiin esittää kaikki algoritmit. 3

Tietojenkäsittelyn perusteet 2 Konekielinen ohjelmointi 4

Konekielinen ohjelmointi 5

(Symbolinen) konekieli Boberg J 2010 Ikonen L 2011 Konekielen abstraktiotaso on korkeampi kuin mikro-ohjelmien käskyjen (mutta luonnollisesti matalampi kuin korkeamman tason ohjelmointikielten, kuten C ja Python): Lähempänä ihmisen ajattelutapaa Ei tarvitse välittää mikro-ohjelmoitavan tietokoneen teknisistä yksityiskohdista: mitä seurauksia tästä on? Helpompi käyttää Konekielinen käsky koostuu useammasta mikrokäskystä. 6

Abstrakti konekielikone 3 erikoisrekisteriä: PC (program counter) IR (instruction register) ACC (accumulator, yleiskäyttöinen rekisteri) Päämuisti RAM (konekielen käskyt, käsiteltävä tieto) 7

Konekielen käskyt Symbolinen käsky LOAD M Toiminto ACC <- (M) STORE M (M) <- ACC ADD M ACC <- ACC + (M) SUBTRACT M ACC <- ACC - (M) MULTIPLY M ACC <- ACC * (M) DIVIDE M ACC <- ACC / (M) (kokonaislukujakolasku) JUMP M Hyppää M:ään JUMPZERO M Hyppää M:ään, jos ACC = 0 JUMPNEG M Hyppää M:ään, jos ACC < 0 JUMPSUB M Hyppää M:stä alkavaan aliohjelmaan RETURN M Palaa M:stä alkaneesta aliohjelmasta 8

Konekielen ominaisuuksia Yksiosoitekieli: Toinen operandeista aina jokin muistipaikka M Toinen operandeista aina sama (implisiittisesti) ACC Kaksi- ja kolmiosoitekielissä toinen operandi voi olla muu kuin akku. Kolmiosoitekielissä tuloksen voi viedä tiettyyn muistipaikkaan. 9

Konekielen ominaisuukaia Käskyt talletetaan päämuistiin binäärikoodina. Käskyt suoritetaan yksi kerrallaan peräkkäin, ellei suoritusjärjestystä muuteta erikseen (esim. JUMP M). Sananpituus 16 bittiä, RAM-osoite 12 bittiä (4096 eri osoitetta), joten itse käskyn koodaamiseen on 4 bittiä: Operaatiokoodi ja operandiosa Operaatio suoritetaan operandin osoittamasta päämuistin muistipaikasta löytyvälle datalle (ja akku on toinen operandi, jos toista tarvitaan). Tässä konekieliversiossa lukuvakioita ei ole käytettävissä (tarvittavat vakiot pitää hakea muistipaikasta, mihin ne on talletettu), mutta kieltä voidaan laajentaa sisältämään myös välitön osoitus (LOADI) saadaan vakiot mukaan. 10

Osoitustavat Osoitustapa: tapa, millä konekielen käskyn osoiteosa määrää käskyn todellisen operandin. Osoitustavat: Välitön osoitus Suora osoitus Epäsuora osoitus Indeksoitu osoitus Epäsuora indeksoitu osoitus 11

Osoitustavat Välitön osoitus / Immediate adressing: Käskyn operandiosa on itsessään käsiteltävää tietoa (esim. lukuvakio) LOADI arvo ACC arvo Suora osoitus / Direct addressing: Käsiteltävä tieto operandiosan ilmoittamassa muistiosoitteessa LOAD osoite ACC (osoite) 12

Osoitustavat Epäsuora osoitus / Indirect addressing: Operandiosan ilmoittamasta rekisteristä löytyy muistiosoite, jossa tieto on LOADID rekisteri ACC ((rekisteri)) Indeksoitu osoitus / Indexed addressing: Operandiosan ja indeksirekisterin sisällön summasta saadaan muistipaikan osoite, jossa tieto on LOADIX arvo ACC (arvo+(indeksirekisteri)) Indirect indexed addressing: Operandiosan ilmoittaman muistipaikan ja indeksirekisterin sisältöjen summasta saadaan osoite muistipaikkaan, jossa tieto on. LOADIDX osoite ACC ((osoite)+(indeksirekisteri)) 13

Osoitustavat 14

Suoritusjärjestyksen ohjaus Ehdoton hyppy: JUMP M Ehdollisia hyppyjä: JUMPZER M hyppää osoitteeseen M, jos ACC=0 JUMPNEG M hyppää osoitteeseen M, jos ACC<0 Hyppy aliohjelmaan ja takaisin: JUMPSUB M hyppää osoitteeseen M, josta alkaa aliohjelma RETURN M palaa aliohjelmasta, joka alkoi osoitteesta M 15

Aliohjelman toimintamekanismi Olkoon muistipaikassa mpp käsky JUMPSUB mpa. Silloin muistipaikkaan mpa kirjoitetaan paluuosoite mpp+1 ja suoritus jatkuu osoitteesta mpa+1. Kun suoritus sitten päätyy aliohjelman päättävään käskyyn RETURN mpa, siirtyy kontrolli takaisin paikasta mpa löytyvään paluuosoitteeseen mpp+1. Näin samaa aliohjelmaa voidaan kutsua useasta kohtaa ja kyetään palaamaan takaisin kutsua seuraavaan käskyyn. 16

Esimerkki: 2:n potenssin laskeminen Algoritmi 2:n potenssin laskemiseksi konekielellä. Ohjelma osoitteissa 371380, dataa osoitteissa 381383. M0DULE exp(n) RETURNS 2n arvo := 1 WHILE n > 0 DO n := n - 1 arvo := arvo + arvo ENDWHILE RETURN arvo ENDMODULE 371 372 373 374 375 376 377 378 379 380 381 382 383 LOAD 383 STORE 382 LOAD 381 JUMPZERO 384 SUBTRACT 383 STORE 381 LOAD 382 ADD 382 STORE 382 JUMP 373 n 0 1 Hae ykkönen akkuun Talleta ykkönen (funktion) alkuarvoksi Hae n akkuun Jos n = 0, hyppää muistipaikkaan 384 eli lopeta Vähennä n:stä yksi Talleta n:n uusi arvo ACC arvo ACC arvo + arvo arvo ACC Hyppää iteraation alkuun funktion arvo laskennassa tarvittava lukuvakio 17

Esimerkki: 2x + 2y MODULE summa(x, y) RETURNS 2x+2y RETURN exp(x) + exp(y) ENDMODULE 287 288 289 290 291 292 293 294 295 296 297 298 LOAD 314 STORE 311 JUMPSUB 299 LOAD 312 STORE 316 LOAD 315 STORE 311 JUMPSUB 299 LOAD 312 ADD 316 STORE 316 JUMP 317 Hae x akkuun Talleta x aliohjelman syötteeksi Suorita aliohjelma, ts. laske 2X Hae aliohjelman tulos 2X akkuun Talleta lopputuloksen arvoksi Hae y akkuun Talleta y aliohjelman syötteeksi Suorita aliohjelma, ts. laske 2y Hae aliohjelman tulos 2y akkuun Lisää 2x akun (= 2y) arvoon Talleta lopputulos Lopeta ohjelman suoritus Aliohjelma: 299 0/290/295 alku, paluuosoite 300 LOAD 313 aliohjelman koodi 301 STORE 312 302 LOAD 311 303 JUMPZER 310 304 SUBTRACT 313 305 STORE 311 306 LOAD 312 307 ADD 312 308 STORE 312 309 JUMP 302 310 RETURN 299 paluu pääohjelm. 311 0 aliohjelman syöte 312 0 aliohjelman tulos 313 1 314 x ohjelman syöte x 315 y ohjelman syöte y 316 0 lopputulos 18

Konekielen tulkki mikroohjelmoitavalle tietokoneelle Tulkki on mikro-ohjelma joka ymmärtää ja suorittaa konekielisiä käskyjä. Toimintaperiaate: Hakee käskyn päämuistista Selvittää käskyn sisällön Toteuttaa käskyn Seuraavan käskyn osoitteen on oltava tulkin tiedossa. Symbolisen konekielikoneen rekisterien toteutus mikroohjelmoitavassa tietokoneessa: Rekisteri A ACC Rekisteri MDR (neljä eniten merkitsevää bittiä määräävät käskyn, loput päämuistin osoitteen) IR Rekisteri B ohjelmalaskuri PC 19

Konekielen tulkki mikroohjelmoitavalle tietokoneelle Tulkki Konekielinen ohjelma 20

Yhteenveto Konekieli on tietokonekohtainen ohjelmointikieli (symbolinen vs. binäärinen), mutta kone ei välttämättä vastaa suoraan laitteistoa ja sen komponentteja. Oikeiden tietokoneiden konekieli on monipuolisempaa kuin esimerkkikoneemme. Konekielen tulkkiohjelma on talletettu kiinteästi tietokoneen muistiin muistipaikasta nolla alkaen ja tulkkiohjelmaa aletaan suorittaa asettamalla MPC:hen 0. Korkean tason kielet käännetään konekielelle kääntäjällä ja konekielinen ohjelma suoritetaan tulkin avulla. 21