If-Koubou

Bagaimana Anda Menghitung Kecepatan Prosesor pada Prosesor Multi-core?

Bagaimana Anda Menghitung Kecepatan Prosesor pada Prosesor Multi-core? (Bagaimana caranya)

Munculnya prosesor multi-core kelas konsumen yang ekonomis menimbulkan pertanyaan bagi banyak pengguna: bagaimana Anda secara efektif menghitung kecepatan nyata dari sistem multi-inti? Apakah sistem 4-core 3Ghz benar-benar 12Ghz? Baca terus selagi kami menyelidikinya.

Sesi Tanya & Jawab hari ini hadir untuk memberi kami hak milik SuperUser-subdivisi Stack Exchange, kumpulan situs web Q & A berbasis komunitas.

Pertanyaan

Pembaca SuperUser NReilingh ingin tahu bagaimana kecepatan prosesor untuk sistem multi-core sebenarnya dihitung:

Apakah benar untuk mengatakan, misalnya, bahwa prosesor dengan empat core masing-masing berjalan pada 3GHz sebenarnya prosesor yang berjalan pada 12GHz?

Saya pernah masuk ke argumen "Mac vs PC" (yang dengan cara TIDAK fokus dari topik ini ... yang kembali di sekolah menengah) dengan seorang kenalan yang bersikeras bahwa Mac hanya diiklankan sebagai mesin 1Ghz karena mereka dual -prosesor G4 masing-masing berjalan pada 500MHz.

Pada saat saya tahu ini menjadi omong kosong karena alasan yang saya pikir jelas bagi kebanyakan orang, tapi saya hanya melihat komentar di situs web ini untuk efek "6 core x 0.2GHz = 1.2Ghz" dan itu membuat saya berpikir lagi tentang apakah ada jawaban nyata untuk ini.

Jadi, ini adalah pertanyaan teknis yang lebih-atau-kurang filosofis / mendalam tentang semantik perhitungan kecepatan jam. Saya melihat dua kemungkinan:

  1. Setiap inti sebenarnya melakukan x perhitungan per detik, sehingga jumlah total perhitungan adalah x (core).
  2. 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 untuk menggunakan nomenklatur single-core pada sistem multi-core?

Jawabannya

Penyumbang SuperUser Mokubai membantu menjernihkan masalah. Dia menulis:

Alasan utama mengapa prosesor 3GHz quad-core tidak pernah secepat inti tunggal 12GHz adalah dengan 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 secara inheren linier dan harus dilakukan secara tepat langkah demi langkah seperti (program yang sangat sederhana)

10: a = a + 1
20: goto 10 

Maka tugas sangat bergantung pada hasil dari pass sebelumnya dan tidak dapat menjalankan banyak salinan dari dirinya sendiri tanpa merusak nilai'Sebuah' karena setiap salinan akan mendapatkan nilai'Sebuah' pada waktu yang berbeda dan menulisnya kembali secara berbeda. Ini membatasi tugas ke utas tunggal dan dengan demikian tugas hanya dapat berjalan pada satu inti pada waktu tertentu, jika itu dijalankan pada beberapa 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 lini ini bersifat independen dan dapat dibagi menjadi 4 program terpisah seperti yang pertama dan dijalankan pada saat yang sama, masing-masing dapat menggunakan 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 kasar, prosesor 12GHz tunggal akan menang telak, jika Anda dapat membuat tugas dibagi menjadi beberapa bagian dan multi-berulir maka 4 core dapat mendekati, tetapi tidak cukup menjangkau, kinerja yang sama, sesuai Hukum Amdahl.

Hal utama yang diberikan oleh sistem multi-CPU adalah responsif. Pada mesin inti tunggal yang bekerja keras sistem dapat tampak lamban karena sebagian besar waktu dapat digunakan oleh satu tugas dan tugas-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 mendapat 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-tugasnya paralel sempurna dan independen. Ada sejumlah tugas yang sangat paralel, tetapi mereka masih membutuhkan beberapa bentuk sinkronisasi. Handbrake adalah trancoder video yang sangat bagus dalam menggunakan semua CPU yang tersedia tetapi itu memang membutuhkan proses inti untuk menjaga agar benang-benang lainnya diisi data dan mengumpulkan data yang telah mereka kerjakan.

  1. Setiap inti sebenarnya melakukan x perhitungan per detik, sehingga jumlah total perhitungan adalah x (core).

Setiap inti mampu melakukan x kalkulasi per detik, dengan asumsi beban kerja sesuai paralel, pada program linier yang Anda miliki adalah 1 inti.

  1. 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 itu adalah kekeliruan untuk berpikir bahwa 4 x 3GHz = 12GHz, diberikan matematika bekerja, tetapi Anda membandingkan apel dengan jeruk dan jumlah yang tidak tepat, GHz tidak bisa hanya ditambahkan bersama untuk setiap situasi. Saya akan mengubahnya menjadi 4 x 3GHz = 4 x 3GHz.

Memiliki sesuatu untuk ditambahkan ke penjelasan? Bicaralah di komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi lainnya? Lihat diskusi lengkap di sini.