Tiedon ta:rkistus ja muisti Ohjelman esitysmuodot Konekäskyt ja rakenteellinen tieto Tiedon muuttumattomuus Pariteettibitti Hamming-koodi CRC-koodi ja laitteiden monistaminen Muisti Välimuisti, tavallinen muisti Hooö luenn1oss>a es>ittelemme ~~~i~~~~~~~~~i~i~~~~~~~~~b~ tiedon. Seuraavaksi käymme läpi tiedon muuttumattomuuden tarkistusm enetelmistä pariteettibitin käytön, virheitä korjaavan Hamming-koodin, CRC-koodin ja laitteiden monistamiseen perustuvien menetelmien idean. Lopuksi esittelemme lyhyesti välimuistin perusidean ja kuinka keskusmuisti on toteutettu.
Konekäskyjen esitysmuoto muistissa Konekohtainen, joka valmistajalla omansa saman valmistajan jotkut suoritti met voivat olla taaksepäin yhteensopivia (suoritti men uudessa versiossa toimii aikaisemman version koodi) Käskyt 1 tai useamman tavun mittaisia SPARC'issa kaikki käskyt 1 sanan eli 4 tavun mittaisia PowerPC'ssä kaikki käskyt 1 sanan eli 4 tavun mittaisia Pentium ll'ssa käskyt 1-16 tavua, paljon pituuksia käy1össä Käskyillä yksi tai useampi muoto, kussakin tietty määrä erilaisia kenttiä opcode, Ri, Rj, Rk, osoitusmoodi pitkä tai lyhy1 vakio Ei omia konekäskyjä konekäskyjen manipulointiin, käytä aliohjelmia kääntäjä generoi konekäskyjä bittimanipulaatioilla, kä)>ttäen valmiita aliohjelmia suoritin osaa tulkita toimia sen mukaisesti. Jokainen tie:okoneiden valmistaja on speksannut omat konekäskyjen joukkonsa. Er suorittimilla on siis yleisesti ottaen kc.ikilla erilainen konekäskykanta ja ne eivät ole keskenään yhteensopivia. lntelin suorittimelle käännetty ä koodic. ei voi suorittaa IBM'n suorittimella ja päin vastoin. Toisaalta useat lntelin suorittimet ovat taaksepäin yhteensopivia siten, että aikaisemmalle versiolle käännetty koodi voi toimia myös ujdemmassa suoritinversiossa, mutta ei päin vastoin!
Konekäskyjen esitysmuoto muistissa Konekohtainen, joka valmistajalla omansa saman valmistajan jotkut suoritti met voivat olla taaksepäin yhteensopivia (suoritti men uudessa versi ossa toimii aikaisemman versi on koodi) Käskyt 1 tai useamman tavun mittaisia SPARC'issa kaikki käskyt 1 sanan eli 4 tavun mittaisia PowerPC'ssä kaikki käskyt 1 sanan eli 4 tavun mittaisia Pentium ll'ssa käskyt 1-16 tavua, paljon pituuksia käytössä ttk-91 kaikki käskyt 1 sanan eli 4 tavun mittaisia Käskyillä yksi tai useampi muoto, kussakin tietty määrä erilaisia kenttiä opcode, Ri, Rj, Rk, osoitusmoodi pitkä tai lyhyt vakio Ei omia konekäskyjä konekäskyjen manipulointiin, käytä aliohjelmia kääntäjä generoi konekäskyjä bittimanipulaatioilla, käyttäen valmiita aliohjelmia se Jos käskyn on se on hakea kun jo alusta pitäen tiedetään luettavien tavujen lukumäärä. Toisaalta muistitilaa voi mennä hukkaan, jos yksinkertaisillekin käskyille varataan tilaa yhtä paljon kuin monimutkaisillekin käskyille. Yksi keino tämän ongelman välttämiseksi on toteuttaa käskykanta käyttäen ainoastaan yksinkertaisia käskyjä, jotka voidaan kaikki esittää muutamalla tavulla vakiopituisessa kentässä. Monimutkaisten asioiden tekemiseen käytetään sitten useampi konekäsky.
Konekäskyjen esitysmuoto muistissa 1 opcodl Rkl Ri IRi 1 Konekohtainen, joka valmistajalla omansa 1 opcode IRkl Ri 1 iso_vakio 1 saman valmistajan jotkut suoritti met voivat olla taaksepäin yhteensopivia (suoritti men uudessa versiossa toimii aikaisemman version koodi) Käskyt 1 tai useamman tavun mittaisia SPARC'issa kaikki käskyt 1 sanan eli 4 tavun mittaisia PowerPC'ssä kaikki käskyt 1 sanan eli 4 tavun mittaisia Pentium ll'ssa käskyt 1-16 tavua, paljon pituuksia käytössä Käskyillä yksi tai useampi muoto, kussakin tietty määrä erilaisia kenttiä opcode, Ri, Rj, Rk, osoitusmoodi pitkä tai lyhyt vakio ttk-91 kaikki käskyt ------------------------... saman pituisia ja Ei omia konekäskyjä konekäskyjen manipulointiin, käytä saman muotoisia kääntäjä generoi konekäskyjä bittimanipulaatioilla, käyttäen valm11 a a 10 Je m1a Kon1ekäsky koostuu muutamasta kentästä, kuten ja Tietuetyyppejä voi olla vain yksi tai niitä voi olla useampi. Jos tietuetyyppejä on yksi, niin käskyn purku kenttiin on helppoa, koska se tehdään aina samalla tavalla. Jos taas tietuetyyppejå on useita, niin kenttiin purku täytyy tehdä useammassa vaiheessa, jolloin siihen kuluu enemmän aikaa.
Konekäskyjen esitysmuoto muistissa Konekohtainen, joka valmistajalla omansa saman valmistajan jotkut suoritti met voivat olla taakse (suorittimen uudessa versiossa toimii aikaisemman v Käskyt 1 tai useamman tavun mittaisia SPARC'issa kaikki käskyt 1 sanan eli 4 tavun mittaisi PowerPC'ssä kaikki käskyt 1 sanan eli 4 tavun mittais Pentium ll'ssa käskyt 1-16 tavua, paljon pituuksia käyr Käskyillä yksi tai useampi muoto, kussakin tietty opcode, Ri, Rj, Rk, osoitusmoodi pitkä tai lyhyt vakio generoi konekäsky ADD R1, =56 Createlnstr( opcadd, 1, 0, 0, 56) LOAD R1, opc SHL R1, =24.-1...,., 1 7::-r:-lor:-lo,.,.,lol,...,o~l LOAD R2, rj SHL R2, =21 OR R1, R2 17hloblol LOAD R2, m SHL R2, = 19 ~:-:::-r=~, OR R 1, R2 1 17 1110 loi 0 1 LOAD R2, rj SHL R2, 16 OR R1, R2 1 17 l1lo loi o 1 LOAD R2, addr OR R1, R2 1 17l1lolol56 1 Ei omia konekäskyjä konekäskyjen manipulointiin, käytä aliohjelmia kääntäjä generoi konekäskyjä bittimanipulaatioilla, käyttäen valmiita aliohjelmia ymmärtää oman aina osana konekielisen koodin generointi, jossa konekäskyt pitää rakentaa kenttä kerrallaan kuntoon. varten kääntäjissä on omia valmiiksi rakennettuja aliohjelmia, jotka sitten yhdistelevät parametreina annetut kentät uudeksi konekäskyksi. osaa '"'K'""
Ttk-91 konekäskyn rakenne Käskyn esitys bittitasolla on aina samantyyppinen ADD R 1, =56 ;Ri turha LOAD R2, R3 ;ADDR turha NOP ; Rj, M, Ri ;ADDR turhia LOAD R4, =1 234 8 OPER 8 bit Rj 3 b it M Ri 2 bit 3 bit ADDR 16 bit 3 1 24 2 1 19 16 15 (bit1t on numeroitu oikealta vasemmalle, nollasta alkaen) 0 OPER Rj Ri ADDR M operaatiokoodi, opcode, 0-112 (kaikki arvot eivät ole laillisia) 1. operandi, tulosrekisteri, RO-R7 (yleisrekisteri) indeksirekisteri, R1-R7 (arvo 0 indikoi että indeksirekisteri ei ole käytössä) osoiteosa, vakio-osa, arvoalue [-32767, +32767] moodi, muistinoutojen määrä toisen operandin laskemiseksi (ennen mahdollista muistiin talletusta STORE-käskyssä) 0 välitön osoitus 1 suora osoitus (STORE-käsky: suora osoitus) (STORE-käsky: ep äsuora osoitus) 2 ep äsuora osoitus (ST ORE-käsky: epäkelp o arvo, virhetilanne) 3 epäkelp o arvo, virhetilanne Ttk-9 1 koneen konekäskyn rakenne on tarkasti käyty läpi jo aikaisemmilla luennoilla. Käskyt ovat kaikki 32-bittisiä ja niissä on aina kaikki samat kentät. Joissakin tapauksissa kaikkia kenttiä ei käytetä, joten ne ovat tavallaan turhia. Esimerkiksi pelkkää vakiota käytett3essä kenttää Ri ei tarvittaisi ja toisaalta pelkästään rekistereillä operoitaessa vakiokenttä on ihan turha. NOP-käskyssä kaikki muut kentät paitsi operaatiokoodi Jvat turhia. Toisaalta, konekäskyssä ei voi esittää suuria vakioita tai muistiosoitteita, joten ne täytyy käsitellä jollc.in muulla tavalla.
Ttk-91 konekäskyn rakenne Käskyn esitys bittitasolla on aina samantyyppinen OPER Rj M Ri 8 bit 3 bit 2 bit 3 bit ADDR 16 bit LOAD R2, @ptry ADD R1, mjax 31 24 21 19 16 15 0 (bitit on numeroitu oikealta vasemmalle, nollasta alkaen) OPER Rj Ri ADDR M operaatiokoodi, opcode, 0-112 (kaikki arvot eivät ole laillisia) 1. operandi, tulosrekisteri, RO-R7 (yleisrekisteri) indeksirekisteri, R1-R7 (arvo 0 indikoi että indeksirekisteri ei ole käytössä) osoiteosa, vakio-osa, arvoalue [-32767, +32767] moodi, muistinoutojen määrä toisen operandin laskemiseksi (ennen mahdollista muistiin talletusta STORE-käskyssä) 0 välitön osoitus (STORE-käsky: suora osoitus) 1 suora osoitus (STORE-käsky: epäsuora osoitus) 2 epäsuora osoitus (STORE-käsky: epäkelpo arvo, virhetilanne) 3 epäkelpo arvo, virhetilanne Ttk-9 1 muistinosoitumuotoja on oikeastaan vain 2 kappaletta: suora ja epäsuora muistinosoitus. Rekisterioperandien tai välittömien operandien käyttö ei varsinaisesti on muistissa olevaan tietoon viittaamista, vaikka tällainen tiedon viittaustyyppi määritelläänkin saman moodikentän avulla. Epäsuora muistiviite on aika hidas toteuttaa, koska se vaatii kaksi muistiviitettä, minkä vuoksi sitä ei useinkaan enää käytetä. Toisaalta, ttk 91'ssä voi yhdistää muistista noudon ja matemaattisen operaation, mikä myöskin aiheuttaa toteutustasolla ongelmia, minkä vuoksi nykyaikaisissa koneissa varsinainen ty ö tehdään usein vain rekistereillä operoiden.
raulukkojen esitysmuoto ~ Peräkkäisrakenteena, kuten aikaisemmin esitettiin Ei yleensä omia konekäskyjä, manipulointi aliohjelmilla tai silmukoilla Vektorisuorittimissa on konekäskyjä lyhyiden vektoreiden (1-ulotteisten taulukoiden) manipulointiin 32 64 = 2048 bitin rekisteri vektorirekisterit tavallisten rekistereiden lisäky,..... 32 kaksoi starkuuden Ii ukuluvun rekisteri 8 8 bltt1 a ta1 64-bitin rekisteri (lntelin MMX konekäskyt) 4 16 bittiä tai 2 32 bittiä Tavallinen kaksoi starkkuuden Ii ukulukureki steri toimii vektori rekisteri nä vektorikonekäskyt vain vektorirekistereille: vload, vadd, vmult, vmultadd, vstore MMX: PADDB (Packed Bytes Add), PSUBB (Packed Bytes Substract), etc. lndeksoitu tiedonosoitusmoodi tukee 1-ulotteisten taulukeiden käyttöä joissakin koneissa ti edonosoitusmoodeja 2 -ulottei si IIe taulukoi IIe ovat taulukot joko riveittäin tai sarakettain talletettuna, kuten aikaisemmin esitettiin. Taulukoiden dimensioiden lukumäärä samoin kuin sen alkion pituus tai tietotyyppi voi olla mitä vain.
raulukkojen esitysmuoto Peräkkäisrakenteena, kuten aikaisemmin esitettiin Ei yleensä omia konekäskyjä, manipulointi aliohjelmilla tai silmukoilla Vektorisuorittimissa on konekäskyjä lyhyiden vektoreiden (1-ulotteisten taulukoiden) manipulointiin 32 64 = 2048 bitin rekisteri vektorirekisterit tavallisten rekistereiden lisäky,..... 32 kaksoi starkuuden Ii ukuluvun rekisteri 8 8 bltt1 a ta1 64-bitin rekisteri (lntelim MMX konekäskyt) 4 16 bittiä tai 2 32 bittiä Tavallinen kaksoi starkkuuden Ii ukulukureki steri toimii vektori rekisteri nä vektorikonekäskyt vain vektorirekistereille: vload, vadd, vmult, vmultadd, vstore MMX: PADDB (Packed Bytes Add), PSUBB (Packed Bytes Substract), etc. lndeksoitu tiedonosoitusmoodi tukee 1-ulotteisten taulukeiden käyttöä joissakin koneissa ti edonosoitusmoodeja 2 -ulottei si IIe taulukoi IIe tukea liukulukutaulukoita, mutta ei oikein hyvin 5-ulotteisia taulukoita, joiden alkio on 8-sanainen tietue. Tällaisissa tapauksissa taulukkoon viittaminen tapahtuu aina kahdessa vaiheessa, jossa ensin lasketaan viitatun alkion osoite talletetun taulukon sisällä ja sitten vasta tehdään muistiviite kyseiseen alkioon.
raulukkojen esitysmuoto Peräkkäisrakenteena, kuten aikaisemmin esitettiin Ei yleensä omia konekäskyjä, manipulointi aliohjelmilla tai silmukoilla Vektorisuorittimissa on konekäskyjä lyhyiden vektoreiden (1-ulotteisten taulukoiden) manipulointiin 32 64 = 2048 bitin rekisteri vektorirekisterit tavallisten rekistereiden lisäky,..... 32 kaksoi starkuuden Ii ukuluvun rekisteri 8 8 bltt1 a ta1 64-bitin rekisteri (lntelin MMX konekäskyt) 4 16 bittiä tai 2 32 bittiä Tavallinen kaksoi starkkuuden Ii ukulukureki steri toimii vektori rekisteri nä vektorikonekäskyt vain vektorirekistereille: vload, vadd, vmult, vmultadd, vstore MMX: PADDB (Packed Bytes Add), PSUBB (Packed Bytes Substract), etc. lndeksoitu tiedonosoitusmoodi tukee 1-ulotteisten taulukeiden käyttöä joissakin koneissa ti edonosoitusmoodeja 2 -ulottei si IIe taulukoi IIe on laskentaan eli numeroiden murskaamiseen suunnitellut ns. superkoneet sisältävät usein erillisiä vektorirekistereitä ja konekäskyjä niillä operointiin. Vektorin pituus voi olla vaikkapa 32 liukulukua, jolloin myös sovellu s täytyy huolella suunnitella hyödyntämään tämän pituisia vektoreita. Fortran-kääntäjät on viilattu usein tällaiseen laskentaan. Toisaalta, multimediaa varten myös tavallisissa pöytäkoneissa käytetyt lntelin suorittimet sisältävät MMX-vektorikäskyjä, joilla operoidaan esimerkiksi kahdeksaa 8-bittistä tai neljää 16-bittistä data-al kiota kerrallaan.
raulukkojen esitysmuoto Peräkkäisrakenteena, kuten aikaisemmin esitettiin LOAD R1, R5 MULT R1, =pituusaikio ADD R1, Tbl LOAD R1, @R1 Ei yleensä omia konekäskyjä, manipulointi aliohjelmilla tai silmukoilla Vektorisuorittimissa on konekäskyjä lyhyiden vektoreiden (1-ulotteisten taulukoiden) manipulointiin 32 64 = 2048 bitin rekisteri vektorirekisterit tavallisten rekistereiden lisäky,..... 32 kaksoi starkuuden Ii ukuluvun rekisteri 8 8 bltt1 a ta1 64-bitin rekisteri (lntelin MMX konekäskyt) 4 16 bittiä tai 2 32 bittiä Tavallinen kaksoi starkkuuden Ii ukulukureki steri toimii vektori rekisteri nä vektorikonekäskyt vain vektorirekistereille: vload, vadd, vmult, vmultadd, vstore MMX: PADDB (Packed Bytes Add), PSUBB (Packed Bytes Substract), etc. lndeksoitu tiedonosoitusmoodi tukee 1-ulotteisten taulukeiden käyttöä joissakin koneissa tiedonosoitusmoodeja 2-ulotteisille taulukoi IIe LOAD R1, Tbi(R5) LOAD R1, d2arr(r3)(r4) ;ei ttk-91 Useimmissa koneissa on laitteistotukea taulukkojer käsittelyyn indeksoidun tiedonosoitusmoodin muodoss<. Sen avulla yksiulotteiseen taulukkoon viittaaminen on helppoa ja se voidaan toteuttaa yhdessä konekäskysså. liman indeksoitua tiedonosoitusmoodia simppelikin taulukkoviite vaatisi ainakin kolme tai neljä konekäskyä, kun taulukon kantaosoite ja alkion pituudella painotettu indeksi pitäisi laskea ensin yhteen viitatun alkion osoitteen laskemiseksi. lndeksoitu tiedonsoitusmoodi tekee tämän suoraan laitteiston piirillä yhden konekäskyn sisällä.
Tietueiden esitysmuoto Peräkkäisrakenteena yhtenäinen alue muistissa Osoite on jonkin osoitinmuuttujan arvo pjohn John: " 34 l/ 21 183 Ei omia konekäskyjä, manipulointi aliohjelmilla tai kääntäjän generoimien vakiolisäysten avulla lndeksoitu tiedonosoitusmoodi tukee tietueisiin viittaamista id EQU 0 age EQU 1 height EQU 2 pjohn DC 0 ; ptr to John ; allocate John ; set pjohn to point to John LOAD R1, pjohn LOAD R2, age(r1) LOAD R3, height(r1) alkuosoite on samalla tietueen osoite. Samalla tavalla kuin tietueet ovat monisanaista ja ainoastaan yksi osa (kenttä) kerrallaan tuodaan rekisteriin prosessointia varten. Tietueen kenttiin viitataan aina kentän suhteellisen osoitteen ja tietueen alkuosoitteen avulla. Tietueita varataan ja vapautetaan yleensä suoritusaikana keosta. Yleensä niitä ei varata staattisesti esimerkiksi globaalien muuttujien tapaan.
Tietueiden esitysmuoto Peräkkäisrakenteena yhtenäinen alue muisti ssa Osoite on jonkin osoitinmuuttujan arvo pjohn John: ' 34 l/ 21 183 Ei omia konekäskyjä, manipulointi aliohjelmilla tai kääntäjän generoimien vakiolisäysten avulla lndeksoitu tiedonosoitusmoodi tukee tietueisiin viittaamista id EQU 0 age EQU 1 height EQU 2 pjohn DC 0 ; ptr to John ; allocate John ; set pjohn to point to John LOAD R1, pjohn LOAD R2, age(r1) LOAD R3, height(r1) Tietueen osoite pidetään yleensä tallessa jossakin osoitinmuutlujassa tai osoitinmuuttujataulukossa tai jonkin muun tietueen osoitinmuuttujakentässä. Systeemin eheyden kannalta on tärkeätä, että tällaiset osoitinmuuttujat eivät koskaan osoita vanhaan tietoon. Esimerkiksi, jos tietueen 'John' käyttämä muistitila vapautetaan uusiokäyttöön, niin myös kaikki siihen osoittavat osjitinmuuttujat pitäisi joko nollata tai muuten merkitä epäkelvoksi. Jos näin ei tehdä, niin seuraava viite esim. osoitinmuuttujan pjohn kautta kohdistuu kyllä oikeac.n muistiosoitteeseen, mutta siellä olevaan ihan eri dataan.
Tietueiden esitysmuoto Peräkkäisrakenteena yhtenäinen alue muisti ssa Osoite on jonkin osoitinmuuttujan arvo pjohn John: " 34 l/ 21 183 Ei omia konekäskyjä, manipulointi aliohjelmilla tai kääntäjän generoimien vakiolisäysten avulla lndeksoitu tiedonosoitusmoodi tukee tietueisiin viittaamista id EQU 0 age EQU 1 height EQU 2 pjohn DC 0 ; ptr to John ; allocate John ; set pjohn to point to John LOAD R1, pjohn LOAD R2, age(r1) LOAD R3, height(r1) Tietueiden käsittelyyn ei ole omia konekäskyjä, vaan niitä käsitellään kutakin tietuetyyppiä varten suunnitelluilla aliohjelmilla. Tällaiset aliohjelmat tekevät myös oikeellisuustarkistuksia sen lisäksi, että ne lukevat ja kirjoittavat tietueen eri kenttiä.
Tietueiden esitysmuoto!peräkkäisrakenteena yhtenäinen alue muisti ssa Osoite on jonkin osoitinmuuttujan arvo pjohn: John: "' 34 jl' 21 183!Ei omia konekäskyjä, manipulointi aliohjelmilla tai kääntäjän generoimien vakiolisäysten avulla lndeksoitu tiedonosoitusmoodi tukee tietueisiin viittaamista id EQU 0 age EQU 1 height EQU 2 pjohn DC 0 ; ptr to John ; allocate John ; set pjohn to point to John LOAD R1, pjohn LOAD R2, age(r1) LOAD R3, height(r1) lndeksoitu tiedonosoitusmoodi tukee taulukeiden lisäksi myös tietueiden käsittelyä. Taulukkoviitteissähän indeksirekisterissä pidetään suht'koht pientä taulukon sisäistä osoitetta eli indeksiä, ja vakiokentässä on taulukon alkuosoite. Tietueviitteissä taas indeksirekisterissä pidetään tietueen alkuosoitetta eli pointteria tietueeseen ja käskyn vakio-osassa on tietueen sisäinen osoite eli tietueen kentän suhteelllinen osoite tietueen sisällä. On hyvin kätevää, että yhdellä ja samalla tiedonosoitusm oodilla voidaan tukea molempien rakenteellisen tiedon perustyypin toteutusta.
Olioiden (object) esitysmuoto Oliot toteutetaan tietueina ja ne varataan yleensä keosta Olioihin viitataan niiden osoitteen perusteella Useat oli on kentistä sisältävät osoitteen (pointerin) suoritusaikana varattuun toiseen olioon Olion metodi toteutetaan kenttänä, jossa on osoite koodiin Ei omia konekäskyjä, manipulointi muiden tietueiden tapaan aliohjelmilla object StackA private data public data private methods public methods other data Oliot ovat käytännössä vain yhden tyyppisiä tietueita. Oliolle on erittäin tyypillistä, että niitä varataan ja vapautetaan suoritusaikana keosta. Olioperustaisissa järjestelmissä olioon viittaaminen tapahtuu hyvin rajoitetusti, jolloin myös kirjapito olioiden käyttämistä muistialueista ja niihin viittaavista osoitinmuuttujista voidaan hoitaa järjestelmällisesti. Useissa järjestelrrissä (esim. Java) itse osoitinmuutlujiin ei suoraan pääse käsiksi, vaan olioihin voi ainoastaan viitata ohjelmairtikielen omien rakenteiden kautta. C-kielessä ei ole tällaista rajoitetta, ja se onkin tiedostettu erääksi C:n heikkojdeksi. Jonkun systeemigurun mielestä taas tämä on jucri eräs C:n hyvistä puolista. Pitäkää varanne!
Olioiden (object) esitysmuoto Oliot toteutetaan tietueina ja ne varataan yleensä keosta Olioihin viitataan niiden osoitteen perusteella Useat olion kentistä sisältävät osoitteen (pointerin) suoritusaikana varattuun toiseen olioon Olion metodi toteutetaan kenttänä, jossa on osoite koodiin Ei omia konekäskyjä, manipulointi muiden tietueiden tapaan aliohjelmilla object StackA private data public data private methods public methods ult u:1 l.li:!li:! Olioon viittamiseksi meillä täytyy siis olla tiedossa sen muistiosoite. Muiden tietuetyyppien tapaan se on talletettu johonkin osoitinmuuttujac.n, joka puolestaan voi sijaita taulukossa tai jossakin toisessa tietueessa eli oliossa. Olion perimien ominaisuuf:sien määrittely voi sijaita jossakin toisessa oliossa, johon jokin kenttä tässä oliossa viittaa.
Olioiden (object) esitysmuoto Oliot toteutetaan tietueina ja ne varataan yleensä keosta Olioihin viitataan niiden osoitteen perusteella Useat olion kentistä sisältävät osoitteen (pointerin) suoritusaikana varattuun toiseen olioon Olion metodi toteutetaan kenttänä, jossa on osoite koodiin Ei omia konekäskyjä, manipulointi muiden tietueiden tapaan aliohjelmilla object StackA private data public data private methods public methods other data Metodit ovat yksinkertaisesti aliohjelmien alkuosoitteita. Tottakai metodin määrittelyyn sisältyy tieto siitä, onko se julkinen vai ainoastaan tämän olion sisältä kutsuttavissa samoin kuin kaikkien parametrien määrittely!. Olion toteutus konekielen tasolla tuntuu ehkä turhankin yksinkertaiselta ja tällöin helposti unohtuu, että oliokielten voima on juuri hienoissa ohjelmistorakenteissa, joiden avulla automaattisesti hoidetaan olioiden tietorakenteiden käytön ja eheyden valvonta sekä eri tavoin eri oliokielissä toteutettu ominaisuuksien perinnät ja muut olioihin liittyvät voimakkaat käsitteet kuten esimerkiksi polymorfismi.
Olioiden (object) esitysmuoto Oliot toteutetaan tietueina ja ne varataan yleensä keosta Olioihin viitataan niiden osoitteen perusteella Useat oli on kentistä sisältävät osoitteen (pointerin) suoritusaikana varattuun toiseen olioon Olion metodi toteutetaan kenttänä, jossa on osoite koodiin Ei omia konekäskyjä, manipulointi muiden tietueiden tapaan aliohjelmilla object StackA private data public data private methods public methods other data tapaan nämä aliohjelmat on toteutettu ohjelmistoympäristössä valmiiksi, kuten esimerkiksi Javassa.
Tiedon tarkistus Tiedon oikeellisuutta ei voi tarkistaa yleisessä tapauksessa. Tavoitteena on kerran oikein talletetun tiedon muuttumattomuus muistiin talletettu X'n arvoksi luku 5.43, X luetaan, onko arvo 5.43 väylälle kirjoitetaan luku 1234567, mitä tulee ulos väylältä toisesta päässä? Viasta johtuva virhe voidaan ehkä havaita ja joskus automaattisesti korjata ennen kuin siitä tulee häiriötä bitti voi muuttua muisti ssa tai tiedon siirrossa aiheuttaen virheen muistipiirissä voi olla staattinen vika, joka voi aiheuttaa staatti sen virheen transientti vika on esimerkiksi (esim. avaruussäteilyn) alkeishiukkanen, joka muuttaa biti n tiedonsiirron aikana ja aiheuttaa transi enti n virheen korjaamattomasta virheestä voi aihe utua (pienempi tai suurempi) häiriö Matin palkkasumma oli väärin? Videokuvassa oli yhdessä kuvassa tahra? Tietokannan eheys on eri asia, vaikka sekin on virhe henkilörekisterin tietueessa on Pekan palkka, mutta Matin kumulatiivinen vuosipalkka Yleisesti ottaen ei ole mitenkään mahdollista, että voisimme tarkistaa, onko jokin tieto laitteistossa oikein tai 'totta'. Tavoitteemme on paljon rajallisempi. Py rimme vain säilyttämään laitteistoon talletetun tiedon sellaisenaan olettaen, että se on alkuaan ollut tarkoitetun mukaista. Yritämme siis eri konstein taata, että tieto ei muutu esimerkiksi muistitalletuksen tai tiedonsiirron aikana. Tässäkään ei päästä absoluuttiseen tarkkuuteen vaan meidän on tasapainotellava kustannusten kanssa. Lopputuloksena on tilanne, jossa tiedon muuttumattomuus on hoidettu 'riittävän hyvin' eli jollakin hyvin suurella todennäköisyydellä.
Tiedon tarkistus Tiedon oikeellisuutta ei voi tarkistaa yleisessä tapauksessa. Tavoitteena on kerran oikein talletetun tiedon muuttumattomuus muistiin talletettu X'n arvoksi luku 5.43, X luetaan, onko arvo 5.43 väylälle kirjoitetaan luku 1234567, mitä tulee ulos väylältä toisesta päässä? Viasta johtuva virhe voidaan ehkä havaita ja joskus automaattisesti korjata ennen kuin siitä tulee häiriötä bitti voi muuttua muisti ssa tai tiedon siirrossa aiheuttaen virheen muistipiirissä voi olla staattinen vika, joka voi aiheuttaa staatti sen virheen transientti vika on esimerkiksi (esim. avaruussäteilyn) alkeishiukkanen, joka muuttaa biti n tiedonsiirron aikana ja aiheuttaa transi enti n virheen korjaamattomasta virheestä voi aihe utua (pienempi tai suurempi) häiriö Matin palkkasumma oli väärin? Videokuvassa oli yhdessä kuvassa tahra? Tietokannan eheys on eri asia, vaikka sekin on virhe henkilörekisterin tietueessa on Pekan palkka, mutta Matin kumulatiivinen vuosipalkka muuttumattomuuteen oleva yleensä fyysinen vika. muistipiirin bitti on ja siihen kirjoitettu tieto tallentuo aina 1:nä. Viast< tai jostain muusta syystä tieto voi muuttua virheelliseksi, joka sinällään ei vielä ole kovin paha juttu. Vasta kun virheestä aiheutuu tiedon käyttäjälle häiriötä, se muuttuu ongelmaksi ja silloinkin vain, jos häiriö on laadultaan merkittävä. Ongelmana on, että laitteisto ei tietoa k~s i te ll essää n tiedä, minkä lajin tieto on kyseessä ja onko mahdollinen häiriö vakava vai ei.
Tiedon tarkistus Tiedon oikeellisuutta ei voi tarkistaa yleisessä tapauksessa. Tavoitteena on kerran oikein talletetun tiedon muuttumattomuus muistiin talletettu X'n arvoksi luku 5.43, X luetaan, onko arvo 5.43 väylälle kirjoitetaan luku 1234567, mitä tulee ulos väylältä toisesta päässä? Viasta johtuva virhe voidaan ehkä havaita ja joskus automaattisesti korjata ennen kuin siitä tulee häiriötä bitti voi muuttua muistissa tai tiedon siirrossa aiheuttaen virheen muistipiirissä voi olla staattinen vika, joka voi aiheuttaa staattisen virheen transientti vika on esimerkiksi (esim. avaruussäteilyn) alkeishiukkanen, joka muuttaa biti n tiedonsiirron aikana ja aiheuttaa transi enti n virheen korjaamattomasta virheestä voi aihe utua (pienempi tai suurempi) häiriö Matin palkkasumma oli väärin? Videokuvassa oli yhdessä kuvassa tahra? Tietokannan eheys on eri asia, vaikka sekin on virhe henkilörekisterin tietueessa on Pekan palkka, mutta Matin kumulatiivinen vuosipalkka Virheellistä tietoa voi järjestelmään synty ä myös ohjelmistovirheiden vuoksi, mutta jätämme tällaisten virheiden havaitsemisen ja korjaamisen muille kursseille. Tyypillinen esimerkki ohjelmistovirheestä on samanaikaisuudenhallinnan puutteellinen toteutus, minkä seurauksena esimerkiksi tietokantaan samaan aikaan tulleet kaksi päivity stä menivät osittain päällekkäin. Tässä tapauksessa henkilörekisterin tietueen kentissä olevat tiedot ovat kenttäkohtaisesti oikein, mutta yhdessä epäkonsistentteja. Samanaikaisuuden aiheuttamia ongelmia käsitellään myöhemmin useammallakin kurssilla, mutta ei tällä kertaa tämän enempää.
Tiedon muuttumattomuuden valvonta Perusidea: otetaan tietoon mukaan ylimääräisiä bittejä, joiden avulla virheitä voidaan havaita ja ehkä myös korjata enemmän bittejä, enemmän tietoa, havaitaan useampi virhe, korjataan useampi virhe Järjestelmä suorittaa tarkistukset automaattisesti joko laitteistotasolla tai ohjelmistotasolla laitteistotasolla nopea, kiinteä tarkistus esim. rekisterissä olevan tiedon kaikkien yhden bitin virheiden korjaus ohjelmistotasolla hitaampi, joustava, muokattavissa oleva tarkistus ti Ii nump.ron k~ i kki P.n yhrlp.n hiti n vi rhp.i rlp.n h~v~ itsp.mi np.n t~ rki stusnump.ron ~vull~ Valvonnan kustannukset sekä tilassa että ajassa ylimääräiset bitit vievät muistitilaa, vaativat lisää johtimia ja vievät tilaa lastulla tarki stuksen toteutus laitei stolla vie tilaa lastulla ja ehkä hidastaa suoritusta tarkistusohjelman suoritus vie suoriti naikaa ja siis hidastaa suoritusta Perusidea tiedon muuttumattomuuden valvonnassa on ottaa mukaan ylimääräisiä bittejä. Mitä useampi ylimääräinen bitti on mukana, sitä todennäköisemm n virheet havaitaan ja voidaan korjata. Jos ta rki st u s bi ttej ~ ei ole lainkaan, niin mitään virheitä ei havaita saati sitten korjata. Jos taas tarkistusbittejä on huomattavasti enemmän kuin tietobittejä, niin on varsin todennäköistä, että kaikki tietobileissä olleet virheet voidaan korjata. Toisaalta, näin katastrofaalisen tilanteeseen varautuminen yleensä indikoi tilanteesta, jossa tavalliset tiedon muuttumattomuuden valvontamenetelmät eivät enää riitä. Palaamme asiaan myöhemmin tällä luennolla.
Tiedon muuttumattomuuden valvonta Perusidea: otetaan tietoon mukaan ylimääräisiä bittejä, joiden avulla virheitä voidaan havaita ja ehkä myös korjata enemmän bittejä, enemmän tietoa, havaitaan useampi virhe, korjataan useampi virhe Järjestelmä suorittaa tarkistukset automaattisesti joko laitteistotasolla tai ohjelmistotasolla laitteistotasolla nopea, kiinteä tarkistus esim. rekisterissä olevan tiedon kaikkien yhden bitin virheiden korjaus ohjelmistotasolla hitaampi, joustava, muokattavissa oleva tarkistus ti Ii numeron kaikki en yhden biti n virheiden havaitseminen tarkistusnumeron avulla Valvonnan kustannukset sekä tilassa että ajassa ylimääräiset bitit vievät muistitilaa, vaativat lisää johtimia ja vievät tilaa lastulla tarki stuksen toteutus laitei stolla vie tilaa lastulla ja ehkä hidastaa suoritusta tarkistusohjelman suoritus vie suoriti naikaa ja siis hidastaa suoritusta Osa tarkistuksista tapahtuu niin matalalla tasolla, että ne on pakko suorittaa laitteistotasolla. Tämä tarkoittaa sitä, että esimerkiksi konekäskyn suorituspiireissä on virheitä tarkistavia ja korjaavia osia. Laitteistotason virheentarkistukset suoritetaan aina eikä niitä voi myöhemmin muuttaa. Ohjelmistotasolla taas voi tarkistaa ihan mitä vain, mutta tähän tietenkin voi kulua merkittäväkin määrä suoritusaikaa.
Tiedon muuttumattomuuden valvonta Perusidea: otetaan tietoon mukaan ylimääräisiä bittejä, joiden avulla virheitä voidaan havaita ja ehkä myös korjata enemmän bittejä, enemmän tietoa, havaitaan useampi virhe, korjataan useampi virhe Järjestelmä suorittaa tarkistukset automaattisesti joko laitteistotasolla tai ohjelmistotasolla laitteistotasolla nopea, kiinteä tarkistus esim. rekisterissä olevan tiedon kaikkien yhden bitin virheiden korjaus ohjelmistotasolla hitaampi, joustava, muokattavissa oleva tarkistus ti Ii numeron kaikki en yhden biti n virheiden havaitseminen tarkistusnumeron avulla Valvonnan kustannukset sekä tilassa että ajassa ylimääräiset bitit vievät muistitilaa, vaativat lisää johtimia ja vievät tilaa lastulla tarki stuksen toteutus laitei stolla vie tilaa lastulla ja ehkä hidastaa suoritusta tarkistusohjelman suoritus vie suoriti naikaa ja siis hidastaa suoritusta Tiedon muuttumattomuuden valvonta maksaa sekä tilassa että ajassa. Ylimääräiset tarkistusbitit pitää tallettaa muistiin ja rekistereihin, ja niitä varten tulee olla ylimääräisiä johtimia väylissä. Laitteistototeutuksena olevat tarkistusohjelmat vievät lastulla tilaa, jota voisi muuten käyttää vaikkapa suurempaan välimuistiin. Ohjelmakoodina toteutetut tarkistusohjelmat pitää tallettaa muistiin ja niille tulee antaa suoritinaikaa. On tärkeätä, että nämä kaikki kustannukset tasapainotetaan tarkistuksilla saataviin hyötyihin ja mahdollisiin häiriöiden aiheuttamiin riskeihin. Tiedon muuttumattomuuden valvonta ei siis mitenkään ole yksinkertaista toteuttaa.
Esimerkki ohjelmistotason tarkistusmerkki henkilötunnuksessa Henkilötunnus: tarkistusmerkki: jakojäännös: 120464-1 21 c 7!' 120464121 % 31 = 12 / 0123456789ABCDEFGH~MN,~TUVWXY 0 1 10111213 14 30 "1 Tarkistusmerkin avulla voidaan tarkistaa, että mikään yksi merkki ei ole väärin havaitsee kaikki yhden merkin virheet.. hava1ttua Vlrhetta e1 vo1 automaatti sest1 koqata ei havaitse kaikkia kahden tai useamman merkin virheitä väli merkkiä ei tarki steia lainkaan '+' tarkoittaa 1800-lukua '-' tarkoittaa 1900-lukua 'A' tarkoittaa 2000-lukua b 'a, Ja puuttuvat sekaannuksi en valttami seksi Hyvä esimerkki ylimääräisestä tarkistustiedosta on henkilötunnuksen tarf:istusmerkki. Henkilötunnuksessa on neljä osaa. [ nsimmäiset kuusi numeroa ovat syntymäaika, jossa vuosilu\'usta on vain kaksi viimeistä numeroa mukana. Sitten on vuosisadan ilmc.isema välimerkki ja kolminumeroinen j3rjesty snumero, joka on pojilla pariton ja tytöillä parillinen. Viimeinen merkki on tarkistusmerkki, joka saadaan jakamalla syntymäajan ja järjesty snumeron ilmaisema 9-nurreroinen luku 31'11a ja koodaamalla jakcjäännös tarkistusmerkiksi. Henkilötunnus otettiin Suomessa käyttöön vuonna 1964 ja alkuaan sen nimenä oli sosiaalituivatunnus.
Esimerkki ohjelmistotason tarkistusmerkki henkilötunnuksessa Henkilötunnus: 120464-1 21 c (oikein) / -4, 1 120464121 % 31 = 12 / tarkistusmerkki: jakojäännös: 0123456789ABCDEFGHJKLMNPRSTUVWXY 11 13 0 1 10 12 14 Tarkistusmerkin avulla voidaan tarkistaa, että mikään yksi merkki ei ole väärin havaitsee kaikki yhden merkin virheet havaittua virhettä ei voi automaattisesti kor ata ei havaitse kaikkia kahden tai useamman merkin virheitä väli merkkiä ei tarki steta lainkaan '+' tarkoittaa 1800-lukua '-' tarkoittaa 1900-lukua 'A' tarkoittaa 2000-lukua 30 virheellinen: 120464-1 23C Error t 120464123 % 31 = 14 = 'E' Error VAI? virheellinen: 120464-1 23C oikein: 120464-1 23E V oidaan matemaattisesti todistaa, että mikä tahansa yhden merkin virhe synty mäajassa, järjesty snumerossa tai tarkistusnumerossa havaitaan. Esimerkissä viimeinen numero '1' on joko näppäilyvirheen tai muistivian takia vaihtunut numeroksi '3', jolloin henkilötunnusta seuraavan kerran käytettäessä tarkistuskoodi laskee jakojäännöksen olevan 14 eli tarkistusmerkin pitäisi olla kirjain 'E'. Koska näin ei ole, henkilötunnus havaitaan virheelliseksi. Virhettä ei voi korjata, koska sama virheilmoitus olisi voinut yhtä hyvin aiheutua tilanteesta, jossa henkilötunnuksen tarkistusmerkki olisi vaihtunut E'stä C'ksi.
Esimerkki ohjelmistotason tarkistusmerkki henkilötunnuksessa Henkilötunnus: tarkistusmerkki: jakojäännös: ( 120464-121 c,z f 120464121 % 31 = 12 / (oikein) ) 0123456789ABCDEFGHJKLMNPRSTUVWXY 0 1 101113 12 14 30 ( Tarkistusmerkin avulla voidaan tarkistaa, että mikään yksi merkki ei ole väärin havaitsee kaikki yhden merkin virheet havaittua virhettä ei voi automaattisesti korjata ei havaitse kaikkia kahden tai useamman merkin virheitä väli merkkiä ei tarki steta lainkaan '+' tarkoittaa 1800-lukua '-' tarkoittaa 1900-lukua 'A' tarkoittaa 2000-lukua virheellinen: 120464-123E OKt 120464123 % 31 = 14 = 'E' on alkuaan syötässä näppäilyvirheitä vastaan ja se toimii oikein hyvin yhden virheen paljastamiseksi. Jos virheitä on 2 tai useampi, niin on varsin mahdollista, että virhettä ei havaita. Esimerkissä viimeinen 1-merkki on vaihtunut 3:ksi, mutta tätä virhettä kompensoi täsmälleen tarkistusmerkin vaihtuminen C-kirjaimesta E-kirjaimeksi. Useamman virheen sattuessa on kuitenkin vain noin 3\'o (eli 1/31) todennäköisyys, että virhe1tä ei havaita.
Esimerkki ohjelmistotason tarkistusmerkki henkilötunnuksessa Henkilötunnus: 120464-1 21 c (oikein) / "4, ' 120464121 % 31 = 12 / tarkistusmerkki: jakojäännös: 0123456789ABCDEFGHJKLMNPRSTUVWXY.1.1.13 0 1 10 12 14 30 Tarkistusmerkin avulla voidaan tarkistaa, että mikään yksi merkki ei ole väärin havaitsee kaikki yhden merkin virheet havaittua virhettä ei vei automaattisesti korjata väli merkkiä ei tarki steta lainkaan '+' tarkoittaa 1800-lukua '-' tarkoittaa 1900-lukua 'A' tarkoittaa 2000-lukua olemassa: 030405-0SOC < ei oteta käyttöön: 030405A060C virheellinen: 1-::uqoqfi OK+ 120464121 % 31 = 12 = 'C' Henkilötunnuksen kehity shistorian vuoksi tarkistusmerkki ei ota huomioo1 välimerkkiä lainkaan. Tämän vuoksi mitään välimerkissä olevia virheitä ~ i havaita lainkaan, mikä aiheuttaa huomattavia rajoituksia välimerkin käyttämiseen ohjelmistoissa. Sitä ei itse asiassa saisi lainkaan hyödyntää, mistä myös seuraa, että hetussa olevaa 6-numeroista syntymäaikaakaan ei oikeastaan saisi käyttää syntymäaikatietona, koska sen vuosiluku on puutteellinen. Väestörekisterikeskuksessa välimerkkiä ei huomioida ja kaikki käytössä olevat henkilötunnukset eroavat toisistaan myös jonkun mlun merkin kuin välimerkin osalta. Asia1 olisi voinut suunnitella paremminkin.
Bittitason tarkistukset esim. hetu: 120464-121 C Muistipiirit, väylät, tiedonsiirrot. levyt Monenko bitin muuttumisvirheet havaitaan? Monenko bitin muuttumisvirheet voidaan automaattisesti korjata? Montako ylimääräistä bittiä tarvitaan virheiden havaitsemiseen tai korjaamiseen? lisämuistitilan tai lisälevytilan tarve? lisäjohtimien tarve väylällä? Tehdäänkö tarkistukset laitteisto vai ohjelmistotasolla? paljonko aikaa tarkistuksiin kuluu? Bittitason tarkistuksia tehdään koko ajan tietoa käsiteltäessä laitteistossa. Kaikki suorittimen ulkoiset ja sisäiset rekisteri! ja suorittimen sisäiset väylät on laitteistotasolla suojattu virheitä vastaan. Tavallisten pöytäkoneiden muistikin voi olla virheitä korjaavaa lajia, jolloin myös muistipiireihin sisältyy yhden virheen havaitsemi>- ja korjauspiirit. Laitteiston väylät on yleensä suojattu, ainakin jollakin tavalla. Levytiedostotkin voi olla suojattu, mutta niitä varten on kehitetty ihan omat vähän monimutkaisemmat standardit, joista puhumme myöt emmin kurssilla.
Bittitason tarkistukset esim. hetu: 120464-121 C Muistipiirit, väylät, tiedonsiirrot, levyt Monenko bitin muuttumisvirheet havaitaan? Monenko bitin muuttumisvirheet voidaan automaattisesti korjata? Montako ylimääräistä bittiä tarvitaan virhe havaitsemiseen tai korjaamiseen? lisämuistitilan tai lisälevytilan tarve? lisäjohtimien tarve väylällä? Tehdäänkö tarkistukset laitteisto vai ohjelmistotasolla? paljonko aikaa tarkistuksiin kuluu? jos yhden virheen hetu: 1 bitti (2 tai useampi, jos samassa merkissä) todennäköisyys: 1/1 000 000 eli 1 o-6 niin kahden samanaikaisen virheen todennäköisyys: (1/1 000 000)2 eli 1 o- 1 2 ja kolmen samanaikaisen virheen todennäköisyys: (1/1 000 000)3 eli 1 o- 1 8 muutaman perusteella. Ehkä tärkein piirre on se, kuinka monen bitin muuttuminen vielä varmasti havaitaan. Mitä useamman bitin muuttuminen varmasti havaita3n, sitä parempi. Usein virheet ovat satunnaisia ja useamman virheen samanaikainen tapahtuminen on huomattavasti epätodennäköisempää kuin yhden virheen tapahtuminen. Tällä tavoin periaatteessa voidaan laskea riski sille, että virhe jää havaitsemat!< ja mahdollisesti aiheuttaa häiriön. Havaitsematloman virheen todennäköisyys on siis hyväksytty ja harkittu riski.
Bittitason tarkistukset esim. hetu: 120464-121 C Muistipiirit, väylät, tiedonsiirrot, levyt Monenko bitin muuttumisvirheet havaitaan? Monenko bitin muuttumisvirheet voidaan automaattisesti korjata? hetu: 0 bittiä (virheitä ei voi koskaan korjata) Montako ylimääräistä bittiä tarvitaan virheiden havaitsemiseen tai korjaamiseen? lisämuistitilan tai lisälevytilan tarve? lisäjohtimien tarve väylällä? Tehdäänkö tarkistukset laitteisto vai ohjelmistotasolla? paljonko aikaa tarkistuksiin kuluu? on, että monen automaattisesti havaita ja korjata. voi olla, että 1 bitin virheet voidaan kaikki havaita ja korjata, kahden bitin virheet kaikki havaitaan mutta niitä ei voi korjata, mutta osa kolmen bitin virheistä jää jo havaitsematta. Riskianalyysissä sitten pätellään, kuinka todennäköinen kolmen bitin virhe on ja kuinka pahan häiriön se voisi mahdollisesti aiheuttaa.
Bittitason tarkistukset esim. hetu: 120464-121 C Muistipiirit, väylät, tiedonsiirrot, levyt Monenko bitin muuttumisvirheet havaitaan? Monenko bitin muuttumisvirheet voidaan automaattisesti korjata? Montako ylimääräistä bittiä tarvitaan virheiden havaitsemiseen tai korjaamiseen? lisämuistitilan tai lisälevytilan tarve? lisäjohtimien tarve väylällä? hetu: 1 merkki eli 10% lisää hetu: 11 merkkiä eli 88 b tark.merkki: 8 b Tehdäänkö tarkistukset laitteisto vai ohjelmistotasolla? paljonko aikaa tarkistuksiin kuluu? Tilakustannus on merkittävä virheen havaitsemis/k01jaus-järjestelmien piirre. Hetussa ylimääräinen tilakustannus on 10%, mikä ei ole ihan pieni määrä. Suorittimen sisäisen väylän suojaamisessa virheitä korjaavilla biteillä tarvitaan usein vielä enemmän ylimääräisiä bittejä. Toisaalta, tätä ei pidä ajatella kovin negatiivisesti. Suorittimen toiminnassa on kaikkialla muuallakin tärkeimpänä tavoitteena, että se ei tee minkäänlaisia virheitä. Virheiden torjunta ei siis ole mitenkään ylimääräistä vaan olennainen osa normaalia toimintaa.
Bittitason tarkistukset esim. hetu: 120464-121 C Muistipiirit, väylät, tiedonsiirrot, levyt Monenko bitin muuttumisvirheet havaitaan? Monenko bitin muuttumisvirheet voidaan automaattisesti korjata? Montako ylimääräistä bittiä tarvitaan virheiden havaitsemiseen tai korjaamiseen? lisämuistitilan tai lisälevytilan tarve? lisäjohtimien tarve väylällä? Tehdäänkö tarkistukset laitteisto vai ohjelmistotasolla? paljonko aikaa tarkistuksiin kuluu? hetu: ohjelmistotasolla Useat virheen havaitsemis- ja korjausalgoritmit voidaan yhtä hyvin toteuttaa laitteistolla tai ohjelmistolla. Kumpaa tapaa käytetään, riippuu muista parametreista kuten algoritmin nopeus- ja muokattavuusvaatimuksista. Esimerkiksi hetun tarkistaminen tehdään kuitenkin aina ohjelmistotasolla, koska (a) se on aika lailla vain suomalainen piirre ja (b) hetua käsiteltäessä sen tarkistukseen kuluu oikeastaan vain hyvin vähän aikaa muuhun käsittelyaikaan verrattuna. Toisaalta, esimerkiksi muistiväylän virheenkorjaus on pakko nopeusvaatimusten vuoksi tehdä laitteistolla.
Pariteettibitti Yksi ylimääräinen bitti per tietoalkio tavu, sana, tietoliikennepaketti? 1001110? 10011101 10001111 00110111 00011100 01010001 11100011 00001111 00101010????????... Parillinen (tai pariton) pariteetti: 1-bittien lukumäärä pariteettibitti mukaanlukien on aina parillinen (tai pariton) Havaitsee 1 bitin muuttumisen Ei voi korjata koskaan Esimerkkejä (parillinen pariteetti) 0010001? 10001101 1111 001? on käyttää varataan ylimääräinen bitti tiedon muuttumattomuustarkistusta varten. Jos tietoal on 7-bittiä, niin pariteettibitin kanssa alkion pituus on sitten 8 bittiä. Toisaalta, jos 8-bittistä merkkiä halutaan suojata pariteettibitillä, niin tietoalkion piiuudeksi tulee inhoiltavai 9 bittiä. Tällöin usein pariteettibitit sijoitetaankin omaan tavuunsa siten, että esimerkiksi joka 9. tavu sisältää pariteettibitin edeltäville 8 tavulle. Tiedon tarkistus on tietenkin tällöin vähän epätriviaalia.
Pariteettibitti Yksi ylimääräinen bitti per tietoalkio tavu, sana, tietoliikennepaketti? Parillinen (tai pariton) pariteetti: 1-bittien lukumäärä pariteettibitti mukaanlukien on aina parillinen (tai pariton) 11011101 1101 1000 Havaitsee 1 bitin muuttumisen Ei voi korjata koskaan Esimerkkejä (parillinen pariteetti) 0010001? 1000 1 1 01 1111 001? Pariteettibitti lasketaan data-biteistä sillä tavoin, että 1-bittien kokonaislukumäärä on parillista pariteettia käytettäessä parillinen. Esimerkiksi lntelin arkkitehtuureissa on tilarekisterissä erityinen pariteettibitti, joka ilmaisee operaation tuloksen pariteetin jokaisen operaation jälkeen. Pariteettibitin aivo lasketaan ja kirjoitetaan joka kerta uuden aivan yh te yd ess~ ja pariteettibitin oikeellisuus lasketaan joka kerta kyseistä tietoa käytettäessä.
Pariteettibitti Yksi ylimääräinen bitti per tietoalkio tavu, sana, ti etoliikennepaketti? Parillinen (tai pariton) pariteetti: 1-bittien lukumäärä pariteettibitti mukaanlukien on aina parillinen (tai pariton) alkuper. oikea data 11011101 Havaitsee 1 bitin muuttumisen Ei voi korjata koskaan 1101 1001 11011100 parillinen pariteetti, 1-bittejä 5 kpl Q VIRHE JOSSAKIN Esimerkkejä (parillinen pariteetti) 0010001? 1000 1101 1111 001? tahansa yhden kahden muutok sia, koska ne kumoavat toisensa. Kuten muissakin tiedon muuttumattomuuden valvontamenetelmissä, pariteetibitti siis talletetaan aivan samalla tavalla kuin varsinaiset databititkin. On myös mahdollista, että pariteettibitti itse on muuttunut ja kaikki databitit ovat ennallaan, jolloin virheellinen pariteettibitti itse asiassa antaa tavallaan väärän hälyytyksen, koska kaikki databitit ovat edelleen oikein. Virheellisen pariteetin tapauk sessa meillä ei ole mitään tietoa virheen sijainnista, joten virheitä ei voi korjata.
Pariteettibitti Yksi ylimääräinen bitti per tietoalkio tavu, sana, tietoliikennepaketti? Parillinen (tai pariton) pariteetti: 1-bittien lukumäärä pariteettibitti mukaanlukien on aina parillinen (tai pariton) Havaitsee 1 bitin muuttumisen Ei voi korjata koskaan Esimerkkejä (parillinen pariteetti) 0010001? 1000 1101 1111 001? Harjoitellaanpa vähän. Mikä pariteettibitin aivo suojaa näitä 7 data-bittiä?
Pariteettibitti Yksi ylimääräinen bitti per tietoalkio tavu, sana, ti etoliikennepaketti? Parillinen (tai pariton) pariteetti: 1-bittien lukumäärä pariteettibitti mukaanlukien on aina parillinen (tai pariton) Havaitsee 1 bitin muuttumisen Ei voi korjata koskaan Esimerkkejä (parillinen pariteetti) 00100010 1000 1101 1111 001? 2 kpl 1-bittejä, siis parit. bitti on 0 Kä ~1 ös,>ä on on kappaletta. olla nolla, jotta kaikkien bittien 1-bittien lukumäärä pysyy parillisena.
Pariteettibitti Yksi ylimääräinen bitti per tietoalkio tavu, sana, ti etoliikennepaketti? Parillinen (tai pariton) pariteetti: 1-bittien lukumäärä pariteettibitti mukaanlukien on aina parillinen (tai pariton) Havaitsee 1 bitin muuttumisen Ei voi korjata koskaan Esimerkkejä (parillinen pariteetti) 0010001? 1000 1101 1111 001?
Pariteettibitti Yksi ylimääräinen bitti per tietoalkio tavu, sana, ti etoliikennepaketti? Parillinen (tai pariton) pariteetti: 1-bittien lukumäärä pariteettibitti mukaanlukien on aina parillinen (tai pariton) Havaitsee 1 bitin muuttumisen Ei voi korjata koskaan Esimerkkejä (parillinen pariteetti) 0010001? 1000 1101 1111 0011 9 kpl 1-bittejä, siis parit. bitti on 1 1-bittejä on databiteissä 9 kappaletta, joten parilliseen pariteettiin päästäksemme pariteettibitin aivon tulee olla 1. r!-
Hamming-etäisyys Miten monta bittiä missä tahansa koodijärjestelmässä (esim. ISO Latin-9) esitetyssä koodissa täytyy muuttua, että se muuttuu johonkin toiseen (mihin tahansa) lailliseen koodiin? ISO Latin-9'n Hamming-etäisyys on 1 Pariteettibitillä vahvistettuna ISO Latin-9'n Hamming-etäisyys on 2 mikä todennäköisyys kahden biti n virheeseen? riittävän pieni?..... Prob {2 biti n virhe} = ( Prob {yhden biti n virhe} ) 2 m1ten panteettlbltll SIJOitetaaan? joka 9. tavu on parit. tavu? Prob {3 bitin virhe} = ( Prob {yhden bitin virhe}) 3 Tiedon muuttumattomuuden käsittelyssä Hamming-etäisyys on tärkeä. Se kertoo, kuinka monta bittiä pitää vähintään muuttua, jotta laillinen tieto voisi muuttua toiseksi lailliseksi tiedoksi. Jos bittejä muuttuu esimerkiksi virheen takia vähemmän kuin Hamming-etäisyyden osoittama määrä, niin tuloksena on aina jokin laiton esity stapa, jolloin virhe varmasti havaitaan. Jos taas virheellisiä muutoksia on Hamming-etäisyyden osoittama määrä, niin on varsin mahdollista, että uusi bittiyhdistelmä on jokin laillinen merkki ja virhe jää havaitsematta.
Hamming-etäisyys Miten monta bittiä missä tahansa koodijärjestelmässä (esim. ISO Latin-9) esitetyssä koodissa täytyy muuttua, että se muuttuu johonkin toiseen (mihin tahansa) lailliseen koodiin? ISO Latin-9'n Hamming-etäisyys on 1 'A' = Ox41 = 0100 0001 'B' = Ox42 = 0100 0010 ~ 'C' = Ox43 = 0100 0011 Pariteettibitillä vahvistettuna ISO Latin-9'n Hamming-etäisyys on 2 mikä todennäköisyys kahden biti n virheeseen? H kahden bitin ero yhden bitin ero riittävän pieni?..... Prob {2 biti n virhe} = ( Prob {yhden biti n virhe} ) 2 m1ten panteett1b1tl1 SIJOitetaaan? joka 9. tavu on parit tavu? Prob {3 bitin virhe} = ( Prob {yhden bitin virhe} ) 3 Esimerkiksi 8-bittisessä ISO Latin-9 koodistossa A- ja 8 -kirjainten esitysmuodoissa on kahden bitin ~ ro, kun t ~~~ R- j ~ r.-k i rj ~ int P. n välillä nn v:=~ in yhrlp.n hitin P.rn PiP.nimmiiiÄÄn ~ ii ~ 1 ~ tin -!=1 k nnrl i ~ t n~ käytt ÄP.n v~ in yhrlp.n bitin muuttuminen voi muuttaa laillisen merkin (esim. '8') toiseksi lailliseksi merkiksi (esim. 'C'). Koodisten Hamming-etäisyys on siten 1.
Hamming-etäisyys Miten monta bittiä missä tahansa koodijärjestelmässä (esim. ISO Latin-9) esitetyssä koodissa täytyy muuttua, että se muuttuu johonkin toiseen (mihin tahansa) lailliseen koodiin? ISO Latin-9'n Hamming-etäisyys on 1 'B' = Ox42 = 0100 0010 0 'C' = Ox43 = 0100 00111 pariteetti bitti / ~ kahden bitin ero Pariteettibitillä vahvistettuna ISO Latin-9'n Hamming-etäisyys on 2 mikä todennäköisyys kahden biti n virheeseen? riittävän pieni?..... Prob {2 biti n virhe} = ( Prob {yhden biti n virhe} ) 2 m1ten panteett1b1tt1 SIJOitetaaan? joka 9. tavu on parit. tavu? Prob {3 bitin virhe} = ( Prob {yhden bitin virhe}) 3 Jos jokaiseen merkkiin lisätään pariteettibitti, niin Hamming-etäisyydeksi tulee 2. Nyt jokainen 1 bitin virhe aiheuttaa virheellisen pariteetin, jolloin kyseinen 9-bitin yhdistelmä ei vastaa mitään laillista Latin-9 merkkiä. Jos yhden bitin muuttumisen todennäköisyys on vaikkapa 1 miljoonasta, niin sen voidaan ajatella olevan liian suuri riski. Hamming-etäisyyden ollessa kaksi havaitsematloman virheen todennäköisyys on vain 1 biljoonasta, joka sitten voikin olla jo tarpeeksi pieni kyseiseen sovellukseen. Jos tämäkään ei riitä, käytetään koodistoa, jossa Hamming-etäisyys on 3, jolloin havaitsematloman virheen todennäköisyys on jo 1 triljoonasta.
Virheen korjaava Hamming-koodin idea Databitit 11 00 A Jokainen databitti kuuluu erilaiseen kokelmaan pariteettijoukkoja ~-/..~ o-;-...;:,~""ir Tämä 0-bitti kuuluu joukkoihin A ja C, eikä mikään muu databitti kuulu täsmälleen joukkoihin A ja C Tämä 1-bitti kuuluu kaikkiin joukkoihin A, B ja C, eikä mikään muu databitti kuulu kaikkiin joukkoihin A, B ja C [Tane99, Fig. 2-14) ole kanssa, idean isä. nyt tilannetta, jossa meillä on vain 4 databittiä. sijoitetaan pariteettiijokkiin A, 8 ja C sillä tavoin, että jokainen databitti kuuluu uniikkiin kokoelmaan pariteettiluokkia.
Virheen korjaava Hamming-koodin idea Pariteetti luokan A pariteetti bitti Databitit 11 00 Pariteetti bitit A=O B=O C=1 A A ' ' Tämä bitti kuuluu Tarvitaan 3 kpl pariteetti bittejä, yksi kullekin pariteetti Iuokaiie (parillinen pariteetti) pariteettijoukkoon A, mutta ei joukkoon B tai C Pariteetti luokan C -+--pariteettibitti Tämä bitti kuuluu pariteettijoukkoihin B ja C, mutta ei joukkoon A Jokainen data- ja pariteettibitti kuuluu uniikki in kokoelmaan pariteettijoukkoja [Tane99, Fig. 2-14) Jalkaiseen pariteettiluokkaan sisältyy yksi pariteettibitti, joka asetetaan parilliseen pariteettiin. Bittejä on nyt yhteensä 7 kpl, jotka voidaan kukin identifioida noilla kolmella pariteettibitillä. Kolmella bitillähän voidaan esittää 8 eri tilaa, joten systeemissä olisi vielä tilaa yhdelle databitille lisää. Toisaalta, kaksi pariteettiluokkaa ei riittäisi, koska kahdella pariteettibitillä ei pysty identifiomaan kuutta eri bittiä. Tyydytään nyt kuitenkin näihin neljään databittiin. Olennaista on siis kuitenkin se, että jokainen Tstä bitistä kuuluu erilaiseen kokoelmaan pariteettiluokkia.
Virheen korjaava Hamming-koodin idea Databitit 11 00 Pariteetti bitit A=O B=O C=1 ' ' A A virheellinen bitti [Tane99, Fig. 2-14) Tarkastellaan nyt tilannetta, jossa tapahtunut virhe korjataan. Oletetaan, että tietty 0-bitti on syystä tai toisesta muuttunut ykköseksi. Tässä esimerkissä se sattuu olemaan databitti, mutta virheen korjaava algoritmi toimii ihan yhtä hyvin myös pariteettibitin kohdalla.
Virheen korjaava Hamming-koodin idea Databitit 11 00 Pariteetti bitit A=O B=O C=1 ' ' A virheellinen pariteetti bitti Pariteettiluokkien A ja C pariteettibitit havaitsevat virheen. Vain yksi bitti (data-biteistä ja pariteettibiteistä) on sellainen, että se kuuluu täsmälleen pariteettiluokkiin A ja C. Virheellinen bitti identifioidaan. [Tane99, Fig. 2-14) Dat;3a seuraavan ovat nostavat asiaankuuluvan 'metakan'. Virheenkorjausalgoritmi tutkii tilannetta ja havaitsee, että ainoastaan yksi bitti seitsemästä on sellainen, joka kuuluu pariteettiluokkiin A ja C, mutta ei B'hen, joten siis tuon bitin täytyy oli< virheellinen.
Virheen korjaava Hamming-koodin idea Databitit 11 00 Pariteetti bitit A=O B=O C=1 ' ' A A virheellinen bitti Virheellinen bitti korjataan, eli "flipataan" [Tane99, Fig. 2-14) Virheenkorjaaminen ei tietenkään tarkoita vain sitä, että virheellisen bitin sijainti löydetään. Virheellinen tieto pitää myös korjata. Onneksi meillä on käytössä binäärijärjestelmä, jolloin virheellisen bitin ollessa kyseessä vaihtoehtoisia oikeita aivo on jäljellä vain 1 kpl. Oikea aivo saadaan 'flippaamalla' virheellinen bitti takaisin oikein päin eli muuttamalla nolla ykköseksi ja päin vastoin.
Hamming-koodi Käytetään montaa pariteettibittiä, yksi kussakin pariteettiluokassa Havaitaan kahden bitin muuttuminen Korjataan 1 bitin muuttuminen 4 bittiä dataa 3 pariteettiluokkaa 3 pariteettibittiä Data ja parit. bitit: 1 00 11 00 Bitti nro: 765 4321. Kaikki bitit nro 2' ovat pariteettibittejä, muut bitit ovat databittejä Pariteettiluokan muodostavat ne bitit, joiden järjestysnumerossa binääriesityksessä on mukana kyseinen pariteettibitti Kutakin databittiä tarkistavat ne pariteettibitit, jotka ovat mukana kyseisen databitin järjestysnumeron binääriesityksessä Hamming koodi perustuu edellisellä sivulla kuvatluun ideaan, mutta ei ole ihan samanlainen. Esimerkissämme on vain 7 bittiä, mutta menetelmä toimii vastaavasti mille tahansa bittien lukumäärälle. Jos käytettävissä on yhteensä 7 bittiä, niin siitä ainoastaan 4 bittiä on dataa ja loput 3 bittiä pariteettibittejä. Databitit jaetaan kolmeen pariteettiluokkaan, jotka tässä esimerkissä sattuvat olemaan kaikki saman kokoisia, mutta yleisesti ottaen eivät ole. Edelleenkin pätee, että jokainen bitti (esimerkissä siis 7 bittiä) kuuluu uniikkiin kokoelmaan pariteettijoukkoja.
Hamming-koodi Käytetään montaa pariteettibittiä, yksi kussakin pariteettiluokassa Havaitaan kahden bitin muuttuminen Korjataan 1 bitin muuttuminen 4 bittiä dataa 3 pariteettiluokkaa 3 pariteettibittiä Data ja parit. bitit: 1 00 11 00 Bitti nro: 765 4321. Kaikki bitit nro 2' ovat pariteettibittejä, muut bitit ovat databittejä Pariteettiluokan muodostavat ne bitit, joiden järjestysnumerossa binääriesityksessä on mukana kyseinen pariteettibitti Kutakin databittiä tarkistavai ne pariteettibitit, jotka ovat mukana kyseisen databitin järjestysnumeron binääriesityksessä Järjestelmä toimii periaatteessa kuten edellisellä sivjiia esitettiin ja kaikki 1 bitin virheet voidaan korjata sen avulla automaattisesti. Järjestelmä myös havaitsee kaikki kahden bitin virheet, mutta ei pysty identifioimaan niitä virheen korjaamiseksi. Kaikkia kolmen bitin virheitä ei pystytä havaitsemaan.
Hamming-koodi Käytetään montaa pariteettibittiä, yksi kussakin pariteettiluokassa Havaitaan kahden bitin muuttuminen Korjataan 1 bitin muuttuminen. Kaikki bitit nro 2' ovat pariteettibittejä, muut bitit ovat databittejä 4 bittiä dataa 3 pariteettiluokkaa 3 pariteettibittiä Data ja parit. bitit: 100 1100 Bitti nro: 7~ 47/ databitit f/;;arit. bitit Pariteettiluokan muodostavat ne bitit, joiden järjestysnumerossa binääriesityksessä on mukana kyseinen pariteettibitti Kutakin databittiä tarkistavat ne pariteettibitit, jotka ovat mukana kyseisen databitin järjestysnumeron binääriesityksessä Hamming koodin hieno idea perustuu bittien numerointiin, alkaen numerosta 1 toisin kuin yleensä tehdään. Yleensähän bitit numeroidaan nollasta alkaen. Numeroinnin voi tehdä vasemmalta oikealle tai oikealta vasemmalle, sillä ei ole väliä. Tässä numerointi on nyt tehty oikealta vasemmalle. Kantava idea on, että kaikf:i bitit, joiden numero on jokin kakkosen potenssi, ovat pariteettibittejä ja loput databittejä. Tämän idean perusteella voi sitten aina päätellä, kuinka monta pariteettibittiä tiettyyn määrään databittejä tarvitaan.
Hamming-koodi Käytetään montaa pariteettibittiä, yksi kussakin pariteettiluokassa 4 bittiä dataa 3 pariteettiluokkaa 3 pariteettibittiä Havaitaan kahden bitin muuttuminen Korjataan 1 bitin muuttuminen. Kaikki bitit nro 2' ovat pariteettibittejä, muut bitit ovat databittejä Data ja parit. bitit: 1 00 11 00 Bitti nro: 765 4321 luokka 1 1 = 00 2= 3 = 01 3= 5 = 10 6= 7 = 11 7= luokka 4 4 = 1 0 5 = 1 1 6 = 1 0 7 = 1 1 Pariteettiluokan muodostavat ne bitit, joiden järjestysnumerossa bioääriesityksessä on mukana kyseinen pariteettibitti luokka 1 2 luokka 2 Kutakin databittiä tarkistavat ne pariteettibitit, jotka ovat mukana kyseisen databitin järjestysnumeron bioääriesityksessä ~~----------~==========~~ Paritet1tiluclkat perustuvat tuon numerothan voidaan esittää binäärilukuna ja pariteettiluokat määritellään tämän mukaisesti. Kuhunkin pariteettiluokkaan kuuluvat ne bitit, joiden järjestysnumeron binääriesityksessä on mukana kyseinen pariteettibitti. Esimerkiksi pariteettiluokkaan 2 eli pariteettibitin 2 valvomaan ryhmään kuuluvat bitit 2, 3, 6 ja 7. Esimerkiksi, jos luku 6 esitetään binääriesityksessä eli kakkosen potenssien summana, niin mukana on bitti 2 eli kakkonen potenssiin 1.
Hamming-koodi Käytetään montaa pariteettibittiä, yksi kussakin pariteettiluokassa Havaitaan kahden bitin muuttuminen Korjataan 1 bitin muuttuminen. Kaikki bitit nro 2' ovat pariteettibittejä, muut bitit ovat databittejä Pariteettiluokan muodostavat ne bitit, joiden järjestysnumerossa binääriesityksessä on mukana kyseinen pariteettibitti 4 bittiä dataa 3 pariteettiluokkaa 3 pariteettibittiä Data ja parit. bitit: 100 1100 Bitti nro: 765 4321 luokka 421 bitti ä 3 tarkistaa parit.bitit 2 ja 1..., 1 = 001 2 = 010 3-011 4 = 100 bitti ä 6 tarkistaa 5 = 1 01 parit.bitit 4 ja 2 ~ 7 = 111 Kutakin databittiä tarkistavat ne pariteettibitit, jotka ovat mukana kyseisen databitin luokka 1 luokka 4 Samalla tavalla kunkin bitin binääriesityksestä voidaan päätellä, mihin kaikkiin pariteettiluokkiin kyseinen bitti kuuluu. Bitti kuuluu niihin pariteettiluokkiin, joiden kohdalla on ykkönen kyseisen bitin järjesty snumeron binääri esityksessä. Esimerkiksi bitin 6 järjesty snumeron binääriesity s on 110, joten bittiä 6 valvoo pariteettiluokat ja siis pariteettibitit 4 ja 2. Vastaavasti bittiä 3 valvoo bitit 2 ja 1. Pariteettibittiä 1 valvoo ainoastaan se itse eli bitti 1. Jokaista bittiä valvoo kuitenkin vähintään 1 bitti ja jokaista bittiä valvoo uniikki kokoelma pariteettibittejä.
Esimerkki: Virheen korjaava Hamming-koodi Alkuperäinen data ori gi naali data ja parit. bitit: 1 00? 1?? bitti nro: 765 4321 Pariteettibitit Virheellinen data databitit Virheen havaitseminen Virheellisen bitin paikallistaminen Virheen korjaus ark;3ste>lla<m H~~ :~~,f~~~~~~~ i;:: avulla. että on joka talletetaan etumerkitön pieni 1001. suojatluun 7-bittiseen kenttään. Varsinainen data voisi olla vaikkapa 9 tai mikä tahansa muu 4-bittinen tieto. Joka tapauksessa sen bittiaivot ovat
Esimerkki: Vi rrheen korjaava Hamming-koodi G ariteetti luokka 1 : Alkuperäinen data Pariteettibitit Virheellinen data Luokka 1 bittien 7, 5, 3 arvot 1, 0, 1 parillinen pariteetti <=:> parit. bitti 1 :n arvo on 0 ori gi naali data ja parit. bitit: 1 00 11 00 bitti nro: 765 4321 databitit Virheen havaitseminen luokka 2 Virheellisen bitin paikallistaminen luokka 1 2 Virheen korjaus luokka 4 luokan pariteettibiteille asetetaan parillisen pariteetin mukaiset aivot. Tästä lähtien tuo neljän bitin tieto talletetaan ja liikkuu järj estelmässä 7-bittisenä datana.
Esimerkki: Virheen korjaava Hamming-koodi Alkuperäinen data Pariteettibitit Virheellinen data ori gi naali data ja parit. bitit: 1 00 11 00 bitti nro: 765 4321 virhe ~ virheellinen data ja parit. bitit: 11 0 11 00 Bitti nro: 765 4321 Virheen havaitseminen Virheellisen bitin paikallistaminen Virheen korjaus Oletetaan nyt edelleen, että jonkin staattisen tai transientin vian vuoksi 7-bittisessä kentässä 2. bitti vasemmalta eli Hannming-koodissa käytetyn bittinumeroinnin mukaisesti bitti 6 muuttuu virheelliseen aivoon 1.
Esimerkki: Virheen korjaava Hamming-koodi Alkuperäinen data Pariteettibitit Virheellinen data Virheen havaitseminen Virheellisen bitin paikallistaminen ori gi naali data ja parit. bitit: 1 00 11 00 bitti nro: 765 4321 virhe t virheellinen data ja parit. bitit: 11 0 11 00 Bitti nro: 765 4321 t t Virheellinen parillinen pariteettibitti luokka 1 luokka 2 Virheen korjaus luokka 4 tiet1ja seuraavan kerran talletettaessa luettaessa, pariteettibitit tarkistetaan. Jos yksikin pariteettibitti on väärin, niin tiedossa on siis jokin virhe. Tästä raportoidaan ehkä jollain tavoin, minkä jälkeen virhettä yritetään paikallistaa olemassaolevan tiedon eli virheellisten pariteettibittien perusteella. Jos virheitä on vain yksi, niin virhe voidaan aina paikallistaa.
Esimerkki: Virheen korjaava Hamming-koodi Alkuperäinen data Pariteettibitit Virheellinen data Virheen havaitseminen Virheellisen bitin paikallistaminen Virheen korjaus ori gi naali data ja parit. bitit: 1 00 11 00 bitti nro: 765 4321 virhe ~ virheellinen data ja parit. bitit: 11 0 11 00 Bitti nro: 765 4321 \ t t Virheellinen parillinen pariteettibitti Virheelliset pariteetti bitit: 2 ja 4 \ Virheellinen bitti: 2 + 4 = 6 on ei pariteettibitti 1) tarkastavat. Täten siis bitin 6 täytyy olla virheellinen. Tällainen päättely onnistuu ainoastaan siinä tapauksessa, että virheellisiä bittejä oli 1 kapp31e. Jos virheitä olisi useampi, niin voi olla, että virhe jää kokonaan havaitsematta, tai sitten virheellisen bitin >ijainti päätellään väärin.
Esimerkki: Virheen korjaava Hamming-koodi Alkuperäinen data Pariteettibitit Virheellinen data ori gi naali data ja parit. bitit: 1 00 11 00 bitti nro: 765 4321 virhe ~ virheellinen data ja parit. bitit: 1 00 11 00 Bitti nro: 765 4321 Virheen havaitseminen Virheellisen bitin paikallistaminen Virheen korjaus Virheellinen bitti: 2 + 4 = 6 Totta kai virheellisen bitin paikannuksen jälkeen se pitää automaattisesti myös korjata. Korjaaminen Jn helppoa, koska binäärijärjestelmässä bitin virheellisestä aivosta voidaan helposti päätellä sen oikea aivo, muuttamalla 0 ykköseksi ja päin vastoin. Tässä tapauksessa siis virheellinen 1-aiVo muutetaan nollaksi.
CRC Cyclic Redundancy Code Tiedonsiirrossa verkon yli käytetty tarkistusmenetelmä jos virheitä tulee, niitä tulee usein paljon pariteettibitit eivät riitä, virheitä ei korjata Tarkistussumma (16-bittinen CRC) isolle tietojoukolle laske CRC = f(vi esti) o/o 2 16 (eli ota 16 viimeistä bitti ä) lähetä viesti ja CRC (2 ylimääräistä tavua) vastaanota viesti ja CRC laske CRC ja tarkista onko sama kuin viestin mukana oleva jos väärin, niin pyydä uudelleenlähetystä CRC-CCITI CRC's detect: Ali single-bit and double-bit errors Ali errors of an odd number of bits Ali error bursts of 16 bits or less ln summary, 99.998% of all errors perusoletus yhdestä päde. Tietoliikenneyhteyksissä on nimenomaan havaittu, että bittivirheet eivät ole toisistaan riippumattomia. Eli jos jos yksikin bitti on virheellinen, niin on aika todennäköistä, että virheitä on useampikin. Tällaisessa tilanteessa käytetään Hamming koodin asemesta tarkistussummia, joilla pyritään havaitsemaan mahdollisimman usea virhe.
CRC Cyclic Redundancy Code Tiedonsiirrossa verkon yli käytetty tarkistusmenetelmä jos virheitä tulee, niitä tulee usein paljon pariteettibitit eivät riitä, virheitä ei korjata Tarkistussumma (16-bittinen CRC) isolle tietojoukolle laske CRC = f(vi esti) o/o 2 16 (eli ota 16 viimeistä bitti ä) lähetä viesti ja CRC (2 ylimääräistä tavua) vastaanota viesti ja CRC laske CRC ja tarkista onko sama kuin viestin mukana oleva jos väärin, niin pyydä uudelleenlähetystä CRC-CCITI CRC's detect: Ali single-bit and double-bit errors Ali errors of an odd number of bits Ali error bursts of 16 bits or less ln summary, 99.998% of all errors Tarkistussumma lasketaan yleisesti jonkin sopivan funktion avulla kaikista tiedonsiirtopaketin bileistä. Itse funktion määrittely optimaaliseksi on tietenkin hyvin mielenkiintoinen ongelma. mutta se ei onneksenne kuulu tähän kurssiin. Tarkistussumma lähetetään viestin mukana, ja tarkistetaan vastaanottopäässä. Jos vi ~st i ssä on jotain vikaa, niin se pyydetään lähettämään uudelleen. Tiedonsiirto verkon yli on muutenkin niin hidas:a, että virheenkorjauksella ei saavuteltaisi merkittävää hyöty ä verrattuna sen kustannuksiin. Sitäpaitsi, uudelleenlähetyksiä tarvitaan muutenkin kokonaan hävinneiden pakettien varalta.
CRC Cyclic Redundancy Code Tiedonsiirrossa verkon yli käytetty tarkistusmenetelmä jos virheitä tulee, niitä tulee usein paljon pariteettibitit eivät riitä, virheitä ei ko~ata Tarkistussumma (16-bittinen CRC) isolle tietojoukolle laske CRC = f(vi esti) o/o 2 16 (eli ota 16 viimeistä bitti ä) lähetä viesti ja CRC (2 ylimääräistä tavua) vastaanota viesti ja CRC laske CRC ja tarkista onko sama kuin viestin mukana oleva jos väärin, niin pyydä uudelleenlähetystä CRC-CCITI CRC's detect: Ali single-bit and double-bit errors Ali errors of an odd number of bits Ali error bursts of 16 bits or less ln summary, 99.998% of all errors käytännössä, että 1/50000 osaa bittivirheistä ei havaita ja ne menevät tästä tarkistuksesta lävitse. On toivottavaa, että ne sitten havaitaan jossakin ylemmän tiedonsiirtotason tarkis:uksissa. On siis tärkeätä tarkkaan määritellä mahdolliset virhelähteet, virheiden ilmenemismuodot ja hyväksyt:ävä riskitaso, ja sitten toteuttaa virheen havaitsemis ja korjaustoimenpiteet näiden mukaisiksi.
Virheiden tarkistusmenetelmien käyttöalueet Mitä lähempänä suoritinta, sitä tärkeämpää tiedon muuttumattomuus on suoritti men si säilä siis erittäin tärkeätä Sisäinen väylä, muistiväylä, rekisterit, levy virheet lennossa korjaava Hamming-koodi Paikallisverkko, Intranet, Internet uudelleenlähetyksen vaativa CRC Järjestelmän eri tasoilla käytetään siis erilaisia tarkistusmenetelmiä. Perusperiaatteena on, että mitä lähempänä suoritinta ollaan, sitä tärkeämpää on tiedon muuttumattomuus. Erityisesti, suorittimen sisällä kaiken datan eheyttä pitää valvoa maksimaalisen hyvin, vaikka siitä aiheutuisikin suuria kustannuksia. Suorittimen laskennan lopputuloksen täytyy aina olla matemaattisesti oikein.
Virheiden tarkistusmenetelmien käyttöalueet Mitä lähempänä suoritinta, sitä tärkeämpää tiedon muuttumattomuus on suoritti men si säilä siis erittäin tärkeätä Sisäinen väylä, muistiväylä, rekisterit, levy virheet lennossa korjaava Hamming-koodi Paikallisverkko, Intranet, Internet uudelleenlähetyksen vaativa CRC kustannuksia ylimääräisten bittien tallettamisen ja niiden vaatimien ylimääräisten johtimien vuoksi. Toisaalta, tiedon muuttumattomuus tällä tasolla on niin tärkeätä, että nuo ns. 'ylimääräiset' kustannukset ovat olennainen osa suorittimen ja piirikortin toteutusta. Tiedon talletukseen käytetyt levyköt voidaan myöskin suojata pariteettibiteillä tai Hamming-koodilla. Palaamme näihin RAID-levyihin myöhemmällä luennolla.
Virheiden tarkistusmenetelmien käyttöalueet Mitä lähempänä suoritinta, sitä tärkeämpää tiedon muuttumattomuus on suoritti men si säilä siis erittäin tärkeätä Sisäinen väylä, muistiväylä, rekisterit, levy virheet lennossa korjaava Hamming-koodi Paikallisverkko, Intranet, Internet uudelleenlähetyksen vaativa CRC yleensä käytetä. on havaitun virheen yhteydessä yleensä pyydetään läheltäjää eksplisiittisesti lähettämään paketti uudelleen. Toinen vaihtoehto on jättää paketin perilletulo kuittaamatta, jolloin pienen ajan kuluttua lähettäjä päättelee koko paketin hävinneen ja lähettää sen uudelleen.
Laitteiden monistaminen cpu mem mem mem Monta muistipiiriä tai levyä, samat tiedot monistettu 1 1....... Monta suontmta, samat kaskyjen suontukset momstettu äänestys, enemmistö voittaa 1 1 1 1 Monta laitteistoa, samat ohjelmistot monistettu äänestys, enemmistö voittaa monimutkainen valvonta? hidas? virheitä tekevä laitteisto suljetaan pois häi ri köi mästä Monta samaa tai erityyppistä laitteistoa, samankaltaiset ohjelmistot ohjelmistojen toteutuksessa samat speksit, eri ohjelmoijat suorituksessa monta laitteistoa, samoilla syötteillä äänestys, enemmistö voittaa Tiedon muuttumattomuutta ja eheyttä voidaan myös valvoa vielä tehokkaammin, jos tarpeet ja rahat vain riittävät. Jos muistipiirien toiminta halutaan varmennettua, niin on helppo rakentaa järjestelm ä, jossa kukin muistipiiri on m onistettu. Tällöin mikään edes yhden kokonaisen muistipiirin viottuminen ei haittaa, koska samat tiedot ovat tallessa kahdella muulla identtisellä piirillä. Kustannukset tietenkin kasvavat. Muistia tarvitaan enemmän ja datan vertailuun tarvitaan suoritinaikaa tai erikoislaitteistoa.
Laitteiden monistaminen Monta muistipiiriä tai levyä, samat tiedot monistettu Monta suoritinta, samat käskyjen suoritukset monistettu äänestys, enemmistö voittaa Monta laitteistoa, samat ohjelmistot monistettu äänestys, enemmistö voittaa monimutkainen valvonta? hidas? virheitä tekevä laitteisto suljetaan pois häi ri köi mästä cpu cpu cpu mem Monta samaa tai erityyppistä laitteistoa, samankaltaiset ohjelmistot ohjelmistojen toteutuksessa samat speksit, eri ohjelmoijat suorituksessa monta laitteistoa, samoilla syötteillä äänestys, enemmistö voittaa Jos taas suorittimen toiminta halutaan varmistaa, niin monistetaan suorittimia. Esimerkiksi lntelin i432 järjstelmässä neljä suoritinta saattoi tehdä kaikkea laskentaa. Joka väylälle kirjoittamisen yhteydesså sitten valvottiin, että kaikilla suorittimilla oli sama käsitys väylälle kirjoitettavasta datasta. Jos oli niin, yksi sai sen kirjoittaa. Jos ei ollut, niin joku häiriköi. Jos häiriköinti toistui, niin kyseinen suoritin voitiin automaattisesti sulkea pois jatkossa. Operaattori pystyi sitten vaihtamaan rikki menneen suorittimen ehjään yksinkertaisest vain piirikorttia vaihtamalla.
Laitteiden monistaminen Monta muistipiiriä tai levyä, samat tiedot monistettu Monta suoritinta, samat käskyjen suoritukset monistettu äänestys, enemmistö voittaa cpu mem cpu mem Monta laitteistoa, samat ohjelmistot monistettu 1 1 1 1 äänestys, enemmistö voittaa 1 1 monimutkainen valvonta? hidas? virheitä tekevä laitteisto suljetaan pois häi ri köi mästä ( ) T 1 1 Monta samaa tai erityyppistä laitteistoa, samankaltaiset ohjelmistot 1 1 ohjelmistojen toteutuksessa samat speksit, eri ohjelmoijat cpu mem suorituksessa monta laitteistoa, samoilla syötteillä äänestys, enemmistö voittaa :a ;;,~::~ ~,,~k.iäytetää n useaa toimintansa. E lentopintoja ei saa muuttaa. ellei järjestelmistä ole samaa mieltä. Jos joku järjestelmä osoittautuu vialliseksi, niin se voidaan lennon aikana vaihtaa mukana olevaan varakoneeseen.
Laitteiden monistaminen Monta muistipiiriä tai levyä, samat tiedot monistettu (http:!/www.hq.nasagov/oflice!pao/history/computers!contents.html) Monta suoritinta, samat käskyjen suoritukset monistettu äänestys, enemmistö voittaa Monta laitteistoa, samat ohjelmistot monistettu äänestys, enemmistö voittaa monimutkainen valvonta? hidas? virheitä tekevä laitteisto suljetaan pois häi ri köi mästä our of the five computers I(IB:MAP-101) on the ICcoluntbia ran identical lsolftware and compared lresults with each other before the go-ahead to take a action. The fifth lcon1puter (also IBM ran a different cpu A mem cpu A mem Monta samaa tai erityyppistä laitteistoa, samankaltaiset ohjelmistot ohjelmistojen toteutuksessa samat speksit, eri ohjelmoijat suorituksessa monta laitteistoa, samoilla syötteillä äänestys, enemmistö voittaa cpu B mem käyttää Jo Apollo-aluksissa oli mukana kahden eri valmistajan tekemiä järjestelmiä, joissa oli toisistaan riippumattomien ohjelmistotiimien tuottamat täysin erilliset ohjelmisto!. Tällä tavoin pyrittiin minimoimaan ohjelmistoissa olevien katastrofaalisten virheiden vaikutus. Oli mahdollista milloin tahansa luopua pääasiallisesta monen identtisen koneen järjestelmästä ja vaihtaa varalaitteistoon, jossa ohjelmistokin oli eri tiimin tekemä. Useimmiten kannattaisi ehkä kuitenkin tehdä yksi ohjelmisto erinomaisesti kuin kaksi oikein hyvin, vai kannattaisiko?
Välimuistin (cache memory) perusidea Ongelma: keskusmuisti on aika kaukana suorittimesta rekisteri n vi ittausai ka: muistin vi ittausai ka: X 1 OX Ratkaisu: pidetään osa keskusmuistin tiedoista erikoislaitteistossa (välimuistissa) lähellä suoritinta suorittimella tai ainakin suorittimen puolella väylää välimuistissa pidetään kopi aita viime aikoina vi itatui sta keskusmuistin alueista Jokainen muistiviite on nyt seuraavanlainen cpu rcgs:l mem varmista, että tieto on välimuistissa? MMU: cache: jos tietoa ei löydy väli muistista, hae se sinne 1 1 suoriti n odottaa muisti naudan ajan 1 1 tee viittaus välimuistissa olevaan tietoon ( data tai käsky ) 1 bus (talleta välimuistissa oleva muutettu tieto muistiin) 1 Vai!kka tietokcme,en k'eskusrnuil>ti tuntuu olevan älyttömän nopea, näkokulmasta se hidas. Muisti on vielä nykyäänkin :oteutettu erillisillä piireillä suorittimesta ja muistiviitteen tekemiseksi tietoa ja kontrollisignaaleja pitää siirtää aika lailla muistiväylää pitkin. Tämän vuoksi tiedon hakemiseen muistista kuluu huomattavasti enemmän aikaa kuin esimerkiksi tiedon hakuun suorittimen sisäisestä rekisteristä. Muistelkaapa juustokakkuesimerkkiä luennoita 1. Muistiviittaus kestää niin kauan, että useat nykyiset arkkitehtuuri! eivät salli muistiviitteitä esimerkiksi aritmetiikkakäskyjen yhteydessä.
Välimuistin (cache memory) perusidea Ongelma: keskusmuisti on aika kaukana suorittimesta Ratkaisu: pidetään osa keskusmuistin tiedoista erikoislaitteistossa (välimuistissa) lähellä suoritinta suorittimella tai ainakin suorittimen puolella väylää välimuistissa pidetään kopi aita viime aikoina vi itatui sta keskusmuistin alueista rekisteri n vi ittausai ka: X välimuistin vi ittausai ka: 2X muistin viittausaika 1 OX cpu mem Jokainen muistiviite on nyt seuraavanlainen regs:l varmista, että tieto on välimuistissa? MMU: cache: jos tietoa ei löydy väli muistista, hae se sinne II 1 suoriti n odottaa muisti naudan ajan 1 1 tee viittaus välimuistissa olevaan tietoon ( data tai käsky ) 1 bus 1 (talleta välimuistissa oleva muutettu tieto muistiin) Rat!kais:una "'"'""" " " " " '"''" on toteutetaan samalle lastulle kanssa tai välittömästi sen yhteyteen, kuitenkin niin, että välimuistiin päästään käsiksi ilman muistiväylän käyttöä. Jos siis tieto löytyy välimuistista, se löytyy sekä nopeasti että rasittamatta muistiväylää. Vä imuisti ei näy mitenkään suorittavalle ohjelmalle, vaan sen käyttö on automaattista siten, että jotkut keskusmuistin viimeksi käytetyistä alueista ovat kopioituna välimuistiin. Käskyn suorituksen alkaessa ei tiedetä, onko käskyn viittaama muistialue välimuistissa vai ei.
Välimuistin (cache memory) perusidea Ongelma: keskusmuisti on aika kaukana suorittimesta Ratkaisu: pidetään osa keskusmuistin tiedoista erikoislaitteistossa (välimuistissa) lähellä suoritinta suorittimella tai ainakin suorittimen puolella väylää välimuisti ssa pidetään kopi aita viime aikoina vi itatui sta keskusmuistin alueista cpu Jokainen muistiviite on nyt seuraavanlainen regs:l 78 varmi sta, että tieto on välimuisti ssa? MMU: cache: jos tietoa ei löydy väli muisti sta, hae se sinne 11 34 55 78 991 suoriti n odottaa muisti naudan ajan 1 tee viittaus välimuisti ssa olevaan tietoon ( data tai käsky) 1 bus (talleta välimuisti ssa oleva muutettu tieto muistiin) mem 1 1 ~ konekäskyn konekäskyhän haetaan muistista ja se voi vielä su'oritusaikana tehdä lisääkin muistiviitteitä. Jokainen muistiviite tapc.htuu nyt välimuistin kautta. Muistista luku on vielä yksinkertaista, koska tieto kopioidaan välimuistiin aina kun siihen on kohdistunut lukuoperaatio ja viitattu alue ei ennestään ole välimuistissa. Yleensä välimuistiin haetaan aina muutama sana kerrallaan, koska järjestelmä toimii näin tehokkaammin. Kirjoitukset ovat ongelmallisi3, koska tieto pitää ehkä ensin hakea keskusmuistista ja joskus myös kirjoittaa sinne.
Välimuistin piirteitä Tuntumaton suorittimene jos viitattu tieto ei ole saatavilla, niin suoritin odottaa muistinoudon ajan hyperthread suoritin: suorita toista ohjelmaa muistiviitteen odotuksen aikana Toteutettu usein nopeammalla teknologialla Toteutettu usein samalla lastulla kuin suoritin Ei täysin ratkaise nopeusero-ongelmaa rekisteri X, välimuisti 2X, muisti 1 OX monen tasoisia välimuisteja: rekisteri X, välimuisti Ttk-91 koneessa ei ole välimuistia Lisää tietoa muilta kursseilta Tietokoneen rakenne ja Käyttöjärjestelmät thread-level-parallelism on each processor resulting in increased utilizati Jn of processor execution resources. As a result, resource utilization yields higher processing throughput. Hyper-Threading Technology is a form of simultaneous multi-threading technology (SMT) where multiple threads of software applications can be run simultaneously on one processor. This is achieved by d u pli ca tin ~ the architectural state on each processor, while sharing one set of processor execution resources. Hyper-Threading Technology also delivers faster response times for multi-tasking workload environments. By allowing the processo VälimL isti on välimuistista lainkaan. Riittää, kun useimmiten keskusmuisti tuntuu toimivan huomattavasti nopeammin, kuin mitä voisi tapahtua ilman välimuistia. On myös mukavaa ohjelmoijien näkökulmasta, että heidän ei tarvitse ohjelmia suunnitellessaan pohtia, mikä tieto pidetää1 välimuistissa ja milloin. Suoritin voi myös hyödyntää muistiviitteen Odotteluajan muiden käskyjen ja jopa muiden ohjelmien laskennassa, kuten esimerkiksi lntelin Pentium 4 Hyperthread -suorittimet tekevät.
Välimuistin piirteitä Tuntumaton suorittimene jos viitattu tieto ei ole saatavilla, niin suoritin odottaa muistinoudon ajan hyperthread suoritin: suorita toista ohjelmaa muistiviitteen odotuksen aikana Toteutettu usein nopeammalla teknologialla kuin keskusmuisti Toteutettu usein samalla lastulla kuin suoritin Ei täysin ratkaise nopeusero-ongelmaa rekisteri X, välimuisti 2X, muisti 1 OX monen tasoisia välimuisteja: rekisteri X, välimuisti 2X, 4X, 6X, muisti 1 OX Ttk-91 koneessa ei ole välimuistia Lisää tietoa muilta kursseilta Tietokoneen rakenne ja Käyttöjärjestelmät Väl1imuistiEm nopeus tulee ne ovat (b) ne ovat ne on toteutettu nopeammalla teknologialla kuin keskusmuisti. Useissa tapauksissa välimuisti on toteutettu suoraan samalle lastulle suorittimen kanssa, jolloin niiden toteutusteknologia on tietenkin samanlainen kuin suorittimenkin.
Välimuistin piirteitä Tuntumaton suorittimene jos viitattu ti eto ei ole saatavilla, niin suoritin odottaa muistinoudon ajan hyperthread suoritin: suorita toista ohjelmaa mui stiviitteen odotuksen aikana Toteutettu usein nopeammalla teknologialla kuin keskusmuisti Toteutettu usein samalla lastulla kuin suoritin Ei täysin ratkaise nopeusero-ongelmaa rekisteri X, välimuisti 2X, muisti 1 OX monen tasoisia välimuisteja: rekisteri X, välimuisti 2X, 4X, 6X, muisti 1 OX Ttk-91 koneessa ei ole välimuistia Lisää tietoa muilta kursseilta Tietokoneen rakenne ja Käyttöjärjestelmät lntel XEON MP L 1 välimuisti 8 KB L2 välimuisti 51 2 KB L3 välimuisti 1024 KB Suorittimen yhteydessä oleva välimuisti ei täysin ratkaise eri laitteistojen nopeuseroista aiheutuvia ongelmia. Jos välimuistin ja keskusmuistin välinen nopeusero on edelleen 5-kertainen, niin se voi olla liikaa. Tämä ongelma taa.s on ratkaistu rakentamalla useamman tasoisia välimuisteja
Välimuistin piirteitä Tuntumaton suorittimene jos viitattu ti eto ei ole saatavilla, niin suoritin odottaa muistinoudon ajan hyperthread suoritin: suorita toista ohjelmaa muistiviitteen odotuksen aikana Toteutettu usein nopeammalla teknologialla kuin keskusmuisti Toteutettu usein samalla lastulla kuin suoritin Ei täysin ratkaise nopeusero-ongelmaa rekisteri X, välimuisti 2X, muisti 1 OX monen tasoisia välimuisteja: rekisteri X, välimuisti 2X, 4X, 6X, muisti 1 OX Ttk-91 koneessa ei ole välimuistia Lisää tietoa muilta kursseilta Tietokoneen rakenne ja Käyttöjärjestelmät Jle sen myös ttk-91'een. Toisaalta, välimuistin tarkempi tuntemus ei kuulu tälle kurssille. Välimuistin toimintaan ja tarkempaan rakenteeseen tutustutaan Tietokoneen rakenne -kurssilla ja välimuistin hyödyntämistä ja huomioonottamista samanaikaisuuden hallinnassa käsitellään lisää käyttöjärjestelmäkursseilla.
Muistin toteutus Eri teknologioita eri tasoisiin muisteihin suoritti men rekisteri väli muisti, tasot L 1, L2, L3 keskusmuisti RAM eli Random-Access semiconductor Memory anna osoite ja lueiki rjoita signaali mistä vain voi lukeaiki rjoittaa samas.sa ajassa häviävää muistia: tieto pyyhkiytyy virran katketessa kaikki nykyiset muistit ovar "random access" (volati Ie memory) Tietokonejärjestelmässä on siis monentasoisia muisteja. Huomaa, että myös suorittimen rekisteri! ovat muistia, vaikka ne onkin nimetty vähän erikoisella tavalla. Myös välimuistit ovat muistia, vaikka niihin ohjelmissa ei voi suoraan osoitteella viitata. Yleensä käsitteellä muisti tarkoitetaan kuitenkin keskusmuistia, mutta älkää unohtako näitä muita, vaikka ne onkin nimetty eri tavalla. Näiden eri tasoisten muistien toteutuksessa käytetään erilaisia toteutusteknologioita, joiden avulla kunkin tason muistin koko ja nopeus saadaan sille tasolle sopivaksi.
Muistin toteutus Eri teknologioita eri tasoisiin muisteihin suoritti men rekisteri väli muisti, tasot L 1, L2, L3 keskusmuisti RAM eli Random-Access semiconductor Memory anna osoite ja lueiki rjoita signaali mistä vain voi lukeaiki rjoittaa samassa ajassa häviävää muistia: tieto pyyhki ytyy virran katketessa kaikki nykyiset muistit ovar "random access" (volati Ie memory) on random access "'" '"" " ' sitä. että jokainen muistipaikka on aina yhtä nopeasti saavutettavissa. Joskus kauan aikaa tietokoneiden varhaishistoriassa oli myös muistiteknologioita, joissa tietyt muistiosoitteet olivat jollakin hetkellä 'lähempänä' eli nopeammin saavutettavissa kuin muut. Nimi random access juontaa noilta ajoilta ja sitä käytetään nvt yleisnimenä keskusmuistille. Nykyisin käytössä olevan muistiteknologian huonona puolena on RAM-muistin häviävyys eli tietojen haipuvuus unholaan virran katkettua.
RAM muistin kaksi toteutusteknolo iaa DRAM eli dynaaminen RAM halvempi, hitaampi tietoja pitää virkistää vähän väliä (esim. joka 2 ms) tavallinen keskusmuisti useimmissa koneissa nyt toteutettu kondensaattoreilla, joiden varaus "vuotaa" SRAM eli staattinen RAM kalliimpi (esim. 1 Ox), nopeampi (esim. 1 Ox) ei vaadi tietojen virkistämistä toteutettu samalla teknologialla kuin suoritti men logiikka vi'i limuisti u sp. i mm i ss~ ko n P. i ss~ (s~m~ t~ i P.ri l ~stu suorittimp.n k~ n ss~) keskusmuisti superkonei ssa ja hi gh-end palveli mi ssa SDRAM, DDR SDRAM, FPM DRAM, EDO DRAM, BEDO DRAM, EDRAM, Video-RAM, Oireet Rambus DRAM, SLDRAM, ECC DRAM,... eri lai si a opti moiluja ratkaisuja edellisistä nopeus, kai stanleveys, koko, vi rheentarki stus, hinta? Tavallisen muistin toteutusteknologioita on kahta perustyyppiä: DRAM ja SRAM. DRAM on vähän vanhempaa teknologiaa, mutta edelleen halvempaa ja hitaampa< kuin SRAM. DRAM'in huonona puolena on sen toteutusmenetelmä kondensaattoreilla, joissa oleva< varausta pitää aika ajoin virkistää tiedon säilymiseksi. DRAM'in hyvänä puolena on halpuus, minkä vuoksi se on tällä hetkellä yleisin keskusmuistin toteutusteknologia.
RAM muistin kaksi toteutusteknologiaa DRAM eli dynaaminen RAM halvempi, hitaampi tietoja pitää virkistää vähän väliä (esim. joka 2 ms) tavallinen keskusmuisti useimmissa koneissa nyt toteutettu kondensaattoreilla, joiden varaus "vuotaa" SRAM eli staattinen RAM kalliimpi (esim. 1 Ox), nopeampi (esim. 1 Ox) ei vaadi tietojen virkistämistä toteutettu samalla teknologialla kuin suoritti men logiikka välimuisti useimmissa koneissa (sama tai eri lastu suoritti men kanssa) keskusmuisti superkonei ssa ja hi gh-end palveli mi ssa SDRAM, DDR SDRAM, FPM DRAM, EDO DRAM, BEDO DRAM, EDRAM, Video-RAM, Oireet Rambus DRAM, SLDRAM, ECC DRAM,... eri lai si a opti moiluja ratkaisuja edellisistä nopeus, kai stanleveys, koko, vi rheentarki stus, hinta? Staattinen RAM toteutetaan samalla teknologialla kuin suorittimen logiikka. Tähän tutustutaan vähän (mutta ei paljon) tarkemmin jatkokurssilla Tietokoneen rakenne. SRAM on kalliimpi, mutta nopeampi teknologia, joten se sopii hyvin tavallisten suorittimien välimuistin toteutukseen. Välimuistin kannalta on myös mukavaa, että SRAM voidaan toteuttaa samalla lastulla samalla teknologialla kuin suoritinkin. Suurta nopeutta vaativissa koneissa myös koko keskusmuisti voi olla toteutettu SRAM'illa vaikka silloinkin se on suuren koonsa vuoksi hitaampaa kuin samalla teknologialla toteutettu pienempi välimuisti.
RAM muistin kaksi toteutusteknologiaa DRAM eli dynaaminen RAM halvempi, hitaampi tietoja pitää virkistää vähän väliä (esim. joka 2 ms) tavallinen keskusmuisti useimmissa koneissa nyt toteutettu kondensaattoreilla, joiden varaus "vuotaa" SRAM eli staattinen RAM kalliimpi (esim. 1 Ox), nopeampi (esim. 1 Ox) ei vaadi tietojen virkistämistä toteutettu samalla teknologialla kuin suoritti men logi i kk3. välimuisti useimmissa koneissa (sama tai eri lastu suoritti men kanssa) keskusmuisti superkonei ssa ja hi gh-end palveli mi ssa SDRAM, DDR SDRAM, FPM DRAM, EDO DRAM, BEDO DRAM, EDRAM, Video-RAM, Oireet Rambus DRAM, SLDRAM, ECC DRAM,... eri lai si a opti moiluja ratkaisuja edellisistä nopeus, kai stanleveys, koko, vi rheentarki stus, hinta? mutta nämä kuulu tälle kurssille. Mielenkiintoinen yksittäistapaus on jossa DRAM on ensin nopeutettu perustoteutuksesta ja sitten siihen on liitetty oma erikoismuistiväylän ohj3in, minkä avulla useasta DRAM-palikasta koottu kokonaisujs saadaan huomattavasti perustoteutusta tehokkaammaksi. Rambusin käyt:ö ei ole kovin paljoa yleistynyt, mutta Sony on lisenssoinut sen uudelle PlayStation-3 suorittimelleen, jossa pelitoteutukset tarvitsevat hyvin nopeata ja laajakaistaista muistia.
ROM teknologia ROM eli Read-Only memory Haipumaton, tieto säilyy ilman sähkövirtaa ROM on myös RAM kaikki muistipaikat yhtä 'lähellä' yleensä hitaampi kuin RAM non-volati Ie Järjestelmän alustustiedot (BIOS) alusta väylä ja boot-kelpoiset laitteet (kovalevy, CO, DVD,... ) käy laitteet läpi, kunnes jostakin löytyy boot-lohko järjestelmän alustus boot-lohkon avulla koodi Alkuaan: järjestelmän alustus, kirjoitus kerran, luetaan usein Sitten: järjestelmän alustus, kirjoitus harvoin, luetaan usein Nyt: eri käyttötarkoituksia, kirjoitus ehkä aika usein, luku ehkä aika usein vähän kallis ja vähän hidas, mutta hai pumaton muisti Flash koodi ja data järjestelmän alustus, di gi kamerat, mui stiti kut, yleinen tiedon henkilökohtainen tallennus RAM-rnub>titElkn oio!jian suurena puutteena on katkettua, ongelma. alustaa tietokone muistissa olevasta ohjelmasta, kun muisti oli tyhjä virran kytkemisen jälkeen. Ongelman ratkaisuna oli pysyväismuisti, ROM, johon jollakin tavalla voidaan tallettaa tietoa, joka säilyy siellä ilman sähkövirtaa. Nimestään huolimatta myös ROM-muistit ovat hajasaantimuistia, mutta ne olivat alkuaan ja ne ovat edelleenkin hitaampia kuin tavallinen RAM. Tästä syystä useissa tapauksissa ohjelmakoodi on vähän turhan hidasta lukea ROM-muistista, vaan sen sijaan on usein edullista kopioida se ensin keskusmuistiin ja suorittaa sieltä.
ROM teknologia ROM eli Read-Only memory Haipumaton, tieto säilyy ilman sähkövirtaa ROM on myös RAM kaikki muistipaikat yhtä 'lähellä' yleensä hitaampi kuin RAM non-volati Ie Järjestelmän alustustiedot (BIOS) alusta väylä ja boot-kelpoiset laitteet (kovalevy, CO, DVD,... ) käy laitteet läpi, kunnes jostakin löytyy boot-lohko järjestelmän alustus boot-lohkon avulla koodi Alkuaan: järjestelmän alustus, kirjoitus kerran, luetaan usein Sitten: järjestelmän alustus, kirjoitus harvoin, luetaan usein Nyt: eri käyttötarkoituksia, kirjoitus ehkä aika usein, luku ehkä aika usein vähän kallis ja vähän hidas, mutta hai pumaton muisti Flash koodi ja da:a järjestelmän alustus, di gi kamerat, mui stiti kut, yleinen tiedon henkilökohtainen tallennus ROM-muistin alkuperäinen käyttö oli nimenomaan järjestelmän alustamisessa. Alustuskoodissa ensin annetaan alkuaivot usealle systeemimuuttujalle ja alustelaan kaikki sellaiset laitteet, joilta järjestelmän voisi bootata. Seuraavaksi boottikelpoiset laitteet käydään läpi ennaltamääräty ssä järjestyksessä ja valitaan ensimmäinen laite, jolta löytyy suorituskelpoinen boottikoodi. Alustuksen voi myös keskeyttää, usein jollakin sovitulla näppäimellä, ja antaa käyttäjän myös muuttaa tätä alustuskoodia tai systeemiparametrien aivoja. Tätä ei tietenkään kannata tehdä, ellei tunne järjestelmän toimintaa aika hyvin.
ROM teknologia ROM eli Read-Only memory Haipumaton, tieto säilyy ilman sähkövirtaa ROM on myös RAM kaikki muistipaikat yhtä 'lähellä' yleensä hitaampi kuin RAM non-volati Ie Järjestelmän alustustiedot (BIOS) alusta väylä ja boot-ke'poiset laitteet (kovalevy, CO, DVD,... ) käy laitteet läpi, kunnes jostakin löytyy boot-lohko järjestelmän alustus boot-lohkon avulla koodi Alkuaan: järjestelmän alustus, kirjoitus kerran, luetaan usein Sitten: järjestelmän alustus, kirjoitus harvoin, luetaan usein Nyt: eri käyttötarkoituksia, kirjoitus ehkä aika usein, luku ehkä aika usein vahan kallis ja vahan hidas, mutta hai pumaton muisti F l i:!~ l 1 kuuui ji:l l.li:!li:! järjestelmän alustus, digi kamerat, mui stiti kut, yleinen tiedon henkilökohtainen tallennus Alkuaan ROM-muistit olivat vain er koistarkoituksiin suunniteltuja muistipiirejä, joita hintansa ja kirjoitusoperaation vaikeuden vuoksi käytettiin nimenomaan alustamaan laitteistoja. Niissä olevat ohjelmat ja data olivat staattisia. Nykyisin ROIJI-muistit eivät ole oikeastaan lainkaan enää Read-Only tyyppisiä muisteja, vaan pikemminkin yleisiä tietonsa lman sähkövirtaa säilyttäviä muistipiirejä, joiden eräs käyttöalue on tietokoneiden alustuskoodin ja -tietojen säilytys. ROM-muisti nimenäkin alkaa jo jäädä unholaan sen uusimman toteutusteknologian, Flash-muistin, nimen jalkoihin. Ne ovat kuitenkin edelleen hitaampia ja vähän kalliimpia kuin RAM.
ROIM muistiteknologian kehitys Mask-ROM kirjoitus lastun valmistuksen yhteydessä PROM eli Programmable ROM kirjoitus tyhjälle lastulle jälkikäteen "polttamalla" ("burn") erikoislaitteistolla EPROM eli Erasable PROM koko lastu voidaan nollata (tyhjentää) UV -sätei lyllä eri koi slaittei stolla lastun uudelleenkäyttö mahdollista EEPROM eli Electronically Erasable PROM tiedot voidaan pyyhkiä tavukohtai sesti suurella jännitteellä eri koi slaittei stolla Flash eli Flash EEPROM tietoja voidaan pyyhkiä normaalijännitteellä konekäskyillä lastun ollessa paikallaan nopeampi kuin tavallinen EEPROM Ensimmäiset ROM'it olivat staattisia. Niihin talletettiin ohjelma ja data lastun valmistushetkellä, samalla tavalla kuin suorittimen toteutuslogiikkakin. Jos ohjelmassa tai datassa oli virhe, niin sitä ei voinut mitenkään korjata. Ainoa mahdollisuus oli tilata uusi lastu valmistajalta, mikä oli aika kömpelöä. Lisäksi kaikki lastulle menevä ohjelma ja data piti etukäteen antaa lastutehtaalle, mikä ei myöskään ollut aina lastujen käyttäjäyrityksille mieleen. Lastulle talletettavien ohjelmistojen kehitys oli tarkkaa puuhaa.
ROM muistiteknologian kehitys Mask-ROM kirjoitus lastun valmistuksen yhteydessä PROM eli Programmable ROM kirjoitus tyhjälle lastulle jälkikäteen "polttamalla" ("burn") erikoislaitteistolla EPROM eli Erasable PROM koko lastu voidaan nollata (tyhjentää) UV -sätei lyllä eri koi lastun uudelleenkäyttö mahdollista EEPROM eli Electronically Erasable PROM tiedot voidaan pyyhkiä tavukohtai sesti suurella jännitteellä <>ri ~'" Flash eli Flash EEPROM tiet oja voidaan pyyhkiä normaalijännitteellä konekäskyi llä lastun nopeampi kuin tavallinen EEPROM Copyright 1982 Psion Ltd parannus Lastut ostaa. omassa pajassa ohjelmoida. Jos ensimmäinen versio oli virheellinen, kaikkia samalla kertaa tilattuja lastuja ei tafvinnut heittää roskiin. Lastut olivat kuitenkin edelleen kertakäyttöisiä. Nyt kuitenkin ensimmäisen kerran niitä voitiin räätälöidä eri tarkoituksiin suht'koht helposti. Tässä vaiheessa ROM-muisteja alettiin jo käyttää pelien levitykseen erillisillä ROM-muistikorteilla.
ROM muistiteknologian kehitys Mask-ROM kirjoitus lastun valmistuksen yhteydessä PROM eli Programmable ROM Altair 88-PMC PROM Memory Board kirjoitus tyhjälle lastulle jälkikäteen "polttamalla" ("burn") erikoislaitteistolla EPROM eli Erasable PROM 1971, Dov Frohman, lntel1701 koko lastu voidaan nollata (tyhjentää) UV -sätei lyllä eri koi slaittei stolla lastun uudelleenkäyttö mahdollista "Read-Mostly Memory" keksitty EEPROM eli Electronically Erasable PROM tiedot voidaan pyyhkiä tavukohtai sesti suurella jännitteellä eri koi slaittei stolla Flash eli Flash EEPROM tiet oja voidaan pyyhkiä normaalijännitteellä konekäskyi llä lastun ollessa pai kai aan nopeampi kuin tavallinen EEPROM Seuraava kehitysvaihe oli uusiokäyttöinen PROM eli EPROM. Lastu voitiin irroittaa piirilevyltä ja sijoit:aa ; (pienikokoiseen) ultraviolettiuuniin. jossa se tietyn aallonpituuden esim. 20 minuutin säteilytyksessä nollaantui. minkä jälkeen siihen voitiin 'polttaa' kopioimaila tavallisesta muistista uusi ohjelma ja/tai data. Tämä oli jälleen merkittävä askel käyttäjäystävällisyydessä, koska nyt ROM-muistin ohjelmointi oli käytännössä kenen tahansa tehtävissä. Altairilla oli esimerkiksi PROM-piirien 'polttamista' varten piirilevy, joka voitiin sijoittaa Altair-mikrotietokoneeseen.
ROM muistiteknologian kehitys Mask-ROM kirjoitus lastun valmistuksen yhteydessä Altair 88-PMC8 8K PROM Memory Board PROM eli Programmable ROM kirjoitus tyhjälle lastulle jälkikäteen "polttamalla" ("burn") erikoislaitteistolla EPROM eli Erasable PROM koko lastu voidaan nollata (tyhjentää) UV -sätei lyllä eri koi slaittei stolla lastun uudelleenkäyttö mahdollista EEPROM eli Electronically Erasable PROM 1980, lntel 2816 tiedot voidaan pyyhkiä tavukohtai sesti suurella jännitteellä eri koi slaittei stolla Flash eli Flash EEPROM tietoja voidaan pyyhkiä normaalijännitteellä konekäskyillä lastun ollessa paikallaan nopeampi kuin tavallinen EEPROM Tästä vielä askel parempaan oli, kun lastua ei tarvinnut kokonaan tyhjentää, vaan siitä voitiin vain korj 3ta virheellinen osa. Tämä oli toivottu käyttötapa esimerkiksi silloin, kun lastulla oleva tietty järjestelmän alustustieto haluttiin vain päiviitää koskematta ohjelmistoon tai muuhun dataan. Myös tällaista käyttöä varten keh tettiin myös mikrotietokoneisiin sopivia laitteistoja.
ROM muistiteknologian kehitys Mask-ROM kirjoitus lastun valmistuksen yhteydessä PROM eli Programmable ROM kirjoitus tyhjälle lastulle jälkikäteen "polttamalla" ("burn") erikoislaitteistolla EPROM eli Erasable PROM koko lastu voidaan nollata (tyhjentää) UV -sätei lyllä eri koi slaittei stolla lastun uudelleenkäyttö mahdollista EEPROM eli Electronically Erasable PROM tiedot voidaan pyyhkiä tavukohtai sesti suurella jännitteellä eri koi slaittei stolla Flash eli Flash EEPROM 1984, F uji o Masuoka, Toshiba tietoja voidaan pyyhkiä normaalijännitteellä konekäskyillä lastun ollessa paikallaan kuin tavallinen EEPROM nykyään tavallisen tavoin. Flash-muistia voidaan lukea ja kirjoittaa tavallisen muistin tapaan, tosin isompi lohko yhdellä välähdyksellä eli Flash'llä. Yksittäisiä tavuja ei voida tyhjentää, mutta käytännössä tästä ei ole haittaa. Muu tyhjennettävällä lohkolla oleva data luetaan ensi tavalliseen muistiin ja kirjoitetaan sitten tyhjennyksen jälkeen takaisin. Flash-muisteja k~yt etää n nykyisin esimerkiksi digikameroiden muisteina ja muistitikuissa.
Tiedon tarkistus ja muisti Ohjelman esitysmuodot Konekäskyt ja rakenteellinen tieto Tiedon muuttumattomuus Pariteettibitti Hamming-koodi CRC-koodi ja laitteiden monistaminen Muisti Välimuisti, tavallinen muisti Olemme nyt käyneet läpi kaiken mahdollisen tiedon esity smuodon laitteistossa. On merkittävää muistaa, että suoritin tunnistaa vain muutaman tietotyypin ja loput käsitellään kuvaamalla ne ensin näihin muutamaan toteutettuun tietotyyppiin. Teillä pitäisi olla selkeä mielikuva tiedon muuttumattomuuden suojausmenetelmistä. Olemme myös käsitelleet tietokoneen muistin erilaisia toteutustapoja sekä perusidean välimuistin toimintatavasta keskusmuistin käyttöä nopeuttavana laitteistona. Muistipiirien toteutusmekanismeista kävimme läpi kolme eri nopeuksista toteutusta, jotka ovat hitaammasta nopeampaan flash, DRAM ja SRAM.