Jak procesor może dynamicznie zmieniać częstotliwość taktowania?

16

Mój procesor Intel zmienia szybkość zegara w zależności od użycia, ale w jaki sposób decyduje, przy jakiej prędkości zegara ma działać? Czy szybkość zegara jest określana przez oprogramowanie systemu operacyjnego za pomocą algorytmu, czy też jest oparte na sprzęcie? Czy to zależy od liczby przerwań? Obrót pamięci podręcznej? Czy sam procesor ustawia własny zegar? A może ustawia go osobny kontroler? Czy oprogramowanie?

Chloe
źródło
1
Który to procesor? Systemy wbudowane zwykle tak nie działają.
Leon Heller,
Może coś więcej dla SuperUser ?
Niektóre rodziny procesorów wbudowanych, na przykład PIC24F, mają programowalne częstotliwości taktowania i można to wykorzystać do oszczędzania energii. Można użyć zewnętrznego oscylatora, aby zegar dla urządzeń peryferyjnych wrażliwych na czas pozostawał stabilny.
Kaz

Odpowiedzi:

18

Zegar rdzenia procesora nie jest odbierany bezpośrednio z płyty głównej. Ten zegar jest zwykle znacznie wolniejszy (często dziesięciokrotnie lub więcej) niż częstotliwość wewnętrzna procesora. Zamiast tego sygnał zegarowy z płyty głównej jest wykorzystywany jako częstotliwość odniesienia dla oscylatora sterowanego fazowo z wyższą częstotliwością wewnątrz procesora. Wygenerowany zegar działa na pewnej wielokrotności zegara odniesienia, a tę wielokrotność można zmienić, ustawiając określone rejestry w CPU. Rzeczywista generacja zegara odbywa się wyłącznie sprzętowo.

Aby jeszcze bardziej zmniejszyć moc, CPU sygnalizuje również regulatorowi napięcia dostarczającemu jego napięcie rdzenia, aby działał w niższej wartości zadanej. Przy niższych częstotliwościach procesor może pracować przy niższym napięciu bez wadliwego działania, a ponieważ zużycie energii jest proporcjonalne do kwadratu napięcia, nawet niewielkie obniżenie napięcia może zaoszczędzić dużą ilość energii.

Skalowanie napięcia i częstotliwości odbywa się sprzętowo, ale decyzję o uruchomieniu w trybie niskiego poboru mocy podejmuje oprogramowanie (OS). Sposób, w jaki system operacyjny określa optymalny tryb do uruchomienia, jest osobnym, bardziej chaotycznym problemem, ale najprawdopodobniej sprowadza się do tego, w jakim% czasie ostatnio system był bezczynny. Przeważnie bezczynny, zmniejsz częstotliwość. Najczęściej zajęty, zwiększ częstotliwość. Gdy system operacyjny decyduje o częstotliwości uruchamiania, wystarczy ustawić rejestr.

Odniesienie: „ Ulepszona technologia Intel SpeedStep dla procesora Intel Pentium M

Theran
źródło
3
Funkcje takie jak Turbo Boost Intela nie wymagają interwencji oprogramowania w celu wykorzystania rezerwy termicznej poprzez zwiększenie częstotliwości taktowania. Oczywiście sprzęt może również śledzić wąskie gardła w zakresie wydajności obliczeniowej (np. Poprzez zliczanie cykli utknięcia spowodowanych dostępem do pamięci) i zmniejszać częstotliwość, gdy wydajność obliczeniowa nie jest głównym wąskim gardłem.
Paul A. Clayton
Przy okazji oszczędności w zamianie częstotliwości są prawie liniowe i nie tak bardzo ze względu na przewodnictwo, które byłyby relacjami av ^ 2
JonRB
3

Cóż, w nowoczesnych systemach operacyjnych istnieje coś takiego jak „harmonogram zadań”. Działa okresowo (bardzo szybko) i wybiera (z listy), które następne zadanie ma zostać wykonane. Zadania mogą być w wielu stanach, np. Wybierz, zablokuj, śpij itp.

Jeśli wszystkie zadania są w trybie wyboru (czekają na coś z systemu operacyjnego) i nie można ich obsłużyć, lub niektóre śpią itp., Więc procesor nie wymaga dużego obciążenia, program planujący zadania wywoła specjalne zadanie o nazwie „bezczynność” „.

Jeśli sterownik CPU sprawdzi tabelę harmonogramu zadań i sprawdzi, czy bezczynne zadanie działa przez większość czasu CPU, po prostu wyśle ​​polecenie do obwodu PLL generowania zegara CPU, aby skrócić jego zegar. Wręcz przeciwnie, jeśli bezczynne zadanie zajmuje coraz mniej czasu procesora (co oznacza, że ​​procesor jest intensywnie wykorzystywany), sterownik procesora zwiększy szybkość procesora.

Nie jest to bardzo trudne, ale istnieje dolny limit, w którym procesor nie może być dławiony niżej, ponieważ nie wszystkie procesory są w pełni statyczne (więc wymagają cykli odświeżania). W pełni statyczny procesor może spaść nawet do 0 (zero) MHz, ponieważ nie ma stanu do stracenia, jeśli zegar zostanie zatrzymany.

Jorge Aldo
źródło