TKT-3201 Tietokonearkkitehtuuri 2 Luku 6: Talletus ja syöttö/tulostuslaitteet Adapted from Computer Organization and Design, 4 th Edition, Patterson & Hennessy, 2008 Adapted from slides by Mary Jane Irwin, PSU
Tietokoneen pääkomponentit Processor Devices Control Memory Input Datapath Output Secondary Memory (Disk) Main Memory Cache #2
Syöttö/tulostuslaitteet (I/O device) I/O-laitteiden karakterisointi: käyttäytyminen: syöttö, tulostus, talletus kumppani: ihminen, kone datansiirto: tavua/sec, siirtoa/sec I/O-väyläliitynnät #3
I/O järjestelmän piirteet käyttövarmuus tärkeä ominaisuus Erityisesti tallennuslaitteille Suorituskykymittarit latenssi (vasteaika) läpäisy (kaistanleveys) työasemat & sulautetut järjestelmät Pääasiassa vasteaika & tuettavien laitteiden monipuolisuus palvelimet Pääasiassa läpäisy & laitteiden laajennettavuus #4
Käyttövarmuus (dependability) Palvelun loppuunsaattaminen toipuminen Palvelu toimitettu kuten määritelty vikaantuminen Palvelun keskeytyminen Poikkeaminen määritellystä palvelusta Virhe (fault): komponentin vikaantuminen (failure) Voi johtaa järjestelmän vikaantumiseen #5
Käyttövarmuuden mittarit Luotettavuus: mean time to failure (MTTF) Palvelun katkeaminen: mean time to repair (MTTR) Keskimääräinen vikaantumisien välinen aika: mean time between failure MTBF = MTTF + MTTR käytettävyys (availability) = MTTF / (MTTF + MTTR) Käytettävyyden parantaminen kasvata MTTF: vikaantumisen välttäminen, vikasietoisuus, vian ennustus pienennä MTTR: paremmat työkalut ja prosessit diagnosointiin ja korjaamiseen #6
Levytallennus Haihtumaton (nonvolatile), pyörivä magneettinen muisti #7
Levysektorit ja -viittaus Jokainen sektori tallentaa Sektorin ID Data (tyypillisesti 512 tavua, laajenemassa 4096 tavuun) Virheenkorjauskoodi (error correcting code, ECC) Käytetään kätkemään virheitä levyssä ja tallennuksessa Synkronointikentät Viittaus sektoriin koostuu jonotusviive, jos edellinen viittaus edelleen käynnissä hakeutumisaika: siirrä lukupäät pyörähtämislatenssi datan siirto ohjaimen aiheuttama rasite #8
Levyviittaus, esim. 512B sektori, 15,000rpm, 4ms keskim. hakeutumisaika, 100MB/s siirtonopeus, 0.2ms ohjaimen viive Keskim. lukuaika 4ms hakeutumisaika + ½ / (15,000/60) = 2ms pyörähtämisviive + 512 / 100MB/s = 0.005ms siirtoaika + 0.2ms ohjaimen viive = 6.2ms Jos keskim. hakeutumisaika olisi 1ms Keskim. lukuaika = 3.2ms Pyörähtämisviive tavallisesti suurin komponentti viittausajassa #9
Levyn suorituskyky Valmistajat mainitsevat keskimääräisen hakeutumisajan Perustuu kaikkiin mahdollisiin hakuihin Paikallisuus ja OS:n vuoronnus johtavat pienempään keskim. hakeutumisaikaan Älykäs levyohjain varaa fyysisiä levysektoreita Isäntäkoneelle esitetään loogisia sektoreita SCSI, ATA, SATA Levyasemissa käytetään välimuisteja Haetaan sektoreita etukäteen ja toivotaan, että niihin tullaan viittaamaan Vältetään hakeutumis- ja pyörähdysviive #10
Flash-tallennus Haihtumaton puolijohdemuisti 100 1000 nopeampi kuin levy Pienempi, alhaisempi virrankulutus, kestävämpi Kalliimpi $/GB (levyn ja DRAM:n välissä) #11
Flash -tyypit NOR flash: bittisolu muistuttaa NOR-porttia Tukee satunnaisia luku/kirjoitusviittauksia Käytetään sulautettujen järjestelmien käskymuisteina NAND flash: bittisolu muistuttaa NAND-porttia tiheämpi (bits/area), mutta viittaukset lohko kerrallaan halvempi per GB Käytetään USB-muisteissa, tallennusmedioissa, Flash:n bitit kuluvat käytön myötä Käytetty RAM-muistina, mutta käytetään jo levynä Kulumisen säästö: kuvataan data vähiten käytettyihin lohkoihin #12
RAID -levyjärjestelmä #13 Redundant Array of Inexpensive (Independent) Disks kasvatetaan potentiaalista läpäisyä käyttämällä useampia pieniä levyjä (vrt. 1 iso levy) data levitetään useammalle levylle useampia samanaikaisia viittauksia usealle levylle luotettavuus alempi kuin yhdessä levyssä käytettävyyttä voidaan kasvattaa lisäämällä redundantteja levyjä (RAID) hävinnyt informaatio voidaan rekonstruoida redundantista datasta vikaantunut levy voidaan vaihtaa järjestelmää sammuttamatta ( hot swap )
RAID: taso 0 (ei redundanssia; lomitus) sec1 sec2 sec3 sec4 sec1,b0 sec1,b1 sec1,b2 sec1,b3 Levitetään sektorin data useammalle levylle (striping) useampaa sektorin lohkoa voidaan hakea rinnakkain 4-levyinen järjestelmä antaa 4x läpäisyn verrattuna yhden levyn järjestelmään Tyypillisesti kustannus sama kuin yhden ison levyn kustannus Ei redundanssia, joten entäpä jos yksi levy vikaantuu? levyn vikaantuminen on todennäköisempää levyjen määrän kasvaessa #14
RAID: taso 1 (redundanssi peilaamalla) sec1 sec2 sec3 sec4 sec1 sec2 sec3 sec4 redundant (check) data Käytetään 2x määrä levyä verrattuna RAID 0 Aina kaksi kopiota datasta (esim. 8 pienempää levyä; toinen 4 levyn joukko kopioi ensimmäisen levyjoukon datan) Redundanttien levyjen lkm = dataa sisältävien levyjen lkm (kustannus 2x yhteen isoon levyyn verrattuna) Kirjoitukset on tehtävä molempiin levyjoukkoihin, joten kirjoitukset vievät kaksi kertaa pidemmän ajan kuin vastaavan levymäärän RAID 0 järjestelmän kirjoitukset Yhden levyn vikaantuessa data haetaan peili -levystä #15
RAID: taso 0+1 (lomitus ja peilaus) sec1,b0 sec1,b1 sec1,b2 sec1,b3 sec1,b0 sec1,b1 sec1,b2 sec1,b3 sec1 blk2 blk3 blk4 blk1 blk2 blk3 blk4 redundant (check) data Yhdistää RAID 0:n ja RAID 1:n edut: data on lomitettu levyjen kesken ja peilataan Esimerkissä 4x läpäisy (lomituksesta johtuen) Redundanttien levyjen lkm = datalevyjen lkm, eli kustannus sama kuin yhden ison levyn kustannus Kirjoitukset on tehtävä molempiin levyjoukoihin, joten kirjoitukset vievät kaksi kertaa pidemmän ajan kuin vastaavan levymäärän RAID 0 järjestelmän kirjoitukset Yhden levyn vikaantuessa, järjestelmä hakee datan peili -levystä #16
RAID: taso 2 (redundanssi virheenkorjauskoodilla) sec1,b0 sec1,b1 sec1,b2 sec1,b3 Checks 4,5,6,7 Checks 2,3,6,7 Checks 1,3,5,7 Lomitus bitteinä virheenkorjauskoodilevyt (ECC) sisältävät erillisistä levyistä saatavan datan #17 1 0 1 0 1 0 1 0 3 5 6 7 4 2 1 ECC disks ECC -levyt 4 ja 2 osoittavat datalevyyn 6 tai 7, mutta ECC -levy 1 sanoo levyn 7 olevan virheetön, joten levyn 6 datan on oltava virheellinen Redundanttien levyjen lkm = log (datalevyjen lkm), kustannus melkein 2x yhden ison levyn kustannus Sietää rajoitetusti levyn vikaantumisen, koska data voidaan rekonstruoida Ei yleisesti käytössä; liian kompleksinen
RAID: taso 3 (Bittilimitetty pariteetti) sec1,b0 sec1,b1 sec1,b2 sec1,b3 1 0 1 0 1 Lomitus tavuina Suuremman käytettävyyden kustannusta lasketaan tekijällä 1/N, missä N on levyjen lukumäärä suojausryhmässä Redundanttien levyjen lkm = suojausryhmien lkm Kirjoitukset vaativat uuden datan kirjoittamisen datalevylle ja pariteetin laskemisen (, mikä vaatii muiden levyjen lukemisen, jotta pariteetti voidaan päivittää) Sietää rajoitetusti (yhden) levyn vikaantumisen, koska data voidaan rekonstruoida Luvut vaativat kaikkien toimivien datalevyjen ja pariteettilevyjen lukemisen, jotta vikaantuneen levyn data voidaan laskea #18 Ei laajasti käytössä levyvika (pariton) pariteettilevy
RAID: taso 4 (lohkolomitettu pariteetti) Lomitus lohkoina sec1 sec2 sec3 sec4 Korkeamman käytettävyyden hinta edelleen 1/N, mutta pariteetti talletettu lohkoina Esimerkissä 4x läpäisy (lomituksesta johtuen) redundanttien levyjen lkm = suojausryhmien lkm Block parity disk Tukee lukemista ja kirjoitusta vain yhteen tai muutamaan suojausryhmän datalevyyn ( pieni kirjoitus / pieni luku ); ei tarvetta lukea kaikkia levyjä Tarkastamalla mitkä bitit vaihtuvat kirjoituksen yhteydessä, pariteettilevylle tarvitsee vaihtaa vain vastaavat bitit Pariteettilevy pitää päivittää jokaisen kirjoituksen yhteydessä, joten siitä tulee pullonkaula perättäisissä kirjoituksissa Sietää rajoitetusti levyn vikaantumisen, koska data voidaan rekonstruoida Ei laajasti käytössä #19
Kirjoitusten vertailu RAID 3 kirjoitus uusi D1 data D1 D2 D3 D4 P 3 lukua ja 2 kirjoitusta kohdistuen kaikkiin levyihin D1 D2 D3 D4 P RAID 4 pieni kirjoitus uusi D1 data D1 D2 D3 D4 P #20 2 lukua ja 2 kirjoitusta kohdistuen ainoastaan kahteen levyyn D1 D2 D3 D4 P
RAID: taso 5 (hajautettu lohkolomiteltu pariteetti) Näistä yksi määrätään lohkopariteettilevyksi Korkeamman käytettävyyden hinta edelleen 1/N, mutta pariteettilohko voi sijaita missä tahansa levyssä, jolloin yksittäisestä levystä ei tule kirjoitusten yhteydessä pullonkaulaa Esimerkissä 4x läpäisy (lomituksesta johtuen) redundanttien levyjen lkm = suojausryhmien lkm Tukee lukemista ja kirjoitusta vain yhteen tai muutamaan suojausryhmän datalevyyn ( pieni kirjoitus / pieni luku ) Sallii useamman samanaikaisen kirjoituksen, jos kirjoitukseen liittyvät pariteettilohkot sijaitsevat eri levyillä Sietää rajoitetusti levyn vikaantumisen, koska data voidaan rekonstruoida Laajassa käytössä #21
Time Pariteettilohkojen hajauttaminen RAID 4 RAID 5 1 2 3 4 P0 1 2 3 4 P0 5 6 7 8 P1 5 6 7 P1 8 9 10 11 12 P2 9 10 P2 11 12 13 14 15 16 P3 13 P3 14 15 16 voidaan suorittaa rinnakkain #22 Pariteettilohkojen hajauttaminen kaikille levyille mahdollistaa pienten kirjoitusten suorittamisen rinnakkain
Tietokoneen komponentit Processor Devices Control Memory Output Datapath Input #23 I/O-järjestelmän tärkeimmät mittarit suorituskyky laajennnettavuus luotettavuus hinta, koko, paino turvallisuus
Tyypillinen I/O -järjestelmä Processor Interrupts Cache Memory - I/O Bus Main I/O I/O I/O Memory Controller Controller Controller Disk Disk Graphics Network #24
Kytkentäkomponentit Tarvitaan mekanismi tietokoneen eri osien kytkemiseen toisiinsa CPU, muisti, I/O ohjaimet väylä: jaettu kommunikointikanava Joukko rinnakkaisia signaalilinjoja datalle ja data siirtojen synkronointiin Usein järjestelmän pullonkaula Suorituskykyä rajoitavat fyysiset tekijät Langoituksen pituus, liityntöjen lukumäärä Viimeaikaisin vaihtoehto: nopea sarjaväylä kytkimillä Muistuttaa verkkoa #25
#26 Väylätyypit Prosessori-muisti väylät (front side bus) lyhyt, nopea väylä Suunniteltu sopimaan muistiorganisaatioon I/O -väylät Pidempiä, hitaampia sallii useampia kytkentöjä Määritelty standardeissa yhteensopivuuden takaamiseksi Taustaväylä (backplane bus) Mahdollistaa prosessorin, muistin ja I/O-laitteen toimivan samalla väylällä Käytetään väliväylänä I/O-väylän kytkemiseen prosessori-muisti -väylään
Väyläsignaalit Datalinjat Siirtävät osoitteita ja dataa Multipleksoitu tai erilliset linjat Ohjauslinjat Indikoi datan tyyppi, synkronoi tapahtumat #27
Synkronointi Synkroninen väylä (esim. prosessori-muisti -väylä) #28 sisältää kellosignaalin ohjaussignaaleissa kiinteitä kommunikointiprotokolla, joka on määritelty suhteessa kellosignaaliin etu: tarvitaan vähän logiikkaa ja voi toimia nopeasti haitta: kaikkien laitteiden on käytettävä samaa kellotaajuutta kellosignaalin etenemisviiveen takia, väylän pituus ei voi olla pitkä jos kellotaajuus on korkea Asynkroninen väylä (esim. I/O -väylät) ei kellotettu, joten tarvitaan kättelyprotokolla ja ylimääräisiä ohjauslinjoja (ReadReq, Ack, DataRdy) etu: voi tukea erilaisia laitteita ja eri siirtonopeuksia väylää voidaan pidentää ilman kellosignaalin etenemisviiveen aiheuttamia ongelmia tai synkronointiongelmia haitta: hitaampi
I/O väyläesimerkkejä Firewire USB 2.0 PCI Express Serial ATA Serial Attached SCSI Intended use External External Internal Internal External Devices per channel 63 127 1 1 4 Data width 4 2 2/lane 4 4 Peak bandwidth 50MB/s or 100MB/s 0.2MB/s, 1.5MB/s, or 60MB/s 250MB/s/lane 1, 2, 4, 8, 16, 32 300MB/s Hot pluggable Yes Yes Depends Yes Yes 300MB/s Max length 4.5m 5m 0.5m 1m 8m Standard IEEE 1394 USB Implementers Forum PCI-SIG SATA-IO INCITS TC T10 #29
#30 Tyypillinen x86 PC I/O -järjestelmä
I/O-hallinta OS hallinnoi välillisesti I/O-toimintaa Useampi ohjelma jakaa I/O-resursseja Tarvitaan suojaus- ja vuoronnusmekamismeja I/O aiheuttaa asynkronisia keskeytyksiä Samat mekanismit kuin poikkeuksissa I/O ohjelmointi vaatii pikkutarkkuutta OS tarjoaa ohjelmille abstraktion ja kätkee yksityiskohdat #31
I/O -komennot I/O-ohjaimen laitteisto hallinnoi I/O-laitteita siirtää dataa laitteelle/laitteelta Synkronoi operaatiot ohjelmiston kanssa Komentorekisterit Komentaa laitteen tekemään annetun toiminnon Tilarekisterit Indikoi mitä laite on tekemässä ja mahdollisten virheiden tapahtuminen Datarekisterit Siirrä dataa laitteelle tai laitteelta #32
I/O rekistereiden kuvaus Muistikuvattu I/O Rekisterit kuvataan samaan avaruuteen kuin muisti Osoitedekoodaus erottaa muistin ja I/O rekisterit OS käyttää osoitteenkäännösmekanismia niin, että I/O-rekistereitä voi käyttää vain kernel-tilassa I/O -käskyt Käytössä erilliset käskyt I/O rekistereiden viittaukseen Käskyjä voidaan käyttää vain kernel-tilassa #33
Kiertokysely (polling) Tarkastetaan I/O-tilarekisteri jaksollisesti Jos laite on valmis, suoritetaan operaatio Jos virhetila, suoritetaan tarvittavat toipumistoimenpiteet Yleinen pienissä ja matalan suorituskyvyn reaaliaikaisissa sulautetuissa järjestelmissä Ennustettava ajoitus Alhainen laitekustannus Muissa järjestelmissä tuhlaa CPU-aikaa #34
Keskeytykset Laitteen vapautuessa tai virheen tapahtuessa ohjain keskeyttää CPU:n Keskeytys ei ole synkronoitu käskyn suoritukseen kuten poikkeus Prioriteetit Välitöntä huomiota tarvitsevat laitteet saavat korkeamman prioriteetin Korkeamman prioriteetin keskeytys voi keskeyttää alemman prioriteetin käsittelijän Edut: prosessorin ei tarvitse jatkuvasti kysellä I/O-laitteen tilaa sovellusohjelman suoritus keskeytyy ainoastaan varsinaisen datan siirron ohjauksen yhteydessä Haitta: tarvitaan erillinen keskeytyslaitteisto #35
I/O -datan siirto Kiertokysely ja keskeytysohjattu I/O CPU siirtää dataa muistin ja I/O datarekisterin välillä Kuluttaa aikaa nopeiden laitteiden yhteydessä Suora muistihaku (direct memory access, DMA) OS antaa siirtoon varatun muistialueen alkuosoitteen I/O ohjain siirtää data itsenäisesti Ohjain antaa keskeytyksen tehtävän päätyttyä tai virheen ilmaantuessa #36
DMA/välimuisti -vuorovaikutus jos DMA kirjoittaa muistilohkoon, joka on välimuistissa välimuistissa oleva kopio pilaantuu jos takaisinkirjoittavassa välimuistissa on likainen lohko ja DMA lukee lohkon Luettu data pilaantuu välimuistin koherenssi on varmistettava tyhjennä välimuistista ne lohkot, jos DMA tulee käyttämään niitä, tai käytä I/O:n yhteydessä muistipaikkoja, joihin ei sovelleta välimuistia #37
DMA/VM vuorovaikutus OS käyttää virtuaaliosoitteita muistin osoitukseen, jolloin DMA-lohkot eivät ole välttämättä muistissa peräkkäin pitäisikö DMA:n käyttää virtuaaliosoitteita? Vaatisi ohjaimen suorittavan osoitekäännöksen jos DMA käyttää fyysisiä osoitteita siirrot voi joutua katkomaan sivun-kokoisiksi paloiksi, tai ketjuttamaan useampia siirtoja, tai allokoidaan peräkkäisiä fyysisiä sivuja DMA:lle #38
I/O:n suorituskyvyn mittaus I/O-suorituskyky riippuu laitteistosta: CPU, muisti, ohjaimet, väylät ohjelmistosta: OS, tietokannan hallinta, sovellukset kuormasta: pyyntöjen taajuudesta ja kuviosta I/O järjestelmän suunnitelu on kompromissi vasteajan ja läpäisyn välillä Läpisymittaukset tehdään usein rajoitetulla vasteajalla #39
I/O:n vs. CPU:n suorituskyky Amdahlin laki I/O:n suorituskykyä ei pidä jättää huomioimatta rinnakkaisuuden kasvattaessa laskentakykyä Esim. Benchmark-sovellus vie 90s CPU-aikaa, 10s I/O-aikaa Kahdessa vuodessa ytimien lukumäärä kaksinkertaistuu, mutta I/O ei muutu Year CPU-aika I/O-aika kokonaisaika I/O-aika % nyt 90s 10s 100s 10% +2 45s 10s 55s 18% +4 23s 10s 33s 31% +6 11s 10s 21s 47% #40
Levyn luotettavuus Jos valmistaja lupaa MTTF = 1,200,000hr (140yr) niin levy toimii virheettä näin kauan Väärin: kyseessä keskimääräinen aika vikaantumiseen Mikä on vikaantumisten hajonta? Jos käytössä olisi 1000 levyä, niin kuinka monta vikaantuu vuoden aikana? 1000 disks 8760 hrs/disk Annual FailureRate (AFR) = = 1200000 hrs/failure 0.73% #41
Määritelmä 1GB/s väylä siirtää 1GB yhdessä sekunnissa Paljonko on GB? kaistanleveydessä, 1GB = 10 9 B talletuksessa, 1GB = 2 30 B = 1.075 10 9 B 1GB/sec = 0.93GB yhdessä sekunnissa #42