Notes
Slide Show
Outline
1
Luento 7
Tiedon esitysmuodot (jatk)
Tiedon muuttumattomuuden tarkistus
Järjestelmän sisäinen muisti
  • Ohjelman esitysmuoto
  • Rakenteellinen tieto
  • Pariteetti
  • Hamming-koodi
  • Välimuisti
  • Tavallinen muisti
  • Muistien historiaa
2
Konekäskyjen esitysmuoto muistissa (4)
  • Konekohtainen, jokaisella omansa
  • Käskyt ovat 1 tai useamman tavun mittaisia
    • SPARC, kaikki käskyt: 1 sana eli 4 tavua
    • PowerPC, kaikki käskyt: 1 sana eli 4 tavua
    • Pentium II: 1-16 tavua, paljon variaatioita
  • Käskyillä on yksi tai useampi muoto, kussakin tietty määrä erilaisia kenttiä
    • opcode, Ri, Rj, Rk, osoitusmoodi
    • pitkä tai lyhyt vakio
3
TTK-91 konekäskyn rakenne
  • Käskyn esitys bittitasolla on aina:
4
Konekäskyn operandit ja tulos
  • Tulos: rekisteri Rj
    • paitsi WRITE- tai PUSH-käskyissä muistipaikan sisältö
  • Ensimmäinen operandi: rekisteri Rj
  • Toinen operandi
    • laske ensin arvo Ri+ADDR ja käytä sitä sellaisenaan tai käytä sitä muistisoitteena
    • arvo:  Ri + ADDR
    • muistipaikan M[Ri+ADDR] sisältö
    • muistipaikan M[ M[Ri+ADDR] ] sisältö
5
Taulukkojen esitysmuoto
  • Peräkkäisrakenteena, kuten esimerkit aikaisemmin
  • Riveittäin tai sarakeittain
  • Ei omia konekäskyjä, manipulointi aliohjelmilla tai loopeilla
    (paitsi ns. vektorikoneet, joilla on omia konekäskyjä vektorioperaatioita varten)
  • Indeksoitu tiedonosoitusmoodi tukee
    1-ulotteisten taulukoiden käyttöä
6
Tietueiden esitysmuoto
  • Peräkkäisrakenteena
  • Osoite on jonkin osoitemuuttujan arvo
  • Ei omia konekäskyjä, manipulointi aliohjelmilla tai kääntäjän generoimien vakiolisäysten avulla
  • Indeksoitu tiedonosoitusmoodi tukee tietueiden käyttöä


7
Olioiden esitysmuoto
  • Kuten tietueet, yleensä varattu keosta (heap)
  • Useat olion kentistä sisältävät vuorostaan osoitteen keosta suoritusaikana varattuun toiseen olioon
  • Metodit ovat aliohjelmien osoitteita
  • Ei omia konekäskyjä, manipulointi aliohjelmilla
8
 
9
Tiedon tarkistus (4)
  • Tiedon oikeellisuutta ei voi tarkistaa yleisessä tapauksessa
  • Laitteistovirheitä voidaan havaita ja joskus automaattisesti korjata
    • bitti voi muuttua muistissa tai tiedon siirrossa
      • muistipiirissä voi olla vika (staattinen vika)
      • sopiva alkeishiukkanen voi muuttaa bitin tiedonsiirron aikana (transientti virhe)
    • korjaamattomasta virheestä voi aiheutua häiriö
  • Tietokannan eheys
    on eri asia!
10
Tiedon muuttumattomuus (2)
  • Perusidea: otetaan mukaan ylimääräisiä bittejä, joiden avulla virheitä voidaan havaita ja ehkä myös korjata
  • Järjestelmä suorittaa tarkistukset automaattisesti joko laitteistotasolla tai ohjelmiston avulla


