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