Nvidia Streaming Multiprocessor History


Akhir pekan lalu saya habiskan belajar pemrograman CUDA dan SIMT. Waktu yang sangat bermanfaat ini berakhir dengan akselerasi “pembalap kartu nama” hampir 700 kali lipat saya [1] - dari 101 detik menjadi 150 ms.

Pengalaman yang menyenangkan seperti itu adalah alasan yang bagus untuk studi lebih lanjut tentang tema dan evolusi arsitektur Nvidia. Karena banyaknya dokumentasi yang diterbitkan selama bertahun-tahun oleh tim "hijau", saya berhasil kembali ke masa lalu dan secara singkat berjalan melalui evolusi menakjubkan dari multiprosesor streaming.

Dalam artikel ini kami akan mempertimbangkan:

Seri Teknologi Proses Kristal Generasi Tahun Seri Kartu Paling Kuat
=================================================== ===========================
2006 Tesla GeForce 8 G80 90 nm 8800 GTX 
2010 Fermi GeForce 400 GF100 40 nm GTX 480
2012 Kepler GeForce 600 GK104 28 nm GTX 680
2014 Maxwell GeForce 900 GM204 28 nm GTX 980 Ti
2016 Pascal GeForce 10 GP102 16 nm GTX 1080 Ti
2018 Turing GeForce 20 TU102 12 nm RTX 2080 Ti

Jalan buntu


Hingga 2006, arsitektur GPU NVidia berkorelasi dengan tahapan logis dari rendering API [2] . GeForce 7900 GTX, dikendalikan oleh kristal G71, terdiri dari tiga bagian yang terlibat dalam pemrosesan simpul (8 blok), menghasilkan fragmen (24 blok), dan menggabungkan fragmen (16 blok).


Crystal G71. Perhatikan optimisasi Z-Cull, yang membuang fragmen yang tidak akan lulus uji-Z.

Korelasi ini membuat para desainer menebak lokasi kemacetan konveyor untuk keseimbangan yang tepat dari masing-masing lapisan. Dengan munculnya tahap lain dalam DirectX 10 - geometri shader, insinyur Nvidia menghadapi tugas sulit menyeimbangkan kristal tanpa mengetahui seberapa aktif tahap ini akan digunakan. Inilah waktu untuk perubahan.

Tesla



Nvidia memecahkan masalah meningkatnya kompleksitas dengan bantuan arsitektur Tesla "terintegrasi", yang dirilis pada 2006.

Tidak ada lagi perbedaan antara lapisan dalam kristal G80. Karena kemampuan untuk mengeksekusi vertex, fragmen, dan "inti" geometrik, multiprocessor aliran (Stream Multiprocessor, SM) telah menggantikan semua blok yang ada sebelumnya. Penyeimbangan beban dilakukan secara otomatis, berkat penggantian "inti" yang dilakukan oleh masing-masing SM, tergantung pada persyaratan konveyor.

"Faktanya, kami membuang seluruh arsitektur shader NV30 / NV40 dan dari awal menciptakan yang baru, dengan arsitektur umum baru untuk prosesor universal (SIMT), yang juga memperkenalkan metodologi desain prosesor baru."

John Alben (wawancara extremeetech.com)

Tidak lagi dapat menjalankan instruksi SIMD, "blok shader" berubah menjadi "kernel", mampu mengeksekusi satu instruksi integer atau satu instruksi dengan float32 per siklus. SM menerima utas dalam kelompok 32 utas, disebut warp. Idealnya, semua utas dari warp yang sama menjalankan instruksi yang sama pada saat yang sama, hanya untuk data yang berbeda (maka nama SIMT). Unit Instruksi multi-ulir (MT) terlibat dalam mengaktifkan / menonaktifkan utas di warp jika penunjuk instruksi mereka (Instruction Pointer, IP) menyatu / menolak.

Dua SFU membantu Anda melakukan perhitungan matematika yang rumit, seperti akar kuadrat terbalik, sin, cos, exp, dan rcp. Blok ini juga mampu mengeksekusi satu instruksi per siklus, tetapi karena hanya ada dua instruksi, kecepatan warp dibagi menjadi empat. Tidak ada dukungan perangkat keras untuk float64, perhitungan dilakukan secara terprogram, yang sangat mempengaruhi kecepatan eksekusi.

SM menyadari potensi maksimumnya ketika ia mampu menyembunyikan latensi memori karena kehadiran konstan dari warp yang dapat dikirim, tetapi juga ketika aliran dalam warp tidak menyimpang (logika kontrol menyimpannya di jalur yang sama dalam menjalankan instruksi). Status aliran disimpan dalam file register 4 kilobyte (Register File, RF). Utas yang menghabiskan terlalu banyak ruang di tumpukan mengurangi jumlah utas yang mungkin dapat berjalan pada saat yang sama, sekaligus mengurangi kinerja.

