Kopioi artikkelin PDF-versio

Pakettina perille

Vaihtoehto piirien sisäiseen tiedonsiirtoon

pakperaloitus

Huolimatta piirisuunnittelun jatkuvasta kehityksestä, suunnittelun tärkein rajoite on edelleen raha. Uudelleenkäytöllä saavutetaan jo nyt säästöjä, mutta siirtymällä yksittäisten lohkojen uudelleenkäytön sijasta suurempiin kokonaisuuksiin, saatu hyöty kasvaa. Tämä edellyttää nykyistä joustavampia menetelmiä ja rakenteita piirien sisäiseen tiedonsiirtoon.

Digitaalipiirien koon kasvaminen ja kokonaisten järjestelmien integroiminen yhdelle piirille tuovat mukanaan jo pitkään tiedostettuja ongelmia ja haasteita, jotka heijastuvat vaikeutuneena kustannustenhallintana. Tämän johdosta suurten järjestelmäpiirien (System-on-Chip,SoC) suunnitteluongelmien ratkaisemiseksi suunnitteluprosessi ja sen perustana olevat vakiintuneet tavat täytyy punnita uudelleen ja suunnittelussa tulee ottaa käyttöön uusia kustannustehokkaita menetelmiä.

Uudelleenkäytöstä alustoihin

Uudelleenkäytöstä on jo useita vuosia odotettu ratkaisua suunnitteluongelmiin. Viime aikoina julkisuuteen onkin saatu tietoja menetelmän toimivuuden paranemisesta ja sillä saavutetuista selkeistä säästöistä suunnitteluajassa ja täten myös kustannuksissa.

Uudelleenkäytön seuraavana vaiheena voidaan pitää suunnittelualustojen (platform) käyttöä. Alustojen käytön perustana on ongelmien ortogonaalisuus, eli ongelmien erottaminen toisistaan ja niiden erillinen ratkaiseminen. Etenkin erillisinä ongelmina tulee käsitellä järjestelmän funktiota (sovellus) ja arkkitehtuuria (miten järjestelmä tekee toimintonsa). Samoin järjestelmän arkkitehtuuria toteutettaessa omiksi ongelmikseen voidaan erottaa piirin laskentarakenteiden ja sisäisen kommunikoinnin suunnittelu.

Alustojen käytössä ajatuksena on toteuttaa arkkitehtuuri, jolla voidaan suorittaa useita sovelluksia. Alustapohjaisessa suunnittelussa laitteiston uudelleenkäytön aste on nostettu yksittäisten lohkojen hyödyntämisestä koskemaan koko piiriä.

Koska piirivalmistuksessa prosessoinnissa käytettävien maskien hinta on erittäin suuri kustannuserä, saavutetaan huomattavia säästöjä, mikäli uusi piiri ja sovellus voidaan valmistaa samoilla maskeilla kuin aiemmat piirit. Myös suunnitteluvaiheessa saavutetaan säästöjä, jos alustan parametrien muuttaminen mahdollistaa sovelluksen vaihdon. Näin voidaan pienentää erityisesti verifiointiin kuluvaa aikaa ja rahaa, vaikka valmistuskulut pysyisivätkin ennallaan.

Lisää joustavuutta

Jotta alusta soveltuisi useiden sovellusten toteuttamiseen, tulee sen toiminnan olla laajasti ja helposti muunneltavissa huolimatta siitä, että laitteistorakenteet ovat kiinteät. Muunneltavuus ja joustavuus saavutetaan ensisijaisesti alustan sisältämän ohjelmiston muutoksilla ja päivityksillä, mutta todellinen muunneltavuus edellyttää myös laitteiston konfigurointimahdollisuutta.

Kun ohjelmallisesti voidaan määrittää laitteiston "tyhmien" laskentaelementtien käyttö (mitkä laskentayksiköt ovat kyseisellä sovelluksella käytössä, mikä on kunkin yksikön toiminta jne.) sekä laskentayksiköiden välinen kommunikaatio, saavutetaan huomattavasti suurempi muunneltavuus ja joustavuus kuin pelkästään alustan prosessoreiden ohjelmistoa muuttamalla.

