Notes
Slide Show
Outline
1
Luento 6
Tiedon esitysmuodot
  • Lukujärjestelmät
  • Kokonaisluvut
  • Liukuluvut
  • Merkit, merkkijonot
  • Totuusarvot
  • Kuvat, äänet, hajut(?)


2
Tiedon tyypit (3)
  • Kommunikointi ihmisen kanssa
    • kuva, ääni, merkit, …
  • Laitteiston sisäinen talletus
    • kuvaformatit, ääniformatit, pakkausstandardit, ...
    • kokonaisluvut, liukuluvut, merkit, merkistöt
    • ohjelmat
  • Suorittimen omana lajinaan ymmärtämät tyypit
    • on olemassa konekäskyjä tälle tietotyypille
    • kokonaisluvut
    • liukuluvut (useimmat suorittimet nykyään)
    • totuusarvot (jotkut suorittimet)
    • merkit (jotkut suorittimet)
    • konekäskyt
3
Tiedon esitys laitteistossa (3)
  • Kaikki tieto koneessa on binääribitteinä (0 tai 1)
    • binäärijärjestelmän numerot: 0, 1
    • helppo toteuttaa piireillä
    • helppo suunnitella logiikkaa Boolen algebran avulla
  • Muisti jaettu tasapituisiin sanoihin
    • sana = word = 32 bittiä  (16 bittiä, 64 bittiä, …)
  • Usein sana on jaettu tasapituisiin
    8-bittisiin tavuihin
4
Tiedon esitys laitteistossa (2)
  • Tietoa siirretään muistiväylää pitkin sanoina
    • joskus useampi kuin yksi sana kerrallaan (lohko)
  • Suorittimen rekisterit ovat yleensä yhden tai kahden sanan mittaisia
    • 1 sana: kokonaisluku, pieni liukuluku
    • 1 sana: 1 merkki tai 4 merkkiä
    • 2 sanaa: pitkä kokonaisluku, iso liukuluku

5
Tiedon esitys (3)
  • Kysymys: miten esittää eri tyyppisiä tietoja?
  • Vastaus: koodataan ne biteiksi
    • kaikki tieto on koneessa bitteinä
  • Kaikelle käsitellylle tiedolle on omat koodausmenetelmänsä
    • kaikkia koodausmenetelmiä ei ole standardoitu
    • samalla tietotyypille voi olla useita koodausmenetelmiä
      • kokonaisluvut, liukuluvut, merkit, merkkijonot, kuvat, ...
    • ongelma: ymmärtävätkö koneet toisiaan?
      • tiedon esitysmuotoa voidaan joutua muuttamaan,
        kun tietoa siirretään koneelta toiselle
6
Suorittimen ymmärtämä tieto (4)
  • Kaikki tieto koneessa on koodattuna biteiksi
  • Muistissa voidaan esittää kaikki tieto millä tahansa sovitulla esitystavalla (koodauksella)
  • Suoritin osaa tehdä operaatioita joillakin esitystavoilla koodatuille tiedoille
    • kokonaisluvut ja liukuluvut (aina)
    • totuusarvot, merkit ja merkkijonot (joskus)
    • kuvat ja äänet (ei yleensä ellei erikoistunut suoritin)
    • hajut (ei vielä)
  • Muiden tietojen käsittely tapahtuu ohjelmallisesti
    • esim. merkkejä voidaan käsitellään kokonaislukuoperaatioilla ja aliohjelmilla
7
Binäärijärjestelmä (2)
  • Kantaluku 2, numerot 0 ja 1
    • numeroiden painoarvot oikealta vasemmalle:
      1=20, 2=21, 4=22, 8=23, 16=24, 32=25, …
    • kymmenjärjestelmässä painoarvot ovat
      1=100, 10=101, 100=102, 1000=103, …
8
Binäärilukuesimerkkejä
9
Binäärilukujen laskutoimitukset (3)
10
Binääripiste (3)
  • Binääriluvuilla voi olla myös binääriosa
    (vrt. desimaaliosa)
11
Binääripiste-esimerkkejä (10)
12
Muunnokset lukujärjestelmien välillä (5)
  • 2-järjestelmä  Þ 10-järjestelmä
    • esitettiin jo edellä
  • 10-järjestelmä  Þ 2-järjestelmä
    • kokonaisosa ja desimaaliosa erikseen
    • kokonaisosa:
      • jaa toistuvasti 2:lla, kunnes 0 jäljellä
      • ota jakojäännökset käännetyssä järjestyksessä


13
10-järj Þ 2-järj
kokonaislukuesimerkki (11)
14
10-järj Þ 2-järj
desimaaliosa
Þ binääriosa (2)
  • Kerrotaan toistuvasti desimaaliluvun desimaaliosa 2:lla, kunnes
    • desimaaliosa = 0  (tarkka binääriesitys)
    • tarpeeksi numeroita haluttuun tarkkuuteen
  • Tulos saadaan ottamalla saatujen desimaalilukujen kokonaisosat (0 tai 1) lasketussa järjestyksessä
15
10-järj Þ 2-järj
 desimaaliosa