11
Esimerkki ohjelmistotason tarkistusmerkistä (2)
  • Henkilötunnus:  120464-121C
  • Tarkistusmerkin avulla voidaan tarkistaa, että mikään yksi merkki ei ole väärin
    • havaitsee yhden merkin virheen
    • virhettä ei voi automaattisesti korjata!! Miksi?
    • välimerkkiä (’-’) ei tarkasteta lainkaan!
12
Bittitason tarkistukset (5)
  • Muistipiirit, levyt, väylät,
    tiedonsiirrot
  • Monenko bitin muuttuminen
    havaitaan?
  • Monenko bitin muuttuminen
    voidaan automaattisesti korjata?
  • Havaitsemiseen ja/tai korjaamiseen tarvitaan enemmän (ylimääräisiä) bittejä
    • lisämuistitilan tai levytilan tarve?
    • lisäpiuhojen tarve väylällä?
  • Tarkistukset/korjaukset
    laitteisto- vai SW-tasolla?
13
Pariteettibitti (9)
  • Yksi ylimääräinen bitti per tietoalkio
    • sana, tavu, tietoliikennepaketti
  • Parillinen (pariton) pariteetti: 1-bittien lukumäärä on aina parillinen (pariton)
  • Havaitsee: 1 bitti
  • Korjaa: 0 bittiä
  • Esimerkki (parillinen pariteetti)
14
Hamming etäisyys (3)
  • Montako bittiä jossain koodijärjestelmässä (esim ISO Latin) esitetyllä koodilla (esim. ´A’ = 0x41 = 0100 0001) täytyy muuttua, että se muuttuu johonkin toiseen (mihin tahansa) lailliseen koodiin.
  • ISO Latin-1:n Hamming etäisyys: 1
  • Pariteettibitin kanssa Hamming etäisyys: 2
    • mikä todennäköisyys 2 bitin (vs. 1 bitin) virheeseen?
15
Hamming koodi (4)
16
Hamming koodi (9)
  • Käytetään useampia pariteettibittejä
  • Havaitsee: 2:n bitin muuttuminen
  • Korjaa: 1 bitin muuttuminen
17
Virheen korjaava
Hamming koodi (8)
18
CRC - Cyclic Redundancy Code (7)
  • Tiedonsiirrossa käytetty tarkistusmenetelmä
  • Tarkistussumma (16 bittiä) isolle tietojoukolle
    • laske CRC = f (viesti) % 216    (ota 16 viimeistä bittiä)
    • lähetä viesti ja CRC
    • vastaanota viesti ja CRC
    • laske CRC ja tarkista, oliko se sama kuin viestissä
    • jos pielessä, niin pyydä uudelleenlähetystä

19
Virheiden tarkistusmenetelmien käyttöalueet
  • Mitä lähempänä suoritinta, sitä tärkeämpää tiedon oikeellisuus on
  • Sisäinen väylä, muistiväylä
    • virheet korjaava Hamming koodi
  • Paikallisverkko
    • uudelleenlähetyksen vaativa CRC
    • kun tulee virheitä, niin niitä tulee yleensä paljon
      • Hamming koodi ei riitä kuitenkaan
      • pariteettibitti päästää läpi (esim.) 2 virheen paketit
20
Laitteiden monistaminen (6)
  • Monta muistipiiriä, samat tiedot monistettu
  • Monta suoritinta, samat käskyjen suoritukset monistettu
  • Monta laitteistoa, samat ohjelmat monistettu
  • Eri tyyppiset laitteistot, samankaltaiset ohjelmat
    • samat speksit, samat syötteet, eri ohjelmoijat
  • Äänestysmenettely: enemmistö voittaa
    • monimutkainen, hidas?
    • virheelliseksi havaittu laitteisto suljetaan pois häiriköimästä automaattisesti?
21
 
22
Välimuisti
23
Välimuisti (cache) (3)
  • Ongelma: keskusmuisti
    on aika kaukana
    suorittimesta
  • Ratkaisu: välimuisti lähelle suoritinta
    • pidetään siellä (kopioita) viime
      aikoina viitatuista keskusmuistin
      alueista
  • Jokainen muistiviite on nyt seuraavanlainen
    • jos data ei ole välimuistissa, niin hae se sinne
      • suoritin odottaa tällä aikaa, laitteistototeutus!
    • tee viittaus dataan (käskyyn) välimuistissa
    • (talleta muutettu tieto keskusmuistiin)
