Mengapa kita masih menggunakan CPU dan bukan GPU?

373

Tampak bagi saya bahwa hari ini banyak perhitungan dilakukan pada GPU. Jelas grafis dilakukan di sana, tetapi menggunakan CUDA dan sejenisnya, AI, algoritma hashing (pikirkan bitcoin) dan lainnya juga dilakukan pada GPU. Mengapa kita tidak bisa begitu saja menyingkirkan CPU dan menggunakan GPU sendiri? Apa yang membuat GPU jauh lebih cepat daripada CPU?

elo
sumber
3
bagaimana saya tahu jawaban mana yang berisi informasi yang benar? Haruskah saya menunggu sampai orang lain menjawab suara naik / turun? Saya pikir saya terlalu tergesa-gesa menerima jawaban: O
ell
14
Ada beberapa jawaban terkini @ell sekarang, yang tidak mengandung "kesalahan informasi". Mereka secara bertahap naik ke atas dengan suara karena mekanisme pasar yang efisien dari StackExchange yang dirancang luar biasa ;-) Saya sarankan menunggu sedikit lebih lama sebelum menerima jawaban. Sepertinya Anda sangat berhati-hati melakukan hal itu. Ngomong-ngomong, ini pertanyaan yang bagus. Mungkin terlihat jelas, tetapi tidak sama sekali. Terima kasih telah menanyakannya!
Ellie Kesselman
124
Agak seperti bertanya "Jika Boeing 747 lebih cepat dan lebih hemat bahan bakar, mengapa kita masih mengendarai mobil"?
vartec
7
Tidak, karena ini bukan RISC versus CISC. Itu salah satu dasar ilmu komputer lainnya, sedikit menyamar. Itu "Mengapa kita melepas pekerjaan dari prosesor pusat ke prosesor I / O?" .
JdeBP
5
@artec: Saya pikir analogi yang sedikit lebih baik mungkin antara bus dan taksi. Jika ada empat puluh orang yang semuanya ingin pergi dari tempat yang sama ke tempat yang sama, sebuah bus akan jauh lebih efisien. Jika ada empat puluh orang yang asal-usul dan tujuannya diinginkan tersebar luas, bahkan satu taksi mungkin sama bagusnya dengan bus, dan untuk biaya bus orang bisa memiliki banyak taksi.
supercat

Jawaban:

388

TL; DR answer: GPU memiliki core prosesor yang jauh lebih banyak daripada CPU, tetapi karena setiap core GPU berjalan secara signifikan lebih lambat daripada core CPU dan tidak memiliki fitur yang diperlukan untuk sistem operasi modern, mereka tidak sesuai untuk melakukan sebagian besar pemrosesan dalam sehari-hari komputasi. Mereka paling cocok untuk operasi intensif komputasi seperti pemrosesan video dan simulasi fisika.


GPGPU masih merupakan konsep yang relatif baru. GPU pada awalnya digunakan untuk rendering grafik saja; Seiring dengan kemajuan teknologi, sejumlah besar core dalam GPU relatif terhadap CPU dieksploitasi dengan mengembangkan kemampuan komputasi untuk GPU sehingga mereka dapat memproses banyak aliran data paralel secara bersamaan, tidak peduli apa pun data itu. Sementara GPU dapat memiliki ratusan atau bahkan ribuan prosesor aliran, mereka masing-masing berjalan lebih lambat dari inti CPU dan memiliki lebih sedikit fitur (bahkan jika mereka Turing lengkap dan dapat diprogram untuk menjalankan program apa pun yang dapat dijalankan CPU). Fitur yang hilang dari GPU termasuk gangguan dan memori virtual, yang diperlukan untuk menerapkan sistem operasi modern.

Dengan kata lain, CPU dan GPU memiliki arsitektur yang sangat berbeda yang membuatnya lebih cocok untuk tugas yang berbeda. GPU dapat menangani data dalam jumlah besar di banyak aliran, melakukan operasi yang relatif sederhana, tetapi tidak cocok untuk pemrosesan yang berat atau kompleks pada satu atau beberapa aliran data. CPU jauh lebih cepat berdasarkan per-inti (dalam hal instruksi per detik) dan dapat melakukan operasi yang kompleks pada satu atau beberapa aliran data dengan lebih mudah, tetapi tidak dapat secara efisien menangani banyak aliran secara bersamaan.

