TIES530 - Sulautettujen järjestelmien arkkitehtuurit Luento 2: Tietokonearkkitehtuurit Jukka Ihalainen, jukka.ihalainen@chydenius.fi Tietoliikennelaboratorio, http://rf.chydenius.fi Yleinen arkkitehtuuri 1
Konsepti Laitteita ja ohjelmistoja lähimpänä rautaa ns. firmware ohjelmisto, joka alustaa laitteiston käynnistyksen yhteydessä tämä on monesti pienen sulautetun järjestelmän itse ohjelmisto bootloader on pieni alkulatausohjelma, joka lataa varsinaisen KJ:n Applications Operating System Firmware Hardware Pöytäkone Application Firmware Hardware Application(s) Operating System Firmware Hardware Iso sulautettu järjestelmä Pieni sulautettu järjestelmä Konsepti kerrosmainen ajattelu firmwaren päällä käyttöjärjestelmä, joka sulautetuissa järjestelmissä on usein reaaliaikainen käyttöjärjestelmä (tehtävien vasteajat oltava pienet tai ainakin niille voitava määritellä vasteaikarajat) KJ tai FW ohjaa laitteen käyttöä (syöttö, tulostus, muisti ) monet sulautetut järjestelmät eivät tarvitse käyttöjärjestelmää, vaan systeemit yksinkertaisesti suorittavat niille ohjelmoitua tehtävää kaukosäädin ei tarvitse käyttöjärjestelmää reititin on sulautettu järjestelmä, jossa usein käyttöjärjestelmä mukana (esim. Cisco IOS) 2
Konsepti Prosessori(t) systeemin ytimenä jokaisella prosessorityypillä oma käskykanta periaate sama: haetaan muistista tieto, tulkitaan se, suoritetaan tieto binäärisenä: 1011 0000 0100 1111 1111 0111 tieto heksana: B0 4F F7 Assemlykielisenä voisi olla: ADD.B #0xFF, W7 ; Add the byte -1 to register W7 Muut laitteet Konsepti prosessorista/kontrollerista/sovelluksesta riippuen erilaisia ympäryslaitteita tarvitaan teholähteitä muistia näyttöjä ja näppäimiä antureita ja toimilaitteita ym. 3
Systeemiarkkitehtuuri Mikrotietokone koostuu mikroprosessori, muistit ja liityntäpiirit osia yhdistää kolme väylää tietoväylä (Data Bus), osoiteväylä (Address Bus) sekä ohjausväylä (Control Bus) lisäksi ulkoisia ohjauksia kuten kello, resetointi ja keskeytykset Yleisiä mikroprosessoreita Intel Pentium Motorola/IBM PowerPC MIPS (SGI Unix, Sony, Nintendo) ARM Ultra SPARC Mikroprosessorit 4
Mikrokontrollerit mikrokontrolleri on prosessorin, muistin ja joidenkin i/o laitteiden integroitu piiri, joka on tarkoitettu käytettäväksi sulautetuissa järjestelmissä valmistajia huomattavasti enemmän kuin mikroprosessoreilla koot vaihtelevat pienistä PIC tai AVR kontrollereista tehokkaisiin 32-bittisiin ARM, PowerPC ym. prosessoreihin Lisäksi SOC prosessorit (System-On-Chip) kuvassa TI/Chipcon CC2430 Von Neumann arkkitehtuuri: 1 muisti (RAM) jossa sekä data että ohjelmakoodi Alkuperäisen Harvard arkkitehtuurin tapauksessa käytettiin kahta muistia joilla omat väylänsä: yksi dataa ja toinen koodia varten. 5
ALU periaatteessa 6 perusfunktiota, joita prosessori voi suorittaa kirjoittaa dataa muistiin tai i/o-laitteelle lukea dataa muistista tai i/o-laitteelta lukea käskyn muistista muokata dataa prosessorien rekistereissä aritmeettis-loogisessa yksikössä (ALU, Arithmetic Logic Unit) suoritetaan datan muokkaus lisäys, vähennys, kertominen, jakaminen, NOT, AND, NAND, OR, NOR, XOR, bittisiirrot ja kierrot 6
Rekisterit prosessorin sisäisiä muistipaikkoja välitetään tietoa paikasta toiseen prosessorin sisällä nimet, määrä ja leveys prosessorikohtaisia esim. CC2430 sisältää erikoisrekistereitä 120 kpl CPU:n rekistereitä:akku (A), R-rekisterit (R0 R7), B- rekisteri, ohjelmalaskuri (PC), dataosoitin (DPTR), pino-osoitin (SP), prosessorin tilasana (PSW) 7
prosessorit toteuttavat yhden tai useamman pinon, joka on väliaikainen muistipaikka käyttömuistissa (RAM) prosessori voi viedä pinoon (PUSH) tietoa rekisteristä ja se voi palauttaa pinosta (POP or PULL) tietoa pino voi täyttyä joko ylhäältä alaspäin (intelin 8086) tai alhaalta ylöspäin (cc2430) Pinot Väylät Osoiteväylä väylän leveys määrää sen kuinka paljon muistia voidaan liittää esim 16 bittinen 2 16 = 65536 osoitettavaa muistipaikkaa osoiteväylän liitäntöjä merkitään yleensä A- kirjaimella (A0, A1, A2,, An) osoiteväylän ylimmät bitit kytkeytyvät tavallisesti osoitekooderille 8
Väylät Osoitekooderi jos mikrotietokoneen muisti koostuu useammasta piiristä tai jos siinä on useampia liitäntäpiirejä niin tarvitaan osoitekooderi, joka selvittää mille piirille väylällä oleva osoite kuuluu Väylät Tietoväylä kaksisuuntainen, leveys 4, 8, 16, 32 tai 64 bittiä tietoväylän liitäntöjä merkitään yleensä D-kirjaimella (D0, D1, D2,, Dn) tietoväylälle kytkeytyvien komponenttien lähtöliitännät ovat ns. kolmitilalähtöjä (Tri-State Output) lähtö voi olla kolmessa tilassa: ala-, ylä- tai suurimpedanssisessa tilassa suurimpedanssinen tila vastaa tilannetta, jossa väylä kytketään irti lähtöliitännästä prosessori huolehtii, että vain yksi komponentti kerrallaan voi liittyä tietoväylään 9
Väylät Yhdistetty tieto- ja osoiteväylä osoite ja data vuorottelevat samoissa prosessorin liitännöissä tyypillinen monissa Intelin prosessoreissa ja kontrollereissa väylän liitäntöjä merkitään usein AD kirjainparilla (AD0, AD1, AD2 ADn) tarvitaan ulkoinen väyläerotin prosessori syöttää yhdistetylle väylälle ensin osoitteen, joka lukitaan lukkopiirin lähtöihin lukituksen jälkeen lukkopiiri irrotetaan ja väylä toimii normaalina tietoväylänä Väylät Ohjausväylä tuloja ja lähtöjä näillä prosessori ohjaa laitteita (luku/kirjoitus) näistä prosessori myös saa tietoa laitteilta 10
Big-endian ja Little-endian prosessori voi tallettaa tietoa kahdella eri tavalla (koskee 16 bittisiä tai suurempia sanoja) big-endian tapauksessa prosessori tallettaa sanan eniten merkitsevän tavun vähiten merkitsevään osoitteeseen little-endian tapauksessa sanan eniten merkitsevä tavu eniten merkitsevään osoitteeseen Address Long word Word Byte Address Long word Word Byte 0100h 0101h 0102h 0103h 78 56 34 12 34 12 12 Little endian 0100h 0101h 0102h 0103h 12 34 56 78 12 34 12 Big endian Keskeytykset interrupt, trap, exception sulautettujen ohjelma suoritaa päättymätöntä silmukkaa ohjattavassa prosesissa tulee usein eteen tilanne, johon pitää reagoida mahdollisimman nopeasti (näppäimen painallus, sarjaporttiin tulee merkki, ajastimen tai laskurin ylivuoto jne.) ei ole mielekästä laittaa prosessoria pollaamaan tapahtumia; käytetään keskeytyksiä kun tapahtuu keskeytys (ja keskeytykset ovat sallittuja) niin prosessori suorittaa ensin meneillään olevan käskyn loppuun, tallentaa nykyisen tilansa (rekisterit, ohjelmalaskuri) pinoon (PUSH) ja lataa keskeytysvektorin alkuosoitteen ohjelmalaskuriin kun keskeytysohjelma päättyy niin prosessorin talletettu tila palautetaan ja ohjelma jatkuu normaalisti 11
Keskeytykset laitteistokeskeytykset prosessorilla voi olla yksi tai useampi ulkoinen keskeytyslinja jos yksi linja ja useita laitteita niin keskeytysrutiinissa pollattava mikä laite aiheutti keskeytyksen jos linjoja useampia niin ohjelma voi suoraan hypätä oikeaan keskeytysrutiiniin (ISR) nopea laitteistokeskeytys (fast hardware interrupt) keskeytyksen sattuessa vain ohjelmalaskurin arvo talletetaan, ISR tallettaa muut tarvittaessa Keskeytykset ohjelmistokeskeytys ulkoisten keskeytyslinjojen lisäksi keskeytys voi tulla esim ajastimesta 12
Vahtikoira-ajastin on ajastin, joka asettaa signaalin, jos laskuri saavuttaa jonkin tietyn raja-arvon (tai nollan) ellei laskuria käynnistetä uudelleen. Jos kaikki toimii niin laskuri ei saavuta raja-arvoa koskaan vaan ohjelma ehtii alustamaan ajastimen ennen rajaarvon saavuttamista. Jos raja-arvo saavutetaan niin ohjelmassa on jotain vialla (kaatunut) ja ajastimen asettama signaali resetoi järjestelmän. CISC ja RISC kaksi prosessorien perusarkkitehtuuria CISC (Complex Instruction Set Computer) Intel x86, Motorola 68xxx vähän rekistereitä ja paljon käskyjä (käskyjen dekooderi monimutkainen ja hidas), iso pinta-ala ja kuuma RISC (Reduced Instruction Set Computer) PowerPC, ARM, Atmel AVR, Microchip PIC paljon rekistereitä (jopa 1000), vähän käskyjä esim. kertolasku kokonaisluvuilla voi viedä 80486 CISC prosessorilta 42 kellojaksoa ja RISC prosessorilta vain yhden kellojakson 13
CISC ja RISC clear 0x1000 ; clear memory location 0x1000 load r1, #5 ; load register 1 with the value 5 xor r1, r1 ; clear register 1 store r1, 0x1000 ; clear memory location 0x1000 add r1, #5 ; load register 1 with the value 5 DSP erikoisprosessoreita tarkoitettu reaaliaikaisen signaalin muokkaamiseen GSM, modeemit, äänikortit, mittalaitteet yleensä Harvard-arkkitehtuuri, lisäksi data-alue voitu jakaa vielä kahteen tai useampaan osaan mahdollistaa yhtäaikaisen datan haun nopeuttaa 14
Muistit ohjelmamuistia (yleensä lukumuistia, ROM) käyttömuistia (luku/kirjoitusmuistia, RAM) nimityksiä RAM, ROM, EPROM, EEROM, Flash 65536 rivä Osoite Tieto MSB LSB 0000h 0 1 0 1 0 1 0 1 0001h 1 0 0 0 1 1 1 0 0002h 0 0 0 0 0 0 0 1 0003h 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 FFFEh 0 0 1 0 0 1 0 0 FFFFh 1 1 0 1 0 1 0 0 Bitti Tavu Muistit luku- ja kirjoitusmuistin yksinkertaistettu symboli 8-bittinen datalinja 15-bittinen osoitelinja kapasiteetti 32 KB piirinvalintasignaali (CS, Chip Select) (aktiivinen alatilassa) kirjoituksen sallinta (WE, Write Enable) lähdön sallinta (OE, Output Enable) 15
Muistit Aikakaaviot 1. osoite muistipiirille 2. piiri valitaan 3. piirin lähtö sallitaan 4. muistipaikan tieto asettuu lähtöihin 5. lähdön sallinta ylätilaan 6. lähdöt suurimpedanssiseen tilaan 7. piirinvalinta ylätilaan 8. seuraava jakso alkaa Osoite CS OE Tieto Osoite CS WE Tieto 1 2 3 4 5 6 7 8 Muistipiirin lukujakso Muistipiirin kirjoitusjakso I/O Liitäntäpiirien avulla mikrotietokone yhteydessä ympäröivään elektroniikkaan (näppäimet, näytöt, releet, muuntimet, ) näkyvät prosessorille yhtenä tai muutamana muistiosoitteena (rekisterinä) tiedonsuuntarekisteri, jonka biteillä valitaan onko liitäntä tulo (0) tai lähtö (1) liitäntöjen tilat voidaan lukea tietorekisteristä samoin kun lähtöjen tieto kirjoitetaan tietorekisteriin 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 Tiedonsuuntarekisteri Tietorekisteri IO7 IO6 IO5 IO4 IO3 IO2 IO1 IO0 16
I/O Liitäntäpiirissä voi olla useita I/O portteja (A, B,..) kuvan piirissä kaksi porttia, jolloin tarvitaan 4 rekisteriä rekisterit voidaan osoittaa kahdella rekisterinvalintalinjalla Sulautettujen arkkitehtuuri Pöytäkoneessa tehokas CPU, paljon keskusmuistia, käyttöjärjestelmä, sovelluksia, paljon massamuisteja, erilaisia I/O laitteita ja verkko- ym. liitynnät suuret sulautetut järjestelmät vastaavanlaisia reitittimet, puhelinkeskukset, automaatiojärjestelmät, lentokoneet, laivat, 17
Sulautettujen arkkitehtuuri pienemmät sulautetut järjestelmät käyttävät mikrokontrollereita, jotka sisältävät yhdellä piirillä samoja toimintoja mitä koko tietokonejärjestelmätkin mikrokontrollerissa on minimissään CPU, pieni määrä muistia (RAM ja/tai ROM) 18
Digitaalinen signaali bitit esitetään jännitetasoina loogista nollaa vastaa maapotentiaali eli 0V loogista ykköstä vastaa yleensä käyttöjännite, joka voi olla esim. 1.8V, 2.7V, 3.3V, 5V, 12V loogiset tasot ovat jotain maapotentiaalin ja käyttöjännitteen välillä 19
esim AtMega128 Kynnysjännittet 20
Skeman lukeminen esimerkkinä IR-valolla toimiva kauko-ohjain järjestelmän yleiskuvaus Laitteistolla voidaan vastaanottaa IR-signaaleja toisesta kaukoohjaimesta, dekoodata ne binäärisiksi ohjauskoodeiksi, tallettaa niitä laitteiston EEPROM muistiin ja lähettää vastaanotettu koodi PC:lle sarjayhteyttä pitkin. Laite voi toimia myös ns. välittävänä laitteena, jolloin se PC:ltä saamansa ohjauskoodin ensin koodaa IR-signaaliksi ja sitten lähettää vastaanotinlaitteelle. Laite voi toimia myös itsenäisenä kauko-ohjaimena, jolloin sillä voidaan valita jokin EEPROM-muistiin tallennettu koodi ja lähettää se vastaanottimelle. Skeman lukeminen laitteistoarkkitehtuuri mikrokontrollerina käytetään Atmelin ATMega32, joka käyttää 7.2837 MHz:n ulkoista kidettä ohjelmointiin ja debuggaukseen laitteistosta löytyy JTAG- ja ISP-liittimet näyttönä käytetään 4x16 merkin LCD-näyttöä yhteys PC:hen on toteutettu standardin RS-232 liitynnän kautta laitetta voidaan ohjata kolmella näppäimellä. Näppäimet toimivat keskeytysperiaatteella. IR-led ja IR-vastaanotin on kytketty kuvan osoittamiin I/O-liityntöihin 21
ISP ohjelmointiliitin RESET (SS) PB4) (MOSI) PB5 (MISO) PB6 (SCK) PB7 RESET PA0 PA1 PA2 PA4 PA5 PA6 PA7 LCDnäyttö 7.2837 MHz kide XTAL2 XTAL1 ATMega 32 K1 RS-232 (RX) PD0 (TX) PD1 (INT0) PD2 PD3 PD4 PD5 (TDI) PC5 (TDO) PC4 (TMS) PC3 (TCK) PC2 JTAGliitin K2 K3 Näppäinohjaus, suodatus (ICP1) PD6 PD7 IR-TX IR-RX mikrokontrolleri Skeman lukeminen VCC PB[5:8] ISP LCD control PA[0:2] SW1 RESET R1 100k C2 22p C3 22p PB8 Y1 7.3728MHz Serial PD[0:1] Keyboard PD[2:5] PB5 PB6 PB7 PB8 VCC PD0 PD1 PD2 PD3 PD4 PD5 PD6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 U1 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 /RESET VCC GND XTAL2 XTAL1 PD0 PD1 PD2 PD3 PD4 PD5 PD6 ATmega32 40 PA0 39 PA1 38 PA2 37 PA3 36 PA4 35 PA5 34 PA6 33 PA7 32 AREF AGND 31 AVCC 30 29 PC7 28 PC6 27 PC5 26 PC4 25 PC3 24 PC2 23 PC1 22 PC0 21 PD7 PA0 PA1 PA2 PA4 PA5 PA6 PA7 VCC PC5 PC4 PC3 PC2 LCD data JTAG IR-tx PA[4:7] PC[2:5] PD7 PD6 IR-rx 22
sarjaliityntä Skeman lukeminen VCC U3 U7 1u C6 + 1u C7 + 1 2 3 4 5 6 7 8 C1+ VCC 16 V+ GND 15 14 C1- T1OUT C2+ R1IN 13 12 C2- R1OUT V- T1IN 11 T2OUT T2IN 10 9 R2IN R2OUT PD0 PD1 1 2 3 4 5 DCD Rx Tx DTR GND 9 RI CTS 8 RTS 7 DSR 6 D9_FEMAL MAX232CPE C8+ 1u + C9 1u PD[0:1] Mikrokontrolleri IR-led JTAG -liitin IR-vastaanotin Reset-painike LCD-näyttö UP-, DOWN- ja SELECTpainikkeet Kontrastin säätö ISP ohjelmointiliitin RS-232 liitin 23
Tietokonelogiikka Lukujärjestelmistä tietokonepuolella yleisimpiä binääri- ja heksajärjestelmät bittejä (bits, b), tavuja (bytes, B), sanoja (words) binääriluvun desimaaliarvo voidaan laskea 2 i b i i b = bitin i arvo(0 tai1) n = luvun pituus bitteinä vaadittavien bittien määrä saadaan n 1 = i= 0 ln( n) bits = log 2 ( n) = n = kymmenjärjestelmän luku ln(2) 24
Lukujärjestelmistä muunnokset lukujärjestelmien välillä esim. IPv4-osoite on 32-bittinen, jolloin oktetteina esitetty osoite 192.168.137.77 on binäärisenä 11000000 10101000 10001001 01001101 heksalukuna se olisi C0 A8 89 4D ja desimaalisena 3 232 270 669 kannattaa muistaa: 10 bitillä voi esittää 1024 vaihtoehtoa 11 bitillä kaksinkertaisen määrän, 12 bitillä taas kaksinkertaisen määrän eli 4096. Porttipiirit aiemmin oli hyvin yleistä, että ohjauslogiikka tehtiin erillislogiikalla piirilevylle nykyään logiikan tehtäviä hoitaa useimmiten yksi tai useampi mikrokontrolleri 25
Porttipiirit 26