24
Välimuisti (6)
  • Tuntumaton suorittimelle
    • jos viitattu tieto ei saatavilla, niin suoritin vain odottaa muutaman kellopulssin ajan…
  • Toteutettu usein nopeammalla teknologialla kuin keskusmuisti (tavallinen muisti)
  • Toteutettu nykyään usein samalla mikropiirillä kuin suoritin
  • Silti iso aikaero: välimuisti 2X, muisti 10X
  • TTK-91 koneessa ei ole välimuistia
25
 
26
Muistin toteutus (6)
  • Eri teknologioita eri tasoisiin muisteihin
  • RAM - Random-Access Semiconductor Memory
    • anna osoite ja lue/kirjoita signaali
    • mistä vaan voi lukea/kirjoittaa samassa ajassa
    • virta pois Þ tiedot häviävät
27
RAM:n kaksi eri teknologiaa (2)
  • DRAM: dynaaminen RAM, halvempi, hitaampi,
    tietoja pitää virkistää vähän väliä (esim. joka 2 ms)
    • tavallinen keskusmuisti (1975-..) useimmissa koneissa
    • toteutettu kondensaattoreilla, jotka ”vuotavat” …
  • SRAM: staattinen RAM, kalliimpi (~10-20x),
    nopeampi (
    ~10x), ei vaadi tietojen virkistämistä
    • välimuisti useimmissa koneissa
    • muisti superkoneissa (esim. Cray C-90)
    • toteutettu samanlaisilla logiikkaporteilla (gate) kuin prosessorikin
    • CMOS valmistusteknologia
      (Complementary Metal Oxide Semiconductor)
28
ROM teknologia (8)
  • ROM - Read-Only Memory
    • tieto säilyy virran katkettua
    • voi käytössä vain lukea, ei voi kirjoittaa
      • esim. järjestelmän alustustiedot (BIOS)
    • kirjoitus lastun valmistusaikana, Mask-ROM
    • huono puoli: kerran väärin, aina väärin
    • päivitys: laita valmistajalta saatu uusi lastu paikalleen
    • tietoa voi lukea mistä vain samassa ajassa
      (random access)
    • yleensä hitaampi kuin RAM (~10x)
29
Kirjoitettavia ROM-muisteja (6)
  • PROM - Programmable ROM
    • kerran kirjoitettava
    • tiedon päivitys: ”polta” tiedot tyhjään PROM:iin
  • EPROM - Erasable PROM
    • tietoja ei voi päivittää sana kerrallaan
    • vanhat tiedot voidaan (kaikki!) poistaa 20 min. UV-säteilyllä, jonka jälkeen päivitetyt tiedot voidaan ladata
  • EEPROM - Electronically Erasable PROM
    • tietojen pyyhkiminen tavukohtaisesti elektronisesti
  • FLASH EEPROM memory
    • tietojen pyyhkiminen nopeasti kerralla elektronisesti
    • normaalijännitteellä, kaikki tai lohko kerrallaan
    • nopeampi kuin EEPROM
30
 
31
Muistien historiaa
  • Kondensaattorirumpu
    • 1939, ABC, Atanasoff-Berry Computer,  Iowa State College.
      • lähinnä laskin, ei toiminut
    • kondensattorit pyörivän rummun pinnalla
32
Muistien historiaa
  • Elektroniputki
    • logiikka, muisti
  • ENIAC, 1945
    • Electronic Numerical Integrator and Computer
    • J.W. Mauchly, J.P. Eckert,
      J. von Neumann
    • 18,000 elektr. putkea
    • 70,000 vastusta
    • 5 milj. juotettua liitosta
    • tykinammusten ja pommien
      radanlaskenta