Kristal andalan dari generasi Tesla adalah 90nm G80 yang diperkenalkan pada GeForce 8800 GTX. Dua SM digabungkan dalam Cluster Prosesor Tekstur (TPC) bersama-sama dengan Unit Tekstur dan cache L1 Tex. Dijanjikan bahwa G80 dengan 8 TPC dan 128 core menghasilkan 345,6 gigaflops [3]. Kartu 8800 GTX sangat populer pada satu waktu, ia menerima ulasan indah dan jatuh cinta dengan mereka yang mampu membelinya. Ini ternyata menjadi produk yang sangat bagus sehingga, tiga belas bulan setelah dirilis, itu tetap menjadi salah satu GPU tercepat di pasar.


G80 dipasang di 8800 GTX. Render Output Units (ROP) melakukan perataan.

Bersama dengan Tesla, Nvidia memperkenalkan bahasa pemrograman C untuk Compute Unified Device Architecture (CUDA), sebuah superset dari bahasa C99. Penggemar GPGPU, yang menyambut alternatif untuk menipu GPU dengan tekstur dan shader GLSL, menyukai ini.

Meskipun saya terutama berbicara tentang SM di bagian ini, itu hanya setengah dari sistem. Di SM, Anda perlu mentransfer instruksi dan data yang tersimpan di memori GPU. Untuk menghindari downtime, GPU tidak mencoba meminimalkan transfer memori menggunakan cache besar dan memprediksi bagaimana CPU melakukannya. GPU memanfaatkan latensi, menjenuhkan bus memori untuk memenuhi kebutuhan I / O dari ribuan utas. Untuk ini, sebuah chip (misalnya, G80) menyadari bandwidth memori tinggi menggunakan enam bus memori DRAM dua sisi.


GPU mengambil keuntungan dari latensi memori, sementara CPU menyembunyikannya dengan cache yang besar dan logika prediksi.

Fermi



Tesla adalah langkah berisiko yang terbukti sangat sukses. Itu sangat sukses sehingga menjadi dasar untuk GPU NVidia selama dua dekade berikutnya.

« , , (Fermi , Maxwell ), , G80, [Pascal]».

( extremetech.com)

Pada 2010, Nvidia merilis GF100, berdasarkan arsitektur Fermi yang benar-benar baru. Interior chip terbarunya dijelaskan secara rinci dalam dokumentasi teknis Fermi [4] .

Model eksekusi masih didasarkan pada warp dari 32 utas yang dikirim ke SM. NVidia berhasil menggandakan / melipatgandakan semua indikator hanya berkat teknologi proses 40-nanometer. Berkat dua array 16 core CUDA, SM sekarang dapat secara bersamaan mengirimkan dua semi-warp (masing-masing 16 thread). Sementara setiap inti mengeksekusi satu instruksi per siklus clock, SM pada dasarnya mampu mengecualikan satu instruksi warp per siklus clock (empat kali lebih banyak dari arsitektur Tesla SM).

Jumlah SFU juga meningkat, tetapi tidak terlalu banyak - kapasitasnya hanya dua kali lipat. Dapat disimpulkan bahwa instruksi jenis ini tidak digunakan dengan sangat aktif.

Ada dukungan semi-hardware untuk float64, yang menggabungkan operasi yang dilakukan oleh dua core CUDA. Berkat ALU 32-bit (dalam Tesla itu 24-bit), GF100 dapat melakukan perkalian bilangan bulat dalam satu siklus, dan karena transisi dari IEEE 754-1985 ke IEEE 754-2008, ia memiliki keakuratan yang meningkat ketika bekerja dengan pipa float32 menggunakan Fused Multiply -Tambahkan (FMA) (lebih akurat daripada yang digunakan dalam Tesla MAD).

Dari sudut pandang pemrograman, sistem memori terintegrasi Fermi memungkinkan untuk melengkapi CUDA C dengan fitur-fitur C ++ seperti objek, metode virtual, dan pengecualian.

Karena kenyataan bahwa blok tekstur sekarang menjadi SM, konsep TPC telah ditinggalkan. Itu telah digantikan oleh klaster Prosesor Grafik (GPC), masing-masing dengan empat SM. Last but not least, SM sekarang berbakat dengan Mesin Polymorph, yang berurusan dengan mendapatkan simpul, mengubah viewport dan tessellation. GeForce GTX 480 andalan berdasarkan GF100 diiklankan sebagai berisi 512 core dan mampu menyediakan 1.345 gigaflops [5] .


GF100 dipasang di GeForce GTX 480. Perhatikan enam pengontrol memori yang melayani GPC.

