1 / 43

6. Konekäskyjen suorittaminen

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

javen
Télécharger la présentation

6. Konekäskyjen suorittaminen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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!

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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ä

  13. 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

  14. 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

  15. 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

  16. Tuloksen talletus • Tulos siirretään ALU:n ulostulosta johonkin rekisteriin tai muistiin • TTK-91:ssä vain STORE ja PUSH tallettavat muistiin • normaali muistiintalletus

  17. 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ä

  18. 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

  19. 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!

  20. 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

  21. Ohjelman virtuaaliavaruus 01234 .... n Sivutaulu F 0 1 2 .. n F 4 ... 3 0 F F muistin sivutilat

  22. 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?

  23. 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ää!

  24. Joidenkin käskyjen toiminta • PUSH • POP • CALL • EXIT • SVC

  25. 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’

  26. 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

  27. 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

  28. 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

  29. SVC SVC =HALT • aseta SR:n bitti S eli aiheuta poikkeus • palvelun numero on TR:ssä • palvelun mahdolliset parametrit on viety ennen kutsua pinoon

  30. 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

  31. 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ä

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. Keskeytyksen käsittely • LOAD PC, @TR • keskeytyskoodit sijaitsevat muistin alussa • osoite PC-rekisteriin • talletetaan entinen ympäristö pinoon • SR • PC • FP • tarvittavat rekisterit

  38. 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)

  39. 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)

  40. 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

  41. 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

  42. 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)

  43. 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ä

More Related