Apakah kita benar-benar membutuhkan begitu banyak xPU?

Pembaruan: 17 November 2021

"Dalam beberapa tahun terakhir, pengumuman tentang arsitektur prosesor baru telah dikeluarkan hampir setiap hari, dengan akronim tiga huruf – TPU, IPU, NPU. Tapi apa yang benar-benar membedakan mereka? Apakah benar-benar ada begitu banyak arsitektur prosesor yang unik, atau adakah hal lain yang terjadi?

"

Dalam beberapa tahun terakhir, pengumuman tentang arsitektur prosesor baru telah dikeluarkan hampir setiap hari, dan akronim tiga huruf-TPU, IPU, NPU telah diberikan. Tapi apa yang benar-benar membedakan mereka? Apakah ada begitu banyak arsitektur prosesor yang unik, atau ada hal lain yang terjadi?

Pada tahun 2018, John L. Hennessy dan David A. Patterson memberikan kuliah Turing berjudul “The New Golden Age of Computer Architecture”. Mereka prihatin dengan CPU dan perkembangannya, tetapi ini hanya sebagian kecil dari keseluruhan persamaan. Peneliti Arteris IP dan arsitek sistem Michael Frank mengatakan: "Dari perspektif CPU, sebagian besar xPU ini bukan prosesor nyata." “Mereka lebih seperti GPU, akselerator untuk beban kerja khusus. Dan mereka memiliki banyak keragaman di dalamnya. Pembelajaran mesin adalah jenis prosesor, Anda dapat menyebutnya akselerator pembelajaran mesin secara kolektif, tetapi mereka mempercepat bagian pemrosesan dari berbagai.

Inti dari prosesor dapat diringkas menjadi tiga hal. “Dalam analisis akhir, itu kembali ke arsitektur set instruksi (ISA),” kata Manuel Uhm, direktur pemasaran chip di Xilinx. “Ini menentukan apa yang ingin Anda lakukan. Kemudian Anda memiliki I/O dan memori, yang mendukung ISA dan tugas-tugas yang coba diselesaikannya. Ini akan menjadi waktu yang sangat menarik di masa depan, karena kita akan melihat lebih dari dua atau tiga tahun terakhir Waktu untuk lebih banyak inovasi dan perubahan.”

Banyak arsitektur baru yang bukan merupakan prosesor tunggal. “Apa yang kami lihat adalah kombinasi berbagai jenis prosesor atau mesin yang dapat diprogram yang ada di SoC atau sistem yang sama,” kata Pierre-Xavier Thomas, Group Director Cadence. Teknologi dan Pemasaran Strategis. “Bagikan tugas perangkat lunak ke perangkat keras berbeda atau mesin fleksibel yang dapat diprogram. Semua prosesor mungkin berbagi API yang sama, tetapi domain eksekusinya akan berbeda. Di sini, Anda memang akan melihat berbagai jenis pemrosesan dengan karakteristik yang berbeda-beda.”

Kenyataannya adalah bahwa sebagian besar nama adalah pemasaran.

“Intinya adalah orang menggunakan nama dan akronim ini untuk dua tujuan yang berbeda,” kata Simon Davidmann, CEO Imperas Software. “Salah satunya digunakan untuk menjelaskan arsitektur prosesor, seperti SIMD (Single Instruction Multiple Data). Yang lain mendefinisikan segmen aplikasi yang ditanganinya. Jadi itu dapat menentukan arsitektur prosesor, atau sesuatu seperti nama merek unit pemrosesan tensor (TPU). Mereka menamai arsitektur mereka yang heterogen atau homogen, bukan prosesor individual.”

Sedikit sejarah

Empat puluh tahun yang lalu, segalanya jauh lebih sederhana. Saat itu ada central processing unit (CPU) dan ada banyak variannya, tetapi pada dasarnya semuanya adalah prosesor Turing-complete dengan arsitektur von Neumann. Masing-masing memiliki set instruksi berbeda yang membuatnya lebih efisien untuk tugas-tugas tertentu, dan ada banyak diskusi tentang keuntungan relatif dari set instruksi kompleks (CISC) dan set instruksi yang dikurangi (RISC).

Munculnya RISC-V telah membawa banyak perhatian pada ISA. “Orang ingin memahami ISA karena ISAlah yang menentukan seberapa optimal prosesor untuk tugas yang ditentukan,” kata Uhm dari Xilinx. “Mereka dapat melihat ISA dan memulai siklus perhitungan. Jika ISA memiliki instruksi asli dan berjalan pada 1 GHz, saya dapat membandingkannya dengan ISA prosesor lain, yang mungkin memerlukan dua instruksi untuk fungsi yang sama, tetapi prosesor berjalan pada 1.5 GHz. Mana yang membuat saya melangkah lebih jauh? Mereka melakukan perhitungan matematis untuk fungsi-fungsi penting.”

