İşlemciler saat hızlarını nasıl kontrol ediyor?


12

Kısa bir süre önce devrede 2 osilatör bulunan bir STM işlemciye rastladım - biri yüksek hızlı çalışma için diğeri düşük güç için.

Saat hızının istenen frekansa (neden dahilinde) değiştirilebildiği bir masaüstü işlemcisi gibi bir şey için - bunu fiziksel olarak nasıl yapar ?


1
Alex'in cevabının da belirttiği gibi, modern masaüstü CPU frekansı sürekli değişken değildir. Genellikle 100 veya 133 MHz'lik adımlarla çalışır. (İlgili: Modern bir x86 CPU , maksimum nominal hızın üstünde "turbo" için frekansları ne zaman değiştireceğine veya işletim sisteminin CPU'ya (Intel Skylake) güç yönetimi üzerinde tam kontrol sağladığında nasıl karar verir: SKL'de bir kalıp var 486 kadar transistörlü mikrodenetleyici, sadece frekans kararları vermek için: Bu gecikme döngüsü, uyku olmadan birkaç tekrarlamadan sonra neden daha hızlı çalışmaya başlar?
Peter Cordes

Yanıtlar:


21

Bu, faz kilitli döngü veya PLL adı verilen bir cihaz kullanılarak yapılır . İşte temel bir PLL'nin blok şeması:

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik

Anakarttaki osilatör CPU saat frekansında çalışmaz, bunun yerine 100 MHz'lik bir frekansta çalışır. Bu osilatör yalnızca bilinen, sabit bir referans frekansı olarak işlev görür. CPU içinde, gerçek saat frekansı voltaj kontrollü bir osilatör veya VCO tarafından üretilecektir . VCO, nispeten geniş bir aralıkta frekanslar üretecek şekilde ayarlanabilir, ancak kendi başına özellikle kararlı veya doğru değildir - belirli bir kontrol voltajı için frekans, parçadan parçaya ve besleme voltajı ve sıcaklıkla değişecektir. Faz kilitli bir döngü daha sonra VCO çıkış frekansını referans frekansla belirli bir ilişkiye kilitlemeye yarar.

Hem referans osilatörün hem de VCO'nun çıkışları programlanabilir bölücülere bölünür (referans için D faktörü ve VCO çıkışı için M faktörü ile) ve daha sonra bir faz ve frekans dedektörü (PFD) ile karşılaştırılır. PFD'nin çıkışı filtrelenir ve VCO'yu çalıştırmak için kullanılır. Bu, faz kilitli döngü olarak bilinen bir kontrol döngüsü oluşturur, çünkü bölünmüş VCO'nun fazını bölünen referansın fazına eşit olacak şekilde tahrik eder. , frekans . Sonuç, referans frekansla belirli bir matematik ilişkisi olan bir çıkış frekansıdır,f o u t = f r e fM / DfPFD=fref/D=fout/Mfout=frefM/D. Bu denklemde görülebileceği gibi, VCO'nun çıkışındaki frekans bölücü referans frekansı bölme faktörü ile çarpma etkisine sahiptir. Bu şekilde bir PLL, referans frekansından çok daha yüksek frekansları etkili bir şekilde üretebilir.

Örneğin, referans frekansının 100 MHz olduğunu, referansın 1 (D) ve VCO'nun 30 (M) olarak bölündüğünü varsayın. Bu 100 MHz * 30/1 = 3 GHz çıkış frekansıyla sonuçlanır. Bu ilişki, kontrol kayıtları üzerinden yazılımda yapılabilen bölücü ayarları değiştirilerek değiştirilebilir. Anında frekansı değiştirmenin sadece bölücü değerlerini değiştirmek kadar basit olmayabileceğini, frekansın CPU'nun çok kısa 'hata' veya saat darbeleri görmeyeceği şekilde değiştirilmesi gerektiğini unutmayın. PLL yeni frekansta stabil olana kadar 2 PLL kullanmak ve bunlar arasında geçiş yapmak veya saati geçici olarak durdurmak veya başka bir saat kaynağına geçmek gerekebilir.

PLL'ler sabit, kararlı referanslardan hassas, kolayca ayarlanabilen frekanslar üretmek için her yerde kullanılır. Wi-Fi kartınız ve Wi-Fi yönlendiriciniz, modüle edilmiş verileri yukarı dönüştürmek ve aşağı dönüştürmek için telsizin içinde kullanılan bir sinyal olan yerel osilatör frekansı oluşturarak uygun kanalı seçmek için bunları kullanır. FM radyonuz büyük olasılıkla alma frekansı üzerinde yazılım kontrolünü etkinleştirmek için bir tane kullanır ve farklı istasyonların kolayca geri çağrılmasını sağlar. PLL'ler ayrıca Ethernet, PCI express, seri ATA, Firewire, USB, DVI, HDMI, DisplayPort ve diğer birçok modern seri protokol için serileştiricilerin ve serileştiricilerin sürülmesi için kullanılan yüksek frekanslı saat sinyallerini üretmek için kullanılır.


7

Önceki cevaplara ek olarak ...

STM mikro cihazınız neredeyse gerçek zamanlı saat için ikinci osilatöre sahiptir. Bu, çipin geri kalanı ve devrenin geri kalanı kapalıyken saatin çalışmaya devam etmesini sağlar (minimum güç tüketir). Cihaz daha sonra saatini ve takvimini çalışır durumda tutabilir ve tipik olarak ana işlemciyi de bir zamanlayıcıda yeniden başlatabilir - gömülü cihazlar için tüm yararlı şeyler.


Gerçek zamanlı saat genellikle ana saatten çok daha yavaştır (32kHz tipiktir) ve bu nedenle gerçek zamanlı saat osilatörü ve bağlı devre çok düşük akım tüketimine sahip olabilir.
mkeith

mkeith Düşük saat hızı önemlidir, ama esas olarak işlemcinin neredeyse tamamı kapalıdır.
Graham

Graham, asıl soru neden iki osilatör olduğu hakkında. Prensip olarak, sadece bir osilatör ile kısmi kapatma yapabilirsiniz ve bu şekilde çok fazla güç tasarrufu sağlayabilirsiniz. İkinci bir düşük hız osilatörünün nedeni, dinamik güç tüketiminin saat frekansı ile doğrusal olarak ilişkili olmasıdır. Bu nedenle, 32kHz'lik bir devrenin dinamik güç tüketimi, 10 MHz'lik bir devrenin dinamik güç tüketiminden yaklaşık 300x daha az olacaktır. Düşen saat hızı bence cevabın önemli bir parçası.
mkeith

@mkeith "Prensipte" değil - tam olarak bir RTC ile her çipte böyle çalışır. Elbette RTC parçası, hızdan tasarruf etmek için daha düşük bir hız osilatörü kullanır. Ancak RTC kısmı asla daha hızlı osilatör saatini kullanmaz - aynı silikon parçası üzerinde tamamen ayrı bir devre; ve aynı şekilde çipin geri kalanı asla daha yavaş osilatör saatini kullanmaz. RTC kendisi tabii, daha yavaş bir saat hızında çalıştırarak daha az güç kullanır, ancak tüm çip geri kalanı% 100 kapalı ve sıfır akımı alıyor ise (elbette, kaçak akımın nanoamps, ama hepsi).
Graham

1
@mkeith Sure, ve katılıyorum (RTC kristallerinin frekansı, tarihsel olarak elektronikteki güç tasarrufundan değil, saatler ve saatlerde kuvars elektro-mekanik hareketlerden geliyor olsa da). OP için daha yavaş saatin ana işlemcideki "düşük güç" modu için olmadığını açıklamak istedim - tamamen ayrı bir çevre birimi için.
Graham

0

çok dikkatli !

resim açıklamasını buraya girin

CPU'larda, sayacı çalıştırmak için ikili programlanabilir ön sıralar ve VCO'lu bir PLL vardır, böylece ön taraf veri yolu FSB saatini (100MHz diyelim) çarpar.
Bu dinamik güç tasarrufu modu, doğru CPU sürücüleri, CPU, OS ve BIOS ile CPU kullanımı düşük olduğunda otomatik olarak seçilir.

Benim i7 (8cpu) 3101 MHz'den 800 MHz'e gider ve anında 1100, 1300,1500 ... vb.

Bios benim durumumda olduğu gibi x31'i seçerse, CPU 100MHz x 3100MHz'de çalışır ve CPU'daki ikili bir sayaç ile CPU gücünü 0.9V'deki CPU çip voltajını düzenlerken aynı zamanda azaltmak için x8 ila x15 arasından seçim yapın gücü korumak için tüm bölge.

CPU% ve bellek% ile birlikte imlecimi Win8.1 üzerinde sağ üst köşede gösterebilirim

resim açıklamasını buraya girin

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.