14. Kohti hajautettuja sulautettuja järjestelmiä

Samankaltaiset tiedostot
14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta

Matematiikan tukikurssi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Arto Salminen

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

2.2 Täydellinen yhtälö. Ratkaisukaava

Lisää segmenttipuusta

Käyttöjärjestelmät: Virtuaalimuisti

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

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

OHJ-4301 Sulautettu Ohjelmointi

Tips & Tricks for TestStand development NI Days 2013

Johdatus diskreettiin matematiikkaan Harjoitus 7,

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Dynaamisen järjestelmän siirtofunktio

Markkinoiden helpoin ja käytännöllisin IP Kamera

Sähköpostiohjeet. Tehokas ja huoleton sähköposti

Huomaathan, että ohjeessa olevat näytöistä otetut kuvat voivat poiketa sinun koulutuksesi vastaavien sivujen kuvista.

TILASTOLLINEN LAADUNVALVONTA

OHJ-1151 Ohjelmointi IIe

IV-kuntotutkimushanke_tutkijat

Epäyhtälön molemmille puolille voidaan lisätä sama luku: kaikilla reaaliluvuilla a, b ja c on voimassa a < b a + c < b + c ja a b a + c b + c.

SKYPE-RYHMÄN LUOMINEN

CUDA. Moniydinohjelmointi Mikko Honkonen

Dynaaminen hankintajärjestelmä. Kuntatalo Katariina Huikko Lakimies, Suomen Kuntaliitto

Mielestämme hyvä kannustus ja mukava ilmapiiri on opiskelijalle todella tärkeää.

KÄYTTÖOHJE FLSNIF KÄYTTÖÖNOTTO V2.2 ( ) 1 (5)

Sonera Hosted Mail -palvelun käyttöohje

SIS. Vinkkejä Ampèren lain käyttöön laskettaessa magneettikenttiä:

Käyttövaltuushallintaa kehitetään (SAP IDM -projekti), hyödyt virastoille

Esimerkkejä derivoinnin ketjusäännöstä

monissa laskimissa luvun x käänteisluku saadaan näyttöön painamalla x - näppäintä.

Matematiikan tukikurssi 3.4.

Outlook Microsoft Outlook 2007 PIKAOHJE: SÄHKÖPOSTIN UUSI ILME. Kieliversio: suomi Materiaaliversio 1.0 päivitetty

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

TW- EAV510: WDS- TOIMINTO KAHDEN TW- EAV510 LAITTEEN VÄLILLÄ

Moodle HOPS-työskentelyn tukena

P A R T. Professional Assault Response Training Seppo Salminen Auroran koulu. Valtakunnalliset sairaalaopetuksen koulutuspäivät

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Message Broadcasting. Käyttöympäristö. Message Broadcasting -laajennuksen asentaminen. Viestien luominen

TURVAVÄYLÄSEMINAARI. Erilaiset kenttäväylät ja niiden kehitys Jukka Hiltunen

Kuusamon kaupungin ohjeistus PALVELUSETELI- JA OSTOPALVELUJÄRJESTELMÄN KÄYTTÖÖN

Matematiikan tukikurssi

Sähköstaattisen potentiaalin laskeminen

AJOK/KEAJ/IAJOK. Koetallennus


SUOMALAISET PK-YRITYKSET EIVÄT LUOTA PILVIPALVELUIHIN

DownLink Shared Channel in the 3 rd Generation Base Station

Induktio kaavan pituuden suhteen

etunimi, sukunimi ja opiskelijanumero ja näillä

