Bagaimana cara menghitung kecepatan clock dalam prosesor multi-core?

23

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

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

Pada saat itu saya tahu ini adalah omong kosong karena alasan yang saya pikir jelas bagi kebanyakan orang, tetapi saya hanya 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 teknis yang kurang lebih filosofis / mendalam tentang semantik perhitungan kecepatan clock. Saya melihat dua kemungkinan:

  1. Setiap inti sebenarnya melakukan perhitungan x per detik, sehingga jumlah total perhitungan adalah x (core).
  2. 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.
NReilingh
sumber
Banyak jawaban di sini melakukan pekerjaan dengan baik untuk menjelaskan mengapa mis. Prosesor quad-core 2 GHz belum tentu sama dengan prosesor inti-tunggal 8 GHz. Namun, saya mengalami kesulitan menjelaskan bagaimana kecepatan prosesor multi-core harus dipertimbangkan ketika memutuskan kesesuaian sistem untuk aplikasi yang mencantumkan kecepatan dan jumlah inti dalam persyaratannya? (misalnya: Borderlands 2 membutuhkan prosesor dual-core 2,4 GHz. Haruskah kita mengharapkan quad-core berkecepatan lebih rendah, atau berkecepatan lebih tinggi juga?) Apakah itu (atau mungkinkah) dijawab di sini, atau haruskah itu menjadi pertanyaan terpisah?
Iszi
@Iszi Itu seharusnya menjadi pertanyaan lain, tetapi kemungkinan Borderlands dioptimalkan untuk lebih dari satu utas jika mereka termasuk "dual core" dalam persyaratan mereka. Dalam hal ini, prosesor single-core tidak akan direkomendasikan, tetapi tidak jelas apakah dapat memanfaatkan> 2 core.
NReilingh
Penting untuk diingat bahwa kecepatan clock dan jumlah core tidak semata-mata menentukan 'kecepatan' prosesor. Misalnya, ukuran dan kecepatan cache akan memengaruhi waktu yang dihabiskan prosesor untuk menunggu instruksi dan data. Selain itu, instruksi per siklus (dengan cara, 'efisiensi', meskipun berbeda dari dan terkait dengan efisiensi daya) juga akan mempengaruhi kecepatan perhitungan. Prosesor yang berbeda akan membutuhkan waktu yang berbeda untuk menjalankan instruksi yang sama.
Bob

Jawaban:

35

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.

  1. 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.

  1. 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.

