Notes
Slide Show
Outline
1
Luento 5
Suoritin ja väylä
  •         Suorittimen rakenne
  •            Väylän rakenne
  •           Käskyjen suoritussykli
  •              Suorittimen tilat
  •      Poikkeukset ja keskeytykset
  • TTK-91:n ja sen simulaattorien rakenne
2
Suoritin
3
TTK-91 suorittimen rakenne (1)
4
TTK-91 muistin rakenne
5
Käskyjen nouto- ja
suoritussykli (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
Nouto- ja suoritussykli
  • Käskyn suoritus voi muuttaa systeemin tilaa
    • sisäiset ja ulkoiset rekisterit
    • muisti
    • laitteet
7
TTK-91 konekäskyn rakenne
  • Käskyn esitys bittitasolla on aina:
8
Nouto- ja suoritussykli tarkemmin (5)
  • 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
    • muistiin MBR:n kautta
9
Käskyn noutovaihe (4)
  • 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
Käskyn purku ja tehollisen muisti- osoitteen (EA) laskemisvaihe
  • 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
Operandin luku vaihe (4)
  • 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
ALU operaatio -vaihe (10)
  • 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
Tuloksen
muistiin kirjoitus -vaihe  (5)
  • 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
TTK-91 Nouto- ja suoritussykli
vähän tarkemmin (1)
15
MMU:n toiminta (2)
  • 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
TTK-91 virtuaalimuisti
17
Virtuaalimuistin osoitteenmuunnosmenetelmiä (3)
  • 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
Sivuttava virtuaalimuisti
  • 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
Virtuaalimuistin piirteitä
  • 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
Virtuaalimuistin ongelma (1)
  • 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
Keskeytystilanteet (3)
  • 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
Keskeytysten käsittely (4)
  • 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
Keskeytystyyppejä (3)
  • 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
Käskyn aiheuttamat
virhetilanteet
  • 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
Käskyn aiheuttamat muut poikkeustilanteet
  • 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
 Ulkoapäin
(muualta kuin suorittimelta)
tulleet keskeytykset
  • Kellolaitekeskeytys (esim. joka 10 ms)
  • Laitekeskeytys (esim. levy I/O valmis)
  • Laitteistovirhe (esim. virhe väylän tiedonsiirrossa)
27
Keskeytyskäsittelijä
  • 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
Suorittimen tilat (2)
  • 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
Suorittimen tilan muuttaminen (2)
  • 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
TTK-91 Nouto- ja suoritussykli
vielä vähän tarkemmin
31
Väylät
  • 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
Väylähierarkia
33
Väylät (1)
  • Kullakin laitteella oma osoite
  • Yksi lähettää, kaikki kuulevat, vain ”oikea” laite vastaanottaa
  • Paljon erilaisia
  • Lähellä suoritinta
    olevat ovat nopeampia
34
TTK-91 koneen simulaattori (6)
  • 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
TTK-91 käskyn suoritussykli
36
 -- Luennon 5 loppu --