Ýmislegt

Hagræðing kóða í örstýringum

Höfundur: Laura McKinney
Sköpunardag: 4 April. 2021
Uppfærsludagsetning: 16 Maint. 2024
Anonim
Hagræðing kóða í örstýringum - Ýmislegt
Hagræðing kóða í örstýringum - Ýmislegt

Efni.

Höfundur lauk verkfræðiverkefni sínu á síðasta ári með dsPic örstýringunum og fékk víðtæka innsýn í þessi tæki.

C-tungumál kóði örstýringar gæti krafist hagræðingar í ákveðnum þróuðum forritum. Þessi hagræðing kóða er stunduð til að draga úr tvennu mikilvægu:

  1. Kóði Stærð: Örstýringar geta geymt takmörkuð gögn og leiðbeiningar vegna takmarkaðrar vinnsluminni. Þess vegna þarf að hagræða kóðanum svo hægt sé að nýta fyrirliggjandi kennslu og gagnaminni á sem skilvirkastan hátt.
  2. Framkvæmdartímar kóða: Örstýringar eru röð tæki sem framkvæma eina kennslu í einu. Hver samsetningarleiðbeining eyðir ákveðnum fjölda klukkuhringa til að framkvæma sjálfa sig. Þess vegna verður að hagræða kóðanum til að tryggja að hann sinni nauðsynlegu verkefni í að minnsta kosti fjölda klukkuhringa eða samsetningarleiðbeininga. Því færri klukkuhringrás sem kóði notar, því hraðar keyrir hann. Þetta þýðir að forrit geta keyrt hraðar vegna þess að vinnslutími er lágmarkaður.

Þessi grein kynnir ráð og brellur sem hægt er að nota til að draga úr stærð og framkvæmdartíma örstýringarkóða.


MplabX þróun IDE frá Microchip verður notað til að sýna fram á dæmi þar sem það á við.

Hvernig á að mæla framkvæmdartíma kóða tilraunalega

Til að fá hugmynd um hversu mikinn tíma kóðinn þinn tekur í raun að framkvæma í rauntíma þarftu að mæla hann tilrauna. Rökfræðilegur greiningartæki er auðveldlega hægt að nota til að mæla framkvæmdartíma kóða og áhugasamir geta spurt mig um ferlið fyrir þetta í tölvupósti. Við hliðina á þessu:

  • Sumir þýðendur hafa getu til að telja klukkuhringrás sem kóði mun neyta.
  • Sumir villuleiðtogar til dæmis ICD 3 frá örflögu geta beint mælt framkvæmdartíma í gegnum skeiðklukku.

1. Veistu um vinnslukraft og minni stærð örstýringar þíns

Það er ekki alltaf klukkutíðni (Mhz) sem gefur sanna mynd af vinnsluhraða örstýringar, raunhæfari mælikvarði er MIPS (mega leiðbeiningar á sekúndu) eða fjöldi leiðbeininga sem MCU getur framkvæmt á sekúndu.

MCU eru venjulega á bilinu 60–70 MIPS í hágæða flokknum til 20 MIPS 8-bita AVR. Hár MIPS örstýring er líklegri til að vera dýrari en lágmark búnaður svo hér hefurðu upp á milli kostnaðar og vinnsluhraða.


Örstýringar hafa sérstakt minni til að geyma gögn og forritakóða. Stærð beggja má finna í gagnablaðinu. Þú gætir þurft MCU með stærri minnisstærð ef kóðinn þinn er verulega stór.

2. Val á breytum til hagræðingar í stærð kóða

Örstýringar hafa takmarkað gagnaminni, venjulega á bilinu 1 til 4 kbyte. Í þessu tilfelli er skynsamlegt að velja viðeigandi breytu gerð í samræmi við áætlað svið dagsetningarinnar sem er geymd. Í töflunni hér að neðan eru þessar breytur dregnar saman:

Yfirlit yfir breytur sem notaðar eru á C-tungumáli.

Breytileg gerðStærð í BýtumSvið

bool

1

Aðeins 0 eða 1

bleikja

1


-128 til 127

þm

2

-32,768 til 32,767

óundirritað alþj

2

0 til 65.535

Langt

4

-2,147,483,648 til 2,147,483,647

fljóta

4

Nákvæmar allt að 6 aukastafir

tvöfalt

8

Nákvæmar allt að 15 aukastafir

langur tvöfaldur

10

Nákvæmar allt að 19 aukastafir

