Adakah kita benar-benar memerlukan begitu banyak xPU?

Kemas kini: 17 November 2021

"Dalam beberapa tahun kebelakangan ini, pengumuman tentang seni bina pemproses baharu telah dikeluarkan hampir setiap hari, dengan akronim tiga huruf – TPU, IPU, NPU. Tetapi apa sebenarnya yang membezakan mereka? Adakah terdapat begitu banyak seni bina pemproses yang unik, atau adakah sesuatu yang lain berlaku?

"

Dalam beberapa tahun kebelakangan ini, pengumuman tentang seni bina pemproses baharu telah dikeluarkan hampir setiap hari, dan akronim tiga huruf-TPU, IPU, NPU telah diberikan. Tetapi apa sebenarnya yang membezakan mereka? Adakah terdapat begitu banyak seni bina pemproses yang unik, atau adakah sesuatu yang lain berlaku?

Pada 2018, John L. Hennessy dan David A. Patterson memberikan syarahan Turing bertajuk "The New Golden Age of Computer Architecture". Mereka mengambil berat tentang CPU dan perkembangannya, tetapi ini hanya sebahagian kecil daripada keseluruhan persamaan. Penyelidik IP Arteris dan arkitek sistem Michael Frank berkata: "Dari perspektif CPU, kebanyakan xPU ini bukan pemproses sebenar." “Mereka lebih seperti GPU, pemecut untuk beban kerja khas. Dan mereka mempunyai banyak kepelbagaian di dalamnya. Pembelajaran mesin ialah sejenis pemproses, anda boleh memanggilnya pemecut pembelajaran mesin secara kolektif, tetapi ia mempercepatkan bahagian pemprosesan pelbagai jenis.”

Intipati pemproses boleh direbus kepada tiga perkara. "Dalam analisis akhir, ia kembali kepada seni bina set arahan (ISA)," kata Manuel Uhm, pengarah pemasaran cip di Xilinx. “Ini mentakrifkan apa yang anda mahu lakukan. Kemudian anda mempunyai I/O dan ingatan, yang menyokong ISA dan tugasan yang cuba dicapainya. Ini akan menjadi masa yang sangat menarik pada masa hadapan, kerana kita akan melihat lebih daripada dua atau tiga tahun yang lalu Masa untuk lebih banyak inovasi dan perubahan.”

Banyak seni bina baharu bukan pemproses tunggal. "Apa yang kami lihat ialah gabungan pelbagai jenis pemproses atau enjin boleh atur cara yang wujud dalam SoC yang sama atau sistem yang sama," kata Pierre-Xavier Thomas, Pengarah Kumpulan Cadence Teknologi dan Pemasaran Strategik. “Agihkan tugas perisian kepada perkakasan yang berbeza atau enjin boleh atur cara yang fleksibel. Semua pemproses mungkin berkongsi API biasa, tetapi domain pelaksanaan akan berbeza. Di sini, anda sememangnya akan melihat pelbagai jenis pemprosesan dengan jenis ciri yang berbeza .”

Realitinya ialah kebanyakan nama adalah pemasaran.

"Intinya ialah orang ramai menggunakan nama dan akronim ini untuk dua tujuan berbeza," kata Simon Davidmann, Ketua Pegawai Eksekutif Imperas Software. “Satu digunakan untuk menerangkan seni bina pemproses, seperti SIMD (Single Instruction Multiple Data). Yang lain mentakrifkan segmen aplikasi yang ditanganinya. Jadi ia boleh mentakrifkan seni bina pemproses, atau sesuatu seperti nama Jenama unit pemprosesan tensor (TPU). Mereka menamakan seni bina heterogen atau homogen mereka, bukan pemproses individu.

Sedikit sejarah

Empat puluh tahun yang lalu, perkara menjadi lebih mudah. Pada masa itu terdapat unit pemprosesan pusat (CPU) dan terdapat banyak varian daripadanya, tetapi ia pada dasarnya adalah semua pemproses lengkap Turing dengan seni bina von Neumann. Setiap satu mempunyai set arahan berbeza yang menjadikan mereka lebih cekap untuk tugasan tertentu, dan terdapat banyak perbincangan tentang kelebihan relatif set arahan kompleks (CISC) dan set arahan terkurang (RISC).

Kemunculan RISC-V telah membawa banyak perhatian kepada ISA. "Orang ramai mahu memahami ISA kerana ISAlah yang menentukan sejauh mana pemproses dioptimumkan untuk tugas yang ditentukan," kata Uhm Xilinx. “Mereka boleh melihat ISA dan memulakan kitaran pengiraan. Jika ISA mempunyai arahan asli dan berjalan pada 1 GHz, saya boleh membandingkannya dengan ISA pemproses lain, yang mungkin memerlukan dua arahan untuk fungsi yang sama, tetapi pemproses Berjalan pada 1.5 GHz. Mana satu yang membuatkan saya pergi lebih jauh? Mereka melakukan pengiraan matematik untuk fungsi penting."

