maanantai 21. marraskuuta 2016

Rakennetaan tietokone!

Olen silloin tällöin ollut tilanteessa, jossa päädyn selittämään tietokoneen toimintaperiaatetta (normaali ruokatunti Clasussa!). Tietokoneita on kaikkialla, mutta ne ovat eräänlaisia mustia laatikoita, joiden toimintaperiaate on mystinen salatiede. Näin ei ole. Tietokone on pohjimmiltaan äärimmäisen yksinkertainen laite, ja tämä sarja tulee esittelemään sen alkeista ylöspäin.

Matkamme jakautuu yhdeksään osaan kolmen viikon varrella. Tällä viikolla käydään läpi perusteita, joista matematiikka ja logiikka tietokoneen sisällä saavat alkunsa. Ensi viikolla näistä kootaan yksinkertainen tietokone, ja viimeisellä viikolla palasista muodostetaan jokaisen tuntema kokonaisuus. Yritän myös sisällyttää jokaiseen osaan pari tehtävää niille, joilla on aikaa ja kiinnostusta. Viikot ovat jokseenkin erillisiä, joten jokaiselle pitäisi löytyä jotain, toivottavasti.

Jotta sarja pysyisi mielekkäänä, käsittelemme erittäin yksinkertaistettua versiota tietokoneesta. Käsittelemme ohjelmointiakin varsin pintapuolisesti — algoritmien perusteista saisi kasattua toisen samanlaisen sarjan. (Josta voin olla kiinnostunut, jos sille on lukijoita!) Tämä ei opeta rakentamaan tietokonetta tai ymmärtämään Exceliä, mutta ehkä se raottaa hieman verhoa. Aloitetaan!

Logiikan pikakurssi

Tietokoneessa sähkövirralla on kaksi tilaa: päällä tai pois. Sovitaan, että virta tarkoittaa ykköstä ja sen puute nollaa. Virran muokkaaminen on kaikkein alkeellisin taso tietokoneessa. Laitteita, jotka muokkaavat virtaa kutsutaan loogisiksi piireiksi ja ne toteutetaan transistorien avulla. Lähtökohtaisesti tietokone ei ole kuin muutama miljardi transistoria oikeassa järjestyksessä, ja vähän elektroniikkaa niiden tueksi.

Ehkä yksinkertaisin looginen piiri on nimeltään EI (tai NOT). Se kääntää syötteen päinvastaiseksi. Piirien toiminta esitetään usein totuustauluina — nimitys siitä, että ykkönen voidaan tulkita totena ja nolla epätotena — ja EI-piirillä se on seuraavanlainen:

SisäänUlos
01
10

Toinen helposti toteutettava piiri on TAI (OR). Kuten vähän aikaa sitten todettiin, "tai" tarkoittaa "jompikumpi tai molemmat":

Sisään 1Sisään 2Ulos
000
011
101
111

JA (AND) -piiri päästää virran läpi vain, jos kumpikin syöte on ykkönen:

Sisään 1Sisään 2Ulos
000
010
100
111

Ja lopuksi poissulkeva tai eli XOR (eXclusive OR), joka noudattaa sääntöä "jompikumpi mutta ei molemmat":

Sisään 1Sisään 2Ulos
000
011
101
110

Nämä piirit ovat toteutettavissa toistensa avulla, ja siksi on kustannustehokasta kasata mikropiiri käyttäen vain yhdentyyppisiä piirejä. Useimmiten käytetään JA- tai TAI-piirin käänteisiä versioita. Me kuitenkin sivuutamme tämän, ja tulemme käyttämään yllämainittuja operaatioita.

Ykkösten ja nollien salaisuus

Kun nollia ja ykkösiä laitetaan rinnakkain, voidaan esittää lukuja. Nolla ja ykkönen säilyttävät tutun asemansa, mutta miten kirjoitetaan kakkonen? Luvut nollasta kuuteen näyttävät seuraavilta binäärijärjestelmässä:

\[ 0, 1, 10, 11, 100, 101, 110, \dots \]

Meille tutussa kymmenjärjestelmässä lukua 9 seuraa 10. Kirjoitetaan nämä selvemmin auki, jotta ero näkyy: 09 ja 10. Vasemmanpuoleinen numero kasvaa yhdellä, ja niin kasvaa oikeanpuoleinenkin. Yhdeksän on viimeinen numero, joten se "pyörähtää ympäri" nollaksi. Samoin käy binäärijärjestelmässä, mutta paljon useammin, koska numeroita on vain kaksi.

Binäärijärjestelmän nerokkuus on juuri siinä, että kahdella numerolla voidaan esittää kaikki mahdolliset luvut. Näitä numeroita voidaan muokata loogisilla piireillä ja siten toteuttaa yhteenlaskun kaltaisia temppuja. Siihen syvennymme keskiviikkona.


Kokeiltavaksi ja pohdittavaksi

  • Kokeile kirjoittaa eri lukuja binäärilukuina. Verkosta löytyy erilaisia sivustoja tähän, minkä lisäksi tietokoneen laskimen saa valikosta ohjelmointitilaan.
  • Heksadesimaalijärjestelmässä on 16 numeroa: tutut 0-9 ja lisäksi kirjaimet A-F. Selvitä, miten heksadesimaali ja binääri liittyvät toisiinsa.
  • Esitä XOR-piiri TAI- ja JA-piirien avulla.

Ei kommentteja:

Lähetä kommentti

Kommentit ovat moderoituja — yritän hyväksyä kommenttisi mahdollisimman pian. Voit kirjoittaa kommenttiin LaTeX-koodia tai yksinkertaista HTML-merkintää: lue lisää Kommentointi-sivulta.