Ada beberapa metode pengemasan untuk CPU. Terkadang IO atau memori ditempatkan dalam paket yang sama. Mereka disebut unit mikrokontroler (MCU).

Ketika modem menjadi populer, prosesor sinyal digital (DSP) muncul, dan perbedaannya adalah mereka menggunakan arsitektur Harvard. Ini memisahkan bus perintah dari bus data. Beberapa diantaranya juga telah mengimplementasikan arsitektur SIMD agar pengolahan data menjadi lebih efisien.

Pemisahan instruksi dan data adalah untuk meningkatkan throughput, meskipun membatasi beberapa pemrograman tepi yang dapat dilakukan, seperti program yang ditulis sendiri. “Biasanya syarat batas bukan perhitungan,” kata Uhm. “Ini semakin I/O atau memori. Industri sedang beralih dari peningkatan daya komputasi ke memastikan bahwa ada cukup data untuk mempertahankan daya komputasi dan mempertahankan kinerja.”

Ketika satu prosesor tidak lagi menjadi lebih cepat, mereka menghubungkan beberapa prosesor bersama-sama. Prosesor ini biasanya berbagi memori dan mempertahankan konsep kelengkapan Turing untuk setiap prosesor dan seluruh cluster prosesor. Tidak masalah pada inti mana setiap bagian dari program dijalankan, karena hasilnya sama.

Perkembangan besar berikutnya adalah unit pemrosesan grafis (GPU), yang melanggar konvensi karena setiap elemen pemrosesan atau saluran memiliki memorinya sendiri dan tidak dapat ditangani di luar prosesor. Karena memori terbatas, ini berarti ia tidak dapat melakukan tugas pemrosesan sembarang, tetapi hanya dapat melakukan tugas yang dapat ditempatkan di ruang memori yang disediakan.

“Untuk jenis fungsi tertentu, GPU adalah prosesor yang sangat kuat, tetapi jalur pipanya sangat panjang,” Uhm menunjukkan. “Pipa pipa ini memungkinkan unit GPU untuk terus memproses data, tetapi pada titik tertentu, jika Anda harus menyegarkan pipa, itu akan menjadi pukulan besar. Banyak latensi dan ketidakpastian dibangun ke dalam sistem. ”

Meskipun banyak akselerator lain telah ditentukan, GPU—dan kemudian GPU tujuan umum (GPGPU)—mendefinisikan paradigma pemrograman dan tumpukan perangkat lunak yang membuatnya lebih mudah digunakan daripada akselerator sebelumnya. “Selama bertahun-tahun, pekerjaan tertentu telah dispesialisasikan,” kata Davidmann dari Imperas. “Ada CPU untuk program sekuensial. Ada prosesor grafis, yang berfokus pada pemrosesan data untuk Layar dan membawa kita ke dunia yang sangat paralel. Menggunakan banyak elemen pemrosesan kecil untuk melakukan tugas. Sekarang ada tugas pembelajaran mesin.”

Apa aturan konstruksi lain yang dapat menjelaskan semua arsitektur baru? Di masa lalu, array prosesor biasanya dihubungkan oleh memori atau topologi jaringan tetap (seperti mesh atau ring). Apa yang baru-baru ini muncul adalah kombinasi Network on Chip (NoC), yang memungkinkan prosesor heterogen terdistribusi untuk berkomunikasi dengan cara yang lebih fleksibel. Di masa depan, mereka juga dapat berkomunikasi tanpa menggunakan memori.

“Saat ini, NoC hanya membawa data,” kata Frank dari Arteris. “Di masa depan, NoC dapat diperluas ke area lain di mana komunikasi antar akselerator melampaui data. Itu dapat mengirim perintah, mengirim pemberitahuan, dll. Persyaratan komunikasi array akselerator mungkin berbeda dari persyaratan komunikasi CPU atau SoC standar. Namun, jaringan pada chip tidak akan Membatasi Anda ke subset. Anda dapat mengoptimalkan dan meningkatkan kinerja dengan mendukung kebutuhan komunikasi khusus akselerator.”

Arsitektur implementasi

Salah satu cara diferensiasi prosesor adalah untuk mengoptimalkan lingkungan operasi tertentu. Misalnya, perangkat lunak dapat berjalan di cloud, tetapi Anda juga dapat menjalankan perangkat lunak yang sama pada perangkat IoT mikro. Arsitektur implementasi akan sangat berbeda dan akan mencapai titik operasi yang berbeda dalam hal kinerja, konsumsi daya, biaya, atau kemampuan untuk beroperasi dalam kondisi ekstrim.

