Dalam CPU, apakah kecepatan perhitungan mempengaruhi panas yang dihasilkan?


9

Ambil contoh CPU yang mampu mengubah kecepatan clock-nya, seperti CPU komputer modern (Intel, AMD, apa pun). Ketika melakukan perhitungan tertentu pada kecepatan clock tertentu, apakah itu menghasilkan jumlah panas yang sama seperti ketika melakukan perhitungan yang sama pada kecepatan clock yang lebih lambat? Saya tahu bahwa pembuangan panas dan penumpukan panas adalah masalah yang berbeda, jadi mari kita bicara tentang panas mentah yang dihasilkan.


Perhitungan yang dibuat dengan kecepatan lebih tinggi membutuhkan waktu yang lebih singkat.
Eugene Sh.

4
Di komputer yang ideal dalam arti Landauer , saya pikir perhitungannya akan menghasilkan jumlah energi panas yang sama. Tetapi di komputer dunia nyata, itu mungkin akan berbeda. Terutama karena jumlah panas yang telah dihasilkan dan belum hilang (yaitu suhu semikonduktor) akan mempengaruhi sifat-sifatnya dan dengan demikian panas yang dihasilkannya.
Pos Gizi

Tentu saja, saya telah merancang beberapa desain FPGA dan kami membutuhkannya agar berdaya rendah. Oleh karena itu, kami menggunakan sumber clock 10kHz bukan sumber 1MHz karena kami tidak membutuhkan banyak kekuatan pemrosesan.
lucas92

2
Konsumsi daya dinamis sebanding dengan kuadrat frekuensi clock dalam ckts sinkron. Jadi panas juga harus meningkat.
Mitu Raj

1
@MITURAJ, konsumsi daya dinamis sebanding dengan kecepatan clock. Tidak kuadrat dari kecepatan clock. Sebanding dengan kuadrat tegangan.
mkeith

Jawaban:


14

Selain kecepatan clock, perlu diingat bahwa dalam CPU "besar" yang nyata (yang memiliki cache, MMU, TLBs, eksekusi jaringan pipa, SIMD, dll.) Faktor penting lain dari berapa banyak panas yang dihasilkan adalah seberapa baik aliran instruksi menggunakan sumber daya CPU yang tersedia. Jika Anda menjalankan program yang intensif-memori, sebagian besar waktu CPU hanya akan kelaparan untuk data, tidak melakukan apa-apa, sehingga panas yang dihasilkan akan relatif rendah. Kode komputasi murni dengan loop ketat akan memanaskan lebih banyak. Bahkan lebih banyak panas dapat dihasilkan dengan kode yang dioptimalkan dengan ketat yang hampir tidak menimbulkan kesalahan prediksi cabang, menggunakan unit SIMD secara intensif, membuat penggunaan cache yang optimal dan sebagainya.

Ada beberapa program yang dirancang khusus untuk mengoperasikan CPU dalam mode ini - menekankan sebanyak mungkin, Prime95 menjadi contoh utama untuk PC.

Bahkan, jika PC sudah menjalankan Prime95 pada semua core CPU yang tersedia, dan kemudian Anda secara bersamaan memulai aplikasi intensif CPU lainnya (mis., Rendering 3D), Anda akan melihat bahwa CPU menjadi dingin . Ini karena ia harus timeshare kode Prime95 yang sangat berat (yang "menerangi semua transistor" ) dengan kode rendering permintaan yang relatif lebih rendah (yang kemungkinan memiliki banyak cache yang hilang dan salah duga cabang - yang memungkinkan CPU berhenti untuk sebentar dan dinginkan).

Hal lain yang harus Anda perhatikan adalah bahwa biasanya setiap CPU memiliki tabel dengan kecepatan clock yang diijinkan, dan voltase inti yang terkait dengan setiap kecepatan. Jam yang lebih rendah juga cocok dengan tegangan yang lebih rendah, karena pabrikan telah menentukan bahwa CPU akan stabil pada tegangan itu. Konsumsi daya bervariasi secara linear dengan kecepatan clock, tetapi secara kuadratik dengan tegangan.


1
Daya bervariasi secara kuadratik vs tegangan untuk kecepatan clock yang diberikan . Biasanya Anda menggunakan tegangan untuk memvariasikan laju jam secara linear. Akibatnya, daya kubik vs tegangan, sedangkan kecepatan clock linier. Jadi konsumsi daya kuadratik vs kecepatan clock.
MooseBoys