Akibatnya, GPU tidak cocok untuk menangani tugas-tugas yang tidak diuntungkan secara signifikan atau tidak dapat diparalelkan, termasuk banyak aplikasi konsumen umum seperti pengolah kata. Lebih jauh, GPU menggunakan arsitektur yang berbeda secara fundamental; kita harus memprogram aplikasi khusus untuk GPU agar bisa berfungsi, dan teknik yang berbeda diperlukan untuk memprogram GPU. Teknik-teknik yang berbeda ini meliputi bahasa pemrograman baru, modifikasi bahasa yang ada, dan paradigma pemrograman baru yang lebih cocok untuk mengekspresikan komputasi sebagai operasi paralel yang harus dilakukan oleh banyak pemroses arus. Untuk informasi lebih lanjut tentang teknik yang diperlukan untuk memprogram GPU, lihat artikel Wikipedia tentang pemrosesan aliran dan komputasi paralel .

GPU modern mampu melakukan operasi vektor dan aritmatika floating-point, dengan kartu terbaru yang mampu memanipulasi angka floating-point presisi ganda. Kerangka kerja seperti CUDA dan OpenCL memungkinkan program ditulis untuk GPU, dan sifat GPU membuatnya paling cocok untuk operasi yang sangat paralel, seperti dalam komputasi ilmiah, di mana serangkaian kartu komputasi khusus GPU dapat menjadi pengganti yang layak untuk kartu kecil. menghitung cluster seperti pada NVIDIA Tesla Personal Supercomputer . Konsumen dengan GPU modern yang berpengalaman dengan Folding @ home dapat menggunakannya untuk berkontribusi dengan klien GPU , yang dapat melakukan simulasi pelipatan protein dengan kecepatan yang sangat tinggi dan berkontribusi lebih banyak pekerjaan pada proyek (pastikan untuk membaca FAQspertama, terutama yang terkait dengan GPU). GPU juga dapat mengaktifkan simulasi fisika yang lebih baik dalam permainan video menggunakan PhysX, mempercepat encoding dan decoding video, dan melakukan tugas-tugas komputasi intensif lainnya. Jenis tugas inilah yang paling cocok untuk dilakukan oleh GPU.

AMD memelopori desain prosesor yang disebut Accelerated Processing Unit (APU) yang menggabungkan core CPU x86 konvensional dengan GPU. Pendekatan ini memungkinkan kinerja grafis yang jauh lebih unggul daripada solusi grafis terintegrasi motherboard (meskipun tidak cocok untuk GPU diskrit yang lebih mahal), dan memungkinkan sistem yang kompak dan berbiaya rendah dengan kinerja multimedia yang baik tanpa perlu GPU yang terpisah. Prosesor Intel terbaru juga menawarkan grafis terintegrasi on-chip, meskipun kinerja GPU terintegrasi yang kompetitif saat ini terbatas pada beberapa chip dengan Intel Iris Pro Graphics. Ketika teknologi terus berkembang, kita akan melihat peningkatan tingkat konvergensi dari bagian-bagian yang terpisah ini. Membayangkan AMDmasa depan di mana CPU dan GPU adalah satu, yang mampu bekerja sama dengan mulus pada tugas yang sama .

Meskipun demikian, banyak tugas yang dilakukan oleh sistem operasi PC dan aplikasi masih lebih cocok untuk CPU, dan banyak pekerjaan yang diperlukan untuk mempercepat program menggunakan GPU. Karena begitu banyak perangkat lunak yang ada menggunakan arsitektur x86, dan karena GPU memerlukan teknik pemrograman yang berbeda dan kehilangan beberapa fitur penting yang diperlukan untuk sistem operasi, transisi umum dari CPU ke GPU untuk komputasi sehari-hari sangat sulit.