“Beberapa aplikasi untuk komputasi awan, dan sekarang kami membawa mereka lebih dekat ke tepi,” kata Thomas dari Cadence. “Ini mungkin karena persyaratan latensi, atau disipasi energi atau daya, yang akan memerlukan jenis arsitektur yang berbeda. Anda mungkin ingin memiliki tumpukan perangkat lunak yang sama persis untuk dapat dijalankan di dua lokasi. Awan perlu memberikan fleksibilitas karena akan menerima berbagai jenis aplikasi, dan harus dapat mengumpulkan sejumlah besar pengguna. Ini membutuhkan perangkat keras di server untuk memiliki kemampuan khusus aplikasi, tetapi satu ukuran tidak cocok untuk semua orang.”

ML telah meningkatkan persyaratannya sendiri. “Saat menggunakan jaringan saraf dan pembelajaran mesin untuk membangun sistem cerdas, Anda perlu menggunakan kerangka kerja perangkat lunak dan tumpukan perangkat lunak umum untuk memprogram jaringan baru dan memetakannya ke perangkat keras,” tambah Thomas. “Kemudian Anda dapat menyesuaikan aplikasi perangkat lunak ke perangkat keras yang tepat dari perspektif PPA. Ini mendorong kebutuhan akan berbagai jenis pemrosesan dan prosesor untuk dapat memenuhi kebutuhan ini di tingkat perangkat keras.”

Persyaratan ini ditentukan oleh aplikasi. “Sebuah perusahaan telah menciptakan prosesor untuk operasi grafis,” kata Frank. “Mereka mengoptimalkan dan mempercepat cara melacak grafik, dan melakukan operasi seperti menyusun ulang grafik. Ada brute force lain yang mempercepat machine learning, yaitu perkalian matriks. Akses memori berbeda untuk setiap arsitektur Ini masalah khusus karena ketika Anda membuat akselerator, tujuan terpenting adalah membuatnya tetap sibuk. Anda harus mentransfer data sebanyak mungkin ke ALU karena dapat dikonsumsi dan diproduksi.”

Banyak dari aplikasi ini memiliki banyak kesamaan. “Mereka semua memiliki beberapa memori lokal, mereka memiliki jaringan pada sebuah chip untuk berkomunikasi, dan setiap prosesor yang mengeksekusi algoritma perangkat lunak memproses sebagian kecil data,” kata Davidmann. “Pekerjaan ini dijadwalkan oleh sistem operasi yang berjalan pada CPU yang lebih tradisional.”

Bagian yang sulit bagi perancang perangkat keras adalah memprediksi tugas mana yang harus mereka lakukan. "Meskipun Anda akan melakukan jenis operasi serupa di beberapa lapisan, orang-orang memperhatikan diferensiasi di lapisan," kata Thomas. “Untuk dapat memproses jaringan saraf, diperlukan beberapa jenis kekuatan pemrosesan. Ini berarti bahwa Anda harus dapat memproses bagian dari jaringan saraf dengan cara tertentu, dan kemudian Anda mungkin memerlukan jenis operasi lain untuk memproses lapisan lain. Pergerakan data Dan jumlah data juga berubah lapis demi lapis.”

Diferensiasi ini dapat melampaui pergerakan data. “Untuk pengurutan genom, Anda perlu melakukan beberapa pemrosesan,” kata Frank. “Tapi Anda tidak bisa menggunakan satu jenis akselerator untuk mempercepat segalanya. Anda harus membangun seluruh rangkaian akselerator yang berbeda untuk saluran pipa yang berbeda. CPU menjadi penjaga proses eksekusi manajemen. Ini mengatur, mengeksekusi DMA, dan menyediakan pengambilan keputusan antara dua Proses. Memahami dan menganalisis algoritme dan menentukan bagaimana Anda ingin mengoptimalkan pemrosesannya adalah tugas arsitektur yang lengkap.”

Bagian dari proses membutuhkan partisi. “Tidak ada satu jenis prosesor yang dapat dioptimalkan untuk setiap tugas prosesor.FPGA kurang bagus, CPU kurang bagus, GPU kurang bagus, DSP juga perlu,” kata Uhm. “Kami membuat serangkaian perangkat yang berisi semua ini, tetapi bagian yang sulit di sisi pelanggan adalah mereka harus menyediakan kecerdasan untuk menentukan bagian mana dari keseluruhan sistem yang akan ditargetkan pada prosesor atau logika yang dapat diprogram, atau di AI. mesin. Semua orang menginginkan Alat ajaib otomatis itu, alat yang dapat segera memutuskan untuk meletakkannya di CPU, meletakkannya di FPGA, dan meletakkannya di GPU. Alat itu tidak ada hari ini.”

