1
|
- Suorittimen rakenne
- Väylän rakenne
- Käskyjen suoritussykli
- Suorittimen tilat
- Poikkeukset ja keskeytykset
- TTK-91:n ja sen simulaattorien rakenne
|
2
|
|
3
|
|
4
|
|
5
|
- Hae PC:n osoittama konekäsky muistista
- lisää samalla PC:n arvoa yhdellä
- Suorita konekäsky
- jos (ehdollinen) hyppykäsky, niin PC:n arvo voi vielä muuttua
|
6
|
- Käskyn suoritus voi muuttaa systeemin tilaa
- sisäiset ja ulkoiset rekisterit
- muisti
- laitteet
|
7
|
- Käskyn esitys bittitasolla on aina:
|
8
|
- Noutovaihe
- muistista MBR:n kautta IR:ään
- Lisää 1 PC:hen
- Käskyn purku ja muistiosoitteen (EA) lasku
- OPER, Rj, M, Ri, ADDR
- TR ¬ (Ri) +
ADDR (pelkkä ADDR, jos Ri=R0)
- Operandin nouto
- muistista MBR:n kautta TR:ään (0-2 krt ?)
- ALU operaatio
- tulos rekisteriin R0-R7 tai TR:ään (STORE, PUSH)
- Muistiin talletus
|
9
|
- Vie PC:n arvo MAR:iin
- Aseta muistin lukusignaali kontrolliväylälle asentoon ”lue”
- Odota, kunnes muistipiiri toimittaa väylän kautta uuden arvon MBR:ään
- Siirrä konekäsky MBR:stä IR:ään
|
10
|
- Purku automaattisesti langoitettuna IR:stä
- Muistiosoitteen lasku, tulos TR:ään
- jos Ri=0, niin TR ¬ ADDR
- muutoin TR ¬ (Ri)+ADDR
- ALU suorittaa laskutoimituksen
- jos ADDR = 0, niin TR ¬ (Ri)
- Effective Address (EA) on nyt TR:ssä
|
11
|
- Vie muistiosoite MAR:iin
- Aseta muistin lukusignaali kontrolliväylälle asentoon ”lue”
- Odota kunnes muistipiiri toimittaa väylän kautta uuden arvon MBR:ään
- Siirrä sana MBR:stä TR:ään
- (tai suoraan johonkin laiterekisteriin R0-R7)
|
12
|
- Lähtötilanne
- käsky haettu ja purettu osiin IR:ssä
- 1. operandi rekisterissä (R0, …, R7)
- 2. operandi TR:ssä
- Käskyn suoritus ALU:ssä
- vie operandit sisäistä väylää pitkin
yksi kerrallaan ALU:un
- anna ALU:lle sopiva ohjaussignaali
- add, mul, copyLeft, comp, ...
- odota, että tulos valmis
- talleta tulos rekisteriin, MBR:ään, PC:hen ja/tai SR:ään
|
13
|
- Vie muistiosoite MAR:iin
- Vie kirjoitettava sana MBR:ään
- Aseta kirjoitussignaalit kontrolliväylälle asentoon ”kirjoita muistiin”
- Odota kunnes sana siirretään muistiin väylää pitkin ja väylän
kontrollisignaalit kertovat muistiinkirjoittamisen tapahtuneen
|
14
|
|
15
|
- Ohjelman käyttämät muistiosoitteet (VA) ovat näennäisiä, välillä 0 …
LIMIT-1
- ne eivät ole samoja osoitteita kuin keskusmuisti käyttää
- MAR:iin menevä arvoa VA ei käytetä suoraan, vaan se tarkistetaan ja
muokataan ensin
- Tarkista, onko VA Î
[0, LIMIT-1].
Jos ei ole, niin aseta SR:n bitti M päälle ja lopeta käskyn
suoritus
- Lisää VA:han BASE ja laita tämä arvo (PA) MAR:iin
|
16
|
|
17
|
- Kanta- ja rajarekisteriin perustuva
- base ja limit rekisterit (esim. ttk-91, 8086, ...)
- Sivuttava
- sivutaulut
- virtuaaliavaruus jaettu saman kokoisiin sivuihin
- Segmentoiva
- virtuaaliavaruus jaettu ohjelman mukaan erillisiin eri kokoisiin
segmentteihin
- koodi segmentti, data segmentti, …
|
18
|
- Kaikki tieto ei sijaitse muistissa, loput on levyllä
- erityisessä virtuaalimuistille varatussa partitiossa
- Muisti jaettu tasakokoisiin sivukehyksiin
- mikä tahansa (levyllä oleva) virtuaalimuistin sivu voidaan sijoittaa
mihin tahansa keskusmuistissa olevaan sivukehykseen
- kirjanpito virtuaalimuistin sivutauluissa (isot taulukot muistissa)
- Osoitteenmuutosta nopeuttaa välimuistin kaltainen TLB (Translation
Lookaside Buffer)
- esim. 99.9% osoitteenmuutoksista TLB:stä
- TLB osa muistinhallintayksikköä (MMU)
|
19
|
- Samalla ratkaistaan helposti muita ongelmia
- kirjanpito eri ohjelmien muistin käytöstä
- ohjelman muistialueiden suojaus muilta ohjelmilta
- ohjelma tarvitsee enemmän muistitilaa kuin mitä on
- yleinen muistinhallintaongelma
- Yleinen muistinhallintaongelma
- miten paljon muistitilaa kullekin ohjelmalle?
- missä päin muistia kunkin ohjelman muistitila on?
- yhtenäinen alue vai paloittainen?
- kiinteä sijainti koko ohjelman suorituksen ajan?
- miten muistiin viitataan?
|
20
|
- Joka muistiviitteen yhteydessä täytyy tehdä aika monimutkainen kuvaus
virtuaaliosoitteesta fyysiseen keskusmuistiosoitteeseen
- osittainen ratkaisu: TLB
- sivutaulujen koko silti ongelma! osa niistäkin levyllä!
- Aina joskus tulee viite sivuun, joka ei sijaitse keskusmuistissa
- kustannus: peli seis, kunnes tiedot haettu levyltä!
- lääke: niin iso keskusmuisti, että näitä ”sivunpuutoskeskeytyksiä” ei
tule usein
|
21
|
- Mikä tahansa tilanne, jonka käsittely vaatii poikkeuksen käskyjen
normaaliin suoritusjärjestykseen
- Rakkaalla lapsella on monta nimeä:
- poikkeus, keskeytys, virhetilanne, trappi, …
- exception, interrupt, fault, trap, failure, …
- SCV, KJ-kutsu, ...
- Jatkossa yleisnimi keskeytys tarkoittaa kaikkia näitä eri tapauksia tai
tyyppejä
|
22
|
- Jokainen mahdollinen keskeytystyyppi on ennalta tunnettu, eli mitään
todella yllättävää ei tapahdu
- Jokaiselle keskeytystyypille on oma käyttöjärjestelmän tuntema keskeytyskäsittelyrutiini
- Jokaisen käskyn suorituksen jälkeen tarkistetaan keskeytysten
olemassaolo SR:stä ja
haaraudutaan keskeytyskäsittelijään tarvittaessa
- joskus keskeytykset on estetty
(ttk-91:ssä SR:n bitti D)
- paluu käsittelijästä ”return-from-interrupt-handler” käskyllä (esim.
IRET, tms)
- ”Yllättävä aliohjelmakutsu”
|
23
|
- Käskyn aiheuttamat virhetilanteet
- Käskyn aiheuttamat muut poikkeustilanteet
- kyseessä ei siis ole virhetilanne, vaan haluttu käyttäytyminen
- tilanne vaatii erikoistoimenpiteen, jonka toteutus on tehty
keskeytyskäsittelyn kaltaiseksi
- Ulkoapäin (muualta kuin suorittimelta) tulleisiin signaaleihin
reagoiminen
- kontrolliväylältä tuleva signaali
|
24
|
- Virheellinen käskyn tai datan osoite
- Tuntematon käsky (opcode)
- Nollalla jako
- Kokonaisluvun tai liukuluvun yli/alivuoto
- Käytetty osoite ei ole muistissa (MMU)
|
25
|
- SVC käsky
- I/O konekäsky
- Trace keskeytys
- Käyttäjän määrittelemä keskeytys
- esim. Javan throw/catch tai try/catch operaatioiden toteutus
|
26
|
- Kellolaitekeskeytys (esim. joka 10 ms)
- Laitekeskeytys (esim. levy I/O valmis)
- Laitteistovirhe (esim. virhe väylän tiedonsiirrossa)
|
27
|
- Osa käyttöjärjestelmää
- Ennen keskeytyskäsittelijään hyppäämistä asetetaan suoritin ja MMU etuoikeutettuun
käyttöjärjestelmätilaan
- SR:n bitti P on päällä => etuoikeutettu tila eli
(P =
Priviledged)
käyttöjärjestelmä tila
- käyttöjärjestelmätilassa saa viitata mihin tahansa kohtaan muistia
(MMU: BASE=0, LIMIT=”hyvin iso”)
- käyttöjärjestelmätilassa saa käyttää kaikkia konekäskyjä
(esim. IRET tai ClearCache)
- Käsittelijästä paluun yhteydessä MMU:n tila ja suorittimen tila
asetetaan ennalleen
|
28
|
- Käyttäjätila
- voi käyttää vain tavallisia käskyjä
- voi viitata vain käyttäjän omaan muistiavaruuteen (MMU valvoo)
- Etuoikeutettu tila tai (KJ:n) ytimen tila
- voi käyttää kaikkia konekäskyjä, myös etuoikeutettuja (esim.
clear_cache, iret)
- voi viitata kaikkialle muistiin, myös käyttöjärjestelmän ytimeen
(kernel)
- voi käyttää (myös) suoria muistiosoitteita (PA)
|
29
|
- Käyttäjätila ® etuoikeutettu tila
- keskeytys tai suora KJ:n palvelupyyntö (SVC käsky)
- keskeytyskäsittelijä tarkistaa onko (oliko) oikeutta tilan vaihtoon
- Etuoikeutettu tila ® käyttäjätila
- etuoikeutettu konekäsky “return from interrupt handler”
esim. IRET (Pentium II)
- palauttaa kontrollin keskeytyneeseen kohtaan ja suorittimen tilan
keskeytystä edeltäneeseen tilaan
|
30
|
|
31
|
- Tiedon siirtoa varten laitteistossa
- Yksi kirjoittaja kerrallaan (vain!)
- Toteutettu johdinkimppuina
- Eri tasoilla
- suorittimen sisällä ”sisäinen väylä”
- muistiväylä suorittimen ja
muistin välillä
- I/O-väylä muistiväylän ja
I/O-laitteiden välillä
- Useita eri tapoja yhdistellä edellä olevia
|
32
|
|
33
|
- Kullakin laitteella oma osoite
- Yksi lähettää, kaikki kuulevat, vain ”oikea” laite vastaanottaa
- Paljon erilaisia
- Lähellä suoritinta
olevat ovat nopeampia
|
34
|
- Tavallinen Javalla tai Pascalilla kirjoitettu ohjelma
- TTK-91 koneen osat tietorakenteina
- rekisterit, MMU, CU, muisti
- Simuloi käskyjen suoritussykliä käsky kerrallaan
- Titokoneessa myös suorituksen animointi
- Toteuttaa myös TTK-91 koneen käyttöjärjestelmän osat osana tavallista
ohjelmaa
- assembler kääntäjä, lataaja, debugger, kesk. käsittelijät
- Graafinen käyttöliittymä
|
35
|
|
36
|
|