Terdapat pelbagai kaedah pembungkusan untuk CPU. Kadangkala IO atau memori diletakkan dalam pakej yang sama. Mereka dipanggil unit mikropengawal (MCU).

Apabila modem menjadi popular, pemproses isyarat digital (DSP) muncul, dan perbezaannya ialah mereka menggunakan seni bina Harvard. Ini memisahkan bas arahan daripada bas data. Sebahagian daripada mereka juga telah melaksanakan seni bina SIMD untuk menjadikan pemprosesan data lebih cekap.

Pengasingan arahan dan data adalah untuk meningkatkan daya pemprosesan, walaupun ia mengehadkan beberapa pengaturcaraan tepi yang boleh dilakukan, seperti atur cara yang ditulis sendiri. "Biasanya, syarat sempadan bukan pengiraan," kata Uhm. “Ia semakin I/O atau ingatan. Industri ini beralih daripada meningkatkan kuasa pengkomputeran kepada memastikan terdapat data yang mencukupi untuk mengekalkan kuasa pengkomputeran dan mengekalkan prestasi."

Apabila satu pemproses tidak lagi menjadi lebih pantas, mereka menyambungkan berbilang pemproses bersama-sama. Pemproses ini biasanya berkongsi memori dan mengekalkan konsep kesempurnaan Turing untuk setiap pemproses dan keseluruhan kluster pemproses. Tidak kira pada teras mana mana-mana bahagian program dilaksanakan, kerana hasilnya adalah sama.

Pembangunan utama seterusnya ialah unit pemprosesan grafik (GPU), yang melanggar konvensyen kerana setiap elemen pemprosesan atau saluran paip mempunyai ingatan sendiri dan tidak boleh ditangani di luar pemproses. Oleh kerana ingatan adalah terhad, ini bermakna ia tidak boleh melaksanakan sebarang tugas pemprosesan sewenang-wenangnya, tetapi hanya boleh melaksanakan tugas yang boleh diletakkan dalam ruang memori yang disediakan.

"Untuk jenis fungsi tertentu, GPU ialah pemproses yang sangat berkuasa, tetapi saluran paipnya sangat panjang," kata Uhm. “Saluran paip ini membolehkan unit GPU memproses data secara berterusan, tetapi pada satu ketika, jika anda perlu menyegarkan saluran paip, ia akan menjadi tamparan hebat. Banyak kependaman dan ketidakpastian terbina dalam sistem.”

Walaupun banyak pemecut lain telah ditakrifkan, GPU—dan kemudiannya GPU tujuan umum (GPGPU)—mentakrifkan paradigma pengaturcaraan dan timbunan perisian yang menjadikannya lebih mudah digunakan daripada pemecut sebelumnya. "Selama bertahun-tahun, pekerjaan tertentu telah dikhususkan," kata Davidmann dari Imperas. “Terdapat CPU untuk program berjujukan. Terdapat pemproses grafik, yang memfokuskan pada pemprosesan data untuk Skrin dan membawa kita ke dunia yang sangat selari. Menggunakan banyak elemen pemprosesan kecil untuk melaksanakan tugas. Kini terdapat tugas pembelajaran mesin.”

Apakah peraturan pembinaan lain yang boleh menerangkan semua seni bina baharu? Pada masa lalu, tatasusunan pemproses biasanya disambungkan oleh memori atau topologi rangkaian tetap (seperti mesh atau cincin). Apa yang muncul baru-baru ini ialah gabungan Rangkaian pada Cip (NoC), yang membolehkan pemproses heterogen yang diedarkan untuk berkomunikasi dengan cara yang lebih fleksibel. Pada masa hadapan, mereka juga boleh berkomunikasi tanpa menggunakan memori.

"Pada masa ini, NoC hanya membawa data," kata Frank dari Arteris. “Pada masa hadapan, NoC boleh diperluaskan ke kawasan lain di mana komunikasi antara pemecut melangkaui data. Ia boleh menghantar arahan, menghantar pemberitahuan, dsb. Keperluan komunikasi tatasusunan pemecut mungkin berbeza daripada keperluan komunikasi CPU atau SoC standard. Walau bagaimanapun, rangkaian pada cip tidak akan Mengehadkan anda kepada subset. Anda boleh mengoptimumkan dan meningkatkan prestasi dengan menyokong keperluan komunikasi khas pemecut.”

Seni bina pelaksanaan

