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