Mokubai
sumber
Kiriman yang bagus .. Tidak dapat memberikan suara lebih dari 1+ :-(
Gopalakrishnan Subramani
Tetapi hukum amdahl adalah masalah pemrograman, yang disebabkan oleh penguncian, bukan masalah perangkat keras. Jika Anda tidak perlu menyinkronkan, setiap inti dapat menjalankan instruksi secepat mungkin. Seseorang dapat merancang program paralel (yang sederhana) yang akan sempurna dibagi antara inti. Bukankah produsen perangkat keras mengiklankan nilai mentah ini?
Justin Meiners
Untuk memperjelas, saya mengerti mengapa ini menjawab pertanyaan mengapa 4 core pada 3 ghz tidak secepat, dalam praktiknya sebagai 12ghz, tetapi bukan bagian dari bagaimana kecepatan clock dihitung untuk multicores.
Justin Meiners
@JustinMeiners clock speed per core hanyalah kecepatan clock yang digunakan core. Tidak ada perhitungan ajaib yang menyamakan satu inti dengan multicore. Multiple core hanya berarti Anda dapat menjalankan lebih banyak tugas secara bersamaan. Hukum Amdahl berlaku karena perangkat lunak, sinkronisasi dan penguncian yang diperlukan akan mencegah tugas menjadi "sempurna" dalam perangkat keras seperti halnya perangkat lunak. Tembolok dan memori bersama menyebabkan pertikaian dan kunci terjadi.
Mokubai
@Mokubai Hanya untuk memperjelas, ketika produsen mencantumkan kecepatan clock, masing-masing core berjalan pada kecepatan, benar?
Justin Meiners
6

Yang lain membuat argumen yang bagus dari sudut pandang teknis. Saya malah akan membuat beberapa analogi sederhana yang saya harap akan menjelaskan mengapa 4 * 3GHz tidak setara dengan 1 * 12GHz.

Misalnya seorang wanita dapat menghasilkan satu bayi dalam sembilan bulan. Apakah sembilan wanita dapat menghasilkan satu bayi dalam satu bulan? Tidak, karena kehamilan tidak dapat diparalelkan (well, setidaknya pada tingkat teknologi ini).

Ini yang lain: Di pembangkit listrik tenaga air yang baru-baru ini saya kunjungi, salah satu generator sedang ditingkatkan. Mereka harus mengangkut stator generator dengan kapal. Seperenam dari stator dapat diangkut dengan truk, tetapi mereka perlu mengangkut seluruh stator; jadi mereka harus menggunakan satu kapal, bukan enam truk.

Kasus lain mungkin waktu yang tepat untuk suatu peristiwa. Kadang-kadang prosesor komputer digunakan sebagai penghitung waktu yang tepat (meskipun praktik ini tidak lagi direkomendasikan, karena jam variabel pada sebagian besar prosesor. Pengatur acara presisi tinggi harus digunakan sebagai gantinya). Jika kita berasumsi bahwa kita memiliki prosesor dengan clock 12GHz yang relatif stabil, kita dapat menggunakannya untuk mengukur waktu dalam resolusi yang jauh lebih tinggi daripada pada prosesor dengan clock 3GHz. Tidak peduli berapa banyak inti 3GHz yang kita miliki, kita tidak akan dapat mencapai resolusi inti 12GHz. Itu seperti memiliki 4 jam dengan tampilan 7-segmen di mana setiap jam hanya menampilkan waktu yang tepat dalam jam. Tidak peduli seberapa benar mereka menunjukkan jam, Anda tidak dapat menggunakannya untuk mengukur interval waktu dalam rentang satu detik.

AndrejaKo
sumber
Jawaban yang berguna bagi mereka yang kurang berpikiran teknis. Juga, saya suka analogi :)
aff
3

Saya bukan ahli dalam hal ini, tetapi saya memiliki gelar di bidang Teknik Komputer. Secara teori (ini adalah jawaban yang sangat konseptual), quad-core 3GHz setiap prosesor dapat setara dengan satu prosesor 12GHz jika, misalnya, ada empat set perhitungan yang diperlukan untuk hasil akhir tunggal. Itulah yang disebut pemrosesan paralel.

Untuk menyederhanakan logika, katakanlah kita sedang berbicara tentang prosesor dual core. Jika satu set perhitungan, katakan:

a = b + 1;

c = d + 1;

kemudian, kedua perhitungan dapat dieksekusi pada core yang terpisah, dan prosesor xGHz akan setara dengan prosesor single-core 2 * xGHz. Ini karena dua perhitungan, walaupun dilakukan dengan kecepatan x, akan diproses pada saat yang sama. Sedangkan prosesor single-core bisa melakukannya dengan kecepatan 2 * x tetapi satu demi satu. Jika dua CPU mengeksekusi kode ini pada saat yang sama, mereka akan selesai pada saat yang sama. Namun, jika kodenya adalah:

a = b + 1;

c = a + 1;

kemudian, prosesor dual-core akan memakan waktu dua kali lebih lama dari prosesor single-core karena dalam instruksi kedua, nilai a tergantung pada instruksi pertama dan dengan demikian tidak dapat dieksekusi secara paralel. Inilah cara beberapa perangkat lunak dapat memanfaatkan prosesor multi-utas.

Jadi, secara teori, prosesor single-core 12GHz selalu dapat berjalan secepat (atau lebih cepat) daripada prosesor quad-core 3GHz, tetapi tidak sebaliknya.

dinding blastaway
sumber
Perhatikan bahwa perhitungan itu hanya akan lebih cepat jika mutlithreaded, dan itupun ada sedikit overhead. Tapi ya, sementara itu dimungkinkan untuk membuat prosesor inti tunggal yang dapat melakukan banyak perhitungan, itu tidak masuk akal karena panas dan banyak hal.
Phoshi
Jawaban ini menyesatkan karena dua alasan. Pertama, core modern melakukan lebih dari satu hal sekaligus. Kedua, jawabannya mengasumsikan bahwa kecepatan inti adalah sama dengan tingkat di mana pekerjaan dilakukan. Prosesor single-core 12GHz tidak akan berjalan secepat prosesor quad-core 3GHz jika prosesor single-core membutuhkan lebih banyak siklus clock secara signifikan untuk mencapai pekerjaan yang sama. (Yang mana karena prosesor 12GHz akan membutuhkan jaringan pipa yang jauh lebih lama.)
David Schwartz
2

Ini adalah pertanyaan yang rumit untuk dijawab, tetapi jawaban singkatnya adalah: Tidak

Dalam aplikasi dunia nyata empat prosesor 3Ghz tidak akan secepat prosesor 12Ghz tunggal karena ketidakefisienan. Mereka mungkin sangat dekat, tetapi mereka TIDAK akan sama dengan prosesor tunggal dalam hal kekuatan pemrosesan.

Alasan untuk ini terletak pada inefisiensi kecil ketika berhadapan dengan program yang dapat berjalan pada lebih dari satu prosesor. Dengan asumsi bahwa program tersebut dapat berjalan secara paralel, kita masih akan mengalami masalah dengan core yang berbeda bersaing satu sama lain untuk sumber daya lain seperti RAM atau bahkan cache dan masalah sinkronisasi thread. Juga, selalu ada bagian dari program yang tidak dapat diparalelkan dan perlu dijalankan pada satu inti dengan sendirinya.

Lihatlah artikel ini: http://en.wikipedia.org/wiki/Amdahl%27s_law

Faken
sumber
Anda benar dan salah. Empat prosesor 3 GHz kemungkinan besar akan LEBIH CEPAT daripada prosesor 12ghz tunggal dalam aplikasi "dunia nyata". Saat ini semakin banyak program menggunakan multi-threading, tautan yang Anda berikan mengacu pada aplikasi utas tunggal teoretis. Sebuah prosesor tunggal pada 12ghz hanya memiliki satu utas, sehingga manfaat multi-threading yang ditawarkan oleh program "dunia nyata" akan hilang. Industri ini tidak mengarah ke core yang lebih lambat daripada core yang lebih cepat hanya karena, manfaat dari teknologi multi-core jauh lebih besar daripada manfaat dari teknologi single core cepat.
ubiquibacon
3
@ tipypnig: Itu tidak sepenuhnya benar. Prosesor single-core 6GHz akan menjalankan aplikasi multi-threaded dengan kecepatan yang hampir sama dengan prosesor dual-core 3GHz, dengan asumsi aplikasi mengambil keuntungan penuh dari setiap utas (yang kemungkinan besar tidak akan berjalan jika itu adalah "nyata" aplikasi dunia ", tapi itu argumen terpisah). Kami tidak melihat prosesor 12GHz karena terlalu sulit dengan teknologi saat ini, bukan karena lebih lambat.
Sasha Chedygov
4
@ tipypnig: Saya telah memprogram beberapa program mutithreaded dan percayalah, jika saya memiliki prosesor 12Ghz tunggal, gunakan id itu sebagai gantinya. Pemrograman berulir tunggal 10x lebih mudah dan jauh lebih efisien daripada pemrograman berulir muti. Alasan sebenarnya mengapa industri ini memindahkan prosesor mutorore twords bukan karena mereka lebih cepat, itu karena kita tidak dapat membuat CPU individu berjalan lebih cepat! Ini diuraikan dengan teknologi netburst Intel di masa p4. Mereka memperkirakan prosesor 10Ghz, setidaknya, itu sampai fisika kuantum menampar wajah mereka dan berkata "tidak, tidak!"
Faken
2
@typokning: F22 menggunakan berbagai prosesor powerPC untuk mencapai 10 miliar instruksi per detik, sangat berbeda dengan 10Ghz! Seperti mengatakan Radion HD5970 Anda beroperasi pada 4600Ghz. Ini mampu untuk 4,6 TFLOPS tetapi hanya karena sangat paralel.
Faken
1
@ tipypnig: Anda jelas tidak mengerti perbedaan antara frekuensi CPU dan IPS (instruksi per detik), mereka tidak satu sama. Silakan baca: en.wikipedia.org/wiki/Instructions_per_second
Faken
2

Tampaknya kita tidak bisa mengatakan bahwa 4 core @ 3 GHz dapat dikatakan 12 GHz.

Berbagai kendala seperti memori bersama, pertikaian cache, dan sumber daya lainnya juga umum untuk semua core sehingga menjalankan sepotong kode paralel pada core ini tidak akan seefisien menjalankannya pada prosesor 12 Ghz (walaupun sulit untuk membangun prosesor seperti itu ).

Saya juga membaca di suatu tempat bahwa jika kita menggandakan transistor yang tertanam pada chip (CMP), kecepatan yang akan kita dapatkan hanya 40%. Ini memberikan petunjuk penting untuk topik ini juga.

Harmeet Singh
sumber
1

Sejauh menyangkut siklus clock yang dilakukan, ya prosesor multi-core melakukan x * coressiklus kerja per detik yang lengkap. Secara konvensional, kecepatan clock terdaftar pada basis per-inti untuk perbandingan yang lebih mudah (jika tidak, bagaimana Anda akan dengan mudah membandingkan chip dual-core 4GHz yang berjalan pada 2GHz / inti vs chip quad-core 4GHz yang berjalan pada 1GHz / inti?).

Sayangnya, masalahnya menjadi kompleks ketika Anda mencoba membandingkan prosesor yang berbeda di aplikasi dunia nyata.

Pertama, sebagian besar prosesor multi-inti memiliki beberapa sumber daya yang dibagi di antara inti (mis. CPU cache). Mereka harus berbagi akses ke cache itu, sehingga Anda tidak bisa memiliki kedua core yang menyimpan atau membaca data dengan kecepatan penuh. Hal ini sering dikurangi dalam CPU banyak-inti dengan memiliki beberapa cache bersama (misalnya, sebagian besar chip quad-core memiliki 2 cache, masing-masing dibagi oleh sepasang core), untuk lebih baik membagi peluang kemacetan pada sumber daya bersama.

Kedua, dan mungkin kurang dikenal di dunia non-teknologi, adalah bahwa membandingkan kecepatan jam kadang-kadang bisa seperti membandingkan apel dan jeruk. CPU yang berbeda menghasilkan jumlah pekerjaan yang berbeda dalam satu siklus clock tunggal, sehingga mengatakan Anda memiliki 1GHz vs 1.2GHz terdengar hebat, tetapi chip 1GHz sebenarnya dapat menyelesaikan lebih banyak pekerjaan dalam interval waktu tertentu. Pentium 4 mengantarkan titik ini pulang, mengarah ke Mitos Megahertz (yang saya tidak tahu memiliki nama yang diciptakan sampai menulis posting ini).

Jimmy
sumber
Kecepatan jam tidak terdaftar pada "basis per inti". Kecepatan tidak pernah "per" apa pun. Jika sebuah mobil melaju 50 mil per jam, kecepatannya 50 mil per jam. Jika dua mobil melaju 50 mil per jam, kecepatannya masih 50 mil per jam. Gagasan "kecepatan per mobil" tidak berarti dan tidak jelas.
David Schwartz
1

Dua mobil masing-masing berjalan 50 mil per jam jangan "bertambah" menjadi 100 mil per jam. Sesederhana itu. Kecepatan clock prosesor bukan merupakan ukuran tingkat di mana pekerjaan dilakukan, itu adalah ukuran seberapa cepat jam berdetak.

David Schwartz
sumber