6 Konekskyjen suorittaminen n TTK91 suoritin ja vylt

  • Slides: 43
Download presentation
6. Konekäskyjen suorittaminen n TTK-91 -suoritin ja väylät n rekistereissä olevat tiedot siirtyvät väyliä

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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:

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

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

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

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ä,

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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ä

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

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ää,

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