Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.



Samankaltaiset tiedostot
Tietokoneen rakenne: Harjoitustyö. Motorola MC prosessori

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

TIES325 Tietokonejärjestelmä. Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos

Osoitin ja viittaus C++:ssa

Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)

1. Keskusyksikön rakenne

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??)

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

Algoritmit 1. Luento 3 Ti Timo Männikkö

2 Konekieli, aliohjelmat, keskeytykset

Älykännykät ovat pieneen tilaan paketoituja, mutta suuret ominaisuudet omaavia tietokoneita.

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Monipuolinen esimerkki

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

Tutoriaaliläsnäoloista

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

11/20: Konepelti auki

Kontrollerin sisäisten komponenttien käytöstä. Vielä vähän asiaa sisäisten lohkojen käytöstä

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Laitteistonläheinen ohjelmointi

Ohjelmoinnin perusteet Y Python

Moderneissa grafiikkakorteissa hyödynnetään myös samanlaista toimintamallia

Suunnitteluautomaatio

Ohjelmoinnin peruskurssien laaja oppimäärä

Käyttöjärjestelmät: prosessit

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Tietueet. Tietueiden määrittely

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmoinnin perusteet Y Python

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out

Tehtävä 2: Tietoliikenneprotokolla

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Algoritmit 1. Luento 10 Ke Timo Männikkö

Arto Salminen,

4.2. ALIOHJELMAT 71. Tulosvälitteisyys (call by result) Tulosvälitteinen parametri kopioidaan lopuksi

Ohjelmistojen suunnittelu

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Stallings, Luku 4.1. KJ-I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 4-1. KJ-I I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 12-1

Ohjelmoinnin perusteet Y Python

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

ITKP102 Ohjelmointi 1 (6 op)

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

ROSSI-AVR Versio 1.1, päivitetty

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Kappale 20: Kantaluvut

811120P Diskreetit rakenteet

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Muutamia peruskäsitteitä

OHJ-4301 Sulautettu Ohjelmointi

Alityypitys. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

IT K 1 45 K ä yt t öj ä rj estelmät

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Algoritmit 1. Luento 10 Ke Timo Männikkö

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Mitä Uutta - SURFCAM V5.1 Sisällysluettelo

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Käännös, linkitys ja lataus

SISÄLLYS sisällys 1 Tietokoneen toimintaperiaate ja käyttö 2 Tietokoneen historia 3 Tietokoneen rakenteen ja toiminnan perusteet

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Numeeriset menetelmät

YKSIKÖT Tarkista, että sinulla on valittuna SI-järjestelmä. Math/Units Ohjelma tulostaa/käyttää laskennassaan valittua järjestelmää.

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen,

Testiraportti Android virtuaalikone vs. natiivikoodi Ville Laine, Delta 23

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Luento 5 (verkkoluento 5) Suoritin ja väylä

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Ohjelmoinnin perusteet Y Python

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

Ohjelmoinnin peruskurssi Y1

Opiskelukyky, stressinhallinta ja ajanhallinta

Tietorakenteet ja algoritmit

Tietorakenteet (syksy 2013)

A TIETORAKENTEET JA ALGORITMIT

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Tietorakenteet ja algoritmit

Jatkeet. TIES341 Funktio ohjelmointi 2 Kevät 2006

ltöä (Luennot 5&6) Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS Pikakertaus: : a) b) c) Dyn.. part.: sijoitus Kuva Buddy System: esimerkki

Transkriptio:

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. On arvioitu, että maailmassa on tällä hetkellä enemmän sulautettuja tietokoneita kuin yleiskäyttöisiä. Sulautettujen tietokoneiden määrä kasvaa nopeammin kuin yleiskäyttöisten, joten on selvää että kaiken kattavaa määritelmää on vaikea esittää.

