Apakah jam CPU benar-benar berkala?

51

Apakah frekuensi CPU nilai rata-rata tentang berapa banyak clock ticks dalam satu detik atau apakah ia memiliki stabilitas fisik yang lebih kuat?

Menurut saya, itu pasti tidak stabil atau tidak stabil. Jadi apakah ada informasi yang tersedia tentang varian untuk CPU?

Apakah durasi siklus CPU ketat disinkronkan dengan getaran kristal? Atau apakah CPU hanya harus memastikan untuk mencapai siklus sebelum kutu berikutnya?

Gael
sumber
7
Ada banyak jenis CPU. Sebagian besar menggunakan kristal yang bergetar pada frekuensi tertentu untuk mengatur waktu sendiri. Berarti sebagian besar seakurat jam tangan digital (yang menggunakan jenis kristal yang sama untuk menjaga waktu). en.wikipedia.org/wiki/Crystal_oscillator
krowe
5
@Gael beberapa instruksi mengambil ratusan kutu, atau siklus jam , untuk menyelesaikan.
misha256
1
@ David: Juga, sangat umum bagi CPU untuk memperlambat diri mereka sendiri atau mempercepat diri mereka sendiri, dan mereka cukup sering melakukannya. Meskipun saya tidak tahu persis bagaimana hubungannya dengan kutu.
Mooing Duck
18
Memilih untuk menutup ini sebagai mencari produk, layanan, atau rekomendasi bahan pembelajaran ? Benarkah orang?
CVn
30
Ini adalah pertanyaan sah yang berusaha menjelaskan cara kerja perangkat keras.
studiohack

Jawaban:

49

Seperti hal rumit lainnya, Anda dapat menggambarkan cara CPU beroperasi di berbagai tingkatan.

Pada level paling mendasar, CPU digerakkan oleh jam yang akurat. Frekuensi jam dapat berubah; pikir SpeedStep Intel. Tetapi setiap saat CPU benar-benar 100% terkunci pada sinyal clock.

Instruksi CPU beroperasi pada level yang jauh lebih tinggi. Sebuah instruksi tunggal adalah hal yang kompleks dan dapat berlangsung dari kurang dari satu siklus hingga ribuan siklus untuk diselesaikan seperti yang dijelaskan di sini di Wikipedia .

Jadi pada dasarnya suatu instruksi akan mengkonsumsi sejumlah siklus jam . Dalam CPU modern, karena teknologi seperti multiple core, HyperThreading, pipelining, caching, out-of-order, dan eksekusi spekulatif, jumlah pasti siklus clock untuk satu instruksi tidak dijamin, dan akan bervariasi setiap kali Anda mengeluarkan instruksi seperti itu. !

SUNTING

apakah ada informasi yang tersedia tentang varian untuk CPU tertentu?

Iya dan tidak. 99,99% pengguna akhir tertarik pada kinerja keseluruhan , yang dapat diukur dengan menjalankan berbagai tolok ukur.

Apa yang Anda minta adalah informasi yang sangat teknis. Intel tidak mempublikasikan informasi lengkap atau akurat tentang latensi / throughput instruksi CPU .

Ada peneliti yang mengambilnya sendiri untuk mencoba mencari tahu. Berikut adalah dua PDF yang mungkin menarik:

Sayangnya sulit untuk mendapatkan data varians . Mengutip dari PDF pertama:

angka yang tercantum adalah nilai minimum. Kehilangan cache, misalignment, dan pengecualian dapat meningkatkan jumlah jam secara signifikan.

Namun bacaan yang menarik!

misha256
sumber
1
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Sathyajith Bhat
4
Sangat bagus. Tentu saja, But at all times the CPU is absolutely 100% locked to the clock signalhanya berlaku untuk CPU sinkron. Sungguh konyol berbicara tentang kutu dalam CPU asinkron (tanpa jam), tapi rasanya seperti kelalaian bagi saya :)
Luaan
1
@Luaan - Benar. Saya pikir CPU asinkron yang benar masih sangat langka, tetapi mereka ada (atau pernah ada di masa lalu). Hanya benar-benar relevan bagi para peneliti dan geek perangkat keras.
Daniel R Hicks
@DanielRHicks Mereka sangat tertarik untuk perangkat yang disematkan (ada beberapa CPU asinkron MIPS dan ARM lama di sekitar), tapi ya, tidak benar-benar hal besar di pasar konsumen. Lagi pula, mengapa harus memperhatikan konsumsi daya CPU pada smartphone ketika ada tampilan haus daya tepat di sebelahnya. Penghematan daya (dan fitur lainnya) mungkin sangat keren untuk beberapa aplikasi lain, meskipun - IBM SyNAPSE terlihat seperti proyek keren untuk tujuan ilmiah.
Luaan
@Luaan - Poin menariknya, ketika mereka pertama kali ditemukan, adalah bahwa komputer berjalan dengan sangat cepat / lambat seperti yang diperlukan untuk melakukan perhitungan. Tetapi skema jam yang lebih rumit pada dasarnya mencapai hal yang sama, agak.
Daniel R Hicks
29