Meskipun demikian, CPU akan selalu berperan. “CPU diperlukan untuk menjalankan bagian program yang tidak teratur,” kata Frank. “Kemampuan program secara umum dari CPU memiliki kelebihan. Jika Anda memiliki struktur data khusus atau operasi matematika, itu tidak akan berfungsi dengan baik. CPU adalah prosesor tujuan umum dan tidak dioptimalkan untuk apa pun. Itu tidak bagus dalam hal apa pun. .”

Ubah "abstrak"

Di masa lalu, batas perangkat keras/perangkat lunak ditentukan oleh ISA, dan memori terus-menerus dapat dialamatkan. Ketika ada beberapa prosesor, mereka biasanya disejajarkan dengan memori.

“Konsistensi adalah sebuah kontrak,” kata Frank. “Konsistensi semacam ini sangat penting dan tidak akan hilang. Tetapi Anda dapat membayangkan bahwa dalam mesin aliran data, konsistensi tidak begitu penting, karena Anda mentransfer data yang bergerak di edge secara langsung dari satu akselerator ke akselerator lainnya. Jika Anda mempartisi kumpulan data, konsistensi akan menjadi kendala karena akan membebani Anda siklus ekstra. Anda harus memeriksa informasinya. Anda harus memberikan informasi terbaru.”

Ini membutuhkan arsitektur memori yang berbeda. "Anda harus memikirkan struktur memori, karena Anda hanya memiliki begitu banyak memori yang digabungkan secara erat," kata Uhm. “Anda dapat mengakses memori yang berdekatan, tetapi Anda akan segera kehabisan memori yang berdekatan dan tidak dapat diakses tepat waktu. Ini harus dipahami dalam desain. Saat alat matang, alat akan mulai belajar lebih banyak. Hari ini, itu dilakukan oleh kecerdasan manusia, mampu memahami arsitektur dan menerapkannya.”

Tingkat abstraksi yang lebih tinggi juga diperlukan. “Beberapa kerangka kerja dapat memetakan atau mengkompilasi jaringan yang diketahui untuk menargetkan perangkat keras,” kata Thomas. “Anda memiliki satu set kernel atau API tingkat rendah yang akan digunakan dalam tumpukan perangkat lunak dan akhirnya digunakan oleh pembuat peta jaringan saraf. Di bawah ini, Anda mungkin memiliki berbagai jenis perangkat keras, tergantung pada apa yang ingin Anda capai, tergantung pada detail produk Anda. Ini mencapai fungsi yang sama, tetapi tidak menggunakan perangkat keras yang sama atau pertukaran PPA yang sama.”

Ini memberi banyak tekanan pada kompiler tersebut. “Pertanyaan utamanya adalah bagaimana Anda memprogram akselerator di masa depan?” Frank bertanya. “Sudahkah Anda mengimplementasikan mesin bawaan seperti GPU generasi pertama? Atau apakah Anda telah membuat mesin kecil yang dapat diprogram dengan set instruksi Anda sendiri? Sekarang Anda harus memprogram hal-hal ini secara terpisah dan memasukkannya ke dalamnya. Masing-masing terhubung ke aliran data untuk melakukan tugas. Satu prosesor memiliki subset tertentu dari seluruh set instruksi, dan prosesor lainnya memiliki subset yang berbeda, dan mereka semua akan berbagi beberapa bagian yang tumpang tindih dari aliran kontrol. Anda mungkin memiliki beberapa Produk dengan kemampuan akselerasi yang sedikit berbeda. Kompiler atau pustaka yang memahaminya akan memetakan dengan tepat.”

Meringkaskan

Arsitektur prosesor tidak berubah. Mereka masih mengikuti pilihan yang sama yang telah ada selama 40 tahun terakhir. Apa yang berubah adalah cara chip dibangun. Mereka sekarang berisi sejumlah besar prosesor heterogen dengan memori dan komunikasi yang dioptimalkan untuk subset tugas aplikasi. Setiap chip membuat pilihan yang berbeda untuk fungsi prosesor dan tujuan pengoptimalannya, throughput data yang diperlukan, dan aliran data yang biasanya dilihatnya.

Setiap pemasok perangkat keras ingin membedakan chipnya sendiri dari chip lain, tetapi jauh lebih mudah untuk mempromosikan melalui branding daripada membicarakan detail teknis internal. Jadi mereka memberinya nama, menyebutnya yang pertama, tercepat, dan terbesar, dan menghubungkannya dengan jenis masalah aplikasi tertentu. Akronim tiga huruf ini telah menjadi nama tugas aplikasi, tetapi tidak mendefinisikan arsitektur perangkat keras.