Kepler



Pada 2012, Nvidia merilis arsitektur Kepler, dinamai setelah peramal, paling dikenal karena menemukan hukum-hukum gerak planet. Seperti biasa, dokumentasi teknis GK104 [6] memungkinkan kami untuk melihat ke dalam .

Di Kepler, Nvidia secara signifikan meningkatkan efisiensi energi kristal dengan menurunkan kecepatan clock dan menggabungkan frekuensi inti dengan frekuensi kartu (sebelumnya frekuensinya dua kali lipat).

Perubahan seperti itu seharusnya mengarah pada penurunan produktivitas. Namun, berkat separuh dari teknologi proses (28 nanometer) dan penggantian perangkat keras dengan perangkat lunak, Nvidia tidak hanya dapat menempatkan lebih banyak SM pada chip, tetapi juga meningkatkan desain mereka.

Next Generation Streaming Multiprocessor (SMX) adalah monster, hampir semua yang indikatornya berlipat dua atau tiga kali lipat.

Berkat empat pengirim warp yang mampu memproses seluruh warp dalam satu siklus clock (Fermi hanya bisa memproses setengah dari warp), SMX sekarang berisi 196 core. Setiap dispatcher memiliki pengiriman ganda, yang memungkinkan untuk mengeksekusi instruksi kedua dalam warp jika itu terlepas dari instruksi yang dapat dieksekusi saat ini. Penjadwalan ganda tidak selalu mungkin karena satu kolom dari 32 core adalah umum untuk dua operasi penjadwalan.

Skema seperti itu mempersulit logika penjadwalan (kami akan kembali ke sini nanti), tetapi berkat pelaksanaan hingga enam instruksi warp per siklus, SMX memberikan kinerja dua kali lipat dibandingkan dengan arsitektur Fermi SM.

Dikatakan bahwa NVIDIA GeForce GTX 680 andalan dengan kristal GK104 dan delapan SMX memiliki 1.536 core, mencapai 3.250 gigaflops [7]. Unsur-unsur kristal menjadi begitu rumit sehingga saya harus menghapus semua tanda tangan dari diagram.


GK104 dipasang di GeForce GTX 680.

Perhatikan subsistem memori yang sepenuhnya didesain ulang, bekerja dengan frekuensi 6 GHz yang menakjubkan. Mereka diizinkan untuk mengurangi jumlah pengontrol memori dari enam menjadi empat.

Maxwell


Pada 2014, Nvidia merilis GPU generasi kesepuluh yang disebut Maxwell. Sebagaimana dinyatakan dalam dokumentasi teknis GM107 [8] , semboyan arsitektur generasi pertama adalah "Efisiensi energi maksimum dan kinerja luar biasa untuk setiap watt yang dikonsumsi." Kartu diposisikan untuk "lingkungan yang terbatas daya seperti laptop dan PC kecil (faktor bentuk)."

Keputusan yang paling penting adalah untuk meninggalkan struktur Kepler dengan jumlah inti CUDA di SM, yang bukan kekuatan dua: beberapa kernel menjadi umum dan kembali bekerja dalam mode setengah warp. Untuk pertama kalinya dalam sejarah arsitektur, SMM memiliki core lebih sedikit dari pendahulunya: "hanya" 128 core.

Menyesuaikan jumlah core dan ukuran warp meningkatkan segmentasi kristal, menghasilkan penghematan ruang dan energi.


Satu SMM 2014 memiliki core (128) sebanyak GTX 8800 pada tahun 2006.

Maxwell generasi kedua (dijelaskan dalam dokumentasi teknis GM200 [9] ) secara signifikan meningkatkan produktivitas, sambil mempertahankan efisiensi energi generasi pertama.

Teknologi proses tetap pada 28 nanometer, sehingga insinyur Nvidia tidak dapat menggunakan miniaturisasi sederhana untuk meningkatkan produktivitas. Namun, penurunan jumlah core SMM telah mengurangi ukurannya, sehingga memungkinkan untuk menempatkan lebih banyak SMM pada chip. Dibandingkan dengan Kepler, generasi kedua Maxwell menggandakan jumlah SMM, sementara meningkatkan area kristalnya hanya 25%.

Dalam daftar perangkat tambahan, Anda juga dapat menemukan logika pengiriman yang disederhanakan, yang memungkinkan untuk mengurangi jumlah redundansi pengiriman yang berlebihan dan penundaan perhitungan, yang memastikan peningkatan optimalitas penggunaan warp. Juga, frekuensi memori meningkat 15%.