bwDraco
sumber
39
Seperti jawaban ini, saya pikir alasan utamanya adalah karena kami tidak memiliki bahasa pemrograman aliran utama yang baik untuk menangani arsitektur paralel seperti ini. Kami telah berjuang selama beberapa dekade untuk memajukan pemrograman multi-threaded, dan orang-orang masih memanggil, multi threading "jahat". Meskipun begitu, CPU dan GPU multi-core adalah kenyataan, dan kami harus membuat paradigma pemrograman baru untuk mengatasinya.
Soren
Perlu dicatat bahwa Intel telah bekerja pada arsitektur Larrabee (terlalu lama) yang pada dasarnya adalah sebuah chip dengan sejumlah besar inti x86 di dalamnya.
Chris S
Jawaban yang bagus untuk membahas alasan perangkat keras dan membahas APU dan bagaimana mereka akan mengubahnya. Namun, @Soren memberikan poin yang sangat bagus di sisi perangkat lunak. Pada kenyataannya, ini adalah kombinasi dari masalah perangkat keras, masalah perangkat lunak, dan fakta bahwa CPU berfungsi dan ketika sesuatu diketahui bekerja, sulit untuk membuat orang menggantinya.
Nich Del
3
"Kami tidak memiliki bahasa pemrograman aliran utama yang baik untuk menangani arsitektur paralel seperti ini." - Haskell, OCaml, Skema, F #, Erlang, dan cukup banyak langauge pemrograman fungsional lainnya menangani multithreading dengan sangat baik. Semua yang saya sebutkan adalah mainstream.
BlueRaja - Danny Pflughoeft
1
@BlueRaja - kami mengetahui bahasa-bahasa ini, definisi aliran utama Anda harus berbeda dari saya :-)
Soren
252

Apa yang membuat GPU jauh lebih cepat daripada CPU?

GPU tidak lebih cepat dari CPU. CPU dan GPU dirancang dengan dua tujuan yang berbeda, dengan trade-off yang berbeda, sehingga mereka memiliki karakteristik kinerja yang berbeda . Tugas tertentu lebih cepat dalam CPU sedangkan tugas lain lebih cepat dihitung dalam GPU. CPU unggul dalam melakukan manipulasi kompleks pada sekumpulan kecil data, GPU unggul dalam melakukan manipulasi sederhana pada sekumpulan besar data.

GPU adalah CPU dengan tujuan khusus, dirancang sedemikian rupa sehingga satu instruksi dapat digunakan pada blok data yang besar (SIMD / Single Instruction Multiple Data), semuanya menerapkan operasi yang sama. Bekerja dalam blok data tentu lebih efisien daripada bekerja dengan sel tunggal pada suatu waktu karena ada overhead yang jauh berkurang dalam mendekode instruksi, namun bekerja dalam blok besar berarti ada lebih banyak unit kerja paralel, sehingga menggunakan lebih banyak transistor. untuk mengimplementasikan instruksi GPU tunggal (menyebabkan batasan ukuran fisik, menggunakan lebih banyak energi, dan menghasilkan lebih banyak panas).

CPU dirancang untuk menjalankan satu instruksi pada satu datum secepat mungkin. Karena hanya perlu bekerja dengan satu datum, jumlah transistor yang diperlukan untuk mengimplementasikan satu instruksi jauh lebih sedikit sehingga CPU mampu memiliki set instruksi yang lebih besar, ALU yang lebih kompleks, prediksi cabang yang lebih baik, prediksi cabang yang lebih baik, lebih tervirtualisasi arsitektur, dan skema caching / pipeline yang lebih canggih. Siklus instruksinya juga lebih cepat.

Alasan mengapa kita masih menggunakan CPU bukan karena x86 adalah raja arsitektur CPU dan Windows ditulis untuk x86, alasan mengapa kita masih menggunakan CPU adalah karena jenis tugas yang perlu dilakukan oleh OS, yaitu membuat keputusan, dijalankan lebih efisien pada arsitektur CPU. Suatu OS perlu melihat 100-an dari berbagai jenis data dan membuat berbagai keputusan yang semuanya tergantung satu sama lain; pekerjaan semacam ini tidak mudah diparalelkan, setidaknya tidak ke dalam arsitektur SIMD.