Dalam beberapa tahun terakhir, pengumuman tentang arsitektur prosesor baru telah dikeluarkan hampir setiap hari, dengan akronim tiga huruf – TPU, IPU, NPU. Tapi apa yang benar-benar membedakan mereka? Apakah benar-benar ada begitu banyak arsitektur prosesor yang unik, atau adakah hal lain yang terjadi?

Pada tahun 2018, John L. Hennessy dan David A. Patterson memberikan kuliah Turing berjudul “The New Golden Age of Computer Architecture”. Mereka prihatin dengan CPU dan perkembangannya, tetapi ini hanya sebagian kecil dari keseluruhan persamaan. Peneliti Arteris IP dan arsitek sistem Michael Frank mengatakan: "Dari perspektif CPU, sebagian besar xPU ini bukan prosesor nyata." “Mereka lebih seperti GPU, akselerator untuk beban kerja khusus. Dan mereka memiliki banyak keragaman di dalamnya. Pembelajaran mesin adalah jenis prosesor, Anda dapat menyebutnya akselerator pembelajaran mesin secara kolektif, tetapi mereka mempercepat bagian pemrosesan dari berbagai.

Inti dari prosesor dapat diringkas menjadi tiga hal. “Dalam analisis akhir, itu kembali ke arsitektur set instruksi (ISA),” kata Manuel Uhm, direktur pemasaran chip di Xilinx. “Ini menentukan apa yang ingin Anda lakukan. Kemudian Anda memiliki I/O dan memori, yang mendukung ISA dan tugas-tugas yang coba diselesaikannya. Ini akan menjadi waktu yang sangat menarik di masa depan, karena kita akan melihat lebih dari dua atau tiga tahun terakhir Waktu untuk lebih banyak inovasi dan perubahan.”

Banyak arsitektur baru bukan prosesor tunggal. “Apa yang kami lihat adalah kombinasi dari berbagai jenis prosesor atau mesin yang dapat diprogram yang ada di SoC yang sama atau sistem yang sama,” kata Pierre-Xavier Thomas, direktur Cadence's Technology and Strategic Marketing Group. “Distribusikan tugas perangkat lunak ke perangkat keras yang berbeda atau mesin fleksibel yang dapat diprogram. Semua prosesor dapat berbagi API yang sama, tetapi domain eksekusi akan berbeda. Di sini, Anda memang akan melihat berbagai jenis pemrosesan dengan berbagai jenis karakteristik. ”

Kenyataannya adalah bahwa sebagian besar nama adalah pemasaran.

“Intinya adalah orang menggunakan nama dan akronim ini untuk dua tujuan yang berbeda,” kata Simon Davidmann, CEO Imperas Software. “Salah satunya digunakan untuk menjelaskan arsitektur prosesor, seperti SIMD (Single Instruction Multiple Data). Yang lain mendefinisikan segmen aplikasi yang ditanganinya. Jadi itu dapat menentukan arsitektur prosesor, atau sesuatu seperti nama merek unit pemrosesan tensor (TPU). Mereka menamai arsitektur mereka yang heterogen atau homogen, bukan prosesor individual.”

Sedikit sejarah

Empat puluh tahun yang lalu, segalanya jauh lebih sederhana. Saat itu ada central processing unit (CPU) dan ada banyak variannya, tetapi pada dasarnya semuanya adalah prosesor Turing-complete dengan arsitektur von Neumann. Masing-masing memiliki set instruksi berbeda yang membuatnya lebih efisien untuk tugas-tugas tertentu, dan ada banyak diskusi tentang keuntungan relatif dari set instruksi kompleks (CISC) dan set instruksi yang dikurangi (RISC).

Munculnya RISC-V telah membawa banyak perhatian pada ISA. “Orang ingin memahami ISA karena ISAlah yang menentukan seberapa optimal prosesor untuk tugas yang ditentukan,” kata Uhm dari Xilinx. “Mereka dapat melihat ISA dan memulai siklus perhitungan. Jika ISA memiliki instruksi asli dan berjalan pada 1 GHz, saya dapat membandingkannya dengan ISA prosesor lain, yang mungkin memerlukan dua instruksi untuk fungsi yang sama, tetapi prosesor berjalan pada 1.5 GHz. Mana yang membuat saya melangkah lebih jauh? Mereka melakukan perhitungan matematis untuk fungsi-fungsi penting.”