Mempelajari diagram blok Maxwell GM200 sudah mulai membebani mata Anda. Tapi kami masih hati-hati memeriksanya. Kartu NVIDIA GeForce GTX 980 Ti unggulan dengan kristal GM200 dan 24 SMM menjanjikan 3072 core dan 6.060 gigaflops [10] .


GM200 dipasang di GeForce GTX 980 Ti.

Pascal


Pada 2016, Nvidia memperkenalkan Pascal. Dokumentasi Teknis GP104 [11] meninggalkan sensasi déjà vu karena SM Pascal terlihat persis seperti Maxwell SMM. Kurangnya perubahan SM tidak menghambat kinerja, karena teknologi proses 16-nanometer memungkinkan kami untuk menempatkan lebih banyak SM dan menggandakan jumlah gigaflops lagi.

Di antara perbaikan besar lainnya adalah sistem memori yang didasarkan pada GDDR5X yang semuanya baru. Antarmuka memori 256-bit, berkat delapan pengontrol memori, memberikan kecepatan transfer 10 gigaflop, meningkatkan bandwidth memori sebesar 43% dan mengurangi waktu henti warp.

NVIDIA GeForce GTX 1080 Ti unggulan dengan chip GP102 dan 28 TSM menjanjikan 3.584 core dan 11.340 gigaflops [12] .


GP104 dipasang di GeForce GTX 1080.

Turing


Dengan dirilisnya Turing pada tahun 2018, Nvidia membuat "langkah arsitektur terbesar dalam sepuluh tahun" [13] . Di Turing SM, tidak hanya core Tensor khusus dengan kecerdasan buatan muncul, tetapi juga core untuk penelusuran sinar (rautracing, RT). Struktur yang terfragmentasi seperti ini mengingatkan saya pada arsitektur berlapis yang ada sebelum Tesla, dan ini membuktikan sekali lagi bahwa sejarah menyukai pengulangan.


Selain core baru, tiga fitur penting telah muncul di Turing. Pertama, kernel CUDA kini telah menjadi superscalar, yang memungkinkan eksekusi paralel instruksi dengan bilangan bulat dan angka floating-point. Jika Anda menemukan 1996, maka ini mungkin mengingatkan Anda pada arsitektur "inovatif" Intel.

Kedua, subsistem memori baru pada GDDR6X, didukung oleh 16 pengontrol, kini mampu menyediakan 14 gigaflops.

Ketiga, stream sekarang tidak memiliki pointer instruksi umum (IP) di warp. Berkat Penjadwalan Utas Independen di Volta, setiap utas memiliki IP sendiri. Sebagai hasil dari ini, SM dapat lebih fleksibel mengkonfigurasi arus pengiriman dalam warp tanpa perlu konvergensi secepat mungkin.

NVIDIA GeForce GTX 2080 Ti unggulan dengan TU102 dan 68 TSM kristal memiliki 4352 dan mencapai 13 45 gigaflops [14] . Saya tidak menggambar diagram blok karena akan terlihat seperti titik hijau yang kabur.

Apa yang menanti kita selanjutnya


Menurut rumor, arsitektur berikutnya, yang diberi nama kode Ampere, akan diumumkan pada tahun 2020. Sebagaimana Intel buktikan dengan contoh Ice Lake bahwa masih ada potensi miniaturisasi menggunakan teknologi proses 7-nanometer, hampir tidak ada keraguan bahwa Nvidia menggunakannya untuk lebih mengurangi SM dan menggandakan kinerjanya.


Teraflops / s untuk setiap chip / kartu Nvidia (sumber data: techpowerup.com).

Akan menarik untuk melihat bagaimana Nvidia melanjutkan evolusi gagasan kristal yang memiliki tiga jenis inti yang melakukan tugas yang berbeda. Akankah kita melihat kristal, seluruh keadaan inti tensor atau RT core? Ingin tahu.

Bahan referensi


[1] Sumber: Meninjau kembali Business Card Raytracer
[2] Sumber: Fermi: Arsitektur Komputasi GPU Lengkap Pertama
[3] Sumber: NVIDIA GeForce 8800 GTX (techpowerup.com)
[4] Sumber: Fepi (GF100) whitepaper
[5] Sumber: NVIDIA GeForce GTX 480
[6] Sumber: Kepler (GK104) whitepaper
[7] Sumber: NVIDIA GeForce GTX 680
[8] Sumber: whitepaper Maxwell Gen1 (GM107)
[9] Sumber: Maxwell Gen2 (GM200) whitepaper
[10] Sumber: NVIDIA GeForce GTX 980 Ti
[11] Sumber: whitepaper Pascal (GP102)
[12] Sumber:NVIDIA GeForce GTX 1080 Ti
[13] Sumber: Turing (TU102) whitepaper
[14] Sumber: NVIDIA GeForce GTX 2080 Ti

All Articles