6. konekäskyjen suorittaminen
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 PresentationTRANSCRIPT
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
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
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ä
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!
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
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
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
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
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
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
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 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
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
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
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
muistin sivutilat
Ohjelman virtuaaliavaruus
Sivutaulu
...
0
1
2
..
n
01234
..
..
n
4
30
F
FF
F
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 -1PC <-- MEM[SP] paluuosoite
pinostaSP <-- SP -1SP <-- 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
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 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
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
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 yksi lähettää, kaikki kuulevat ja vain
yksi laite vastaanottaa paljon erilaisia lähellä suoritinta olevat nopeimpia
väylä
Ei enempää tällä kurssilla!