Tietokoneen toiminta, avoin yliopisto, kesä -99. Laskuharjoitus 2 (pe 6.8.), esimerkkivastaukset ------------------------------------------------ 1. Vastaa lyhyesti seuraaviin kysymyksiin. a) Mihin keskeytyksiä käytetään? Katso s. 39 ja s. 109. Keskeytysmekanismin avulla prosessori saadaan suorittamaan käyttöjärjestelmän koodia muun muassa jonkin I/O-laitteen tapahtuman seurauksena (esim. näppäimen painaminen, laiteohjaimen siirtotehtävän valmistuminen) ja moniajoympäristössä suoritusvuorossa olevan prosessin aikaviipaleen täyttyessä. b) Mikä on kellotaajuuden merkitys tietokoneen toiminnalle? Kellotaajuus kertoo, kuinka monta kellojaksoa kello tuottaa sekunnissa. Kellojakso on pienin aika, jonka kuluessa prosessorin sisäisessä tilassa voi tapahtua muutoksia. (s. 33) Uudemmat prosessorit pystyvät lisääntyneen rinnakkaisuuden ansiosta suorittamaan 1 - 4 käskyä kellojaksoa kohden. (s. 40) c) Mihin käytetään rekistereitä BASE ja LIMIT? Muistinhallintayksikkö MMU muuttaa ohjelman sisäisen osoitteen fyysiseksi muistiosoitteeksi kantarekisterin BASE ja rajarekisterin LIMIT avulla. Käännösvaiheessahan ei tiedetä, minne päin keskusmuistia ohjelma tulee sijoittumaan eri ajokerroilla. Esimerkkikoneessamme BASE sisältää prosessille varatun yhtenäisen muistialueen (siis ohjelman ensimmäisen käskyn) osoitteen ja LIMIT prosessille varatun muistialueen pituuden (ks. s. 121). d) Mikä on välimuisti? Miksi sitä käytetään? Missä sitä käytetään? Katso s. 37. e) Mihin tarvitaan laiteohjainta ja laiteajuria? Mitä eroa niillä on? Katso s. 38 ja s. 148. Laiteohjaimet ovat laitteistoa ja laiteajurit laitteiden todelliseen käyttöön liittyvää ohjelmistoa. 2. a) Esitä luku 47.875 bittitasolla IEEE:n yksinkertaisen tarkkuuden liukulukuna. Yksinkertaisen tarkkuuden nollataso on 127, ja S on suoraan etumerkki. 47.875 = 00101111.111 = 1.01111111 * 2^5 10 2 2 = 1.01111111 * 2^(132-127) = 1.01111111 * 2^(10000100 -127) 2 2 2 S E M 0 10000100 01111111 00000000 00000000 b) Muunna seuraavat yksinkertaisen tarkkuuden liukuluvut kymmenjärjestelmän luvuiksi: 0 10000000 11000000000000000000000 Etumerkki: + Eksponentti: 10000000 = 128 2 10 128-127 = 1 ==> 2^1 Mantissa ja piilobitti: 1.11 2 ==> 1.11 * 2^1 = 11.1 = 1 * 2^1 + 1 * 2^0 + 1 * 2^-1 = 3.5 2 2 ===10 0 10000010 10010000000000000000000 Etumerkki: + Eksponentti: 10000010 = 130 2 10 130-127 = 3 ==> 2^3 Mantissa ja piilobitti: 1.1001 2 ==> 1.1001 * 2^3 = 1100.1 2 2 = 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0 + 1 * 2^-1 = 12.5 ====10 3. a) Kirjainmerkkien A ja B ASCII-koodit ovat kymmenjärjestelmässä 65 ja 66. Esitä merkkijono AB biteillä Hamming-koodia käyttäen. 8 bitin jonoina A: 01000001 B: 01000010 ja yhdistettynä peräkkäin: 0100000101000010 Lisätään paikkoihin 1, 2, 4, 8 ja 16 tila pariteettibitille. 0 100 0001010 00010 **-*---*-------*----- Määrätään pariteettibiteille arvo käyttäen parillista pariteettia. 110010000001010100010 **-*---*-------*----- . ===================== Vrt. monisteen sivun 29 esimerkki. b) Kokeile havaitsetko yhden bitin muuttumisen? Jos oletetaan, että vain yksi (mikä tahansa) bitti on muuttunut, tuon bitin sijainti saadaan selville laskemalla virheellisten pariteettibittien järjestysnumerot yhteen. Mikäli a-kohdan bittijonossa vaikkapa 11. bitti on vääristynyt ykköseksi, huomataan että tarkistusbitit 1, 2 ja 8 eivät täsmää: 110010000011010100010 **-*---*--!----*----- 123456789012345678901 <-- (paikka) bitti 1 tarkistaa bitit 1,3,5,7,9,11,13,15,17,19,21 ==> EI TÄSMÄÄ bitti 2 tarkistaa bitit 2,3,6,7,10,11,14,15,18,19 ==> EI TÄSMÄÄ bitti 4 tarkistaa bitit 4,5,6,7,12,13,14,15,20,21 ==> täsmää bitti 8 tarkistaa bitit 8,9,10,11,12,13,14,15 ==> EI TÄSMÄÄ (bitti 16 ei enää tarkista vikaantunutta aluetta) Entä miten käy, jos kaksi bittiä muuttuu? Riippuu jonkin verran tilanteesta. Sanottakoon, että yllä myös 9. bitti muuttuu. Nyt ainoastaan tarkistusbitti 2 ei täsmää, muissa virhe ikään kuin kumoutuu. (Bitti 4 täsmää edelleenkin.) Vastaanottaja havaitsee kyllä jossakin olevan vikaa, mutta jos se yrittäisi korjata virheen, tuloksena ei olisi enää alkuperäinen bittijono. [Hieman lisätietoa kiinnostuneille löytyy esim. WWW-osoitteesta http://www.cs.rutgers.edu/~levy/POCA/Chapter02.html#Section2.4] 4. Kuvaa prosessorin rekistereiden tasolla, miten käskynouto tehdään. Ohjausyksikkö hakee käskyjä käskyosoittimen osoittamasta paikasta. Katso monisteen sivut 40-41. Miksi ohjausyksikkö kasvattaa jokaisen käskynoudon yhteydessä käskyosoitinta? Mitä tapahtuisi, jos tätä ei tehtäisi? Noudettaisiin aina samassa muistipaikassa sijaitseva käsky, ja ohjelma jäisi pyörimään paikalleen. Koska oletetaan, että käskyt sijaitsevat keskusmuistissa peräkkäin, käskylaskurin arvoa kasvatetaan jokaisen käskyn noudon jälkeen käskyn pituuden verran. Jos noudettu käsky oli esim. hyppykäsky, käskylaskurin arvoa muutetaan uudelleen käskyä suoritettaessa. Millä edellytyksillä kasvatus voitaisiin tehdä vasta käskyn suorituksen jälkeen? Edut/haitat? Muun muassa hyppykäskyjen kanssa kohdataan ongelmia; suorituksen jälkeinen käskylaskurin kasvattamisen aiheuttama sivuvaikutus tulee ottaa huomioon. Koneissa, joissa käskyt ovat erimittaisia, käskylaskuria voidaan kasvattaa vasta käskyn tarkastelun jälkeen, kun tiedetään käskyn pituus. 5. Kirjoita TTK-91:n symbolisella konekielellä ohjelmapätkä, jossa verrataan kahden muistipaikan EKA ja TOKA sisältöä ja sijoitetaan R1:een sen muistipaikan osoite, jonka sisältö on suurempi. Jos sisällöt ovat yhtä suuret, sijoitetaan R1:een nolla. Tehtävän voi ratkaista monella hieman eri tavalla sekä vertailun että vertailua seuraavien hyppyjen osalta. Olennaista on, että vain kyseessä olevaan tapaukseen (pienempi/suurempi/samat) liittyvät toimenpiteet jäävät voimaan. *** yksi tapa *** ... ; (muuta koodia) LOAD R1,EKA ; haetaan R1:een muistipaikan EKA sisältö LOAD R2,TOKA ; haetaan R2:een muistipaikan TOKA sisältö COMP R1,R2 ; suoritetaan vertailu, tulos tilarekisteriin JGRE ekan ; R1 > R2 JLES tokan ; R1 < R2 ; muutoin R1==R2, jatketaan suoraan LOAD R1,=0 ; sijoitetaan R1:een vakioarvo nolla JUMP jatkuu ; hyppy toteutumattomien vaihtoehtojen yli ekan LOAD R1,=EKA ; sijoitetaan R1:een muistipaikan EKA osoite JUMP jatkuu tokan LOAD R1,=TOKA ; sijoitetaan R1:een muistipaikan TOKA osoite ; seuraavaan käskyyn ei tarvitse hypätä jatkuu ... ; (muuta koodia) *** toinen tapa *** ... ; (muuta koodia) LOAD R1,EKA ; haetaan R1:een muistipaikan EKA sisältö SUB R2,TOKA ; lasketaan suoraan erotus TOKAn sisältöön JPOS R1,ekan ; rekisterissä positiivinen arvo eli R1 > R2 JNEG R1,tokan ; rekisterissä negatiivinen arvo eli R1 < R2 ; muutoin R1==R2, jatketaan suoraan LOAD R1,=0 ; sijoitetaan R1:een vakioarvo nolla JUMP jatkuu ; hyppy toteutumattomien vaihtoehtojen yli ekan LOAD R1,=EKA ; sijoitetaan R1:een muistipaikan EKA osoite JUMP jatkuu tokan LOAD R1,=TOKA ; sijoitetaan R1:een muistipaikan TOKA osoite ; seuraavaan käskyyn ei tarvitse hypätä jatkuu ... ; (muuta koodia) *** kolmaskin tapa (vähäsen lyhyempi, oletetaan EKA suuremmaksi) *** ... ; (muuta koodia) LOAD R1,=EKA ; sijoitetaan R1:een muistipaikan EKA osoite LOAD R2,TOKA ; haetaan R2:een muistipaikan TOKA sisältö COMP R2,@R1 ; suoritetaan vertailu, tulos tilarekisteriin JLES jatkuu ; TOKA < EKA: kaikki OK, voidaan lopettaa JGRE toisin ; TOKA > EKA ; muutoin R1==R2, jatketaan suoraan LOAD R1,=0 ; sijoitetaan R1:een vakioarvo nolla JUMP jatkuu toisin LOAD R1,=TOKA ; sijoitetaan R1:een muistipaikan TOKA osoite ; seuraavaan käskyyn ei tarvitse hypätä jatkuu ... ; (muuta koodia) 6. a) Hae (mieluiten Internetistä) vastaukset seuraaviin kysymyksiin: Sisältääkö UNICODE-standardi japanilaiset Hiragana-kirjoitusmerkit? Esim. AltaVista-haku [+host:www.unicode.org +hiragana] --> http://www.unicode.org/unicode/standard/supported.html KYLLÄ. Entä länsimaiset nuotit? http://www.unicode.org/pending/pending.html Ei ainakaan vielä. b) USENET:in keskusteluryhmissä koottuihin FAQ-artikkeleihin (Frequently Asked Questions) on koottu vastauksia ryhmissä usein esitettyihin kysymyksiin. Mitä FAQ-artikkeleita on kirjoitettu ryhmähierarkiassa comp.sys.ibm.pc.hardware? (Ao. hierarkiaan kuuluu useita ryhmiä: comp.sys.ibm.pc.hardware.misc, comp.sys.ibm.pc.hardware.networking ym.) Unix-komento lynx news:comp.sys.ibm.pc.hardware.* esittää seuraavan luettelon: Newsgroups comp.sys.ibm.pc.hardware.cd-rom CD-ROM drives and interfaces for the PC. comp.sys.ibm.pc.hardware.chips Processor, cache, memory chips, etc. comp.sys.ibm.pc.hardware.comm Modems & communication cards for the PC. comp.sys.ibm.pc.hardware.misc Miscellaneous PC hardware topics. comp.sys.ibm.pc.hardware.networking Network hardware & equipment for the PC. comp.sys.ibm.pc.hardware.storage Hard drives & other PC storage devices. comp.sys.ibm.pc.hardware.systems Whole IBM PC computer & clone systems. comp.sys.ibm.pc.hardware.video Video cards & monitors for the PC. Kaikista hierarkian ryhmistä löytyy runsaasti FAQ-artikkeleita esim. AltaVistan haulla [+"comp.sys.ibm.pc.hardware" +FAQ]. Yksi linkkikokoelma on USENET FAQs, Pc Hardware FAQ osoitteessa http://www.cis.ohio-state.edu/hypertext/faq/usenet/ pc-hardware-faq/top.html .