Þ binääriosa (9)
16
Heksadesimaaliesitys
  • Binäärilukuja käyttö on tarpeellista, mutta niitä on ikävä kirjoittaa
    • liikaa numeroita
  • Kirjoitetaan ne 16-järjestelmässä eli heksadesimaalijärjestelmässä
  • 4 bittiä vastaa aina yhtä 16-järjestelmän numeroa
  • Yksi 16-järjestelmän numero vastaa aina 4 bittiä
  • 16-järjestelmän numerot ovat:
    0,1,2,3,4,5,6,7,8,9, A,  B,  C,  D,  E ja F
17
Heksadesimaaliesimerkkejä (7)
18
Oktaaliesimerkkejä (7)
19
Big vs. Little Endian (3)
  • Miten monitavuiset arvot talletetaan?
20
Big vs. Little Endian (5)
  • Monitavuisen tiedon (sana-) osoite on sama molemmissa tapauksissa
  • Tavujen järjestys on erilainen
  • Suorittimen suunnittelija päättää
    • Matematiikkapiirien tulee tietää miten luvut esitetty
    • Täytyy ottaa huomioon siirrettäessä tietoa verkon yli
  • Power-PC: bi-endian - molemmat moodit käytössä
    • voidaan valita ohjelmakohtaisesti
    • etuoikeutetussa tilassa voidaan vielä valita erikseen
    • suoritin osaa laskea kummallakin tavalla talletetuilla luvuilla
21
Negatiiviset luvut (4)
  • Etumerkkibitti erikseen
  • Yhden komplementtiesitys
  • Kahden komplementtiesitys
  • Vakiolisäys
    • Esim lisää 127 (=28 –1)
    • Talleta etumerkittömänä
22
Kahden komplementti (7)
  • Useimmiten käytössä
  • Etu: vain yksi nolla
    • yhden komplementissa kaksi nollaa
      • +0 = 0000 0000     -0 = 1111 1111
  • Helpot muunnokset: arvo ↔ esitysmuoto
    • miten arvo -57 esitetään?
      • 1100 0110 +1 = 1100 0111
    • mitä arvoa esitysmuoto 1100 0111 tarkoittaa?
      • - (0011 1000 +1) = -0011 1001 = -57
23
Liukuluvut (3)
  • Tietokoneessa ei ole realilukuja tai rationaalilukuja (matemaattiset käsitteet)
  • Aina rajallinen esityksen tarkkuus
    • lukuja p (pii), SQRT(2), tai 1/3 ei voi esittää tarkasti
    • esim. luvut 1.000000000 ja luvut 1.000000001 ovat yhtäsuuria (joissakin esityksissä)
  • Yleinen realilukuja vastaava esitysmuoto on liukukuesitysmuoto
    • 32 bittiä, noin 7-8 desimaalinumeron tarkkuus
    • 64 bittiä, noin 16-17 desimaalinumeron tarkkuus

24
Liukulukujen esitys (5)
25
IEEE 32-bit
Floating Point Standard (1)
  • Etumerkki
    • 1 bitti, 1Þ “-”,  0 Þ “+”
    • etumerkkibitti S  Þ etumerkin arvo =  (-1)S
      • +:n eli 0:n arvo on +1
      • -:n eli 1:n arvo on -1
26
IEEE 32-bit FP Standard (2)
  • 8 bittiä eksponentille, lisättynä 127:llä
    • esitysmuodot 0 ja 255 erikoistapauksia
      • laajennettu arvoalue: hyvin pienet luvut, NaN,  ±¥
    • talletettu arvoalue: 1 - 254 Þ tod. arvoalue:  -126  - 127
                              (esitysmuoto)                           (arvoalue)
27
IEEE 32-bit FP Standard (7)
  • 23 bittiä mantissalle, siten että ...


28
IEEE 32-bit FP Values (9)
29
IEEE 32-bit FP Values (6)
30
Merkit (5)
  • Yleensä 1 tavu per merkki
  • ASCII, 7 bittiä/merkki (+ tark. bitti?)
  • EBCDIC, 8 bittiä/merkki
  • ISO/IEC 8859-15 ('Latin-9'),
    • 8-bittiä/merkki, 256 eri merkkiä käytössä
    • mukana myös ä, ö, š, €
31
UCS ja Unicode (5)
  • UCS - Universal Character Set
  • Samat merkistöt, eri standardit
  • 2 tavua eli 16 bittiä per merkki
    • 65536 merkkiä koko maailmassa käytössä oleville
      n. 200000 symbolille
  • Kontrollimerkit
    • 0x0000-001F and 0x0080-009F
    • 0x007F = DELETE,  0x0020 = SPACE
  • UCS:ssä myös 8-bittiset koodi ”rivit”
    • eri alueille tai tarkoituksiin (zone) omat 8-bittiset koodinsa
32
UCS ja Unicode (3)
  • Merkit välillä 0x0000-00FF (16 bittiä) samassa järjestyksessä kuin Latin-9 merkistössä (8 bittiä)
    • 16-bittisen UCS:n ”rivi 00” = 8-bittinen Latin-9
  • Myös muut aakkoset:
    • I-zone = Kanji  (0x4E00-9FFF, 20992 merkkiä)
  • Ei omia konekäskyjä, manipulointi aliohjelmilla
