6. konekäskyjen suorittaminen

43
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

Upload: javen

Post on 26-Jan-2016

59 views

Category:

Documents


4 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 6. Konekäskyjen suorittaminen

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

Page 2: 6. Konekäskyjen suorittaminen

TTK-91-tietokone

Muistinhallinta-yksikkö

(myös välimuisti)

Rekisterit

Aritmeettis- looginen yksikkö (ALU)

Ohjausyksikkö

VÄYLÄT

KeskusmuistiCPU

Oheislaitteiden ohjaimet

Ohjelmat + niiden data

Käyttöjärjestelmä

Kirjastorutiinit

Page 3: 6. Konekäskyjen suorittaminen

TTK-91:n keskusyksikkö

IN1 IN2

OUTALU

MMU

CONTROL UNIT

KESKUS-MUISTI

OHJAIMET

TRIRPCSR

LIMITBASEMARMBR

Rekisterit

R0R1 R2 R3 R4 R5 SP FP

Prosessori (CPU)

väylät

Väy lät

suoritet-tavan ohjelman käskyt konekieli-sinä

Page 4: 6. Konekäskyjen suorittaminen

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

Page 5: 6. Konekäskyjen suorittaminen

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

Page 6: 6. Konekäskyjen suorittaminen

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!

Page 7: 6. Konekäskyjen suorittaminen

KESKUS-MUISTI

Prosessori (CPU)

Väy lät

ohjelma:

käsky ’ADD’

MMU

CONTROL UNIT

TRIRPC SR

LIMITBASEMARMBR

sisäiset väylät

rekisterit

ALU

’ADD’ +1

PC’ADD

Käskyn nouto

Page 8: 6. Konekäskyjen suorittaminen

8

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

Page 9: 6. Konekäskyjen suorittaminen

9

Käskyn tulkintakä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 31 2423 2120 19 18 1615 0

Page 10: 6. Konekäskyjen suorittaminen

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

Page 11: 6. Konekäskyjen suorittaminen

11

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

2. operandin nouto

Page 12: 6. Konekäskyjen suorittaminen

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ä

NOUTO MUISTISTA

Page 13: 6. Konekäskyjen suorittaminen

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

Page 14: 6. Konekäskyjen suorittaminen

14

ALU-operaation vaiheKäsky on purettu ja 1. operandi on jossain (työ)rekisterissä ja 2. operandi TR-rekisterissä.

Rj

ADD R2 M Ri Addr

234IR:

TR:

IN1 IN2

OUT

2. operandi jo valmiiksi ’noudettuna’

Myös indeksirekisterin, PC:n ja MAR:n lisäys ALU:n avulla

ohjaussignaali ’ADD’

OUT = IN1 +IN2

tai MBR:ään PC:hen, TR:ään

Page 15: 6. Konekäskyjen suorittaminen

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

Page 16: 6. Konekäskyjen suorittaminen

16

Tuloksen talletus

Tulos siirretään ALU:n ulostulosta johonkin rekisteriin tai muistiin

TTK-91:ssä vain STORE ja PUSH tallettavat muistiin

normaali muistiintalletus

Page 17: 6. Konekäskyjen suorittaminen

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ä

Page 18: 6. Konekäskyjen suorittaminen

18

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

LIMIT on ohjelmalle varatun muistialueen koko!

VA = virtual address PA = physical address

Page 19: 6. Konekäskyjen suorittaminen

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!

Page 20: 6. Konekäskyjen suorittaminen

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

Page 21: 6. Konekäskyjen suorittaminen

muistin sivutilat

Ohjelman virtuaaliavaruus

Sivutaulu

...

0

1

2

..

n

01234

..

..

n

4

30

F

FF

F

Page 22: 6. Konekäskyjen suorittaminen

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?

Page 23: 6. Konekäskyjen suorittaminen

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

Page 24: 6. Konekäskyjen suorittaminen

24

Joidenkin käskyjen toiminta

PUSH POP CALL EXIT SVC

Page 25: 6. Konekäskyjen suorittaminen

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’

Page 26: 6. Konekäskyjen suorittaminen

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

Page 27: 6. Konekäskyjen suorittaminen

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

Page 28: 6. Konekäskyjen suorittaminen

28

EXIT EXIT SP, =2

SP <-- FP poista nykyinen ympäristö

FP <-- MEM[SP] kutsujan ympäristö

SP <-- SP -1PC <-- MEM[SP] paluuosoite

pinostaSP <-- SP -1SP <-- SP - TR poista parametrit

Page 29: 6. Konekäskyjen suorittaminen

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

Page 30: 6. Konekäskyjen suorittaminen

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

Page 31: 6. Konekäskyjen suorittaminen

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ä

Page 32: 6. Konekäskyjen suorittaminen

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

Page 33: 6. Konekäskyjen suorittaminen

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

Page 34: 6. Konekäskyjen suorittaminen

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

Page 35: 6. Konekäskyjen suorittaminen

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

Page 36: 6. Konekäskyjen suorittaminen

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

Page 37: 6. Konekäskyjen suorittaminen

37

Keskeytyksen käsittely

LOAD PC, @TR keskeytyskoodit sijaitsevat muistin

alussa osoite PC-rekisteriin

talletetaan entinen ympäristö pinoon SR PC FP tarvittavat rekisterit

Page 38: 6. Konekäskyjen suorittaminen

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)

Page 39: 6. Konekäskyjen suorittaminen

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)

Page 40: 6. Konekäskyjen suorittaminen

40

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

Page 41: 6. Konekäskyjen suorittaminen

41

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

user kernel

SVC, INT

IRET

Page 42: 6. Konekäskyjen suorittaminen

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)

Page 43: 6. Konekäskyjen suorittaminen

43

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ä

Ei enempää tällä kurssilla!