విషయము
- కోడ్ ఎగ్జిక్యూషన్ సమయాన్ని ప్రయోగాత్మకంగా ఎలా కొలవాలి
- 1. మీ మైక్రోకంట్రోలర్ యొక్క ప్రాసెసింగ్ శక్తి మరియు మెమరీ పరిమాణాన్ని తెలుసుకోండి
- 2. కోడ్ పరిమాణంలో ఆప్టిమైజేషన్ కోసం వేరియబుల్స్ ఎంపిక
- 3. కోడ్ ఎగ్జిక్యూషన్ టైమ్లో ఆప్టిమైజేషన్ కోసం వేరియబుల్స్ ఎంపిక
- 4. అంకగణిత ఆపరేషన్లను ఆప్టిమైజ్ చేయడం
- 5. ఇంటెన్సివ్ లెక్కల కోసం DSP సామర్థ్యం గల మైక్రోకంట్రోలర్ను ఉపయోగించండి
- DSP ప్రాసెసర్ వేగంగా చేయగల సూచనలు అప్పుడు ALU:
- మైక్రోకంట్రోలర్ యొక్క DSP ఇంజిన్ను ఉపయోగించడం అవసరం:
- 6. అంతరాయాలతో పనిచేయండి
- 7. అందుబాటులో ఉన్న ఉత్తమ కంపైలర్లను ఉపయోగించండి
- 8. షరతులతో కూడిన ప్రకటనలను తెలివిగా వాడండి
- 9. ఇన్లైన్ విధులను ఉపయోగించండి
- 10. తగ్గిన ఉచ్చులు వాడండి
- చుట్టి వేయు
రచయిత తన చివరి సంవత్సరం ఇంజనీరింగ్ ప్రాజెక్టును dsPic మైక్రో కంట్రోలర్లతో పూర్తి చేశాడు, ఈ పరికరాల్లో విస్తృతమైన అవగాహన పొందాడు.
మైక్రోకంట్రోలర్ యొక్క సి-లాంగ్వేజ్ కోడ్కు కొన్ని అధునాతన అనువర్తనాల్లో ఆప్టిమైజేషన్ అవసరం కావచ్చు. రెండు కీలకమైన విషయాలను తగ్గించడానికి ఈ కోడ్ ఆప్టిమైజేషన్ సాధన చేయబడింది:
- కోడ్ పరిమాణం: మైక్రోకంట్రోలర్లు వారి ర్యామ్ యొక్క పరిమిత పరిమాణం కారణంగా పరిమిత డేటా మరియు సూచనలను నిల్వ చేయవచ్చు. అందువల్ల కోడ్ ఆప్టిమైజ్ చేయాల్సిన అవసరం ఉంది, తద్వారా అందుబాటులో ఉన్న ఇన్స్ట్రక్షన్ మరియు డేటా మెమరీని అత్యంత సమర్థవంతంగా ఉపయోగించుకోవచ్చు.
- కోడ్ ఎగ్జిక్యూషన్ టైమ్స్: మైక్రోకంట్రోలర్లు ఒక సమయంలో ఒక సూచనను అమలు చేసే వరుస పరికరాలు. ప్రతి అసెంబ్లీ సూచనలు అమలు చేయడానికి నిర్దిష్ట సంఖ్యలో గడియార చక్రాలను ఉపయోగిస్తాయి. అందువల్ల అవసరమైన పనిని కనీసం గడియార చక్రాలు లేదా అసెంబ్లీ సూచనలలో నిర్వర్తిస్తుందని నిర్ధారించడానికి కోడ్ ఆప్టిమైజ్ చేయాలి. కోడ్ ఉపయోగించే తక్కువ గడియార చక్రాలు, వేగంగా నడుస్తాయి. ప్రాసెసింగ్ సమయం కనిష్టీకరించబడినందున అనువర్తనాలు వేగంగా నడుస్తాయి.
ఈ వ్యాసం మైక్రో-కంట్రోలర్ కోడ్ యొక్క పరిమాణం మరియు అమలు సమయాన్ని తగ్గించడానికి ఉపయోగపడే చిట్కాలు మరియు ఉపాయాలను అందిస్తుంది.
మైక్రోచిప్ యొక్క MplabX అభివృద్ధి IDE తగిన చోట ఉదాహరణలను ప్రదర్శించడానికి ఉపయోగించబడుతుంది.
కోడ్ ఎగ్జిక్యూషన్ సమయాన్ని ప్రయోగాత్మకంగా ఎలా కొలవాలి
నిజ సమయంలో అమలు చేయడానికి మీ కోడ్ వాస్తవానికి ఎంత సమయం పడుతుందో తెలుసుకోవటానికి, మీరు దానిని ప్రయోగాత్మకంగా కొలవాలి. కోడ్ అమలు సమయాన్ని కొలవడానికి లాజిక్ ఎనలైజర్ను సౌకర్యవంతంగా ఉపయోగించవచ్చు మరియు ఆసక్తి ఉన్నవారు ఈ ప్రక్రియ గురించి నా నుండి ఇమెయిల్లో ఆరా తీయవచ్చు. దీని పక్కన:
- కొన్ని కంపైలర్లకు కోడ్ తీసుకునే గడియార చక్రాలను లెక్కించే సామర్థ్యం ఉంటుంది.
- కొంతమంది డీబగ్గర్లు ఉదాహరణకు మైక్రోచిప్ నుండి వచ్చిన ఐసిడి 3 నేరుగా స్టాప్వాచ్ ద్వారా అమలు సమయాన్ని కొలవగలదు.
1. మీ మైక్రోకంట్రోలర్ యొక్క ప్రాసెసింగ్ శక్తి మరియు మెమరీ పరిమాణాన్ని తెలుసుకోండి
ఇది ఎల్లప్పుడూ క్లాక్ ఫ్రీక్వెన్సీ (Mhz) కాదు, ఇది మైక్రో కంట్రోలర్ యొక్క ప్రాసెసింగ్ వేగం యొక్క నిజమైన చిత్రాన్ని ఇస్తుంది, మరింత వాస్తవిక కొలత MIPS (సెకనుకు మెగా సూచనలు) లేదా MCU సెకనులో అమలు చేయగల సూచనల సంఖ్య.
MCU లు సాధారణంగా హై-ఎండ్ కేటగిరీలో 60–70 MIPS నుండి 20 MIPS 8-bit AVR ల వరకు ఉంటాయి. అధిక MIPS మైక్రో కంట్రోలర్ తక్కువ ఖర్చుతో కూడుకున్న పరికరం కాబట్టి ఇక్కడ మీకు ఖర్చు మరియు ప్రాసెసింగ్ వేగం మధ్య ట్రేడ్-ఆఫ్ ఉంటుంది.
డేటా మరియు ప్రోగ్రామ్ కోడ్ను నిల్వ చేయడానికి మైక్రో కంట్రోలర్లకు ప్రత్యేక మెమరీ ఉంటుంది. ఈ రెండింటి పరిమాణాన్ని డేటాషీట్ నుండి చూడవచ్చు. మీ కోడ్ గణనీయంగా పెద్దదిగా ఉంటే మీకు పెద్ద మెమరీ పరిమాణంతో MCU అవసరం కావచ్చు.
2. కోడ్ పరిమాణంలో ఆప్టిమైజేషన్ కోసం వేరియబుల్స్ ఎంపిక
మైక్రో కంట్రోలర్లు పరిమిత డేటా మెమరీని కలిగి ఉంటాయి, సాధారణంగా ఇవి 1 నుండి 4 కిబైట్ల వరకు ఉంటాయి. ఈ సందర్భంలో నిల్వ చేయబడిన తేదీ యొక్క range హించిన పరిధికి అనుగుణంగా చాలా సరిఅయిన వేరియబుల్ రకాన్ని ఎన్నుకోవడం మంచిది. దిగువ పట్టిక ఈ వేరియబుల్స్ను సంగ్రహిస్తుంది:
వేరియబుల్ రకం | బైట్లలో పరిమాణం | పరిధి |
---|---|---|
bool | 1 | 0 లేదా 1 మాత్రమే |
చార్ | 1 | -128 నుండి 127 వరకు |
పూర్ణాంకానికి | 2 | -32,768 నుండి 32,767 వరకు |
సంతకం చేయని పూర్ణాంకానికి | 2 | 0 నుండి 65,535 వరకు |
పొడవు | 4 | -2,147,483,648 నుండి 2,147,483,647 వరకు |
ఫ్లోట్ | 4 | 6 దశాంశ స్థానాల వరకు ఖచ్చితమైనది |
రెట్టింపు | 8 | 15 దశాంశ స్థానాల వరకు ఖచ్చితమైనది |
లాంగ్ డబుల్ | 10 | 19 దశాంశ స్థానాల వరకు ఖచ్చితమైనది |
ఉదాహరణ:
- X మరియు Y అనే రెండు వేరియబుల్స్ జతచేయబడి, ఫలితం Z లో నిల్వ చేయవలసి ఉంటుంది, అయితే Z యొక్క విలువ ఎక్కువగా ఉంటుందని భావిస్తే, అదనంగా 65,535 తరువాత అదనంగా Z ని పొడవైనదిగా మరియు X మరియు Y ను సంతకం చేయనిదిగా ప్రకటించవచ్చు పూర్ణాంకానికి, X మరియు Y విలువలు కూడా ప్రతికూలంగా ఉండవని are హించలేదు. ఇది డేటా మెమరీలో 04 బైట్లను ఆదా చేస్తుంది, అన్ని వేరియబుల్స్ ఎక్కువ కాలం ప్రకటించబడితే అది ఉపయోగించబడుతుంది.
- X మరియు Y అనే రెండు వేరియబుల్స్ విభజించబడతాయి, దీని విలువలు మొత్తం సంఖ్యలో ఉంటాయని భావిస్తున్నారు, కాని విభజన ఫలితం దశాంశాన్ని ఇస్తుంది, అప్పుడు X మరియు Y ను పూర్ణాంకంగా ప్రకటించవచ్చు మరియు ఫలితాన్ని బట్టి ఫ్లోట్ లేదా డబుల్ అని ప్రకటించవచ్చు అవసరమైన ఖచ్చితత్వం.
పెద్ద సంఖ్యలో మూలకాలను కలిగి ఉన్న శ్రేణులను ప్రకటించేటప్పుడు డేటా రకం ఎంపిక కీలకం.
3. కోడ్ ఎగ్జిక్యూషన్ టైమ్లో ఆప్టిమైజేషన్ కోసం వేరియబుల్స్ ఎంపిక
- ఫ్లోటింగ్-పాయింట్ లెక్కలు స్థిర-పాయింట్ లెక్కల కంటే ఎక్కువ సమయం తీసుకుంటాయనేది వాస్తవం. దశాంశ విలువ అవసరం లేని ఫ్లోటింగ్ పాయింట్ వేరియబుల్ ఉపయోగించవద్దు. సంతకం చేయని పూర్ణాంకాలతో సాధ్యమైన చోట పని చేయండి.
- గ్లోబల్ వేరియబుల్స్కు స్థానిక వేరియబుల్స్ ప్రాధాన్యత ఇవ్వబడతాయి. ఒక ఫంక్షన్లో వేరియబుల్ ఉపయోగించబడితే అది ఆ ఫంక్షన్లో డిక్లేర్ చేయబడాలి ఎందుకంటే గ్లోబల్ వేరియబుల్స్ యాక్సెస్ స్థానిక వేరియబుల్స్ కంటే నెమ్మదిగా ఉంటుంది.
- 8-బిట్ MCU ఒకే బైట్-పరిమాణ వేరియబుల్ను యాక్సెస్ చేయడానికి వేగంగా కనుగొంటుంది మరియు 16-బిట్ MCU ఉత్పత్తి చేసిన చిరునామా పొడవు కారణంగా 2-బైట్ వేరియబుల్ను సులభంగా యాక్సెస్ చేస్తుంది.
4. అంకగణిత ఆపరేషన్లను ఆప్టిమైజ్ చేయడం
అంకగణిత కార్యకలాపాలను ఈ క్రింది మార్గాల్లో ఆప్టిమైజ్ చేయవచ్చు.
- ఒక సైన్ లేదా ఇతర త్రికోణమితి ఫంక్షన్ లేదా కోడ్లో ముందే తెలుసుకోగలిగే ఇతర ఆపరేషన్లను అంచనా వేయడానికి బదులుగా ముందుగా లెక్కించిన విలువల యొక్క శోధన పట్టికలను ఉపయోగించండి.
- ఒకవేళ సైన్ లుక్-అప్ టేబుల్ ఇప్పటికే మెమరీలో నిల్వ చేయబడి ఉంటే, 90 డిగ్రీలకు సమానమైన అర్రే పాయింటర్ను ముందుకు తీసుకెళ్లడం ద్వారా కొసైన్ను అంచనా వేయవచ్చు.
- నాలుగు అంకగణిత కార్యకలాపాలలో, విభజన మరియు గుణకారం ఎక్కువ ప్రాసెసింగ్ సమయాన్ని తీసుకుంటాయి, ఆచరణలో ఇది ఫ్లోటింగ్-పాయింట్ విలువల విషయంలో వందల మైక్రో సెకన్ల పరిధిలో ఉంటుంది.
- విభజన మరియు గుణకారం బదులుగా బిట్ షిఫ్ట్ సూచనలను ఉపయోగించండి. కుడి షిఫ్ట్ ఇన్స్ట్రక్షన్ 3 2 ద్వారా విభజించడానికి ఉపయోగపడుతుంది3 ఎడమ షిఫ్ట్ ఇన్స్ట్రక్షన్ 1 గా 2 గుణించటానికి ఉపయోగపడుతుంది1.
5. ఇంటెన్సివ్ లెక్కల కోసం DSP సామర్థ్యం గల మైక్రోకంట్రోలర్ను ఉపయోగించండి
కొంతమంది మైక్రో కంట్రోలర్లు ఒక DSP ప్రాసెసింగ్ యూనిట్ను కలిగి ఉంటాయి, తరువాత సాంప్రదాయిక ALU వారి నిర్మాణంలో నిర్మించబడతాయి. ఈ DSP ఇంజిన్ తక్కువ సంఖ్యలో గడియార చక్రాలలో (చాలా సందర్భాలలో ఒకటి) చాలా త్వరగా అంకగణిత గణనలను చేయడానికి సన్నద్ధమవుతుంది.
DSP ప్రాసెసర్ వేగంగా చేయగల సూచనలు అప్పుడు ALU:
- బిట్ షిఫ్ట్ మరియు సూచనలను తిప్పండి.
- గుణకాలు, విభాగాలు మరియు ఇతర అంకగణిత కార్యకలాపాలు.
- సైన్స్ మరియు ఇతర త్రికోణమితి విధులను అంచనా వేయడం.
- FFT, DFT, కన్వల్యూషన్ మరియు FIR ఫిల్టరింగ్ వంటి అన్ని DSP కార్యకలాపాలు.
మైక్రోకంట్రోలర్ యొక్క DSP ఇంజిన్ను ఉపయోగించడం అవసరం:
- ప్రత్యేక డిఎస్పి లైబ్రరీలను ఈ ప్రాజెక్టులో చేర్చారు.
- ఫంక్షన్ల పేర్లు సి-భాష యొక్క ప్రామాణిక గణిత లైబ్రరీ నుండి భిన్నంగా ఉంటాయి. ఈ లైబ్రరీలు మరియు ఫంక్షన్ల యొక్క డాక్యుమెంటేషన్ సంబంధిత తయారీదారుల వెబ్సైట్ నుండి పొందవచ్చు.
- DSP ఇంజిన్ వేరే వేరియబుల్ రకాన్ని 'ఫ్రాక్షనల్' ఉపయోగించుకుంటుంది. Dsp లైబ్రరీ ఫంక్షన్లతో కొనసాగడానికి ముందు పాక్షిక రకం వేరియబుల్స్ ఎలా ఉపయోగించాలో తెలుసుకోండి.
ప్రామాణిక గణిత లైబ్రరీ ఫంక్షన్లు DSP ఇంజిన్ను ప్రారంభించవు ఎందుకంటే అవి ALU అసెంబ్లీ సూచనలలోకి అనువదించబడతాయి.
6. అంతరాయాలతో పనిచేయండి
నిర్దిష్ట విధులను నిర్వహించడానికి అంతరాయాలను ఉపయోగించండి:
- ADC విలువలను చదవడం.
- UART నుండి పంపడం మరియు స్వీకరించడం.
- PWM డ్యూటీ సైకిల్ రిజిస్టర్లను నవీకరిస్తోంది.
- CAN లేదా I2C కమ్యూనికేషన్.
ఫంక్షన్ కాల్ లేదా ఇన్లైన్ కోడ్ ద్వారా ప్రధాన శరీరంలో వాటిని ప్రదర్శించడంతో పోలిస్తే అంతరాయాలు ఈ ఫంక్షన్లను త్వరగా అందిస్తాయి.
అవసరమైనప్పుడు మాత్రమే అంతరాయాలు ప్రేరేపిస్తాయి, అయితే ప్రధాన శరీరంలో కోడ్ చేయబడితే, కోడ్ (1) లూప్ యొక్క ప్రతి పునరావృతంలోనూ అమలు చేస్తుంది.
7. అందుబాటులో ఉన్న ఉత్తమ కంపైలర్లను ఉపయోగించండి
సరిగ్గా కాన్ఫిగర్ చేయబడితే సి-లాంగ్వేజ్ నుండి అసెంబ్లీ భాషకు కోడ్ను అనువదించేటప్పుడు కంపైలర్లు స్వయంచాలకంగా పైన చర్చించిన కొన్ని ఆప్టిమైజేషన్లను అమలు చేయవచ్చు. మీ కంపైలర్లో ఆప్టిమైజ్ ఎంపికల కోసం చూడండి మరియు వీలైతే కంపైలర్ల యొక్క ప్రొఫెషనల్ వెర్షన్లకు అప్గ్రేడ్ చేయండి ఎందుకంటే అవి మరింత శక్తివంతమైన కోడ్ ఆప్టిమైజర్లు.
8. షరతులతో కూడిన ప్రకటనలను తెలివిగా వాడండి
- If-else స్టేట్మెంట్ల శ్రేణిని ఉపయోగిస్తున్నప్పుడు మొదట చాలా సంభావ్య పరిస్థితిని ఉంచండి. ఈ విధంగా MCU నిజమైన పరిస్థితిని కనుగొన్న తర్వాత అన్ని పరిస్థితులను స్కాన్ చేయవలసిన అవసరం లేదు.
- స్విచ్-కేస్ స్టేట్మెంట్ సాధారణంగా ఉంటే-వేరుగా ఉంటుంది.
- వరుస స్టేట్మెంట్ల స్థానంలో సమూహ ఉంటే-లేకపోతే స్టేట్మెంట్లను ఉపయోగించండి. చెత్త కేసు (చివరి) స్థితి కోసం ఆప్టిమైజ్ చేయడానికి చాలా స్టేట్మెంట్లను కలిగి ఉన్న ఒక చిన్న బ్లాక్ చిన్న ఉప శాఖలుగా విభజించవచ్చు.
9. ఇన్లైన్ విధులను ఉపయోగించండి
కోడ్లో ఒకసారి మాత్రమే ఉపయోగించాల్సిన విధులు స్టాటిక్గా ప్రకటించబడతాయి. ఇది కంపైలర్ ఆ ఫంక్షన్ను ఇన్లైన్ ఫంక్షన్కు ఆప్టిమైజ్ చేస్తుంది మరియు అందువల్ల ఫంక్షన్ కాల్ కోసం అసెంబ్లీ కోడ్ అనువదించబడదు.
- ఒక ఫంక్షన్ను 'స్టాటిక్' అనే కీవర్డ్ని ఉపయోగించి ఇన్లైన్లో ప్రకటించవచ్చు.
10. తగ్గిన ఉచ్చులు వాడండి
పెరిగిన లూప్తో పోలిస్తే తగ్గిన లూప్ తక్కువ అసెంబ్లీ కోడ్ను ఉత్పత్తి చేస్తుంది.
ఎందుకంటే ఇంక్రిమెంట్ లూప్లో, లూప్ ఇండెక్స్ గరిష్ట విలువకు చేరుకుంటుందో లేదో తనిఖీ చేయడానికి లూప్ ఇండెక్స్ను ప్రతి లూప్లోని గరిష్ట విలువతో పోల్చడానికి పోలిక సూచన అవసరం. క్షీణత లూప్లో దీనికి విరుద్ధంగా, ఈ పోలిక ఇక అవసరం లేదు ఎందుకంటే లూప్ ఇండెక్స్ యొక్క తగ్గిన ఫలితం సున్నాకి చేరుకుంటే SREG లో సున్నా జెండాను సెట్ చేస్తుంది.
లూప్ వందసార్లు మళ్ళించవలసి ఉన్నందున, లూప్ నుండి ఒక సూచనను తగ్గించడం వలన అది వందసార్లు అమలు చేయకుండా ఉంటుంది, కాబట్టి లూప్ చాలాసార్లు మళ్ళించవలసి వచ్చినప్పుడు ప్రభావం మరింత ముఖ్యమైనదిగా ఉంటుంది.
చుట్టి వేయు
ఈ చిట్కాలు సహాయపడవచ్చు కాని వాటి నిజమైన అనువర్తనం మరియు శక్తి ప్రోగ్రామర్ యొక్క నైపుణ్యం మరియు అతని కోడ్లో ఉన్న ఆదేశంపై ఆధారపడి ఉంటుంది. గుర్తుంచుకోండి, ప్రోగ్రామ్ యొక్క పరిమాణం ఎల్లప్పుడూ అమలు సమయాన్ని నిర్ణయించదు, కొన్ని సూచనలు ఎక్కువ గడియార చక్రాలను వినియోగించవచ్చు, మరొకటి కాబట్టి ప్రోగ్రామ్ యొక్క నైపుణ్యాలు మరోసారి వారి పాత్రను పోషిస్తాయి.
ఈ వ్యాసం రచయిత యొక్క ఉత్తమమైన జ్ఞానానికి ఖచ్చితమైనది మరియు నిజం. కంటెంట్ సమాచార లేదా వినోద ప్రయోజనాల కోసం మాత్రమే మరియు వ్యాపారం, ఆర్థిక, చట్టపరమైన లేదా సాంకేతిక విషయాలలో వ్యక్తిగత సలహా లేదా వృత్తిపరమైన సలహాలకు ప్రత్యామ్నాయం కాదు.