Dæmi:

  • Ef bæta á við tveimur breytum X og Y og geyma niðurstöðuna í Z en búast má við að gildi Z sé hærra en 65.535 eftir viðbót þá er hægt að lýsa Z sem langt og X og Y geta verið lýst sem óundirritað int, gildi X og Y er heldur ekki gert ráð fyrir að þau verði neikvæð. Þetta mun spara 04 bæti í gagnaminninu sem annars hefðu verið notuð ef öllum breytum væri lýst yfir eins lengi.
  • Tvær breytur X og Y, þar sem búist er við að gildi þeirra séu í heilum tölum, skal deila, en niðurstaða deilingar getur gefið aukastaf, þá er hægt að lýsa X og Y int og niðurstaðan má lýsa fljóta eða tvöfalda eftir nákvæmnin sem krafist er.

Val á gagnategund getur skipt sköpum þegar lýst er yfir fylki sem innihalda mikinn fjölda þátta.

3. Val á breytum til hagræðingar á framkvæmdartíma kóða

  • Það er staðfest staðreynd að flotpunktaútreikningar taka lengri tíma en fastir punktaútreikningar. Ekki nota breytipunkt þar sem kommu er ekki krafist. Vinna með óundirritaðar heiltölur þar sem mögulegt er.
  • Staðbundnar breytur eru ákjósanlegar en alþjóðlegar breytur. Ef breyta er aðeins notuð í aðgerð þá verður að lýsa henni yfir í þeirri aðgerð vegna þess að aðgangur að alþjóðlegum breytum er hægari en staðbundnar breytur.
  • 8-bita MCU mun finna eina breytu af byte-stærð sem er hraðari fyrir aðgang og 16-bita MCU mun finna 2-bita breytu sem er auðveldari aðgengi að vegna lengdar heimilisfangs sem myndast.

4. Hagræðing af reikniaðgerðum

Hægt er að fínstilla reikniaðgerðir á eftirfarandi hátt.

  1. Notaðu flettitöflur með fyrirfram útreiknuðum gildum í stað þess að meta Sine eða einhverja aðra þríhyrndaraðgerð eða aðra aðgerð sem hægt er að þekkja fyrirfram í kóðanum.
  2. Ef sinus-uppflettitafla er þegar geymd í minninu er hægt að meta kósínus með því að færa fylkisbendið sem jafngildir 90 gráðum.
  3. Meðal fjögurra reikniaðgerða tekur skipting og margföldun mestan vinnslutíma, í reynd getur hún verið á bilinu hundruð míkrósekúndna eða svo ef um er að ræða flotpunkt.
  4. Notaðu leiðbeiningar um bitaskipti í stað skiptingar og margföldunar. Hægri vakt kennsla 3 þjónar til að deila með 23 þar sem kennsla á vinstri vakt mun þjóna því að margfalda með 21.

5. Notaðu DSP hæfan örstýringu fyrir ákafa útreikninga

Sumir örstýringar hafa DSP vinnslueiningu en þá hefðbundnu ALU innbyggða í arkitektúr þeirra. Þessi DSP vél er miðuð til að framkvæma reikniaðgerðir mjög fljótt í sem minnstum fjölda hringrásar (einn í flestum tilfellum) margfalt hraðar en ALU.

Leiðbeiningar sem DSP örgjörvi getur framkvæmt hraðar en ALU eru:

  • Bit breyting og snúa leiðbeiningar.
  • Margföldun, skipting og aðrar reikniaðgerðir.
  • Mat á Sines og öðrum þríhyrndum aðgerðum.
  • Allar DSP aðgerðir eins og FFT, DFT, krampa og FIR síun.

Notkun DSP vélar örstýringar krefst þess að:

  • Sérstök DSP bókasöfn eru felld inn í verkefnið.
  • Nöfn aðgerða eru frábrugðin venjulegu stærðfræðibókasafni C-tungumáls. Hægt er að nálgast skjöl um þessi bókasöfn og aðgerðir á viðkomandi framleiðandavef.
  • DSP vél notar aðra breytu gerð 'brot'. Lærðu hvernig á að nota brotabreytubreytur áður en haldið er áfram með dsp bókasafnsaðgerðir.

Athugið að venjulegar stærðfræðibókasafnsaðgerðir kalla ekki á DSP vélina vegna þess að þær eru þýddar í ALU samsetningarleiðbeiningar.

6. Vinna með truflanir

