SISÄLLYS 1 Tietokoneen toimintaperiaate ja käyttö... 14 1.1 Mikä tietokone on?... 14 1.2 Tieteen ja toimiston koneista yleistietokoneeseen... 15 1.3 Mekaanisista ja sähköisistä laitteista sulautettuihin tietokoneisiin... 16 1.4 Digitaaliset mikropiirit ja niiden ryhmittely... 17 1.5 Digitaalilaitteiden toteutustavat ja niiden ominaisuudet... 19 2 Tietokoneen historia... 21 2.1 Mekaaniset laskukoneet... 21 2.2 Differenssikone ja analyyttinen kone... 21 2.3 Turingin kone... 22 2.4 Sähkömekaaniset laskukoneet... 22 2.5 Tietokonesukupolvet... 24 2.6 Ensimmäisen sukupolven tietokoneet... 25 2.7 Toisen sukupolven tietokoneet... 27 2.8 Kolmannen sukupolven tietokoneet... 27 2.9 Neljännen sukupolven tietokoneet... 28 2.10 Viidennen ja kuudennen sukupolven tietokoneet... 30 3 Tietokoneen rakenteen ja toiminnan perusteet... 31 3.1 Tietokoneen perusrakenne... 31 3.2 Tietokoneen konekieli... 32 3.3 Käskyjakso... 33 3.4 Von Neumann- ja Harvard-arkkitehtuuri... 35 3.5 CISC- ja RISC-koneet... 36 3.6 Tietokoneen monitasomalli... 37 3.7 Laitteiston ja ohjelmiston abstraktiotasot... 39 3.8 Tietokoneen arkkitehtuuri ja organisaatio... 40 3.9 Tietokoneen tehokkuus... 41 4 Tieto ja tiedon talletus... 42 4.1 Loogisten signaalien arvot ja tasot... 42 4.2 Tiedon esitysmuodot... 43 4.3 Sana ja sanan pituus... 43 4.3.1 Perinteisen tietokoneen sana... 43 4.3.2 Mikroprosessorin sana... 43 4.4 Tiedon talletus... 44 4.4.1 Muisti... 44 4.4.2 Rekisterit... 45 4.4.3 Pino... 47 5 Operandien osoittaminen ja tietokoneen käskykanta... 50 5.1 Käskykanta ja käskyryhmät... 50 5.2 Käskyn rakenne... 50 5.3 Operandin sijainti... 52 5.4 Osoitusmuodot... 55 5.4.1 Välitön osoitus... 56 5.4.2 Rekisteriosoitus... 57
5.4.3 Absoluuttinen osoitus... 57 5.4.4 Rekisteriepäsuora osoitus... 58 5.4.5 Indeksoitu osoitus ja kantaosoitus... 59 5.4.6 Indeksoitu kantaosoitus... 61 5.4.7 Suhteellinen osoitus... 62 5.4.8 Osoitusmuotojen käyttö tietokoneissa... 62 5.5 Käskykanta... 63 5.5.1 Siirtokäskyt... 63 5.5.2 Aritmeettiset käskyt... 63 5.5.3 Loogiset käskyt... 64 5.5.4 Sivuttaissiirto- ja rotaatiokäskyt... 65 5.5.5 Hyppy- ja haarautumiskäskyt... 67 5.5.6 Aliohjelmakäskyt... 68 5.5.7 Syöttö- ja tulostuskäskyt... 69 5.5.8 Ohjauskäskyt... 69 6 Tietokoneen ohjelmointi... 71 6.1 Ohjelmistotuotanto... 71 6.2 Ohjelmointikielen valinta... 72 6.3 Algoritmi... 74 6.4 Ohjelmointiesimerkki 1... 75 6.5 Ohjelmointiesimerkki 2... 77 7 Tietokoneen keskusyksikkö ja sen liitännät... 80 7.1 Keskusyksikön rakenne... 80 7.2 Tietokoneen ohjausyksikkö... 82 7.3 Keskusyksikön liittäminen ulkoisiin piireihin... 83 7.4 Jaettu osoite- ja dataväylä... 84 7.5 Kolmitilaväylä... 84 7.6 Väyläsiirto... 86 7.6.1 Synkroninen siirto... 86 7.6.2 Asynkroninen siirto... 89 7.7 Kellosignaali... 91 7.7.1 Yleistä... 91 7.7.2 Kellosignaalin muoto ja parametrit... 92 7.7.3 Kellosignaalin synnyttäminen... 92 7.8 Alustus... 93 7.8.1 Yleistä... 93 7.8.2 Nollaussignaalin synnyttäminen... 94 7.8.3 Mikroprosessorin tai -ohjaimen nollaus... 95 7.8.4 Prosessorin alustusohjelma... 96 7.8.5 Vahtikoira... 96 8 Tietokoneen päämuisti... 98 8.1 Yleistä... 98 8.2 Muistityypit... 98 8.3 Puolijohdemuistin rakenne... 100 8.3.1 Staattisen vaihtomuistin alkio... 101 8.3.2 Dynaamisen vaihtomuistin alkio... 102 8.4 Muistipiireihin liittyvät signaalit... 104 8.5 Vaihtomuistityypit... 105 8.6 Asynkroninen staattinen vaihtomuistipiiri... 105
8.7 Synkroniset staattiset vaihtomuistipiirit... 108 8.8 Asynkroninen dynaaminen vaihtomuistipiiri... 110 8.8.1 Piirin rakenne ja toiminta... 110 8.8.2 Asynkronisen dynaamisen vaihtomuistipiirin virkistäminen... 113 8.9 Valestaattinen vaihtomuistipiiri... 115 8.10 Synkroninen dynaaminen vaihtomuistipiiri... 115 8.10.1 Synkronisen dynaamisen vaihtomuistipiirin rakenne ja toiminta... 115 8.10.2 DDR- ja GDDR-SDRAM-muistipiirit... 118 8.10.3 RDRAM- ja XDR-DRAM-muistipiirit... 118 8.10.4 Synkronisen dynaamisen vaihtomuistipiirin virkistäminen... 118 8.11 Kiintomuistit... 119 8.11.1 Vanhat kiintomuistityypit... 120 8.11.2 EEPROM-muisti... 122 8.11.3 Flash-muisti... 123 9 Muistin liittäminen keskusyksikköön... 126 9.1 Tietokoneen muistin kokoaminen... 126 9.2 Osoitedekooderi ja piirinvalintasignaalit... 127 10 Tietokoneen muistijärjestelmä... 135 10.1 Yleistä... 135 10.2 Välimuisti... 136 10.2.1 Välimuistityypit... 137 10.2.2 Osoitteenkuvausmenetelmät... 139 10.2.3 Korvausalgoritmit... 140 10.2.4 Päämuistin päivitysmenetelmät... 141 10.3 Virtuaalimuisti... 142 10.3.1 Virtuaalimuistin periaate... 142 10.3.2 Sivutettu virtuaalimuisti... 143 10.3.3 Segmentoitu virtuaalimuisti... 146 11 Liitäntäpiirit... 149 11.1 Yleistä liitäntäpiireistä... 149 11.2 Rinnakkaismuotoinen tiedonsiirto... 149 11.2.1 Yksinkertainen rinnakkaisliitäntä... 150 11.2.2 Integroitu rinnakkaisliitäntäpiiri... 151 11.3 Sarjamuotoinen tiedonsiirto... 153 11.3.1 Yleistä... 153 11.3.2 Perinteinen asynkroninen sarjaliitäntä... 153 11.3.3 Uudet sarjaväylät... 154 11.4 Tietokoneen väylät... 156 12 Liitäntälaitteiden ohjaus... 158 12.1 Liitäntälaitteiden ohjaustavat... 158 12.2 Ohjelmoitu syöttö ja tulostus... 158 12.3 Keskeytysohjattu syöttö ja tulostus... 158 12.3.1 Keskeytykset ja niiden ominaisuudet... 158 12.3.2 Mikro-ohjaimen keskeytysjärjestelmä... 160 12.3.3 Mikroprosessorin keskeytysten ja poikkeusten käsittelyjärjestelmä... 160 12.3.4 Keskeytysten ja poikkeusten toteutus... 161 12.3.5 Palveluohjelman sijainti... 163 12.3.6 Samanaikaiset keskeytykset... 164 12.4 Suora muistinosoitus... 165
13 Liukuhihnaperiaate... 169 13.1 Yleistä... 169 13.2 Liukuhihnan toiminta... 169 13.3 RISC-prosessorin liukuhihna... 172 13.4 Liukuhihnan hasardit... 174 13.4.1 Hasardityypit... 174 13.4.2 Rakenteellinen hasardi... 174 13.4.3 Ohjaushasardi... 175 13.4.4 Datahasardi... 177 13.5 Keskeytysten ja poikkeusten vaikutus liukuhihnan suunnitteluun... 179 13.6 Liukulukuyksikön liukuhihna... 180 14 Moniprosessorijärjestelmät... 182 14.1 Yleistä... 182 14.2 Flynnin luokittelu... 183 14.3 Nopeutuskerroin... 184 14.4 Moniprosessorirakenteet... 185 14.4.1 Yleistä... 185 14.4.2 Aikajaettu väylä... 185 14.4.3 Moniporttimuisti... 187 14.4.4 Kytkentäkenttä... 188 14.4.5 Kaksiulotteinen suorakaideverkko... 188 14.4.6 Hyperkuutio... 189 14.5 Moniprosessorien välimuistit... 190 15 Intel 80x86 ja Itanium-prosessorit... 192 15.1 Yleistä... 192 15.2 Intel 8086... 193 15.2.1 Rakenne... 193 15.2.2 Osoitusmuodot... 196 15.2.3 Muisti... 197 15.2.4 Keskeytykset ja poikkeukset... 199 15.2.5 Käskykanta... 200 15.2.6 Intel 8087 -aritmetiikkaprosessori... 201 15.3 Intel 80286... 202 15.4 Intel 80386... 203 15.4.1 Rakenne... 203 15.4.2 Segmenttirekisterit ja muistin segmentointi... 205 15.4.3 Järjestelmäarkkitehtuuri ja järjestelmärekisterit... 207 15.4.4 Virtuaalimuistin toteutus... 211 15.4.5 Muistin suojaus... 211 15.4.6 Käyttöjärjestelmäkutsut... 213 15.4.7 Poikkeukset ja keskeytykset... 213 15.4.8 Ohjelmien testaus... 214 15.4.9 Syöttö ja tulostus... 214 15.5 Intel 80486... 215 15.5.1 Yleistä... 215 15.5.2 Intel 80486:n välimuisti... 215 15.6 Intel Pentium... 216 15.7 Intel Pentium Pro... 217 15.8 Uudet Pentium-prosessorit... 220 15.9 Intel 64 -arkkitehtuuri... 220
15.10 Itanium-prosessorit... 221 16 Intel 8051... 224 16.1 Rakenne ja ominaisuudet... 224 16.2 Muistiorganisaatio... 225 16.2.1 Yleistä... 225 16.2.2 Datamuisti... 226 16.2.3 Ohjelmamuisti... 228 16.2.4 Ulkoinen muistiliitäntä... 228 16.2.5 Käyttäjärekisterit... 229 16.3 Liitäntäpiirit... 231 16.3.1 Rinnakkaisportit... 231 16.3.2 Sarjaportti... 231 16.3.3 Ajastimet... 234 16.4 Käskykanta... 236 16.4.1 Osoitusmuodot... 236 16.4.2 Käskyjen rakenne... 237 16.4.3 Akun käyttö... 237 16.4.4 Käskyt... 238 16.4.5 Aritmeettiset käskyt... 239 16.4.6 Loogiset käskyt... 241 16.4.7 Siirtokäskyt... 242 16.4.8 Bittikäskyt... 244 16.4.9 Haarautumis- ja ohjauskäskyt... 244 16.4.10 Tilalippuihin vaikuttavat käskyt... 246 16.5 Keskeytykset... 246 17 PIC16F84A-mikro-ohjain... 253 17.1 Rakenne ja ominaisuudet... 253 17.2 Muistiorganisaatio... 255 17.2.1 Yleistä... 255 17.2.2 Ohjelmamuisti... 256 17.2.3 Datamuisti... 256 17.2.4 EEPROM-muisti... 258 17.2.5 Pino... 259 17.3 Liitäntäpiirit... 259 17.3.1 Rinnakkaisportit... 259 17.3.2 Ajastin... 259 17.3.3 Vahtikoira-ajastin... 260 17.3.4 Käyttöjännitteen kytkentäpiirit... 260 17.4 Käskykanta... 261 17.4.1 Yleistä... 261 17.4.2 Osoitusmuodot... 261 17.4.3 Käskyt... 261 17.5 Keskeytykset... 263 18 AVR ATtiny12 -mikro-ohjain... 265 18.1 Rakenne ja ominaisuudet... 265 18.2 Muistiorganisaatio... 267 18.2.1 Yleistä... 267 18.2.2 Ohjelmamuisti... 267 18.2.3 Datamuisti... 268
18.2.4 Syöttö- ja tulostusrekisterit... 268 18.2.5 Pino... 271 18.3 Liitäntäpiirit... 271 18.3.1 Rinnakkaisportti... 271 18.3.2 Ajastin... 272 18.3.3 Vahtikoira-ajastin... 273 18.3.4 Vertailupiiri... 274 18.4 Käskykanta... 275 18.4.1 Osoitusmuodot... 275 18.4.2 Käskyt... 275 18.5 Keskeytykset... 279 19 TMS320C54x-perhe... 281 19.1 Rakenne ja ominaisuudet... 281 19.1.1 Yleistä... 281 19.1.2 Akut... 283 19.1.3 Aritmeettis-looginen yksikkö... 284 19.1.4 Kertoja... 284 19.1.5 Summain... 285 19.1.6 Sivuttaissiirtopiiri... 285 19.1.7 Muut laskentayksiköt... 285 19.2 Muistiorganisaatio... 286 19.3 Datamuistin osoittaminen... 286 19.3.1 Osoitusmuodot... 286 19.3.2 Suora osoitus... 286 19.3.3 Epäsuorat osoitusmuodot... 287 19.4 Käskykanta... 289 19.4.1 Käskyryhmät... 289 19.4.2 Aritmeettiset käskyt... 289 19.4.3 Loogiset käskyt... 289 19.4.4 Ohjelman ohjauskäskyt... 290 19.4.5 Lataus- ja talletuskäskyt... 290 19.5 Liitäntäpiirit... 290 20 Prosessorit ohjelmoitavissa järjestelmäpiireissä... 293 20.1 Yleistä... 293 20.2 Ohjelmoitavien logiikkaverkkojen tyypit... 293 20.3 PLD-piirit... 293 20.4 FPGA-piirit... 294 20.5 Ohjelmoitavat järjestelmäpiirit... 296 20.6 Yleistä prosessorien toteuttamisesta ohjelmoitavissa järjestelmäpiireissä... 297 20.7 Kiinteät prosessorit... 298 20.8 Ohjelmoidusti toteutettavat prosessorit... 299 20.9 Signaalinkäsittely ohjelmoitavissa järjestelmäpiireissä... 302 20.10 Ohjelmoidusti toteutettavan prosessorin suunnitteluprosessi ja -työkalut... 302 20.10.1 Suunnitteluprosessi kokonaisuutena... 302 20.10.2 Esimerkki laitteiston suunnitteluprosessista ja -työkaluista... 306 20.10.3 Esimerkki ohjelmiston suunnitteluprosessista ja -työkaluista... 309 20.10.4 Esimerkki DSP-suunnitteluprosessista ja -työkaluista... 311 21 Nios II... 313 21.1 Yleistä... 313
21.2 Keskeiset ominaisuudet ja prosessoriversiot... 314 21.3 Prosessoriytimen arkkitehtuuri ja sisäinen rakenne... 316 21.3.1 Yleistä... 316 21.3.2 Prosessorin toteutus... 317 21.3.3 Sisäiset rekisterit... 318 21.3.4 Aritmeettis-looginen yksikkö... 318 21.3.5 Lisäkäskyjen logiikan liitäntäpiiri... 319 21.3.6 Alustussignaalit... 319 21.3.7 Poikkeusten ja keskeytysten käsittelypiirit... 319 21.3.8 Välimuistit... 320 21.3.9 Tiukasti kytkettyjen muistien liitännät... 320 21.3.10 Käskyväylä ja dataväylä... 321 21.3.11 JTAG-moduuli... 322 21.4 Prosessorin sisäiset rekisterit... 322 21.4.1 Yleistä... 322 21.4.2 Rekisteriryhmän rekisterien käyttö... 323 21.4.3 Ohjausrekisterien käyttö... 324 21.5 Prosessoriytimen ja muiden piirien keskinäiset yhteydet... 325 21.5.1 Avalon-kytkentäkudos ja Avalon-portit... 325 21.5.2 Muistin ja liitäntäpiirien liittäminen Nios II -prosessoriytimeen... 328 21.6 Ohjelmoitavan järjestelmäpiirin sisäiset liitäntäpiirit... 330 21.7 Poikkeusten ja keskeytysten käsittely... 330 21.7.1 Yleistä... 330 21.7.2 Poikkeustyypit... 331 21.7.3 Laitteistokeskeytys... 331 21.7.4 Ohjelmistokeskeytys... 332 21.7.5 Toteuttamaton käsky... 332 21.7.6 Muu poikkeus... 333 21.7.7 Poikkeusten palvelualiohjelman tehtävät... 333 21.8 Suora muistinosoitus... 334 21.9 Datatyypit... 335 21.10 Osoitusmuodot... 335 21.11 Käskykanta ja käskyjen suoritus... 336 21.11.1 Yleistä... 336 21.11.2 Käskysanatyypit... 336 21.11.3 Käskykanta... 338 21.11.4 Siirtokäskyt... 338 21.11.5 Aritmeettiset ja loogiset käskyt... 341 21.11.6 Vertailukäskyt... 343 21.11.7 Sivuttaissiirto- ja rotaatiokäskyt... 346 21.11.8 Hyppy- ja haarautumiskäskyt... 347 21.11.9 Ohjauskäskyt... 349 Liite 1. IAS-tietokone... 355 Liite 2. Tietokoneen tehokkuus... 359 L2.1 Laskenta-aika... 359 L2.2 Tehokkuus... 359 L2.3 Kellojakso... 360 L2.4 CPI ja MIPS... 361 L2.5 Benchmark-ohjelmat... 363 L2.6 Amdahlin laki... 364