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



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 mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

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

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

Käyttöjärjestelmät: prosessit

Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Tietokoneen rakenne (2 ov / 4 op) Syksy 2007 Liisa Marttinen. Helsingin yliopisto Tietojenkäsittelytieteen laitos

Luento 0: Kurssihallinto Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

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

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

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

11/20: Konepelti auki

Käyttöjärjestelmän rakenne

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

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

Ohjelmistojen mallintaminen

Ohjelmistojen mallintaminen, mallintaminen ja UML

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

Laitteistonläheinen ohjelmointi

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

ohjelman arkkitehtuurista.

1 Kannat ja kannanvaihto

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

7/20: Paketti kasassa ensimmäistä kertaa

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Käyttöjärjestelmät: poissulkeminen ja synkronointi

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Tietokanta (database)

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

4. Lausekielinen ohjelmointi 4.1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Tietokoneen toiminta (Computer Organization I)

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Tietokoneen toiminta (Computer Organization I)

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Palomuurit. Palomuuri. Teoriaa. Pakettitason palomuuri. Sovellustason palomuuri

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

811120P Diskreetit rakenteet

Tietokoneen toiminta (Computer Organization I)

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Sisäilmaston mittaus hyödyntää langatonta anturiteknologiaa:

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

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

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

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

Tietokoneen toiminta (Computer Organization I)

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Tietokoneen rakenne: Harjoitustyö. Motorola MC prosessori

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

2 Konekieli, aliohjelmat, keskeytykset

Tietokoneen toiminta (Computer Organization I)

4.2 Yhteensopivuus roolimalleihin perustuvassa palvelussa

4. Lausekielinen ohjelmointi 4.1

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

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

Tiedonsiirto- ja rajapintastandardit

VALO-ohjelmat ja LTSP kouluissa. Elias Aarnio Innopark, AVO-hanke

Laitteistonläheinen ohjelmointi

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

Tietueet. Tietueiden määrittely

Made for efficient farmers

Kertausluento luennoista 1-3 1

1. Keskusyksikön rakenne

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

Moderneissa grafiikkakorteissa hyödynnetään myös samanlaista toimintamallia

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Tietorakenteet ja algoritmit - syksy

Tietokoneen toiminta (Computer Organization I)

<e.g. must, essential, conditional>

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

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

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Tietokoneen toiminta (Computer Organization I)

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

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

Tietokoneen toiminta (Computer Organization I)

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

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

DumpDbox-ohjelmiston asennus- ja käyttöohjeet Sisällys

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Transkriptio:

TIES325 Tietokonejärjestelmä Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos Kevät 2008

Luku 1 Tietokone abstraktina yksikkönä Tietokoneen asbtratiotasoa sen muotoisena kuin me sen tällä hetkellä tunnemme voidaan lähestyä kahdelta suunnalta: tietokoneen rakenne (computer organization) sekä tietokoneen arkkitehtuuri (computer architecture). Näiden termien määritelmiä eivät ole välttämättä täysin yksikäsitteisiä, mutta yleisesti hyväksytyn määritelmän mukaan tietokoneen arkkitehtuuri viittaa ominaisuuksiin, jotka koskettavat läheisesti sovelluskehittäjää. Tietokoneen rakenne puolestaan viittaa toiminnallisiin yksiköihin, näiden keskenäiseen suhteeseen sekä yksityiskohtiin, jotka toteuttavat arkkitehtuuriset määritykset. Esimerkkejä arkkitehtuuriin liittyvistä asioista ovat esimerkiksi käytössä olevan järjestelmän ymmärtämät käskyt, datan kuvaaminen (lukujen tarkkuus, esitystapa). Vastaavasti tietokoneen sisäinen toiminta, kuten laskentayksiköiden välinen signalointi tai kertolaskun suorittaminen, liittyvät tietokoneen rakenteeseen. Arkkitehtuurin ja rakenteen välistä suhdetta voidaan kuvata yhden valmistajan laiteperheen avulla. Perheeseen kuuluvat laitteet noudattavat kaikki samaa arkkitehtuuria, joten ne ovat ohjelmallisesti yhteensopivia keskenään. Toisin sanoen perheen yhdelle jäsenelle tehty sovellus toimii (tietyin rajoituksin) perheen muissakin laitteissa. Laitteet ovat kuitenkin keskenään erilaisia rakenteensa suhteen, minkä seurauksena valmistaja voi tarjota tuotteitaan erilaisille asiakassegmenteille, joilla on erilainen maksukyky ja/tai erilaiset tarpeet. Esimerkiksi perheen halvassa mallissa ollaan voitu säästää kustannuksia jättämällä erillinen liukulukusuoritin pois, mikä hidastaa koneen toimintaa tietyn tyyppisessä käytössä. Jos käyttäjällä ei ole erityistä tarvetta liukuluvuille tai käytössä oleva budjetti ei anna myöden kalliimman mallin ostamiselle, tämä voi olla ainoa mahdollinen kompromissi. Toisaalta jatkossa on kuitenkin mahdollista vaihtaa uuteen (jopa eri valmistajan samaa samaa arkkitehtuuria noudattavaan) laitteeseen ilman, että menettää mahdollisuuden vanhojen sovellusten käyttämiseen. Itse asiassa tällainen laiteperheiden idea ei ollut mukana tietokoneiden varhaisessa kehityksessä, vaan se ole yksi tietojenkäsittelyä mullistanut idea 1960-luvulla. 1

