프로세서는 어떻게 클럭 속도를 제어합니까?


12

최근에 회로에 2 개의 발진기가있는 STM 프로세서를 발견했습니다. 하나는 고속 작동 용이고 다른 하나는 저전력 용입니다.

클럭 속도를 원하는 주파수 (이유 내에서)로 변경할 수있는 데스크탑 프로세서와 같은 경우- 물리적으로 어떻게 수행합니까?


1
alex의 답변에서 알 수 있듯이 최신 데스크톱 CPU 주파수는 지속적으로 변하지 않습니다. 일반적으로 100 또는 133MHz 단계로 진행됩니다. (관련 : 최신 x86 CPU 주파수 변경시기, 최대 정격 속도 이상의 "터보"또는 OS가 CPU에 대한 전원 관리를 완전히 제어하는 ​​경우 (Intel Skylake)를 결정하는 방법 : SKL에 온 다이 주파수 결정을하기 위해 486만큼 많은 트랜지스터를 가진 마이크로 컨트롤러 : 왜이 지연 루프가 수면없이 여러 번 반복 한 후에 더 빨리 실행되기 시작합니까?
Peter Cordes

답변:


21

이것은 위상 고정 루프 또는 PLL 이라는 장치를 사용하여 수행됩니다 . 기본 PLL의 블록 다이어그램은 다음과 같습니다.

개략도

이 회로 시뮬레이션CircuitLab을 사용하여 작성된 회로도

마더 보드의 발진기는 CPU 클록 주파수에서 실행되지 않고 대신 100 MHz 정도의 주파수에서 실행됩니다. 이 발진기는 알려진 안정적인 기준 주파수로만 사용됩니다. CPU 내부에서 실제 클록 주파수는 전압 제어 발진기 또는 VCO에 의해 생성됩니다 . VCO는 비교적 넓은 범위에 걸쳐 주파수를 생성하도록 조정될 수 있지만, 그 자체로는 특히 안정적이거나 정확하지는 않습니다. 주어진 제어 전압의 경우 주파수는 부품마다, 공급 전압 및 온도에 따라 달라질 수 있습니다. 그러면 위상 잠금 루프는 VCO 출력 주파수를 기준 주파수와 특정 관계로 잠그는 역할을합니다.

fPFD=fref/D=fout/Mfout=frefM/D

예를 들어 기준 주파수가 100MHz이고 기준이 1 (D)로, VCO가 30 (M)으로 나뉜다 고 가정합니다. 결과적으로 100 MHz * 30/1 = 3 GHz의 출력 주파수가 발생합니다. 이 관계는 분배기 설정을 간단히 변경하여 변경할 수 있으며 제어 레지스터를 통해 소프트웨어에서 수행 할 수 있습니다. 즉석에서 주파수를 변경하는 것만으로는 분배기 값을 변경하는 것만 큼 간단하지 않을 수 있습니다. CPU가 너무 짧은 '글리치'또는 클럭 펄스를 보지 않도록 주파수를 변경해야합니다. PLL이 새로운 주파수에서 안정화 될 때까지 2 개의 PLL을 사용하여 이들 사이를 전환하거나 클록을 일시적으로 정지 시키거나 다른 클록 소스로 전환해야 할 수도 있습니다.

PLL은 고정 된 안정적인 기준으로부터 정확하고 쉽게 튜닝 가능한 주파수를 생성하기 위해 모든 곳에서 사용됩니다. Wi-Fi 카드 및 Wi-Fi 라우터는이를 사용하여 변조 된 데이터를 상향 변환 및 하향 변환하기 위해 라디오 내부에서 사용되는 신호 인 로컬 발진기 주파수를 생성하여 적절한 채널을 선택합니다. FM 라디오는 하나를 사용하여 수신 주파수를 소프트웨어로 제어하여 다른 방송국을 쉽게 호출 할 수 있습니다. PLL은 또한 이더넷, PCI Express, 직렬 ATA, Firewire, USB, DVI, HDMI, DisplayPort 및 기타 여러 최신 직렬 프로토콜을위한 직렬 변환기 및 직렬 변환기를 구동하는 데 사용되는 고주파수 클록 신호를 생성하는 데 사용됩니다.


7

이전 답변 외에도 ...

STM micro에는 거의 실시간 클럭을위한 두 번째 오실레이터가 있습니다. 이를 통해 칩의 나머지 부분과 회로의 전원이 꺼진 상태에서 클록이 계속 작동합니다 (최소 전력 소비). 그러면 장치는 시계와 달력을 계속 작동시킬 수 있으며 일반적으로 내장형 장치에 유용한 모든 타이머에서 메인 프로세서를 다시 시작할 수도 있습니다.


실시간 클록은 일반적으로 메인 클록보다 훨씬 느리며 (32kHz가 일반적 임), 이로 인해 실시간 클록 발진기와 부착 된 회로는 매우 낮은 전류 소비를 가질 수 있습니다.
mkeith

@mkeith 낮은 클럭 속도는 중요하지만, 대부분의 프로세서가 꺼져 있기 때문입니다.
Graham

Graham, 원래 질문은 왜 두 개의 오실레이터가 있는지에 관한 것입니다. 원칙적으로 하나의 발진기로만 부분 셧다운을 수행 할 수 있으며 그렇게하면 많은 전력을 절약 할 수 있습니다. 두 번째 저속 발진기가있는 이유는 동적 전력 소비가 클록 주파수와 선형으로 상관되기 때문입니다. 따라서 32kHz 회로의 동적 전력 소비는 10MHz 회로의 동적 전력 소비보다 약 300 배 적습니다. 제 생각에는 클럭 속도 감소가 답의 중요한 부분입니다.
mkeith

@mkeith "주요"가 아닙니다. RTC가있는 모든 칩에서 정확히 작동하는 방식입니다. 물론 RTC 부품은 저속 발진기를 사용하여 속도를 절약합니다. 그러나 RTC 부분 은 더 빠른 발진기 클록을 사용 하지 않습니다 . 동일한 실리콘 부분에서 완전히 분리 된 회로입니다. 마찬가지로 나머지 칩 은 더 느린 오실레이터 클럭을 사용 하지 않습니다 . RTC 자체가 있는지, 느린 클럭 속도로 실행하여 적은 전력을 사용하지만 전체 칩의 나머지 부분은 100 % 전원이 꺼져 제로 전류를 취하고있다 (물론, 누설 전류를 나노 암페어 그러나 그것이 다입니다).
Graham

1
@mkeith Sure, 그리고 나는 동의한다 (RTC 결정의 주파수는 역사적으로 전자 제품의 전력 절약이 아니라 시계와 시계의 석영 전자 기계 운동에서 비롯되었지만). 저는 느린 클럭이 메인 프로세서의 "저전력"모드가 아니라 완전히 별개의 주변 장치를위한 것임을 OP에 분명히 밝히고 싶었습니다.
Graham

0

매우 신중하게 !

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

CPU에는 바이너리 프로그램 앰블 프리 스칼라와 VCO가있는 PLL이있어 카운터를 구동하여 프런트 사이드 버스, FSB 클럭 (100MHz)을 곱합니다.
이 동적 절전 모드는 올바른 CPU 드라이버, CPU, OS 및 BIOS에서 CPU 사용량이 적을 때 자동으로 선택됩니다.

내 i7 (8cpu)은 3101 MHz에서 800 MHz로 바뀌고 즉시 1100, 1300,1500 ... 단계

Bios가 내 경우와 같이 x31을 선택하면 CPU가 100MHz x 3100MHz에서 실행되고 CPU의 이진 카운터로 x8에서 x15를 선택하여 0.9V에서 CPU 칩 전압을 조정하는 동시에 CPU 전력을 줄입니다. 전력을 절약하기 위해 모든 지역.

CPU 8.1 및 메모리 %와 함께 Win8.1의 오른쪽 상단 모서리에 커서로 표시 할 수 있습니다

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.