Satu cara pembezaan pemproses adalah untuk mengoptimumkan untuk persekitaran operasi tertentu. Sebagai contoh, perisian mungkin berjalan dalam awan, tetapi anda juga boleh melaksanakan perisian yang sama pada peranti mikro IoT. Seni bina pelaksanaan akan sangat berbeza dan akan mencapai titik operasi yang berbeza dari segi prestasi, penggunaan kuasa, kos atau keupayaan untuk beroperasi dalam keadaan yang melampau.

"Sesetengah aplikasi adalah untuk pengkomputeran awan, dan kini kami membawanya lebih dekat ke tepi," kata Thomas dari Cadence. "Ini mungkin disebabkan oleh keperluan kependaman, atau tenaga atau pelesapan kuasa, yang memerlukan jenis seni bina yang berbeza. Anda mungkin mahu mempunyai susunan perisian yang sama untuk dapat dijalankan di dua lokasi. Awan perlu menyediakan fleksibiliti kerana ia akan Menerima jenis aplikasi yang berbeza, dan mesti boleh mengagregatkan sejumlah besar pengguna. Ini memerlukan perkakasan pada pelayan mempunyai keupayaan khusus aplikasi, tetapi satu saiz tidak sesuai untuk semua orang.”

ML telah meningkatkan keperluannya sendiri. "Apabila menggunakan rangkaian saraf dan pembelajaran mesin untuk membina sistem pintar, anda perlu menggunakan rangka kerja perisian dan susunan perisian am untuk memprogram rangkaian baharu dan memetakannya ke perkakasan," tambah Thomas. “Kemudian anda boleh menyesuaikan aplikasi perisian kepada perkakasan yang betul dari perspektif PPA. Ini mendorong keperluan untuk pelbagai jenis pemprosesan dan pemproses untuk dapat memenuhi keperluan ini di peringkat perkakasan."

Keperluan ini ditakrifkan oleh aplikasi. "Sebuah syarikat telah mencipta pemproses untuk operasi grafik," kata Frank. “Mereka mengoptimumkan dan mempercepatkan cara menjejak graf, dan melaksanakan operasi seperti menyusun semula graf. Terdapat kuasa kasar lain yang mempercepatkan pembelajaran mesin, iaitu pendaraban matriks. Capaian memori adalah berbeza untuk setiap seni bina Ia adalah masalah istimewa kerana apabila anda membina pemecut, matlamat paling penting adalah untuk memastikan ia sibuk. Anda perlu memindahkan seberapa banyak data yang mungkin kepada ALU kerana ia boleh digunakan dan dihasilkan.”

Kebanyakan aplikasi ini mempunyai banyak persamaan. "Mereka semua mempunyai beberapa memori tempatan, mereka mempunyai rangkaian pada cip untuk berkomunikasi, dan setiap pemproses yang melaksanakan algoritma perisian sedang memproses sekeping kecil data," kata Davidmann. "Pekerjaan ini dijadualkan oleh sistem pengendalian yang berjalan pada CPU yang lebih tradisional."

Bahagian yang sukar untuk pereka perkakasan ialah meramalkan tugas mana yang perlu mereka lakukan. "Walaupun anda akan melakukan jenis operasi yang serupa dalam beberapa lapisan, orang ramai memberi perhatian kepada pembezaan dalam lapisan," kata Thomas. “Untuk dapat memproses rangkaian saraf, beberapa jenis kuasa pemprosesan diperlukan. Ini bermakna anda perlu dapat memproses sebahagian daripada rangkaian saraf dalam beberapa cara, dan kemudian anda mungkin memerlukan jenis operasi lain untuk memproses lapisan lain. Pergerakan data Dan jumlah data juga berubah lapisan demi lapisan.”

Pembezaan ini boleh melangkaui pergerakan data. "Untuk penjujukan genom, anda perlu melakukan beberapa pemprosesan, " kata Frank. “Tetapi anda tidak boleh menggunakan satu jenis pemecut untuk mempercepatkan segala-galanya. Anda perlu membina satu set keseluruhan pemecut yang berbeza untuk saluran paip yang berbeza. CPU menjadi penjaga proses pelaksanaan pengurusan. Ia menyediakan, melaksanakan DMA, dan menyediakan pembuatan keputusan antara kedua-dua Proses. Memahami dan menganalisis algoritma serta menentukan cara anda ingin mengoptimumkan pemprosesannya ialah tugas seni bina yang lengkap."

Sebahagian daripada proses memerlukan pembahagian. “Tiada jenis pemproses tunggal yang boleh dioptimumkan untuk setiap tugas pemproses-FPGA tidak bagus, CPU tidak bagus, GPU tidak bagus, DSP juga perlu,” kata Uhm. "Kami mencipta satu siri peranti yang mengandungi semua ini, tetapi bahagian yang sukar di sisi pelanggan ialah mereka perlu menyediakan kecerdasan untuk menentukan bahagian mana dari keseluruhan sistem akan disasarkan pada pemproses atau logik boleh atur cara, atau dalam AI. enjin. Semua orang mahukan alat ajaib automatik itu, alat yang boleh membuat keputusan segera untuk meletakkannya pada CPU, meletakkannya pada FPGA, dan meletakkannya pada GPU. Alat itu tidak wujud hari ini.”