1.1 Tietokoneen arkkitehtuuri Suorittimen käskykanta muodostaa perustan tietokoneen arkkitehtuurille. Se määrittelee millaisista toiminnoista suoritin kykenee suoriutumaan. Suorittimien käskykannat jaetaan tällä hetkellä neljään luokkaan: RISC (Reduced instruction set computer), CISC (Complex instruction set computer) ja uudempina tulokkaina VLIW (Very long instruction word) sekä TTA (Transport Triggered Architecture). Toisaalta jako voidaan tehdä myös toimintatyypin perusteella: pinoarkkitehtuuri, akkuperustainen arkkitehtuuri sekä yleiskäyttöisten rekistereiden arkkitehtuuri. Lisäksi viimeksi mainittu voidaan jakaa vielä kahtia rekisteri-muisti-arkkitehtuureihin, jonka ominaispiirteenä on muistin osoittaminen useilla erilaisilla käskyillä, sekä lataus-tallennus-arkkitehtuuri, jossa puolestaan kaikki varsinainen datan käsittely tapahtuu prosessorin sisällä rekistereissä ja muistin kanssa operoidaan ainoastaan erillisillä muistista lataus- ja sinne kirjoitus -käskyillä. Varsinaisen käskykannan lisäksi (tai oikeastaan sen osana) tietokoneen arkkitehtuuriin vaikuttavat myös muut yksityiskohdat. Näitä ovat muistin osoittamiseen ja osoittamistekniikka, käytössä olevat tietotyyppit ja niiden operaatiot, käskyjen suorituksen ohjelmallinen ohjaus sekä itse käskykannan kuvaus prosessorin konekielellä. Muistin käyttöön liittyvät arkkitehtuurikohtaiset ratkaisut vaikuttavat siihen, miten tieto voidaan tallentaa tietokoneen käyttömuistiin: voiko se sijaita mielivaltaisessa paikassa vai onko tarvitseeko tiedon tallentamisessa noudattaa joitain tiettyjä sääntöjä. Muistinosoittamistekniikka määrää sen, miten tiettyyn tietoelementtiin voidaan osoittaa. Voidaanko siihen osoittaa suoraan muistiosoitteella, onko osoite ladattava etukäteen prosessorin rekisteriin tai voiko muistiin osoittaa epäsuorasti johonkin tallennuspaikkaan sijoitetun osoitearvon perusteella? Tietotyypit ja niiden operaatiot kuvaavat sitä, millaisilla tietoyksiköillä prosessori kykenee toimimaan. Prosessoriarkkitehtuuri määrittää esimerkiksi kokonaisluvun 32-bittiseksi binääriluvuksi ja suuren tarkkuuden liukuluvun 64- bittiseksi IEEE 754 -standardin mukaiseksi. Operaatio pitävät sisällään aritmeettisten operaatioiden (kerto-, jako-, yhteen, vähennyslasku sekä bittioperaatiot) lisäksi tiedonsiirto (siirto/tallennus muistin ja rekistereiden välillä) sekä ohjauskäskyt (hypyt, vertailut). Käskyjen suorituksen ohjelmallisen ohjauksen peruselementti on edellä mainitut ohjauskäskyt. Vaikka tämä on periaatteessa vain yksi yksi käskytyyppi, ansaitsee se erityismaininnan tärkeytensä vuoksi. Käytännössä kaikki "normaalit" 1 tietokoneet toimivat siten, että ne suorittavat käskyjä järjestyksessä omassa muistiavaruudessaan. Tällainen pelkästään lineaarisesti etenevä ohjelma ei ole kovin monipuolinen, sillä sen tekijän on pitänyt tuntea täysin tarkasti ohjelman suorituksen vaiheet. Näin olleen esimerkiksi mihinkään ulkoiseen syötteeseen ei voitaisi reagoida, koska tällainen ei voi olla ennalta tiedossa. Erilaisiin vertailuoperaatioihin perustuvat ehdolliset hypyt ovat tämän ominaisuuden perusta, mutta seuraavaan käskyyn osoittavan ohjelmalaskurin arvon ohjelmallinen muuttaminen on myös mahdollista joissain arkkitehtuureissa. Erityisesti kuitenkin aliohjelmakutsujen ja niistä palaamisen määrittäminen on kuvattuna 1 Voidaan myös määritellä tietokonearkkitehtuuri, jossa seuraavaksi suoritettavan käskyn osoite välitetään aina osana edellistä käskyä, mutta ohjelmallisen ohjauksen tarve pätee erityisesti myös tämänlaiseen arkkitehtuurityyppiin. 2

