Bagaimana cara CPU mengubah frekuensi clock secara dinamis?

16

CPU Intel saya mengubah kecepatan jam tergantung pada penggunaan, tetapi bagaimana cara menentukan kecepatan jam untuk dijalankan? Apakah kecepatan jam ditentukan oleh perangkat lunak OS menggunakan algoritma, atau apakah itu berbasis perangkat keras? Apakah ini tergantung pada # interupsi? Pergantian cache? Apakah CPU itu sendiri mengatur jamnya sendiri? Atau apakah pengontrol terpisah mengaturnya? Atau perangkat lunak?

Chloe
sumber
1
CPU apa itu? Sistem tertanam biasanya tidak berfungsi seperti itu.
Leon Heller
Mungkin ada sesuatu yang lebih untuk SuperUser ?
Beberapa keluarga prosesor tertanam, seperti katakanlah PIC24F, memiliki laju jam yang dapat diprogram, dan ini dapat digunakan untuk menghemat daya. Osilator eksternal dapat digunakan sehingga jam untuk periferal yang peka terhadap waktu tetap stabil.
Kaz

Jawaban:

18

Jam inti CPU tidak diterima langsung dari motherboard. Jam itu biasanya jauh lebih lambat (sering kali dengan faktor 10 atau lebih) daripada frekuensi internal CPU. Sebagai gantinya, sinyal clock dari motherboard digunakan sebagai frekuensi referensi untuk osilator dikontrol fase-frekuensi yang lebih tinggi di dalam CPU. Jam yang dihasilkan bekerja pada beberapa jam referensi, dan jam multipel itu dapat diubah dengan mengatur register tertentu di CPU. Generasi aktual dari jam dilakukan sepenuhnya dalam perangkat keras.

Untuk mengurangi daya lebih jauh, CPU juga memberi sinyal ke regulator tegangan yang memasok tegangan intinya untuk bekerja pada titik setel yang lebih rendah. Pada frekuensi yang lebih rendah, CPU dapat berjalan pada voltase yang lebih rendah tanpa malfungsi, dan karena konsumsi daya sebanding dengan kuadrat voltase, bahkan pengurangan voltase yang kecil dapat menghemat sejumlah besar daya.

Penskalaan voltase dan frekuensi dilakukan oleh perangkat keras, tetapi keputusan untuk menjalankan dalam mode daya rendah dibuat oleh perangkat lunak (OS). Bagaimana OS menentukan mode optimal untuk dijalankan adalah masalah yang terpisah, berantakan, tetapi sebagian besar tergantung pada berapa% waktu sistem menganggur akhir-akhir ini. Sebagian besar menganggur, turunkan frekuensinya. Paling sibuk, naikkan frekuensinya. Setelah OS memutuskan frekuensi untuk dijalankan, itu hanya masalah pengaturan register.

Referensi: " Teknologi Intel SpeedStep yang Ditingkatkan untuk Prosesor Intel Pentium M "

Theran
sumber
3
Fitur-fitur seperti Intel Turbo Boost tidak memerlukan intervensi perangkat lunak untuk mengeksploitasi ruang kepala termal dengan meningkatkan frekuensi clock. Jelas, perangkat keras juga dapat melacak kemacetan kinerja non-komputasi (misalnya, dengan menghitung siklus berhenti karena akses memori) dan mengurangi frekuensi ketika menghitung kinerja bukan hambatan utama.
Paul A. Clayton
Namun penghematan sehubungan dengan pengalihan freq hampir linier dan tidak sebanyak karena konduksi, yang akan menjadi hubungan yang baik
JonRB
3

Nah, pada sistem operasi modern ada sesuatu yang disebut "task scheduler". Ini berjalan secara berkala (sangat cepat) dan memilih (dari daftar) yang tugas berikutnya untuk dijalankan. Tugas dapat di banyak negara, seperti pilih, diblokir, tidur dll.

Jika semua tugas dalam mode pilih (menunggu sesuatu dari sistem operasi) dan tidak dapat dilayani, atau ada yang tidur dll, sehingga tidak ada penggunaan prosesor yang berat, penjadwal tugas akan menjalankan tugas khusus yang disebut "idle ".

Jika driver CPU memeriksa tabel penjadwal tugas dan memverifikasi bahwa tugas idle menjalankan sebagian besar waktu CPU, itu hanya akan mengirim perintah ke sirkuit PLL generasi clock CPU untuk mengurangi jamnya. Sebaliknya, jika tugas idle memakan waktu CPU lebih sedikit dan lebih sedikit (artinya CPU semakin sering digunakan) driver CPU akan meningkatkan Kecepatan CPU.

Tidak terlalu sulit, tetapi ada batas bawah di mana CPU tidak dapat dibatasi lebih rendah karena tidak semua CPU sepenuhnya statis (sehingga mereka membutuhkan siklus penyegaran). CPU statis sepenuhnya bisa serendah 0 (nol) MHz karena tidak ada keadaan yang hilang jika jam dihentikan.

Jorge Aldo
sumber