AVR“오버 클로킹”


12

전기적 특성 섹션의 AVR 데이터 시트에서 일반적으로 다음과 같은 그래프를 볼 수 있습니다 (ATMega328에서 가져온 것임).

여기에 이미지 설명을 입력하십시오

"작동"하는 것처럼 보이지만 음영 처리 된 봉투 외부에서 작동하는 디자인을 보았습니다. 특히 외부 16MHz 크리스털에서 클럭을 실행하는 3.3V (Arduino) 디자인을 보았습니다. 분명히 이것은 사양에 맞지 않습니다. 이 봉투 밖에서 실행하면 실제로 부정적인 결과는 무엇입니까?


13
spec에서 sortof 만 실행하면 sortof 만 작동합니다.
Olin Lathrop

바보처럼 보이지만 XTal을 대체 할 수 없습니까?
Hossein

좋은 생각은 아니지만 대부분의 경우 작동하지 않으며 어쨌든 1 MIPS 미만을 20 MIPS 프로세서에 추가하면 거의 얻을 수 없습니다. 내부 신호의 최대 주파수 인 설정 및 유지 시간을 유지해야합니다. AVR 내부에서 가장 중요한 신호 경로에서 더 나쁜 사례 시나리오를 취하면 제조 변형으로 인해 하나의 칩이 오버 클럭킹에 약간 더 영향을 줄 수 있지만 코어 자체가 잘 작동하더라도 주변 장치가 다른 배치에서 다른 칩으로 복제 할 수 있습니다.
user34920

1
농담의 목적을 바꾸려면 : "만약 그들이 사양 내에서 우리를 시계하는 척한다면, 우리는 일하는 척 할 것입니다."
nitro2k01

이것은 멍청한 질문 일지 모르지만 8MHz에서만 실행되는 Mini Pro-3.3v를 제외하고 모든 AVR Arduino가 5V에서 실행되었다고 생각했습니다. 또는 내가 보지 못한 더 빠른 3.3V 모델이 있습니까?
Jules

답변:


42

인생을 더 재미있게 만드는 방법 101 :

  • 신경 쓰지 않으면

    귀하의 결과가 때때로 잘못 될 수 있고,
    귀하의 시스템이 때때로 고장날
    수 있고 , 귀하의 삶이 더 흥미로워 질 수 있고,
    Segway 클론이 명백한 이유없이 때때로 얼굴 식물을 생산
    한다는 것 , ...

    그런 다음 반드시 제조업체 사양 외부에서 부품을 실행하십시오.

당신은 당신이 지불하지 않는 것을 얻습니다.
머리가 10 달러라면 헬멧을 10 달러 사십시오.

종종 효과가있을 수 있습니다.
때때로 작동하지 않을 수 있습니다.
때때로 작동하지 않는 것은 분명하지 않을 수 있습니다.

  • 분할은 일반적으로 작동 할 수 있습니다
  • 점프는 보통 도착할 수 있습니다.
  • 테이블이 올바르게 조회 될 수 있습니다.
  • ADC 값이 정확할 수 있습니다.

    아니면

    여기에 이미지 설명을 입력하십시오


4
나는이 답변을 좋아합니다 lol
vicatcu

2
이것은 놀라운 일입니다.
Andrey Vihrov

6
실제로, 머리가 $ 10 인 경우 $ 10 * chance_of_catastrophic_failure 헬멧을 구입해야합니다.
Nick Johnson

4
나는 나의 새로운 벽지 발견
Rick_2047

4
이것은 천재입니다. "세그웨이 클론이 특별한 이유없이 얼굴 식물을 가끔씩 만 신경 쓰지 않는다면 (...)"
Kamil

14