prosessoriarkkitehtuurissa. Viimeisenä listalla oli käskykannan kuvaus prosessorin konekielellä. Tähän on kaksi pääluokkaa: kiinteän sanapituuden arkkitehtuurit sekä vaihtuvan sanapituuden arkkitehtuurit. Kummassakin tavassa on omat hyvät ja huonot puolensa: esimerkiksi kiinteän sanapituuden arkkitehtuureissa käskyjen tulkintaan on yksinkertaisempaa, koska suorittimen ei tarvitse erikseen päätellä käskyn pituutta. Toisaalta tämä piirre tekee arkkitehtuurista myös jäykemmän (ja enemmän tilaa kuluttava), koska kaikkia käskysanoja varten pitää aina talleentaa tietty määrä bittejä, vaikka käskyn sisältämä informaatio voitaisiin koodata pajon tiiviimminkin. Edellä oli kuvattuna hyvin tiiviisti tietokonearkkitehtuurin merkitys. Asiaan perehdytään vielä jatkossa lisää ja erityisesti käskykantoja käsitellään tarkemmin myöhemmin omassa luvussaan. 1.2 Tietokoneen rakenne Kuten edellä mainittiin tietokoneen rakenne on käytännössä tapa toteuttaa jokin tietty arkkitehtuurimääritys. Kuvassa 1.1 on Tanenbaumin 2 esitys tietokoneen rakenteesta (hieman mukailtuna). Alimpana tasona tässä kuvauksessa on digitaalilogiikkakerros, joka luo perustan nykyaikaiselle tietokoneelle. Tämä kerros koostuu transistoreista rakennetuista logiikkaporteista, jotka suorittavat yksinkertaisia binäärisiä perustoimenpiteitä, kuten NOT, NAND, NOR, AND, OR. Näiden yksinkertaisen operaatioiden tarkasti suunnitelluilla yhdistelmillä voidaan toteuttaa kaikki tietokoneen tarvitsemat toiminpiteet tietyn bitin arvon säilyttämisestä kontrolloituun komponenttien väliseen signalointiin. Sovellusohjelmointi Käyttöjärjestelmä Käskykanta Mikroarkkitehtuuri Digitaalilogiikka Kuva 1.1: Rakenteinen tietokoneen rakenne Seuraava kerros ylöspäin mentäessä on mikroarkkitehtuurikerros. Sen tehtävänä on toteuttaa prosessorin käskykanta (eli tämän yläpuolella oleva kerros). 2 Andrew S. Tanenbaum. Structured Computer Organization, 4th ed. Prentice-Hall. 1999. 3