Kun laskentaelementtien toiminta vaihtelee sovelluksesta riippuen, vaihtelee myöskin niiden välinen kommunikaatio. Tämä edellyttää myös piirin sisäiseltä kommunikaatiorakenteelta joustavuutta ja muunneltavuutta. Tällaisen menetelmän suunnitteluaikaiseen variointiin riittää parametrisoitu arkkitehtuuri.

Nykypiireillä perinteisiä väyliä

Nykyisin piirien sisäinen tiedonsiirto perustuu perinteisten väylien käyttöön.

Niiden etuina ovat mm. suuri kapasiteetti reaaliaikaiseen tiedonsiirtoon sekä toiminnan hyvä ennustettavuus. Alustapohjaiseen järjestelmään väylät soveltuvan kuitenkin huonommin, koska tuossa ympäristössä kommunikaatiorakenteen tulee täyttää mm. seuraavat vaatimukset:

* joustavuus ja muunneltavuus

* mahdollisuus yhdenaikaisiin tiedonsiirtoihin mistä toiminnallisesta laskentalohkosta mihin tahansa toiseen lohkoon (sovelluksen muuttuessa tiedonsiirron rinnakkaisuusvaatimukset saattavat muuttua)

* mahdollisimman yleiskäyttöiset rajapinnat toiminnallisiin laskentalohkoihin

* sietokyky piirin sisäisten häiriöiden, kuten ylikuulumisen (crosstalk) suhteen

* mahdollisimman yksinkertainen rakenne sekä pieni koko

* synkroninen tiedonsiirto ainoastaan paikallisesti

* mahdollisuus paikalliseen reaaliaikavaatimukset täyttävään tiedonsiirtoon

Piirikytkentäisyydestä pakettiverkkoihin

Kytkentäverkot (NoC, Network-on-Chip) ovat ratkaisu, jota on ehdotettu väylien korvaajaksi tulevaisuudessa.

Piirikytkentäiset verkot saivat ensimmäisenä huomiota, koska ne muistuttavat ominaisuuksiltaan perinteisiä väyliä. Kun yhteys on muodostettu, tarjoaa se tiedossa olevan siirtokapasiteetin ennustettavalla latenssiajalla. Piirikytkentäkään ei kuitenkaan täytä kaikkia edellä esitettyjä vaatimuksia, koska siinä muodostettu yhteys saattaa estää useiden uusien yhteyksien muodostamisen. Lisäksi mm. verkkotopologian ja kellotuksen muuttaminen ei ole helppoa sovelluksen muuttuessa, koska kytkinrakenteen ohjelmoitavuus ja muunneltavuus on rajoittunutta.

Aivan viime aikoina tutkimus ja mielenkiinto on alkanut kohdistua myös piirinsisäisiin pakettikytkentäisiin verkkoihin. Tampereen teknillisen korkeakoulun Digitaali- ja tietokonetekniikan laitoksella on tutkittu pakettipohjaista tiedonsiirtoa piirin sisällä noin kaksi vuotta professori Jari Nurmen johdolla. Tutkimusta tehdään yhdessä Kungliga Tekniska Högskolanin (Tukholma) ja Turun yliopiston kanssa, osittain mm. EU:n tukemana.

Pakettikytkentäisen, kuten muunkin piirin sisäisen verkkopohjaisen kommunikaation, tutkimuksen osa-alueet voidaan erottaa käyttäen OSI-mallin neljää alinta kerrosta. Nämä ovat fyysinen- (physical), siirtoyhteys- (data link), verkko- (network) ja kuljetuskerros (transport).

TTKK:lla tutkimus keskittyy pääasiassa siirtoyhteys- ja verkkokerroksien toimintaan. Siirtoyhteyskerroksessa määritellään miten tieto siirtyy verkon kahden solmupisteen välillä, verkkokerroksen määrittäessä yhteyden sen alkupisteestä loppupisteeseen. Turun yliopiston tutkimus keskittyy suurelta osin fyysiselle kerrokselle, kuten myös osa KTH:n tutkimuksesta. KTH:n tutkimuksen toinen osa-alue on kuljetuskerros.

Proteo-verkko

TTKK:n tutkimuksessa kehitetään parametrisoitujen laitteistolohkojen kirjastoa, josta voidaan rakentaa pakettikytkentäisiä kommunikaatioarkkitehtuureja. Arkkitehtuuriratkaisulle on annettu nimi Proteo muinaisen kreikkalaisen muotoaan muuttavan Proteus-jumalan mukaan.