Ada beberapa metode pengemasan untuk CPU. Terkadang IO atau memori ditempatkan dalam paket yang sama. Mereka disebut unit mikrokontroler (MCU).

Ketika modem menjadi populer, prosesor sinyal digital (DSP) muncul, dan perbedaannya adalah mereka menggunakan arsitektur Harvard. Ini memisahkan bus perintah dari bus data. Beberapa diantaranya juga telah mengimplementasikan arsitektur SIMD agar pengolahan data menjadi lebih efisien.

Pemisahan instruksi dan data adalah untuk meningkatkan throughput, meskipun membatasi beberapa pemrograman tepi yang dapat dilakukan, seperti program yang ditulis sendiri. “Biasanya syarat batas bukan perhitungan,” kata Uhm. “Ini semakin I/O atau memori. Industri sedang beralih dari peningkatan daya komputasi ke memastikan bahwa ada cukup data untuk mempertahankan daya komputasi dan mempertahankan kinerja.”

Ketika satu prosesor tidak lagi menjadi lebih cepat, mereka menghubungkan beberapa prosesor bersama-sama. Prosesor ini biasanya berbagi memori dan mempertahankan konsep kelengkapan Turing untuk setiap prosesor dan seluruh cluster prosesor. Tidak masalah pada inti mana setiap bagian dari program dijalankan, karena hasilnya sama.

Perkembangan besar berikutnya adalah unit pemrosesan grafis (GPU), yang melanggar konvensi karena setiap elemen pemrosesan atau saluran memiliki memorinya sendiri dan tidak dapat ditangani di luar prosesor. Karena memori terbatas, ini berarti ia tidak dapat melakukan tugas pemrosesan sembarang, tetapi hanya dapat melakukan tugas yang dapat ditempatkan di ruang memori yang disediakan.

“Untuk jenis fungsi tertentu, GPU adalah prosesor yang sangat kuat, tetapi jalur pipanya sangat panjang,” Uhm menunjukkan. “Pipa pipa ini memungkinkan unit GPU untuk terus memproses data, tetapi pada titik tertentu, jika Anda harus menyegarkan pipa, itu akan menjadi pukulan besar. Banyak latensi dan ketidakpastian dibangun ke dalam sistem. ”

Meskipun banyak akselerator lain telah ditentukan, GPU—dan kemudian GPU tujuan umum (GPGPU)—mendefinisikan paradigma pemrograman dan tumpukan perangkat lunak yang membuatnya lebih mudah digunakan daripada akselerator sebelumnya. “Selama bertahun-tahun, pekerjaan tertentu telah dispesialisasikan,” kata Davidmann dari Imperas. “Ada CPU untuk program sekuensial. Ada prosesor grafis, yang berfokus pada pemrosesan data untuk layar dan membawa kita ke dunia yang sangat paralel. Menggunakan banyak elemen pemrosesan kecil untuk melakukan tugas. Sekarang ada tugas pembelajaran mesin.”

Apa aturan konstruksi lain yang dapat menjelaskan semua arsitektur baru? Di masa lalu, array prosesor biasanya terhubung melalui memori atau topologi jaringan tetap (seperti mesh atau ring). Apa yang baru-baru ini muncul adalah kombinasi Network on Chip (NoC), yang memungkinkan prosesor heterogen terdistribusi untuk berkomunikasi dengan cara yang lebih fleksibel. Di masa depan, mereka juga dapat berkomunikasi tanpa menggunakan memori.

“Saat ini, NoC hanya membawa data,” kata Frank dari Arteris. “Di masa depan, NoC dapat diperluas ke area lain di mana komunikasi antar akselerator melampaui data. Itu dapat mengirim perintah, mengirim pemberitahuan, dll. Persyaratan komunikasi array akselerator mungkin berbeda dari persyaratan komunikasi CPU atau SoC standar. Namun, jaringan pada chip tidak akan Membatasi Anda ke subset. Anda dapat mengoptimalkan dan meningkatkan kinerja dengan mendukung kebutuhan komunikasi khusus akselerator.”

Arsitektur implementasi

Salah satu cara diferensiasi prosesor adalah untuk mengoptimalkan lingkungan operasi tertentu. Misalnya, perangkat lunak dapat berjalan di cloud, tetapi Anda juga dapat menjalankan perangkat lunak yang sama pada perangkat IoT mikro. Arsitektur implementasi akan sangat berbeda dan akan mencapai titik operasi yang berbeda dalam hal kinerja, konsumsi daya, biaya, atau kemampuan untuk beroperasi dalam kondisi ekstrim.