33
Muistien historiaa
  • Akustinen elohopeaviiveputki
    • kvartsikide muutti sähkövirran akustiseksi signaaliksi (ja päin vastoin) pietsosähköisen ilmiön avulla
    • 1000 bittiä per 1.45m putki
    • W. Shockley & J.P. Eckert, 1946
    • M. Wilkes, EDSAC – Electronic Delay Storage Automatic Calculator, 1949
    • Mauchly & Eckert, UNIVAC, 1951 (ens. kaupallinen tietokone USA:ssa)
34
Muistien historiaa
  • Akustinen nikkeliviiveputki
    • magneettikenttä aiheuttaa
      pituussuuntaisen muodon-
      muutoksen tankoon ja siten
      vääntöpulssin johtimeen
    • vähän ajan päästä muutos
      tuntuu toisessa päässä ja
      aiheuttaa magneettikentän
      muutoksen siellä
    • Hazeltine Electronic Corp,
      1950?
    • Elliot 401, 1953
    • Canon 141 laskin, 1969
    • Sony Sobax 2500, 1970
35
Muistien historiaa
  • Williams Tube
    • 1946, Williams & Kilburn
    • katodisädeputki
    • ensimmäinen suuri ”RAM” muisti
    • kallis: $1000 / 1 kk / putki
    • Small Scale Experimental Machine (”Baby”), 1947
    • Ferranti Mark I, ensimmäi- nen yleiskäyttöinen kaupal-linen tietokone, 1951
      (10000 bitin muisti)
    • akustisen viiveteknologian kilpailija
36
Muistien historiaa
  • Ferriittirengas (core) teknologia
    • 1952, Jay Forrester & Bob Everett, MIT (Whirlwind)
    • tieto säilyy ilman virtaa
    • ei häiriinny säteilystä (avaruus, sotilasteknologia)
    • 1955, valtaa muistimarkkinat Williams Tube’lta
37
Muistien historiaa
  • Transistori
    (nopea, kestävä)
    • J. Bardeen,
      W.B. Shockley
      ja W. Brattain,
      ATT Bell Labs,
      1948
      • Nobel 1956
    • MIT TX-0,
      1957,
      ensimmäinen
      transistoroitu
      tietokone
38
Muistien historiaa
  • Integroitu piiri
    (ei enää johtoja)
    • Jack Kilby,
      Texas Instruments, 1958
      • Nobel 2000
      • ensimmäinen käsikäyttöinen laskin
    • Robert Noyce,
      Fairchild Semiconductor, 1959
      • ”planar process” valmistusmenet.
      • perusti Intelin G. Mooren kanssa
    • IBM S/360, 1964
39
Muistien historiaa
  • DRAM
    • Robert Dennard, IBM, 1966
      • (US) National Medal of Technology 1988
    • Intel 1103 (1970)
      • John Reed
      • 1 Kbit
    • valtaa markkinat ferriitti-rengasmuisteilta 1972
  • SRAM
    • 1970, Fairchild Corp
40
Muistiteknologian historiaa (7)
41
Muistiteknologian käyttöhistoriaa
42
Muistien historiaa
  • Välimuisti (1965, Maurice Wilkes)
    • IBM S/360 Model 85
      • 1968
      • 256 lohkoa á 64 tavua
43
Muistien historiaa
  • PROM
    • ???
  • EPROM
    • 1971, Dov Frohman, Intel 1701
  • EEPROM,
    • 1980, Intel 2816
  • Flash EEPROM
    • 1984, Fujio Masuoka,
      Toshiba
44
Muistien historiaa
  • OROM - optical ROM
    • 1990, James Russell
      (Russell keksi myös CD-ROM:n)
    • 1998, Wond-OROM-a
      • 128 MB/kortti plus lukulaite
      • ei liikkuvia osia
      • sama nopeus kuin CD-ROM:lla
        (siis aika hidas!)
      • pieni virrankulutus
      • sopii kannettaviin laitteisiin
      • hävisi Flash-muisteille
45