Tämä on lopullisen tuotteen kannalta hyvin oleellinen kerros, sillä sen avulla voidaan tehdä hyvin erilaisia toteutuksia saman arkkitehtuuriinja samaan käskykantaan. Esimerkiksi mikroarkkitehtuurikerroksella voidaan valita toteutustapoja, jotka ovat hyvyn edullisia valmistaa, mutta joiden vuoksi tietokoneen kokonaistehokkuus ei pääse mahdollisimman korkealle tasolle. Kolmas kerros on käskykanta. Kuten jo edellä luvussa 1.1 todettiin, se määrittelee tietokoneen hallitsemat operaatiot. Samalla on hyvä huomata, että se on samalla laitteiston ja ohjelmiston (johon siis myös käyttöjärjestelmä lasketaan) rajapinta. Teoriassa voisi olla mahdollista rakentaa laitteisto, joka kykenee suorittamaan korkean tason ohjelmointikieltä, kuten C, mutta tämä ei ole käytännön syistä järkevää. Sen sijaan on järkevämpää suunnitella laitteisto tiettyä, varsin suppeaa käskyjoukkoa varten, ja kehittää kääntäjiä, jotka kykenevät kääntämään näiden korkean tason kielten toiminnallisuuden prosessorin konekielelle. Tässä vaiheessa on syytä korostaa, että Assembler-kieli ei ole sama kuin käskykanta, vaan se on osa ylimmän abstraktiokerroksen ohjelmointikielien joukkoa. Lisäksi voidaan myös mainita, että näillä kolmelle kerroksella voidaan jo kuvata täysin toimiva tietokonejärjestelmä. Kaksi jäljellä olevaa korkeampaa kerrosta lisäävät ainoastaan käytettävyyttä erilaisten käyttömahdollisuuksien ja helpomman ohjelmoitavuuden kautta. Seuraavana kerroksena ylöspäin mentäessä on käyttöjärjestelmä. Käyttöjärjestelmä tarjoaa mahdollisuuden hallita laitteistoa helpommalla tavalla verrattuna laitteiston suoraan ohjaukseen. Tämä tarkoittaa erityisten systeemikutsujen joukkoa, joilla sovellusohjelmoitsija voi laajentaa omaa sovellustaan prosessorin tarjoaman käskykannan lisäksi. Systeemikutsujen voidaan ajatella olevan rutiineja, jotka koostuvat (yleensä suuresta) joukosta käskykannan kutsuja. Näiden systeemikutsujen avulla käyttöjärjestelmä tarjoaa rajapinnan erilaisille I/O- ja muistilaitteille (sisältäen virtuaalimuistin) sekä mahdollistaa useiden suoritettavien ohjelmakoodien yhteistoiminnan 3. Viimeinen kerros rakennemallissamme on sovellusohjelmointikerros. Tanenbaumin versiossa kerroksen nimi on Assembly-kieli-kerros, mutta ei ole mitään erityistä syytä erottaa tässä yhteydessä Assemblyä esimerkiksi C-kielestä. Toki jälkimmäinen on näistä kahdesta ihmisystävällisempää, mutta molemmat noudattavat tällä abstraktiotasolla täsmälleen samoja sääntöjä: Tietyllä kielellä kirjoitettu sovellusohjelma on ensin käännettävä käyttöjärjestelmän ymmärtämään muotoon 4. Sovellusohjelmointikerroksen tehtävänä on ainoastaan helpottaa ohjelmoijan työtä. Vaikka assembler-ohjelmoitia pidetään monesti hankalana, on huomattavasti miellyttävämpää sanoa decf 0x07,1 kuin 0000 1110 0111 5. 3 Tässä jätettiin tarkoituksella termi "samanaikainen suoritus"käyttämättä, sillä yhden prosessorin järjestelmä suorittaa vain yhtä ohjelmaa kerrallaan. 4 Käyttöjärjestelmähän ei kuitenkaan ollut pakollinen kerros. Ilman käyttöjärjestelmää kääntäjän tulos on suoraan prosessorin ymmärtämää kieltä. 5 Tokihan vielä mukavampaa olisi, jos voitaisiin sanoa a--; tai vähennä laskurin arvoa yhdellä, mutta perusidea näissä kaikissa on täsmälleen sama 4