<?xml version="1.0" encoding="utf-8"?>
<Gradivo ID="77360" NadgradivoID="0" NRID="11980604" OceID="0" DomainUrl="https://dk.um.si/" IzpisPolniUrl="https://dk.um.si/IzpisGradiva.php?lang=slv&amp;id=77360" StOgledov="1792" StPrenosov="179" StOcen="0" VsotaOcen="0" DatumIzvoza="2026-10-01 17:02:06" OcenaSkupna="0" StPodgradiv="0" StudijskiProgramEvsID="" JeIndeksirano="0" JeVecAvtorjev="0" DovoliZahtevkeZaDostop="0">
  <PID Url="http://hdl.handle.net/20.500.12556/DKUM-77360">20.500.12556/DKUM-77360</PID>
  <Naslov>Deep Learning on Low Power Embedded Devices Using RISC-V Cores with an Extended Instruction Set</Naslov>
  <Podnaslov>master&#039;s thesis</Podnaslov>
  <TujJezik_Naslov>Globoko učenje na nizkoenergijskih vgrajenih napravah z uporabo jeder RISC-V z razširjenim naborom ukazov</TujJezik_Naslov>
  <TujJezik_Podnaslov></TujJezik_Podnaslov>
  <Opis>This thesis explores the possibility of running neural networks on microcontrollers and how
to optimize their performance using instruction set extensions. Microcontrollers are seen as
too weak to run neural networks. We challenge this view and show that stripped-down neural
networks can run and be useful for some applications. We used an open-source microcontroller
called PULPino to run our neural network. The benefit of various instructions and optimizations
for minimizing energy consumption to run deep learning algorithms was evaluated. Hardware
loops, loop unrolling, and the dot-product unit were implemented and tested.
We developed an FPGA-based testing system to evaluate our hardware. We also developed a
deep learning library and a test neural network for our hardware. We wrote two versions of
the deep learning library. One version is the reference code, and the other is the optimized
code that uses the dot product unit. Using the testing system, we tested the performance of
the two versions. The synthesis was run to determine the power and energy consumption. We
also tried out various optimizations to see if the performance could be improved.
Using instruction set extensions and algorithmic optimizations we reduced the clock cycle count by 72% for the convolutional layers and by 78% for fully-connected layers. This reduced
power consumption by 73%. We compare our results with related research.</Opis>
  <TujJezik_Opis>V magistrski nalogi smo raziskovali, kako različne razširitve nabora ukazov vplivajo na
učinkovitost izvajanja algoritmov globokega učenja — predvsem v kontekstu nizkoenergijskih
vgrajenih naprav. Konkretno smo pogledali uporabnost inštrukcij za strojne zanke in inštrukcij
za skalarni produkt. 

Algoritmi globokega učenja se redko uporabljajo v vgrajenih sistemih, ker so
računsko in energijsko zelo zahtevni. Zatorej je bil stranski cilj magistrske naloge pokazati, da
lahko algoritme globokega učenja v okrnjeni obliki kljub temu uporabljamo v nizkoenergijskih
vgrajenih napravah. 

Za osnovo smo vzeli odprtokodni mikrokrmilnik PULPino, ki sta ga skupaj razvila ETH
Zürich in Univerza v Bologni. Procesorsko jedro mikrokrmilnika PULPino se imenuje RI5CY.
RI5CY je majhno jedro s cevovodom s štirimi stopnjami. Jedro je namensko zgrajeno
za nizkoenergijsko paralelno računanje. Procesorsko jedro smo nato nadgradili z enoto za
računanje skalarnega produkta vektorjev velikosti štiri. Vso aritmetiko smo delali v aritmetiki s
plavajočo vejico. Pomembna funkcionalnost jedra RI5CY je funkcija strojne zanke. Ta funkcija
nam je omogocala učinkovitejše izvajanje zank z majhnim telesom — t.j. z majhnim številom
ukazov v telesu zanke.

Da smo lahko ocenili ucinkovitost našega sistema, smo razvili testni sistem, ki je temeljil na
Zynq-7000. Zynq-7000 je družina sistemov na čipu podjetja Xilinx. Čipi Zynq-7000 imajo na
istem siliciju združeno tako trdo intelektualno lastnino kot tudi programirljivo polje logičnih
vrat. Del trde intelektualne lastnine je procesor ARM Cortex-A9, na katerem smo poganjali
aplikacijo v Linuxu, ki je sprogramirala, nadzirala in spremljala na FPGA-ju emuliran
PULPino. Aplikacija je tudi izvajala meritve in zbirala rezultate. Procesor ARM Cortex-A9
in PULPino smo povezali z vodilom AXI. Po tem vodilu smo v PULPino dostavljali vhodne
podatke za nevronsko mrežo. PULPino je o koncu računanja obvestil procesor ARM Cortex-A9
s prekinitvijo. Sistem smo načrtovali v programu Vivado podjetja Xilinx.

