Ringkasan
Ekonomi. Lebih murah dan lebih mudah untuk merancang CPU yang memiliki lebih banyak inti daripada kecepatan clock yang lebih tinggi, karena:
Peningkatan signifikan dalam penggunaan daya. Konsumsi daya CPU meningkat dengan cepat saat Anda meningkatkan kecepatan clock - Anda dapat menggandakan jumlah core yang beroperasi pada kecepatan yang lebih rendah di ruang termal yang diperlukan untuk meningkatkan kecepatan clock hingga 25%. Empat kali lipat untuk 50%.
Ada cara lain untuk meningkatkan kecepatan pemrosesan berurutan, dan produsen CPU memanfaatkannya.
Saya akan mengambil banyak jawaban yang sangat baik di pertanyaan ini di salah satu situs saudara kami. Jadi, angkat mereka!
Batasan kecepatan jam
Ada beberapa batasan fisik yang diketahui untuk kecepatan clock:
Waktu transmisi
Waktu yang diperlukan untuk sinyal listrik untuk melintasi sirkuit dibatasi oleh kecepatan cahaya. Ini adalah batas yang sulit, dan tidak ada jalan lain yang diketahui 1 . Di gigahertz-jam, kami mendekati batas ini.
Namun, kita belum sampai. 1 GHz berarti satu nanodetik per tick jam. Pada waktu itu, cahaya dapat mencapai 30cm. Pada 10 GHz, cahaya dapat menempuh 3cm. Inti CPU tunggal lebarnya sekitar 5mm, jadi kami akan mengalami masalah ini di suatu tempat di atas 10 GHz. 2
Switching delay
Tidak cukup hanya dengan mempertimbangkan waktu yang dibutuhkan suatu sinyal untuk melakukan perjalanan dari satu ujung ke ujung yang lain. Kita juga perlu mempertimbangkan waktu yang diperlukan untuk gerbang logika di dalam CPU untuk beralih dari satu kondisi ke kondisi lain! Saat kami meningkatkan kecepatan clock, ini bisa menjadi masalah.
Sayangnya, saya tidak yakin tentang spesifikasinya, dan tidak dapat memberikan angka.
Tampaknya, memompa lebih banyak daya ke dalamnya dapat mempercepat perpindahan, tetapi ini mengarah pada konsumsi daya dan masalah pembuangan panas. Selain itu, lebih banyak daya berarti Anda membutuhkan saluran yang lebih besar yang mampu menanganinya tanpa kerusakan.
Pembuangan panas / konsumsi daya
Ini yang besar. Mengutip dari jawaban fuzzyhair2 :
Prosesor terbaru diproduksi menggunakan teknologi CMOS. Setiap kali ada siklus jam, daya hilang. Oleh karena itu, kecepatan prosesor yang lebih tinggi berarti lebih banyak pembuangan panas.
Ada beberapa pengukuran yang bagus di utas forum AnandTech ini , dan mereka bahkan mendapatkan formula untuk konsumsi daya (yang sejalan dengan panas yang dihasilkan):
Kredit ke Idontcare
Kami dapat memvisualisasikan ini dalam grafik berikut:
Kredit ke Idontcare
Seperti yang Anda lihat, konsumsi daya (dan panas yang dihasilkan) naik sangat cepat karena kecepatan clock meningkat melewati titik tertentu. Ini membuatnya tidak praktis untuk meningkatkan kecepatan clock tanpa batas.
Alasan peningkatan cepat dalam penggunaan daya mungkin terkait dengan penundaan switching - itu tidak cukup untuk hanya meningkatkan daya sebanding dengan laju jam; tegangan juga harus ditingkatkan untuk menjaga stabilitas pada jam yang lebih tinggi. Ini mungkin tidak sepenuhnya benar; merasa bebas untuk menunjukkan koreksi dalam komentar, atau mengedit jawaban ini.
Lebih banyak core?
Jadi mengapa lebih banyak core? Yah, saya tidak bisa menjawabnya secara pasti. Anda harus bertanya kepada orang-orang di Intel dan AMD. Tetapi Anda dapat melihat di atas bahwa, dengan CPU modern, pada beberapa titik menjadi tidak praktis untuk meningkatkan kecepatan clock.
Ya, multicore juga meningkatkan daya yang dibutuhkan, dan pembuangan panas. Tapi itu dengan rapi menghindari waktu transmisi dan beralih masalah penundaan. Dan, seperti yang dapat Anda lihat dari grafik, Anda dapat dengan mudah menggandakan jumlah core dalam CPU modern dengan overhead termal yang sama dengan peningkatan 25% dalam kecepatan clock.
Beberapa orang telah melakukannya - rekor dunia overclocking saat ini hanya kurang dari 9 GHz. Tetapi ini merupakan tantangan teknis yang signifikan untuk melakukannya sambil menjaga konsumsi daya dalam batas yang dapat diterima. Para desainer di beberapa titik memutuskan bahwa menambahkan lebih banyak core untuk melakukan lebih banyak pekerjaan secara paralel akan memberikan dorongan yang lebih efektif untuk kinerja dalam banyak kasus.
Di situlah ekonomi masuk - kemungkinan lebih murah (kurang waktu desain, kurang rumit untuk diproduksi) untuk menempuh rute multicore. Dan mudah dipasarkan - siapa yang tidak suka chip octa-core yang baru ? (Tentu saja, kita tahu bahwa multicore sangat tidak berguna ketika perangkat lunak tidak memanfaatkannya ...)
Ada adalah kerugian untuk multicore: Anda memerlukan ruang fisik lebih untuk menempatkan inti ekstra. Namun, ukuran proses CPU terus menyusut banyak, jadi ada banyak ruang untuk meletakkan dua salinan dari desain sebelumnya - tradeoff yang sebenarnya tidak mampu membuat core tunggal yang lebih besar, lebih kompleks, dan tunggal. Kemudian lagi, meningkatkan kompleksitas inti adalah hal yang buruk dari sudut pandang desain - lebih banyak kompleksitas = lebih banyak kesalahan / bug dan kesalahan pembuatan. Kami tampaknya telah menemukan media yang bahagia dengan core efisien yang cukup sederhana untuk tidak memakan terlalu banyak ruang.
Kami telah mencapai batas dengan jumlah core yang dapat kami muat pada satu die pada ukuran proses saat ini. Kita mungkin mencapai batas seberapa jauh kita dapat mengecilkan segera. Jadi apa selanjutnya? Apakah kita membutuhkan lebih banyak? Sayangnya, itu sulit dijawab. Adakah yang di sini peramal?
Cara lain untuk meningkatkan kinerja
Jadi, kami tidak dapat meningkatkan kecepatan jam. Dan lebih banyak core memiliki kelemahan tambahan - yaitu, mereka hanya membantu ketika perangkat lunak yang berjalan di atasnya dapat memanfaatkannya.
Jadi, apa lagi yang bisa kita lakukan? Bagaimana CPU modern jauh lebih cepat daripada yang lebih lama pada kecepatan clock yang sama?
Kecepatan clock sebenarnya hanya perkiraan kasar dari cara kerja internal CPU. Tidak semua komponen CPU bekerja pada kecepatan itu - beberapa mungkin beroperasi setiap dua kutu, dll.
Yang lebih penting adalah jumlah instruksi yang dapat Anda lakukan per unit waktu. Ini adalah ukuran yang jauh lebih baik dari seberapa banyak inti CPU tunggal dapat mencapai. Beberapa instruksi; beberapa akan mengambil satu siklus clock, beberapa akan mengambil tiga. Divisi, misalnya, jauh lebih lambat daripada penambahan.
Jadi, kita bisa membuat CPU berkinerja lebih baik dengan meningkatkan jumlah instruksi yang dapat dieksekusi per detik. Bagaimana? Nah, Anda bisa membuat instruksi lebih efisien - mungkin pembagian sekarang hanya membutuhkan dua siklus. Lalu ada instruksi pipelining . Dengan memecah setiap instruksi menjadi beberapa tahap, dimungkinkan untuk menjalankan instruksi "secara paralel" - tetapi setiap instruksi masih memiliki urutan yang jelas, berurutan, masing-masing sesuai dengan instruksi sebelum dan sesudahnya, sehingga tidak memerlukan dukungan perangkat lunak seperti multicore tidak.
Ada cara lain : instruksi yang lebih khusus. Kami telah melihat hal-hal seperti SSE, yang memberikan instruksi untuk memproses sejumlah besar data sekaligus. Ada set instruksi baru yang terus diperkenalkan dengan tujuan yang sama. Ini, sekali lagi, memerlukan dukungan perangkat lunak dan meningkatkan kompleksitas perangkat keras, tetapi mereka memberikan dorongan kinerja yang bagus. Baru-baru ini, ada AES-NI, yang menyediakan enkripsi dan dekripsi AES yang dipercepat perangkat keras, jauh lebih cepat daripada sekelompok aritmatika yang diterapkan dalam perangkat lunak.
1 Lagipula, tidak terlalu dalam mempelajari fisika kuantum teoretis.
2 Ini mungkin sebenarnya lebih rendah, karena perambatan medan listrik tidak secepat kecepatan cahaya dalam ruang hampa udara. Juga, itu hanya untuk jarak garis lurus - kemungkinan ada setidaknya satu jalur yang jauh lebih panjang dari garis lurus.