Suoritin ja väylä
Transcription
Suoritin ja väylä
Luento ue to 5 (verkkoluento (ve o ue to 5) Suoritin ja väylä Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset 29.10.2015 Copyright 2015 Teemu Kerola 1 Suorituksenaikainen suorittimen itti ja j muistin i ti sisältö i ältö muisti suoritin kirjastorutiinit konekäskyjen suorituspiirit, suoritettava käsky Suoritettava ohjelma laiterekisterit välimuisti (ei ttk-91:ssä) data käyttöjärjestelmä väylä 29.10.2015 Copyright 2015 Teemu Kerola 2 Suorittimen toiminta, perusidea PC=0 alkuarvo start PC = Program Counter IR = Instruction Register Käskyn nouto IR := mem (PC) Käskyjen nouto- ja suoritussykli Ohjelmalaskurin kasvatus PC := PC+1 IR-käskyn suoritus (voi muuttaa PC:tä) (voi sisältää muistiviitteitä) 29.10.2015 Copyright 2015 Teemu Kerola 3 TTK-91 suorittimen rakenne regs R0 R1 R2 R3 R4 R5 R6 R7 sisäinen väylä ALU PC CU TR Kontrollisignaalit IR SR MMU BASE LIMIT MAR MBR Bus ctl kontrolliväylä muistiosoiteväylä y väylä dataväylä 29.10.2015 Copyright 2015 Teemu Kerola 44 Käskyn suorittaminen • Titokone näyttää vaiheet simuloimalla • Store R4, @10(R1) ; R1 =20, R4=15 – Käskyn nouto ja ohjelmalaskurin kasvatus: • PC → MAR, “bus read”, odota, mem → MBR • MBR → IR • PC+1 → PC – Esim: PC → ALU1, 1 → ALU2, +, odota, ALU → PC – Esim: PC → INCin, odota, INCout→ PC (oma piiri) – Käskyn suoritus: • R1 → ALU1, 10 → ALU2, +,, (odota), ALU → TR • TMP → MAR, ”bus read”, odota, mem → MBR MBR → MAR, R4 → MBR, ”bus write”, odota, MBR → mem – Huom: H yhteensä h ä 3 muistiviitettä i i ii ä 29.10.2015 Copyright 2015 Teemu Kerola 5 TTK-91 konekäskyn rakenne • Ttk-91 käskyn esitys bittitasolla on aina: Rj M Ri 3 bit 2 bit 3 bit OPER käskykoodi 8 bit field 31 24 21 19 ADDR osoiteosa 16 bit field 16 15 Rj = käskyn ensimmäinen operandi 0 (pienehkö) muistiosoite tai vakio Ri = indeksirekisteri ((0 ei käytetä) y ) (addressing M = muistinoutojen määrä toiseen operandiin mode) (ennen mahdollista muistiin talletusta) 00 eli li 0 kpl, k l välitön älitö osoitus it (STORE suora osoitus) (STORE: it ) 01 eli 1 kpl, suora osoitus (STORE: epäsuora osoit.) 10 eli 2 kpl, epäsuora osoitus (STORE: epäkelpo arvo) ( 11 eli 3 kpl, epäkelpo arvo poikkeustilanne ) 29.10.2015 Copyright 2015 Teemu Kerola Keskustele 6 Käskyn purku ja tehollisen muistiosoitteen (EA) laskemisvaihe Rj M Ri 3 bit 2 bit 3 bit OPER käskykoodi 8 bit field 31 24 21 19 16 15 ADDR osoiteosa 16 bit field (bitti:) 0 • P Purku k automaattisesti t tti ti langoitettuna l it tt käskyrekisteristä kä k ki t i tä (IR) • Muistiosoitteen lasku, tulos tilapäisrekisteriin (TR) – jjos Ri=0,, niin TR ADDR – muutoin TR (Ri)+ADDR • ALU suorittaa laskutoimituksen • jos j ADDR A = 0, 0 niin ii TR (Ri) ( i) – Effective Address (EA) on nyt TR:ssä • TR:n sisältöä voi käyttää datana sellaisenaan tai muistiosoitteena tai epäsuorana muistiosoitteena 29.10.2015 Copyright 2015 Teemu Kerola 7 Muistitilan käyttö ohjelmalle P Todellinen fyysinen muisti P:n näkemä (virtuaalinen) muisti 0: 0: Ohjelmakoodi Globaalit muuttujat ja tietorakenteet BASE LIMIT P SP Pino (stack) aliohjelmien toteuttamista varten (myös paikalliset muuttujat) Vapaa muistitila rekistereitä i iso: 29.10.2015 HP Keko (heap) dynaamisesti (esim. Javan ”new”) vvarattavia v muistialueita u s ue varten (ei ttk-91:ssa…) Copyright 2015 Teemu Kerola Keskustele 8 Virtuaalimuistin osoitteenmuunnosmenetelmiä • Kanta- ja rajarekisteriin perustuva – base b j limit ja li i rekisterit ki i (esim. ( i ttk-91, k 91 8086, 8086 ...)) • Sivuttava Lisää tietoa? käyttöjärjestelmä järjestelmäkurssi – sivutaulut – virtuaaliavaruus jaettu saman kokoisiin sivuihin • Segmentoiva – virtuaaliavaruus jjaettu ohjelman j mukaan käyttöerillisiin eri kokoisiin Lisää järjestelmätietoa? segmentteihin kurssi • koodi segmentti, data segmentti, literaalialue, … 29.10.2015 Copyright 2015 Teemu Kerola 9 Keskeytysten käsittely • JJokainen k i mahdollinen hd lli keskeytystyyppi k k i on ennalta l tunnettu, eli mitään todella yllättävää ei koskaan tapahdu • Jokaiselle keskeytystyypille on oma käyttöjärjestelmän tuntema interrupt handler keskeytyskäsittelyrutiini • Jokaisen käskyn suorituksen lopussa (sen jälkeen) tarkistetaan (laitteisto tarkistaa) keskeytysten olemassaolo SR:stä jja haaraudutaan keskeytyksen yy tyypin yyp mukaiseen keskeytyskäsittelijään tarvittaessa – Esim. kesk. tyyppi 3 kesk. käsittelijän osoite muistipaikassa 3 – joskus keskeytykset on estetty (ttk (ttk-91:ssä 91:ssä SR:n bitti D) – paluu käsittelijästä ”return-from-interrupt-handler” käskyllä (esim. IRET, tms) • ”Yllättävä aliohjelmakutsu” 29.10.2015 Copyright 2015 Teemu Kerola 10 Suorittimen toiminta, tarkemmin PC=0 alkuarvo start PC = Program Counter IR = Instruction Register Käskyn nouto IR := mem (PC) Keskeytysten tarkastaminen (voi muuttaa PC:tä) Käskyjen nouto- ja suoritussykli Ohjelmalaskurin kasvatus PC := PC+1 IR-käskyn suoritus (voi muuttaa PC:tä) (voi sisältää muistiviitteitä) 29.10.2015 Copyright 2015 Teemu Kerola Keskustele 11 Keskeytyskäsittelijä • Tärkeä osa käyttöjärjestelmää • Ennen keskeytyskäsittelijään siirtymistä asetetaan suoritin etuoikeutettuun ( (supervisor i state, t t käyttöjärjestelmätilaan kernel st.) – 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 BASE=0, LIMIT= LIMIT=”hyvin hyvin iso iso”)) – käyttöjärjestelmätilassa saa käyttää kaikkia konekäskyjä • esim. IRET, ClearCache, SetBASE, SetLIMIT, SetD, ReadSR, … • Käsittelijästä paluun yhteydessä MMU:n tila ja suorittimen tila il (bitti (bi i P) asetetaan ennalleen ll 29.10.2015 Copyright 2015 Teemu Kerola 12 Suorittimen tilan muuttaminen SVC INT SVC, käyttäjätila user IRET kernel supervisor state etuoikeutettu tila • Käyttäjätila etuoikeutettu tila – keskeytys tai suora KJ:n palvelupyyntö (SVC käsky) – keskeytyskäsittelijä tarkistaa onko (oliko) oikeutta tilan vaihtoon (interrupt handler) • 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 29.10.2015 Copyright 2015 Teemu Kerola Keskustele 13 Titokone - TTK-91 koneen simulaattori • Tavallinen Javalla kirjoitettu ohjelma • TTK-91 koneen osat tietorakenteina – rekisterit, MMU, CU, muisti • Simuloi käskyjen suoritussykliä käsky kerrallaan • 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ä y y Ks. Processor.java Titokoneen koodissa: j j titokone.jar\fi\hu\cs\titokone\Processor.java (http://www.cs.helsinki.fi/group/nodes/kurssit/tito/Processor.java.txt ) 29.10.2015 Copyright 2015 Teemu Kerola 14 TTK-91 käskyn suoritussykli hae käsky simuloidusta muistista IR = mem[PC] pura käsky osiin (OPER, Rj, M, Ri, ADDR) ja laske osoiteosan arvo TR (ADDR tai reg[Ri]+ADDR) ADDR = IR mod 32768 TR = reg[Ri] +ADDR p tee tarvittava määrä ((M)) operandin hakuja muistista rekisteriin TR TR = mem[TR] valitse aliohjelma operaatiokoodin (OPER) perusteella if (opcodeOK[OPER] = FALSE) then SR.U = 1; simuloi konekäskyn suorituksen muutokset rekistereihin ki ihi (R0…R7, (R0 R7 SR, SR PC, PC MAR, MAR MBR) ADD Rj, M ADDR(Ri) reg[Rj] += TR; SR.O = … lopeta p suoritus jjos SVC tai keskeytys yy Simulaattori C:llä: http://www.cs.helsinki.fi/group/nodes/kurssit/tito/simu/simu.c 29.10.2015 Copyright 2015 Teemu Kerola 15 Väylät 1 2 väylä 8 9 10 • Kullakin laitteella oma osoite • Yksi lähettää, kaikki kuulevat, vain ”oikea” laite vastaanottaa ja reagoi Tietokoneen • Paljon erilaisia Lisää rakenne tietoa? -kurssi • Lähellä suoritinta olevat ovat nopeampia 29.10.2015 Copyright 2015 Teemu Kerola 16 Väylähierarkia Tyypillinen Pentium II systeemin emolevy omalla lastulla, tason 1 välimuistin kanssa PCI to SCSI bridge 29.10.2015 Fig. 3-50 [Tane99] Copyright 2015 Teemu Kerola Keskustele 17 -- Loppu -- (Tekniikan museo) ESKO, 1960 ensimmäinen Suomessa rakennettu ”tietokone”, vanhentunut jo valmistuessaan, 20 yhteenlaskua sekunnissa. • Ohjelmakoodi luettiin reikänauhoilta (10 kpl) • Koodi ja data eivät ole samassa muistissa! • Aliohjelmakutsu toteutettu kontrollin siirrolla toiseen reikänauhanlukijaan 29.10.2015 Copyright 2015 Teemu Kerola 18