SIMD dapat menghasilkan begitu banyak panas sehingga beberapa CPU terlalu panas saat menggunakan AVX512 secara luas. +1 untuk menunjukkan bahwa peningkatan tegangan juga relevan.
hutan

1
@ MooseBoys, benar, poin yang sangat bagus. Tetapi perlu menunjukkan bahwa dalam kenyataan, jika CPU berkecepatan penuh memiliki Vcore = 1.2V, mengurangi separuh kecepatan clock tidak akan memungkinkan untuk Vcore = 0.6, itu tidak akan berhasil :)
anrieff

@ Alan saya mungkin salah ingat, tapi saya pikir beberapa chip Intel modern akan turun hingga 0.8V atau lebih saat idle. Mereka hanya di ~ 700MHz pada titik itu, dan cache mungkin dimatikan.
mbrig

Masalahnya adalah mereka tidak mendekati 0V, seperti yang mungkin diharapkan jika kecepatan jam CPU dan Vcore proporsional. Ini lebih seperti 3.5GHz@1.2V dan 0.7GHz@0.8V. Pengurangan dalam kecepatan memiliki lebih banyak efek pada disipasi daya daripada tegangan, bahkan jika yang pertama mempengaruhi itu "hanya" secara linear.
anrieff

5

Daya yang dikonsumsi sebanding dengan laju transisi jam dan kerugian konduksi dengan mengganti gerbang kapasitor yang efektif. Namun kenaikan suhu sebanding dengan daya yang dikonsumsi kali tahan panas yang efektif, dalam derajat C per watt dan karenanya tidak bergantung pada energi, atau lebih tepatnya dapat berjalan lebih dingin atau lebih panas tergantung pada konsumsi daya dan tidak menyebarkan daya tersebut dalam periode waktu yang lebih lama. Mungkin ada rumus yang menunjukkan bahwa kenaikan suhu dengan kecepatan clock adalah beberapa kekuatan daya pecahan lebih besar dari satu.


4
  • Watt akan lebih rendah pada frekuensi operasi yang lebih rendah.

  • Pada tegangan inti yang sama energi total akan lebih tinggi pada frekuensi clock yang lebih rendah.

  • Tetapi jika tegangan inti disesuaikan ke bawah dengan frekuensi maka energi total mungkin lebih sedikit.

  • Untuk algoritma yang menghabiskan sebagian besar waktu mereka menunggu operasi I / O, waktu eksekusi akan mendekati konstan terlepas dari frekuensi clock inti. Oleh karena itu total energi yang diperlukan untuk perhitungan akan naik sebanding dengan frekuensi clock.


    Konsumsi daya CPU terdiri dari dua bagian.

1) Gambar arus statis (I_static). Untuk beberapa tegangan dan suhu suplai tertentu, penarikan arus ini konstan terlepas dari apa yang dilakukan CPU.

CPU yang dibuat menggunakan teknologi CMOS terdiri dari ribuan atau jutaan transistor MOSFET. Penarikan arus statis terutama disebabkan oleh gabungan arus bocor dari jutaan transistor MOSFET.

  • Gambar arus statis biasanya meningkat dengan meningkatnya tegangan suplai.

  • Gambar arus statis biasanya meningkat dengan meningkatnya suhu CPU.

  • Undian arus statis untuk banyak perangkat jauh lebih kecil daripada undian arus dinamis.

2) Gambar arus dinamis. Untuk prosesor yang dibangun menggunakan proses CMOS, arus dinamis terjadi ketika transistor beralih antara kondisi on / off.

  • Untuk tegangan suplai yang ditentukan, gambar arus dinamis biasanya berbanding lurus dengan frekuensi.

  • Draw arus dinamis meningkat dengan meningkatnya tegangan suplai.

Alasannya adalah sebagai berikut. Setiap transistor MOSFET dalam CPU memiliki sejumlah kapasitansi yang terkait dengannya. Setiap kali MOSFET beralih; biaya Q = C * V diperlukan untuk mengisi / melepaskan kapasitansi itu.

Undian arus dinamis untuk setiap transistor adalah I_dynamic = C * V * f.

Terlepas dari frekuensi berapakah instruksi dieksekusi, serangkaian operasi tertentu pada CPU tertentu (dengan asumsi perilaku yang identik dari cache, dan memori) mengkonsumsi sejumlah total muatan (Q_program) karena penarikan arus dinamis, terlepas dari frekuensi bahwa instruksi dieksekusi pada.

Tetapi jika instruksi dieksekusi lebih lambat maka total muatan akibat arus statis akan lebih tinggi karena lebih banyak waktu telah berlalu.