Di masa depan, apa yang akan kita lihat adalah konvergensi antara arsitektur CPU dan GPU karena CPU memperoleh kemampuan untuk bekerja pada blok data, misalnya SSE. Selain itu, ketika teknologi manufaktur meningkat dan chip semakin kecil, GPU mampu menerapkan instruksi yang lebih kompleks.

Lie Ryan
sumber
23
Ini mungkin jawaban terbaik di sini. Penting untuk memahami perbedaan mendasar antara kedua paradigma. Agar GPU melampaui CPU, dengan mempertimbangkan beban kerja saat ini, pada dasarnya berarti GPU harus berubah menjadi CPU. Dan dengan demikian pertanyaannya adalah jawabannya.
surfasb
2
+1 untuk ini menjadi jawaban terbaik. Baik ini dan jawaban yang diterima benar, tetapi yang ini menjelaskannya lebih jelas.
Saya terkejut tidak ada seorang pun di utas ini yang menyebutkan biaya pengiriman data ke GPU - bandwidth terbatas melalui bus PCI-Express membuat beberapa operasi paralel pada GPU jauh lebih lambat daripada yang dilakukan pada CPU. Satu kasus sederhana dapat dilihat di mana berbagai ukuran FFT membuat perbedaan signifikan dalam kinerja pada GPU vs CPU karena overhead pengiriman data, pengaturan konteks, membaca kembali hasil: stackoverflow.com/a/8687732/303612 Operasi yang lebih kecil dapat dilakukan dalam-cache pada CPU, dan bandwidth memori jauh lebih unggul dari arsitektur PCI-E saat ini
Dr. Andrew Burnett-Thompson
1
@ Dr.AndrewBurnett-Thompson: itu karena itu tidak relevan dengan pertanyaan. Saat ini, GPU dianggap sebagai unit pemrosesan tambahan, oleh karena itu memindahkan data dari / ke GPU diperlukan dan mahal. Jika kami memperlakukan GPU sebagai unit pemrosesan kelas satu, tidak akan ada kebutuhan untuk menyusun data antara memori utama dan memori GPU.
Lie Ryan
1
Tidak optimis, ini bukan nol bandwidth. Jika prosesor dengan arsitektur GPU menjalankan seluruh pertunjukan, tidak ada yang perlu dipindahkan, memori GPU adalah memori utama. Tidak ada overhead transfer untuk dibicarakan karena tidak ada transfer. Omong-omong, ini bukan hipotesis, APU AMD menggunakan HSA (arsitektur sistem heterogen) dengan memori utama terpadu yang memungkinkan penyalinan nol antara CPU dan GPU.
Lie Ryan
75

Kurangnya GPU:

  1. Memori virtual (!!!)
  2. Sarana perangkat pengalamatan selain memori (mis. Keyboard, printer, penyimpanan sekunder, dll)
  3. Terganggu

Anda memerlukan ini untuk dapat mengimplementasikan apa pun seperti sistem operasi modern.

Mereka juga (relatif) lambat pada aritmatika presisi ganda (bila dibandingkan dengan kinerja aritmatika presisi tunggal mereka) *, dan jauh lebih besar (dalam hal ukuran silikon). Arsitektur GPU yang lebih lama tidak mendukung panggilan tidak langsung (melalui pointer fungsi) yang diperlukan untuk sebagian besar pemrograman tujuan umum, dan arsitektur yang lebih baru yang melakukannya dengan lambat. Akhirnya, (seperti jawaban lain telah dicatat), untuk tugas-tugas yang tidak dapat diparalelkan, GPU kalah dibandingkan dengan CPU yang diberi beban kerja yang sama.

EDIT : Harap dicatat bahwa respons ini ditulis pada tahun 2011 - Teknologi GPU adalah area yang terus berubah. Hal-hal bisa sangat berbeda tergantung pada saat Anda membaca ini: P

* Beberapa GPU tidak lambat pada aritmatika presisi ganda, seperti NVidia Quadro atau garis Tesla (generasi Fermi atau lebih baru), atau AMD FirePro (generasi GCN atau lebih baru). Tapi ini tidak ada di mesin kebanyakan konsumen.