Oletetaan, että funktio f on määritelty jollakin välillä ]x 0 δ, x 0 + δ[. Sen derivaatta pisteessä x 0 on

Marjan makuisia koruja rautalangasta ja helmistä -Portfolio

Kuva maailmasta Pakettiverkot (Luento 1)

- Valitaan kohta Asetukset / NAT / Ohjelmallinen palvelin - Seuraavassa esimerkki asetuksista: valitaan käytössä oleva ohjelmistorajapinta

Mobiiliturva Palvelun käyttöönotto

ESR-Henkilö. Tunnistautuminen ESR-Henkilö -järjestelmässä

Ohjelmistopäivitykset Käyttöopas

Verkkotehtäviin pohjautuva arviointi matematiikan opetuksessa

MS-A Matriisilaskenta Laskuharjoitus 3

(x 0 ) = lim. Derivoimissääntöjä. Oletetaan, että funktiot f ja g ovat derivoituvia ja c R on vakio. 1. Dc = 0 (vakiofunktion derivaatta) 2.

Tech Conference Windows 10 viimeinen Windowsversio? Sami Laiho Senior Technical Fellow, MVP. #TechConfFI

TimeEdit henkilökunnan ohje

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Syksyn aloituskampanjat lippukunnissa

Ohje PhotoPortaalin käytöstä

Tutustu merkintöihin! Tärkeää tietoa siitä, miten varmistat pesu- ja puhdistusaineiden käytön turvallisuuden kotona

Aluksi Kahden muuttujan lineaarinen epäyhtälö

Ohje hakulomakkeen täyttämiseen yliopistohaku.fi -palvelussa

1 / 11. Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto. Pikaopas Maxwelliin. ARK-A2500 DA-alkeet Elina Haapaluoma, Heidi Silvennoinen Syksy 2015

Windows Live SkyDrive - esittely

LIITE. asiakirjaan. komission delegoitu asetus

HE 226/2008 vp. Esityksessä ehdotetaan muutettavaksi työttömyysturvalakia

Kolme pientä opinto-ohjaajaa ja suuren suuri lukio

Ulkoiset mediakortit Käyttöopas

Ehdotus NEUVOSTON PÄÄTÖS

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

Tekijät: Hellevi Kupila, Katja Leinonen, Tuomo Talala, Hanna Tuhkanen, Pekka Vaaraniemi

ABT 2000kg Haarukkavaunun käyttöohje

KiVa Koulu tilannekartoituskysely 2016 sivu 1/31. KiVa Koulu tilannekartoituskysely 2016 sivu 2/31. KiVa Koulu tilannekartoituskysely 2016 sivu 3/31

Avaruus eli stereoisomeria

Tehtävä 2: Tietoliikenneprotokolla

11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa

MAA10 HARJOITUSTEHTÄVIÄ

Avoimia liiketoimintamahdollisuuksia? Liiketoiminta ja avoin paikkatieto -talviseminaari Torstaina

Tietoturva langattomissa verkoissa. Anekdootti

Diskreetit rakenteet

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

Kokemusasiantuntijan tarina. Kasvamista kokemusasiantuntijaksi

KiVa Koulu henkilökunnan tilannekartoituskysely 2016 sivu 1/14. KiVa Koulu henkilökunnan tilannekartoituskysely 2016 sivu 2/14

Luento 6. June 1, Luento 6

Yleinen malliprediktiivinen säädin. Funktiolohko Siemens PLC. SoftControl Oy

Miksi kysyttäisiin sosiaalityön asiakkailta?

Korvakäytäväkojeiden käyttöohje

Suomen Lions-liitto ry Käyttäjätunnus ja sisäänkirjautuminen MyLCI - Käyttäjäohje Versio

Aurinkoenergiajärjestelmien etäseurantajärjestelmä

VideoJet X10/X20/X40. Verkkovideopalvelin. Pika-asennusopas

Lue ohjeet huolellisesti ennen laitteen käyttöä.

Rinnakkaistietokoneet luento S

8. EMC-direktiivi ja standardihierarkia

Transkriptio:

Kohti hajautettuja sulautettuja järjestelmiä 229 14. Kohti hajautettuja sulautettuja järjestelmiä Yhä useammin sulautetut järjestelmät muodostavat monimutkaisempia järjestelmiä kytkeytymällä toisiinsa. Esimerkkejä tällaisista järjestelmistä ovat autot, metsäkoneet, hissit, ja kaivoskoneet, joista jokaisessa on useita tietokoneyksiköitä hoitamassa erilaisia tehtäviä ja joiden yhteistoiminta johtaa koko laitteen oikeaan toimintaan. Lisäksi myös tavallisimmin käytössä olevat laitteet, kuten esimerkiksi matkapuhelimet, ovat yhä useammin sisäisesti hajautettuja, sillä niiden toiminta on usein niin erikoistunutta, että laitteeseen kannattaa asentaa erillisiä komponentteja esimerkiksi GSM-signaalin purkamista varten. Seuraavassa tutustumme joihinkin tällaisten järjestelmien suunnitteluun ja toteuttamiseen liittyviin haasteisiin. Lisäksi esittelemme joukon protokollia ja arkkitehtuureja, joita järjestelmien toteutuksessa voidaan käyttää. 14.1 Johdanto Perinteisesti sulautetut järjestelmät on pyritty toteuttamaan siten, että niihin on liittynyt mahdollisimman vähän dynaamisia ominaisuuksia. Tästä syystä monet hajautetut sulautetut järjestelmät on toteutettu siten, että jokaista järjestelmää varten on oma väyläyhteytensä suoraan keskustietokoneelle, jolloin järjestelmät ovat voineet kommunikoida suoraviivaisesti ja ennustettavasti. Yksi viime aikojen suurista muutoksista on ollut, että yhä useammin hajautettujen sulautettujen järjestelmät kytkeytyvät toisiinsa yhteistä väylää käyttäen perinteisen mallin sijaan, jossa eri laitteista oli lähes aina oma väylöitys keskusyksikköön. Keskitettyyn väylään siirtyminen on huomattavasti kustannustehokkaampaa ja kätevämpää, sillä uuden laitteen lisääminen ei johda väylöitysarkkitehtuurin muutokseen,

230 Sulautettu ohjelmointi mikä puolestaan vähentää suunnittelu- ja valmistuskustannuksia. Voi jopa olla niin, että kaikissa erilaisissa laitteissa käytetään samaa laitteistoa, ja erilaiset asiakaskohtaiset ominaisuudet toteutetaan ohjelmistolla. Huonona puolena suuntauksessa voidaan pitää kasvaneen dynaamisuuden myötä kasvaneita laadunvarmistushaasteita. Esimerkiksi yhteisellä väylällä tapahtuvat kilpailutilanteet, jossa vain yksi tietokone onnistuu lähettämään viestinsä ja muut joutuvat odottamaan vuoroaan, voivat johtaa hankaliin ongelmiin ajoituksen suhteen, ja näistä ongelmista on esimakua saatu joissakin automalleissakin. Toinen erikoispiirre on, että myös loppukäyttäjä saattaa havaita toimintaan liittyvät ongelmat, mikä puolestaan voi johtaa luottamuksen romahtamiseen koko laitteen osalta. Ymmärrettävistä syistä tämä puolestaan voi johtaa teknisistä ongelmista taloudellisiin ongelmiin valmistajan kannalta tilannetta tarkastellessa. Hajautetun järjestelmän yhteydessä tulee ajankohtaiseksi myös dynaaminen skedulointi koko järjestelmän tasolla. Kokonaisuuden kannalta hajautetun järjestelmän dynaaminen skedulointi on ongelmallista, sillä tehtäviä voi syntyä missä tahansa koneessa, eikä missään kohtaa järjestelmää voida tietää jokaisen koneen tarkkaa tilaa. Ongelma jaetaankin kahtia: skedulointi tehdään paikallisesti, ja jos paikallinen skedulointi ei onnistu, niin vasta sitten etsitään verkosta sopivaa konetta. Toisaalta sulautettujen järjestelmien yhteydessä tilannetta rajoittaa se, että eri suorittimet ja laitteet ovat erikoistettuja jonkin tehtävän hoitamiseen, eikä yksikään toinen laite järjestelmässä välttämättä kykene samaan. Symmetrisen suorituksen tapauksessa voitaisiin periaatteessa lähteä myös siitä, että eri suorittimien kuormaa tasoitetaan. Tämän mahdollistavat algoritmit eivät ole käyttökelpoisia reaaliaikajärjestelmässä, koska oikean suorittimen löytämiseen kuluu liikaa aikaa. Ongelman hankaluus johtuu siitä, että kokonaistilaa ei voida tuntea. Testeissä täysin satunnainen algoritmi on toiminut yhtä hyvin kuin perusteellisen pohdinnan tekevä algoritmi, huomattavasti nopeammin vain. 14.2 Hajautettujen järjestelmien väyliä Tässä kohdassa tarkastellaan lyhyesti kahden suhteellisen yleisen väyläratkaisun ominaisuuksia. Näistä CAN-väylä on hankalien paikkojen väylä, jolla on reaaliaikaominaisuuksia, ja LON-väylä on tarkoitettu alunperin rakennusautomaatioon, mutta on levinnyt moniin muihinkin sovellusalueisiin. LONilla ei ole CANin tapaisia reaali-

Kohti hajautettuja sulautettuja järjestelmiä 231 aikaominaisuuksia, mutta toisaalta siirtotienä voi toimia vaikka 230 V jakeluverkko. Nämä väylät eivät ole ainoita mahdollisia vaihtoehtoja. LON on valittu mukaan siksi, että se on yksi yleisimmistä väylistä, CAN taas edustaa reaaliaikaominaisuuksilla varustettuja väyliä. 14.2.1 CAN-väylä CAN (Controller Area Network) on alunperin autojen johdotuksen vähentämiseksi suunniteltu väylä. Fyysisesti kyseessä on differentiaalinen kaksijohtoinen väylä (suojattu kierretty pari). Väylää käytetään auton lisäksi monessa muussakin ympäristössä, sillä väylä on tehty todella huonoihin olosuhteisiin. Sen tulisi toimia, vaikka jompikumpi johdoista on poikki tai jompikumpi johdoista on oikosulussa maahan tai käyttöjännitteeseen. Lisäksi, mikäli molemmat johdot ovat katki samasta paikkaa, väylän kumpikin pää pystyy toimimaan erillisenä verkkona. Väylän nopeudet eivät ole kovin suuria, mutta väylä takaa suuriprioriteettiselle viestille tietyn läpimenoajan. Maksiminopeudet pituuden funktiona ovat taulukossa 14.1. Taulukko 14.1: CAN-väylän nopeudet väylän pituuden funktiona Pituus (metriä) Nopeus (kilobittiä sekunnissa) < 40 1000 < 500 125 < 1000 50 CAN-väylän toimintaidea CAN-väylässä ei ole osoitteita. Kaikki asemat ottavat vastaan kaikki viestit, jonka jälkeen ne päättävät, tuleeko niiden käsitellä viesti vai ei. Päätelmä tehdään viestin tunnisteen perusteella, joka on joka viestityypille omansa. Tämän takia CAN-väylän monitorointi on helppoa, sillä väylään voidaan aina lisätä kuunteluasemia ilman mitään muutoksia ohjelmistoon tai muuhun laitteistoon. Väylän toiminta on esitettynä kuvassa 14.1. Kuvassa solmu 2 lähettää viestin, jonka solmut 1 ja 4 ottavat vastaan, mutta jonka solmu 3 jättää käsittelemättä, koska se ei ole viestistä kiinnostunut.

232 Sulautettu ohjelmointi Solmu 1 Solmu 2 Solmu 3 Solmu 4 käsittelee alustaa käsittelee hyväksyy lähettää hylkää hyväksyy vastaanottaa vastaanottaa vastaanottaa Kuva 14.1 CAN-väylän toiminta CAN-väylälle luvataan reaaliaikaominaisuuksia. Jotta korkeaprioriteettinen viesti ei jäisi odottamaan pitkäksi aikaa, tulee voida varmistua siitä, että se saadaan varmasti lähetettyä. Koska mikä tahansa CANväylän toimilaite voi lähettää, voisi ratkaisuna olla jokin protokolla, jossa vuoro siirtyy varmasti eteenpäin (esimerkiksi token bus). Tosin vuoroa voidaan joutua jonkin verran odottamaan. Koska CAN-väylän vikasietoisuusvaatimuksiin liittyy vielä väylän kahtiajakamisen mahdollisuus, ei luvan (token) siirto solmulta toiselle ole käyttökelpoinen ratkaisu. Lähettäjä määräytyykin sen mukaan, millainen viesti solmulla on lähetettävänään, kuten seuraavassa kappaleessa esitetään. Väylän ollessa käyttämättömänä sen tila on yksi. Viesti aloitetaan kirjoittamalla aloitusbitti nolla. Mikäli kaksi yksikköä tekee tämän samanaikaisesti, ne eivät huomaa toisiaan. Itse viesti alkaa sen tunnistetiedolla. Lähettäessään asemat seuraavat väylän tilaa. Mikäli asema lähettää bittiä yksi, mutta väylällä onkin nolla, asema luopuu viestin lähettämisestä. Näin se asema, jolla on pienin tunniste lähetettävänään, on se, jonka viesti lähtee väylälle. Järjestelmän toimiminen edellyttää, että tunnisteet ovat yksikäsitteisiä. Tunnisteiden arvojen määrääminen onkin osa suunnittelutehtävää, sillä koko järjestelmän reaaliaikaominaisuudet riippuvat niistä. Lähettäjän määräytymistä on havainnollistettu kuvassa 14.2. CAN-väylästä on käytössä on kaksi versiota, joissa ei ole muuta eroa kuin tunnisteen pituus. A-formaatissa tunniste on 11 bittiä ja B-formaatissa 11+18 bittiä pitkä.

Kohti hajautettuja sulautettuja järjestelmiä 233 Bitti Solmu 1 ID 59C16 10 9 8 7 6 5 4 3 2 1 0 Solmu 2 ID 53716 Solmu 3 ID 53916 Väylä 1 luopuu 3 luopuu Kuva 14.2 CAN-väylän lähettäjän määräytyminen Yhteenveto CAN-väylästä CAN-väylässä kaikki asemat kuuntelevat kaikki viestit. Viesteillä ei ole osoitteita, vaan viestin tyyppi (sisältötieto) määrää viestin vastaanottajat, joten järjestelmään voidaan helposti lisätä kuunteluasemia. Suuriprioriteettisin viesti saa varmasti lähetysvuoron heti, kun on mahdollista lähettää uusi viesti. Tämän takia väylällä on kyky toteuttaa reaaliaikavaatimuksia. Esimerkiksi Ethernet on suorastaan onneton tässä suhteessa, sillä sen lähetys perustuu vain todennäköisyyksiin. Token ring on Ethernetiä parempi, muttei sekään ole yhtä hyvä kuin CAN. Koska reaaliaikaominaisuudet sidotaan tunnisteisiin, tulee tunnisteista osa ajoituksen suunnittelua. Uuden viestityypin lisääminen sotkee vanhaa ajoitusta niiden viestien osalta, joiden prioriteetti on uutta viestiä pienempi. CAN-väylä on suunniteltu toimivaksi hyvin huonoissa olosuhteissa. Väylälle on saatavissa usean valmistajan liityntäelektroniikkaa ja ohjelmapaketteja. 14.2.2 CANopen Koska CAN-väylä tarjoaa vain perusominaisuudet, on kehitetty korkeamman tason standardeja hyödyntämään CAN-väylää. Näin voidaan ainakin tietyillä sovellusalueilla päästä siihen, että väylälle voidaan liit-

234 Sulautettu ohjelmointi tää minkä tahansa valmistajan tekemä oheislaite. Yksi yleisimpiä ratkaisuja on CANopen, joka yleensä käyttää siirtotienä CAN-väylää. CANopen jakaa viestin tyypin kahteen osaan: funktiokoodiin ja solmutunnisteeseen. Funktiokoodille on varattu neljä bittiä, ja niillä on keskinäinen prioriteetti siten kuin CAN-väylä sen määrittää. Loppu 7 bittiä 11-bittisestä CAN-väylän tyypistä on lähettävän laitteen solmutunniste. Näin ei koskaan ole mahdollista, että kahdella viestillä olisi täsmälleen sama tunniste. CANopen-verkossa voi olla vain 127 eri laitetta, mutta ani harvoin tarvitaan niin suurta verkkoa, että CAN-väylän tarjoamaa B-formaattia tarvittaisiin. CANopen sisältää useita valmiita aliprotokollia: verkonhallinta- (NMT, Network Management), objektipalvelu- (SDO, Service Data Object), reaaliaikainen objektipalvelu- (PDO, Process Data Object), synkronointi- (SYNC, Synchronization Object), aikaleima- (TIME, Time Stamp Object) ja hätätilaprotokollat (EMCY, Emergency Object). 14.2.3 LON-väylä LON-väylä on yhden valmistajan (Echelon) suunnittelema tuote, mutta silti laajalti käytetty. Yleiskuvaus LON-väylä kattaa kaikki OSI-mallin tasot. Olennaista on, että fyysistä tasoa tai verkon topologiaa ei ole kiinnitetty, joten viestin välittämiseen voidaan käyttää muun muassa kierrettyä paria, sähköverkkoa ja kuitua. LON-väylällä yhdistetyssä verkossa asemilla on kolmitasoinen hierarkkinen osoite. Viestejä voidaan lähettää paitsi yksittäisille koneille myös "ryhmälle" ja "alueelle" (domain). Osoitteistossa on alueita 2 48, alueessa ryhmiä 127 ja ryhmässä solmuja 255. LON-verkon jokainen solmu voi lähettää, kuten CANväylässäkin, joten kyseessä on kilpaväylä. CAN-väylässä törmäykset oli estetty viestien prioriteettien avulla, mutta LON-väylässä törmäyksiä ei voi estää, paitsi tietenkin rakentamalla oma törmäyksiä välttävä protokolla, jos törmäykset muodostuvat ongelmaksi. Näin ei LONväylän käyttökohteissa yleensä ole. Lisäksi törmäystodennäköisyyden pienentämiseksi lähetystodennäköisyys on dynaaminen ja vaihtelee kuormituksen funktiona.

Kohti hajautettuja sulautettuja järjestelmiä 235 LON-väylän alkuperäinen sovelluskohde on rakennusautomaatio, mutta väylä on melko laajalti käytössä monissa muissakin sovelluksissa (muun muassa ohjaus- ja säätöjärjestelmissä). Neuron-siru LON-väylän järjestelmän ydin on liittymän hoitava neuron-piiri, jossa on kolme suoritinta, pieni RAM (2k) ja mallista riippuen sisäinen tai ulkoinen ROM. Lisäksi piiriin kuuluvat ulkoiset liittymät. Piiri sisältää valmiina protokollan toteutuksen. Käyttäjä voi itse ohjelmoida omia protokolliaan (tietyissä rajoissa), mutta perusidea on niin sanottu globaalien muuttujien käyttö. Globaalin muuttujan tyyppi on joko in tai out. Jälkimmäisessä tapauksessa muuttujan arvon muuttaminen (esimerkiksi liityntäelektroniikalla tai ohjelmalla) saa aikaan automaattisen muuttujan arvon päivityksen verkkoon. Jos taas tyyppi on in, verkosta tullut muutoskäsky saa aikaan muuttujan paikallisen arvon muuttamisen, jolloin suoritetaan muutokseen liitetty käsky. Esimerkki: Katkaisijan asento muuttuu, joten lähetetään viesti verkkoon. Vastaanottopuolella viesti otetaan vastaan, muutetaan muuttujan arvoa ja tehdään siihen liitetty toimenpide, eli sytytetään valo. 14.3 Pienen sulautetun laitteen sisäinen hajautus Paitsi isossa mittakaavassa, jossa kyse on esimerkiksi ajoneuvon kokoisen sulautetusta järjestelmästä, hajautus voi tulla vastaan myös paljon pienempiä sulautettuja järjestelmiä toteutettaessa. Esimerkiksi matkapuhelin saattaa sisältää useita erilaisia suorittimia tai lisälaitteita, joilla on erilaisia ominaisuuksia, ja jotka on varattu tekemään jotain sovellusalueen kannalta tärkeää tehtävää, kuten vaikkapa GSMkoodausta tai videokuvan pakkausta. Monet tällaisista ympäristöistä saattavat kuitenkin tarjota myös mahdollisuuden hyödyntää tällaisia lisälaitteita muista sovelluksista silloin, kun niitä ei tarvita suorittamaan varsinaista tehtäväänsä. Tällöin ohjelmoijan kannalta varsinainen fyysinen väylä ei enää ole kovin tärkeässä osassa, vaan väylärakenteen päällä olevat abstraktiot ovat suoraan käytettävissä Seuraavassa käsittelemme kaksi tällaiseen käyttöön esiteltyä arkkitehtuuria, jotka ovat OpenCL ja Network on Terminal Architecture (NoTA). Näistä OpenCL on alunperin PC-ympäristöön suunnattu tapa hyödyntää esimerkiksi näytönohjaimen laskentaresursseja, ja se on

236 Sulautettu ohjelmointi otettu esittelyyn mukaan yleisen mielenkiinnon vuoksi. NoTA puolestaan on pohjimmiltaan yleinen arkkitehtuurimalli, jonka avulla sisäisesti hajautettujen sulautettujen järjestelmien toteuttaminen on mahdollista. 14.3.1 OpenCL OpenCL tarkoitettu näytönohjaimen (tai tarvittaessa myös jonkin muun oheislaitteen) laskentakapasiteetin hyödyntämiseen ohjelmallisesti. Perusidea on yksinkertainen. Pääsuorittimella suoritettava pääohjelma sisältää laajennoksia, joita OpenCL-terminologiassa kutsutaan nimellä kernel, ydin. Näitä laajennoksia voidaan suorittaa millä tahansa oheislaitteella joka tarjoaa OpenCL-rajapinnan. Rajapinta sisältää mahdollisuuden kääntää ytimiä ja ladata niitä suoritettavaksi oheislaitteelle. Tyypillisesti OpenCL:n onnistunut käyttö vaatii, että ytimien avulla voidaan suorittaa rinnakkaista laskentaa. Tällöin esimerkiksi näytönohjaimen sisäisen rakenteen tarjoama sisäinen rinnakkaisuus ja tuki rinnakkaisille suorituksille mahdollistaa peräkkäisohjelmaa huomattavasti paremman suoritustehon. Toisaalta laskennan käynnistämiseen kuluu usein jonkin verran aikaa, sillä laskentakernelit pitää kääntää ja ladata suoritettavaksi. Varsinainen ytimien ohjelmointi tapahtuu käyttäen jonkin verran rajoitettua C-kieltä (C99). Lisäksi kieleen on sisällytetty joitakin laajennuksia, jotka tukevat ja yksinkertaistavat joitakin rinnakkaisen laskennan kannalta keskeisiä seikkoja. Rinnakkaisuuden ja usean eri laiteyksikön käyttö tuo mukanaan myös ongelmia ja monimutkaisuutta. OpenCL:n tapauksessa varsinkin muistin käyttö voi olla tällainen, sillä monin eri tavoin käyttäytyviä muistialueita tarvitaan useita. Esimerkiksi ydin voi tarvita omaa muistia, samaa tehtävää suorittavien ytimien yhteistä muistia, samalla fyysisellä laitteella olevien tehtävien kesken yhteistä muistia tai globaalia muistia, joka näkyy myös pääsuorittimella olevalle ohjelmalle. Kun tähän yhdistetään vielä erilaiset väylät (kerneleitä suorittava laskentayksikkö ja laitteen pääsuoritin ovat yleensä eri yksiköitä) ja välimuistit, syntyy kokonaisuudesta helposti monimutkainen ja vaikeasti hallittava. Yhteenveto tärkeimmistä OpenCL:n ominaispiirteistä on esitetty taulukossa 14.2.

Kohti hajautettuja sulautettuja järjestelmiä 237 Taulukko 14.2: OpenCL-ympäristön ominaispiirteet Kielen spesifikaatio C-perustainen ohjelmointikieli (C99:n alijoukko). Täsmälliset pyöristyssäännöt (IEEE 754, maksimivirhe määritelty). Online- ja offline-käännökset laskentaa suorittavien ytimien osalta. Paljon sisäänrakennettuja apufunktioita erilaisiin tarkoituksiin. Alustarajapinta HAL, Hardware Abstraction Layer Laitteiden etsintä, valinta ja alustus. Laitekontekstien ja työjonojen luonti. Ajoajan API Laskentaytimien suoritus. Resurssien hallinta (skedulointi, laskenta, muisti) 14.3.2 Network on Terminal Architecture Network on Terminal Architecture, NoTA, on Nokia Tutkimuskeskuksessa alunperin kehitetty, nyttemmin omaan yritykseensä ulkoistettu arkkitehtuurimalli, jossa sulautetun laitteen, kuten esimerkiksi matkapuhelimen, sisäinen arkkitehtuuri on rakennettu tavalla, joka mahdollistaa erilaisten lisälaitepiirien ja -suorittimien modulaarisen yhdistelemisen laitteen sisällä. NoTA-arkkitehtuurin suunnittelua ohjanneet perusperiaatteet on lueteltu seuraavassa: Löyhä kytkentä järjestelmätasolla. Perustuu palveluihin. Väyläperustaisuus. Viesti- ja datapohjainen kommunikaatio. Heterogeeniset toteutukset mahdollisia. Toisin sanoen Nota-arkkitehtuurin siis voidaan ajatella soveltavan webpalveluiden periaatteita laitteen sisäisten suorittimien ja muiden laskentayksiköiden väliseen kommunikointiin.

238 Sulautettu ohjelmointi Yksinkertaisimmillaan arkkitehtuurin perusajatuksen voi ajatella hyvin nopeana, eri prosessoreita yhdistävänä väylänä (Device Interconnect Protocol, DIP), jota käyttäen eri suorittimet voivat kommunikoida. Toisin kuin matkapuhelimessa yleensä, eri suorittimet eivät kuitenkaan ole pelkkiä suorittimia, jotka laitevalmistajan on mahdollista ohjelmoida, vaan jokainen suorittimista on (mahdollisesti) erikoistunut jonkun tietyn tehtävän siis oikeastaan palvelu hoitoon ja sisältää tehtävän suorittamiseksi tarvittavan ohjelmiston ja laitteiston. Suorittimet voivat kommunikoida viestinvälitystä käyttäen, mutta on myös mahdollista muodostaa tietovirta suorittimien välillä. Lisäksi suorittimilla voi olla selkeä työnjako, jossa osa suorittimista voi tarjota palveluita muille ("palvelusolmu"), ja osa puolestaan on varattu järjestelmän sovellusten suorittamiselle ("sovellussolmu"). Palvelut tunnistetaan yksikäsitteisellä tunnisteella (Service Identifier, SID), jonka avulla niitä voidaan hyödyntää halki koko NoTA-perustaisen järjestelmän. Toteutuksen tasolla jokainen järjestelmän suorittimista sisältää tyypillisesti myös ohjelmiston, jolla sille allokoidut ominaisuudet on mahdollista toteuttaa. Esimerkiksi vaikkapa videopiiri voisi ottaa vastaan videokuvavirtaa, ja lähettää sen edelleen näytölle piirrettäväksi sitten, kun videokuva on avattu. Videovirtaa ohjaava suoritin puolestaan voisi muodostaa reitityksen laitteistoa ohjaamalla siten, että radiorajapinnalta sisään tuleva virta on ohjattu suoraan videosuorittimelle, joka puolestaan lähettäisi sen näytölle. Tällöin pääsuoritin vapautuisi hoitamaan laitteiston ohjaamisen kannalta tärkeitä tehtäviä, eikä sen tarvitsisi osallistua sovelluskohtaiseen toimintaan kuin ohjaavassa roolissa. Vaikka arkkitehtuurin juuret ovatkin vahvasti laitteen sisäisessä hajauttamisessa, NoTA-tyyppisellä arkkitehtuurilla voidaan rakentaa myös perinteisiä hajautettuja sulautettuja järjestelmiä. Syynä tähän on se, että NoTA-ympäristön käytännön toteutus tarjoaa ainoastaan hivenen erikoistetun socket-rajapinnan, jota käyttäen eri komponenttien välinen yhteistoiminta on rakennettu. Käyttäen tätä niin kutsuttua NoTA Interconnectia, joka toimii väylää hallinnoivana ohjelmistona, on mahdollista rakentaa myös aidosti hajautettuja sovelluksia, jos oletetaan, että rajapinnan operaatiot riittävät sovelluksen tarpeisiin. Toki tarjottujen mekanismien varaan on myös mahdollista rakentaa monimutkaisempia abstraktioita, kuten esimerkiksi puhtaasti web-henkiset rajapinnat tai vaikkapa etäproseduurikutsu, joiden avulla voidaan edelleen toteuttaa monimuotoisempia sovelluksia.

Kohti hajautettuja sulautettuja järjestelmiä 239 Laitevalmistajan kannalta NoTA-arkkitehtuurilla saavutetaan merkittäviä etuja verrattuna perinteiseen malliin, jossa piirivalmistaja valmistaa piirit, ja laitevalmistaja hyödyntää piirien suorituskykyä omalla ohjelmistollaan. Niistä tärkeimmät on lueteltu seuraavassa: Laitevalmistaja saa suoraan sovellustason toteutukset piirin toteuttamista toiminnallisuuksista. Jos kaikki (tai edes tarpeeksi moni) piirivalmistaja tuottaa NoTAyhteensopivia piirejä eri tarkoituksiin, voi laitevalmistaja kilpailuttaa piirejä varsin helposti. Riittää, että piirivalmistaja lupaa piirinsä tukevan tiettyjä NoTA-yhteensopivia protokollia, ja tämän jälkeen toiminnallisuuksien vertailusta voidaan siirtyä hintaan, valmistusmääriin ja suorituskykyyn. Piirivalmistajan kannalta ajateltuna tilanne on tietystikin vaikeampi, mutta ainakin periaatteessa voidaan myydä samanlaisia piirejä useaan eri paikkaan, jos samoja komponentteja ja samoja standardeja käyttäviä asiakkaita on useita. Tällöin piirivalmistaja voisi keskittyä valmistamaan piirejä mahdollisimman tehokkaasti ja korkealaatuisesti. Periaatteessa myös kehittyminen yhdistetyksi piiri- ja ohjelmistovalmistajaksi on mahdollista, sillä piiriin on NoTA-ideologian mukaisesti sisällytetty myös tarvittavat ohjelmistot. NoTA-arkkitehtuurin huonona puolena voidaan pitää sitä, että mitä useampia älykkäitä komponentteja järjestelmään on sisällytetty, sitä vaikeammaksi järjestelmän toiminnan jäsentäminen kokonaisuutena muuttuu. Tällöin esimerkiksi eri toiminnallisuuksien ja toimintojen keskinäinen vuorovaikutus voi johtaa ongelmiin. 14.4 Yhteenveto Erilaiset väylät voivat yksinkertaistaa järjestelmän rakentamista, mutta ne voivat myös vaatia uudenlaisten suunnitteluongelmien ratkaisua. Väyliä on saatavilla useita erilaisia, ja niillä on yleensä omat, erilliset vakiintuneet käyttökohteensa. Hajautettu skedulointi luo omat haasteensa laadunvarmistukselle, sillä virheiden toistaminen vaikeutuu. Laitteen sisäisen laskentakapasiteetin hyödyntäminen mahdollista yhä useammin myös sovelluskohtaiseen laskentaan. On kuitenkin muistettava, että näiden ohjelmien teko voi olla vaikeampaa kuin perinteisten peräkkäisohjelmien.