AVR'yi “overclock”


12

Elektriksel Özellikler bölümü altındaki AVR veri sayfalarında genellikle böyle bir grafik bulacaksınız (bu ATMega328'den):

resim açıklamasını buraya girin

"Çalışıyor" gibi görünen ancak gölgeli zarfın dışında çalışan tasarımlar gördüm. Özellikle, saati harici bir 16MHz kristalden çalıştıran 3.3V (Arduino) tasarımları gördüm. Açıkçası, bu özellik dışında. Bu zarfın dışına çıkmanın pratik olumsuz sonuçları nelerdir?


13
Eğer sadece spec sortof çalıştırırsanız, o zaman sadece iş sortof olacaktır.
Olin Lathrop

Aptal gibi görünebilir ama XTal'ın yerini alamaz mıydınız?
Hossein

İyi bir fikir değil, çoğu şansı işe yaramaz ve yine de 20 MIPS işlemciye 1 MIPS altında eklemekten çok az kazanırsınız, bunun üzerinde AVR'nin% 100'ünün çökeceğidir. Dahili sinyaller için maksimum frek. AVR içindeki en kritik sinyal yolundaki en kötü durum senaryosunu alır, üretim varyasyonları bir çipin overclock'a biraz daha bağışıklık kazandırabilir, ancak çok az bir şekilde ve çekirdeğin iyi çalışsa bile, çevre birimlerinin istediği veya sizin farklı partiden başka bir yonga ile çoğaltabilir.
user34920

1
Bir şakayı yeniden yapmak için: "Bizi şartnamede buluyormuş gibi yaparlarsa, çalışıyormuş gibi yaparız."
nitro2k01

Bu aptalca bir soru olabilir, ancak sadece 8MHz'de çalışan Mini Pro-3.3v hariç tüm AVR Arduinos'un 5v'de çalıştığını düşündüm ... ya da görmediğim daha hızlı bir 3.3v modeli var mı?
Jules

Yanıtlar:


42

Hayat nasıl daha ilginç hale getirilir 101:

  • Umurunda değilsen

    sonuçlarınızın bazen yanlış
    olabileceğini, sisteminizin bazen çökebileceğini,
    hayatınızın daha ilginç
    olabileceğini, Segway klonunuzun sadece bazen açık bir sebep olmadan yüz bitkileri
    yaptığını ...

    daha sonra parçayı üreticinin spesifikasyonlarının dışında çalıştırın

Sizin için ne ödeme olsun.
10 dolarlık bir kafanız varsa, 10 dolarlık bir kask satın alın.

Genellikle işe yarayabilir.
Bazen işe yaramayabilir.
Bazen işe yaramayacağı açık olmayabilir.

  • Bir bölünme genellikle işe yarayabilir
  • Genellikle bir sıçrama gelebilir.
  • Bir tablo doğru şekilde bakılabilir.
  • ADC değeri doğru olabilir.

    Ya da değil

    resim açıklamasını buraya girin


4
Bu cevap lol seviyorum
vicatcu

2
Bu harika.
Andrey Vihrov

6
Aslında, 10 $ 'lık bir başınız varsa, 10 $ * olasılık_katastrophic_failure kask satın almalısınız.
Nick Johnson

4
Yeni duvar
kağıdımı

4
Bu dahi: "Eğer Segway klonunuzun sadece ara sıra açık bir nedenden dolayı yüz bitkileri yapmasını umursamıyorsanız (...)"
Kamil

14

Bu tür hızlarda, çoğu işlemci belirli bir saat döngüsünde ihtiyaç duyulacak tüm sinyalleri hesaplayarak, stabilize olurken bir sonraki saat kenarını bekleyerek, tüm bu sinyalleri kilitleyerek ve bir sonraki saat döngüsünde gerekli sinyalleri hesaplayarak çalışır. Gerekli sinyaller sabitlenmeden önce bir saat kenarı gelirse, etki, hangi sinyallerin sabitlenmediği temiz bir şekilde mandallanamayabilir. Bu bir mikrodenetleyicide meydana gelirse, etkiler tahmin edilemez olabilir - en az iki nedenden dolayı:

  1. Çoğu durumda yürütme hızı, işlemcinin kodu okuduğu flash dizisinin yanıt süresi ile sınırlıdır. İşlemciyi çok hızlı çalıştırmak, burada veya orada zaman zaman bir bitin yanlış anlaşılmasına neden oluyorsa, işlemcinin amaçlanandan tamamen farklı bir kod yürütmesine kolayca neden olabilir. Birçok programda, bir kerelik bir tek bitlik yanlış okuma bile davranışı kökten değiştirebilir; bu gibi durumlarda ne olabileceğine dair tahminlerde bulunmak nadiren pratiktir. Bazı durumlarda yapılabilecek en iyi şey, hatalı yürütme olasılığını ortadan kaldırmak için programın belirli bölümlerini "zırhlamaktır". Örneğin, bir kişi yazmak isteyene kadar bir EEPROM'u korumalı bırakabilir ve daha sonra aşağıdaki gibi bir kod kullanabilir:
    uint32_t eep_checksum, eep_addr, eep_data;
    
    #define EEPROM_WRITE (adres; veri; yüklem) \
      eep_checksum = 0xC0DEFACE, eep_addr = (adres), eep_data = (veri), \ 
      eep_checksum + = eep_addr + eep_data, ((yüklem) || HARD_CRASH ()), \
      eep_checksum + = (0xCAFEBABE - C0DEFACE), eep_do_write ()
    
    void eep_do_write (void)
    {
      ENABLE_EEPROM_WRITE_HARDWARE ();
      eğer (eep_checksum! = eep_addr + eep_data + 0xCAFEBABE)
      {
        DISABLE_EEPROM_WRITE_HARDWARE ();
        HARD_CRASH ();
      }
      DO_EEPROM_WRITE ();
      DISABLE_EEPROM_WRITE_HARDWARE ();
    }  
    
    Adres ve veriler yüklenmeden önce "eep_checksum = 0xC0DEFACE" yürütülmediği sürece, bir eeprom_write yordamının veri yazmaya çalışması pek olası değildir. Bunun yürütülmesinden sonra, sağlama toplamını uygun değere ayarlamadan ve eeprom_store yordamını çağırmadan önce yüklem geçerlilik açısından kontrol edilecektir.
  2. Yanlış kodun çalıştırılmasıyla ortaya çıkan açık risklere ek olarak, başka bir olası rasgele davranış kaynağı da metastabilitedir. Normalde, herhangi bir döngüde, her flip flop yüksek veya düşük kilitlenir. Bununla birlikte, bir flip flop girişi saat geldikçe değişirse, bir sonraki saat döngüsüne kadar herhangi bir düzende keyfi olarak yüksek ve düşük arasında geçiş yapabilen bazı keyfi süreli çıktı garip şeyler için olabilir; flip floptan aşağı akıştaki bazı cihazların bunu "yüksek" olarak görürken, diğerleri "düşük" olarak görür. İşlemciler genellikle ne yapacaklarına karar veren birçok cihaza güvenir. "Eşit değilse bir azaltma ve şube" talimatının yürütülmesi sırasında ve bazı devreler dalın alınması gerektiğini düşünürken, diğerleri yapmazsa,

Üreticiler, bu parametreler içinde, işlemcilerin sadece düz çalışacağı şekilde işlemciler için çalışma parametreleri belirtirler. Bu zarfın dışına itmek işlemciyi sadece 99.9999999 güvenilirliğe indirebilir. Bu çok kötü gelmeyebilir, ancak dakikada bir kez keyfi olarak yanlış bir şey yapan bir işlemci teşhis etmeye çalışmak (16MHz'i şekillendirmek) eğlenceli değildir.


2
Zırhlı EEPROM yazarlarının sadece cihazın tamamen tuğlalaşmasını istatistiksel olarak daha az olası hale getirdiğini, hatalı yürütmeyi daha az olası hale getirmenin çok fazla bir şey yapmadığını belirtmek iyi olur. Bununla birlikte, iyi bir politika gibi görünüyor. 9 dokuz güvenilirliğin sadece 16 MHz'de bir dakika içinde bu kadar yüksek bir arıza olasılığına sahip olduğuna şaşırdım.
Kevin Vermeer

@Kevin Vermeer: ​​Güç kaynağı sarkmaları, elektrostatik olaylar, vb. Olasılıkları göz önüne alındığında, bir cihazın asla güvenli çalışma bölgesinden dışarı çıkmamasını sağlamak genellikle zordur. - sonuçların nasıl minimize edileceğini gösteren bir örnektir. Benzer teknikler genellikle harici donanımı çalıştıran kod için yararlıdır. Güvenlik açısından kritik sistemler için koda güvenilmemelidir, ancak örneğin bir etiket yapımcısında, etiket besleme kontrollerini korumak için yukarıdaki gibi bir mantık kullanılabilir, bu nedenle rasgele yürütme etiket stoğunda 5 $ yok etmez.
supercat

Açıkçası, özellikle Atmel AVR mikrodenetleyicileri hakkında konuşuyorum - genel amaçlı işlemcilerden çok farklı ...
vicatcu

2
@vicatcu: PIC, 8x51, 68HC05, ARM, vs.'den farklı olduğunu düşündüğünüz belirli bir yol var mı? Veya bu konuda, 6502 veya Z80 gibi eski CPU'lar? Modern CPU'larda hız aşırtma, kendi kendini yok eden aşırı ısınmaya neden olabilir, ancak daha küçük veya daha yavaş CPU'larda, cihazın çalışma şansının olacağı herhangi bir hızda sorun olmaz.
supercat


3

Henüz değinilmeyen bir husus, geçersiz voltaj aralıklarında (3.3V'de 16MHz) geçerli frekanslarda çalışmakla daha az, ancak geçerli voltaj aralıklarında (5V'de 24MHz) geçersiz frekanslarda çalışmakla daha fazla ilgili olan ısı dağılımıdır.

Yongadaki bir kapı her açıldığında veya kapatıldığında ısı yayılır. MOSFET'lerden oluşan kapı, AÇIK ve KAPALI veya KAPALI ve AÇIK arasında değişen bir direnç gibi davranır. Bu direnç elbette ısıyı dağıtır. Daha sık geçiş yaparsa, bu ısının çipten dağılması için geçişler arasında daha az zaman kalır ve ısı birikimi riskiyle karşı karşıya kalırsınız.

Ergo, ne kadar hızlı koşarsanız, o kadar fazla ısı birikebilir. Bu yüzden PC CPU'ların üzerinde büyük fanlar var - çok hızlı geçiş yapıyorlar, çipin ısısını yeterince hızlı alamıyorlar, bu yüzden yardıma ihtiyaçları var.

Çipin en yüksek nominal hızı, çipin ısı birikimini geçerli çalışma koşulları altında güvenilir bir şekilde dağıtmasına izin verecek şekilde seçilir (yani, ortam sıcaklığı, örneğin maksimum 85 ° C veya 105 ° C). Bu frekansın aşılması çipin aşırı ısınmasına neden olabilir.

Evet, biraz yardım sağlarsanız, yani bir ısı emici ve belki de bir fan varsa ve etrafında iyi bir hava akışı olduğundan emin olursanız, çipi beklenenden daha hızlı çalıştırmak mümkün olabilir. Ancak elbette, yazın sıcak bir günde, tüm kış mükemmel bir şekilde çalışan bir cihaz olduğunu aniden tuhaf şeyler yapmaya başlar.

Dikkate alınması gereken başka bir şey, dönüş oranlarıdır. Saat sinyallerinin (ve diğer sinyallerin de) istenen seviyeye yükselmesi veya düşmesi zaman alır. Çipin iç kısımları saat sinyalinin DÜŞÜK'ten YÜKSEK'e yükselmesi anlamına gelirse ve YÜKSEK sürenin, örneğin 42ns (24MHz) olduğu bir frekansta saatini denemeye çalışırsınız. süre kaldı. Bu saatin sadece% 64'ü aslında bir saat sinyali - geri kalanı çöp. IO pinleri için aynıdır. SPI saat çıkışları gibi şeyler IO pininin dönme hızı ile sınırlandırılacaktır, bu nedenle daha hızlı SPI elde etmek için çipinizi overclock ederseniz, her zaman planlandığı gibi gitmez, saat çıkışından beklediğiniz güzel kare dalga artık kare değil.


1

Cihaz bazı voltaj / sıcaklık kombinasyonlarında çalışmayabilir.


o verilen yapar , bazı voltaj / sıcaklık (3,3 V ve 25C) çalışmaya sınırının hemen yerine kristalin puan frekans boyunca faaliyet saati nedir? "işe yaramayabilir"
huşu ile

@vicatcu - "Kesinlikle belirsiz TAMAMEN * aldığınız özellik ." İşe yaramayabilir "** TAMAMEN spesifikasyonlar. ...
Russell McMahon

haha evet, teknik
özellikten

@vicatcu: Bazen en azından nominal olarak teknik özelliklerin dışında tasarım yapmaktan kaçınmak neredeyse imkansız görünüyor. Örneğin, iki cihaz her ikisi de VDD olarak VOut (Maks) ve VIn (Maks) belirtirse ve biri aynı raya kadar kablolanmış olsalar bile her birinin çıkışını diğerinin girişine bağlarsa birinin bir cihazdaki geçici akımın geçici olarak VDD'sinin diğer cihaz tarafından voltaj çıkışının altına bile mikrovolt düşmesine neden olamayacağını garanti edin. Eğer öyleyse, girişin VDD'yi aşmaması gereken belirtilen çalışma koşulunu aşabilir.
supercat

1
@vicatcu: Tabii ki, çoğu mühendis, cihazların fiziksel olarak inşa edilme şeklinin, bu tür şeylere en az birkaç milivolt toleransının varlığını neredeyse garanti edeceğini anlayacaktı, ancak birçok veri sayfası herhangi bir belirtmedi. Emin değilim neden. Üreticinin, bugünün parçalarının problemsiz kabul edeceğine yakın bir şey belirtmek istemediğini anlayabiliyorum, ancak bir şey belirtmek, hiçbir şey belirtmekten daha hoş görünecek.
supercat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.