Apakah jam CPU memiliki kutu yang ketat secara berkala?

Tentu saja tidak. Bahkan jam yang sangat, sangat terbaik tidak sepenuhnya berkala. Hukum termodinamika mengatakan sebaliknya:

  • Hukum Zeroth: Ada permainan kecil yang tidak menyenangkan yang dimainkan alam semesta terhadap Anda.
  • Hukum pertama: Anda tidak bisa menang.
  • Hukum kedua: Tetapi Anda mungkin akan mencapai titik impas, pada hari yang sangat dingin.
  • Hukum ketiga: Tidak pernah dingin.

Para pengembang jam yang sangat, sangat baik berusaha sangat, sangat sulit untuk mengatasi hukum termodinamika. Mereka tidak bisa menang, tetapi mereka datang sangat, sangat dekat dengan titik impas. Jam di CPU Anda? Ini sampah dibandingkan dengan jam atom terbaik itu. Inilah sebabnya mengapa Network Time Protocol ada.


Prediksi: Sekali lagi kita akan melihat sedikit kekacauan ketika jam atom terbaik di dunia mulai dari 2015 30 Juni 23:59:59 UTC hingga 2015 30 Juni 23:59:60 UTC hingga 2015 1 Juli 2015 00:00:00 UTC. Terlalu banyak sistem tidak mengenali lompatan detik dan setel keamanannya ditetapkan menjadi dua (yang mencegah perubahan waktu lebih dari satu detik). Clock jitter dalam sistem tersebut berarti bahwa Network Time Protocol leap second akan ditolak. Sejumlah komputer akan mengalami peningkatan, seperti yang terjadi pada tahun 2012.

David Hammen
sumber
9
+1, lucu dan informatif. Dan topik Leap Second adalah bacaan yang bagus juga.
jimm-cl
9
Yah, IIRC, go-belly-up disebabkan karena rutinitas jam kernel menyadari kemungkinan lompatan detik, tetapi menerapkan penyesuaian sebagai panggilan ke rutin penyesuaian jam yang tidak diizinkan untuk dipanggil saat jam sudah sedang disesuaikan ... Dan tentu saja jam sistem tidak ada hubungannya dengan jam cpu.
Hagen von Eitzen
1
Lol, luar biasa. Saya harus menambahkan sesuatu ke "jam CPU adalah sampah dibandingkan dengan jam atom" pengamatan: Memang! Tapi itu semua sangat subyektif, belum lagi relatif. Kita mungkin kagum dengan akurasi yang unggul dari jam atom terbaik kita, tetapi di suatu tempat di luar sana (di luar realitas kita yang nyaman) mungkin ada teknologi yang membuat jam atom kita terlihat seperti "sampah" :-p
misha256
2
@ misha256 kenyataannya adalah tidak ada jam yang akurat . Waktu itu relatif.
Keltari
Jam CPU bisa menjadi sampah, tetapi tidak ada yang seperti membiarkan 8-bit register overflow hanya untuk memberi waktu pada driver display 7-segmen dalam kondisi yang tidak diketahui untuk mengumpulkan instruksi Anda sebelum Anda mengeluarkan yang berikutnya. Kami tidak perlu kristal untuk itu. Atau bahkan yang lebih penting, tidak ada yang seperti menunggu nanodetik untuk ALU menyelesaikan komputasinya sebelum Anda menyembunyikan hasilnya ke dalam register (atau ke bus yang menuju ke ALU yang berbeda).
John Dvorak
22

Sekitar tahun 2000, ketika kecepatan clock CPU mulai masuk ke dalam rentang di mana ponsel juga beroperasi, menjadi umum untuk menambahkan variasi pada kecepatan clock aktual. Alasannya sederhana: Jika jam CPU persis 900 Mhz, semua gangguan elektronik dihasilkan pada frekuensi itu. Variasikan frekuensi clock sedikit antara 895 dan 905 Mhz, dan interferensi juga didistribusikan pada rentang itu.

Ini dimungkinkan karena CPU modern terbatas pada panas. Mereka tidak memiliki masalah menjalankan sedikit lebih cepat untuk periode waktu yang singkat, karena mereka dapat menjadi dingin ketika jam diperlambat nanti.

