Alasan utama mengapa prosesor 3GHz quad-core tidak pernah secepat 12GHz adalah karena bagaimana tugas yang berjalan pada prosesor itu bekerja, yaitu single-threaded atau multi-threaded. Hukum Amdahl penting ketika mempertimbangkan jenis tugas yang Anda jalankan.
Jika Anda memiliki tugas yang inheren linier dan harus dilakukan langkah demi langkah secara tepat seperti (program yang sangat sederhana)
10: a = a + 1
20: goto 10
Maka tugas sangat tergantung pada hasil dari pass sebelumnya dan tidak dapat menjalankan banyak salinan dari dirinya sendiri tanpa merusak nilai 'a'
karena setiap salinan akan mendapatkan nilai 'a'
pada waktu yang berbeda dan menuliskannya kembali secara berbeda. Ini membatasi tugas menjadi satu utas dan dengan demikian tugas tersebut hanya dapat berjalan pada satu inti pada waktu tertentu, jika dijalankan pada banyak inti maka korupsi sinkronisasi akan terjadi. Ini membatasi hingga 1/2 dari daya cpu dari sistem dual core, atau 1/4 dalam sistem quad core.
Sekarang ambil tugas seperti:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
Semua baris ini bersifat independen dan dapat dipecah menjadi 4 program terpisah seperti yang pertama dan dijalankan pada saat yang sama, masing-masing dapat memanfaatkan secara efektif kekuatan penuh dari salah satu inti tanpa masalah sinkronisasi, di sinilah Hukum Amdahl datang ke dalamnya.
Jadi jika Anda memiliki aplikasi berulir tunggal yang melakukan perhitungan brute force, prosesor 12GHz tunggal akan menang dengan mudah, jika Anda dapat membuat tugas terpecah menjadi beberapa bagian yang terpisah dan multi-berulir maka 4 core dapat mendekati, tetapi tidak cukup menjangkau, kinerja yang sama, sesuai Hukum Amdahl.
Hal utama yang diberikan sistem multi CPU kepada Anda adalah daya tanggapnya. Pada mesin inti tunggal yang bekerja keras, sistem dapat tampak lamban karena sebagian besar waktu dapat digunakan oleh satu tugas dan tugas lainnya hanya berjalan dalam semburan pendek di antara tugas yang lebih besar, menghasilkan sistem yang tampaknya lamban atau juddery. . Pada sistem multi-core, tugas berat mendapatkan satu inti dan semua tugas lainnya bermain di core lain, melakukan pekerjaan mereka dengan cepat dan efisien.
Argumen "6 core x 0.2GHz = 1.2Ghz" adalah sampah di setiap situasi kecuali di mana tugas sangat paralel dan independen. Ada sejumlah tugas yang sangat paralel, tetapi masih membutuhkan beberapa bentuk sinkronisasi. Handbrake adalah video trancoder yang sangat bagus dalam menggunakan semua CPU yang tersedia tetapi memang membutuhkan proses inti untuk menjaga agar utas lainnya diisi dengan data dan mengumpulkan data yang sudah dikerjakan.
- Setiap inti sebenarnya melakukan perhitungan x per detik, sehingga jumlah total perhitungan adalah x (core).
Setiap core mampu melakukan x kalkulasi per detik, dengan asumsi beban kerja paralel yang sesuai, pada program linier yang Anda miliki adalah 1 core.
- Kecepatan clock lebih merupakan hitungan dari jumlah siklus yang dilalui prosesor dalam waktu satu detik, jadi selama semua core berjalan pada kecepatan yang sama, kecepatan setiap siklus clock tetap sama tidak peduli berapa banyak core yang ada . Dengan kata lain, Hz = (core1Hz + core2Hz + ...) / core.
Saya pikir itu adalah kekeliruan untuk berpikir bahwa 4 x 3GHz = 12GHz, memberikan hasil matematika, tetapi Anda membandingkan apel dengan jeruk dan jumlahnya tidak tepat, GHz tidak bisa begitu saja ditambahkan bersama untuk setiap situasi. Saya akan mengubahnya menjadi 4 x 3GHz = 4 x 3GHz.