“Beberapa aplikasi untuk komputasi awan, dan sekarang kami membawa mereka lebih dekat ke tepi,” kata Thomas dari Cadence. “Ini mungkin karena persyaratan latensi, atau disipasi energi atau daya, yang akan memerlukan jenis arsitektur yang berbeda. Anda mungkin ingin memiliki tumpukan perangkat lunak yang sama persis untuk dapat dijalankan di dua lokasi. Awan perlu memberikan fleksibilitas karena akan menerima berbagai jenis aplikasi, dan harus dapat mengumpulkan sejumlah besar pengguna. Ini membutuhkan perangkat keras di server untuk memiliki kemampuan khusus aplikasi, tetapi satu ukuran tidak cocok untuk semua orang.”

ML telah meningkatkan persyaratannya sendiri. “Saat menggunakan jaringan saraf dan pembelajaran mesin untuk membangun sistem cerdas, Anda perlu menggunakan kerangka kerja perangkat lunak dan tumpukan perangkat lunak umum untuk memprogram jaringan baru dan memetakannya ke perangkat keras,” tambah Thomas. “Kemudian Anda dapat menyesuaikan aplikasi perangkat lunak ke perangkat keras yang tepat dari perspektif PPA. Ini mendorong kebutuhan akan berbagai jenis pemrosesan dan prosesor untuk dapat memenuhi kebutuhan ini di tingkat perangkat keras.”

Persyaratan ini ditentukan oleh aplikasi. “Sebuah perusahaan telah menciptakan prosesor untuk operasi grafis,” kata Frank. “Mereka mengoptimalkan dan mempercepat cara melacak grafik, dan melakukan operasi seperti menyusun ulang grafik. Ada brute force lain yang mempercepat machine learning, yaitu perkalian matriks. Akses memori berbeda untuk setiap arsitektur Ini masalah khusus karena ketika Anda membuat akselerator, tujuan terpenting adalah membuatnya tetap sibuk. Anda harus mentransfer data sebanyak mungkin ke ALU karena dapat dikonsumsi dan diproduksi.”

Banyak dari aplikasi ini memiliki banyak kesamaan. “Mereka semua memiliki beberapa memori lokal, mereka memiliki jaringan pada sebuah chip untuk berkomunikasi, dan setiap prosesor yang mengeksekusi algoritma perangkat lunak memproses sebagian kecil data,” kata Davidmann. “Pekerjaan ini dijadwalkan oleh sistem operasi yang berjalan pada CPU yang lebih tradisional.”

Bagian yang sulit bagi perancang perangkat keras adalah memprediksi tugas mana yang harus mereka lakukan. “Meskipun Anda akan melakukan jenis operasi serupa di beberapa lapisan, orang-orang memperhatikan diferensiasi di lapisan,” kata Thomas. “Untuk dapat memproses jaringan saraf, diperlukan beberapa jenis kekuatan pemrosesan. Ini berarti bahwa Anda harus dapat memproses bagian dari jaringan saraf dengan cara tertentu, dan kemudian Anda mungkin memerlukan jenis operasi lain untuk memproses lapisan lain. Pergerakan data Dan jumlah data juga berubah lapis demi lapis.”

Diferensiasi ini dapat melampaui pergerakan data. “Untuk pengurutan genom, Anda perlu melakukan beberapa pemrosesan,” kata Frank. “Tapi Anda tidak bisa menggunakan satu jenis akselerator untuk mempercepat segalanya. Anda harus membangun seluruh rangkaian akselerator yang berbeda untuk saluran pipa yang berbeda. CPU menjadi penjaga proses eksekusi manajemen. Ini mengatur, mengeksekusi DMA, dan menyediakan pengambilan keputusan antara dua Proses. Memahami dan menganalisis algoritme dan menentukan bagaimana Anda ingin mengoptimalkan pemrosesannya adalah tugas arsitektur yang lengkap.”

Bagian dari proses membutuhkan partisi. “Tidak ada satu jenis prosesor yang dapat dioptimalkan untuk setiap tugas prosesor – FPGA tidak bagus, CPU tidak bagus, GPU tidak bagus, DSP juga perlu,” kata Uhm. “Kami membuat serangkaian perangkat yang berisi semua ini, tetapi bagian yang sulit di sisi pelanggan adalah mereka harus menyediakan kecerdasan untuk menentukan bagian mana dari keseluruhan sistem yang akan ditargetkan pada prosesor atau logika yang dapat diprogram, atau di AI. mesin. Semua orang menginginkan Alat ajaib otomatis itu, alat yang dapat segera memutuskan untuk meletakkannya di CPU, meletakkannya di FPGA, dan meletakkannya di GPU. Alat itu tidak ada hari ini.”