Arkkitehtuurin kirjastokomponentteja kutsutaan kommunikaatio-IP -lohkoiksi (communication IP) erotuksena järjestelmän varsinaisista laskentaosista eli toiminnallisista IP-lohkoista (functional IP). Proteo-lohkot voidaan jakaa kahteen luokkaan: rajapintalohkoihin, joita käytetään liittämään toiminnallinen IP-lohko Proteo-verkkoon, sekä verkkosolmuihin (reitittimet ja sillat), joita käytetään liikenteen välittämiseen. Molemmista lohkotyypeistä on jo olemassa useita versioita. Kaikista lohkoista on olemassa syntesoituvat VHDL-mallit sekä useimmista korkeamman tason simulointiin tarkoitetut VHDL-mallit, jotka kuvaavat lohkon tukeman protokollan.

Proteo-lohkoja on helppo muunnella muuttamalla yksittäisen lohkon parametreja tai kokoamalla lohko sopivasti valituista alilohkoista. Tämän ansiosta on mahdollista valita mm. haluttu rajapinta toiminnallisen IP:n ja Proteo-verkon välillä, yksittäisen reitittimen tai sillan sisältämien sisääntulojen ja ulosmenoja määrä, kommunikaatioverkon sisältämän puskuroinnin määrä ja liikenteen priorisointi.

Muunneltavuus mahdollistaa sen, että Proteo-arkkitehtuurissa verkon topologia on lähes vapaasti valittavissa. Kirjastolla on mahdollista toteuttaa yhtä hyvin esim. pitkälti perinteisiä väyliä muistuttavia rakenteita, hierarkisia rengastopologiaan perustuvia verkkoja kuin monimutkaisia kytkentämatriiseja.

Proteo-verkossa tieto liikkuu paketteina, jotka pyritään pitämään mahdollisimman yksinkertaisina hyötydatan määrän maksimoimiseksi verrattuna kommunikaation ohjausdataan. Yksinkertaisessa peruspaketissa on seuravat kentät: Destination ID, Source ID, Command, Destination Address, Packet ID ja Data.

Destination ID ja Source ID määrittävät vastaanottavan ja lähettävän toiminnallisen IP-lohkon, Destination Address kertoo puolestaan kohteen paikallisen osoitteen, johon dataa kirjoitetaan tai josta dataa luetaan. Command-kenttä määrittää paketin tyypin eli sen millaiseen operaatioon (write/read) liittyvää tietoa paketissa kulkee. Packet ID määrittää pakettien järjestyksen kahden lohkon välisessä yhteydessä. Mikäli paketit saapuvat perille eri järjestyksessä kuin ne lähetettiin, vastaanottava rajapintalohko järjestää paketit Packet ID -kentän avulla.

Virtuaaliset rajapintalohkot

Rajapintalohkot käyttävät VSIA:n (Virtual Socket Interface Alliance) VCI-rajapintasuositusta (Virtual Component Interface).

VCI määrittää yhteyden kahden pisteen välillä ottamatta kantaa siihen, millainen yhteyden toteutus on. Näin se soveltuu erittäin hyvin tapaukseen, jossa rajapintojen välinen verkkotopologia ja protokollat saattavat vaihdella suuresti sovelluksesta riippuen. Koska VCI ei pohjaudu mihinkään kaupalliseen järjestelmään, on se hyvä valinta määriteltäessä yleiskäyttöistä rajapintaa, jota voidaan käyttää liityntäpintana mahdollisemman useisiin kaupallisiin rajapintoihin.

Mikäli toiminnallinen IP-lohko ei tue suoraan VCI-signaaleja, voidaan lohkot liittää Proteon erillistä liityntälohkoa (wrapper) käyttäen. VCI:sta on olemassa kolme versiota, joista Proteo käyttää kahta kehittyneintä, jotka ovat BVCI (Basic VCI) ja AVCI (Advanced VCI). AVCI tarjoaa rajapintaan signaalit, jotka määrittävät lähetettävän paketin järjestysnumeron sekä lähettävän ja vastaanottavan lohkon tunnisteen. Näitä signaaleja voidaan käyttää suoraan Proteo-paketin otsikkokenttien luontiin. Mikäli tarvittavia VCI-signaaleja ei ole tarjolla, generoi rajapintalohko kyseiset kentät.