Herätteisiin reagointi voidaan toteuttaa monella eri tavalla. Yksinkertaisin tapa on kiertokysely eli pollaus, jossa käydään esim. jokainen oheislaite läpi vuorollaan ja tarvittaessa suoritetaan laitteen vaatimat toimenpiteet. Kiertokysely toimii kohtuullisesti kevyesti kuormitetussa järjestelmässä, mutta raskaalla kuormituksella viive kahden pollauksen välillä venyy helposti liian pitkäksi. Tyypillisesti herätteet priorisoidaan jollain tavalla. Yksinkertaisimmillaan priorisointi voidaan hoitaa siirtämällä aikakriittinen käsittely keskeytysrutiineihin ja tekemällä vähemmän kriittiset asiat pääohjelman puolella. Tapahtumien priorisointi ja ajoituksen varmistaminen on yksi sulautettujen järjestelmien hankalimmista asioista. Pelkästään huolellisella ohjelman kirjoittamisella ei voi taata oikeaa ajoitusta, vaan yleensä tueksi tarvitaan formaaleja menetelmiä tai mallinnusta. Hyvä ohjelmistoarkkitehtuuri ja huolellinen koodaus toki tekee elämän helpommaksi siinä vaiheessa kun järjestelmään (väistämättä) tulee muutoksia.

Volatile-lisämääre estää kääntäjää siirtämästä muuttujaa rekisteriin, jolloin jokainen viittaus muuttujaan menee suoraan muistiin. Kääntäjä ei myöskään optimoi viittausten lukumäärää esimerkiksi silmukan tapauksessa vaan jokainen viittaus myös toteutetaan. Muistiavauruuteen sijoitettujen IO-laitteiden rekisterit voivat vaihtaa tilaansa milloin tahansa kahden lukukerran välissä, joten turhien lukemisten pois optimointi johtaa todennäköisesti virheelliseen toimintaan. Nykyprosessoreissa käskyt suoritetaan liukuhihnalla ja prosessori saattaa jopa vaihtaa käskyjen suoritusjärjestystä, joten ohjausrekisterien käsittelyjärjestyksen takaaminen saattaa vaatia lisäkäskyjen tai vihjeiden antamista prosessorille. Vihjeet ovat käskyjä, jotka eivät varsinaisesti tee mitään, mutta niiden avulla prosessorille annetaan ohjeita käskyjen suorituksesta. Memory barrier-käsky kertoo prosessorille, että kaikki ennen sitä annetut muistiviittaukset on käsiteltävä loppuun ennen kuin sen jälkeen tulevia muistiviittauksia voidaan käsitellä.

Yksittäisten bittien tai bittiryhmien muokkaukseen käytettävät operaatiot tunnetaan myös nimillä shift and mask. Operaatiossa bittiryhmän arvoa ajatellaan pieneksi kokonaisluvuksi, joka siirto-operaation avulla siirretään oikeaan kohtaan esim. 32-bittisessä luvussa. Maskien avulla muutokset voidaan kohdistaa koskemaan ainoastaan haluttuja bittejä. Esimerkiksi muutetaan 32-bittisen luvun bittejä 13-15, siten että muut bitit eivät muutu. Muutettava luku on SFR ja arvo joka asetetaan on val. SFR = (SFR & 0xFFFF1FFF) (val << 13); Tai SFR = (SFR & ~0xE000) (val << 13); Tai SFR &= ~0xE000; SFR = val << 13;

Vaikka abstraktiotaso on matala, niin silti voidaan käyttää rajapintoja, jotka helpottavat ohjelmien tai moduulien siirtämistä ympäristöstä toiseen. ARM on määritellyt Cortex Microcontroller Software Interface Standardin (CMSIS), joka on valmistajariippumaton laitteistorajapinta, jota käyttämällä ohjelmistojen siirtäminen eri valmistajien ARM-prosessoreiden välillä on helpompaa. CMSIS on laaja määrittely, joka pitää sisällään myös sovellustason rajapintoja. Standardin ydinosiin kuuluu rajapinnat prosessorin ohjausrekistereiden ja keskeytysten hallintaan.

Ohjelmien ja funktioiden yhteensopivuuden varmistamiseksi ohjelmointikielten kääntäjät kääntävät kaikki funktiot kutsusopimuksen (procedure/function call standard) mukaisesti. Kutsusopimus pitää sisällään periaatteet prosessorin rekisterien yhteiskäytöstä, parametrien välityksestä ja tulosten palauttamisesta. Kutsusopimuksen avulla kääntäjä tietää mm. mitkä rekisterit voivat muuttua aliohjelmakutsun (=funktio) aikana ja osaa sen perusteella tallettaa esim. laskennan välitulokset funktiokutsujen välillä. Keskeytyksen tapahtumahetkeä ei voi ennustaa, joten keskeytysrutiinin on käytännössä talletettava kaikki rekisterit, joita keskeytysrutiinissa käytetään, jotta se ei sotke keskeytetyn ohjelman toimintaa. Yleensä kääntäjälle voidaan lisämääreellä kertoa, että funktio on keskeytysrutiini, joilloin kääntäjä lisää rutiinin alkuun prosessorin tilan tallennuksen ja loppuun tilan palautuksen. ARM Cortex M3:ssa keskeytysrutiinit voi kirjoittaa suoraan C:llä, mikäli kääntäjä noudattaa AAPCS:ää (ARM Architecture Procedure Call Standard), sillä prosessori tallettaa automaattisesti AAPCS:n mukaiset rekisterit. Jos käytössä on skeduleri/käyttöjärjestelmä, joka mahdollistaa kontekstin vaihdon, niin silloin kontekstin vaihdossa on pakko käyttää jonkun verran assemblyä.