이러한 종류의 속도에서 대부분의 프로세서는 특정 클록 사이클에서 필요한 모든 신호를 계산하고 안정화되는 동안 다음 클록 에지를 기다리고 모든 신호를 래치하고 다음 클록 사이클에서 필요한 신호를 계산하여 작동합니다. 필요한 신호가 안정화되기 전에 클럭 에지에 도달하면 안정화되지 않은 신호가 깨끗하게 래치되지 않을 수 있습니다. 마이크로 컨트롤러에서 이러한 현상이 발생하면 최소한 두 가지 이유로 인해 효과를 예측할 수 없습니다.

  1. 대부분의 경우, 실행 속도는 프로세서가 코드를 읽는 플래시 어레이의 응답 시간에 의해 제한됩니다. 프로세서를 너무 빨리 실행하면 때때로 비트가 여기저기서 읽히지 않게되어 프로세서가 의도 한 것과 완전히 다른 코드를 쉽게 실행할 수 있습니다. 많은 프로그램에서 한 번의 단일 비트 오 판독조차도 동작을 근본적으로 바꿀 수 있습니다. 그러한 경우에 일어날 수있는 일에 대한 예측을 시도하는 것은 거의 실용적이지 않습니다. 어떤 경우에는 할 수있는 최선의 방법은 프로그램의 특정 부분을 "갑옷"으로하여 잘못된 실행을 불가능하게하는 것입니다. 예를 들어, EEPROM을 쓰려고 할 때까지 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_write ()
    
    무효 eep_do_write (void)
    {
      ENABLE_EEPROM_WRITE_HARDWARE ();
      if (eep_checksum! = eep_addr + eep_data + 0xCAFEBABE)
      {
        DISABLE_EEPROM_WRITE_HARDWARE ();
        HARD_CRASH ();
      }
      DO_EEPROM_WRITE ();
      DISABLE_EEPROM_WRITE_HARDWARE ();
    }  
    
    주소와 데이터가로드되기 전에 "eep_checksum = 0xC0DEFACE"가 실행되지 않으면 eeprom_write 루틴이 데이터 쓰기를 시도 할 가능성은 거의 없습니다. 이를 실행 한 후, 체크섬을 적절한 값으로 조정하고 eeprom_store 루틴을 호출하기 전에 술어의 유효성을 검사합니다.
  2. 잘못된 코드를 실행하여 발생하는 명확한 위험 외에도 잠재적 인 무작위 행동의 또 다른 원인은 준 안정성입니다. 일반적으로 모든 사이클에서 모든 플립 플롭은 높거나 낮게 고정됩니다. 그러나 플립 플롭에 대한 입력이 클럭이 도달하는대로 변경되면 임의의 지속 시간 동안 이상한 클럭이 발생하여 다음 클럭 사이클까지 임의의 패턴에서 임의의 패턴으로 임의로 높거나 낮게 나타날 수 있습니다. 플립 플롭의 다운 스트림에있는 일부 장치는 "높음"으로 인식하고 다른 장치는 "낮음"으로 인식 할 수 있습니다. 일반적으로 프로세서는 수행 할 작업에 동의하는 많은 장치에 의존합니다. 만약 "decrement-and-branch-if- 같지 않은"명령을 실행하는 동안 일부 회로에서 분기를 수행해야한다고 생각하지만 다른 회로는 그렇지 않은 경우,

제조업체는 프로세서의 작동 매개 변수를 지정하여 해당 매개 변수 내에서 프로세서가 정상적으로 작동하도록합니다. 봉투 외부로 물건을 밀면 프로세서가 99.9999999의 신뢰성 만 저하 될 수 있습니다. 그것은 너무 나쁘게 들리지 않을 수도 있지만, 1 분 정도 한 번 (16MHz의 그림) 임의로 작동하는 프로세서를 진단하는 것은 재미가 없습니다.


2
EEPROM 쓰기를 아머 링하는 것은 단지 장치의 완전한 브릭 킹을 통계적으로 덜 가능하게 만들고, 잘못된 실행을 덜 어렵게 만드는 것은 아닙니다. 그럼에도 불구하고 좋은 정책처럼 보입니다. 9 nines의 신뢰성은 단 16MHz에서 1 분 만에 높은 실패 확률을 가지고 있다는 사실에 놀랐습니다.
Kevin Vermeer

@ 케빈 베르메르 (Kevin Vermeer) : 전원 공급 처짐, 정전기 발생 등의 가능성을 고려하여 장치가 안전한 작동 영역에서 절대로 작동하지 않도록하는 것은 종종 어려운 일입니다. -결과를 최소화하는 방법을 보여줍니다. 외부 하드웨어를 작동시키는 코드에도 유사한 기술이 유용합니다. 안전에 중요한 시스템의 경우 코드에 의존해서는 안되지만 라벨 제작자는 라벨 피드 컨트롤을 보호하기 위해 위와 같은 로직을 사용할 수 있으므로 임의의 실행으로 인해 라벨 스톡에서 5 달러를 파괴하지는 않습니다.
supercat

분명히, 나는 범용 프로세서와는 매우 다른 Atmel AVR 마이크로 컨트롤러에 대해 구체적으로 이야기하고 있습니다.
vicatcu

2
@ vicatcu : PIC, 8x51, 68HC05, ARM 등과는 다르다고 생각하는 특별한 방법이 있습니까? 아니면 6502 또는 Z80과 같은 구형 CPU? 최신 CPU에서 오버 클로킹은 자체 파괴적인 과열을 유발할 수 있지만 CPU가 작거나 느린 경우에는 장치가 작동 할 수있는 속도에서 문제가되지 않습니다.
supercat


3

유효하지 않은 전압 범위 (3.3V에서 16MHz)의 유효 주파수에서 작동하는 것과 관련이 적지 만 유효 전압 범위 (5V에서 24MHz)에서 유효하지 않은 주파수에서 작동하는 것과 관련이있는 한 가지 고려 사항은 열 손실입니다.