Namun begitu, CPU akan sentiasa memainkan peranan. "CPU diperlukan untuk melaksanakan bahagian program yang tidak teratur," kata Frank. “Kebolehprograman umum CPU mempunyai kelebihannya. Jika anda mempunyai struktur data khusus atau operasi matematik, ia tidak akan berfungsi dengan baik. CPU ialah pemproses tujuan umum dan ia tidak dioptimumkan untuk apa-apa. Ia tidak baik pada apa-apa. .”

Tukar "abstrak"

Pada masa lalu, sempadan perkakasan/perisian telah ditakrifkan oleh ISA, dan memori boleh ditangani secara berterusan. Apabila terdapat berbilang pemproses, mereka biasanya sejajar dengan memori.

"Konsistensi adalah kontrak," kata Frank. “Konsistensi seperti ini sangat penting dan tidak akan hilang. Tetapi anda boleh bayangkan bahawa dalam enjin aliran data, konsistensi tidak begitu penting, kerana anda memindahkan data yang bergerak di tepi terus dari satu pemecut ke yang lain. Jika anda Dengan membahagikan set data, konsistensi akan menjadi halangan kerana ia akan menelan kos kitaran tambahan. Anda mesti menyemak maklumat. Anda mesti memberikan maklumat terkini.”

Ini memerlukan seni bina ingatan yang berbeza. "Anda perlu memikirkan struktur ingatan, kerana anda hanya mempunyai ingatan yang sangat rapat," kata Uhm. “Anda boleh mengakses memori bersebelahan, tetapi anda akan kehabisan memori bersebelahan dengan cepat dan tidak boleh diakses dalam masa. Ini mesti difahami dalam reka bentuk. Apabila alat semakin matang, alat akan mula mempelajari lebih lanjut. Hari ini, Ia dilakukan oleh kecerdasan manusia, dapat memahami seni bina dan menerapkannya."

Tahap abstraksi yang lebih tinggi juga diperlukan. "Sesetengah rangka kerja boleh memetakan atau menyusun rangkaian yang diketahui untuk menyasarkan perkakasan," kata Thomas. “Anda mempunyai satu set kernel atau API peringkat rendah yang akan digunakan dalam timbunan perisian dan kemudiannya digunakan oleh pemeta rangkaian saraf. Di bawah, anda mungkin mempunyai jenis perkakasan yang berbeza, bergantung pada perkara yang ingin anda capai, bergantung pada butiran produk Anda. Ia mencapai fungsi yang sama, tetapi ia tidak menggunakan perkakasan yang sama atau pertukaran PPA yang sama."

Ini memberi banyak tekanan kepada penyusun tersebut. "Persoalan utama ialah bagaimana anda memprogramkan pemecut pada masa hadapan?" Frank bertanya. “Adakah anda telah melaksanakan enjin berwayar keras seperti generasi pertama GPU? Atau adakah anda telah membina enjin kecil yang boleh diprogramkan dengan set arahan anda sendiri? Kini anda perlu memprogramkan perkara ini secara berasingan dan meletakkannya dalam Setiap daripadanya disambungkan kepada aliran data untuk melaksanakan tugas. Satu pemproses mempunyai subset tertentu daripada keseluruhan set arahan, dan pemproses yang lain mempunyai subset yang berbeza, dan mereka semua akan berkongsi beberapa bahagian bertindih aliran kawalan. Anda mungkin mempunyai beberapa Produk dengan keupayaan pecutan yang sedikit berbeza. Penyusun atau perpustakaan yang memahaminya akan memetakan dengan sewajarnya.”

Ringkaskan

Seni bina pemproses tidak berubah. Mereka masih mengikut pilihan yang sama yang telah wujud sejak 40 tahun lalu. Apa yang berubah ialah cara cip itu dibina. Ia kini mengandungi sejumlah besar pemproses heterogen dengan memori dan komunikasi yang dioptimumkan untuk subset tugas aplikasi. Setiap cip membuat pilihan yang berbeza untuk fungsi pemproses dan tujuan pengoptimumannya, pemprosesan data yang diperlukan dan aliran data yang biasanya dilihatnya.

Setiap pembekal perkakasan ingin membezakan cipnya sendiri daripada cip lain, tetapi lebih mudah untuk mempromosikan melalui penjenamaan daripada bercakap tentang butiran teknikal dalaman. Jadi mereka memberikannya nama, memanggilnya yang pertama, terpantas dan terbesar, dan memautkannya kepada jenis masalah aplikasi tertentu. Akronim tiga huruf ini telah menjadi nama tugas aplikasi, tetapi ia tidak mentakrifkan seni bina perkakasan.