Keskeytyksen tapahtuessa prosessorin tila tallennetaan pinomuistiin, koska pinoon voidaan viitata tietämättä sen absoluuttista osoitetta, mikä mahdollistaa joustavan toiminnan, koska tallennuspaikkaa ei tarvitse tietää ennalta. C:ssä paikalliset muuttujat varataan pinosta, jolloin ylimääräistä pinomuistia tarvitaan prosessorin tilan tallennuksen vaatima määrä plus paikallisten muuttujien käyttämä tila plus mahdollisesti muiden kutsuttujen funktioiden käyttämä tila. Periaatteessa keskeytysrutiinista voi kutsua mitä tahansa funktiota, mutta yleensä esim. C:n standardikirjastofunktioita ei ole suunniteltu kutsuttavaksi keskytysrutiinista. Tyypillisesti keskeytysrutiini pyritään pitämään mahdollisimman lyhyenä ja helposti analysoitavana.

Jos järjestelmä sallii sisäkkäiset keskeytykset, niin keskeytyksille pitää varata pinosta tilaa niin paljon että kaikkien mahdollisesti sisäkkäin olevat keskeytysten käyttämä tila mahtuu pinoon yhtä aikaa. Pinon kulutusta voidaan helposti seurata esim. alustamalla pinolle varattu muistialue tiettyyn arvoon ja tutkimalla miten suuri osa arvoista on muuttunut pinon käytön seurauksena. Pinon kulutuksen jatkuva seuranta ohjelmallisesti kuluttaa resursseja. Osa kääntäjistä tukee pinon kulutuksen ohjelmallista seurantaa. Seurannan ollessa käytössä kääntäjä lisää funktiokutsujen yhteyteen pinon ylivuototarkistukset. Jos kääntäjän tukea ei ole se voidaan toteuttaa käyttöjärjestelmän yhteyteen tai yksikertaisesti lisätä tarkistuskutsut sopiviin paikkoihin. Joissakin prosessoreissa on mahdollista käyttää erillistä keskeytyspinoa, jolloin pinon käytön analysointi on helpompaa. Prosessorissa, jossa on muistinhallintayksikkö (MMU tai MPU) voidaan pinon käyttöä ja ylivuotoja valvoa laitteistotasolla.

Keskeytysvaste muodostuu prosessorin keskeytysvasteesta ja sekä ajasta, jonka keskeytykset ovat estettynä. Käyttöjärjestelmäkutsuissa on usein kriittisiä sektioita, joiden yhteydessä keskeytykset on estetty. Vaikka järjestelmä itsessään olisi pehmeä reaaliaikajärjestelmä, niin keskeytystasolla toiminta pyritään toteuttamaan kovan vaatimustason mukaan ja jos järjestelmän suorituskyky ei riitä, niin tietojen hukkaaminen on yleensä turvallisempaa tehdä ylemmillä protokollatasoilla.

Jos ohjelma kirjoitetaan suoraan prosessorille, niin keskeystysvasteen kannalta järkevintä on estää ainoastaan ne keskeytyket, jotka käsittelevät kyseistä muistialuetta. Eri liitäntälaitteilla on yleensä oman jononsa, joten yhden laitteen jonon käsittelyn ajaksi ei tarvitse estää kuin kyseisen liitäntälaitteen keskeytykset. Käyttöjärjestelmään käytettäessä kommunikointiin käytetään käyttöjärjestelmän palveluja esimerkiksi semaforeja tai jonoja, jolloin tarve keskeytysten estämiseen vähenee huomattavasti.