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
© Copyright 2024