Meskipun demikian, CPU akan selalu berperan. “CPU diperlukan untuk menjalankan bagian program yang tidak teratur,” kata Frank. “Kemampuan pemrograman CPU secara umum memiliki kelebihan. Jika Anda memiliki struktur data khusus atau operasi matematika, itu tidak akan berfungsi dengan baik. CPU adalah prosesor tujuan umum dan tidak dioptimalkan untuk apa pun. Itu tidak bagus dalam hal apa pun. ”

Ubah "abstrak"

Di masa lalu, batas perangkat keras/perangkat lunak ditentukan oleh ISA, dan memori terus-menerus dapat dialamatkan. Ketika ada beberapa prosesor, mereka biasanya disejajarkan dengan memori.

“Konsistensi adalah sebuah kontrak,” kata Frank. “Konsistensi semacam ini sangat penting dan tidak akan hilang. Tetapi Anda dapat membayangkan bahwa dalam mesin aliran data, konsistensi tidak begitu penting, karena Anda mentransfer data yang bergerak di edge secara langsung dari satu akselerator ke akselerator lainnya. Jika Anda mempartisi kumpulan data, konsistensi akan menjadi kendala karena akan membebani Anda siklus ekstra. Anda harus memeriksa informasinya. Anda harus memberikan informasi terbaru.”

Ini membutuhkan arsitektur memori yang berbeda. "Anda harus memikirkan struktur memori, karena Anda hanya memiliki begitu banyak memori yang digabungkan secara erat," kata Uhm. “Anda dapat mengakses memori yang berdekatan, tetapi Anda akan segera kehabisan memori yang berdekatan dan tidak dapat diakses tepat waktu. Ini harus dipahami dalam desain. Saat alat matang, alat akan mulai belajar lebih banyak. Hari ini, itu dilakukan oleh kecerdasan manusia, mampu memahami arsitektur dan menerapkannya.”

Tingkat abstraksi yang lebih tinggi juga diperlukan. “Beberapa kerangka kerja dapat memetakan atau mengkompilasi jaringan yang diketahui untuk menargetkan perangkat keras,” kata Thomas. “Anda memiliki satu set kernel atau API tingkat rendah yang akan digunakan dalam tumpukan perangkat lunak dan akhirnya digunakan oleh pembuat peta jaringan saraf. Di bawah ini, Anda mungkin memiliki berbagai jenis perangkat keras, tergantung pada apa yang ingin Anda capai, tergantung pada detail produk Anda. Ini mencapai fungsi yang sama, tetapi tidak menggunakan perangkat keras yang sama atau pertukaran PPA yang sama.”

Ini memberi banyak tekanan pada kompiler tersebut. “Pertanyaan utamanya adalah bagaimana Anda memprogram akselerator di masa depan?” Frank bertanya. “Sudahkah Anda mengimplementasikan mesin bawaan seperti GPU generasi pertama? Atau apakah Anda telah membuat mesin kecil yang dapat diprogram dengan set instruksi Anda sendiri? Sekarang Anda harus memprogram hal-hal ini secara terpisah dan memasukkannya ke dalamnya. Masing-masing terhubung ke aliran data untuk melakukan tugas. Satu prosesor memiliki subset tertentu dari seluruh set instruksi, dan prosesor lainnya memiliki subset yang berbeda, dan mereka semua akan berbagi beberapa bagian yang tumpang tindih dari aliran kontrol. Anda mungkin memiliki beberapa Produk dengan kemampuan akselerasi yang sedikit berbeda. Kompiler atau pustaka yang memahaminya akan memetakan dengan tepat.”

Meringkaskan

Arsitektur prosesor tidak berubah. Mereka masih mengikuti pilihan yang sama yang telah ada selama 40 tahun terakhir. Apa yang berubah adalah cara chip dibangun. Mereka sekarang berisi sejumlah besar prosesor heterogen dengan memori dan komunikasi yang dioptimalkan untuk subset tugas aplikasi. Setiap chip membuat pilihan yang berbeda untuk fungsi prosesor dan tujuan pengoptimalannya, throughput data yang diperlukan, dan aliran data yang biasanya dilihatnya.

Setiap pemasok perangkat keras ingin membedakan chipnya sendiri dari chip lain, tetapi jauh lebih mudah untuk mempromosikan melalui branding daripada membicarakan detail teknis internal. Jadi mereka memberinya nama, menyebutnya yang pertama, tercepat, dan terbesar, dan menghubungkannya dengan jenis masalah aplikasi tertentu. Akronim tiga huruf ini telah menjadi nama tugas aplikasi, tetapi tidak mendefinisikan arsitektur perangkat keras.