Verkkosolmut perustuvat puskureihin ja reitityslogiikkaan. Puskureiden koko (joka voi olla myös nolla) voidaan määrittää kommunikaatioverkkoa luotaessa.

Kuvassa 3 on esitetty esimerkkinä lohkokaavio yksinkertaisesta reititinlohkosta, joka tarjoaa liitynnän VCI-rajapintaan sekä yhden yksisuuntaisen yhteyden. Lohkon perustana on kolme puskuria; Request-, ByPass- ja Response-puskurit.

Request-puskuriin talletetaan toiminnallisen IP:n lähettämät viestit ennen niiden pääsyä varsinaiseen kommunikaatioverkkoon. Response-puskuri tallettaa verkosta toiminnalliselle IP:lle tulevat paketit, kunnes IP ehtii lukea ne. ByPass-puskuri säilöö solmun läpi menevät paketit siinä tapauksessa, että solmun ulostulo on juuri Request-puskurin käytössä tai verkon seuraavassa solmussa on ruuhkaa.

Pakettien ohjaus tapahtuu sisäänmenon ja ulostulon yhdeydessä olevissa reititin-alilohkoissa, jotka ohjaavat paketteja Destination ID -kentän perusteella. Ulostuloreitittimellä on prioriteetti, joka kertoo mistä suunnasta tulevat paketit ohjataan ensimmäisenä eteenpäin. Prioriteetti voidaan määrittää joko käännösvaiheessa kiinteäksi tai säilöä rekisteriin, jonka arvo voidaan muuttaa kontrollipaketin avulla.

Tulevaisuudessa myös asynkronisesti

Eräs Proteo-arkkitehtuurin tarjoama ominaisuus on mahdollisuus rakentaa järjestelmiä, jotka toimivat synkronisesti ainoastaan paikallisesti globaalin kommunikaation ollessa asynkronista.

Esimerkiksi jokainen verkkosolmu ja rajapintalohko, jotka ovat tietyn toiminnallisen IP-lohkon yhteydessä, voivat toimia samalla kellotaajuudella, joka eroaa kaikkien muiden solmujen taajuudesta. Tässä tapauksessa verkkosolmujen välinen linkki toimii asynkronisesti, mikä on paketteihin perustuvassa kommunikaatiossa mahdollista.

On todennäköistä, että perinteiset väylät tulevat säilymään piirisuunnittelun menetelmänä vielä pitkään. Osa piirin kommunikaatiosta tulee kuitenkin jatkossa olemaan sellaista, että sen toteuttaminen on mahdotonta väylien avulla. Tässä Proteon kaltaiset kytkentäverkot voivat tarjota vaihtoehtoisen ratkaisun.

Koska aiheen tutkimus on vielä hyvin alkutekijöissään eikä kaupallisia ratkaisuja vielä ole, on Proteo-arkkitehtuurin ensimmäinen käyttökohde eri topologioiden, algoritmien ja rakenteiden testaaminen. Sopivien rakenteiden löydyttyä tarjoaa laaja komponenttikirjasto hyvän pohjan toteutusten optimoinnille. Ensimmäiset simulaatiot osoittavat, että Proteo-lohkot toimivat ja niiden avulla voidaan hyvin joustavasti toteuttaa ja testata erilaisia verkkoratkaisuja.

Aiheesta enemmän

Proteo-tutkimusryhmä : www.cs.tut.fi/~nurmi/

SoC-seminaari: www.cs.tut.fi/soc/

TELESOC: http://edu.cs.tut.fi/telesoc/

SoC-SME-verkosto: http://edu.cs.tut.fi/soc-sme/

KTH:n NoC-tutkimus: http://www.ele.kth.se/NOC/


Taustat

Kirjoittajat: DI Ilkka Saastamoinen työskentelee TTKK:n Digitaali- ja tietokonetekniikan laitoksella tutkijana "DSP and Digital Communication Systems On Chip" -tutkimusryhmässä.
TkT Jari Nurmi on Tampereen teknillisen korkeakoulun digitaali- ja tietokonetekniikan laitoksen professori ja "DSP and Digital Communication Systems On Chip" -tutkimusryhmän johtaja.

Yhteyshenkilö: jari.nurmi@tut.fi

Tutkimus: Communication Platform Architectures for Gigascale Integration

Teknologiaohjelma:
EXSITE