"ओवरक्लॉकिंग" एक एवीआर


12

AVR डेटाशीट्स में इलेक्ट्रिकल कैरेक्टर्स सेक्शन के तहत आपको आम तौर पर इस तरह का एक ग्राफ मिलेगा (यह ATMegaa88 से है:

यहाँ छवि विवरण दर्ज करें

मैंने ऐसे डिज़ाइन देखे हैं जो "काम" करते हैं, लेकिन छायांकित लिफाफे के बाहर काम करते हैं। विशेष रूप से, मैंने 3.3V (Arduino) डिजाइन देखे हैं जो बाहरी 16MHz क्रिस्टल से घड़ी चलाते हैं। जाहिर है, यह कल्पना से बाहर है। इस लिफाफे के बाहर चलने के व्यावहारिक नकारात्मक परिणाम क्या हैं?


13
यदि आप इसे केवल कल्पना में ही सॉर्ट करते हैं, तो यह केवल सॉर्टोफ़ काम करेगा।
ओलिन लेट्रोप

गूंगा लग सकता है, लेकिन क्या आप एक्सल की जगह नहीं ले सकते?
होसैन

एक अच्छा विचार नहीं है, सबसे अधिक संभावना है कि यह काम नहीं करेगा और वैसे भी आप 1 MIPS से 20 MIPS प्रोसेसर के तहत जोड़ने से बहुत कम लाभ उठाते हैं, ऊपर कि मैं 100% हूं AVR दुर्घटनाग्रस्त हो जाएगा। आपको आंतरिक संकेतों के लिए सेटअप रखना होगा और बार होल्ड करना होगा, अधिकतम फ्रीक। AVR के अंदर सबसे महत्वपूर्ण सिग्नल पथ में बदतर स्थिति परिदृश्य को लेता है, निर्माण भिन्नता एक चिप को ओवरक्लॉकिंग के लिए थोड़ा अधिक प्रतिरक्षा बना सकती है लेकिन बहुत कम और याद रखें कि भले ही कोर स्वयं ठीक चलता है इसका मतलब यह नहीं है कि बाह्य परिधीय होगा या आप विभिन्न बैच से एक और चिप के साथ इसे दोहरा सकते हैं।
user34920

1
मज़ाक का प्रतिकार करने के लिए: "अगर वे हमें कल्पना करने का नाटक करेंगे, तो हम काम करने का नाटक करेंगे।"
नाइट्रो 2k01

यह एक गूंगा सवाल हो सकता है, लेकिन मुझे लगा कि सभी AVR Arduinos 5v पर चले गए, सिवाय मिनी Pro-3.3v के जो केवल 8MHz पर चलता है ... या वहाँ एक तेज 3.3v मॉडल है जिसे मैंने नहीं देखा है?
जूल्स

जवाबों:


42

जीवन को और अधिक दिलचस्प कैसे बनाएं 101:

  • अगर आपको परवाह नहीं है

    आपके परिणाम कभी-कभी गलत हो सकते हैं,
    कि आपका सिस्टम कभी-कभी क्रैश हो सकता है,
    कि आपका जीवन अधिक दिलचस्प हो सकता है,
    कि आपका सेगवे क्लोन केवल कभी-कभी बिना किसी स्पष्ट कारण के फेस-प्लांट करता है,
    ...

    फिर हर तरह से निर्माता की कल्पना के बाहर का हिस्सा चलाएं

आपको वह मिलता है जिसके लिए आप भुगतान नहीं करते हैं।
यदि आपके पास $ 10 का सिर है, तो $ 10 का हेलमेट खरीदें।

यह अक्सर काम कर सकता है।
यह कभी-कभी काम नहीं कर सकता है।
यह स्पष्ट नहीं हो सकता है कि यह कभी-कभी काम नहीं कर रहा है।

  • एक विभाजन आमतौर पर काम कर सकता है
  • एक छलांग आमतौर पर आ सकती है।
  • एक तालिका को सही ढंग से देखा जा सकता है।
  • कोई ADC मान सही हो सकता है।

    या नहीं

    यहाँ छवि विवरण दर्ज करें


4
मुझे यह जवाब पसंद है
vicatcu

2
यह अद्भुत है।
एंड्री विह्रोव

6
दरअसल, यदि आपके पास $ 10 का सिर है, तो आपको $ 10 * प्रायिकता_ऑफ_कास्ट्रोफिक_फाइल हेलमेट खरीदना चाहिए।
निक जॉनसन

4
मुझे मेरा नया वॉलपेपर मिला
Rick_2047

4
यह प्रतिभा है: "यदि आप परवाह नहीं करते हैं (...) कि आपका सेगवे क्लोन केवल कभी-कभी बिना किसी स्पष्ट कारण के पौधों का सामना करता है"
कामिल

14

इस प्रकार की गति पर, अधिकांश प्रोसेसर एक निश्चित घड़ी चक्र में आवश्यक सभी संकेतों की गणना करके काम करते हैं, अगली घड़ी के लिए इंतजार करते हुए, वे उन सभी संकेतों को स्थिर करते हैं, और अगले घड़ी चक्र में आवश्यक संकेतों की गणना करते हैं। उस संकेत की प्रतीक्षा करते हुए, जबकि वे सिग्नल स्थिर होते हैं, आदि। यदि आवश्यक संकेतों को स्थिर करने से पहले एक घड़ी की बढ़त आती है, तो प्रभाव यह होगा कि जो भी सिग्नल स्थिर नहीं थे, उन्हें साफ-सुथरा नहीं किया जा सकता है। यदि यह एक माइक्रोकंट्रोलर में होता है, तो प्रभाव अप्रत्याशित हो सकता है - कम से कम दो कारणों से:

  1. कई मामलों में, निष्पादन की गति फ्लैश सरणी के प्रतिक्रिया समय तक सीमित होती है जिसमें से प्रोसेसर कोड पढ़ता है। यदि प्रोसेसर बहुत तेजी से चल रहा है तो कभी-कभार इधर या उधर फैलने का कारण बनता है, यह आसानी से प्रोसेसर को पूरी तरह से अलग कोड को निष्पादित करने का कारण बन सकता है जो कि इरादा था। कई कार्यक्रमों में, यहां तक ​​कि एक बार के एकल-बिट गलत व्यवहार को मौलिक रूप से बदल सकते हैं; इस तरह के मामलों में क्या हो सकता है, इस बारे में कोई भी भविष्यवाणी करने की कोशिश करना शायद ही कभी व्यावहारिक हो। सबसे अच्छा कुछ मामलों में कर सकते हैं कार्यक्रम के कुछ भागों "कवच" है ताकि गलत निष्पादन की संभावना नहीं है। उदाहरण के लिए, कोई EEPROM को तब तक संरक्षित रख सकता है जब तक कि कोई उसे लिखना नहीं चाहता, और फिर कोड का उपयोग कुछ इस तरह से करें:
    uint32_t eep_checksum, eep_addr, eep_data;
    
    #define EEPROM_WRITE (पता, डेटा, विधेय) \
      eep_checksum = 0xC0DEFACE, eep_addr = (पता), eep_data = (डेटा), \ 
      eep_checksum + = eep_addr + eep_data, ((विधेय) || HARD_CRASH ()), \ _
      eep_checksum + = (0xCAFEBABE - C0DEFACE), eep_do_nerite ()
    
    शून्य eep_do_write (शून्य)
    {
      ENABLE_EEPROM_WRITE_HARDWARE ();
      अगर (eep_checksum! = eep_addr + eep_data + 0xCAFEBABE)
      {
        DISABLE_EEPROM_WRITE_HARDWARE ();
        HARD_CRASH ();
      }
      DO_EEPROM_WRITE ();
      DISABLE_EEPROM_WRITE_HARDWARE ();
    }  
    
    यह बहुत संभावना नहीं है कि एक eeprom_write दिनचर्या डेटा लिखने का प्रयास करेगी जब तक कि पते और डेटा लोड होने से पहले "eep_checksum = 0xC0DEFACE" निष्पादित न हो जाए। उसके निष्पादन के बाद, चेकसम को उचित मूल्य पर समायोजित करने से पहले और eeprom_store दिनचर्या को कॉल करने से पहले वैधता के लिए जाँच की जाएगी।
  2. गलत कोड को निष्पादित करके स्पष्ट जोखिमों के अलावा, संभावित यादृच्छिक व्यवहार का एक अन्य स्रोत मेटास्टेबिलिटी है। आम तौर पर, किसी भी चक्र पर, प्रत्येक फ्लिप फ्लॉप या तो उच्च या निम्न स्तर पर होगा। यदि, हालांकि, घड़ी के आते ही फ्लिप फ्लॉप का इनपुट बदल जाता है, तो यह कुछ मनमाना अवधि आउटपुट अजीब सामान के लिए हो सकता है, जो अगले घड़ी चक्र तक किसी भी पैटर्न में, उच्च और निम्न के बीच मनमाने ढंग से फ्लिप कर सकता है; यह पूरी तरह से संभव है कि फ्लिप फ्लॉप से ​​डाउनस्ट्रीम के कुछ उपकरण इसे "उच्च" के रूप में देखेंगे, जबकि अन्य इसे "कम" के रूप में देखेंगे। आमतौर पर, प्रोसेसर कई उपकरणों पर भरोसा करते हैं जो इस बात पर सहमत होते हैं कि वे क्या करने जा रहे हैं। यदि "डिक्रीमेंट-एंड-ब्रांच-इफ-न-बराबर" इंस्ट्रक्शन के निष्पादन के दौरान, और कुछ सर्किट को लगता है कि ब्रांच को लिया जाना चाहिए, लेकिन अन्य नहीं।

निर्माता प्रोसेसर के लिए ऑपरेटिंग पैरामीटर निर्दिष्ट करते हैं जैसे कि, उन मापदंडों के भीतर, प्रोसेसर सिर्फ सादे काम करेंगे। उस लिफाफे के बाहर चीजों को धक्का देने से प्रोसेसर केवल 99.9999999 विश्वसनीय हो सकता है। यह बहुत बुरा नहीं लग सकता है, लेकिन एक प्रोसेसर का निदान करने की कोशिश कर रहा है जो एक या एक मिनट में एक बार मनमाने ढंग से गलत करता है (16MHz लगा) कोई मज़ा नहीं है।


2
यह नोट करना अच्छा होगा कि EEPROM लिखता है, केवल डिवाइस की पूरी ईंट को सांख्यिकीय रूप से कम संभावना बनाता है, यह गलत निष्पादन को कम संभावना बनाने के लिए बहुत कुछ नहीं करता है। बहरहाल, यह एक अच्छी नीति की तरह लगता है। मैं चौंका हूं कि विश्वसनीयता के 9 निशानों में सिर्फ 16 मेगाहर्ट्ज पर एक मिनट में विफलता की इतनी अधिक संभावना है।
केविन वर्मर

@ केविन वर्मियर: यह सुनिश्चित करना अक्सर मुश्किल होता है कि कोई उपकरण अपने सुरक्षित ऑपरेटिंग क्षेत्र से बाहर कभी भी संचालित नहीं होगा, बिजली की आपूर्ति की संभावनाएं, इलेक्ट्रोस्टैटिक घटनाओं आदि को देखते हुए। EEPROM-armoring को गलत निष्पादन के लिए अधिक संभावना नहीं बनाया गया है। -यह परिणाम कम से कम करने के लिए कैसे का चित्रण है। इसी तरह की तकनीक अक्सर कोड के लिए उपयोगी होती है जो बाहरी हार्डवेयर का संचालन करती है। किसी को सुरक्षा-महत्वपूर्ण प्रणालियों के लिए कोड पर भरोसा नहीं करना चाहिए, लेकिन उदाहरण के लिए, लेबल-फीड नियंत्रण की रक्षा के लिए लेबल-मेकर वाला ऊपर दिए गए तर्क का उपयोग कर सकता है, इसलिए यादृच्छिक निष्पादन लेबल स्टॉक में $ 5 को नष्ट नहीं करेगा।
सुपरकार

स्पष्ट होने के लिए, मैं विशेष रूप से Atmel AVR माइक्रोकंट्रोलर्स के बारे में बात कर रहा हूं - जो सामान्य उद्देश्य प्रोसेसर से बहुत अलग हैं ...
vicatcu

2
@vicatcu: क्या आप कुछ विशेष तरीके से सोच रहे हैं कि वे PIC, 8x51, 68HC05, ARM, आदि से अलग हैं? या उस बात के लिए, पुराने CPU जैसे 6502 या Z80? आधुनिक सीपीयू पर, ओवरक्लॉकिंग स्वयं-विनाशकारी ओवरहीटिंग का कारण बन सकता है, लेकिन छोटे या धीमी सीपीयू पर, यह किसी भी गति पर एक गैर-मुद्दा है जहां डिवाइस के काम करने का कोई भी मौका होगा।
सुपरकाट

3

आपके प्रश्न का सरल उत्तर:

"सुरक्षित गति क्षेत्र" के बाहर काम करने से आपके सिस्टम का काम अस्थिर हो सकता है। इसका मतलब है? गलत गणना परिणाम, माइक्रोकंट्रोलर रीसेट आदि।

यदि आप ऐसा करना चाहते हैं, तो आपको इन पृष्ठों / लेखों पर एक नज़र डालनी चाहिए:

तरल नाइट्रोजन के ठंडा होने के साथ अरुडिनो को ओवरक्लॉक करना। 20 इंक .65.3Mhz @ -196 ° C / -320 ° F

ATmega328 ओवरक्लॉक (30 मेगाहर्ट्ज)


3

एक विचार जो अभी तक उल्लेख नहीं किया गया है, जो कि अमान्य वोल्टेज श्रेणियों (16MHz 3.3V पर) में वैध आवृत्तियों पर परिचालन करने के लिए कम है, लेकिन वैध वोल्टेज रेंज (5V में 24MHz) पर अवैध आवृत्तियों पर चलने के साथ अधिक गर्मी लंपटता है।

हर बार चिप में एक गेट चालू या बंद हो जाता है जिससे गर्मी नष्ट हो जाती है। गेट, जो MOSFETs से बना है, चालू और बंद, या बंद और चालू होने के बीच की अवधि में एक चर अवरोधक की तरह काम करता है। बेशक यह अवरोध गर्मी को नष्ट कर देता है। अधिक बार यह कम समय स्विच करता है कि चिप के बाहर स्विच करने के लिए स्विचिंग के बीच होता है और आप हीट बिल्डअप का जोखिम उठाते हैं।

एर्गो, जितनी तेजी से आप दौड़ते हैं, उतनी ही गर्मी का निर्माण हो सकता है। यही कारण है कि पीसी सीपीयू के उन पर बड़े प्रशंसक हैं - वे इतनी तेजी से स्विच करते हैं कि वे चिप से गर्मी को तेजी से बाहर नहीं निकाल सकते हैं, इसलिए उन्हें मदद की ज़रूरत है।

चिप की शीर्ष रेटेड गति को मान्य ऑपरेटिंग परिस्थितियों (यानी, परिवेश का तापमान, आमतौर पर अधिकतम 85 ° C या 105 ° C उदाहरण के लिए) के तहत मज़बूती से इसकी गर्मी buildup को फैलाने की अनुमति देने के लिए चुना जाता है। उस आवृत्ति से अधिक होने से चिप को ज़्यादा गरम किया जा सकता है।

हां, यदि आप कुछ सहायता प्रदान करते हैं, तो चिप को तेजी से चलाना संभव हो सकता है - यानी, एक हीट सिंक और शायद एक प्रशंसक, और यह सुनिश्चित करें कि इसके आसपास अच्छा एयरफ्लो हो। लेकिन निश्चित रूप से, गर्मियों में एक गर्म दिन पर आप पा सकते हैं कि एक पूरी तरह से काम करने वाला उपकरण था जो सभी सर्दियों में अचानक अजीब चीजें करना शुरू कर देता है।

एक और बात पर विचार किया है कि यह दर है। क्लॉक सिग्नल (और अन्य सिग्नल भी) अपने वांछित स्तर तक बढ़ने या गिरने में समय लेते हैं। यदि चिप के इंटर्नल का अर्थ है क्लॉक सिग्नल का कहना है कि 15ns एक LOW से एक हाई तक बढ़ने के लिए, और आप इसे आज़माते हैं और एक ऐसी आवृत्ति पर क्लॉक करते हैं जहाँ एक High पीरियड होता है, 42ns (24MHz) कहते हैं, जो कि वैध घड़ी का केवल 27ns छोड़ता है अवधि शेष है। यह सिर्फ 64% घड़ी वास्तव में एक घड़ी संकेत है - बाकी बकवास है। IO पिन के लिए भी ऐसा ही है। SPI क्लॉक आउटपुट जैसी चीजें IO पिन के स्लीव रेट से सीमित होंगी, इसलिए यदि आप अपनी SP को तेज़ी से प्राप्त करने के लिए ओवरक्लॉक करते हैं, तो आप पाएंगे कि चीजें हमेशा नियोजित नहीं होती हैं, जैसे कि क्लॉक आउटपुट से आपको अच्छा स्क्वायर वेव मिलता है। किसी भी अधिक वर्ग नहीं है।


1

डिवाइस कुछ वोल्टेज / तापमान संयोजन पर काम नहीं कर सकता है।


यह देखते हुए कि यह करता है कुछ वोल्टेज / तापमान (3.3 और 25C) पर काम, घड़ी सिर्फ सीमा के बजाय क्रिस्टल का दर्जा दिया आवृत्ति के साथ काम करता है? "काम नहीं कर सकता है"
विस्मयकारी

@vicatcu - "भयानक रूप से अस्पष्ट है * जो युक्ति आपको मिलती है।" शायद काम नहीं करता है "** केवल कल्पना है। सीमाओं पर काम होगा। तो आप यह सुनिश्चित कर सकते हैं कि कुछ सुरक्षा मार्जिन है। कितना बड़ा? उनका दिन बनाओ ...
रसेल मैकमोहन

हाहा हाँ, मैं कभी कल्पना से बाहर नहीं निकलता, मैं इसे थोड़ा उत्तेजक होने के लिए कह रहा था
vicatcu

@vicatcu: कभी-कभी ऐसा लगता है कि डिजाइनिंग से कम से कम नाममात्र के लिए बचना लगभग असंभव है। उदाहरण के लिए, यदि दो डिवाइस वीओडीटी (मैक्स) और वीईएन (मैक्स) दोनों को वीडीडी के रूप में निर्दिष्ट करते हैं, और एक प्रत्येक के आउटपुट को दूसरे के इनपुट से जोड़ता है, भले ही वे एक ही रेल तक वायर्ड हों। देखें कि कोई कैसे गारंटी दे सकता है कि एक उपकरण में एक क्षणिक वर्तमान क्षणिक इसके VDD के कारण अन्य डिवाइस द्वारा वोल्टेज आउटपुट से भी नीचे एक माइक्रोवोल्ट नहीं गिर सकता है। यदि ऐसा किया जाता है, तो यह निर्दिष्ट ऑपरेटिंग स्थिति से अधिक हो सकता है कि इनपुट VDD से अधिक नहीं होना चाहिए।
सुपरकैट

1
@vicatcu: निश्चित रूप से, मुझे लगता है कि अधिकांश इंजीनियर यह समझेंगे कि जिस तरह से उपकरणों का भौतिक रूप से निर्माण किया जाता है वह लगभग ऐसी चीजों पर कम से कम कुछ मिलिवालों की सहिष्णुता के अस्तित्व की गारंटी देता है, लेकिन कई डेटा शीट कोई निर्दिष्ट नहीं करते हैं। यकीन नहीं है कि क्यों। मैं समझ सकता हूं कि एक निर्माता कुछ भी निर्दिष्ट नहीं करना चाहता है जो आज के भागों को समस्या के बिना स्वीकार करेगा, लेकिन कुछ निर्दिष्ट करना कुछ भी निर्दिष्ट नहीं करने की तुलना में अच्छा लगेगा।
सुपरकैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.