Jak procesory kontrolują częstotliwość taktowania?

12

Niedawno natknąłem się na procesor STM z 2 oscylatorami w obwodzie - przypuszczam, że jeden do pracy z dużą prędkością, a drugi do małej mocy.

W przypadku czegoś takiego jak procesor stacjonarny, w którym szybkość zegara można zmienić na dowolną żądaną częstotliwość (w granicach rozsądku) - jak to robi fizycznie ?

alex.forencich
źródło
1
Jak wskazuje odpowiedź Alexa, częstotliwość współczesnego procesora nie zmienia się w sposób ciągły. Zazwyczaj przebiega w krokach co 100 lub 133 MHz. (Powiązane: w jaki sposób nowoczesny procesor x86 decyduje, kiedy zmienić częstotliwość, dla „turbo” powyżej maksymalnej prędkości znamionowej lub jeśli system operacyjny zapewnia pełną kontrolę nad zarządzaniem mocą procesora (Intel Skylake): SKL ma matrycę mikrokontroler z jak wiele tranzystorów jak 486 nie tylko do podejmowania decyzji częstotliwość: Dlaczego to opóźnienie pętli zacząć działać szybciej po kilku iteracjach bez snu?
Peter Cordes

Odpowiedzi:

21

Odbywa się to za pomocą urządzenia zwanego pętlą fazową lub PLL. Oto schemat blokowy podstawowej PLL:

schematyczny

symulacja tego obwodu - Schemat utworzony przy użyciu CircuitLab

Oscylator na płycie głównej nie działa z częstotliwością taktowania procesora, zamiast tego działa z częstotliwością rzędu 100 MHz. Ten oscylator służy jedynie jako znana, stabilna częstotliwość odniesienia. Wewnątrz procesora rzeczywista częstotliwość zegara będzie generowana przez oscylator sterowany napięciem lub VCO. VCO można dostroić, aby generować częstotliwości we względnie szerokim zakresie, ale sam w sobie nie jest szczególnie stabilny ani dokładny - dla danego napięcia sterującego częstotliwość będzie się zmieniać w zależności od części oraz z napięciem i temperaturą zasilania. Pętla synchronizowana fazowo służy następnie do blokowania częstotliwości wyjściowej VCO w określonej relacji z częstotliwością odniesienia.

Wyjścia zarówno oscylatora odniesienia, jak i VCO są dzielone przez programowalne dzielniki (ze współczynnikiem D dla odniesienia i M dla wyjścia VCO), a następnie porównywane z detektorem fazy i częstotliwości (PFD). Wyjście PFD jest filtrowane i wykorzystywane do sterowania VCO. Tworzy to pętlę sterującą znaną jako pętla synchronizacji fazowej, ponieważ służy do napędzania fazy podzielonego VCO w celu zrównania się z fazą podzielonego odniesienia. Na wejściu PFD, częstotliwość będzie . Wynikiem jest częstotliwość wyjściowa o określonym matematycznym związku z częstotliwością odniesienia,f o u t = f r e fM / DfPFD=fref/D=fout/Mfout=frefM/D. Jak widać w tym równaniu, dzielnik częstotliwości na wyjściu VCO powoduje pomnożenie częstotliwości odniesienia przez jej współczynnik podziału. W ten sposób PLL może skutecznie generować znacznie wyższe częstotliwości niż częstotliwość odniesienia.

Załóżmy na przykład, że częstotliwość odniesienia wynosi 100 MHz, wartość odniesienia jest podzielona przez 1 (D), a VCO jest podzielone przez 30 (M). Dałoby to częstotliwość wyjściową 100 MHz * 30/1 = 3 GHz. Zależność tę można zmienić, zmieniając po prostu ustawienia dzielnika, co można zrobić w oprogramowaniu za pomocą rejestrów kontrolnych. Należy pamiętać, że zmiana częstotliwości w locie może nie być tak prosta, jak zmiana wartości dzielnika, częstotliwość musi zostać zmieniona w taki sposób, aby procesor nie widział żadnych „trzasków” lub zbyt krótkich impulsów zegarowych. Może być konieczne użycie 2 PLL i przełączanie się między nimi, lub tymczasowe zatrzymanie zegara lub przełączenie na inne źródło zegara, aż PLL ustabilizuje się na nowej częstotliwości.

PLL są używane wszędzie, aby generować precyzyjne, łatwe do strojenia częstotliwości na podstawie stałych, stabilnych wartości odniesienia. Twoja karta Wi-Fi i router Wi-Fi używają ich do wyboru odpowiedniego kanału, generując tak zwaną częstotliwość lokalnego oscylatora, sygnał używany wewnątrz radia do konwersji i konwersji danych modulowanych w dół. Twoje radio FM najprawdopodobniej używa jednego z nich, aby umożliwić programową kontrolę częstotliwości odbioru, umożliwiając łatwe przywoływanie różnych stacji. PLL są również wykorzystywane do generowania sygnałów zegara wysokiej częstotliwości używanych do sterowania serializatorami i deserializatorami dla Ethernetu, PCI express, serial ATA, Firewire, USB, DVI, HDMI, DisplayPort i wielu innych nowoczesnych protokołów szeregowych.

alex.forencich
źródło
7

Oprócz poprzednich odpowiedzi ...

Twój STM micro prawie na pewno ma drugi oscylator dla zegara czasu rzeczywistego. Pozwala to zegarowi działać (zużywając minimalną moc), podczas gdy reszta układu i reszta obwodu są wyłączone. Urządzenie może wtedy utrzymywać włączony zegar i kalendarz, i zwykle może również ponownie uruchomić główny procesor na zegarze - wszystkie przydatne rzeczy dla urządzeń osadzonych.

Graham
źródło
Zegar czasu rzeczywistego jest zwykle znacznie wolniejszy niż zegar główny (typowo 32 kHz), dlatego oscylator zegara czasu rzeczywistego i podłączony obwód mogą mieć bardzo niski pobór prądu.
mkeith 16.04.18
@mkeith Niska prędkość zegara jest ważna, jasne, ale przede wszystkim dlatego, że prawie cały procesor jest wyłączony.
Graham
Graham, pierwotne pytanie dotyczy tego, dlaczego istnieją dwa oscylatory. Zasadniczo możesz mieć częściowe wyłączenie za pomocą tylko jednego oscylatora i zaoszczędzić w ten sposób dużo energii. Powodem istnienia drugiego oscylatora o niższej prędkości jest to, że dynamiczny pobór mocy jest liniowo skorelowany z częstotliwością zegara. Dynamiczny pobór mocy w obwodzie 32 kHz będzie około 300 razy mniejszy niż dynamiczny pobór mocy w obwodzie 10 MHz. Moim zdaniem zmniejszona częstotliwość zegara jest ważną częścią odpowiedzi.
mkeith
@mkeith Nie jest to „zasadnicze” - dokładnie tak działa na każdym układzie z RTC. Oczywiście część RTC wykorzystuje oscylator o niższej prędkości, aby zaoszczędzić prędkość. Ale część RTC nigdy nie używa szybszego zegara oscylatora - jest to całkowicie oddzielny obwód na tym samym kawałku krzemu; podobnie reszta układu nigdy nie używa wolniejszego zegara oscylatora. Sama RTC zużywa mniej energii, pracując z mniejszą częstotliwością zegara , oczywiście , ale cała reszta układu jest w 100% wyłączona i pobiera zerowy prąd (cóż, nanoampery prądu upływu, ale to wszystko).
Graham,
1
@mkeith Sure i ja się zgadzam (chociaż częstotliwość kryształów RTC historycznie pochodzi z kwarcowych elektromechanicznych ruchów w zegarach i zegarkach, a nie z oszczędzania energii w elektronice). Chciałem tylko wyjaśnić dla OP, że wolniejszy zegar nie jest przeznaczony do trybu „niskiego poboru mocy” na głównym procesorze - jest dla całkowicie oddzielnego urządzenia peryferyjnego.
Graham
0

bardzo ostrożnie !

wprowadź opis zdjęcia tutaj

Procesory mają binarne programowalne preskalary i PLL z VCO do sterowania licznikiem, dzięki czemu zwielokrotnia on magistralę FSB zegara (powiedzmy 100 MHz).
Ten tryb dynamicznego oszczędzania energii jest automatycznie wybierany, gdy użycie procesora jest niskie przy odpowiednich sterownikach procesora, procesorze, systemie operacyjnym i systemie BIOS.

Mój i7 (8 CPU) przechodzi z 3101 MHz na 800 MHz i natychmiast wykonuje kroki 1100, 1300,1500 ... itd.

Jeśli Bios wybierze x31, jak w moim przypadku, wówczas procesor pracuje z częstotliwością 100 MHz x 3100 MHz, a przy liczniku binarnym w procesorze wybierz od x8 do x15, aby zmniejszyć moc procesora w tym samym czasie, gdy reguluje napięcie układu procesora w 0,9 V. region wszystko w celu oszczędzania energii.

Mogę wyświetlić kursorem w prawym górnym rogu na Win8.1 wraz z% procesora i% pamięci

wprowadź opis zdjęcia tutaj

Tony Stewart Sunnyskyguy EE75
źródło