Notaðu truflanir til að framkvæma sérstakar aðgerðir eins og:

  • Lestur ADC gildi.
  • Sending og móttaka frá UART.
  • Uppfærsla PWM skylduferilsskrár.
  • CAN eða I2C samskipti.

Truflanir munu þjóna þessum aðgerðum fljótt samanborið við að framkvæma þær í meginmálinu með símtali eða innbyggðum kóða.

Truflanir munu einnig kveikja aðeins þegar þess er krafist, en ef kóðað er í meginmálinu mun kóðinn framkvæma í hverri endurtekningu á meðan (1) lykkja.

7. Notaðu bestu fáanlegu þýðendur

Þátttakendur geta sjálfkrafa hrint í framkvæmd nokkrum af hagræðingunum sem fjallað er um hér að ofan meðan þeir þýða kóðann úr C-tungumáli í samsetningarmál ef hann er rétt stilltur. Leitaðu að hagræðingarvalkostum í þýðandanum þínum og ef mögulegt er að uppfæra í atvinnuútgáfur af þýðendum því þeir eru öflugri kóðabætandi.

8. Notaðu skilyrtar yfirlýsingar á greindar hátt

  • Þegar þú notar röð ef-annars staðhæfinga skaltu halda líklegasta ástandinu fyrst. Þannig mun MCU ekki þurfa að skanna í gegnum öll skilyrðin eftir að það hefur fundið hið sanna ástand.
  • Yfirlýsing um skiptimál er venjulega hraðvirkari ef annað.
  • Notaðu hreiður ef-annað staðhæfingar í stað fullyrðinga. Ef-annað blokk með margar fullyrðingar má skipta í smærri undirgreinar til að hagræða í versta falli (síðasta) ástandi.

9. Notaðu Inline Aðgerðir

Aðgerðir sem aðeins á að nota einu sinni í kóðanum má lýsa sem kyrrstöðu. Þetta mun gera þýðandann til að fínstilla þá aðgerð í innbyggða aðgerð og þess vegna verður enginn samsetningarkóði þýddur fyrir aðgerðarsímtalið.

  • Aðgerð er hægt að lýsa með línu með því að nota leitarorðið „truflanir“ með því.

10. Notaðu minnkaðar lykkjur

Lækkuð lykkja mun búa til minni samsetningarkóða samanborið við aukna lykkju.

Það er vegna þess að í hækkunarlykkju er þörf á samanburðarleiðbeiningum til að bera saman lykkjuvísitöluna og hámarksgildið í hverri lykkju til að athuga hvort lykkjavísitalan nái hámarksgildinu. Þvert á móti í lækkunarlykkju, þá er ekki þörf á þessum samanburði lengur vegna þess að niðurbrot lykkjunnar vísitölu mun setja núllfánann í SREG ef hann nær núlli.

Í ljósi þess að lykkjan þarf að endurtekna hundrað sinnum, með því að draga úr einni leiðbeiningu frá lykkjunni, kemur í veg fyrir að hún sé framkvæmd hundrað sinnum svo að höggið verður líklega marktækara þegar lykkjan þarf að endurtekja margoft.

Klára

Þessi ráð geta verið gagnleg en raunveruleg notkun þeirra og styrkur fer eftir kunnáttu forritarans og skipuninni sem hann hefur á kóða hans. Mundu að stærð forritsins ræður ekki alltaf um framkvæmdartíma, sumar leiðbeiningar geta neytt fleiri klukkuhringa en hitt svo enn og aftur verður færni forritsins að gegna hlutverki sínu.

Þessi grein er nákvæm og sönn eftir bestu vitund höfundar. Innihald er eingöngu til upplýsinga eða skemmtunar og kemur ekki í stað persónulegs ráðgjafar eða faglegrar ráðgjafar í viðskipta-, fjárhags-, lögfræðilegum eða tæknilegum málum.

Nýjar Útgáfur

Við Mælum Með

TP-Link Archer C7 vs Archer C8: Hver er betri?
Tölvur

TP-Link Archer C7 vs Archer C8: Hver er betri?

Ég hef alltaf haft áhuga á að finna be tu þráðlau u leiðina og mótaldin fyrir be tu verðin.Ef þú hefur ákveðið TP-Link Archer...
Excel vandamál: laga dagsetningarsnið
Tölvur

Excel vandamál: laga dagsetningarsnið

Ég el ka að gefa ráð og ráð um notkun ými a tölvuforrita.Eitt me t pirrandi vandamál þegar unnið er í Excel er þegar þú lendi...