Ulkoinen muisti ja I/O

Luento 9 (verkkoluento 9)
Järjestelmän ulkoinen muisti
I/O
Muistihierarkia
Kiintolevyt
I/O:n toteutus
26.11.2015
Copyright 2015 Teemu Kerola
1
Fig 4.1 [Stal13]
Muistihierarkia
• Ulkoinen muisti (levymuisti)
on halvempaa toteuttaa per tavu
• Ulkoinen muisti on paljon
hitaampaa kuin sisäinen muisti
• Aika/tila optimointi
– suuret tietomäärät täytyy (kannattaa) kustannussyistä pitää
ulkoisessa muistissa
– pienet tietomäärät täytyy (kannattaa) tehokkuussyistä pitää
sisäisessä muistissa
• Kaiken viitatun tiedon tulee suoritusaikana olla
sisäisessä muistissa tai vielä lähempänä suoritinta!
– Suoritin
S iti eii voii odottaa
d tt viitattua
iit tt tietoa
ti t kovin
k i kauan
k
aikaa
ik
26.11.2015
Copyright 2015 Teemu Kerola
2
Virtuaalimuisti
• Osa muistihierarkiaa
Vastaus
s us oongelmaan
ge
• V
– Kuinka muisti, joka on ”yhtä suuri” kuin levymuisti ja
”yhtä nopea” kuin keskusmuisti?
• Kaksitasoinen:
– Keskusmuistissa on ”kulloinkin
kä tö ä olevat”
käytössä
l t” alueet
l t
– Levyllä on kaikki tiedot
– Kopiointi tarvittaessa
• Sivunpuutoskeskeytys
(viitattu tieto ei ole
keskusmuistissa)
26.11.2015
Copyright 2015 Teemu Kerola
muisti
väylä
levy
ohjain
3
Virtuaalimuistin toteutus
• Toteutustavat
– kanta- ja rajarekisterit
– sivutus, (segmentointi ja sivuttava segmentointi)
• Pääosa toteutuksesta KJ:n ohjelmistotasolla
• Laitteistotuki
– MMU – muistinhallintayksikkö
• Virtuaaliosoite → fyysinen muistiosoite
• Hidas operaatio, usea konekäsky, muistiviitteitä?
– Osoitteenmuutospuskurista (TLB) löytyy viimeksi
tehdyt osoitteenmuutokset (vrt. välimuisti)
• Fyysistä osoitetta ei tarvitse laskea usealla
konekäskyllä, jos se löytyy TLB:stä
26.11.2015
TietoKäyttökoneen järjestelmät
Copyright 2015 Teemurakenne
Kerola
Lisää
Li
ää
tietoa?
4
Tiedostojärjestelmä
•
•
•
•
read
write
execute
KJ:n osa, hallitsee kaikkia tiedostoja
Valvoo oikeuksia tiedostoa avattaessa
Muuntaa tiedostonimet fyysisiksi osoitteiksi
p
(vain
(
KJ:n käytössä
y
olevia)) taulukoita,,
Ylläpitää
joista näkee mitä kohtaa mistäkin tiedostosta
kukin prosessi on käsittelemässä
• Tiedostojärjestelmä lukee ja kirjoittaa tiedostoja
suurina kerralla käsiteltävinä lohkoina (0.5-8 KB?)
– käyttäjätason prosessit käsittelevät tiedostoja tavuittain,
eikä niiden tarvitse tietää tiedoston todellista fyysistä
rakennetta (KJ:n laiteajuri huolehtii siitä)
26.11.2015
Copyright 2015 Teemu Kerola
5
Tiedoston talletus levylle
y
• Tiedosto koostuu useista lohkoista
– lohko
l hk = 1 taii usea levyn
l
sektori
k i
• Levyn hakemisto
Pienin alue,
jota voi
lukea/kirjoittaa
j
levyllä
– tiedoston lohkot
– luetaan lohkot annetussa järjestyksessä
hakemisto
alkio
FileA
(unix)
26.11.2015
indeksi
lohko
lohko
lohko
Copyright 2015 Teemu Kerola
lohko
lohko
6
Levyn käyttö
• Virtuaalimuistin tukimuistina
• Tiedostojen talletukseen
Muisti
page
page
page
page
page
page
page
page
sivu
sivu
(tdsto)
(data)
Väylä
Levy
VM tukimuisti
sivu
sivu
sivu
sivu
sivu
sivu
sivu
sivu
26.11.2015
Copyright 2015 Teemu Kerola
Tiedostot
llohko
hk
lohko
lohko
lohko
7
Levymuistin
y
saantiaika
• Tiedon (lohkon) osoite: levypinta + ura + sektori
– laiteajuri
a teaju etsii
ets KJ-taulukoista
J tau u o sta
loogisen osoitteen perusteella
26.11.2015
Copyright 2015 Teemu Kerola
Fi 6.5&
Figs
6 5& 6.2
6 2 [Stal13]
[St l13]
Keskustele
8
Laiteohjain (I/O Moduuli)
Muisti
suoritin
väylä
käyttäjäprosessi
laiteajuri
KJ prosessi
(tai aliohjelma?)
data c/s
laiteohjain
laite
laite
laiteohjainprosessi
(device
(d
i controller,
t ll
device controller
process)
26.11.2015
Copyright 2015 Teemu Kerola
Ks. Fig 7.3 [Stal13]
9
cpu
mem
26.11.2015
Copyright 2015 Teemu Kerola
10
I/O:n toteutus konekäskyillä (i):
Laiteohjaimen rekistereihin
viittaaminen I/O konekäskyillä
• I/O laitteille on omat konekäskynsä
• Käskyssä annetaan laiteohjaimen identifikaatio ja
l it ki t i nro (oma
laiterekisterin
(
I/O osoiteavaruus)
it
)
• Vaikea laajentaa käyttöä uusiin laitteisiin, joilla
”laiterekisterit” voivat olla hyvinkin
y
erilaisia
• Suorittimen konekäskyjä ei voi muuttaa
x86:
26.11.2015
IN, OUT
INS, OUTS
Copyright 2015 Teemu Kerola
Ttk-91:
IN, OUT
11
I/O:n toteutus konekäskyillä (ii):
j
rekistereihin
Laiteohjaimen
viittaaminen muistin luku/kirjoitus käskyillä
• Muistiinkuvattu I/O, memory-mapped I/O
• Laiteajuri lukee/kirjoittaa laiteohjaimella olevia rekistereitä
(data status/kontrolli) tavallisilla muistin luku/kirjoitus
(data,
käskyillä
load R1,=DiskRd
– ei tarvita erillisiä I/O-konekäskyjä! store R2, DiskCtr
– laiteohjaimella olevat ”laiterekisterit” ovat samanlaista
viitattavaa muistia kuin ”normaali muisti”
– muistisoitteen
i ti itt
ensimmäiset
i
äi t bitit (ei
( i siis
ii käskykoodi)
kä k k di)
valitsevat, mille laitteelle (vai tavallisen muistiin)
viittaus kohdistuu
Di kC EQU 00x80000001
DiskCtr
80000001
26.11.2015
Copyright 2015 Teemu Kerola
12
I/O tyypit
Programmed I/O
Direct I/O
• Suora I/O
mem
dev
cpu
ctlr
– Laiteajuri
j koko ajan
j aktiivinen
– Laiteajuri odottaa busy-wait loopissa laiteohjainta
• Epäsuora I/O
Indirect I/O, Interrupt driven I/O
– Laiteohjain osaa tehdä I/O-laitekeskeytyksiä
– Laiteajuri odottaa odotustilassa laiteohjainta
• DMA I/O
Direct Memory Access I/O
– Laiteohjain osaa myös viitata keskusmuistiin
• Tieto
Ti kulkee
k lk väylän
ä lä läpi
lä i vain
i yhden
hd kerran
k
– Laiteohjaimelle annettavat tehtävät isompia
– Laiteajuri odottaa odotustilassa laiteohjainta
26.11.2015
Copyright 2015 Teemu Kerola
13
Suora I/O
Epäsuora I/O
DMA I/O
Device driver
(l it j i)
(laiteajuri)
Input of a
Block of data
Fig 7.4 [Stal13]
Direct I/O
26.11.2015
Copyright 2015 Teemu Kerola
Keskustele
14
Esimerkki: kirjoittimen
l it j i ttk-91
laiteajuri
ttk 91 koneelle
k
ll
• Laitteella voi tulostaa kokonaislukuja
j yksi
y kerrallaan
• Muistiinkuvattu I/O, suora I/O
• Laiteportti
– kontrollirekisteri
– tilarekisteri
– datarekisteri
muistipaikka 1048576 = 0x80000
muistipaikka 1048577 = 0x80001
muistipaikka 1048578 = 0x80002
• Laiteajuri Print toimii etuoikeutetussa tilassa
PUSH SP, =0
; space for return value
• Kutsu:
PUSH SP, X
; parameter to print
SVC SP, =Print ; returns Success/Failure
POP SP,, R1
JNZER R1, TakeCareOfTrouble
26.11.2015
Copyright 2015 Teemu Kerola
15
Esim: laiteajurin
toteutus (12)
ptrCtr
ptrStat
ptrData
retVal
parData
p
DC 1048576 ; control register address
DC 1048577 ; status register address
DC 1048578 ; data register address
Solution with no timeout
EQU -3
Print
PUSHR SP
;save regs
EQU
Q -2
LOAD R1, parData(FP)
STORE R1, @ptrData ; data to print
LOAD R1, =0
Oleta: SVC:n ja IRET:n
STORE R1, @ptrStat ; init (clear) state register
toteutus samalla tavalla
LOAD R1, =1
kuin CALL ja EXIT
STORE R1, @ptrCtr ; give command to print
ptrCtl
1
ptrStat
01
ptrData
200
Wait
Done
LOAD R1, @PtrStat ; check state register
JNZER R1, Done
JUMP Wait
; wait until I/O done
LOAD R1, =0
; return ”Success”
STORE R1, retVal(FP)
POPR SP
; recover regs
See: driver.k91
IRET SP, =1
Keskustele 16
26.11.2015
Copyright 2015 Teemu Kerola
http://www.cs.helsinki.fi/group/nodes/kurssit/tito/esimerkit/driver.k91
-- Luennon loppu --
• Ferriittirengas (core) teknologia
–
–
–
–
–
26.11.2015
1952, Jay Forrester & Bob Everett, MIT (Whirlwind)
tieto säilyy
yy ilman virtaa
ei häiriinny säteilystä (avaruus, sotilasteknologia)
1955, valtaa markkinat Williams Tube’lta
Kä ö ä vielä
Käytössä
i lä 1970-luvulla,
1970 l ll nyt vain
i nimi
i i jäljellä
jälj llä
Copyright 2015 Teemu Kerola
17