Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

6. Konekäskyjen suorittaminen

Samankaltaiset esitykset


Esitys aiheesta: "6. Konekäskyjen suorittaminen"— Esityksen transkriptio:

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 TTK-91-tietokone Keskusmuisti CPU Muistinhallinta-yksikkö
(myös välimuisti) Ohjelmat + niiden data Käyttöjärjestelmä Kirjastorutiinit Rekisterit Aritmeettis- looginen yksikkö (ALU) Ohjausyksikkö VÄYLÄT Oheislaitteiden ohjaimet

3 TTK-91:n keskusyksikkö suoritet-tavan ohjelman käskyt konekieli-sinä
Väy lät Rekisterit R0 R1 R2 R3 R4 R5 SP FP KESKUS-MUISTI väylät MMU LIMIT BASE MAR MBR suoritet-tavan ohjelman käskyt konekieli-sinä CONTROL UNIT TR IR PC SR IN1 IN2 OUT ALU 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 Nouto- ja suoritussykli
Hae PC:n osoittama käsky Käskyn suoritus Aloitus Lopetus noutosykli 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 Käskyn nouto LIMIT BASE MAR MBR rekisterit PC ’ADD’ TR IR PC SR ’ADD’
Väy lät sisäiset väylät MMU LIMIT BASE MAR MBR KESKUS-MUISTI rekisterit PC ohjelma: käsky ’ADD’ ’ADD’ CONTROL UNIT TR IR PC SR ’ADD’ +1 ALU Prosessori (CPU) Käskyn nouto

8 Käskyn nouto Käskyn nouto on aina samanlainen PC <-- PC +1
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ä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 Käskykoodi OPER Rj M Ri Osoiteosa ADDR

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 muistista noudolla fyysisen muistiosoitteen laskenta ja tarkistus väylän varaus ja vapautus

12 MAR <-- MMU <--MAR <--TR osoiteväylä <--- MAR
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ä NOUTO MUISTISTA

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 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’ IN IN2 OUT tai MBR:ään PC:hen, TR:ään OUT = IN1 +IN2 Myös indeksirekisterin, PC:n ja MAR:n lisäys ALU:n avulla

15 SR:n bitteihin tieto epäonnistumisesta
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 01234 Ohjelman virtuaaliavaruus .... n Sivutaulu F F 4 ... 3 F F
1 2 .. n F 4 ... 3 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 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 käyttäjätila Etuoikeutettu tila tai KJ:n ytimen tila
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 Suorittimen tilan muuttuminen
user kernel SVC, INT IRET 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 Väylät (jatkuu) kullakin laitteella oma osoite
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ä


Lataa ppt "6. Konekäskyjen suorittaminen"

Samankaltaiset esitykset


Iklan oleh Google