Dalam beberapa tahun kebelakangan ini, pengumuman tentang seni bina pemproses baharu telah dikeluarkan hampir setiap hari, dengan akronim tiga huruf – TPU, IPU, NPU. Tetapi apa sebenarnya yang membezakan mereka? Adakah terdapat begitu banyak seni bina pemproses yang unik, atau adakah sesuatu yang lain berlaku?

Pada 2018, John L. Hennessy dan David A. Patterson memberikan syarahan Turing bertajuk "The New Golden Age of Computer Architecture". Mereka mengambil berat tentang CPU dan perkembangannya, tetapi ini hanya sebahagian kecil daripada keseluruhan persamaan. Penyelidik IP Arteris dan arkitek sistem Michael Frank berkata: "Dari perspektif CPU, kebanyakan xPU ini bukan pemproses sebenar." “Mereka lebih seperti GPU, pemecut untuk beban kerja khas. Dan mereka mempunyai banyak kepelbagaian di dalamnya. Pembelajaran mesin ialah sejenis pemproses, anda boleh memanggilnya pemecut pembelajaran mesin secara kolektif, tetapi ia mempercepatkan bahagian pemprosesan pelbagai jenis.”

Intipati pemproses boleh direbus kepada tiga perkara. "Dalam analisis akhir, ia kembali kepada seni bina set arahan (ISA)," kata Manuel Uhm, pengarah pemasaran cip di Xilinx. “Ini mentakrifkan apa yang anda mahu lakukan. Kemudian anda mempunyai I/O dan ingatan, yang menyokong ISA dan tugasan yang cuba dicapainya. Ini akan menjadi masa yang sangat menarik pada masa hadapan, kerana kita akan melihat lebih daripada dua atau tiga tahun yang lalu Masa untuk lebih banyak inovasi dan perubahan.”

Banyak seni bina baharu bukan pemproses tunggal. "Apa yang kami lihat ialah gabungan pelbagai jenis pemproses atau enjin boleh atur cara yang wujud dalam SoC yang sama atau sistem yang sama," kata Pierre-Xavier Thomas, pengarah Kumpulan Pemasaran Teknologi dan Strategik Cadence. “Agihkan tugas perisian kepada perkakasan yang berbeza atau enjin boleh atur cara yang fleksibel. Semua pemproses mungkin berkongsi API biasa, tetapi domain pelaksanaan akan berbeza. Di sini, anda sememangnya akan melihat pelbagai jenis pemprosesan dengan jenis ciri yang berbeza .”

Realitinya ialah kebanyakan nama adalah pemasaran.

"Intinya ialah orang ramai menggunakan nama dan akronim ini untuk dua tujuan berbeza," kata Simon Davidmann, Ketua Pegawai Eksekutif Imperas Software. “Satu digunakan untuk menerangkan seni bina pemproses, seperti SIMD (Single Instruction Multiple Data). Yang lain mentakrifkan segmen aplikasi yang ditanganinya. Jadi ia boleh mentakrifkan seni bina pemproses, atau sesuatu seperti nama Jenama unit pemprosesan tensor (TPU). Mereka menamakan seni bina heterogen atau homogen mereka, bukan pemproses individu.

Sedikit sejarah

Empat puluh tahun yang lalu, perkara menjadi lebih mudah. Pada masa itu terdapat unit pemprosesan pusat (CPU) dan terdapat banyak varian daripadanya, tetapi ia pada dasarnya adalah semua pemproses lengkap Turing dengan seni bina von Neumann. Setiap satu mempunyai set arahan berbeza yang menjadikan mereka lebih cekap untuk tugasan tertentu, dan terdapat banyak perbincangan tentang kelebihan relatif set arahan kompleks (CISC) dan set arahan terkurang (RISC).

Kemunculan RISC-V telah membawa banyak perhatian kepada ISA. "Orang ramai mahu memahami ISA kerana ISAlah yang menentukan sejauh mana pemproses dioptimumkan untuk tugas yang ditentukan," kata Uhm Xilinx. “Mereka boleh melihat ISA dan memulakan kitaran pengiraan. Jika ISA mempunyai arahan asli dan berjalan pada 1 GHz, saya boleh membandingkannya dengan ISA pemproses lain, yang mungkin memerlukan dua arahan untuk fungsi yang sama, tetapi pemproses Berjalan pada 1.5 GHz. Mana satu yang membuatkan saya pergi lebih jauh? Mereka melakukan pengiraan matematik untuk fungsi penting."