Billy ONeal
sumber
@Cicada: Apakah Anda punya referensi untuk itu? Bagaimanapun, bahkan jika itu benar, bahkan perangkat keras terbaru tidak akan berkinerja baik dalam kasus itu. (mis. tidak akan memiliki terlalu banyak keunggulan perf daripada CPU - dan Kekurangan konsumsi daya)
Billy ONeal
3
Ya, perangkat Fermi seperti yang Anda katakan (dengan CUDA 4.0 dan sm_20), mendukung lompatan tidak langsung (dan karenanya metode virtual C ++, pewarisan dll).
Angry Lettuce
544 GigaFLOPS dari GPU berusia $ 300 2 tahun lambat?
Ben Voigt
2
@ Ben: Anda hanya mendapatkan kinerja semacam itu di aplikasi paralel data. Operasi sekuensial umum adalah ballgame yang sama sekali berbeda. (Itu hanya dengan seluruh 1600 core pada chip yang berjalan secara paralel, pada dasarnya menjalankan instruksi yang sama berulang-ulang ... dan bahkan itu adalah teori daripada perf aktual)
Billy ONeal
@ Billy: Tapi itu kelambatan pada kelas algoritma tertentu, bukan kelambatan pada aritmatika presisi ganda (yang adalah apa yang Anda klaim). (Dan CPU biasanya juga tidak mencapai throughput benchmark)
Ben Voigt
37

CPU seperti pekerja yang bekerja sangat cepat. GPU adalah seperti sekelompok pekerja klon yang bekerja dengan cepat, tetapi yang semuanya harus melakukan hal yang sama secara bersamaan (dengan pengecualian bahwa Anda dapat membuat beberapa klon diam jika Anda mau)

Yang mana yang ingin Anda miliki sebagai sesama pengembang, satu orang super cepat, atau 100 klon cepat yang sebenarnya tidak secepat, tetapi semua harus melakukan tindakan yang sama secara bersamaan?

Untuk beberapa tindakan, klon cukup bagus misalnya menyapu lantai - mereka masing-masing dapat menyapu bagian dari itu.

Untuk beberapa tindakan, klon berbau busuk, misalnya menulis laporan mingguan - semua klon kecuali satu duduk diam sementara satu klon menulis laporan (jika tidak, Anda hanya mendapatkan 100 salinan dari laporan yang sama).

John Robertson
sumber
4
Mungkinkah saya memiliki ... keduanya?
Kevin Panko
22
@ Kevin: Ya, tapi Anda akan membutuhkan komputer dengan baik CPU dan GPU! Kalau saja ada hal seperti itu!
Joachim Sauer
3
Analogi yang bagus. Akan mengingat ini.
Mayo
23

Karena GPU dirancang untuk melakukan banyak hal kecil sekaligus, dan CPU dirancang untuk melakukan satu hal sekaligus. Jika proses Anda dapat dibuat paralel secara masif, seperti hashing, GPU adalah urutan yang lebih cepat, jika tidak, maka tidak akan demikian.

CPU Anda dapat menghitung hash jauh lebih cepat daripada GPU Anda - tetapi saat CPU Anda melakukannya, GPU Anda dapat menjadi bagian dari beberapa ratus hash. GPU dirancang untuk melakukan banyak hal pada saat yang bersamaan, dan CPU dirancang untuk melakukan satu hal pada satu waktu, tetapi sangat cepat.

Masalahnya adalah bahwa CPU dan GPU adalah solusi yang sangat berbeda untuk masalah yang sangat berbeda, ada sedikit tumpang tindih tetapi umumnya apa yang ada di domain mereka tetap berada di domain mereka. Kita tidak dapat mengganti CPU dengan GPU karena CPU duduk di sana melakukan pekerjaannya jauh lebih baik daripada GPU yang pernah ada, hanya karena GPU tidak dirancang untuk melakukan pekerjaan, dan CPU adalah.

Namun, sebuah catatan kecil, jika mungkin untuk menghapus CPU dan hanya memiliki GPU, tidakkah Anda pikir kami akan mengganti namanya? :)