33
Merkkijonot (5)
  • Yleensä peräkkäin talletettu joukko tavuja
  • Lisäksi tarvitsee jollain tavalla koodata merkkijonon pituus
    • laitetaan loppuun erikoismerkki, tai
      • C-kieli: ’\0’ = 0x00
    • toteutetaan tietueena
    • ei omia konekäskyjä, manipulointi aliohjelmilla
      • kokonaisluku- ja bittimanipulointikäskyt
      • joissakin koneissa ”strcopy” ja ”strcmp” konekäskyt
34
Totuusarvot (5)
  • Boolen TRUE ja FALSE
  • Yleensä koodattu TRUE=1, FALSE=0
    • muttei aina!
    • Totuusarvolauseke A and B = kokon.lukulauseke A*B
  • Usein Boolen arvo per sana
    • loput 31 bittiä nollia
    • ohjelmointikielten Boolen muuttujat
  • Joskus pakatussa muodossa 32 arvoa per sana
  • Ei omia konekäskyjä, manipulointi aliohjelmilla
    • kokonaisluku- ja bittimanipulointikäskyt
    • haluttu konekäsky ”JTRUE ...” voidaan toteuttaa
      konekäskynä ”JPOS …”   (jos TRUE = 1)
35
Kuvat
  • Monta kuvastandardia
    • yleisyys, siirrettävyys, pakkaustiheys
    • näyttöä varten tarvittavan laskennan määrä
  • Kuvatiedoston alussa otsake kertoo talletusformaatin
  • Viiva- ja vektorikuvat
    • kuva koodattuna objekteina
      • ympyrä, monikulmio, käyrä, alueen väri
  • Rasterikuvat
    • kuva koodattuna pisteinä
      • kunkin pisteen väri koodattu esim. 24 bitillä
36
Kuvat
  • Kuvat ovat yleensä pakattu mahdollisimman vähän tilaa vievää muotoon
    • optimoitu tilan, ei laskennan mukaan
    • purkaminen voi vaatia paljon laskentaa
  • GIF, JPEG, TIFF, BMP, ….
  • Ei omia konekäskyjä, manipulointi aliohjelmilla
37
Videokuva
  • Vie hyvin paljon muistitilaa
  • Talletus kuva kerrallaan, esim. 25 kuvaa/sek
    • 1 sekunti hyvälaatuista videokuvaa pakkaamattomassa muodossa 20 MB
  • Talletus ”incrementaalisesti”
    • kun seuraava kuva poikkeaa edellisestä vain vähän ...
    • talleta vain muutokset edelliseen
38
Videostandardit
  • MPEG (Moving Pictures Expert Group)
  • AVI (Audio Visual Interleave)
  • MOV, INDEO, FLI, GL, DVD, ...
  • Ei omia konekäskyjä, manipulointi aliohjelmilla tai ...
  • Erikoisprosessoreilla (GPU), joiden käskykanta suunniteltu (jonkin standardin mukaisten kuvien) kuvankäsittelyyn
    • grafiikkakorteilla
39
Grafiikkakortit
  • Esim. 4-64 MB VRAM (dual-port) muistia ...
    • 2 lukua/kirjoitusta samanaikaisesti
  • ... tai ”tavallista”, mutta hyvin nopeaa RAMia
  • Nopea väylä (ennen PCI, nyt AGP) suorittimelle
  • Näytönohjaus monitoristandardien (VGA, XGA, RGB, ...) mukaisesti
  • Oma suoritin (GPU)
    • lukee videodataa ja generoi
      näytettävän kuvan näyttö-
      puskuriin, josta monitori
      sen näyttää
  • Voi olla integroitu
    emolevyn kanssa
40
Äänet
  • Täydellinen äänidata
    • 44100 näytettä/sek, 16 b/näyte, 88KB /sek
  • Syntetisoitu ääni
    • MIDI-käskyjä
      • Music Instrument Digital Interface
      • ”Soita nuotti N voimakkuudella V”
  • Ei omia konekäskyjä, manipulointi aliohjelmilla tai ...
  • Erikoisprosessoreilla, joiden käskykanta suunniteltu äänen käsittelyyn
    • äänikortit
41
Äänikortit
  • Esim. 4-64 MB
    VRAM tai
    RAM muistia
  • Nopea väylä
    (esim. PCI)
    suorittimelle
  • Oma suoritin, joka lukee äänidataa ja generoi äänet kaiuttimille tai vahvistimeen
    • kaiuttimet tai vahvistin kiinni äänikortilla
  • Voi olla integroitu emolevyn
    (tai grafiikkakortin) kanssa


42
Maku, haju, tunto ja muu data (3)
  • Tähtien kirkkaus, hajut,
    veneen tyyppi, tunteen palo, ….
  • Toteutus sovelluskohtaisesti, ei vielä yleisiä standardeja
    • kokonaisluvut (diskreetti data)
    • liukuluvut (jatkuva data)
  • Ei omia konekäskyjä, manipulointi omilla aliohjelmilla
43
-- Luennon 6 loppu --