6 Konekskyjen suorittaminen n TTK91 suoritin ja vylt

















![MMU: n toiminta n n n Ohjelman käyttämät osoitteet ovat välillä [0, LIMIT-1] (ohjelman MMU: n toiminta n n n Ohjelman käyttämät osoitteet ovat välillä [0, LIMIT-1] (ohjelman](https://slidetodoc.com/presentation_image_h/f4ec748579335f6932f2f39d618d107e/image-18.jpg)







![POP Esim. POP SP, R 3 MAR ohjausväylä osoiteväylä ohjausväylä MBR MEM[MAR] ohjausväylä Ri POP Esim. POP SP, R 3 MAR ohjausväylä osoiteväylä ohjausväylä MBR MEM[MAR] ohjausväylä Ri](https://slidetodoc.com/presentation_image_h/f4ec748579335f6932f2f39d618d107e/image-26.jpg)
![CALL SP MEM[SP] FP PC CALL SP, Sqr <-- SP +1 <-- PC <-- CALL SP MEM[SP] FP PC CALL SP, Sqr <-- SP +1 <-- PC <--](https://slidetodoc.com/presentation_image_h/f4ec748579335f6932f2f39d618d107e/image-27.jpg)
















- Slides: 43
6. Konekäskyjen suorittaminen n TTK-91 -suoritin ja väylät n rekistereissä olevat tiedot siirtyvät väyliä pitkin rekisteristä toiseen n siirtojen ohjauskomennot mikro-ohjelmana tai mikropiireinä suorittimen kellon tahdistamana Suoritettava ohjelma muistissa n n konekäskyt, globaalit muuttujat, pinon paikalliset muuttujat, keko ohjelman omassa muistialueessa keskusmuistissa 1
TTK-91 -tietokone CPU Rekisterit Aritmeettislooginen yksikkö (ALU) Keskusmuisti Muistinhallintayksikkö (myös välimuisti) Ohjausyksikkö Käyttöjärjestelmä Kirjastorutiinit Ohjelmat + niiden data VÄYLÄT Oheislaitteiden ohjaimet 2
TTK-91: n keskusyksikkö Rekisterit väylät V ä y lä t MMU LIMIT BASE MAR MBR R 0 R 1 R 2 R 3 R 4 R 5 SP FP CONTROL UNIT TR IR PC SR IN 1 KESKUSMUISTI suoritettavan ohjelman käskyt konekielisinä IN 2 ALU OUT Prosessori (CPU) OHJAIMET 3
Käskyn suorituksen vaiheet n Käskyn nouto n n n käskyn nouto PC: n ilmoittamasta muistipaikasta käskyrekisteriin PC: n kasvatus yhdellä (=> seuraava käsky) Käskyn suoritus n n n (TTK-91) Käskyn tulkinta (dekoodaus) Osoitelaskenta ja 2. operandin nouto Käskyn varsinainen suoritus Tulosten talletus Tilarekisterin tutkiminen sekä poikkeusten ja keskeytysten käsittely 4
Nouto- ja suoritussykli Aloitus Hae PC: n osoittama käsky Käskyn suoritus noutosykli suoritussykli Lopetus Käskyn suoritus voi muuttaa systeemin tilaa - muuttaa rekistereiden arvoja - muuttaa muistipaikkojen arvoja - muuttaa laitteiden tilaa 5
Suorittimen toiminta n on todella näin yksinkertaista n n n käskyn nouto ja noudetun käskyn suoritus Suoritin käsittelee vain konekäskyjä eikä tiedä mitään suuremmista kokonaisuuksista kuten ohjelmista! 6
sisäiset väylät rekisterit MMU LIMIT BASE PC MAR MBR ’ADD’ CONTROL UNIT ALU TR IR PC SR V ä y lä t KESKUSMUISTI ohjelma: käsky ’ADD’ +1 Prosessori (CPU) Käskyn nouto 7
Käskyn nouto n n Käskyn nouto on aina samanlainen MAR <-- MMU <--MAR <--PC PC ohjausväylä osoiteväylä ohjausväylä MBR ohjausväylä IR <-- PC +1 <-- ‘varaa väylä’ <--- MAR <-- ‘lataa muistista’ <-- dataväylä <-- MEM[MAR] <-- ‘vapauta väylä’ <-- MBR Virheellinen muistiosoite => SR: n bitti M <--1 8
Käskyn tulkinta käskykoodin tulkitseminen n käskykoodi määrää jatkossa suoritettavat toimenpiteet n n oikeat ohjaussignaalit oikea mikrokoodin pätkä tuntematon käskykoodi => SR: n U-bitti <--1 n toimintojen limitys Käskykoodi OPER 31 Rj M Ri 2423 2120 19 18 1615 Osoiteosa ADDR 0 9
Osoitteen laskenta n n n Käskyn 2. operandi määräytyy käskykoodin, ja kenttien M, Ri ja ADDR perusteella. Ensin suoritetaan aina indeksointi (ellei R 0) jos (Ri<>0), TR <-- ADDR +Ri muuten TR <-- ADDR Mahdollinen indeksointi tehdään yhteenlaskuna n yhteenlaskettavat ADDR ja Ri ALU: uun, ohjaussignaaliksi ‘+’ ja tulos TR: ään 10
2. operandin nouto n Suoritetaan tarpeelliset muististanoudot n 0, 1 tai 2 M-kentän perusteella ja tulos (arvo tai osoite) talletetaan TR: ään jos (M=01), TR <-- MEM[TR] jos (M=10), TR <-- MEM[TR]] n Operandit noudetaan normaalilla muistista noudolla n n fyysisen muistiosoitteen laskenta ja tarkistus väylän varaus ja vapautus 11
NOUTO MUISTISTA MAR <-- MMU <--MAR <--TR ohjausväylä <-- ‘varaa väylä’ osoiteväylä <--- MAR ohjausväylä <-- ‘lataa muistista’ MBR <-- dataväylä <-- MEM[MAR] ohjausväylä <-- ‘vapauta väylä n Jos STORE, CALL tai hyppykäsky n TR: n sisältö on kohdeosoite Muuten jälkimmäisen operandin arvo n NOP, POP: TR-rekisterin sisältöä ei käytetä n 12
Käskyn suoritus n n ohjausyksikkö siirtää operandit ALU: uun antaa ALU: lle käskykoodin ilmoittaman ohjauksen n n esim. ‘+’, ADD, AND, SHL, COMP, . . Esim. ADD-käskyn suoritus ALU_in 1 <-- Rj ALU_in 2 <-- TR ohjaus ‘ADD’ Rj <-- ALU_out 13
ALU-operaation vaihe Käsky on purettu ja 1. operandi on jossain (työ)rekisterissä ja 2. operandi TR-rekisterissä. ohjaussignaali ’ADD’ Rj IR: ADD R 2 M Ri Addr 234 TR: tai MBR: ään PC: hen, TR: ään IN 1 IN 2 OUT = IN 1 +IN 2 OUT 2. operandi jo valmiiksi ’noudettuna’ Myös indeksirekisterin, PC: n ja MAR: n lisäys ALU: n avulla 14
Suorituksen epäonnistuminen (‘poikkeus’) n n SR: n bitteihin tieto epäonnistumisesta Vertailun COMP tulos myös SR: n bitteihin n n Rj < 2. operandi => L-bitti <-- 1 Rj = 2. operandi => E-bitti <-- 1 Rj < 2. operandi => G-bitti <-- 1 ehdollinen haarautuminen Rj: n sisällön perusteella n n suoritetaan ensin rekisterin ja nollan vertailu ALU: ssa ohjausyksikkö päättää bittien L, E ja G perusteella, saako PC uuden arvon 15
Tuloksen talletus n n Tulos siirretään ALU: n ulosta johonkin rekisteriin tai muistiin TTK-91: ssä vain STORE ja PUSH tallettavat muistiin n normaali muistiintalletus 16
STORE MAR MBR ohjausväylä osoiteväylä dataväylä ohjausväylä <-- MMU <--MAR <--TR <-- Rj <-- ‘varaa väylä’ <--- MAR <-- MBR <-- ‘talleta muistiin’ <-- ‘vapauta väylä 17
MMU: n toiminta n n n Ohjelman käyttämät osoitteet ovat välillä [0, LIMIT-1] (ohjelman omaa osoiteavaruutta) Suoritusaikana ohjelma on sijoitettu keskusmuistiiin, osoitteisiin [BASE, BASE+LIMIT 1] MMU tarkistaa, että ohjelma antama muistiosoite VA on välillä [0, LIMIT-1] n n LIMIT on ohjelmalle varatun muistialueen koko! Jos ei ole, niin aseta SR: n M-bitti. VA + BASE = PA => MAR VA = virtual address PA = physical address 18
Virtuaalimuistin osoitemuunnostapoja n Kanta- ja rajarekisterin avulla n n sivuttava muisti n n n TTK-91: n BASE- ja LIMIT-rekisterit, 8086, . . . virtuaaliavaruus (ohjelman osoiteavaruus) on jaettu kiinteänkokoisiin sivuihin; fyysinen muisti jaettu samankokoisiin sivukehyksiin sivutaulut pitävät kirjaa siitä, mitkä sivut ovat missäkin kohtaa muistissa segmentoiva muisti n Ei käsitellä jatkossa! virtuaaliavaruus on jaettu eri kokoisiin segmentteihin ohjelman rakenteen mukaisesti 19
Sivuttava virtuaalimuisti n n kaiken tiedon ei tarvitse olla muistissa osa voi sijaita levyllä, josta se tarvittaessa siirretään muistiin n n sivunpuutoskeskeytys (page fault) vie paljon aikaa sivutaulu kertoo, onko levyllä vai muistissa ja missä muistin sivutilassa n n melko isoja tauluja, jotka eivät kaikki mahdu MMU: hun, vaan osa on muistissa tässä nopeuttaa välimuistin kaltainen TLB, joka sijaitsee MMU: ssa n viimeksi käytetyt sivutaulun osat 20
Ohjelman virtuaaliavaruus 0 1 2 3 4 Sivutaulu 0 1 F F 4 2. . n . . . F F . . 3 0 n muistin sivutilat 21
Virtuaalimuistin hyötyjä n Ratkaistaan samalla kertaa useita ongelmia n n kirjanpito eri ohjelmien muistin käytöstä ohjelman muistialueiden suojaus keskusmuistia suuremman ohjelman suoritus yleinen muistinhallintaongelma n n miten paljon muistia eri ohjelmille? missä ohjelmalle annettu muisti sijaitsee? n n n kiinteä sijainti koko suorituksen ajan yhtenäinen alue, pieniä palasina miten muistiin viitataan? 22
Virtuaalimuistin ongelmia n virtuaaliosoite muutettava fyysiseksi osoitteeksi n n usein monimutkainen toimenpide sivutaulut suuria=> keskusmuistissa => tarvitaan kaksi muistista noutoa n n n ensin sivutaulu ja sitten vasta data tai käsky TLB auttaa sivunpuutoksia satuu ja sivunpuutos on ’kallis’ operaatio n n sivu on haettava levyltä muistiin ennenkuin ohjelmaa voidaan jatkaa riittävän suuri keskusmuisti Tästä ei sen enempää! 23
Joidenkin käskyjen toiminta n n n PUSH POP CALL EXIT SVC 24
PUSH esim. PUSH SP, =100 SP MAR MBR ohjausväylä osoiteväylä dataväylä ohjausväylä <-- SP +1 <-- MMU <--MAR <--SP <-- TR <-- ‘varaa väylä’ <--- MAR <-- MBR <-- ‘lataa muistista’ 25
POP Esim. POP SP, R 3 MAR ohjausväylä osoiteväylä ohjausväylä MBR MEM[MAR] ohjausväylä Ri SP <-- MMU <--MAR <--SP <-- ‘varaa väylä’ <--- MAR <-- ‘lataa muistista’ <-- dataväylä <-<-- ‘vapauta väylä’ <-- MBR <-- SP -1 26
CALL SP MEM[SP] FP PC CALL SP, Sqr <-- SP +1 <-- PC <-- SP +1 <-- FP <-- SP <--TR paluuosoite pinoon kutsujan ympäristö kutsuttu ympäristö 27
EXIT SP FP SP PC SP SP EXIT SP, =2 <-- FP poista nykyinen ympäristö <-- MEM[SP] kutsujan ympäristö <-- SP -1 <-- MEM[SP] paluuosoite pinosta <-- SP -1 <-- SP - TR poista parametrit 28
SVC n n n SVC =HALT aseta SR: n bitti S eli aiheuta poikkeus palvelun numero on TR: ssä palvelun mahdolliset parametrit on viety ennen kutsua pinoon 29
Poikkeusten ja keskeytysten käsittely tilarekisteri SR tarkastetaan aina ennen seuraavan käskyn noutoa n n n käskyn suorituksen aiheuttama poikkeustilanne käskyn aiheuttama plvelupyyntö keskeytyspyyntö prosessorin ulkopuolelta n n I/O-toiminnan päättyminen keskeytyksen havaittuaan prosessori siirtyy suorittamaan käyttöjärjestelmän koodia (keskeytyskäsittely) n jos ei aihetta jatkotoimiin => takaisin suorittamaan ohjelman koodia 30
n Keskeytyksen käsittelijänumero TR: ään n palvelupyyntökeskeytyksessä osoitelaskun jäljiltä jo valmiina TR: ssä n n poikkeuksen käsittelijänumero selviää tilarekisteristä n n SVC =HALT nollalla jako --> Z-bitti asetettu laitteistokeskeytyksessä pyydettävä keskeytyksen aiheuttaneelta laitteelta n merkki luettu näppäimistöltä 31
Keskeytystyyppejä n n käskyn aiheuttamat virhetilanteet käskyn aiheuttamat muut poikkeustilanteet n n n kyseessä on haluttu käyttäytyminen, eikä virhetilanne tilanteen vaatima erityistoimenpide on toteutettu keskeytyksenä ja sen käsittelynä laitteilta tulevat keskeytyssignaalit n levyltäluku on suoritettu; tieto on valmiina puskurissa 32
Käskyn aiheuttamat virhetilanteet n n n Virheellinen käskykoodi nollalla jako luvun yli- tai alivuoto epäkelpo käskyn tai datan osoite ei ole muistissa n esim. sivunpuutoskeskeytys 33
Käskyn aiheuttamat poikkeustilanteet n SVC-käsky n n I/O-konekäsky n n ohjelma pyytää käyttöjärjestelmän palveluja aloittaa I/0 -toiminnan laitteelta tai laitteelle Käyttäjän itse määrittelemä keskeytys n esim. Javan throw/catch- tai try/catchoperaation toteutus 34
Muualta kuin suorittimelta tulleet keskeytykset n kellolaitekeskeytys n n aina esim. 10 sekunnin välein levyltä luettu jo puskuriin laitteistovirhe n n virhe väylän tiedonsiirrossa vika jossain I/O-laitteessa n levyvirhe 35
Keskeytyskoodit TTK-91: ssä n n n n 0: luvun yli/alivuoto (O-bitti) 1: nollallajako (Z-bitti) 2: tuntematon käsky (U-bitti) 3: kielletty muistiviittaus (M-bitti) 5: muistin pariteettivirhe 6: kello 7: näppäimistö 8: hiiri 9: levyasema 10: kirjoitin 11: HALT lopetus 12: READ luku I/O-laitteelta 13: WRITE kirjoitus I/O-laitteelle 14: TIME kellonaika 15: DATE päiväys 36
Keskeytyksen käsittely n LOAD PC, @TR n n n keskeytyskoodit sijaitsevat muistin alussa osoite PC-rekisteriin talletetaan entinen ympäristö pinoon n n SR PC FP tarvittavat rekisterit 37
Keskeytysten käsittelyrutiinit n Jokaiselle keskeytystyypille on oma käyttöjärjestelmän tuntema keskeytyskäsittelyrutiini (interrupt handler) n n rutiinissa suoritetaan keskeytyksen vaatimat toimenpiteet n n ’yllättävä aliohjelmakutsu’ usein muistin alkuun on sijoitettu vain hyppykäskyt varsinaisiin käsittelyrutiineihin paluu rutiinista IRET-käskyllä handler) (return from interrupt 38
Keskeytyskäsittelijä n n osa käyttöjärjestelmää ennen käsittelijään menoa asetetaan suoritin ja MMU etuoikeutettuun tilaan (supervisor state) n SR: n P-bitti on asetettu (priviledged) => etuoikeutettu eli käyttöjärjestelmätila n saa viitata mihin tahansa kohtaan muistia n saa käyttää kaikkia konekäskyjä n n IRET, Clear. Cache palatessa asetetaan suoritin ja MMU takaisin käyttäjätilaan (user state) 39
Suorittimen tilat n kernel käyttäjätila n n saa käyttää vain tavallisia käskyjä voi viitata vai käyttäjän omaan muistiavaruuteen n n user MMU valvoo Etuoikeutettu tila tai KJ: n ytimen tila n n käytössä myös etuoikeutetut käskyt voi viitata kaikkialle muistiin, myös KJ: n ytimeen n voi käyttää myös suoria muistiosoitteita 40
Suorittimen tilan muuttuminen n Käyttäjätilasta => etuoikeutettuun n n user keskeytys tai SVC keskeytyskäsittelijä päättää, onko tilanvaihto tarpeen SVC, INT kernel IRET Etuoikeutetusta => käyttäjätilaan n n IRET-käsky palataan suorittamaan joko samaa ohjelmaa tai sen suoritus keskeytyy, jolloin jatketaan jonkin toisen käyttäjänohjelman suorittamista 41
Väylät n n tiedon siirtoon laitteistossa vain yksi kirjoittaja kerrallaan toteutettu johdinkimppuina eri tasoilla n n suorittimen sisällä ’sisäinen väylä’ (internal bus) muistiväylä suorittimen ja muistin välillä (memory bus) n I/O-väylä muistiväylän ja I/O-laitteiden välillä (I/O bus) 42
Ei enempää tällä kurssilla! Väylät (jatkuu) n n kullakin laitteella oma osoite yksi lähettää, kaikki kuulevat ja vain yksi laite vastaanottaa paljon erilaisia lähellä suoritinta olevat nopeimpia väylä 43