Phoshi
sumber
Saya pikir sebagian besar CPU modern dirancang untuk melakukan 2, 4, atau 8 hal sekaligus.
danielcg
@ danielcg25: Dan kebanyakan GPU modern dirancang untuk melakukan 256, 512, 1024 hal sekaligus (GTX 680 memiliki 1.536 core CUDA). Setiap inti CPU adalah entitas yang berbeda secara konseptual, tetapi ini tidak berlaku untuk GPU.
Phoshi
@ danielcg25: Saya sadar, tetapi komentar dengan kesalahpahaman mendasar (meskipun disengaja) dari jawaban itu bisa berbahaya jika ada yang membacanya tanpa mengetahui topiknya. "Menjadi keledai" dalam arti itu tidak benar-benar dihargai pada SE karena menurunkan sinyal: rasio kebisingan.
Phoshi
Saya hanya memberikan beberapa informasi. Sebagian besar komputer saat ini sebenarnya mampu memproses 2-8 hal sekaligus. Beberapa prosesor dapat melakukan lebih dari itu. Itu masih belum mendekati GPU yang melakukan 100 hal sekaligus.
danielcg
@ danielcg25: Ini adalah jenis pemrosesan yang berbeda, yang merupakan pertanyaannya. Setiap inti CPU terpisah secara efektif, bekerja dengan potongan data sendiri dan prosesnya sendiri. Setiap core CPU melakukan tugas yang berbeda dan terpisah satu sama lain, dan mereka tidak naik ke atas secara linier - octo-core tidak dua kali lebih berguna daripada quad core tidak dua kali lebih berguna dari dual core. Inti GPU, di sisi lain, melakukan tugas yang sama di seluruh bagian data yang berbeda, dan melakukan skala secara linear. Jelas bahwa CPU multi-core ada, tetapi ini bukan hal yang sama .
Phoshi
14

Apakah Anda benar-benar bertanya mengapa kami tidak menggunakan arsitektur seperti GPU di CPU?

GPU hanyalah CPU khusus kartu grafis. Kami meminjamkan perhitungan non-grafis GPU karena CPU tujuan umum tidak secara normal dalam eksekusi paralel dan floating point.

Kami sebenarnya menggunakan arsitektur CPU yang berbeda (lebih GPU-ish). Misalnya prosesor Niagara cukup multitasking. SPARC T3 akan menjalankan 512 utas bersamaan.

jkj
sumber
Mengapa downvote?
jkj
3
Saya kira baris terakhir, karena itu hanya salah. Bahkan, saya hanya bisa memikirkan satu-satunya sistem operasi utama x86; dan bahkan yang telah porting ke prosesor alpha dan ARM, hanya tidak ditawarkan secara komersial saat ini.
Javier
Baik. Menghapus bagian terakhir yang merupakan pendapat saya tentang dukungan sistem operasi utama yang menghalangi perubahan arsitektur baru. Mungkin tidak berada dalam cakupan jawabannya.
jkj
11

Saya mungkin salah di sini, dan saya berbicara dari sedikit atau tidak ada otoritas tentang masalah ini, tetapi begini:

  • Saya percaya setiap unit eksekusi GPU ("inti") memiliki ruang alamat yang sangat terbatas dibandingkan dengan CPU.

  • Unit eksekusi GPU tidak dapat menangani percabangan secara efisien.

  • Unit eksekusi GPU tidak mendukung gangguan perangkat keras seperti halnya CPU.

Saya selalu berpikir cara unit eksekusi GPU dimaksudkan adalah sesuatu seperti Playstation 3 "SPE", mereka ingin diberi blok data, menjalankan sejumlah operasi berurutan di atasnya, dan kemudian mengeluarkan blok lain dari data, bilas, ulangi. Mereka tidak memiliki memori addressable sebanyak "CPE" utama tetapi idenya adalah untuk mendedikasikan masing-masing "SPE" untuk tugas yang spesifik dan berurutan. Output dari satu unit mungkin memberi makan input dari unit lain.

Unit eksekusi tidak berfungsi dengan baik jika mereka mencoba untuk "menganalisis" data dan membuat banyak keputusan berdasarkan apa data itu.

