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



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

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

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

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

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

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

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Algoritmit 1. Luento 11 Ti Timo Männikkö

811120P Diskreetit rakenteet

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

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Kertausluento luennoista 1-3 1

811120P Diskreetit rakenteet

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

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

Nopea kertolasku, Karatsuban algoritmi

Ohjelmoijan binaarialgebra ja heksaluvut

Ongelma(t): Mihin perustuu tietokoneiden suorituskyky ja sen jatkuva kasvu? Mitkä tekijät rajoittavat suorituskyvyn parantamista ja mitkä niistä ovat

Ongelma(t): Mihin perustuu tietokoneiden suorituskyky ja sen jatkuva kasvu? Mitkä tekijät rajoittavat suorituskyvyn parantamista ja mitkä niistä ovat

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

Algoritmit 2. Luento 8 To Timo Männikkö

811120P Diskreetit rakenteet

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Algoritmit 1. Luento 1 Ti Timo Männikkö

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut.

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit 1. Luento 3 Ti Timo Männikkö

Tietokonearitmetiikka

Yhden bitin tiedot. Binaariluvun arvon laskeminen. Koodin bittimäärä ja vaihtoehdot ? 1

1. Keskusyksikön rakenne

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Java-kielen perusteet

Algoritmit 1. Demot Timo Männikkö

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

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

ITKP102 Ohjelmointi 1 (6 op)

Numeeriset menetelmät

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

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

Tarkennamme geneeristä painamiskorotusalgoritmia

Java-kielen perusteet

2 Konekieli, aliohjelmat, keskeytykset

Algoritmit 1. Demot Timo Männikkö

Tietokonearitmetiikka


Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

A TIETORAKENTEET JA ALGORITMIT

11. Javan toistorakenteet 11.1

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

Successive approximation AD-muunnin

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

tikra_oppimistavoitteet.doc Sivu 1 / / Teemu Kerola Oppimistavoitteet kurssilla Tietokoneen rakenne Osaa selittää Boolen algebran

16. Ohjelmoinnin tekniikkaa 16.1

etunimi, sukunimi ja opiskelijanumero ja näillä

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

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

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

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

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

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

Liukulukulaskenta. Pekka Hotokka

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Harjoitus 3 -- Ratkaisut

Vektorit. Kertausta Seppo Lustig (Lähde: avoinoppikirja.fi)

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

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

16. Ohjelmoinnin tekniikkaa 16.1

9 Erilaisia tapoja järjestää

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

Käyttöjärjestelmän rakenne

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

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

Ohjelmoinnin peruskurssi Y1

5. Laskutoimitukset eri lukujärjestelmissä

START Pääohjelma - arvojen asettaminen - keskipisteet - kierrenousujen ohjaus. Tokan reiän hionta

4 Tehokkuus ja algoritmien suunnittelu

Luku 8. Aluekyselyt. 8.1 Summataulukko

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

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot

Kombinatorisen logiikan laitteet

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

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

7.4 Sormenjälkitekniikka

IT K 1 45 K ä yt t öj ä rj estelmät

2. Eukleideen algoritmi

Lukujärjestelmät. Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen Fe

5/20: Algoritmirakenteita III

Transkriptio:

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, että se pystyy suorittamaan kaikki mahdolliset algoritmit? 2012-2013 Lasse Lensu

Loogisia lausekkeita toteuttavien sähköisten piirien avulla voi laskea ja näkökulmasta riippuen voidaan ajatella, että kaikki tietojenkäsittely on laskemista. Muistiin talletettu tieto vaikuttaa tietokoneen toimintaan, joten tietokone ei suorita vain yhtä vakioalgoritmia. 2012-2013 Lasse Lensu

Tietojenkäsittelyn perusteet II Tietokoneen mikro-ohjelmointi

Tietokoneen mikro-ohjelmointi

Tietokoneen mikro-ohjelmointi Boberg J 2010 Mikro-ohjelmoitava tietokone: Rakenne Käytettävissä olevat toiminnot Mikro-ohjelmointi: Pseudokieli (algoritmin esitystapa) Symbolinen mikro-ohjelma (vrt. konekieli) Binäärinen mikro-ohjelma (mikrokäsky esitetään bittijonona, jossa toimintoja vastaavat ohjausbitit ovat 1)

Mikro-ohjelmoitavan tietokoneen toiminnot Tiedonsiirto rekisterien välillä sekä rekisterin ja päämuistin välillä Yhteen- ja vähennyslasku Kahdella kertominen Loogiset vertailut: A<0, A=0 Siirtyminen mikro-ohjelmassa: Siirtyminen seuraavaan käskyyn Ehdollinen ylihyppy (skip) Ehdoton hyppy (jump)

Mikro-ohjelmointi Periaatteessa tavallista ohjelmointia Jokainen mikrokäsky sisältää 5 alikäskyä: Alikäsky / kellon vaihe 5. vaihe: siirtyminen seuraavaan käskyyn Rekisteri kerrallaan väylälle Jokainen mikrokäsky suorittaa haarautumisen tai asetuksen

Esimerkki: ykkösbittien laskeminen Mikro-ohjelma, joka laskee rekisterin D sisällön osoittaman muistipaikan sisällön ykkösbitit rekisteriin C: Koska vain vasemman puolimmaista bittiä pystytään tutkimaan erikseen, täytyy laskenta tehdä siirtämällä lukua aina bitti vasemmalle. Jos luku < 0, niin silloin kyseisen bitin arvo on 1, muutoin 0.