V sklopu naloge smo razvili tudi preprosto demonstracijsko konvolucijsko nevronsko mrežo, ki
smo jo poganjali na naši strojni opremi. Izvajala je optično zaznavo znakov z vsega petimi sloji
— dva konvolucijska sloja, dva polno-povezana sloja in izhodni sloj tipa Softmax. Nevronsko
 mrežo smo razvili s knjižnico TensorFlow podjetja Google. 

Ugotovili smo, da je dodana enota za računanje skalarnega produkta vektorjev povečala
površino silicija za 172 %. Povečanje površine je več kot podvojilo statično porabo, medtem
ko je dinamična poraba ostala na podobni ravni. Velikost naše knjižnice za globoko učenje
se je glede na različico in izbrane optimizacije gibala med 1,2 KB in 4,5 KB. Ta velikost je
sprejemljiva tudi za vgrajene sisteme, ki so praviloma zelo omejeni s pomnilnikom. Podali in
analizirali smo rezultate za celotno demonstracijsko nevronsko mrežo in za različne tipe slojev
posebej. Ugotovili smo, da je dodana enota za računanje skalarnega produkta bolj uspešna
pri pospeševanju konvolucijskih kot polno-povezanih slojev. Glavni razlog za to je dejstvo, da
so konvolucijski sloji manj pomnilniško požrešni — enoto za računanje skalarnega produkta
smo lahko bolj izrabili. Konvolucijske sloje smo v najboljšem primeru izracunali z 78 % manj
urinih ciklov, medtem ko smo polno-povezane sloje izracunali z 72 % manj urinih ciklov. Tako
smo v povprečju zmanjšali število urinih ciklov za 73 %. Končni rezultat tega je bil, da se je
energija, potrebna za izračun ene iteracije nevronske mreže, zmanjšala za 73 % v primerjavi z
neoptimiziranimi različicami.</TujJezik_Opis>
  <KljucneBesede>
    <Beseda>deep learning</Beseda>
    <Beseda>embedded system</Beseda>
    <Beseda>instruction set</Beseda>
    <Beseda>RISC-V</Beseda>
  </KljucneBesede>
  <TujJezik_KljucneBesede>
    <Beseda>globoko učenje</Beseda>
    <Beseda>vgrajeni sistemi</Beseda>
    <Beseda>nabor ukazov</Beseda>
    <Beseda>RISC-V</Beseda>
  </TujJezik_KljucneBesede>
  <Potrjeno>true</Potrjeno>
  <JeZaklenjeno>true</JeZaklenjeno>
  <JeRecenzirano>false</JeRecenzirano>
  <Zaloznik>[J. Vreča]</Zaloznik>
  <Izvor></Izvor>
  <Jezik ID="1033" ISO639-3="eng">Angleški jezik</Jezik>
  <TujJezik ID="1060" ISO639-3="slv">Slovenski jezik</TujJezik>
  <Povezave></Povezave>
  <Pokrivanje></Pokrivanje>
  <CasovnoPokritje></CasovnoPokritje>
  <AvtorskePravice></AvtorskePravice>
  <VrstaGradiva ID="mb22" DRIVER="info:eu-repo/semantics/masterThesis">Magistrsko delo/naloga</VrstaGradiva>
  <DatumVstavljanja>2020-08-27 18:59:10</DatumVstavljanja>
  <DatumObjave>2020-11-03 14:22:54</DatumObjave>
  <DatumSpremembe>2022-08-09 14:42:11</DatumSpremembe>
  <DatumTrajnegaHranjenja>2020-11-19 03:24:14</DatumTrajnegaHranjenja>
  <LetoIzida>2020</LetoIzida>
  <LetoIzidaDo>0</LetoIzidaDo>
  <KrajIzida>Maribor</KrajIzida>
  <LetoIzvedbe>0</LetoIzvedbe>
  <KrajIzvedbe>Maribor</KrajIzvedbe>
  <Opomba></Opomba>
  <StStrani>85 f.</StStrani>
  <StevilcenjeNivo1></StevilcenjeNivo1>
  <StevilcenjeNivo2></StevilcenjeNivo2>
  <Kronologija></Kronologija>
  <Patent_Stevilka></Patent_Stevilka>
  <Patent_DatumVeljavnosti>0000-00-00</Patent_DatumVeljavnosti>
  <VerzijaDokumenta>NiDoloceno</VerzijaDokumenta>
  <StatusObjaveDrugje>NiDoloceno</StatusObjaveDrugje>
  <VrstaStroskaObjave>NiDoloceno</VrstaStroskaObjave>
  <DatumPoslanoVRecenzijo>0000-00-00</DatumPoslanoVRecenzijo>
  <DatumSprejetjaClanka>0000-00-00</DatumSprejetjaClanka>
  <DatumObjaveClanka>0000-00-00</DatumObjaveClanka>
  <Licence>
    <Licenca ID="1" Kratica="CC BY-NC-ND 4.0" Naziv="Creative Commons Priznanje avtorstva-Nekomercialno-Brez predelav 4.0 Mednarodna" URL="http://creativecommons.org/licenses/by-nc-nd/4.0/deed.sl" Logo="by-nc-nd.eu.png" LogoPolniUrl="https://dk.um.si/teme/dkumDev2/img/licence/by-nc-nd.eu.png" DatumZacetkaLicenciranja="2020-08-27" VezanoNa="" VezanoNaAng="" Besedilo="" BesediloAng=""></Licenca>
  </Licence>
  <EmbargoDo></EmbargoDo>
  <VrstaEmbarga ID="1" Naziv="Takojšnja javna objava" OpenAIREDostop="openAccess"></VrstaEmbarga>
  <Osebe>
    <Oseba ID="78761" Ime="Jure" Priimek="Vreča" AltIme="" VlogaID="70" VlogaNaziv="Avtor" ConorID="307853923" Afiliacija="" ArrsID="" ORCID=""></Oseba>
    <Oseba ID="296" Ime="Zmago" Priimek="Brezočnik" AltIme="Z. Brezočnik; Z. Brezocnik; Zmago Brezocnik" VlogaID="991" VlogaNaziv="Mentor" ConorID="1860963" Afiliacija="" ArrsID="02071" ORCID=""></Oseba>
    <Oseba ID="78762" Ime="Farhad" Priimek="Merchant" AltIme="" VlogaID="994" VlogaNaziv="Komentor" ConorID="389685251" Afiliacija="" ArrsID="" ORCID=""></Oseba>
  </Osebe>
  <Identifikatorji>
    <Identifikator ID="4" Sifra="UDK" Naziv="UDK" URL="">004.8.021(043.2)</Identifikator>
    <Identifikator ID="3" Sifra="CobissID" Naziv="COBISS_ID" URL="https://plus.cobiss.net/cobiss/si/sl/bib/36194051">36194051</Identifikator>
    <Identifikator ID="18" Sifra="URN-NUK" Naziv="NUK URN" URL="">URN:SI:UM:DK:4LVMOO45</Identifikator>
  </Identifikatorji>
  <Relacije>
  </Relacije>
  <VerzijeGradiva>
  </VerzijeGradiva>
  <Datoteke>
    <Datoteka ID="145014" DatotekaNRID="11268411" NamenDatotekeID="2" NamenDatoteke="Predstavitvena datoteka" FormatDatotekeID="2" FormatDatoteke=".pdf" MIME="application/pdf" IkonaFormata="pdf.gif" IkonaFormataPolniUrl="https://dk.um.si/teme/dkumDev2/img/fileTypes/pdf.gif" VelikostDatoteke="2823890" VelikostDatotekeKratko="2,69 MB" DatumVstavljanja="2020-08-31 17:15:26" JeZbrisana="false" JeJavnoVidna="true" JeIndeksirana="true" JeVidno="true" VidnoOd="01.01.1970" Zaporedje="0">
      <Naziv>MAG_Vreca_Jure_2020.pdf</Naziv>
      <OrgNaziv>MAG_Vreca_Jure_2020.pdf</OrgNaziv>
      <URL></URL>
      <Opis></Opis>
      <OpisTujJezik></OpisTujJezik>
      <UrlObdelave></UrlObdelave>
      <FrekvencaAzuriranjaID>1</FrekvencaAzuriranjaID>
      <Verzija></Verzija>
      <MD5>2E508CBD50BF4D1789FF869DE433BFF4</MD5>
      <SHA256>0547101d52ecf9f616fe6bfb954916842c3bfc2859e3db390e338db3366400d8</SHA256>
      <UUID>c4872613-7c11-11eb-bb7a-00155d0001ca</UUID>
      <PID>20.500.12556/dkum/7fb1b28e-0667-4b2a-bea8-0d0dd9cc8811</PID>
      <PrenosPolniUrl>https://dk.um.si/Dokument.php?lang=slv&amp;id=145014</PrenosPolniUrl>
      <Vsebine>
        <Vsebina TipVsebine="GoloBesedilo" JezikID="1033" Oznaka="" Dolzina="160950"></Vsebina>
      </Vsebine>
    </Datoteka>
  </Datoteke>
  <Organizacije>
    <Organizacija OrganizacijaID="3" Kratica="FERI" ZavodEvsID="0000080" Logo="FERI_logo.gif" LogoPolniUrl="https://dk.um.si/teme/dkumDev2/img/logo/FERI_logo.gif">Fakulteta za elektrotehniko, računalništvo in informatiko</Organizacija>
  </Organizacije>
  <OrganizacijeVira>
  </OrganizacijeVira>
  <MetodeZbiranjaPodatkov>
  </MetodeZbiranjaPodatkov>
  <TipologijaDela ID="2.09" Koda="2.09" Naziv="Magistrsko delo" SchemaOrg="Thesis"></TipologijaDela>
  <Ostalo>
    <StIrodsDatotek>0</StIrodsDatotek>
    <StDatotekPodTrajnimEmbargom>0</StDatotekPodTrajnimEmbargom>
    <StDatotekZOmejenimDostopom>0</StDatotekZOmejenimDostopom>
  </Ostalo>
</Gradivo>