"Blok data" ini dapat menjadi bagian dari aliran, seperti daftar simpul dari tabel keadaan gim, data MPEG dari disk, dll.

Jika ada sesuatu yang tidak sesuai dengan model "streaming" ini, maka Anda memiliki tugas yang tidak dapat dibatalkan secara efisien dan GPU belum tentu merupakan solusi terbaik untuk itu. Contoh yang baik adalah memproses hal-hal berbasis "peristiwa eksternal" seperti keyboard, joystick, atau input jaringan. Tidak ada banyak hal yang tidak sesuai dengan model itu, tetapi akan selalu ada beberapa.

LawrenceC
sumber
Poin bagus tentang optimasi prediksi cabang - saya tidak akan pernah mempertimbangkan itu, tetapi Anda benar.
Jimmy Breck-McKye
6

Ini bukan tentang kecepatan atau tujuan jam. Keduanya sama-sama mampu menyelesaikan sebagian besar, jika tidak semua tugas; namun beberapa sedikit lebih cocok untuk beberapa tugas daripada yang lain.

Ada argumen yang sangat tua tentang apakah lebih baik memiliki banyak core bisu atau sekelompok kecil core yang sangat cerdas. Ini kembali dengan mudah ke 80-an.

Di dalam CPU ada banyak kemungkinan perhitungan yang bisa dilakukan. Core yang lebih pintar dapat melakukan banyak perhitungan yang berbeda pada saat yang sama (seperti multi-core tetapi tidak, itu rumit; lihat paralelisme tingkat Instruksi ). Core cerdas dapat melakukan beberapa perhitungan pada saat yang sama (menambah, mengurangi, mengalikan, membagi, operasi memori) tetapi hanya satu per satu; karena ini, mereka secara fisik lebih besar (dan karena itu jauh lebih mahal) daripada dumber core

Inti bodoh jauh lebih kecil dan karena itu lebih banyak dapat ditambahkan ke satu chip tetapi tidak mampu melakukan banyak perhitungan simultan. Ada keseimbangan yang baik antara banyak core bisu dan beberapa core pintar.

Arsitektur multi-core bekerja dengan baik dengan grafik karena kalkulasi dapat dengan mudah dipecah menjadi ratusan core, tetapi juga tergantung pada kualitas kode dan apakah kode lain bergantung pada hasil satu perhitungan.

Ini adalah pertanyaan yang jauh lebih rumit daripada yang mungkin muncul. Untuk info lebih lanjut, baca artikel ini tentang desain CPU:

Mikroprosesor Modern - Panduan 90 Menit

http://www.lighterra.com/papers/modernmicroprocessors/

Silverfire
sumber
tolong permisi tata bahasa yang buruk dan secara umum gaya penulisan sub-par yang digunakan di atas, saya belum punya kopi. ini adalah konsep yang cukup rumit dan tautan yang disertakan adalah tempat Anda harus pergi jika Anda ingin lebih memahami. bukan penjelasan buruk saya
Silverfire
1
Saya telah memperbaikinya untuk Anda, dan menambahkan tautan juga.
bwDraco
5

Saya ingin membahas satu poin Sintaksis: Istilah CPU dan GPU adalah nama fungsional bukan nama arsitektur.

Jika sebuah komputer menggunakan GPU sebagai prosesor utamanya, maka ia akan menjadi "central processing unit" (CPU) terlepas dari arsitektur dan desainnya.

Andrew Neely
sumber
4

Penting untuk diingat bahwa tidak ada garis pemisah magis dalam ruang arsitektur yang membuat satu prosesor menjadi "sentral" dan satu lagi "grafis". (Ya, beberapa GPU mungkin terlalu lumpuh untuk sepenuhnya umum, tetapi itu bukan yang sedang kita bicarakan di sini.)

Perbedaannya adalah salah satu cara mereka dipasang di papan tulis dan tugas apa yang diberikan kepada mereka. Tentu saja, kami menggunakan prosesor tujuan umum (atau serangkaian prosesor tujuan umum) untuk penggerak data utama, dan unit khusus yang diparalelkan, sangat pipa untuk hal-hal (seperti grafik) agar dapat memanfaatkannya dengan sebaik-baiknya.

