Tietokoneen toiminta, kevät 2002
Harjoitus 4
Käsitellään harjoitusryhmissä tiistaina 4.6.2002.
- Ttk-91-koneen konekäskyn osoiteosa on vain 16-bittinen. Tämä asettaa
rajoituksia käskyssä olevien vakioiden koolle.
- Mikä on suurin positiivinen luku, joka voidaan esittää käskyssä
vakiona?
- Mikä on pienin negatiivinen luku, joka voidaan esittää käskyssä
vakiona?
- Miten tulee toimia, jos tarvitaankin suurempaa vakiota? Esimerkiksi
lukua 500000?
- Entä miten tulisi menetellä, jos tarvitaan suurta vakiota
indeksoidun osoitusmoodin kanssa? Esimerkiksi, jos halutaan lukea data
osoitteesta (R1)+666666?
- Tiedon esitys.
- Mikä on desimaalijärjestelmän luvun 43.234 binääriesitys?
- Mitä desimaalijärjestelmän lukua binääriluku 101010.1010 vastaa?
- Mikä on desimaalilukujen +23 ja -75 esitys seuraavissa 16 bitin
Big-Endian esitysmuodoissa:
- etumerkillinen (sign and magnitude)
- kahden komplementti (two's complement)
- yhden komplementti (one's complement)
- 32767 vakiolisäys (biased by 32767)
- Mikä on desimaaliluvun 33.125 IEEE-liukulukustandardin mukainen esitys?
- Oletetaan, että ohjelmointikielessä MyLan on totuusarvo (boolean) ja liukuluku tietotyypit. Esimerkiksi, siinä voidaan käyttää
boolean tai float tyyppisiä muuttujia.
Ttk-91 koneessa ei kuitenkaan ole tällaisia tietotyyppejä. Voisiko
MyLan kielelle tehdä kääntäjän, jonka avulla MyLan kielisiä ohjelmia
voisi suorittaa ttk-91 koneessa? Jos voi, niin miten? Jos ei voi, niin miksi
ei?
- Hamming koodi.
- Näytä, miten virheenkorjaava Hamming-koodi havaitsee ja korjaa
virheen, kun 3. bitti vasemmalta lukien on muuttunut 7-bittisessä
datassa 011 0100.
(Näissä 7 bitissä on mukana sekä varsinainen data että
tarkistusbitit)
- Montako piuhaa (johdinta, bittiä) tarvitaan 32-bittisen dataväylän
turvaamiseksi virheenkorjaavaa Hamming-koodia käyttäen?
(Haluamme siis pystyä kerralla siirtämään 32 bittiä todellista
dataa tarkistusbittien lisäksi)
- Miksi Hamming-koodin käyttö ei ole hyvä ratkaisu paikallisverkkojen
tiedonsiirron turvaamiseen?
- Välimuisti. Oletetaan, että tiedon saantiaika (1 sana) välimuistista on
2 ns ja tavallisesta muistista 10 ns. Välimuistin lohkon (rivin) koko on
neljä sanaa. Oletetaan, että välimuistia käytettäessä 97%
muistiviitteistä löytyy välimuistista. Voit (epärealistisesti) olettaa,
että välimuistista löytyy aina tilaa uudelle lohkolle ja että tiedon
siirtoaika MBR:stä rekisteriin on nolla.
- Jos välimuistia ei käytetä, niin kauanko keskimääräisesti
kestää datan (1 sana) lukeminen rekisteriin?
- Jos välimuistia käytetään, niin kauanko keskimääräisesti
kestää datan (1 sana) lukeminen rekisteriin?
- Miten prosessi tietää, löytyikö tieto välimuistista vai ei?
- Miten sovelluksen käyttäjä (ihminen) tietää, löytyikö tieto
välimuistista vai ei?
- Miten käyttäjä (ohjelmoija) voi vaikuttaa välimuistin
tehokkuuteen?
- Prosessi.
- Mitä tapahtuu, jos Ready-to-Run jono on tyhjä?
- Voiko samasta ohjelmasta olla monta prosessia yhtä aikaa Ready-to-Run
jonossa? Miten tai miksi ei?
- Kumpi kestää kauemmin, aliohjelman kutsu vai prosessin vaihto?
Miksi?
- Kuuluuko välimuistin sisältö prosessin suoritinympäristöön vai
ei? Miksi?
- Kuuluvatko MAR ja MBR prosessin suoritinympäristöön vai ei? Miksi