칩의 게이트가 켜지거나 꺼질 때마다 열이 방출됩니다. MOSFET으로 구성된 게이트는 ON과 OFF 또는 OFF와 ON 사이의 기간에 가변 저항처럼 작동합니다. 물론 그 저항은 열을 소산시킵니다. 더 자주 스위치를 전환할수록 칩에서 열을 방출하기위한 전환 사이의 시간이 줄어들고 열이 발생할 위험이 있습니다.

Ergo는 달리는 속도가 빠를수록 더 많은 열이 축적 될 수 있습니다. 그렇기 때문에 PC CPU에는 큰 팬이 있습니다. 너무 빨리 전환하여 칩에서 열을 충분히 빨리 방출 할 수 없으므로 도움이 필요합니다.

칩의 최고 정격 속도는 유효한 작동 조건 (예 : 주변 온도, 예를 들어 최대 85 ° C 또는 105 ° C)에서 칩이 열 축적을 안정적으로 분산시킬 수 있도록 선택됩니다. 해당 주파수를 초과하면 칩이 과열 될 수 있습니다.

그렇습니다. 방열판 및 팬과 같은 도움이 필요한 경우 의도 한 것보다 더 빠르게 칩을 ​​작동시킬 수 있으며 주변에 공기 흐름이 원활하게 이루어 지도록 할 수 있습니다. 그러나 여름의 따뜻한 날에는 겨울 내내 완벽하게 작동하는 장치가 갑자기 이상한 일을 시작한다는 것을 알 수 있습니다.

고려해야 할 또 다른 사항은 슬 루율입니다. 클럭 신호 (및 기타 신호)도 원하는 수준으로 상승 또는 하강하는 데 시간이 걸립니다. 칩 내부가 클럭 신호가 LOW에서 HIGH로 상승하는 데 15ns가 걸리고 42ns (24MHz)와 같은 HIGH주기의 주파수에서 클럭을 시도하면 27ns의 유효한 클록 만 남는 경우 남은 기간. 실제로 클럭의 64 %에 해당하는 클럭 신호입니다. 나머지는 쓰레기입니다. IO 핀과 동일합니다. SPI 클록 출력과 같은 것은 IO 핀의 슬 루율에 의해 제한되므로 칩을 오버 클로킹하여 SPI를 더 빠르게 얻으면 클록 출력에서 ​​기대할 수있는 멋진 구형파와 같이 항상 계획대로 진행되지는 않습니다. 더 이상 사각형이 아닙니다.


1

일부 전압 / 온도 조합에서는 장치가 작동하지 않을 수 있습니다.


그것은 주어진 않는 , 약간의 전압 / 온도 (3.3V 및 25C)에서 작업을 바로 경계가 아니라 결정의 정격 주파수에 따라 동작 클럭을합니까? "작동하지 않을 수 있습니다"는 굉장히 모호합니다 ...
vicatcu

@vicatcu- " 정확히 모호한 것은 당신이 얻는 스펙입니다."작동하지 않을 수도 있습니다 "는 ** 정확하게 스펙입니다. 경계에서 작동합니다. 따라서 약간의 안전 여유가 있는지 확인할 수 있습니다. ...
Russell McMahon

haha yea, 나는 사양에서 디자인하지 않았다. 나는 이것을 조금 도발적으로 요구했다
vicatcu

@vicatcu : 때로는 명목상 사양을 벗어난 설계를 피하는 것이 거의 불가능 해 보입니다. 예를 들어 두 장치가 VOut (Max) 및 VIn (Max)를 모두 VDD로 지정하고 한 장치가 각 장치의 출력을 다른 장치의 입력에 연결하는 경우 동일한 레일에 연결되어 있어도 한 장치에서 순간 과도 전류로 인해 VDD가 다른 장치의 전압 출력보다 마이크로 볼트 아래로 떨어지지 않도록하는 방법을 확인하십시오. 그렇게하면 지정된 작동 조건을 초과하여 입력이 VDD를 초과해서는 안됩니다.
supercat

1
@vicatcu : 물론, 대부분의 엔지니어는 장치를 물리적으로 구성하는 방식이 그러한 것들에 대해 최소한 몇 밀리 볼트의 공차를 거의 보장 할 것이라고 생각하지만 많은 데이터 시트에 대해서는 명시하지 않습니다. 이유가 확실하지 않습니다. 오늘날 부품이 문제없이 수용 할 수있는 것에 가까운 것을 지정하지 않으려는 제조업체는 이해할 수 있지만 무언가를 지정하지 않으면 아무것도 지정하지 않는 것이 좋습니다.
supercat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.