Sebagian besar trik rumit yang telah digunakan untuk membuat GPU melakukan hal mereka dengan sangat cepat pertama kali dikembangkan oleh orang-orang yang mencoba membuat CPU yang lebih cepat dan lebih baik. Ternyata Word dan Excel serta Netscape dan banyak hal lain yang digunakan orang-orang di komputer mereka tidak hanya tidak memanfaatkan fitur-fitur yang ditawarkan oleh chip khusus grafis tetapi bahkan berjalan lebih lambat pada arsitektur tersebut karena banyak cabang (sangat mahal) dan lambat) saluran pipa hilang.

dmckee
sumber
1
Saya pikir overhead pipa adalah detail mendasar yang hilang jawaban berperingkat lebih tinggi.
Steve
2

Inti dari adanya GPU sama sekali adalah untuk melegakan CPU dari perhitungan grafik yang mahal yang dilakukannya saat itu.
Dengan menggabungkan mereka ke satu prosesor lagi akan kembali ke tempat semuanya dimulai.

Petruza
sumber
Yup, satu langkah maju, dua langkah mundur.
Randolf Richardson
2

Untuk alasan sederhana: sebagian besar aplikasi tidak multi-threaded / vectorized.

Kartu grafis sangat bergantung pada multi threading, setidaknya dalam konsepnya.

Bandingkan mobil dengan mesin tunggal, mobil dengan satu mesin lebih kecil per roda. Dengan mobil yang terakhir, Anda perlu memerintahkan semua mesin, sesuatu yang belum diperhitungkan untuk sudut pandang pemrograman sistem.

Dengan AMD fusion, itu akan mengubah cara kita perlu memanfaatkan kekuatan pemrosesan: baik vektor, baik cepat untuk satu utas.

jokoon
sumber
2

Alasan kami masih menggunakan CPU adalah karena CPU dan GPU memiliki kelebihan unik. Lihat makalah saya berikut ini, yang diterima di ACM Computing Survey 2015, yang menyediakan diskusi konklusif dan komprehensif tentang beralih dari 'debat CPU vs GPU' ke 'komputasi kolaboratif CPU-GPU'.

Sebuah Survei Teknik Komputasi heterogen CPU-GPU

pengguna984260
sumber
1

Jika disederhanakan GPU dapat dibandingkan dengan trailer di dalam mobil. Seperti biasanya belalai sudah cukup untuk sebagian besar orang kecuali untuk kasing jika mereka membeli sesuatu yang sangat besar. Maka mereka dapat membutuhkan trailer. Sama dengan GPU, seperti biasanya sudah cukup untuk memiliki CPU biasa yang akan menyelesaikan sebagian besar tugas. Tetapi jika Anda membutuhkan perhitungan intensif di banyak utas, maka Anda dapat membutuhkan GPU

Yuriy Zaletskyy
sumber
1

GPU adalah pemroses arus yang baik. Anda dapat menganggap pemrosesan aliran sebagai mengalikan array panjang angka secara berurutan. CPU juga memiliki kemampuan pemrosesan aliran (ini disebut ekstensi SIMD) tetapi Anda tidak dapat menerapkan semua logika pemrograman sebagai pemrosesan aliran, dan kompiler memiliki opsi untuk membuat btyecode yang membuat penggunaan instruksi simd bila memungkinkan.

tidak semuanya adalah array angka. gambar dan video, mungkin terdengar juga (ada pembuka encencl di sana-sini). sehingga GPU dapat memproses, menyandikan dan mendekode gambar, video, dan hal serupa lainnya. satu kekurangannya adalah bahwa Anda tidak dapat membongkar semuanya ke GPU dalam game karena itu akan membuat gagap, GPU sibuk dengan grafis dan seharusnya menjadi hambatan dalam sistem saat bermain game. solusi optimal akan sepenuhnya memanfaatkan semua komponen dalam pc. jadi, misalnya, mesin Physx nvidia, secara default, melakukan perhitungan pada CPU ketika CPU sepenuhnya digunakan.

Uğur Gümüşhan
sumber