581305-6 Tietokoneen toiminta, 4 op (2 ov), erilliskoe 18.8.2006   

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, henkilötunnus tai opiskelijanumero, kurssin nimi ja sivunumero.
  1. [15 p] Tiedon esitysmuodot
    1. [3 p] Oletetaan, että muistipaikkaan 0x124 (tavuosoite) on talletettu 0x12345 nelitavuisena kokonaislukuna. Anna muistipaikan 0x124 sisältö (i) Little Endian ja (ii) Big Endian talletusmuodossa. Selitä myös sanallisesti ero Big Endian ja Little Endian talletusmuotojen välillä.
    2. [3 p] Anna desimaaliluvut +18 ja -18 8-bittisessä etumerkkibitin sisältävässä heksadesimaaliesitysmuodossa
    3. [3 p] Anna desimaaliluvut +18 ja -18 8-bittisessä yhden komplementin heksadesimaaliesitysmuodossa
    4. [3 p] Mitä desimaalilukua 32-bittinen IEEE:n standardin mukainen bittiesitys 0xC1600000 tarkoittaa?
      (0x-etuliite tarkoittaa siis, että kyseessä on heksadesimaaliesitys)
    5. [3 p] Anna konkreettinen liukulukuesimerkki tilanteesta jossa X+Y = X, kun Y > 0. Perustele.

     
  2. [15 p] Konekäskyjen esitysmuoto ja suoritus.
    1. [3 p] Määrittele käsite "käskyjen suoritussykli". Mitkä ovat sen vaiheet? Piirrä kuva suoritussyklistä.
    2. [3 p] Millainen on ttk-91 koneen käskyrakenne ja mitä tietoja mihinkin kenttään talletetaan. Anna konekäskyn "ADD R4, R2" esitysmuoto muistissa käskyrakenteen mukaan yhtenä (heksadesimaalijärjestelmän) kokonaislukuna. (Operaation ADD operaatiokoodi on 17 desimaalilukuna).
    3. [3 p] Miten ttk-91 konekielessä ilmaistaan tilanne, jossa indeksirekisteriä ei käytetä lainkaan?
    4. [3 p] Miten ttk-91 konekielessä viitataan dataan, jonka osoite on tiedossa muistissa osoitinmuuttujan (esim. muuttuja ptrX) arvona?
    5. [3 p] Mitä suorittimella tapahtuu konekäskyä "ADD R4, R2" suoritettaessa suoritussyklin eri vaiheissa? Montako muistiviitettä tapahtuu, milloin ne tapahtuvat, mihin muistiosoitteeseen ne kohdistuvat ja ovatko ne ne luku- vai kirjoitusoperaatioita?

     
  3. [15 p] I/O:n toteutus. Käsitellään tässä käyttäjätason prosessia P, joka kirjoittaa 2000 sanan datasegmentin kovalevylle. Käytössä on suoraa I/O:ta (direct or programmed I/O) käyttävä toteutus.
    1. [3 p] Mitkä kaikki prosessit osallistuvat I/O:n toteuttamiseen? Missä laitteiston osassa kukin prosessi on (suorittamassa koodiaan)?
    2. [3 p] Mitä tarkoittaa käsite "muistiinkuvattu I/O" (memory-mapped I/O)? Mikä muu vaihtoehto I/O:n toteuttamiseen on olemassa?
    3. [3 p] Miten laiteohjain tietää, mitä sen pitää tehdä? Miten laiteajuri tietää, että laiteohjain on tehnyt sille annetun tehtävän? Miten sovellus P tietää, että sen pyytämä I/O on tehty?
    4. [3 p] Mitä kaikkea järjestelmässä tapahtuu prosessi-tasolla siitä hetkestä alkaen kun P aloittaa I/O:n, siihen hetkeen asti, kun P jatkaa suoritustaan I/O:n jälkeen?
    5. [3 p] Miten edellinen tilanne (kohta d) muuttuisi, jos käytössä olisikin epäsuora I/O (indirect I/O)?
  4. [15 p] Aliohjelmat ja funktiot. Funktio Keskiarvo(Arr, n) on kokonaislukuarvoinen funktio, joka palauttaa arvonaan n-alkioisen taulukon Arr alkioiden keskiarvon. Esimerkiksi, parametrina olisi 4-alkioisen taulukko {2, 4, 6, 8}, niin kyseinen funktio palauttaisi arvon 5, koska (2+4+6+8)/4 = 5.
    Parametri Arr on viiteparametri ja parametri n on kokonaislukuarvoinen arvoparametri. Globaalit muuttujat A, B ja C on määritelty ja alustettu pääohjelmatasolla.
    1. [5 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktiota Keskiarvo() käyttäen lasketaan globaalille muuttujalle Keskipalkka arvoksi globaalilla tasolla määritellyn 200-alkioisen taulukon Palkat keskiarvo.
    2. [10p] Toteuta ttk-91 koneen symbolisella konekielellä funktio Keskiarvo().

    HUOM: Funktiota Keskiarvo() siis ei tarvitse toteuttaa kohdassa a.
    Noudata suositusten mukaista aliohjelmien (funktioiden) kutsumekanismia.



TTK-91 konekielen käskyt ovat: NOP, STORE, LOAD, IN, OUT, ADD, SUB, MUL, DIV, MOD, AND, IR, XOR, SHL, SHR, COMP, JUMP, JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS, JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC