Mengapa tidak "menambahkan lebih banyak inti" menghadapi keterbatasan fisik yang sama seperti "membuat CPU lebih cepat"?

110

Pada 2014, saya mendengar banyak bahasa pemrograman yang dipuji karena fitur konkurensi mereka. Konkurensi dikatakan penting untuk keuntungan kinerja.

Dalam membuat pernyataan ini, banyak orang merujuk ke artikel 2005 berjudul The Free Lunch Is Over: Pergantian Mendasar Menuju Konkurensi dalam Perangkat Lunak . Argumen dasarnya adalah bahwa semakin sulit untuk meningkatkan kecepatan clock prosesor, tetapi kita masih dapat menempatkan lebih banyak core pada sebuah chip, dan bahwa untuk mendapatkan peningkatan kinerja, perangkat lunak perlu ditulis untuk memanfaatkan banyak core.

Beberapa kutipan kunci:

Kita terbiasa melihat CPU 500MHz memberi jalan ke CPU 1GHz memberi jalan ke CPU 2GHz, dan seterusnya. Hari ini kami berada dalam jangkauan 3GHz pada komputer umum.

Pertanyaan kuncinya adalah: Kapan itu akan berakhir? Bagaimanapun, Hukum Moore memprediksi pertumbuhan eksponensial, dan jelas pertumbuhan eksponensial tidak dapat berlanjut selamanya sebelum kita mencapai batas fisik yang keras; cahaya tidak semakin cepat. Pertumbuhan akhirnya harus melambat dan bahkan berakhir.

... Menjadi semakin sulit untuk mengeksploitasi kecepatan clock yang lebih tinggi karena tidak hanya satu tetapi beberapa masalah fisik, terutama panas (terlalu banyak dan terlalu sulit untuk dihilangkan), konsumsi daya (terlalu tinggi), dan masalah kebocoran saat ini.

... Masa depan Intel dan sebagian besar vendor prosesor terletak di tempat lain ketika perusahaan chip secara agresif mengejar arah multicore baru yang sama.

... Multicore adalah menjalankan dua atau lebih CPU aktual pada satu chip.

Prediksi artikel ini tampaknya bertahan, tetapi saya tidak mengerti mengapa. Saya hanya punya ide yang sangat kabur tentang cara kerja perangkat keras.

Pandangan saya yang terlalu disederhanakan adalah "semakin sulit untuk mengemas lebih banyak daya pemrosesan ke ruang yang sama" (karena masalah dengan panas, konsumsi daya, dll). Saya berharap kesimpulannya adalah "karena itu, kita harus memiliki komputer yang lebih besar atau menjalankan program kami pada banyak komputer." (Dan memang, komputasi awan terdistribusi adalah hal yang kami dengar lebih banyak.)

Tetapi bagian dari solusi tampaknya adalah arsitektur multi-core. Kecuali jika komputer tumbuh dalam ukuran (yang tidak mereka miliki), ini sepertinya merupakan cara lain untuk mengatakan "kemas lebih banyak daya pocessing ke dalam ruang yang sama".

Mengapa tidak "menambahkan lebih banyak inti" menghadapi keterbatasan fisik yang sama seperti "membuat CPU lebih cepat"?

Tolong jelaskan dalam istilah paling sederhana yang Anda bisa. :)

Nathan Long
sumber
4
en.wikipedia.org/wiki/Moore%27s_law patut dibaca - karena kita berbicara tentang dua hal yang berbeda. Hukum Moore bukan tentang kecepatan jam - ini tentang jumlah transistor
Journeyman Geek
9
Mari kita berpura-pura bahwa itu 30 tahun yang lalu dan CPU berjalan pada 4,77MHz. Mengapa Anda dapat menempatkan 1000 komputer dengan CPU 4MHz di ruang yang sama meskipun tidak mungkin untuk mendapatkan CPU 4GHz?
user20574
3
@NathanLong tetapi masih jauh lebih mudah untuk mendapatkan lebih banyak ruang (untuk lebih banyak komputer) daripada untuk mendapatkan komputer yang lebih cepat.
user20574
5
Analogi: mesin mobil hanya dapat dibuat untuk banyak rpm, tetapi Anda dapat dengan mudah baut dua bersama-sama.
OJFord

Jawaban:

143

Ringkasan

  • Ekonomi. Lebih murah dan lebih mudah untuk merancang CPU yang memiliki lebih banyak inti daripada kecepatan clock yang lebih tinggi, karena:

  • Peningkatan signifikan dalam penggunaan daya. Konsumsi daya CPU meningkat dengan cepat saat Anda meningkatkan kecepatan clock - Anda dapat menggandakan jumlah core yang beroperasi pada kecepatan yang lebih rendah di ruang termal yang diperlukan untuk meningkatkan kecepatan clock hingga 25%. Empat kali lipat untuk 50%.

  • Ada cara lain untuk meningkatkan kecepatan pemrosesan berurutan, dan produsen CPU memanfaatkannya.


Saya akan mengambil banyak jawaban yang sangat baik di pertanyaan ini di salah satu situs saudara kami. Jadi, angkat mereka!


Batasan kecepatan jam

Ada beberapa batasan fisik yang diketahui untuk kecepatan clock:

  • Waktu transmisi

    Waktu yang diperlukan untuk sinyal listrik untuk melintasi sirkuit dibatasi oleh kecepatan cahaya. Ini adalah batas yang sulit, dan tidak ada jalan lain yang diketahui 1 . Di gigahertz-jam, kami mendekati batas ini.

    Namun, kita belum sampai. 1 GHz berarti satu nanodetik per tick jam. Pada waktu itu, cahaya dapat mencapai 30cm. Pada 10 GHz, cahaya dapat menempuh 3cm. Inti CPU tunggal lebarnya sekitar 5mm, jadi kami akan mengalami masalah ini di suatu tempat di atas 10 GHz. 2

  • Switching delay

    Tidak cukup hanya dengan mempertimbangkan waktu yang dibutuhkan suatu sinyal untuk melakukan perjalanan dari satu ujung ke ujung yang lain. Kita juga perlu mempertimbangkan waktu yang diperlukan untuk gerbang logika di dalam CPU untuk beralih dari satu kondisi ke kondisi lain! Saat kami meningkatkan kecepatan clock, ini bisa menjadi masalah.

    Sayangnya, saya tidak yakin tentang spesifikasinya, dan tidak dapat memberikan angka.

    Tampaknya, memompa lebih banyak daya ke dalamnya dapat mempercepat perpindahan, tetapi ini mengarah pada konsumsi daya dan masalah pembuangan panas. Selain itu, lebih banyak daya berarti Anda membutuhkan saluran yang lebih besar yang mampu menanganinya tanpa kerusakan.

  • Pembuangan panas / konsumsi daya

    Ini yang besar. Mengutip dari jawaban fuzzyhair2 :

    Prosesor terbaru diproduksi menggunakan teknologi CMOS. Setiap kali ada siklus jam, daya hilang. Oleh karena itu, kecepatan prosesor yang lebih tinggi berarti lebih banyak pembuangan panas.

    Ada beberapa pengukuran yang bagus di utas forum AnandTech ini , dan mereka bahkan mendapatkan formula untuk konsumsi daya (yang sejalan dengan panas yang dihasilkan):

    Rumus
    Kredit ke Idontcare

    Kami dapat memvisualisasikan ini dalam grafik berikut:

    Grafik
    Kredit ke Idontcare

    Seperti yang Anda lihat, konsumsi daya (dan panas yang dihasilkan) naik sangat cepat karena kecepatan clock meningkat melewati titik tertentu. Ini membuatnya tidak praktis untuk meningkatkan kecepatan clock tanpa batas.

    Alasan peningkatan cepat dalam penggunaan daya mungkin terkait dengan penundaan switching - itu tidak cukup untuk hanya meningkatkan daya sebanding dengan laju jam; tegangan juga harus ditingkatkan untuk menjaga stabilitas pada jam yang lebih tinggi. Ini mungkin tidak sepenuhnya benar; merasa bebas untuk menunjukkan koreksi dalam komentar, atau mengedit jawaban ini.


Lebih banyak core?

Jadi mengapa lebih banyak core? Yah, saya tidak bisa menjawabnya secara pasti. Anda harus bertanya kepada orang-orang di Intel dan AMD. Tetapi Anda dapat melihat di atas bahwa, dengan CPU modern, pada beberapa titik menjadi tidak praktis untuk meningkatkan kecepatan clock.

Ya, multicore juga meningkatkan daya yang dibutuhkan, dan pembuangan panas. Tapi itu dengan rapi menghindari waktu transmisi dan beralih masalah penundaan. Dan, seperti yang dapat Anda lihat dari grafik, Anda dapat dengan mudah menggandakan jumlah core dalam CPU modern dengan overhead termal yang sama dengan peningkatan 25% dalam kecepatan clock.

Beberapa orang telah melakukannya - rekor dunia overclocking saat ini hanya kurang dari 9 GHz. Tetapi ini merupakan tantangan teknis yang signifikan untuk melakukannya sambil menjaga konsumsi daya dalam batas yang dapat diterima. Para desainer di beberapa titik memutuskan bahwa menambahkan lebih banyak core untuk melakukan lebih banyak pekerjaan secara paralel akan memberikan dorongan yang lebih efektif untuk kinerja dalam banyak kasus.

Di situlah ekonomi masuk - kemungkinan lebih murah (kurang waktu desain, kurang rumit untuk diproduksi) untuk menempuh rute multicore. Dan mudah dipasarkan - siapa yang tidak suka chip octa-core yang baru ? (Tentu saja, kita tahu bahwa multicore sangat tidak berguna ketika perangkat lunak tidak memanfaatkannya ...)

Ada adalah kerugian untuk multicore: Anda memerlukan ruang fisik lebih untuk menempatkan inti ekstra. Namun, ukuran proses CPU terus menyusut banyak, jadi ada banyak ruang untuk meletakkan dua salinan dari desain sebelumnya - tradeoff yang sebenarnya tidak mampu membuat core tunggal yang lebih besar, lebih kompleks, dan tunggal. Kemudian lagi, meningkatkan kompleksitas inti adalah hal yang buruk dari sudut pandang desain - lebih banyak kompleksitas = lebih banyak kesalahan / bug dan kesalahan pembuatan. Kami tampaknya telah menemukan media yang bahagia dengan core efisien yang cukup sederhana untuk tidak memakan terlalu banyak ruang.

Kami telah mencapai batas dengan jumlah core yang dapat kami muat pada satu die pada ukuran proses saat ini. Kita mungkin mencapai batas seberapa jauh kita dapat mengecilkan segera. Jadi apa selanjutnya? Apakah kita membutuhkan lebih banyak? Sayangnya, itu sulit dijawab. Adakah yang di sini peramal?


Cara lain untuk meningkatkan kinerja

Jadi, kami tidak dapat meningkatkan kecepatan jam. Dan lebih banyak core memiliki kelemahan tambahan - yaitu, mereka hanya membantu ketika perangkat lunak yang berjalan di atasnya dapat memanfaatkannya.

Jadi, apa lagi yang bisa kita lakukan? Bagaimana CPU modern jauh lebih cepat daripada yang lebih lama pada kecepatan clock yang sama?

Kecepatan clock sebenarnya hanya perkiraan kasar dari cara kerja internal CPU. Tidak semua komponen CPU bekerja pada kecepatan itu - beberapa mungkin beroperasi setiap dua kutu, dll.

Yang lebih penting adalah jumlah instruksi yang dapat Anda lakukan per unit waktu. Ini adalah ukuran yang jauh lebih baik dari seberapa banyak inti CPU tunggal dapat mencapai. Beberapa instruksi; beberapa akan mengambil satu siklus clock, beberapa akan mengambil tiga. Divisi, misalnya, jauh lebih lambat daripada penambahan.

Jadi, kita bisa membuat CPU berkinerja lebih baik dengan meningkatkan jumlah instruksi yang dapat dieksekusi per detik. Bagaimana? Nah, Anda bisa membuat instruksi lebih efisien - mungkin pembagian sekarang hanya membutuhkan dua siklus. Lalu ada instruksi pipelining . Dengan memecah setiap instruksi menjadi beberapa tahap, dimungkinkan untuk menjalankan instruksi "secara paralel" - tetapi setiap instruksi masih memiliki urutan yang jelas, berurutan, masing-masing sesuai dengan instruksi sebelum dan sesudahnya, sehingga tidak memerlukan dukungan perangkat lunak seperti multicore tidak.

Ada cara lain : instruksi yang lebih khusus. Kami telah melihat hal-hal seperti SSE, yang memberikan instruksi untuk memproses sejumlah besar data sekaligus. Ada set instruksi baru yang terus diperkenalkan dengan tujuan yang sama. Ini, sekali lagi, memerlukan dukungan perangkat lunak dan meningkatkan kompleksitas perangkat keras, tetapi mereka memberikan dorongan kinerja yang bagus. Baru-baru ini, ada AES-NI, yang menyediakan enkripsi dan dekripsi AES yang dipercepat perangkat keras, jauh lebih cepat daripada sekelompok aritmatika yang diterapkan dalam perangkat lunak.


1 Lagipula, tidak terlalu dalam mempelajari fisika kuantum teoretis.

2 Ini mungkin sebenarnya lebih rendah, karena perambatan medan listrik tidak secepat kecepatan cahaya dalam ruang hampa udara. Juga, itu hanya untuk jarak garis lurus - kemungkinan ada setidaknya satu jalur yang jauh lebih panjang dari garis lurus.

Bob
sumber
22
Juga, dalam banyak aplikasi bottleneck bukanlah waktu perhitungan, tetapi waktu berhenti untuk mengambil data dari RAM (atau, semoga saja, dari disk); jadi, speedup besar lainnya berasal dari cache prosesor yang lebih besar dan lebih cepat.
Matteo Italia
2
@MatteoItalia Yup. Dan ada juga peningkatan prediksi cabang, dan mungkin jauh lebih banyak yang tidak saya ketahui. Di luar prosesor, kami juga memiliki bus lebih cepat, memori lebih cepat, disk lebih cepat dan protokol terkait, dll.
Bob
2
Anda menyebutkan bahwa masalah yang terkait dengan "batas keras" dari kecepatan cahaya akan terjadi pada "di suatu tempat melewati 20 GHz". Perhitungan Anda tidak benar; sinyal listrik bergerak dengan kecepatan lebih rendah dari kecepatan cahaya, tergantung pada geometri kawat.
Giulio Muscarello
5
Tolong jangan gunakan "eksponensial" ketika ada kata-kata yang lebih tepat untuk hubungan ini (kuadratik, kubik, dll.) ...
Oliver Charlesworth
7
@OliCharlesworth Silakan baca catatan kaki. Ini tepatnya mengapa catatan kaki yang ada, dan mengapa saya memiliki referensi untuk itu di mana-mana exponentialdigunakan. Ini adalah penggunaan kata yang benar-benar valid, dan akan menjadi tangensial ke titik jawaban ini untuk terjebak dalam rincian matematis. Jika Anda benar-benar ingin mencoba "memperbaikinya", silakan menyarankan pengeditan. Tidak akan terserah saya jika diterima atau tidak, asalkan Anda tidak mengubah artinya secara signifikan.
Bob
14

Fisika adalah fisika. Kita tidak bisa terus mengemas lebih banyak transistor ke ruang yang semakin kecil selamanya. Pada titik tertentu itu menjadi sangat kecil sehingga Anda berurusan dengan omong kosong kuantum yang aneh. Pada titik tertentu kita tidak dapat mengemas transistor dua kali lebih banyak dalam satu tahun seperti yang biasa kita lakukan (yaitu apa yang dimaksud dengan hukum moore).

Kecepatan jam mentah tidak berarti apa-apa. Pentium M lama saya adalah sekitar setengah kecepatan clock dari CPU desktop kontemporer (dan dalam banyak hal lebih cepat ) - dan sistem modern hampir tidak mendekati kecepatan sistem 10 tahun yang lalu (dan jelas lebih cepat). Pada dasarnya 'hanya' meningkatkan kecepatan clock tidak memberikan keuntungan kinerja nyata dalam banyak kasus. Ini mungkin membantu dalam beberapa operasi yang dilakukan secara tunggal, tetapi Anda lebih baik menghabiskan anggaran desain pada efisiensi yang lebih baik dalam hal yang lain.

Beberapa core memungkinkan Anda melakukan dua atau lebih hal sekaligus, sehingga Anda tidak perlu menunggu satu hal selesai untuk yang berikutnya. Pada jangka waktu yang lebih pendek, Anda bisa memasukkan dua core yang ada ke dalam paket yang sama (misalnya dengan Pentium Ds , dan MCM mereka, yang merupakan desain transisi) dan Anda memiliki sistem yang dua kali lebih cepat. Sebagian besar implementasi modern memang berbagi hal-hal seperti pengontrol memori tentunya.

Anda juga dapat membangun lebih cerdas dengan berbagai cara. ARM melakukan Big-Little - memiliki 4 core daya rendah 'lemah' yang bekerja bersama 4 core lebih kuat sehingga Anda memiliki yang terbaik dari kedua dunia. Intel memungkinkan Anda menurunkan kecepatan (untuk efisiensi daya yang lebih baik) atau core spesifik overclock (untuk kinerja single thread yang lebih baik). Saya ingat AMD melakukan sesuatu dengan modul.

Anda juga dapat memindahkan hal-hal seperti pengontrol memori (sehingga Anda memiliki latensi lebih rendah) dan fungsi terkait IO (CPU modern tidak memiliki jembatan utara) serta video (yang lebih penting dengan laptop dan desain AIW). Lebih masuk akal untuk melakukan hal-hal ini daripada 'hanya' terus meningkatkan kecepatan jam.

Pada satu titik 'lebih banyak' inti mungkin tidak berfungsi - meskipun GPU memiliki ratusan inti.

Multicores memungkinkan komputer bekerja lebih cerdas dalam semua cara ini.

Journeyman Geek
sumber
1
Perlu dicatat, bahwa core GPU dirancang untuk tujuan yang sangat spesifik, berbeda dengan core CPU yang lebih merupakan tujuan umum. Juga harus dicatat, bahwa papan kartu video secara signifikan lebih besar daripada CPU (artinya bahkan jika core tidak menggunakan semua ruang di papan, mereka masih memiliki ruang yang JAUH lebih banyak untuk menghilangkan panas).
user2366842
3
benar, tetapi itu adalah contoh di mana Anda meningkatkan skala dengan jumlah yang ekstrim. Saya kemungkinan akan mengunjungi kembali jawaban ini di pagi hari
Journeyman Geek
"Anda dapat dengan mudah memasukkan dua core yang ada ke dalam paket yang sama". Tetapi bagaimana mereka mencapainya tanpa menggunakan lebih banyak ruang untuk core ekstra Bagaimana ?! Sihir? Unicorn? Anak anjing? (Dengan avatar Anda, saya curiga yang terakhir)
Orang Brazil itu
Pentium Ds adalah en.wikipedia.org/wiki/Pentium_D pada dasarnya
Journeyman Geek
6
wierd quantum crap+1 untuk itu saja!
Dave
9

Jawaban sederhana

Jawaban paling sederhana untuk pertanyaan itu

Mengapa tidak "menambahkan lebih banyak inti" menghadapi keterbatasan fisik yang sama seperti "membuat CPU lebih cepat"?

sebenarnya ditemukan dalam bagian lain dari pertanyaan Anda:

Saya berharap kesimpulannya adalah "karena itu, kita harus memiliki komputer yang lebih besar atau menjalankan program kami pada banyak komputer."

Intinya, banyak core seperti memiliki banyak "komputer" pada perangkat yang sama.

Jawaban yang rumit

"Inti" adalah bagian dari komputer yang benar-benar memproses instruksi (menambah, mengalikan, "dan" ing, dll). Inti hanya dapat menjalankan satu instruksi pada satu waktu. Jika Anda ingin komputer Anda menjadi "lebih kuat" ada dua hal dasar yang dapat Anda lakukan:

  1. Meningkatkan throughput (menambah laju jam, mengurangi ukuran fisik, dll)
  2. Gunakan lebih banyak core di komputer yang sama

Keterbatasan fisik untuk # 1 terutama adalah kebutuhan untuk membuang panas yang disebabkan oleh pemrosesan dan kecepatan elektron dalam rangkaian. Setelah Anda memisahkan beberapa transistor ke inti yang terpisah, Anda mengurangi masalah panas ke tingkat yang besar.

Ada batasan penting untuk # 2: Anda harus dapat membagi masalah Anda menjadi beberapa masalah independen , dan kemudian menggabungkan jawabannya. Pada komputer pribadi modern, ini sebenarnya bukan masalah, karena ada banyak masalah independen yang berlomba-lomba untuk waktu komputasi dengan inti. Tetapi ketika melakukan masalah komputasi yang intensif, beberapa core hanya benar-benar membantu jika masalahnya dapat diterima dengan konkurensi.

Jason Brubaker
sumber
'banyak core seperti memiliki banyak "komputer" pada perangkat yang sama.' Benar, tetapi kebingungan saya adalah, bagaimana Anda menempatkan mereka semua di sana? Saya pikir "kita tidak bisa pergi lebih cepat" adalah gejala dari "kita tidak bisa mengecilkan banyak hal."
Nathan Long
Beberapa core tidak memakan banyak ruang, chip semakin besar. Beban telah bergeser dari CPU ke insinyur perangkat lunak ... untuk benar-benar berjalan lebih cepat pada salah satu CPU multi-core raksasa ini perangkat lunak harus ditulis sedemikian rupa sehingga Anda dapat memotong pekerjaannya menjadi dua dan melakukan keduanya secara terpisah.
James
1
Jawaban singkatnya adalah konsumsi daya sebanding dengan kubus kecepatan clock. Dengan sinyal yang menempuh jarak yang lebih jauh, ilusi utas tunggal semakin sulit dipertahankan. Jawaban terperinci: amazon.com/…
Rob
6

Mengapa tidak "menambahkan lebih banyak inti" menghadapi keterbatasan fisik yang sama seperti "membuat CPU lebih cepat"?

Mereka menghadapi keterbatasan fisik yang sama, tetapi beralih ke desain multicore memberi kita ruang bernapas sebelum kita mengenai beberapa dari mereka. Pada saat yang sama masalah lain yang disebabkan oleh keterbatasan itu muncul, tetapi mereka lebih mudah diatasi.

Fakta 1: Konsumsi daya dan panas yang dipancarkan tumbuh lebih cepat daripada daya komputasi. Mendorong CPU dari 1 GHz ke 2 GHZ akan mendorong konsumsi daya dari 20 W hingga 80 W, sama dengan panas yang hilang. (Saya baru saja membuat angka-angka ini, tapi cukup cara kerjanya)

Fakta 2: Membeli CPU kedua dan menjalankan keduanya pada 1 GHz akan menggandakan daya komputasi Anda. Dua CPU yang berjalan pada 1 GHz dapat memproses jumlah data yang sama dengan satu CPU 2 GHz, tetapi masing-masing hanya mengkonsumsi energi 20 W, itu totalnya 40 W.

Keuntungan: Menggandakan jumlah CPU alih-alih frekuensi clock menghemat energi kita dan kita tidak sedekat "penghalang frekuensi" seperti sebelumnya.

Masalah: Anda harus membagi pekerjaan antara dua CPU dan menggabungkan hasilnya nanti.

Jika Anda dapat mengatasi masalah ini dalam waktu yang dapat diterima dan menggunakan lebih sedikit energi daripada yang baru saja Anda hemat, maka Anda baru saja mendapat untung karena menggunakan banyak CPU.

Sekarang Anda hanya perlu menggabungkan dua CPU menjadi satu CPU dual-core dan Anda sudah sampai di rumah. Ini bermanfaat karena core dapat berbagi beberapa bagian CPU, misalnya cache ( jawaban terkait ).

gronostaj
sumber
Kami terus mengenai batasan fisik dalam 1000 cara yang berbeda, ukuran die (untuk multi-core yang mengarah ke proses pembuatan yang lebih kecil), ukuran mobo (untuk multi cpu), amp yang ditarik melalui jejak (keduanya). itu tidak seperti Anda bisa meletakkan 2 CPU pada m-atx atau 4 dan memori pada papan atx dan desain-desain tersebut membutuhkan DECADES untuk berubah. Saya setuju dengan yang lain.
Rostol
@Rostol Itu poin bagus, saya sudah mengedit jawabannya.
gronostaj
5

Singkat cerita: Mempercepat inti tunggal telah mencapai batasnya, jadi kami terus mengecilkannya dan menambahkan lebih banyak lagi, sampai ini mencapai batasnya atau kami dapat mengubah bahan yang lebih baik (atau mencapai terobosan mendasar yang menggulingkan teknologi yang sudah ada, seperti rumah berukuran, benar-benar berfungsi, komputasi kuantum).

Saya pikir masalah ini multidimensi dan akan membutuhkan beberapa tulisan untuk melukis gambar yang lebih lengkap:

  1. Keterbatasan fisik (dipaksakan oleh fisika aktual): Seperti kecepatan cahaya, mekanika kuantum, semua itu.
  2. Masalah manufaktur: Bagaimana kita membuat struktur yang lebih kecil dengan presisi yang dibutuhkan? Masalah terkait bahan baku, bahan yang digunakan untuk membangun sirkuit usw., daya tahan.
  3. Masalah arsitektur: Panas, inferensi, konsumsi daya dll.
  4. Masalah ekonomis: Apa cara termurah untuk mendapatkan lebih banyak kinerja bagi pengguna?
  5. Usecases dan persepsi pengguna terhadap kinerja.

Mungkin masih banyak lagi. CPU multiguna mencoba menemukan solusi untuk mengacak semua faktor ini (dan lebih banyak lagi) menjadi satu, chip yang dapat diproduksi secara massal yang sesuai dengan 93% subjek di pasar. Seperti yang Anda lihat, poin terakhir adalah yang paling penting, persepsi pelanggan, yang secara langsung diturunkan dari cara pelanggan menggunakan CPU.

Tanyakan pada diri sendiri apa aplikasi Anda yang biasa? Mungkin: 25 tab Firefox, masing-masing memainkan beberapa iklan di latar belakang, saat Anda sedang mendengarkan musik, semua sambil menunggu pekerjaan build Anda, Anda mulai sekitar 2 jam yang lalu untuk menyelesaikan. Itu banyak pekerjaan yang harus dilakukan, dan Anda tetap menginginkan pengalaman yang mulus. Tetapi CPU Anda dapat menangani SATU tugas pada saat itu! Satu hal. Jadi apa yang Anda lakukan adalah, Anda berpisah dan membuat antrian looong dan setiap orang mendapatkan bagiannya sendiri dan semua bahagia. Kecuali Anda karena semua hal menjadi lamban dan tidak lancar sama sekali.

Jadi Anda mempercepat CPU Anda, untuk melakukan lebih banyak operasi dalam jumlah waktu yang sama. Tetapi seperti yang Anda katakan: konsumsi panas dan daya. Dan di situlah kita sampai pada bagian bahan mentah. Silikon menjadi lebih konduktif karena semakin panas, yang berarti lebih banyak arus mengalir melalui bahan saat Anda memanaskannya. Transistor memiliki konsumsi daya yang lebih tinggi saat Anda mengubahnya lebih cepat. Juga frekuensi tinggi membuat crosstalk antara kabel pendek lebih buruk. Jadi Anda lihat, pendekatan mempercepat hal-hal akan menyebabkan "kehancuran". Selama kita tidak memiliki bahan baku yang lebih baik daripada silikon atau transistor yang jauh lebih baik, kita terjebak di mana kita berada dengan kecepatan inti tunggal.

Ini membawa kita kembali ke tempat kita mulai. Menyelesaikan pekerjaan secara paralel. Mari kita tambahkan inti lain. Sekarang kita benar-benar dapat melakukan dua hal sekaligus. Jadi mari kita mendinginkannya sedikit dan hanya menulis perangkat lunak yang dapat membagi kerjanya menjadi dua, inti yang lebih kuat tetapi lebih fungsional. Pendekatan ini memiliki dua masalah utama (selain itu perlu waktu bagi dunia perangkat lunak untuk beradaptasi dengannya): 1. Membuat chip lebih besar, atau membuat inti individu lebih kecil. 2. Beberapa tugas tidak dapat dibagi menjadi dua bagian yang berjalan secara bersamaan. Terus tambahkan inti selama Anda bisa mengecilkannya, atau membuat chip lebih besar dan menjaga masalah panas di teluk. Oh dan jangan lupa pelanggan. Jika kami mengubah usecases kami, industri harus beradaptasi. Lihat semua hal "baru" yang mengkilap di sektor seluler.

Ya, strategi ini AKAN mencapai batasannya! Dan Intel tahu ini, itu sebabnya mereka mengatakan masa depan ada di tempat lain. Tetapi mereka akan tetap melakukannya selama itu murah dan efektif dan bisa dilakukan.

Terakhir, fisika: Mekanika kuantum akan membatasi penyusutan chip. Kecepatan cahaya belum menjadi batas, karena elektron tidak dapat berjalan dengan kecepatan cahaya dalam silikon, sebenarnya jauh lebih lambat dari itu. Juga, itu adalah kecepatan impuls yang menempatkan tutup keras pada kecepatan yang ditawarkan oleh suatu material. Sama seperti suara bergerak lebih cepat di air daripada di udara, impuls listrik bergerak lebih cepat di, misalnya, graphene daripada di silikon. Ini mengarah kembali ke bahan baku. Graphene bagus sejauh sifat kelistrikannya. Itu akan membuat bahan yang jauh lebih baik untuk membangun CPU, sayangnya sangat sulit untuk diproduksi dalam jumlah besar.

paradokson
sumber
2

Katakan (sebagai contoh yang tidak realistis, tetapi harus tetap menunjukkan maksudnya) Anda memiliki CPU yang beroperasi pada 100F. Cara multicore biasanya bekerja adalah dengan mengambil frekuensi clock yang digunakan CPU pada 100F, dan menurunkannya, sehingga menurunkan kecepatannya. Karena tidak lagi berfungsi sebagai panas, mereka dapat menjatuhkan yang kedua, ketiga, atau bahkan keempat di sebelahnya tanpa secara signifikan mempengaruhi suhu keseluruhan CPU, dan mendapatkan manfaat dari multicore. Ini jelas datang dengan beberapa overhead, karena core masih harus dikontrol dari satu tempat, oleh satu inti. Semakin banyak inti yang Anda tambahkan, semakin banyak overhead yang ada. Adapun core tunggal, semakin Anda mendongkrak kecepatan pada mereka, semakin banyak panas yang dihasilkan. Ini jelas memiliki keterbatasan fisik (yaitu setelah titik tertentu, itu mulai merusak kinerja,

Seiring berjalannya waktu, mereka telah menemukan cara untuk mengurangi ukuran fisik CPU, itulah sebabnya kami belum benar-benar bertemu dengan kebutuhan membutuhkan lebih banyak ruang, namun misalnya, 16 core CPU tidak benar-benar ada (pada waktu penulisan) di luar peralatan kelas server karena keterbatasan ukuran fisik, karena CPU kelas server secara fisik lebih besar daripada kelas konsumen standar.

pengguna2366842
sumber
2

CPU = Mesin mobil: Lebih mudah membuat mobil yang lebih kuat dengan 16 katup, yaitu lamborghini, daripada mobil rpm tinggi yang akan memiliki satu katup / silinder raksasa pada kecepatan 100.000 rpm.

Alasannya adalah fisik dan kimia, silikon perlu diganti dengan bahan bakar roket komputasi untuk mengubah keseimbangan antara jumlah inti dan kecepatan inti.

predatflaps
sumber
2

Saya akan mengatakan pembatasan utama pada batas daya komputasi terutama terkait dengan batas seberapa cepat kita dapat memindahkan elektron melalui sirkuit ( kecepatan penyimpangan elektron cahaya ). Ada banyak faktor seperti yang Anda sebutkan.

Menambahkan inti tambahan tidak akan membuat prosesor lebih cepat, meskipun akan memungkinkannya untuk memproses lebih banyak dalam jumlah waktu yang sama.

Hukum Moore adalah bacaan yang sangat menarik dan informatif. Kutipan ini khususnya relevan di sini:

Seseorang juga dapat membatasi kinerja teoretis dari "laptop pamungkas" yang agak praktis dengan massa satu kilogram dan volume satu liter. Hal ini dilakukan dengan mempertimbangkan kecepatan cahaya, skala kuantum, gravitasi konstan dan konstanta Boltzmann, memberikan kinerja 5,4258 ⋅ 10 50 operasi logis per detik pada sekitar 10 31 bit.

jredd
sumber
2
Kebetulan, elektron sebenarnya bergerak sangat lambat ("kecepatan melayang"), dalam urutan milimeter per detik IIRC. Anda lebih mengacu pada kecepatan di mana medan listrik merambat.
Bob
2
Saya tahu saya seharusnya tidak berani bertindak seperti saya memahami fisika dalam hal sekecil apa pun. :) Terima kasih telah mengoreksi / menginformasikan hal ini kepada saya.
jredd
Juga, kecepatan clock aktual di mana kecepatan propagasi akan memiliki efek signifikan lebih di sekitar 10+ GHz. Ada alasan lain mengapa prosesor modern lebih memilih beberapa core daripada jam yang lebih tinggi.
Bob
1

Cerita panjang bahkan lebih pendek:

Kami benar-benar tidak membutuhkan CPU yang lebih cepat. Di luar beberapa kegunaan yang sangat khusus * CPU belum menjadi hambatan selama bertahun-tahun - semua bit periferal seperti memori, penyimpanan, dan jaringan biasanya membuat CPU menunggu jutaan siklus clock dan selama itu ia dapat melakukan hal-hal lain. Inti kedua dapat melakukan lebih banyak "hal lain", sehingga menghasilkan persepsi kinerja yang lebih tinggi kepada pengguna.

