मेरे arduino में एक घड़ी क्यों है?


9

बेशक मुझे पता है कि यह देरी के समय को नियंत्रित करने के लिए उपयोगी है, लेकिन कोई अन्य उपयोग?

16Mhz घड़ी के साथ, मेरे कार्यक्रम की प्रत्येक पंक्ति में 1/16000000 सेकंड लगेंगे, है ना?

यहां तक ​​कि एक बहुत बड़ी लाइन केवल 1/16000000 सेकंड का समय लेगी?

8 मेगाहर्ट्ज घड़ी के साथ, प्रत्येक पंक्ति सही समय का दोहरा लेगी? तो पूरे "मुख्य लूप" डबल समय भी लेंगे, है ना?


3
आप सी निर्देशों और मशीन (विधानसभा) निर्देशों के बीच भ्रमित कर रहे हैं। लेकिन यहां तक ​​कि अगर आप सीधे विधानसभा में लिखते हैं, तो आप इसका अच्छा उपयोग पा सकते हैं क्योंकि कार्यक्रम रैखिक नहीं है। मेरा मतलब है, व्यवधान, जैसा कि नाम से पता चलता है, एक अन्य निर्देश पर जाकर सामान्य कोड प्रवाह को बाधित करता है और फिर शुरू होता है। शायद एक लाइन और अगले एक के बीच यह ISR निष्पादित करने के लिए मजबूर है, जो बहुत लंबा हो सकता है
frarugi87

2
यदि आप आठ मिलीहर्ट्ज़ पर अपनी चिप को देखते हैं, तो कोड की सबसे सरल रेखा भी हमेशा के लिए ले जाएगी। मेरा सुझाव है कि आप मेगा हर्ट्ज रेंज (मेगाहर्ट्ज) में एक घड़ी का उपयोग करें ।
एडगर बोनट

प्रत्येक मशीन अनुदेश को निष्पादित करने के लिए आवश्यक चक्रों की संख्या निर्देश सेट मैनुअल में बताई गई है ।
एडगर बोनट

लानत है मुझे सो जाना चाहिए;), संपादित धन्यवाद
n0tis

जवाबों:


13

मेरे arduino में एक घड़ी क्यों है?

क्योंकि यह है कि कंप्यूटर और माइक्रोकंट्रोलर, आदि कैसे काम करते हैं।

16mhz घड़ी के साथ, मेरे कार्यक्रम की प्रत्येक पंक्ति में 1/16000000 सेकंड लगेंगे, है ना?

नहीं।

यहां तक ​​कि एक बहुत बड़ी लाइन केवल 1/16000000 सेकंड का समय लेगी?

नहीं।

घड़ी निर्धारित करती है कि मशीन कोड के निर्देशों को किस गति से मेमोरी से निकाला जाता है और निष्पादित किया जाता है। अधिकांश निर्देश 1 घड़ी चक्र लेते हैं, लेकिन कुछ अधिक लेते हैं।

सी कोड की एक पंक्ति को किसी भी विधानसभा निर्देश में संकलित किया जा सकता है, जो तब मशीन कोड (कच्चे नंबर) में परिवर्तित हो जाते हैं। यह 1 विधानसभा निर्देश से लेकर हजारों विधानसभा निर्देशों तक कहीं भी हो सकता है, यह इस बात पर निर्भर करता है कि रेखा क्या करती है।

एक 8mhz घड़ी के साथ, प्रत्येक पंक्ति समय के दोहरे को ले जाएगी, है ना? तो पूरे "मुख्य लूप" डबल समय भी लेंगे, है ना?

चिप में प्रत्येक ऑपरेशन घड़ी द्वारा नियंत्रित होता है। यदि घड़ी आधी गति से है तो चिप आधी गति से चल रही है, इसलिए हर ऑपरेशन में दोगुना समय लगेगा, हां।


भी, बीच में आता है।
njzk2

1
माइनर नाइटपिक: "... 0 कहीं से भी होना चाहिए ... विधानसभा निर्देश ...", यहां तक ​​कि अनुकूलन के बिना भी, लेकिन अनुकूलन के बाद भी अधिक।
पीटर

2
गरीब लड़के को भ्रमित मत करो। वह काफी कठिन समय बिता रहा है।
Majenko

@Majenko: भ्रम एक आवश्यकता है। वह कठिन है।
21

@intelfx "आईटी"? यह प्रोग्रामिंग है, आईटी नहीं ....
BalinKingOfMoria CMs

10

@ मजेंको के पोस्ट में उत्तर नहीं दिया गया: हां, 8 मेगाहर्ट्ज घड़ी के साथ, प्रत्येक पंक्ति समय का दोहरा हिस्सा लेगी। जब तक कि रेखा किसी ऐसी चीज का इंतजार नहीं करती, जो घड़ी से चलने वाली न हो - जैसे बाहरी इनपुट।

