Munculnya prosesor multi-core kelas konsumen yang ekonomis menimbulkan pertanyaan bagi banyak pengguna: bagaimana Anda secara efektif menghitung kecepatan sebenarnya dari sistem multi-core? Apakah sistem 4-core 3Ghz benar-benar 12Ghz? Baca terus selagi kami menyelidiki.
Sesi Tanya & Jawab hari ini hadir atas kebaikan SuperUser — subdivisi Stack Exchange, pengelompokan situs web Tanya Jawab yang didorong komunitas.
Pertanyaan
Pembaca SuperUser NReilingh penasaran bagaimana kecepatan prosesor untuk sistem multi-core sebenarnya dihitung:
Apakah benar untuk mengatakan, misalnya, bahwa prosesor dengan empat inti yang masing-masing berjalan pada 3GHz sebenarnya adalah prosesor yang berjalan pada 12GHz?
Saya pernah terlibat dalam argumen “Mac vs. PC” (yang sebenarnya BUKAN fokus dari topik ini… yang dulu kembali ke sekolah menengah) dengan seorang kenalan yang bersikeras bahwa Mac hanya diiklankan sebagai mesin 1Ghz karena keduanya ganda -prosesor G4s masing-masing berjalan pada 500MHz.
Pada saat saya tahu ini omong kosong karena alasan yang menurut saya jelas bagi kebanyakan orang, tetapi saya baru saja melihat komentar di situs web ini tentang efek "6 core x 0.2GHz = 1.2Ghz" dan itu membuat saya berpikir lagi apakah ada jawaban nyata untuk ini.
Jadi, ini adalah pertanyaan filosofis / teknis yang kurang lebih mendalam tentang semantik perhitungan kecepatan jam. Saya melihat dua kemungkinan:
- Setiap inti sebenarnya melakukan x kalkulasi per detik, jadi jumlah total kalkulasi adalah x (core).
- Kecepatan clock lebih merupakan hitungan 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.
Jadi apa cara yang tepat untuk menunjukkan kecepatan clock total dan, yang lebih penting, apakah mungkin menggunakan nomenklatur kecepatan inti tunggal pada sistem multi-inti?
Jawabannya
Kontributor SuperUser Mokubai membantu membereskan semuanya. Dia menulis:
Alasan utama mengapa prosesor quad-core 3GHz tidak pernah secepat inti tunggal 12GHz berkaitan dengan cara kerja tugas yang dijalankan pada prosesor tersebut, yaitu single-threaded atau multi-threaded. Hukum Amdahl penting saat mempertimbangkan jenis tugas yang Anda jalankan.
Jika Anda memiliki tugas yang secara inheren linier dan harus dilakukan dengan tepat langkah demi langkah seperti (program yang sangat sederhana)
10: a = a + 120: Setiap 10Maka tugas tersebut sangat bergantung pada hasil lintasan sebelumnya dan tidak dapat menjalankan banyak salinan itu sendiri tanpa merusak nilai
'Sebuah'karena setiap salinan akan mendapatkan nilai'Sebuah'pada waktu yang berbeda dan menuliskannya kembali secara berbeda. Ini membatasi tugas ke satu utas dan dengan demikian tugas hanya dapat berjalan pada satu inti pada waktu tertentu, jika dijalankan pada beberapa inti maka korupsi sinkronisasi akan terjadi. Ini membatasinya hingga 1/2 dari daya cpu dari sistem inti ganda, atau 1/4 dalam sistem quad core.Sekarang ambil tugas seperti:
10: a = a + 120: b = b + 130: c = c + 140: d = d + 150: Setiap 10Semua jalur ini independen dan dapat dipecah menjadi 4 program terpisah seperti yang pertama dan dijalankan pada saat yang sama, masing-masing dapat menggunakan kekuatan penuh dari salah satu inti secara efektif tanpa masalah sinkronisasi, di sinilah tempatnya Hukum Amdahl datang ke dalamnya.
Jadi jika Anda memiliki aplikasi berulir tunggal yang melakukan kalkulasi gaya kasar, prosesor 12GHz tunggal akan menang telak, jika Anda entah bagaimana dapat membuat tugas dibagi menjadi beberapa bagian dan multi-utas maka 4 inti bisa mendekati, tetapi tidak cukup menjangkau, kinerja yang sama, sesuai Hukum Amdahl.
Hal utama yang diberikan sistem multi CPU adalah daya tanggap. Pada mesin inti tunggal yang bekerja keras, sistem dapat terlihat lamban karena sebagian besar waktu dapat digunakan oleh satu tugas dan tugas lainnya hanya berjalan dalam waktu singkat di antara tugas yang lebih besar, menghasilkan sistem yang tampak lamban atau bergetar . Pada sistem multi-inti, tugas berat mendapatkan satu inti dan semua tugas lainnya diputar di inti lainnya, melakukan tugasnya dengan cepat dan efisien.
Argumen "6 core x 0.2GHz = 1.2Ghz" adalah sampah dalam setiap situasi kecuali jika tugas-tugasnya paralel dan independen. Ada banyak tugas yang sangat paralel, tetapi masih membutuhkan beberapa bentuk sinkronisasi. Rem tangan adalah transcoder video yang sangat baik dalam menggunakan semua CPU yang tersedia, tetapi memerlukan proses inti untuk menjaga agar thread lain tetap terisi dengan data dan mengumpulkan data yang telah diselesaikan.
- Setiap inti sebenarnya melakukan x kalkulasi per detik, jadi jumlah total kalkulasi adalah x (core).
Setiap inti mampu melakukan x perhitungan per detik, dengan asumsi beban kerja paralel sesuai, pada program linier yang Anda miliki hanyalah 1 inti.
- Kecepatan clock lebih merupakan hitungan 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 adalah keliru untuk berpikir bahwa 4 x 3GHz = 12GHz, asalkan matematika berfungsi, tetapi Anda membandingkan apel dengan jeruk dan jumlahnya tidak tepat, GHz tidak dapat ditambahkan bersama untuk setiap situasi. Saya akan mengubahnya menjadi 4 x 3GHz = 4 x 3GHz.
Punya sesuatu untuk ditambahkan ke penjelasannya? Suarakan di komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi? Lihat utas diskusi lengkap di sini .