MSalters
sumber
13
Di BIOS Anda akan sering melihat opsi ini digambarkan sebagai "Spread Spectrum"
Mark Sowul
1
Saya telah membaca bahwa di CPU multi-core core juga menggunakan jam offset karena membantu menghindari kebisingan radio, membantu distribusi daya, dan menghindari harmonik core building.
Zan Lynx
3
@MarkSowul terima kasih, akhirnya seseorang mengatakan penggunaan praktis "spread spectrum" ini.
22

Perancang logika digital di sini. Waktu aktual yang diambil oleh jaringan logika untuk berubah sebagai respons terhadap sinyal input adalah penundaan propagasi . Pikirkan sistem sebagai:

registers A,B,C... ---> logic cloud ---> registers A',B',C'

"Jam peluncuran" adalah tepi jam di mana set register pertama berubah. "Jam tangkap" adalah ujung jam berikutnya satu periode kemudian. Agar sistem dapat bekerja, output cloud logika harus stabil sebelum jam tangkap tiba.

Proses memastikan ini bekerja adalah analisis waktu. Dengan menggunakan simulasi sistem berbasis fisika, tentukan waktu kedatangan kasus terburuk dari input apa pun untuk output apa pun. Angka-angka terbesar di seluruh sistem ini menetapkan periode jam minimum.

Catat kasus terburuk . Waktu propagasi aktual akan lebih pendek, tetapi tergantung pada variasi proses pembuatan, suhu saat ini, dan tegangan chip ( PVT ). Ini berarti secara praktis Anda dapat menerapkan jam yang lebih cepat (overclocking) dan mungkin berhasil. Mungkin juga mulai menghasilkan kesalahan, seperti memutuskan bahwa 0x1fffffff + 1 = 0x1f000000jika carry bit tidak tiba tepat waktu.

Chip mungkin juga memiliki lebih dari satu jam di papan (biasanya FSB lebih lambat dari inti), dan jam aktual dapat menggenjot ke atas atau ke bawah untuk tujuan kontrol termal atau bervariasi (jawaban MSalter tentang menggunakan spektrum spread untuk lulus tes EMC).

pjc50
sumber
Dalam beberapa kasus, jam tangkap mungkin merupakan siklus kedua atau yang lebih baru daripada yang berikutnya. Beberapa desain mengasumsikan bahwa data akan selalu mengambil setidaknya beberapa jumlah waktu minimum (misalnya jika penundaan propagasi diketahui antara 2,1 dan 2,9 siklus, data dapat menjadi output dan hasil sampel pada setiap siklus; setiap hasil sampel akan mencerminkan data dari 3 siklus sebelumnya); desain lain yang lebih konservatif mengubah data keluaran lebih lambat, dan mengabaikan hasilnya sampai dijamin stabil.
supercat
2

Apakah durasi instruksi CPU disinkronkan secara ketat dengan getaran kristal? Atau apakah CPU hanya harus memastikan untuk mencapai instruksi sebelum centang selanjutnya?

Tidak juga. Durasi instruksi akan menjadi beberapa jumlah kutu jam, tetapi jumlah itu dapat bervariasi berdasarkan persyaratan instruksi. Sebagai contoh, jika suatu instruksi tidak dapat membuat kemajuan maju sampai lokasi memori tertentu dalam cache L1, maka instruksi tersebut tidak akan selesai sebelum clock tick berikutnya. Tidak ada kemajuan maju pada instruksi yang akan dibuat sampai itu terjadi.

Tetapi ketika CPU memutuskan untuk melakukan sesuatu, metode dasar yang digunakannya adalah mengatur sakelar internal sehingga sepotong informasi tertentu masuk ke bagian tertentu dari CPU. Itu menunggu input untuk tiba di bagian itu dan output tiba di bagian berikutnya. Bagian penantian ini adalah tujuan dari jam.

Bayangkan sebuah rangkaian fisik yang mengambil dua input biner dan menjumlahkannya, menghasilkan jumlah pada beberapa set kabel ketiga. Untuk melakukan penambahan, CPU harus mengatur agar dua angka yang akan ditambahkan untuk sampai ke adder ini dan output untuk pergi ke, misalnya, kait register CPU. CPU tidak dapat memberitahu kait untuk menyimpan output sampai input mencapai adder, adder menghasilkan output, dan output mencapai kait. Ini adalah tujuan dari jam - untuk mengatur waktu tunggu antara mengatur input untuk pergi ke suatu tempat dan mengharapkan output siap digunakan.

David Schwartz
sumber