Avoimen lähdekoodin liukulukuyksikkötoteutukset FPGA:lle
Prusi, Samu (2020)
Prusi, Samu
2020
Tieto- ja sähkötekniikan kandidaattiohjelma - Degree Programme in Computing and Electrical Engineering, BSc (Tech)
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2020-06-02
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202005275746
https://urn.fi/URN:NBN:fi:tuni-202005275746
Tiivistelmä
Liukuluvut ovat merkittävässä asemassa tietokoneella tehtävässä laskentatyössä, sillä kokonaisluvuilla ei kyetä suorittamaan kaikkia laskuja. Liukuluvut tarjoavat reaaliluvuille laajan lukuskaalan, jolloin voidaan esittää suurten lukuarvojen lisäksi pienet lukuarvot riittävällä tarkkuudella. Liukuluvuilla tehtävää aritmetiikkaa suoritetaan liukulukuyksikössä.
Tässä työssä etsitään avoimen lähdekoodin liukulukuyksikkötoteutuksia ja implementoidaan niitä FPGA-alustoille. Implementaatiotulosten perusteella tarkastellaan yksiköiden resurssien- ja tehonkulutusta sekä ajoitustietoja. Työhön valittiin kolme laitteistonkuvauskielellä toteutettua yksikköä sekä yksi korkeammalla abstraktiotasolla kuvattu yksikkö.
Ensimmäisessä mittausosiossa vertailtiin laitteistonkuvauskielitoteutuksia implementoimalla niitä samalle alustalle. Mittaustulosten perusteella todettiin yksiköiden resurssien- ja tehonkulutuksen lisääntyvän yksiköiden tarkkuuden ja kellotaajuuden kasvaessa.
Toisessa mittausosiossa tarkasteltiin miten mitattavat parametrit muuttuvat kohdealustan vaihtuessa. Mittaustulosten perusteella todettiin yksiköiden ajoitusten parantuvan kohdealustan vaihtuessa tehokkaampaan. Vastaavasti huomattiin ajoitusten heikkenevän ja voivan jopa epäonnistua vaatimattomammalla kohdealustalla. Jokaisen laitteistonkuvauskielitoteutuksen tehonkulutus kasvoi siirryttäessä tehokkaammalle alustalle. Mittauksissa nousi esille, että implementoitaessa yksiköitä tehokkaammalle alustalle alustan tehonkulutus nousi itse toteutuksen tehonkulutusta merkittävämmäksi. Tällöin tehokkaamman alustan valinta liukulukuyksikölle ei välttämättä ole enää perusteltua, jos yksikkö saadaan implementoitua ja ajoitettua onnistuneesti myös vaatimattomammalla alustalla.
Kolmannessa mittausosiossa vertailtiin laitteistonkuvauskielellä ja korkeamman tason kuvauksella toteutettuja yksiköitä. Mittaustulosten perusteella korkeamman tason toteutus vaatii laitteistonkuvauskielitoteutukseen verrattuna enemmän resursseja ja kuluttaa enemmän tehoa. Tällöin todettiin laitteistonkuvauskielellä toteutetun rekisteritason kuvauksen olevan vielä tehokkaampi vaihtoehto liukulukuyksiköiden toteutukseen. Korkeamman tason toteutuksen todettiin kuitenkin vaativan vielä tarkempaa tutkimusta, sillä sen tarjoamista operaatioista mitattiin ainoastaan murto-osaa. Korkeamman tason kuvauksen edut saattavatkin tulla ilmi vasta monimutkaisempia aritmeettisia operaatioita toteutettaessa.
Tässä työssä etsitään avoimen lähdekoodin liukulukuyksikkötoteutuksia ja implementoidaan niitä FPGA-alustoille. Implementaatiotulosten perusteella tarkastellaan yksiköiden resurssien- ja tehonkulutusta sekä ajoitustietoja. Työhön valittiin kolme laitteistonkuvauskielellä toteutettua yksikköä sekä yksi korkeammalla abstraktiotasolla kuvattu yksikkö.
Ensimmäisessä mittausosiossa vertailtiin laitteistonkuvauskielitoteutuksia implementoimalla niitä samalle alustalle. Mittaustulosten perusteella todettiin yksiköiden resurssien- ja tehonkulutuksen lisääntyvän yksiköiden tarkkuuden ja kellotaajuuden kasvaessa.
Toisessa mittausosiossa tarkasteltiin miten mitattavat parametrit muuttuvat kohdealustan vaihtuessa. Mittaustulosten perusteella todettiin yksiköiden ajoitusten parantuvan kohdealustan vaihtuessa tehokkaampaan. Vastaavasti huomattiin ajoitusten heikkenevän ja voivan jopa epäonnistua vaatimattomammalla kohdealustalla. Jokaisen laitteistonkuvauskielitoteutuksen tehonkulutus kasvoi siirryttäessä tehokkaammalle alustalle. Mittauksissa nousi esille, että implementoitaessa yksiköitä tehokkaammalle alustalle alustan tehonkulutus nousi itse toteutuksen tehonkulutusta merkittävämmäksi. Tällöin tehokkaamman alustan valinta liukulukuyksikölle ei välttämättä ole enää perusteltua, jos yksikkö saadaan implementoitua ja ajoitettua onnistuneesti myös vaatimattomammalla alustalla.
Kolmannessa mittausosiossa vertailtiin laitteistonkuvauskielellä ja korkeamman tason kuvauksella toteutettuja yksiköitä. Mittaustulosten perusteella korkeamman tason toteutus vaatii laitteistonkuvauskielitoteutukseen verrattuna enemmän resursseja ja kuluttaa enemmän tehoa. Tällöin todettiin laitteistonkuvauskielellä toteutetun rekisteritason kuvauksen olevan vielä tehokkaampi vaihtoehto liukulukuyksiköiden toteutukseen. Korkeamman tason toteutuksen todettiin kuitenkin vaativan vielä tarkempaa tutkimusta, sillä sen tarjoamista operaatioista mitattiin ainoastaan murto-osaa. Korkeamman tason kuvauksen edut saattavatkin tulla ilmi vasta monimutkaisempia aritmeettisia operaatioita toteutettaessa.
Kokoelmat
- Kandidaatintutkielmat [8800]