jussi nieminen syntesoituva liikennegeneraattori ......ii tiivistelmÄ tampereen teknillinen...
TRANSCRIPT
JUSSI NIEMINEN
Syntesoituva liikennegeneraattori piirinsisäisten tiedonsiirtoverk-
kojen testaukseen ja suorituskykyvertailuun
Kandidaatintyö
Tarkastaja: Erno Salminen
II
TIIVISTELMÄ
TAMPEREEN TEKNILLINEN YLIOPISTO
Automaatiotekniikan koulutusohjelma
JUSSI NIEMINEN: Syntesoituva liikennegeneraattori piirinsisäisten tiedon-
siirtoverkkojen testaukseen ja suorituskykyvertailuun
Kandidaatintyö, 26 sivua
Tammikuu 2010
Pääaine: Digitaali- ja tietokonetekniikka
Tarkastaja: Erno Salminen
Avainsanat: liikennegeneraattori
Liikennegeneraattori on piirinsisäisten tiedonsiirtoverkkojen tutkimiseen tarkoitet-
tu, testiliikennettä verkkoon luova työkalu. Tässä kandidaatintyössä esitellään Tam-
pereen teknillisen yliopiston Tietokonetekniikan laitoksella kehitetty syntesoituva,
dynaamisesti kon�guroituva ja verkossa tapahtuvaan liikenteeseen reagoiva liikenne-
generaattori, jonka ensisijainen käyttökohde on todellisten sovellusten aikaansaaman
verkkoliikenteen mallintaminen ja näin ollen erilaisten verkkoratkaisujen sopivuuden
vertailu sovelluksen näkökulmasta.
Työssä esitellään liikennegeneraattorin toimintaperiaate ja osoitetaan esimerkkien
avulla sen soveltuvuus verkkojen vertailuun. Lisäksi arvioidaan generaattoreiden
käyttöön kuluvaa aikaa sekä etuja ja haittoja verrattuna todellisen sovelluksen käyt-
tämiseen. Työssä pohditaan myös generaattorin tämänhetkisen kehitysversion heik-
kouksia ja suuntaviivoja tulevaa kehitysta varten.
III
SISÄLLYS
1. Johdanto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Liikennegeneraattoreita ja niiden ominaisuuksia . . . . . . . . . . . . . . . . 3
3. Syntesoituvan liikennegeneraattorin syvin olemus . . . . . . . . . . . . . . . 4
3.1 Generaattoreiden luoma liikenne . . . . . . . . . . . . . . . . . . . . . 5
3.1.1 Sanojen rakenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1.2 Lähetyksen rakenne . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1.3 Polkumittaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Liipaisimet ja ajastimet . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Erikoisominaisuudet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3.1 Riippuvuudet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3.2 Aktivoitumisen estäminen . . . . . . . . . . . . . . . . . . . . . . 9
4. Liikennegeneraattoreiden keräämä mittausdata . . . . . . . . . . . . . . . . 11
5. Järjestelmän kon�gurointi ja tulosten saaminen . . . . . . . . . . . . . . . . 13
5.1 Dynaaminen kon�gurointi . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.2 Tulosten raportointi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6. Käyttöesimerkkejä . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.1 MPEG-4-videopakkauksen mallintaminen liikennegeneraattoreilla . . . 17
6.1.1 Sovellusmallin luominen ja vaadittava työmäärä . . . . . . . . . . 18
6.1.2 Esimerkin vaatimat erikoisrakenteet . . . . . . . . . . . . . . . . . 19
6.2 Tiedonsiirtoverkkojen vertailu liikennegeneraattoreiden avulla . . . . . 20
7. Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.1 Tulevia kehittämiskohteita . . . . . . . . . . . . . . . . . . . . . . . . . 24
Lähteet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
IV
TERMIT JA SYMBOLIT
Termi Selitys
Ajastin Liikennegeneraattorin liikennettä luova elementti,
käynnistää uuden lähetyksen aina tietyn jakson-
ajan välein.
Dynaamien kon�gurointi Liikennegeneraattoreiden toiminnan kon�gurointi
ajonaikaisesti ilman uutta synteesikertaa.
FPGA-piiri Field Programmable Gate Array, uudelleenohjel-
moitava logiikkapiiri.
JTAG Joint Test Action Group, kommunikointimenetel-
mä mikropiirien testausta varten.
Latenssi Viive jonkin tietyn toiminnan alusta sen päättymi-
seen. Tässä yhteydessä viive lähetyksen lähtöhet-
kestä perille saapumiseen.
LGPL Lesser General Public License, avoimen lähdekoo-
din lisenssi [13].
Liipaisin Liikennegeneraattorin liikennettä luova elementti,
käynnistää uuden lähetyksen muualta saapuneen
lähetyksen vastatessa asetettuja liipaisuehtoja.
MPEG-4 Moving Picure Experts Group -ryhmän kehittämä
videonpakkausmenetelmä.
NoC Network-on-Chip, piirinsisäinen tiedonsiirtoverk-
ko.
SoC System-on-Chip, useista prosessointiyksiköistä
koostuva järjestelmä yksittäisellä mikropiirillä.
Synteesi, syntesoiminen Laitteistonkuvauskielellä kuvatun järjestelmän
muuttaminen fysikaalista piiriä kuvaavaksi
porttilistaukseksi ja tarvittaessa FPGA-piirin
ohjelmointitiedostoksi.
TG Tra�c Generator, liikennegeneraattori.
Topologia Verkon rakenne, esimerkiksi väylä, rengas tai
mesh-verkko.
UART Universal Asynchronous Receiver Transmitter,
sarjaliikennepiiri.
1
1. JOHDANTO
Yksittäisille piireille rakennettavista järjestelmistä (System-on-Chip, SoC) tulee vuo-
si vuodelta monipuolisempia. Samaan aikaan, kun järjestelmien monimutkaisuus
kasvaa, kiristyvät sekä tehokkuus-, energiankulutus-, että suunnitteluaikavaatimuk-
set. Tavoitteena onkin pystyä luomaan järjestelmiä yhdistelemällä helposti erilaisia
komponentteja standardirajapintojen kautta. Ongelmia tuovat lisäksi pitkät signaa-
livedot, jotka rajoittavat kellotaajuutta ja haittaavat esimerkiksi järjestelmän jaka-
mista eri kelloalueisiin. Perinteisesti komponenttien välinen kommunikointi on hoi-
dettu jaetun väylän avulla, mutta komponenttien määrän lisääntyessä muutamasta
muutamiin kymmeniin ei yksittäinen väylä enää riitä kaiken tiedon välittämiseen.
Piirinsisäisten tiedonsiirtoverkkojen (Network-on-Chip, NoC) onkin tarkoitus ratkoa
näitä ongelmia. [1]
Piirinsisäiset verkot ovat suhteellisen uusi tutkimuskohde, mutta niistä on kui-
tenkin olemassa jo lukuisia erilaisia versioita, jotka eroavat toisistaan muun muassa
topologian ja reititysalgoritmien perusteella. Eri verkot soveltuvat erilaisiin käyttö-
kohteisiin, ja täten on mahdotonta nimetä yksittäistä parasta ratkaisua. Runsaasti
tutkimusta on tehty, mutta tuloksien vertailtavuus on muun muassa puutteellisen
dokumentaation takia huono. Verkkojen kattava vertailu onkin yksi tämän hetken
tutkimushaasteista. [11]
Digitaalijärjestelmien kompleksisuus ja laajuus tekevät tarkasta simuloinnista ras-
kasta, minkä johdosta kattavat testiajot ovat käytännössä liian hitaita. Yksi vaih-
toehto on ajaa järjestelmiä syntesoituna FPGA-piirille (Field Programmable Gate
Array). [12]
FPGA-piirillä järjestelmää ajettaessa menetetään simulaation paras ominaisuus,
hyvä näkyvyys järjestelmän sisälle. Verkon eri osa-alueiden suorituskyvystä ja mah-
dollisista pullonkauloista on mahdollista saada hyvin rajattua tietoa, varsinkin jos
ajettavana on sovellus, jossa ei ole ylimääräisiä, sisäisestä tilasta ja toiminnasta
kertovia testirakenteita. Suoritusnopeus on kuitenkin joko sama, tai ainakin hy-
vin lähellä lopullista järjestelmän tavoitenopeutta, mikä helpottaa pitkienkin ajojen
suorittamista.
Todellisen sovelluksen käyttäminen pelkästään verkkoratkaisujen testaamiseen ei
kuitenkaan aina ole tarkoituksenmukaista. Sovelluksen toiminnalliset lohkot voi-
daankin korvata liikennegeneraattoreilla, jotka eivät suorita sovellukseen liittyvää
1. Johdanto 2
oikeaa laskentaa. Ne luovat vain verkkoon todellista sovellusta mahdollisimman hy-
vin vastaavaa liikennettä, jonka perusteella voidaan vertailla eri verkkoratkaisujen
tehokkuutta. Liikennegeneraattoreiden toteutuksesta riippuen niitä voidaan käyttää
myös verkkojen testaamiseen kehitysvaiheessa.
Tässä kandidaatintyössä esitellään liikennegeneraattori, joka on suunniteltu ja to-
teutettu Tampereen teknillisen yliopiston tietokonetekniikan laitoksella kesällä 2009
kirjoittajan ja toisen tutkimusapulaisen, Antti Alhosen, toimesta. Tämän liikenne-
generaattorin ensisijainen tavoite on selkeästi nopeuttaa todellisten sovellusten suo-
rituskyvyn ja sovelluksiin tehtävien muutosten suorituskykyvaikutusten tutkimista
verkon näkökulmasta generaattoreilla luotavan mallin avulla. Tavoitteen toteutumi-
seksi näiden liikennegeneraattoreiden tulee olla syntesoituvia, ajonaikaisesti kon�-
guroitavia sekä kykeneviä mallintamaan monimutkaisiakin liikennerakenteita.
Liikennegeneraattoreiden suunnittelutyössä Antti Alhosen vastuulla on ollut jär-
jestelmän kon�guroinnin sekä tulosten tallentamisen ja raportoinnin toteuttaminen.
Tämän kandidaatintyön painopiste on kirjoittajan osuudessa, joka on ollut liikennet-
tä luovan toiminnallisuuden suunnittelu ja toteutus. Työssä keskitytään suunnitte-
luratkaisuihin ja generaattoreiden käyttömahdollisuuksia esitteleviin esimerkkeihin.
Varsinaiset käyttöohjeet ja toteutusyksityiskohdat selviävät paremmin generaatto-
reiden dokumentaatiosta [8].
Kandidaatintyön rakenne on seuraavanlainen. Kappaleessa 2 esitellään ensin lii-
kennegeneraattoreiden yleisiä ominaisuuksia ja muualla tehtyjä ratkaisuja, jonka
jälkeen kappaleessa 3 käydään läpi tässä työssä esiteltävän liikennegeneraattorin
ominaisuuksia tarkemmin. Kappale 4 esittelee generaattoireiden luomaa liikennettä
ja kappaleessa 5 kerrotaan miten generaattorit kon�guroidaan ja minkälaisia mit-
taustuloksia niiden avulla on mahdollista saada. Kappale 6 sisältää käytännön esi-
merkkejä kehitetyn liikennegeneraattorin käyttämisestä verkkojen tutkimisessa. Esi-
merkkitapauksena on MPEG-4-videopakkaussovelluksen mallintaminen sekä erilais-
ten verkkoratkaisujen vertailu liikennegeneraattoreiden avulla. Lopuksi kappalees-
sa 7 tehdään yhteenveto esitellystä liikennegeneraattorista ja sen sopivuudesta eri-
laisiin käyttökohteisiin sekä jatkokehityksen suuntaviivoja.
3
2. LIIKENNEGENERAATTOREITA JA NIIDEN
OMINAISUUKSIA
Lukuisia erilaisia liikennegeneraattoreita käytetään apuna tutkittaessa tiedonsiirto-
verkkojen toimintaa ja suorituskykyä. Yksinkertaisimmillaan generaattori lähettää
tietyn määrän sanoja verkkoon tietyin aikavälein. Kattavampien testien mahdollis-
tamiseksi generaattoreista on pyritty tekemään entistä muunneltavampia. Yleisiä
muokattavia parametreja ovat lähetyksen määrä, pituus ja lähetysten välinen ai-
ka. Lähetysten generoimiseen voidaan käyttää myös tilastollisia menetelmiä, jolloin
liikenteen määrä ja ominaisuudet seuraavat erilaisia jakaumia [5].
Tasaista liikennettä luovat generaattorit sopivat yleiseen verkkojen testaamiseen,
mutta kun tavoitteena on mallintaa jotain tiettyä sovellusta ja selvittää sille parhai-
ten sopiva verkkoratkaisu, tulee liikennegeneraattorin osata myös reagoida verkon
tapahtumiin. Tällainen liikennegeneraattori voi olla esimerkiksi erityisesti liikenteen
generointia varten tehty, hyvin pienellä käskykannalla varustettu prosessori, jonka
suorittama ohjelma pohjaa todellisesta sovelluksesta mitattuun liikennemalliin [7].
Verkon liikenteeseen reagoivia generaattoreita on tehty useampiakin, kuten [3] ja [6],
mutta ne toimivat toistaiseksi ainoastaan simulaatiossa. Toisaalta simulaatiossa ei
ole FPGA-piiriin verrattuna ongelmaa rajallisista resursseista, jolloin pelkkään si-
mulointiin tarkoitettujen liikennegeneraattoreiden ominaisuudet voivat olla huomat-
tavan monipuoliset.
Syntesoituvia liikennegeneraattoreita on tehty esimerkiksi Kiinan Hefein teknilli-
sessä yliopistossa. OCTG (On-line Con�gurable Tra�c Generator) on liikennegene-
raattori, joka voidaan kon�guroida suoraan piirillä käyttäen JTAG-rajapintaa (Joint
Test Action Group). OCTG on myös mahdollista kon�guroida kesken ajon verkon
toiminnan häiriintymättä. Se on kuitenkin tyypiltään tasaista liikennettä luova ge-
neraattori: se ei osaa reagoida verkon tapahtumiin. [2]
Tässä kandidaatintyössä esitelty liikennegeneraattori yhdistääkin kolme edellä
mainittua tärkeää ominaisuutta. Sen reagoivuus saapuvaan liikenteeseen mahdol-
listaa todellisten sovellusten mallintamisen, ja se voidaan syntesoida FPGA-laudalle
pitkiä ajoja varten. Lisäksi järjestelmän toiminnallisuus voidaan kon�guroida dy-
naamisesti, jolloin minimoidaan tarve uusille synteesikerroille.
4
3. SYNTESOITUVAN
LIIKENNEGENERAATTORIN SYVIN OLEMUS
Tässä kandidaatintyössä esiteltävä syntesoituva liikennegeneraattori (engl. Tra�c
Generator, TG) helpottaa FPGA-alustalla tapahtuvaa vertailua erilaisten piirin-
sisäisten tiedonsiirtoverkkoratkaisujen sopivuudesta sovelluksille. Sen sijaan, että
jouduttaisiin syntesoimaan FPGA-laudalle todellinen järjestelmä prosessoreineen ja
kiihdytinlohkoineen, voidaan sovelluksen verkkoliikennettä mallintaa käyttäen lii-
kennegeneraattoreita. Jokaista komponenttia (prosessori, muisti, kiihdytinlohko ja
niin edelleen) kohden syntesoidaan kuvan 3.1 mukaisesti yksi liikennegeneraatto-
ri, jonka toiminta määritellään dynaamisesti PC:n ja UART-liitynnän (Universal
Asynchronous Receiver Transmitter) avulla vastaamaan kyseistä komponenttia.
Yksi generaattoreista toimii järjestelmässä niin sanottuna isäntänä (engl. master),
joka kommunikoi PC:n kanssa ja vastaa piirillä tapahtuvasta kon�guroinnista sekä
mittaustulosten keräämisestä. Varsinaisten mittausten aikana isäntägeneraattorin
toiminta ei poikkea muista.
Jos tarkoituksena on yksinkertaisesti etsiä valmiille sovellukselle paras verkkorat-
kaisu, voi liikennegeneraattoreiden sijaan olla parempi käyttää sovellusta itseään.
Tällöin sovellus tulisi olla suhteellisen helppo kytkeä eri verkkoihin ja siitä tuli-
si saada tarpeeksi tietoa suorituskyvystä. Liikennegeneraattoreiden kätevyys tulee
esille esimerkiksi skaalautuvien sovellusten kohdalla. Sovelluksesta voi olla olemassa
versio, joka käyttää yhtä prosessoria ja yhtä kiihdytintä. Nyt jos halutaan testata
verkkojen toimivuutta vaikkapa kahdella prosessorilla ja kiihdyttimellä, on liikenne-
generaattorimallin luominen usein nopeampaa kuin todellisen sovelluksen muutta-
minen.
Dynaaminen uudelleenkon�gurointi nopeuttaa liikennegeneraattoreiden käyttöä
huomattavasti. Päinvastoin kuin simuloinnissa, FPGA-alustaa käytettäessä järjes-
telmän valmistelu eli syntesointi vie huomattavan pitkään (kymmeniä minuutteja),
mutta järjestelmän ajaminen on nopeaa (kellotaajuus voi olla yli 50 MHz). Näin ollen
tarvittavien synteesikertojen määrä on pyritty minimoimaan, ja synteesissä määri-
telläänkin vain käytettävissä olevat resurssit. Varsinainen toiminnallisuus syötetään
ajonaikana UART-liitynnän kautta. Liikennegeneraattoreiden kon�guroinnista ker-
rotaan lisää kappaleessa 5.1.
Vaikka nämä liikennegeneraattorit on suunniteltu pääasiassa syntesoituviksi, voi-
3. Syntesoituvan liikennegeneraattorin syvin olemus 5
Tehtävä 1 Tehtävä 3
Tehtävä 2Tehtävä 4
Tehtävä 5
...
Sovellus
CPU 1
Kiihdytin
Muisti
CPU 2
NoC
...
...
Tehtävät sijoiteltuna arkkitehtuuriin
TG 0(master)
TG 2
TG 1
TG 3
NoC
...
...
PC
UART
Sovellus mallinnettuna liikennegeneraattoreilla
1 2
3 4 5
Kuva 3.1: Liikennegeneraattoreiden käyttö todellisen sovelluksen mallintamiseen.
daan niitä käyttää myös simulaatiossa. Tällöin UART-liitynnästä vastaava lohko
tulee korvata simulaatioversiolla, joka lukee generaattoreiden määrittelyt suoraan
tiedostosta. Syntesoituvuus tuo mukanaan rajoitteita lohkojen kuluttamista resurs-
seista, joten generaattoreiden suunnittelussa on jouduttu tasapainottelemaan omi-
naisuuksien ja tallennuskapasiteetin sekä käytettyjen resurssien välillä. Näin ollen
pelkkää simulointia varten saattaa olla järkevämpää käyttää vain simulaatiota var-
ten tehtyjä liikennegeneraattoreita, kuten [7], [6] tai [3].
3.1 Generaattoreiden luoma liikenne
Liikennegeneraattorit siis mallintavat todellisten järjestelmien viestiliikennettä tie-
donsiirtoverkoissa. Lähetetyt sanat sisältävät tietoja, joilla jokainen verkossa kul-
keva sana voidaan tietyn aikaikkunan sisällä liittää yksiselitteisesti tiettyyn lähe-
tykseen. Tämä on erityisen hyödyllistä keskeneräisten verkkojen testaamisessa, jos
verkolla on vaikkapa silloin tällöin tapana reitittää paketteja väärään osoitteeseen.
Sanat sisältävät lisäksi kenttiä, joiden perusteella liikennegeneraattorit laskevat eri
3. Syntesoituvan liikennegeneraattorin syvin olemus 6
yhteyksien välillä liikkunutta datamäärää sekä lähetysten viiveitä.
3.1.1 Sanojen rakenne
Yksittäisen sanan rakenne on esitetty kuvassa 3.2. Kaikille sanoille yhteisiä data-
kenttiä ovat kohde- ja lähdeosoitteet ja sanan tyyppikenttä. Kuormakenttien sisältä-
mä tieto vaihtelee eri sanatyyppien välillä. Erityyppisiä sanoja on neljä, aloitussana,
datasana, polkumittaussana sekä lopetussana.
Sanan rakenne:
Kohdeosoite Lähdeosoite KuormaSanantyyppi
31 .......................... 25,24 .......................... 18,17 ..... 16,15 .................................................................................. 0
Kuva 3.2: Yksittäisen sanan rakenne liikennegeneraattoreiden välisessä liikenteessä.
3.1.2 Lähetyksen rakenne
Kuvassa 3.3 esitetään yksittäisen lähetyksen rakentuminen eri tyyppisistä sanois-
ta. Jokainen lähetys alkaa aloitussanalla, jonka kuormakenttä sisältää lähetyshetken
aikaleiman. Aikaleimaa käytetään lähetyksen viiveen mittaamiseen: vastaanottava
liikennegeneraattori vähentää aikaleiman arvon kellojaksolaskuristaan ja merkitsee
lähetyksen keston muistiin. Myös jokaisen lähetyksen päättävän lopetussanan mu-
kana kulkee viiveen mittaamiseen käytettävä aikaleima.
0
1
2
.
.
.
n-3
n-2
n-1
Lähetyksen rakenne:
Kohdeosoite Lähdeosoite AikaleimaAloitus
Kohdeosoite Lähdeosoite DatatyyppiData Datasanan järjestysnumero
Kohdeosoite Lähdeosoite DatatyyppiData Datasanan järjestysnumero
Kohdeosoite Lähdeosoite AikaleimaLopetus
Kohdeosoite Lähdeosoite DatatyyppiData Datasanan järjestysnumero
Kohdeosoite Lähdeosoite Suoritusketjun alkuaikaPolku
Järjestys-numero:
Kuva 3.3: Yksittäisen lähetyksen rakenne liikennegeneraattoreiden välisessä liikenteessä.
Jos polun mittaamiseen (ks. kohta 3.1.3) käytettävää sanaa ei oteta huomioon,
kaikki aloitus- ja lopetussanan välillä kulkevat sanat ovat datasanoja. Datasanat si-
sältävät datatyyppikentän sekä juoksevan numeron. Datatyyppikenttää käytetään
3. Syntesoituvan liikennegeneraattorin syvin olemus 7
lähetysten erittelemiseen ja uusien lähetysten aloittamiseen saadun datan perusteel-
la. Datatyyppikentän käytöstä kerrotaan tarkemmin kohdassa 3.2.
Datasanojen juoksevaa numerointia käytetään varmistamaan, että lähetetty data
saapuu oikeassa järjestyksessä, ja ettei yhtään sanaa ole hukattu matkalla. Tämä
on erityisen hyödyllistä testattaessa keskeneräisiä verkkoja, ja liikennegeneraatto-
rit raportoivatkin suorituskykymittausten lisäksi sattuneiden tiedonsiirtovirheiden
määrän.
3.1.3 Polkumittaus
Joissakin sovelluksissa suoritus voi kulkea selkeää polkua pitkin: yksi prosessoin-
tielementti laskee jotain, lähettää tuloksensa eteenpäin seuraavalle, joka sekin las-
kee oman osuutensa ja lähettää tulokset jälleen eteenpäin. Tällaisten suoritusketju-
jen kokonaisviivettä voidaan mitata liikennegeneraattoreilla polkumittauspakettien
avulla.
Polku määritellään järjestelmän kon�gurointivaiheessa, ja kaikkiin kyseistä pol-
kua kulkeviin lähetyksiin lisätään polkumittaussana. Kyseinen sana sisältää aika-
leiman koko suoritusketjun alkuajankohdasta. Polkusanan vastaanottaessaan gene-
raattori merkitsee ylös normaalin yhteysväliviiveen lisäksi viiveen koko suoritusket-
jun alusta.
3.2 Liipaisimet ja ajastimet
Kaikki liikennegeneraattoreiden toiminnallisuus perustuu liipaisimiin ja ajastimiin.
Liipaisimet aktivoituvat, kun generaattorille saapuva data vastaa liipaisimelle ase-
tettuja parametreja. Ajastimille puolestaan on asetettu tietty viive, jonka kuluttua
ne aktivoituvat. Aktivoituessaan molemmat odottavat määritellyn ajan mallintaen
prosessointiaikaa, ja käynnistävät sitten uuden lähetyksen. Kuvan 3.4 esimerkissä
ensimmäisen liikennegeneraattorin ajastin käynnistää lähetyksen, joka saa toisen
generaattorin sisältämän liipaisimen aktivoitumaan ja käynnistämään oman lähe-
tyksensä.
Liipasimen aktivoituminen tapahtuu joko saapuvan siirron lähettäjän, datatyyp-
pikentän tai molempien perusteella. Käyttäjän liikennemallia luodessaan vapaasti
valitsemilla datatyyppikentän arvoilla pyritään erottelemaan mallinnettavan sovel-
luksen eri lähetyksiä toisistaan. Todellisessa sovelluksessa kaksi prosessoria voivat
lähettää toisilleen erilaisia lähetyksiä, joiden jälkeinen toiminta eroaa lähetyksestä
riippuen. Liikennegeneraattoreissa kyseistä toimintaa mallinnetaan useammalla lii-
paisimella, jotka ovat herkkiä samalle lähettäjän osoitteelle mutta eri datatyyppien
arvoille.
3. Syntesoituvan liikennegeneraattorin syvin olemus 8
TG 1 TG 2
Ajastin 1:- odotusaika: 500- prosessointiaika: 10- kohde: TG 2- ...
Liipaisin 1:- moodi: osoiteherkkä- aktivoiva osoite: TG 1- prosessointiaika: 20- ...
Kellojaksoja kulunut: 500 – Ajastin 1 aktivoituu, generaattori 1 alkaa prosessoida.
A1 L1
TG 1 TG 2
!A1 L1
Kellojaksoja kulunut: 510 – Generaattori 1 käynnistää lähetyksen.
TG 1 TG 2
!A1 L1
Kellojaksoja kulunut: 510 + latenssi – Generaattorin 2 liipaisin aktivoituu.
TG 1 TG 2
A1 !L1
Kellojaksoja kulunut: 510 + latenssi + 20 – Generaattori 2 käynnistää lähetyksen.
TG 1 TG 2
A1 !L1
Kuva 3.4: Esimerkki ajastinten ja liipaisimien toiminnasta
Ajastimet voivat mallintaa tasavälein lähetettävää dataa, kuten ympäristöstä tu-
levaa syötettä (esimerkiksi kameralta saatava videokuva tai käyttäjän painallukset),
mutta eniten niistä on hyötyä verkkojen yleistä toimivuutta tai suorituskykyä tes-
tattessa. Ajastimilla voi luoda verkkoon tasaista kuormaa, ja viivearvoa tasaises-
ti pienentämällä selviää esimerkiksi testattavan verkon saturaatiopiste, eli kuorman
määrä, joka jälkeen verkko ei enää kykene välittämään yhtään enempää dataa. Verk-
kojen vertailusta ajastimien avulla on esimerkki kappaleessa 6.2.
Kaikki liipaisimet ja ajastimet sisältävät parametreja, joiden perusteella liiken-
negeneraattori luo uuden lähetyksen liipaisimen tai ajastimen aktivoituessa. Näihin
parametreihin kuuluvat lähetyksen pituus, kohde, prosessointiaikaa mallintava odo-
tusaika sekä osiossa 3.3.1 esiteltävät riippuvuudet. Jos lähetyksen pituus asetetaan
nollaksi, mitään ei lähetetä, mutta mahdolliset muut toiminnot suoritetaan. Pituus
voidaan myös määritellä satunnaiseksi, jolloin liikennegeneraattori arpoo pituuden
synteesissä määritellyltä vaihteluväliltä annetun keskiarvopituuden ympäriltä. Myös
kohde voi olla satunnainen, ja liipaisimen voi myös kon�guroida vastaamaan sille lä-
hettäjälle, jolta liipaisimen aktivoinut lähetys saapui.
3. Syntesoituvan liikennegeneraattorin syvin olemus 9
3.3 Erikoisominaisuudet
Todellisten sovellusten mallinnus vaatii pelkkiä lähettäjän osoitteeseen ja lähetys-
tyyppiin perustuvia liipaisimia monimutkaisempia rakenteita. Jokin suoritinlohko
voi esimerkiksi vaatia dataa kahdelta muulta lohkolta, ennen kuin se voi suorittaa
oman osuutensa laskennasta. Toisaalta esimerkiksi videopakkauksessa järjestelmä
saattaa suorittaa välillä eräänlaista silmukkaa, kun yksittäisen kuvan makrolohkoja
lähetetään yksi toisensa jälkeen kiihdyttimille laskettavaksi (ks. kappale 6.1). Lii-
kennegeneraattoreiden suunnittelussa on pyritty muutamalla erikoisominaisuudella
mahdollistamaan monimutkaistenkin järjestelmien suorituksen mallintaminen.
3.3.1 Riippuvuudet
Liikennegeneraattorit sisältävät jaettuja riippuvuuslippuja, joita sekä liipaisimet et-
tä ajastimet voivat asettaa ja joista ne voivat olla riippuvaisia. Jos liipaisin tai ajastin
on riippuvainen lipusta, jota ei ole vielä asetettu, se voi kon�guraatiosta riippuen jo-
ko hylätä aiotun toiminnan tai jäädä odottamaan, että lippu asetetaan. Kuvassa 3.5
on esimerkki riippuvuuslippujen toiminnasta.
Riippuvuusliput ratkaisevat muun muassa kahdesta eri lähetyksestä riippuvan
tapahtuman ongelman. Tällöin generaattori sisältää liipaisimet molemmille odote-
tuille lähetyksille. Toinen liipaisimista asettaa riippuvuuslipun, ja toinen ei aktivoi-
du ennen, kuin lippu on asetettu. Haluttu käynnistettävä lähetys on kon�guroitu
ainoastaan lipusta riippuvaiselle liipaisimelle. Nyt jos lipusta riippuvainen liipaisin
aktivoituu ensin, se jää kuvasta 3.5 nähtävällä tavalla odottamaan lipun asettavan
liipaisimen aktivoitumista. Jos puolestaan lipun asettava liipaisin aktivoituu ensin,
pystyy lipusta riippuvainen liipaisin käynnistämään halutun lähetyksen välittömästi
aktivoiduttuaan.
3.3.2 Aktivoitumisen estäminen
Aktivoitumisen estämistä on kahdenlaista. Liipaisimen tai ajastimen voi asettaa es-
tämään toisten liipaisimien ja ajastimien aktivoituminen samalla kellojaksolla oman
aktivoitumisensa kanssa, tai liipaisimen voi asettaa aktivoitumaan vasta, kun tietty
määrä sen parametreja vastaavia lähetyksiä on vastaanotettu.
Nämä kaksi ominaisuutta yhdistämällä saadaan aikaiseksi kuvan 3.6 mukaisia
silmukkamaisia rakenteita. Kuvassa liikennegeneraattori 1 sisältää kaksi liipaisin-
ta, jotka reagoivat generaattorilta 3 tulevaan lähetykseen. Toinen aktivoituu (tai
käytännössä yrittää aktivoitua) aina käynnistäen lähetyksen generaattorille 2, kun
taas toinen aktivoituu joka toinen kerta käynnistäen lähetyksen generaattorille 4.
Jälkimmäinen liipaisin on lisäksi asetettu estämään muiden aktivoituminen, jolloin
3. Syntesoituvan liikennegeneraattorin syvin olemus 10
Lähetys osoitteesta 2 – Liipaisin 2 aktivoituu mutta jää odottamaan, koska riippuvuuslippua 1 ei ole asetettu.
L1
L2
TG 3
R1
Liipaisin 1: - Aktivoituu lähdeosoitteesta 1- Asettaa aktivoituessaan riippuvuuslipun 1- ...
Liipaisin 2:- Aktivoituu lähdeosoitteesta 2- Riippuvainen riippuvuuslipusta 1- Aktivoiduttuaan jää odottamaan lippua- ...
Riippuvuuslippu 1
L1
L2
TG 3
R1!
Lähetys osoitteesta 1 – Liipaisin 1 aktivoituu, prosessoi ja lopuksi asettaa riippuvuuslipun sekä käynnistää oman lähetyksensä.
L1
L2
TG 3
R1!!
Liipaisimen 1 lähetys päättyy – Liipaisin 2 alkaa prosessoimaan, jonka jälkeen se nollaa riippuvuuslipun sekä käynnistää oman lähetyksensä.
L1
L2
TG 3
R1!
xL1
L2
TG 3
R1!!
L1
L2
TG 3
R1xL1
L2
TG 3
R1!
Kuva 3.5: Esimerkki riippuvuuslippujen toiminnasta
silmukka todella päättyy, eikä generaattorille 2 lähetetä mitään. Silmukan kierros-
luku riippuu jälkimmäiselle liipaisimelle asetettujen toimettomien odotuskertojen
määrästä.
TG 2
TG 3
TG 1
TG 4
1
2
5
6
3
7
4
8
Kuva 3.6: Silmukkarakenne liikennegeneraattoreilla
11
4. LIIKENNEGENERAATTOREIDEN
KERÄÄMÄ MITTAUSDATA
Liikennegeneraattoreiden päätarkoitus on helpottaa erilaisten tiedonsiirtoverkkojen
suorituskykymittauksia. Tätä tehtävää varten ne keräävät tietoa lähetysten latens-
seista sekä verkon kuormituksesta. Syntesoituvuus tuo mukanaan resurssirajoitteita,
joten kerätyn tiedon monipuolisuudesta joudutaan tinkimään. Taulukko 4.1 esittää
mitattavat suureet ja niistä jälkikäteen laskemalla saatavat tulokset.
Taulukko 4.1: Liikennegeneraattoreiden tuottama mittausdata.
Suoraan saatava data Jälkikäteen laskettava data
Lähetysten määrä �Vastaanotettujen sanojen määrä:� Lyhyin lähetys Sanoja/lähetys keskimäärin� Pisin lähetys� Sanojen yhteismääräLähetysten latenssi:� Pienin latenssi Keskimääräinen latenssi� Suurin latenssi� Latenssien summaLähetyksissä esiintyneet virheet:� Järjestysnumerovirheet Virheitä/lähetys keskimäärin� Eksyneet sanat
Jokainen liikennegeneraattori mittaa latenssin ja kuorman erikseen jokaiselta yh-
teysväliltä. Kaikkien latenssien sekä vastaanotettujen sanojen määrät summataan,
ja vastaanotettujen lähetysten määrä lasketaan, jolloin saadaan jälkikäteen laskettua
suureiden keskiarvot. Lisäksi tallennetaan jokaisen yhteysvälin koko mittausjakson
pienin ja suurin latenssin ja lähetyksen pituuden arvo.
Liikenteen määrän ja latenssin mittaamisen lisäksi liikennegeneraattorit seuraa-
vat vastaanottamiensa lähetysten oikeellisuutta. Datasanojen juoksevan numeroin-
nin avulla voidaan havaita kadonneita tai väärään järjestykseen joutuneita sanoja
(järjestysnumerovirheet taulukossa 4.1), ja havaittujen virheiden määrä tallenne-
taan muistiin. Lisäksi tarkkaillaan saapuvien sanojen kohdeosoitteita, ja merkitään
ylös väärään osoitteeseen tulleiden sanojen määrä. Liikennegeneraattoreiden synte-
soituvuus ja virheidentarkkailu mahdollistaa pitkät ja satunnaisuutta hyödyntävät
4. Liikennegeneraattoreiden keräämä mittausdata 12
testiajot, joiden avulla voidaan yrittää löytää hyvin harvoin esiintyviä virheitä ver-
koista.
Tällä hetkellä yksi näiden liikennegeneraattoreiden mahdollinen ongelma on kui-
tenkin pitkien testiajojen tuottama mittausdatan määrä. Nykyisellään generaattorit
käyttävät tulosten tallentamiseen kiinteän kokoisia rekistereitä (16-32 bittiä), joiden
täyttyminen rajoittaa ajoaikaa. Todella suurella kuormalla ja 50 MHz taajuudella
rekisterit täyttyisivät parissa minuutissa, mutta toisaalta esimerkiksi kappaleen 6.1
MPEG-4-mallia voitaisiin nykyisen kokoisilla rekistereillä ajaa yli 19 minuuttia.
Rekistereiden kokoa ei voida määritellä synteesissä esimerkiksi liipaisimien mää-
rän tapaan, koska kon�gurointi- ja raportointiprotokollat vaativat määrätyt datan-
leveydet. Protokollien muuttaminen puolestaan vaatii niin suuria muutoksia lähde-
koodiin, että se katsottiin tässä kehitysvaiheessa liian työlääksi. Tavoitteena on tur-
han työn välttämiseksi hankkia generaattoreista ensin käyttökokemuksia, ja niiden
avulla määritellä kuinka suuria muutoksia on tarpeen tehdä.
13
5. JÄRJESTELMÄN KONFIGUROINTI JA
TULOSTEN SAAMINEN
Käytetyn tietokoneen kapasiteetista ja syntesoitavan järjestelmän koosta riippuen
syntesointi voi kuluttaa aikaa muutamista minuuteista tunteihin, joten tarvitta-
vien synteesikertojen määrä halutaan minimoida. Näiden liikennegeneraattoreiden
suunnittelun yksi peruslähtökohta olikin dynaamisen, eli ajonaikaisen kon�guroinnin
ja tulosten raportoinnin mahdollistaminen. Synteesissä määritelläänkin ainoastaan
käytettävissä olevat resurssit, ja liikennegeneraattoreiden varsinainen toiminnalli-
suus kon�guroidaan tarvittaessa useaankin kertaan ilman uutta synteesiä.
5.1 Dynaaminen kon�gurointi
Käytännössä kon�gurointi tapahtuu keskustelemalla tietokoneen ja UART-liitynnän
välityksellä master-liikennegeneraattorin kanssa, johon on toteutettu yksinkertainen
kommunikaatiojärjestelmä. Master-generaattori kysyy kuvan 5.1 esimerkin mukai-
sesti liitynnän välityksellä tietoja halutusta järjestelmästä, ja välittää saadut para-
metrit sitten eteenpäin muille generaattoreille käyttäen hyväkseen tutkittavaa tie-
donsiirtoverkkoa. Kuvan 5.2 kaavio esittää kon�guroinnin etenemistä järjestelmän
sisällä.
Kuva 5.1: Liikennegeneraattoreiden kon�gurointi manuaalisesti.
5. Järjestelmän kon�gurointi ja tulosten saaminen 14
Tietokone Slave TG 3Slave TG 2Slave TG 1Master TG
Uusi liipaisin/ajastin TG:lle 1
Uusi liipaisin/ajastin TG:lle 2
Aseta polkumittaus polkua 3 - 1 - 2 pitkin
Aloita xxx kellojakson pituinen mittaus
Anna komento
Uusi liipaisin/ajastin
Anna komento
Uusi liipaisin/ajastin
Anna komento
Polun aloittava liipaisin/ajastin
Polkukonfigurointipaketti
Polkukonfigurointipaketti
Anna komento
Kuva 5.2: Esimerkkikaavio järjestelmän kon�guroinnin etenemisestä.
Kon�gurointi suoritetaan aina ennen jokaista mittauskertaa, koska liikennegene-
raattorit unohtavat saamansa tiedot järjestelmän nollauksen aikana. Kuvassa 5.1
näkyvä terminaaliohjelman avulla manuaalisesti tapahtuva kon�gurointi on hidas-
ta ja virhealtista, joten hyvin pieniä testitapauksia lukuunottamatta kon�gurointi
kannattaa tehdä sitä varten kehitetyn ohjelman avulla. Ohjelma käyttää hyväkseen
erityistä formaattia noudattavia kon�guraatiotiedostoja, jolloin sama testitapaus on
nopea toistaa monta kertaa. Käytännön ohjeet kon�gurointia varten löytyvät liiken-
negeneraattoreiden dokumentaatiosta [8].
Simuloitaessa master-generaattori hakee kon�gurointitiedot suoraan edellä mai-
nittua formaattia noudattavasta kon�gurointitiedostosta. Yhteinäisen formaatin avul-
la samat tiedostot toimivat sekä simulaatiossa että oikeaa UART-liityntää käytet-
täessä.
5.2 Tulosten raportointi
Mittaustulosten kerääminen ja raportointi tietokoneelle tapahtuu jokseenkin kään-
teisesti kon�gurointiin nähden. Kun annettu ajoaika on kulunut, jokainen liiken-
negeneraattori lopettaa master-generaattorin käskystä mittaamisen samalla hetkel-
lä. Seuraavaksi verkon annetaan tyhjentyä keskeytyshetkellä liikkeellä olleista lä-
hetyksistä odottamalla tietty määrä kellojaksoja. Kun verkko on tyhjä, master-
5. Järjestelmän kon�gurointi ja tulosten saaminen 15
generaattori pyytää mittaustulokset yksitellen jokaiselta muulta liikennegeneraat-
torilta käyttäen tutkittavana olevaa verkkoa. Tiedot saatuaan master tulostaa ne
UART-liitynnän kautta tietokoneelle. Raportoinnin eteneminen verkon tyhjenemi-
sen jälkeen näkyy kuvasta 5.3.
Tietokone Slave TG 3Slave TG 2Slave TG 1Master TG
Mittaustulokset
Mittaustulokset
Mittaustulokset
Omat tulokset
Raportointikomento
Raportointikomento
TG 1:n tulokset
TG 2:n tulokset
Raportointikomento
TG 3:n tulokset
Kuva 5.3: Esimerkkikaavio järjestelmän raportoinnin etenemisestä.
Tietokoneelle mittausdata saapuu sarjoina heksalukuja, joten tulosten tutkimi-
seen on hyvä käyttää apuna osiossa 5.1 mainittua tietokoneohjelmaa. Kon�guroinnin
automatisoinnin lisäksi ohjelma lukee saadut tulokset ja tulostaa ne ruudulle kym-
menkantaisina lukuina järjesteltyinä otsikoituihin taulukoihin. Ohjelma laskee myös
keskiarvot valmiiksi.
Simuloidessa tulokset tallentuvat suoraan tiedostoon samassa muodossa, kuin ne
olisi tulostettu UART-liitynnän kautta tietokoneelle. Kon�gurointiohjelma kykenee
kääntämään myös tiedostossa olevat tulokset luettavampaan muotoon.
Kuvassa 5.4 on ModelSim-simulaattorin aaltomuotoikkunan avulla havainnollis-
tettu liikennegeneraattoreiden toiminnan vaiheet. Kon�guraatiovaiheessa nähdään,
miten master-generaattori lähtettää kon�guraatiotietoja eteenpäin muille generaat-
toreille. Tämän jälkeen alkaa varsinainen mittaus, jolloin generaattorit luovat lii-
kennettä saamiensa kon�guraatiotietojen mukaisesti. Lopuksi master-generaattori
keskeyttää mittaukset ja kerää sekä lähettää eteenpäin saadut tulokset.
5. Järjestelmän kon�gurointi ja tulosten saaminen 16
Kuva 5.4: Liikennegeneraattoreiden toimintavaiheet ModelSim-simulaattorin aaltomuo-
toikkunassa.
17
6. KÄYTTÖESIMERKKEJÄ
Tässä kappaleessa esitellään liikennegeneraattorin käyttöä verkkojen vertailussa. Lii-
kennegeneraattoreiden yksi tärkeä käyttökohde on todellisten sovellusten mallin-
taminen, jolla helpotetaan parhaan verkkoratkaisun löytämistä kyseiseen järjestel-
mään. Tässä tapauksessa esimerkkinä on käytetty kiihdytettyä MPEG-4-videopakkausta.
Toisena esimerkkinä kuvataan generaattoreiden käyttöä verkkojen yleisominaisuuk-
sien, kuten saturaatiopisteen selvittämiseen.
6.1 MPEG-4-videopakkauksen mallintaminen liikennegeneraat-
toreilla
Tässä esimerkissä tarkoituksena on vertailla HIBI-väylän [10] ja mesh-verkon so-
veltuvuutta MPEG-4-pakkausta suorittavaan järjestelmään käyttäen siitä liikenne-
generaattoreilla luotua mallia. Verkkojen soveltuvuutta kyseiseen järjestelmään on
tutkittu suoraan aidolla sovelluksella, ja on huomattu, etteivät ennakkoarviot verk-
kojen välisistä suhteista aina pidä paikkaansa [4]. Tässä kandidaatintyössä esitellyn
liikennegeneraattorin päätavoite on poistaa tarve aidolle sovellukselle verkon käyt-
täytymistä tutkittaessa.
Mallinnettava videopakkausjärjestelmä koostuu kuvan 6.1 mukaisesti yhdestä ohjaus-
ja kolmesta orjaprosessorista sekä neljästä kiihdytinlohkosta. Kiihdyttimistä kaksi
on liikkeenestimointia (ME) ja kaksi kosinimuunnosta sekä kvantisointia (DQ) var-
ten. Lisäksi järjestelmässä on jaettu muistilohko ja resurssien varaamisesta vastaava
resurssimanageri (RM).
Liikennegeneraattorimallin yksi ongelma todelliseen järjestelmään verrattuna on,
ettei suoraan saada selville montako kuvaa sekunnissa mallin esittämä järjestelmä
tuottaisi. Kuvataajuus saadaan kuitenkin selville kiertoteitse. Todellisessa järjestel-
mässä kukin kuva jaetaan prosessoitavaksi orjaprosessoreille, jotka valmistuttuaan
ilmoittavat tilastaan ohjausprosessorille. Laskemalla orjilta ohjausprosessorille tul-
leiden lähetysten määrän ja jakamalla sen ajoajalla saadaan selville haluttu kuva-
taajuuden arvo.
Mittaukset suoritettiin FPGA-piirillä, ja järjestelmää ajettiin kymmenen sekun-
tia. Yhteensä yksittäiseen mittauskertaan kului aikaa kolmekymmentä sekuntia joh-
tuen UART-liitynnän kautta tapahtuneen kon�guroinnin ja tulosten siirtämisen vii-
veistä. Simuloituna yhtä pitkä testiajo olisi kestänyt kymmenistä minuuteista tun-
6. Käyttöesimerkkejä 18
Ohjaus-prosessori
Orja-prosessori
1
Orja-prosessori
2
Orja-prosessori
3Muisti
ME 1 ME 2 DQ 1 DQ 2 RM
Tiedonsiirtoverkko
Kuva 6.1: Kaaviokuva MPEG-4-videopakkausjärjestelmästä.
Taulukko 6.1: Mittaustulokset MPEG-4-pakkausjärjestelmän liikennegeneraattorimallista.
VerkkoTulos HIBI-väylä Mesh-verkkoKuvaa/s 18,7 20Keskim. latenssi(kellojaksoa)
1598 440
Verkon koko(logiikkaele-menttiä)
5166 9113
Taajuus 50 MHzAjoaika 10 s
teihin.
Taulukkoon 6.1 on koottu mittauksista saadut tärkeimmät tulokset sekä verkko-
jen kokovertailu. Mittaustulosten perusteella mesh-verkko aiheuttaa siis alle 1,1 ker-
taisen nopeutuksen tutkittuun järjestelmään, vaikka kaikkien yhteysvälien kesken
laskettu latenssien keskiarvo väheneekin lähes neljäsosaan. Tämä tukee väitettä sii-
tä, ettei verkkojen yleisen vertailun perusteella voi päätellä verkkojen suorituskykye-
roja aidossa sovelluksessa. Tässä tapauksessa HIBI-väylä on myöskin pinta-alaltaan
noin 43% mesh-verkkoa pienempi, joten mesh-verkolla saavutettu pienehkö nopeutus
tulee kalliilla hinnalla. Tarkempi ja yleisempi vertailu HIBI-väylän ja mesh-verkon
ominaisuuksista löytyy julkaisusta [9].
6.1.1 Sovellusmallin luominen ja vaadittava työmäärä
Tällaisen mittauksen toteuttamiseksi liikennegeneraattoreilla tarvitaan ensin tietoa
aidon sovelluksen käyttäytymisestä. Mitä tarkemmin prosessointiajat ja lähetysten
koko sekä riippuvuudet tiedetään, sitä tarkempi malli voidaan rakentaa. Todellisen
sovelluksen ominaisuuksien selvittäminen onkin helposti eniten aikaa vievä osuus
6. Käyttöesimerkkejä 19
mallia rakennettaessa, ja ajankulutus on aina tapauskohtainen.
Kun mallinnettavan sovelluksen ominaisuudet ovat selvillä, tulee seuraavaksi luo-
da itse liikennegeneraattorijärjestelmä ja kon�gurointitiedosto. Järjestelmän luomi-
seen kuluva aika on riippuvainen lähinnä käytetyn verkon rajapinnasta. Jos liikenne-
generaattoreiden ja verkon rajapinnat poikkeavat toisistaan, on väliin tehtävä sovi-
tinlohko. Tämänhetkisten kokemusten perusteella sovittimen tekemiseen kuluu aikaa
muutamista tunneista muutamaan päivään riippuen rajapintojen eroista. Generaat-
toreiden mukana tulee muun muassa tässä työssä käytettyjä verkkoja tukeva sovitin,
joten yksinkertaisimmillaan järjestelmän saa luotua vain liittämällä valmiina olevat
lohkot yhteen. Tähän voi kulua käytetyistä työkaluista riippuen aikaa minuuteista
muutamaan tuntiin.
Kon�gurointitiedoston luominen on mallin laadun kannalta kriittinen osuus. Käy-
tännössä tiedoston tekeminen tarkoittaa liikennettä luovien liipaisimien ja ajasti-
mien määrittelemistä sovelluksen ominaisuuksien perusteella. Esimerkin MPEG-4-
järjestelmän mallintamisessa käytetään kymmentä liikennegeneraattoria sekä yh-
teensä 57:ää liipaisinta ja ajastinta, ja tiedoston hiominen nykyiseen muotoonsa
vei aluksi hieman epäselvien sovelluksen ominaisuuksien takia useita päiviä. Tämän
vaiheen ajankulutus riippuukin suuresti ensimmäisen vaiheen, eli sovelluksen omi-
naisuuksien selvittämisen onnistumisesta sekä liikenteen rakenteiden monimutkai-
suudesta. Yksinkertaisten yhteyksien luominen onnistuu muutamissa minuuteissa,
mutta monimutkaisten riippuvuuksien mallintaminen vaatii huomattavasti enem-
män suunnittelua.
Yleisesti ottaen liikennegeneraattorimallin tekemiseen ensimmäistä kertaa voi ku-
lua useita päiviä. Monimutkaisten liikennerakenteiden mallintaminen nopeutuu kui-
tenkin kokemuksen myötä, kun ymmärrys liipaisimien ja ajastimien toiminnasta sy-
venee. Kun työkalut ja -vaiheet tulevat tutuiksi, on monimutkaisenkin mallin luomi-
nen mahdollista tehdä muutamassa tunnissa. Lisäksi on vertailun vuoksi hyvä mai-
nita, että esimerkissä mallinnetun todellisen sovelluksen toteuttaminen kesti muu-
tamia kuukausia.
6.1.2 Esimerkin vaatimat erikoisrakenteet
Todellisissa sovelluksissa on myös usein monimutkaisempia rakenteita, kuin yksittäi-
sillä liipaisimilla tai ajastimilla pystytään kuvaamaan. MPEG-4-pakkauksessa kul-
loinkin käsiteltävä kuva jaetaan lukuisiin makrolohkoihin, joita orjaprosessorit kier-
rättävät kiihdyttimillä. Suoritus pyörii silmukassa niin kauan kunnes kaikki mak-
rolohkot on läpikäyty. Silmukat on toteutettu kappaleessa 3.3.2 esitetyllä tavalla
riippuvuuksia hyväksi käyttäen.
Toinen hankalasti mallinnettava ominaisuus on kiihdyttimien arbitrointi. Todel-
lisessa sovelluksessa arbitroinnista vastaava resurssimanageri jakaa kiihdyttimien
6. Käyttöesimerkkejä 20
käyttöoikeuksia orjaprosessoreille, mutta liikennegeneraattorit eivät tähän pysty.
Esimerkkimallissa asia on ratkaistu arbitrointilohkoa mallintavan generaattorin kah-
della samoihin saapuviin lähetyksiin reagoivilla, mutta erilaisella vastauslähetyksillä
varustetuilla liipaisimilla, joista toinen aktivoituu vain joka kolmas kerta ja estää
aktivoituessaan toisen toiminnan. Orjaprosessoreita mallintavat generaattorit puo-
lestaan lähettävät dataa eri osoitteisiin riippuen arbitterilohkolta saamistaan vas-
tauslähetyksistä. Näin joka kolmas makrolohkoa kuvaava lähetys päätyy eri kiihdy-
tintä mallintavalle generaattorille kuin muut. Todellisen sovelluksen kiihdyttimien
kuorma noudattaa suurin piirtein samaa jakaumaa.
Kolmas ongelmallinen tilanne esimerkin mallissa on liikkeenestimoijan toiminta.
Oikean liikkeenestimoijan tulee toimintakäskyn saatuaan hakea tarvittava kuvadata
muistista, prosessoida, ja lopulta lähettää tulokset takaisin kiihdytintä kutsuneelle
prosessorille. Tämä tarkoittaa sitä, että liikennegeneraattorin tulee muistaa koko toi-
minnan ajan, miltä orjaprosessoria mallintavalta generaattorilta toimintakäsky tuli.
Riippuvuudet auttavat tääsäkin tapauksessa. Toimintakäsky aktivoi heti saapues-
saan lähettäjälle vastaavan liipaisimen, joka jää odottamaan, että muistista saapuva
lähetys asettaa riippuvuuslipun.
6.2 Tiedonsiirtoverkkojen vertailu liikennegeneraattoreiden avulla
Vaikka tässä kandidaatintyössä esitelty liikennegeneraattori onkin pääasiassa tar-
koitettu edellisen osion kaltaiseen todellisten järjestelmien mallintamiseen, voi sitä
käyttää myös tiedonsiirtoverkkojen yleiseen vertailuun. Tällöin on usein tarkoitus
luoda tasaista ja satunnaista liikennettä, ja tutkia verkkojen suorituskyvyn muu-
toksia, kun jotakin liikenteen parametria muutetaan. Muutettavia parametreja ovat
esimerkiksi verkkoon aiheutettava kuorma (käytännössä generaattoreiden lähetys-
taajuus), lähetysten keskimääräinen pituus tai lähetysten paikallisuus. Myös verk-
kojen ominaisuuksia, kuten puskureiden kokoa tai kytkentätapaa, voidaan muutella.
Tässä esimerkissä verrataan keskenään kolmea eri topologiaa: mesh-verkkoa, väy-
lää ja piirikytkentäistä ristikytkentämatriisia (ks. kuva 6.2). Verkkoja testataan kah-
deksan liikennegeneraattorin järjestelmällä, joka lähettää keskimäärin kahdenkym-
menen sanan mittaisia lähetyksiä. Vaihtuvana parametrina on kuorma, jota kas-
vatetaan mittausten välillä kaksi prosenttiyksikköä alkaen kahdesta ja päättyen 30
prosenttiin. Tarkempaa tietoa verkkojen parametreista löytyy taulukosta 6.2. Tietoa
topologioista ja kytkentätavoista löytyy muun muassa lukuisien esitettyjen verkko-
ratkaisujen kartoituksesta [11].
Kuva 6.3 sisältää kuvaajat verkkojen suorituskyvystä. Kaaviossa näkyy verkon
läpi kulkeneiden sanojen määrän (kilotavuina, vasen Y-akseli) ja kaikkien yhteysvä-
lien kesken lasketun keskimääräisen latenssin (kellojaksoina, oikea Y-akseli) kehitys.
Yksi yleisesti kiinnostava ja kuvaajista helposti nähtävissä oleva tiedonsiirtoverk-
6. Käyttöesimerkkejä 21
Väylä Mesh-verkko Ristikytkentämatriisi
Kuva 6.2: Vertailtujen verkkojen topologiat
Taulukko 6.2: Parametrit verkkojen vertailussa
Agenttien määrä 8Taajuus 50 MHzDatanleveys 32 bittiäAjoaika 100 000 kellojaksoaKeskimääräinen siirto 20 sanaa + otsikotPuskureiden koko 4 sanaaPaketin koko (vain mesh-verkko) 8 sanaaKytkentätapa Wormhole
kojen piirre on niiden saturaatiopiste. Verkon saturoituminen tarkoittaa sen tiedon-
välityskyvyn ylärajan saavuttamista: kuorman lisääntyessä välitetyn datan määrä ei
enää kasva. Tämä näkyy kuvaajissa verkon läpäisevän datan määrää kuvaavan käy-
rän vakiintuessa tietylle tasolle tai alkaessa jopa laskea. Verkon saturoituessa myös
keskimääräinen latenssi moninkertaistuu äkillisesti.
Kuvaajista näkee helposti topologian merkityksen verkon suorituskyvylle. Väylä
ei luonnollisesti kykene samoihin tiedonsiirtomääriin mesh-verkon tai ristikytken-
tämatriisin kanssa, koska väylällä kaikki lähetykset kilpailevat samasta tiedonsiir-
tokanavasta. Ristikytkentämatriisissa puolestaan jokaiselle yhteysvälille on oma ka-
navansa, jolloin yksi siirto ei estä muita. Tämä kasvattaa kuitenkin huomattavasti
verkon pinta-alaa, ja sopivimman verkkoratkaisun valinta riippuukin lukuisista te-
kijöistä pelkän välityskapasiteetin sijaan.
Tässä kandidaatintyössä esiteltyjen liikennegeneraattoreiden rajoitteet tämänkal-
taisessa tutkimuksessa tulevat ilmi kuvaajien käyrien epätasaisuudesta. Tasavälein
tapahtuvia lähetyksiä tuotetaan ajastimilla (ks. osio 3.2), joiden odotusaika lähe-
tysten välissä on aina vakio. Liikenteen kaavamaisuuden vähentämiseksi kon�gu-
raatiotiedoston luova ohjelma kon�guroi eri generaattoreiden ajastimien odotusajat
satunnaisesti hieman toisistaan poikkeaviksi, mistä syystä eri yhteysvälien kuormat
eroavat hieman toisistaan. Joskus satunnaisuus parantaa ja joskus taas heikentää
verkon mitattua suorituskykyä.
Pieni tulosten heittely ei kuitenkaan aiheuta suurta haittaa, joten verkkojen ver-
tailu näillä liikennegeneraattoreilla on täysin mahdollista. Selkeästi poikkeavia tu-
6. Käyttöesimerkkejä 22
Kuva 6.3: Kolmen eri verkkoratkaisun suorituskykykuvaajat.
loksia aiheuttavan kon�gurointitiedoston voi tehdä uudestaan, jolloin sen tuottamat
tulokset todennäköisesti palaavat linjaan muiden kanssa. Jos juuri näille liikennege-
neraattoreille ei esimerkiksi syntesoitavuuden takia ole kuitenkaan erityistä tarvetta,
tuottavat pelkästään simulaatioon tarkoitetut generaattorit mahdollisesti tarkempia
tuloksia.
23
7. YHTEENVETO
Tässä kandidaatintyössä esiteltiin syntesoituva liikennegeneraattori, joka on ensi-
sijaisesti suunniteltu mallintamaan todellisten sovellusten aikaansaamaa liikennet-
tä piirinsisäisissä tiedonsiirtoverkoissa. Verkkoliikenteen luominen perustuu gene-
raattoreiden sisäisiin liipaisimiin ja ajastimiin, jotka saapuvan liikenteen tai kello-
jaksolaskurin perusteella käynnistävät määrätynlaisia lähetyksiä. Monimutkaisem-
pia liikennerakenteita varten liipaisimilla ja ajastimilla voi olla erikoisominaisuuksia
kuten riippuvuuksia toisistaan. Taulukko 7.1 sisältää yhteenvedon generaattorei-
den perustiedoista. Liikennegeneraattori on lisensoitu vapaan lähdekoodin LGPL-
lisenssillä [13], ja se on vapaasti saatavilla taulukosta löytyvästä Internet-osoitteesta.
Taulukko 7.1: Liikennegeneraattorin perustiedot
Toteutuskieli VHDLTarkoitus Sovellusten verkkoliikenteen mallintaminen verkkojen
vertailua varten.Lisenssi LGPL [13]Käyttötavat Simulaatio ja FPGAVahvuudet Syntesoituvuus ja dynaaminen kon�gurointi.Heikkoudet Tasapainoilu ominaisuuksien ja resurssienkulutuksen
välillä.Koodirivien määrä VHDL: >6000, Python: >2000Toteuttamiseen kulu-nut aika
Noin 2 kk kahdelta henkilöltä
Koko FPGA-piirillä(Altera Cyclone II,logiikkaelementtiä)
Normaali TG 2000+, Master TG 4000+. Kokohuomattavan riippuvainen liipaisimien ja ajastimienmäärästä.
Apuohjelmat Python-ohjelmat generaattoreiden hallintaan FPGA-laudalla sekä kon�guraatiotiedostojen luomiseen.
Saatavilla osoitteesta http://www.tkt.cs.tut.�/research/nocbench/download.html
Liikennegeneraattoreiden käytöstä on pyritty tekemään mahdollisimman nopeaa
ja yksinkertaista määrittelemällä synteesissä vain käytettävät resurssit ja kon�gu-
roimalla varsinainen toiminnallisuus ajonaikaisesti UART-liitynnän avulla. Gene-
raattoreita voidaan käyttää myös simulaatiossa, jolloin kon�gurointitiedot saadaan
suoraan tiedostosta. Samat tiedostot käyvät sekä syntesoidussa että simuloidussa
järjestelmässä.
7. Yhteenveto 24
MPEG-4-videopakkausesimerkin avulla näytettiin, että liikennegeneraattoreilla
tuotetulla mallilla saadaan suhteellisen helposti selkeästi parempaa tietoa verkkojen
sopivuudesta sovelluksille kuin pelkästään verkkojen yleisominaisuuksia vertaillen.
Esimerkkitapauksessa todettiin myös, että tulosten tarkkuuden kannalta oleellista
on saada tarkkaa tietoa todellisen sovelluksen ominaisuuksista, kuten prosessointia-
joista sekä liikenteen riippuvuuksista.
Toisen esimerkin avulla todettiin, että näitä liikennegeneraattoreita voidaan käyt-
tää myös verkkojen yleisempään vertailuun. Generaattoreiden kyky tuottaa satun-
naista ja tasaista liikennettä on kuitenkin rajallinen, joten tarkempia mittauksia
varten voi olla parempi käyttää yksinomaan kyseistä tarkoitusta varten tehtyjä lii-
kennegeneraattoreita. Näiden liikennegeneraattoreiden ominaisuuksien määrää ra-
joittavat syntesoitavuuden tuomat resurssi- ja taajuusvaatimukset, joten pelkästään
simulaatiokäyttöön on olemassa monipuolisempiakin vaihtoehtoja.
7.1 Tulevia kehittämiskohteita
Tällä hetkellä tärkeintä näiden liikennegeneraattoreiden kehityksessä on saada niistä
käyttökokemuksia. Vasta riittävien käyttökokemusten perusteella voidaan päätellä,
miten hyvin tähän mennessä toteutetut ominaisuudet riittävät todellisten sovellus-
ten mallintamiseen ja mitä uusia ominaisuuksia tulee lisätä, jotta tehtyjen mallien
tarkkuus paranee.
Yksi suunniteltu uudistus on kon�guraatio- ja raportointiprotokollien uudista-
minen tukemaan vaihtelevan kokoisia tulosrekistereitä. Tällä hetkellä esimerkiksi
lähetysten määrän ja latenssin säilövät rekisterit ovat kiinteästi 32-bittisiä, mut-
ta käyttökokemusten avulla pyritään saamaan selville onko suurempia rekistereitä
vaativille erityisen pitkille testiajoille tarvetta.
Myös uusia liipaisuehtoja ja liipaisintyyppejä sekä ajastimien odotusaikojen sa-
tunnaistamista on suunniteltu, mutta näitäkään muutoksia ei haluta toteuttaa en-
nen kuin voidaan osoittaa niiden tarpeellisuus. Lukuisten liipaisinehtojen vertailu
samanaikaisesti aikaansaa synteesissä huomattavan suuria rakenteita, jolloin pienet-
kin lisäykset kasvattavat resurssienkulutusta ja kombinatoristen polkujen viivettä
huomattavasti.
25
LÄHTEET
[1] Benini, L., De Micheli, G. �Networks on Chips: A New SoC Paradigm.� IEEE
Computer, vol. 35, no. 1, Tammikuu 2002
[2] Hai-Hua Wen, Gao-Ming Du, Duo-Li Zhang, Luo-Feng Geng, Ming-Lun Gao,
Ying-Chun Chen. �Design of An On-line Con�gurable Tra�c Generator for
NoC.� 3rd International Conference on Anti-counterfeiting, Security, and Iden-
ti�cation in Communication, Elokuu 2009.
[3] Kangas, T., Riihimäki, J., Salminen, E., Kuusilinna, K., Hämäläinen, T. D.
�Using a Communication Generator in SoC Architecture Exploration� Interna-
tional Symposium on System-on-Chip, Tampere, Marraskuu 2003.
[4] Kulmala, A., Salminen, E., Hännikäinen, M., Hämäläinen, T. D. �Evaluating
SoC Network Performance in MPEG-4 Encoder.� The Journal of Signal Proces-
sing Systems for Signal, Image, and Video Technology, Toukokuu 2008.
[5] Lahiri, K., Raghunathan, A., Dey, S. �Evaluation of the Tra�c-Performance
Characteristics of System-on-Chip Communication Architectures.� 14th Inter-
national Conference on VLSI Design, Tammikuu 2001.
[6] Mahadevan, S., Angiolini, F., Sparso, J., Benini, L., Madsen, J. �A Reactive
and Cycle-True IP Emulator for MPSoC Exploration.� IEEE Transactions on
Computer-Aided Design of Integrated Circuits and Systems, Tammikuu 2008.
[7] Mahadevan, S., Angiolini, F., Storgaard, M., Olsen, R. G., Sparsø, J., Madsen
J. �A Network Tra�c Generator Model for Fast Network-on-Chip Simulation.�
Design, Automation and Test in Europe, 2005.
[8] Nieminen, J. �Tra�c Generator Usage.� Saatavilla verkosta:
http://www.tkt.cs.tut.�/research/nocbench/data/tra�c_generator_20091201.zip.
Marraskuu 2009
[9] Salminen, E., Kangas, T., Lahtinen, V., Riihimäki, J., Kuusilinna, K., Hämäläi-
nen, T. D. �Benchmarking Mesh and Hierarchical Bus Networks in System-on-
Chip Context� Journal of System Architectures, Vol.53, Issue 8, Elokuu 2007.
[10] Salminen, E., Kangas, T., Riihimäki, J., Lahtinen, V., Kuusilinna, K., Hämäläi-
nen T. D. �HIBI Communication Network for System-on-Chip� Journal of VLSI
Signal Processing-Systems for Signal, Image, and Video Technology, Kesäkuu
2006.
LÄHTEET 26
[11] Salminen, E., Kulmala, A., Hämäläinen T. D. �Survey of Network-on-Chip Pro-
posals.� Saatavilla verkosta: http://www.ocpip.org/uploads/documents/OCP-
IP_Survey_of_NoC_Proposals_White_Paper_April_2008.pdf. OCP-IP,
Maaliskuu 2008.
[12] Thuan Le, Khalid, M. A. S. �NoC Prototyping on FPGAs: A Case Study Using
an Image Processing Benchmark.� IEEE International Conference on Elect-
ro/Information Technology, Kesäkuu 2009.
[13] Lesser General Public License, Free Software Foundation, Inc.
http://www.gnu.org/copyleft/lesser.html