Algoritmi pseudokielellä C:= 0 A:= hae(d) WHILE A <> 0 DO IF A < 0 THEN C:= C+1 ENDIF shiftleft(a) ENDWHILE Korvataan aliohjelmat mikrokäskyillä ja silmukat hyppykäskyillä:

Algoritmi tarkennettuna if: ohi: C := 0 MAR := D MDR := (MAR) A := MDR IF A = 0 THEN jump ohi ENDIF IF A < 0 THEN C := C+1 ENDIF shiftleft(a) jump if

Algoritmi edelleen tarkennettuna C := 0 MAR := D MDR := (MAR) A := MDR if: skip A = 0 jump ohi skip A < 0 C := C+1 shiftleft(a) jump if ohi:

Symbolinen mikro-ohjelma 1: 0+0 C; ; 1+MPC MPC 2: 0+D MAR; (MAR) MDR; 1+MPC MPC 3: MDR+0 A; ; 1+MPC MPC 4: ; ; (A=0) + MPC MPC (ehdollinen hyppy: c19=1) 5: ; ; 1010 2 MPC (ehdoton hyppy: c18=1) 6: ; ; (A<0) + MPC MPC (ehdollinen hyppy: c20=1) 7: 1+C C; ; 1+MPC MPC 8: (0+A) 2 A; ; 1+MPC MPC 9: ; ; 100 2 MPC 10:

Binäärinen mikro-ohjelma Vain ykköset merkitty, muut bitit nollia: o s o i t e 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 1 1 1 1 2 1 1 1 1 1 3 1 1 1 1 4 1 1 5 1 1 1 6 1 1 7 1 1 1 1 1 8 1 1 1 1 1 9 1 1

Esimerkki: kertolasku Mikro-ohjelmoitavan tietokoneen ALU ei sisällä kertolaskua. Kertolasku = toistettu yhteenlasku: Voidaan toteuttaa summana jossa lasketaan yhteen kertoja kappaletta tekijää, esim. 3 x 2 = 2 + 2 + 2. Algoritmi: MDR := 0 WHILE A <> 0 DO MDR := MDR + C A := A 1 ENDWHILE

Muutettu algoritmi ja symbolinen mikrokoodi MDR := 0 1: skip A = 0 jump 5 MDR := MDR + C A := A - 1; jump 1 5: Osoite Mikrokaskyn selvennys Selitys 0 0+0 MDR ; ; 1+MPC MPC MDR:lle alkuarvo; siirry seuraavaan kaskyyn 1 ; ; (A=0) + MPC MPC Haaraudu sen mukaan, onko A = 0 vai ei 2 ; ; 5+0 MPC A = 0 Poistu silmukasta (c1... c8 = 00000101) 3 MDR+C MDR; ; 1+MPC MPC A 0 Lisaa C MDR:aan 4-1+A A ; ; 1+0 MPC Pienenna A:ta, ja hyppaa silmukan alkuun

Algoritmin kompleksisuudesta Toistossa 3 mikrokäskyä (1, 3 ja 4). Kertojan (A) maksimiarvo 2 16 1 suoritettavia käskyjä noin 200 000. Kukin käsky vie 5 kellopulssia miljoona kellojaksoa. Koneen kellotaajuus määrää algoritmin suoritusajan. Voidaanko kertolaskua nopeuttaa? Miten?

Kertolasku koulualgoritmilla Allekkain kertolasku binääriluvuille:

Mikro-ohjelmoitavalle tietokoneelle muutettu algoritmi Algoritmitoteutus vasemmalta oikealle, koska vain ensimmäinen bitti tutkittavissa: Edellisen kalvon osasummat muodostetaan alhaalta ylöspäin. Kerrottava lisätään osasummaan 1 tai 0 kertaa riippuen kertojan bitistä. Vain kaksi lukua summattavissa kerrallaan, joten osasumma lisätään loppusummaan välittömästi. Shift-left -operaatiolla siirretään vanha osasumma ensin vasemmalle.

Muutettu kertolaskualgoritmi Sananpituus 16 16 osasummaa. Laskurin sijaan käytetään valeykköstä A:ssa:

Algoritmin kompleksisuudesta Silmukan pituus on joko 4 (käskyt 4,6,7,8) tai 6 (käskyt 4,5,9,11,12,13) ja jokaisella kierroksella käsitellään yksi bitti 15:stä. Siten suoritetaan enintään 4+15*6+4 = 98 käskyä. Aikavaatimus on lähes vakio eli se ei riipu kertojan suuruudesta: Algoritmi on noin 2000 kertaa edellistä nopeampi.

Yhteenveto Mikro-ohjelmoitavan tietokoneen muistiin talletettu tieto vaikuttaa tietokoneen toimintaan, joten se voi suorittaa erilaisia algoritmeja. Mikro-ohjelmoitavan tietokoneen rakenne (loogisista porteista koostuva laitteisto) määrää sen sisältämät toiminnot kaikki muut toiminnot on toteutettava mikro-ohjelmien avulla. Mikro-ohjelmoinnin esitystavat: Pseudokieli Symbolinen mikro-ohjelma Binäärinen mikro-ohjelma