Kenapa CPU Cores Semua Mempunyai Kelajuan Sama Daripada Daripada Berbeza?
Sekiranya anda pernah melakukan perbelanjaan perbandingan yang banyak untuk CPU baru, anda mungkin menyedari bahawa teras semua kelihatan mempunyai kelajuan dan bukannya kombinasi yang berbeza. Kenapa begitu? Siaran Q & A SuperUser hari ini mempunyai jawapan kepada soalan pembaca yang ingin tahu.
Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.
Soalan
Pembaca SuperUser Jamie ingin tahu mengapa teras CPU semua mempunyai kelajuan yang sama dan bukannya yang berbeza:
Secara umum, jika anda membeli komputer baru, anda akan menentukan prosesor mana yang akan dibeli berdasarkan beban kerja yang diharapkan untuk komputer. Prestasi dalam permainan video cenderung ditentukan oleh kelajuan teras tunggal, sedangkan aplikasi seperti penyuntingan video ditentukan oleh bilangan teras. Dari segi apa yang terdapat di pasaran, semua CPU kelihatannya mempunyai kelajuan yang sama dengan perbezaan utama yang menjadi lebih banyak benang atau lebih banyak teras.
Sebagai contoh:
- Intel Core i5-7600K, frekuensi asas 3.80 GHz, 4 teras, 4 benang
- Intel Core i7-7700K, frekuensi asas 4.20 GHz, 4 core, 8 thread
- AMD Ryzen 5 1600X, frekuensi asas 3.60 GHz, 6 teras, 12 benang
- AMD Ryzen 7 1800X, frekuensi asas 3.60 GHz, 8 teras, 16 benang
Mengapa kita melihat corak teras yang semakin meningkat ini, tetapi semua teras mempunyai kelajuan jam yang sama? Kenapa tidak terdapat variasi dengan kelajuan jam yang berbeza? Sebagai contoh, dua teras "besar" dan banyak teras kecil.
Sebaliknya, katakan, empat teras pada 4.0 GHz (iaitu 4 × 4 GHz, maksimum 16 GHz), bagaimana CPU dengan dua teras yang berjalan pada 4.0 GHz dan empat teras yang berjalan pada 2.0 GHz (iaitu 2 × 4.0 GHz + 4 × 2.0 GHz, maksimum 16 GHz)? Adakah pilihan kedua sama dengan baik pada beban kerja berulir tunggal, tetapi berpotensi lebih baik pada beban kerja berbilang bebenang?
Saya bertanya ini sebagai soalan umum dan tidak khusus berkenaan dengan CPU yang disenaraikan di atas atau mengenai mana-mana satu beban kerja tertentu. Saya hanya tertanya-tanya mengapa pola itu adalah apa yang berlaku.
Kenapa teras CPU semua mempunyai kelajuan yang sama dan bukannya yang berbeza?
Jawapan
Penyumbang SuperUser bwDraco mempunyai jawapan untuk kami:
Ini dikenali sebagai pemprosesan pelbagai heterogen (HMP) dan digunakan secara meluas oleh peranti mudah alih. Dalam peranti berasaskan ARM yang melaksanakan besar.LITTLE, pemproses mengandungi teras dengan prestasi yang berbeza dan profil kuasa, iaitu beberapa teras yang berjalan pantas tetapi menarik banyak kuasa (arsitektur dan / atau jam yang lebih tinggi) sementara yang lain adalah cekap tenaga tetapi lambat ( senibina yang lebih perlahan dan / atau jam yang lebih rendah). Ini berguna kerana penggunaan kuasa cenderung meningkat dengan tidak seimbang kerana anda meningkatkan prestasi apabila anda melewati titik tertentu. Idea di sini adalah untuk mendapatkan prestasi apabila anda memerlukannya dan hayat bateri apabila anda tidak.
Pada platform desktop, penggunaan kuasa adalah kurang daripada satu isu, jadi ini tidak perlu. Kebanyakan aplikasi mengharapkan setiap teras mempunyai ciri-ciri prestasi yang sama, dan proses penjadualan bagi sistem HMP jauh lebih rumit daripada penjadualan untuk sistem multi-pemprosesan simetri tradisional (secara teknikal, Windows 10 mempunyai sokongan untuk HMP, tetapi ia terutamanya bertujuan untuk mudah alih peranti yang menggunakan ARM big.LITTLE).
Juga, kebanyakan pemproses desktop dan laptop hari ini tidak termal atau elektrik terhad kepada titik di mana beberapa teras perlu berjalan lebih cepat daripada yang lain, walaupun untuk pecah pendek. Kami pada dasarnya telah memukul dinding dengan seberapa cepat kita boleh membuat teras individu, jadi mengganti beberapa teras dengan yang lebih perlahan tidak akan membenarkan teras yang tersisa berjalan lebih cepat.
Walaupun terdapat beberapa pemproses desktop yang mempunyai satu atau dua teras yang dapat berjalan lebih cepat daripada yang lain, keupayaan ini kini terhad kepada pemproses Intel yang sangat tinggi (dikenali sebagai Turbo Boost Max Technology 3.0) dan hanya melibatkan sedikit keuntungan dalam prestasi untuk teras yang boleh berjalan lebih cepat.
Walaupun tentunya mungkin untuk merekabentuk pemproses x86 tradisional dengan kedua-dua teras yang besar, cepat dan lebih kecil, teras yang lebih perlahan untuk mengoptimumkan beban kerja yang berlebihan, ini akan menambahkan kerumitan yang cukup besar kepada reka bentuk pemproses dan aplikasi tidak semestinya menyokongnya.
Ambil pemproses hipotesis dengan dua teras Kaby Lake (generasi ke-7) dan lapan teras Goldmont (Atom) yang perlahan. Anda akan mempunyai 10 teras, dan beban kerja berlebihan yang dioptimumkan untuk jenis pemproses seperti ini dapat melihat keuntungan dalam prestasi dan kecekapan berbanding pemproses Kaby Lake quad-core normal. Walau bagaimanapun, pelbagai jenis teras mempunyai tahap prestasi yang berlainan, dan teras yang perlahan tidak menyokong beberapa arahan sokongan teras cepat, seperti AVX (ARM mengelakkan masalah ini dengan memerlukan kedua-dua teras besar dan LITTLE untuk menyokong arahan yang sama ).
Sekali lagi, kebanyakan aplikasi berbilang berasaskan Windows mengandaikan bahawa setiap teras mempunyai prestasi yang sama atau hampir sama dengan prestasi dan boleh melaksanakan arahan yang sama, maka asimetri jenis ini mungkin menghasilkan prestasi kurang ideal, bahkan mungkin kemalangan jika menggunakan arahan yang tidak disokong oleh teras yang lebih perlahan. Walaupun Intel boleh mengubah suai teras perlahan untuk menambah sokongan arahan lanjutan supaya semua teras boleh melaksanakan semua arahan, ini tidak akan menyelesaikan masalah dengan sokongan perisian untuk pemproses yang heterogen.
Pendekatan yang berbeza untuk reka bentuk aplikasi, lebih dekat dengan apa yang anda mungkin berfikir dalam soalan anda, akan menggunakan GPU untuk mempercepatkan bahagian aplikasi yang sangat selari. Ini boleh dilakukan menggunakan API seperti OpenCL dan CUDA. Bagi penyelesaian satu cip, AMD menggalakkan sokongan perkakasan untuk percepatan GPU dalam APUnya, yang menggabungkan CPU tradisional dan GPU bersepadu berprestasi tinggi ke dalam cip yang sama, seperti Arkitek Sistem Heterogen, walaupun ini tidak pernah melihat pengambilan industri yang banyak di luar daripada beberapa aplikasi khusus.
Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.
Kredit Imej: Mirko Waltermann (Flickr)