Banyak perangkat seluler, laptop, dll. Akan melakukan underclock CPU untuk masa pakai baterai yang lebih baik dan suhu yang lebih dingin. Tidak banyak insentif untuk mengembangkan inti ARM 3.5GHz jika pelanggan utama Anda menjalankannya pada 1.3GHz.

  • penggunaan khusus tersebut tidak cukup membeli untuk membenarkan pengembangan inti 5GHz. Mereka juga tidak peduli dengan panas atau tenaga - beli yang tercepat yang tersedia, lakukan overclock dan pasang pada heatsink berpendingin air seukuran pemanggang roti.
Peter
sumber
1
Ini bukan "persepsi", tetapi "latensi yang lebih baik". Saya pikir ini adalah salah satu masalah utama yang kita miliki; throughput single-threaded yang kuat di semua mentalitas biaya. Sistem operasi konsumen belum berorientasi waktu nyata, atau secara fundamental berorientasi pada konkurensi atau paralelisme.
Rob
@ Peter Anda membuat poin yang sangat bagus, dan terima kasih telah menjelaskannya. Itu adalah sesuatu yang perlu saya ingat sebagai seorang programmer. :) Ini masih sedikit masalah sampingan untuk tujuan pertanyaan ini. Pertanyaan saya adalah mengapa kita tidak bisa mendapatkan kecepatan clock yang lebih cepat; jawaban Anda adalah tentang mengapa saat ini kami tidak perlu.
Nathan Long
1
@NathanLong "tidak bisa" dan "tidak perlu" terhubung. Anda tidak bisa mendapatkan prosesor yang lebih cepat karena tidak ada yang mau menginvestasikan miliaran atau lima yang dibutuhkan untuk mengembangkannya (5GHz mungkin mendorong batas fisik pula). Tidak ada yang mau berinvestasi karena tidak ada pasar yang realistis ketika kecepatan prosesor secara keseluruhan cenderung turun - beberapa desktop manufaktur saat ini berada di kelas 1.5GHz (top of the line 10 tahun yang lalu) karena lebih murah, lebih dingin, dan cukup cepat untuk pasar itu segmen.
peter
1

Jawaban singkat dan sederhana:

Mengapa tidak beralih dari 1 truk yang mengangkut barang menjadi 100 truk yang mengangkut 100 kali lipat, menghadapi keterbatasan fisik yang sama seperti pergi dari 1 truk yang mengemudi dengan kecepatan 100mph ke 1 truk yang mengendarai dengan kecepatan 10.000mph?

Jawab pertanyaan itu, dan pertanyaan Anda juga akan dijawab. Konsepnya kira-kira sama.

Alex D
sumber
1

Saya pikir faktor lain adalah suhu. Jika Anda meningkatkan frekuensi clock, suhu inti naik. Jika Anda menambahkan lebih banyak inti, meskipun konsumsi daya naik, ini didistribusikan di atas inti, sehingga suhu tetap sama (seperti jika Anda menambahkan dua cairan panas, pada suhu yang sama, satu sama lain, suhu tetap sama. ).

Alasan lain adalah bahwa peningkatan frekuensi clock cenderung meningkatkan konsumsi daya dengan kuadrat dari faktor Anda meningkatkan frekuensi (tergantung pada hambatan lain yang Anda pukul pada titik tertentu). Oleh karena itu, meningkatkan frekuensi clock meningkatkan konsumsi daya dengan kuadrat, sedangkan menambahkan lebih banyak core hanya meningkatkannya secara linear.

Morty
sumber
0

Jawaban mengapa tidak "menambahkan lebih banyak inti" menghadapi keterbatasan fisik yang sama dengan pertanyaan "membuat CPU lebih cepat" adalah bahwa sistem multicore menghadapi keterbatasan yang sama persis dengan CPU inti tunggal. Kami telah mencapai titik di mana kami tidak benar-benar memiliki pilihan untuk membuat sistem inti tunggal berjalan lebih cepat, jadi kami membuatnya sehingga kami dapat melakukan lebih banyak hal sekaligus. Tantangan ukuran dan koordinasi saat ini lebih mudah untuk diselesaikan daripada berjalan lebih cepat. Kelemahannya adalah jika suatu tugas tidak dapat dipecah menjadi beberapa bagian, kita mungkin tidak akan menjadi jauh lebih cepat daripada sistem inti tunggal.

Philip Tinney
sumber
0

Anda tidak dapat membuat CPU lebih cepat hanya dengan menjejalkan lebih banyak gerbang. Pada akhirnya, instruksi harus dijalankan, dan setiap instruksi memerlukan beberapa operasi "switching". Ada batas fisik mendasar (mekanika kuantum - Prinsip Ketidakpastian) yang membuatnya sangat sulit untuk meningkatkan "kecepatan clock" CPU di luar kecepatan sistem top-end saat ini.

Daniel R Hicks
sumber