Memory optimization techniques in xStorage Compact
Vainio, Ville (2021)
Vainio, Ville
2021
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2021091917871
https://urn.fi/URN:NBN:fi:amk-2021091917871
Tiivistelmä
Reaaliaikaiset sulautetut järjestelmät jaotellaan koviin ja pehmeisiin järjestelmiin riippuen siitä, käyttävätkö ne ennaltaehkäisevää vaiko ei-ennaltaehkäisevää prioriteettiaikataulua ja tarvitseeko niiden suorituskyvyn olla aina tiettyjen rajojen sisällä. xStorage Compact -energiavarasto kategorisoidaan kovaksi reaaliaikaiseksi järjestelmäksi, koska sen pitää ylläpitää kriittisiä reagointiaikoja ympäristöissä, joissa voiman syöttö ei voi katketa kuten sairaaloissa. Koska laite on kova reaaliaikainen systeemi, suorituskyvyn ja ohjelmiston kokojen pitää olla määritelmien mukaiset. Tämä insinöörityö keskittyy xStorage Compact -energiavaraston PCS puolen laiteohjelmistoon, missä jatkuva tarve muistin optimoinnille on tarpeellinen, sillä mikrokontrollerissa on vähän muistia. Painotus työssä on ECM-puolelle, sillä siellä on korkein tarve muistin optimoinnille. Koska laitteella on niin kriittiset vaatimukset, koodia mieluummin lisätään lähdekoodiin kuin kirjoitetaan uudelleen, sillä silloin on helpompi ylläpitää toimivuutta. Tästä syystä vuosien varrella muisti alkaa käydä vähiin ja lopputyön aihe tulee tarpeelliseksi.
Aloituskohta tälle työlle on C++-luokkien analysointi muistin kulutuksen perspektiivistä. Esimerkiksi tasasuuntaajaan käytetty luokka kuluttaa eniten muistia muistikartan mukaan, joten se on analysoinnin lähtökohta. Ideana on tutkia implementaatiota ja katsoa koodista kohtia, joita voi kirjoittaa uudelleen muistin kannalta paremmin, rakenteita ja tietojäseniä, joita ei ole käsitelty ja lajiteltu tyypin koon mukaan, minimoida datarakenteiden määrää, katsoa mahdollisia kohtia implementoida dynaamista muistinhallintaa sekä minimoida muistikuluja. Tässä työssä käytetyt tekniikat saavat aikaan 1,5 % parannuksen RAM-muistissa ja 0,5 % parannuksen Flash-muistissa. RAM-muisti on kalliimpaa käyttää, joten tulokset näyttävät, että siihen on keskitytty enemmän.
Aloituskohta tälle työlle on C++-luokkien analysointi muistin kulutuksen perspektiivistä. Esimerkiksi tasasuuntaajaan käytetty luokka kuluttaa eniten muistia muistikartan mukaan, joten se on analysoinnin lähtökohta. Ideana on tutkia implementaatiota ja katsoa koodista kohtia, joita voi kirjoittaa uudelleen muistin kannalta paremmin, rakenteita ja tietojäseniä, joita ei ole käsitelty ja lajiteltu tyypin koon mukaan, minimoida datarakenteiden määrää, katsoa mahdollisia kohtia implementoida dynaamista muistinhallintaa sekä minimoida muistikuluja. Tässä työssä käytetyt tekniikat saavat aikaan 1,5 % parannuksen RAM-muistissa ja 0,5 % parannuksen Flash-muistissa. RAM-muisti on kalliimpaa käyttää, joten tulokset näyttävät, että siihen on keskitytty enemmän.