Secara matematis orang bisa menulis ...

W = (I_dynamic + I_static) * V_supply

E = W * waktu = Q_program * V_supply + I_static * V_supply * waktu

Kita dapat melihat bahwa ketika frekuensi clock mendekati 0 watt akan mendekati nilai tetap, tetapi energi yang diperlukan untuk menghitung program mendekati tak terbatas.

Jadi jika (berdasarkan kapasitansi dari transistor CPU) Q_program diperbaiki untuk tegangan suplai tertentu dan serangkaian operasi, bagaimana CPU modern menghemat daya dengan menurunkan frekuensi clock mereka? Jawabannya adalah bahwa sebagian besar CPU modern termasuk onboard (atau dalam chip pendamping) pengatur tegangan inti yang dapat disesuaikan. Ketika mereka menurunkan frekuensi clock mereka, mereka juga dapat menurunkan tegangan inti mereka. Q_program (dan E_program) kemudian turun secara proporsional dengan tegangan suplai.

Perhatikan bahwa CPU tidak dapat menggunakan tegangan yang lebih rendah pada frekuensi yang lebih tinggi karena pada tegangan yang lebih rendah waktu switching transistor meningkat.

Watt sebanding dengan tegangan (kuadrat) dan arus yang mengalir. Jadi jika tegangan turun bersamaan dengan frekuensi maka watt turun dengan kubus frekuensi.


1

Transistor menggunakan energi, yang terbuang sebagai panas. Ada dua mekanisme, energi statis dan dinamis. Energi statis adalah konstan, dan energi dinamis (switching) terjadi setiap kali ia berubah keadaan (0 -> 1 atau 1 -> 0). Energi dinamis (switching) biasanya merupakan sumber panas yang lebih besar daripada energi statis. Perhitungan yang ingin Anda lakukan akan mengambil jumlah siklus clock yang sama, dan menyebabkan jumlah bit transistor yang sama untuk flip terlepas dari kecepatan clock. Karenanya panas dinamis adalah sama untuk kedua situasi. Panas statis adalah ... statis. Jadi secara ringkas, dengan asumsi CPU HANYA melakukan perhitungan 1 ini maka konsumsi energi / panas persis sama ketika dirata-rata selama periode waktu tertentu.


Anda mengendarai tepi kebenaran, tetapi saya akan membiarkannya berlalu. Tingkat energi untuk CMOS naik hampir dalam garis linier dengan frekuensi operasi, tetapi menggandakan tegangan dan energi empat kali lipat. Persamaan I2R jahat, tidak termasuk kecepatan.
Sparky256

OP bertanya murni tentang kecepatan clock, tidak menyebutkan pengurangan voltase.
TopCat

Jawaban di atas menyebutkan penalti untuk voltase inti. Saya tidak menyiratkan Anda perlu menjawab masalah itu. Saya hanya membuat komentar - di kotak komentar.
Sparky256

Pertanyaannya adalah tentang PANAS (diukur dalam Joule), bukan kekuatan atau suhu. Panas adalah bentuk energi. Kecuali untuk sejumlah kecil energi yang diterima dari sumber input dan dikirim ke beban keluaran, semua energi yang dikonsumsi dalam perangkat akan menjadi panas dan pada akhirnya akan hilang. Dalam logika CMOS, konsumsi energi menghasilkan panas ketika keadaan mesin berubah - biasanya sekali per siklus jam pada saat itu ketika gerbang berada di tengah-tengah antara 0 dan 1. Jadi PANAS untuk tugas yang diberikan harus independen dari kecepatan jam dan benar-benar tergantung pada jumlah siklus jam.
richard1941

1

Dalam skenario yang Anda jelaskan, energi yang diperlukan untuk perhitungan tidak tergantung pada kecepatan jam. Tetapi panas bisa menjadi istilah "empuk". Katakanlah perhitungannya membutuhkan 1 Joule. Jika Anda melakukannya dalam 1 detik, itu adalah 1 Joule / detik = 1 Watt. Tetapi jika dibutuhkan 2 detik, itu adalah 1 Joule / 2sec = 0,5 Joule / detik = 0,5 Watt.

Prosesor pasti akan mencapai suhu yang lebih tinggi jika perhitungan dilakukan lebih cepat, karena energinya dilepaskan lebih cepat. Saya tidak berpikir ada banyak gunanya saya mengatakan lebih dari itu.

Oh, kecuali bahwa angka yang saya berikan kepada Anda tidak dimaksudkan untuk realistis. Itu hanya konsepnya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.