@ माजेंको के जवाब के अलावा, एक सीपीयू में अगले चरण शुरू होने से पहले निर्देशों को पूरा करने के लिए एक घड़ी है। एक CPU बहुत सारे ट्रांजिस्टर से बना होता है (मुझे एक संदर्भ मिला जिसने संकेत दिया था कि AtMega कम लाखों की सीमा में था, परिमाण का एक ऑर्डर दे या ले)।

एक चक्र के दौरान, बिजली चिप के माध्यम से बहती है, ट्रांजिस्टर को चालू / बंद कर देती है, जिसके परिणाम / ट्रांजिस्टर को चालू / बंद कर देंगे, और इसके बाद लाइन के नीचे। जबकि यह हो रहा है, चिप के कुछ हिस्सों का "गलत" मान है - आप इसे गणना के माध्यम से आधे रास्ते के रूप में सोच सकते हैं (आपने किसी के कॉलम और 10 के कॉलम को जोड़ दिया है, और शुरू होने वाले हैं 100s कॉलम)। आप यह नहीं चाहते हैं कि यह बाहरी दुनिया को प्रभावित करे, इसलिए (उदाहरण के लिए) आपके आउटपुट पिन लैच किए जाते हैं - जो कुछ भी मूल्य पर आयोजित किया जाता है - जब तक कि निर्देश पूरा नहीं हो जाता। एक निर्देश को पूरा करने में कितना समय लगता है, लेकिन निर्माता सबसे खराब परिस्थितियों में सबसे धीमी निर्देश पर काम करता है।

AtMega (जो Arduino पर चिप है) के लिए, Atmel (जिसने चिप को डिज़ाइन किया है) ने घोषित किया है यह एक सेकंड का 1 / 20,000,000 है - यह 20MHz है।

ध्यान दें कि सभी माइक्रोप्रोसेसर अपने सभी निर्देशों को प्रति चक्र 1 निर्देश पर नहीं चलाते हैं - कुछ निर्देश 1, या 2, या 10 चक्र ले सकते हैं। पाइपलाइनिंग चीजों को और अधिक जटिल बना देता है - एक प्रोसेसर एक चक्र में कुछ काम कर सकता है (उदाहरण के लिए अगला निर्देश), इसे अगले में निष्पादित करें - लेकिन जब यह निर्देश 1 निष्पादित कर रहा है, तो यह अगले अनुदेश को भी ला सकता है। ऐसा करने के लिए, यह अनुमान लगाने की आवश्यकता हो सकती है कि आगे क्या निर्देश आता है ("गोटो" के समान मशीन-कोड के मामले में - जैसे लूप के लिए उपयोग किया जाता है), और अगर यह गलत अनुमान लगाता है, तो इसका सामना करना पड़ता है उस; जो निर्देश प्राप्त हुआ उसे फेंक दें और अगले चक्र को खोते हुए पुनः प्राप्त करें।

इंस्ट्रक्शन पाइपलाइनिंग पर विकिपीडिया पेज 5 चरणों में RISC चिप पाइपलाइनिंग का एक उदाहरण दिखाता है - इंस्ट्रक्शन, इंस्ट्रक्शन डिकोड, एक्ज़िक्यूट, मेमोरी एक्सेस और राइट-बैक। तो, आपके पास निष्पादन, ओवरलैपिंग के कुछ चरण में 5 निर्देश हो सकते हैं। "राइटबैक" चरण तक, निर्देशों का कोई वास्तविक प्रभाव नहीं है। आप इसे एक असेंबली लाइन के रूप में सोच सकते हैं - एक विजेट को एक साथ रखने के लिए 7 मिनट लगते हैं, लेकिन इसे 5 चरणों में तोड़ा जा सकता है, सबसे लंबी अवस्था में 2 मिनट लगते हैं। प्रत्येक दो मिनट में एक बार, प्रत्येक आंशिक रूप से पूर्ण किए गए विजेट को असेंबली लाइन द्वारा अगले स्टेशन पर ले जाया जाता है। आपको हर दो मिनट में एक विजेट मिलता है - "घड़ी" केवल सबसे धीमे कदम के रूप में तेजी से टिक सकती है। यदि आप विजेट को किसी भी तेजी से आगे बढ़ाते हैं, तो "अड़चन" अधिक से अधिक विजेट कतारबद्ध हो जाएगी।


एवीआर में एक बहुत उथले पाइप लाइन है: केवल लाने और निष्पादित करने के लिए। फिर, सशर्त कूदता है या तो एक चक्र (कूद नहीं लिया) या दो चक्र (कूद लिया)।
एडगर बोनट

अतिरिक्त जटिलता: कैश की याद आती है।
मार्टिन-ब्लास पेरेज़ पिनिला

ऐसी कई चीजें हैं जिनका मैंने उल्लेख नहीं किया: कैश (किसी भी प्रकार का), मल्टी-थ्रेडिंग, मल्टी-कोर ... मैं शायद पहले से ही अपने पोस्ट में बहुत अधिक गहराई में चला गया।
AMADANON इंक। 20
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.