Terdapat pelbagai kaedah pembungkusan untuk CPU. Kadangkala IO atau memori diletakkan dalam pakej yang sama. Mereka dipanggil unit mikropengawal (MCU).

Apabila modem menjadi popular, pemproses isyarat digital (DSP) muncul, dan perbezaannya ialah mereka menggunakan seni bina Harvard. Ini memisahkan bas arahan daripada bas data. Sebahagian daripada mereka juga telah melaksanakan seni bina SIMD untuk menjadikan pemprosesan data lebih cekap.

Pengasingan arahan dan data adalah untuk meningkatkan daya pemprosesan, walaupun ia mengehadkan beberapa pengaturcaraan tepi yang boleh dilakukan, seperti atur cara yang ditulis sendiri. "Biasanya, syarat sempadan bukan pengiraan," kata Uhm. “Ia semakin I/O atau ingatan. Industri ini beralih daripada meningkatkan kuasa pengkomputeran kepada memastikan terdapat data yang mencukupi untuk mengekalkan kuasa pengkomputeran dan mengekalkan prestasi."

Apabila satu pemproses tidak lagi menjadi lebih pantas, mereka menyambungkan berbilang pemproses bersama-sama. Pemproses ini biasanya berkongsi memori dan mengekalkan konsep kesempurnaan Turing untuk setiap pemproses dan keseluruhan kluster pemproses. Tidak kira pada teras mana mana-mana bahagian program dilaksanakan, kerana hasilnya adalah sama.

Pembangunan utama seterusnya ialah unit pemprosesan grafik (GPU), yang melanggar konvensyen kerana setiap elemen pemprosesan atau saluran paip mempunyai ingatan sendiri dan tidak boleh ditangani di luar pemproses. Oleh kerana ingatan adalah terhad, ini bermakna ia tidak boleh melaksanakan sebarang tugas pemprosesan sewenang-wenangnya, tetapi hanya boleh melaksanakan tugas yang boleh diletakkan dalam ruang memori yang disediakan.

"Untuk jenis fungsi tertentu, GPU ialah pemproses yang sangat berkuasa, tetapi saluran paipnya sangat panjang," kata Uhm. “Saluran paip ini membolehkan unit GPU memproses data secara berterusan, tetapi pada satu ketika, jika anda perlu menyegarkan saluran paip, ia akan menjadi tamparan hebat. Banyak kependaman dan ketidakpastian terbina dalam sistem.”

Walaupun banyak pemecut lain telah ditakrifkan, GPU—dan kemudiannya GPU tujuan umum (GPGPU)—mentakrifkan paradigma pengaturcaraan dan timbunan perisian yang menjadikannya lebih mudah digunakan daripada pemecut sebelumnya. "Selama bertahun-tahun, pekerjaan tertentu telah dikhususkan," kata Davidmann dari Imperas. “Terdapat CPU untuk program berjujukan. Terdapat pemproses grafik, yang memfokuskan pada pemprosesan data untuk skrin dan membawa kita ke dunia yang sangat selari. Menggunakan banyak elemen pemprosesan kecil untuk melaksanakan tugas. Kini terdapat tugas pembelajaran mesin.”

Apakah peraturan pembinaan lain yang boleh menerangkan semua seni bina baharu? Pada masa lalu, tatasusunan pemproses biasanya disambungkan melalui memori atau topologi rangkaian tetap (seperti mesh atau cincin). Apa yang muncul baru-baru ini ialah gabungan Rangkaian pada Cip (NoC), yang membolehkan pemproses heterogen yang diedarkan untuk berkomunikasi dengan cara yang lebih fleksibel. Pada masa hadapan, mereka juga boleh berkomunikasi tanpa menggunakan ingatan.

"Pada masa ini, NoC hanya membawa data," kata Frank dari Arteris. “Pada masa hadapan, NoC boleh diperluaskan ke kawasan lain di mana komunikasi antara pemecut melangkaui data. Ia boleh menghantar arahan, menghantar pemberitahuan, dsb. Keperluan komunikasi tatasusunan pemecut mungkin berbeza daripada keperluan komunikasi CPU atau SoC standard. Walau bagaimanapun, rangkaian pada cip tidak akan Mengehadkan anda kepada subset. Anda boleh mengoptimumkan dan meningkatkan prestasi dengan menyokong keperluan komunikasi khas pemecut.”

Seni bina pelaksanaan

Satu cara pembezaan pemproses adalah untuk mengoptimumkan untuk persekitaran operasi tertentu. Sebagai contoh, perisian mungkin berjalan dalam awan, tetapi anda juga boleh melaksanakan perisian yang sama pada peranti mikro IoT. Seni bina pelaksanaan akan sangat berbeza dan akan mencapai titik operasi yang berbeza dari segi prestasi, penggunaan kuasa, kos atau keupayaan untuk beroperasi dalam keadaan yang melampau.

"Sesetengah aplikasi adalah untuk pengkomputeran awan, dan kini kami membawanya lebih dekat ke tepi," kata Thomas dari Cadence. "Ini mungkin disebabkan oleh keperluan kependaman, atau tenaga atau pelesapan kuasa, yang memerlukan jenis seni bina yang berbeza. Anda mungkin mahu mempunyai susunan perisian yang sama untuk dapat dijalankan di dua lokasi. Awan perlu menyediakan fleksibiliti kerana ia akan Menerima jenis aplikasi yang berbeza, dan mesti boleh mengagregatkan sejumlah besar pengguna. Ini memerlukan perkakasan pada pelayan mempunyai keupayaan khusus aplikasi, tetapi satu saiz tidak sesuai untuk semua orang.”

ML telah meningkatkan keperluannya sendiri. "Apabila menggunakan rangkaian saraf dan pembelajaran mesin untuk membina sistem pintar, anda perlu menggunakan rangka kerja perisian dan susunan perisian am untuk memprogram rangkaian baharu dan memetakannya ke perkakasan," tambah Thomas. “Kemudian anda boleh menyesuaikan aplikasi perisian kepada perkakasan yang betul dari perspektif PPA. Ini mendorong keperluan untuk pelbagai jenis pemprosesan dan pemproses untuk dapat memenuhi keperluan ini di peringkat perkakasan."

Keperluan ini ditakrifkan oleh aplikasi. "Sebuah syarikat telah mencipta pemproses untuk operasi grafik," kata Frank. “Mereka mengoptimumkan dan mempercepatkan cara menjejak graf, dan melaksanakan operasi seperti menyusun semula graf. Terdapat kuasa kasar lain yang mempercepatkan pembelajaran mesin, iaitu pendaraban matriks. Capaian memori adalah berbeza untuk setiap seni bina Ia adalah masalah istimewa kerana apabila anda membina pemecut, matlamat paling penting adalah untuk memastikan ia sibuk. Anda perlu memindahkan seberapa banyak data yang mungkin kepada ALU kerana ia boleh digunakan dan dihasilkan.”

Kebanyakan aplikasi ini mempunyai banyak persamaan. "Mereka semua mempunyai beberapa memori tempatan, mereka mempunyai rangkaian pada cip untuk berkomunikasi, dan setiap pemproses yang melaksanakan algoritma perisian sedang memproses sekeping kecil data," kata Davidmann. "Pekerjaan ini dijadualkan oleh sistem pengendalian yang berjalan pada CPU yang lebih tradisional."

Bahagian yang sukar untuk pereka perkakasan ialah meramalkan tugas mana yang perlu mereka lakukan. "Walaupun anda akan melakukan jenis operasi yang serupa dalam beberapa lapisan, orang ramai memberi perhatian kepada pembezaan dalam lapisan," kata Thomas. “Untuk dapat memproses rangkaian saraf, beberapa jenis kuasa pemprosesan diperlukan. Ini bermakna anda perlu dapat memproses sebahagian daripada rangkaian saraf dalam beberapa cara, dan kemudian anda mungkin memerlukan jenis operasi lain untuk memproses lapisan lain. Pergerakan data Dan jumlah data juga berubah lapisan demi lapisan.”

Pembezaan ini boleh melangkaui pergerakan data. "Untuk penjujukan genom, anda perlu melakukan beberapa pemprosesan, " kata Frank. “Tetapi anda tidak boleh menggunakan satu jenis pemecut untuk mempercepatkan segala-galanya. Anda perlu membina satu set keseluruhan pemecut yang berbeza untuk saluran paip yang berbeza. CPU menjadi penjaga proses pelaksanaan pengurusan. Ia menyediakan, melaksanakan DMA, dan menyediakan pembuatan keputusan antara kedua-dua Proses. Memahami dan menganalisis algoritma serta menentukan cara anda ingin mengoptimumkan pemprosesannya ialah tugas seni bina yang lengkap."

Sebahagian daripada proses memerlukan pembahagian. "Tiada jenis pemproses tunggal yang boleh dioptimumkan untuk setiap tugas pemproses - FPGA tidak bagus, CPU tidak bagus, GPU tidak bagus, DSP juga perlu," kata Uhm. "Kami mencipta satu siri peranti yang mengandungi semua ini, tetapi bahagian yang sukar di sisi pelanggan ialah mereka perlu menyediakan kecerdasan untuk menentukan bahagian mana dari keseluruhan sistem akan disasarkan pada pemproses atau logik boleh atur cara, atau dalam AI. enjin. Semua orang mahukan alat ajaib automatik itu, alat yang boleh membuat keputusan segera untuk meletakkannya pada CPU, meletakkannya pada FPGA, dan meletakkannya pada GPU. Alat itu tidak wujud hari ini.”

Namun begitu, CPU akan sentiasa memainkan peranan. "CPU diperlukan untuk melaksanakan bahagian program yang tidak teratur," kata Frank. “Kebolehprograman umum CPU mempunyai kelebihannya. Jika anda mempunyai struktur data khusus atau operasi matematik, ia tidak akan berfungsi dengan baik. CPU ialah pemproses tujuan umum dan ia tidak dioptimumkan untuk apa-apa. Ia tidak bagus dalam apa-apa pun.”

Tukar "abstrak"

Pada masa lalu, sempadan perkakasan/perisian telah ditakrifkan oleh ISA, dan memori boleh ditangani secara berterusan. Apabila terdapat berbilang pemproses, mereka biasanya sejajar dengan memori.

"Konsistensi adalah kontrak," kata Frank. “Konsistensi seperti ini sangat penting dan tidak akan hilang. Tetapi anda boleh bayangkan bahawa dalam enjin aliran data, konsistensi tidak begitu penting, kerana anda memindahkan data yang bergerak di tepi terus dari satu pemecut ke yang lain. Jika anda Dengan membahagikan set data, konsistensi akan menjadi halangan kerana ia akan menelan kos kitaran tambahan. Anda mesti menyemak maklumat. Anda mesti memberikan maklumat terkini.”

Ini memerlukan seni bina ingatan yang berbeza. "Anda perlu memikirkan struktur ingatan, kerana anda hanya mempunyai ingatan yang sangat rapat," kata Uhm. “Anda boleh mengakses memori bersebelahan, tetapi anda akan kehabisan memori bersebelahan dengan cepat dan tidak boleh diakses dalam masa. Ini mesti difahami dalam reka bentuk. Apabila alat semakin matang, alat akan mula mempelajari lebih lanjut. Hari ini, Ia dilakukan oleh kecerdasan manusia, dapat memahami seni bina dan menerapkannya."

Tahap abstraksi yang lebih tinggi juga diperlukan. "Sesetengah rangka kerja boleh memetakan atau menyusun rangkaian yang diketahui untuk menyasarkan perkakasan," kata Thomas. “Anda mempunyai satu set kernel atau API peringkat rendah yang akan digunakan dalam timbunan perisian dan kemudiannya digunakan oleh pemeta rangkaian saraf. Di bawah, anda mungkin mempunyai jenis perkakasan yang berbeza, bergantung pada perkara yang ingin anda capai, bergantung pada butiran produk Anda. Ia mencapai fungsi yang sama, tetapi ia tidak menggunakan perkakasan yang sama atau pertukaran PPA yang sama."

Ini memberi banyak tekanan kepada penyusun tersebut. "Persoalan utama ialah bagaimana anda memprogramkan pemecut pada masa hadapan?" Frank bertanya. “Adakah anda telah melaksanakan enjin berwayar keras seperti generasi pertama GPU? Atau adakah anda telah membina enjin kecil yang boleh diprogramkan dengan set arahan anda sendiri? Kini anda perlu memprogramkan perkara ini secara berasingan dan meletakkannya dalam Setiap daripadanya disambungkan kepada aliran data untuk melaksanakan tugas. Satu pemproses mempunyai subset tertentu daripada keseluruhan set arahan, dan pemproses yang lain mempunyai subset yang berbeza, dan mereka semua akan berkongsi beberapa bahagian bertindih aliran kawalan. Anda mungkin mempunyai beberapa Produk dengan keupayaan pecutan yang sedikit berbeza. Penyusun atau perpustakaan yang memahaminya akan memetakan dengan sewajarnya.”

Ringkaskan

Seni bina pemproses tidak berubah. Mereka masih mengikut pilihan yang sama yang telah wujud sejak 40 tahun lalu. Apa yang berubah ialah cara cip itu dibina. Ia kini mengandungi sejumlah besar pemproses heterogen dengan memori dan komunikasi yang dioptimumkan untuk subset tugas aplikasi. Setiap cip membuat pilihan yang berbeza untuk fungsi pemproses dan tujuan pengoptimumannya, pemprosesan data yang diperlukan dan aliran data yang biasanya dilihatnya.

Setiap pembekal perkakasan ingin membezakan cipnya sendiri daripada cip lain, tetapi lebih mudah untuk mempromosikan melalui penjenamaan daripada bercakap tentang butiran teknikal dalaman. Jadi mereka memberikannya nama, memanggilnya yang pertama, terpantas dan terbesar, dan memautkannya kepada jenis masalah aplikasi tertentu. Akronim tiga huruf ini telah menjadi nama tugas aplikasi, tetapi ia tidak mentakrifkan seni bina perkakasan.