Senin, 22 September 2014

Arsitektur Nvidia Fermi (GPU: Quardo)

            Arsitektur Fermi adalah keluaran yang paling maju yang signifikan dalam arsitektur GPU sejak G80 asli. G80 adalah versi awal pada grafis terpadu dan komputasi prosesor akan terlihat seperti paralel. GT200 memperpanjang kinerja dan fungsi dari G80. Dengan Fermi yang telah mengambil semua yang di pelajari dari dua prosesor sebelumnya dan semua aplikasi yang ditulis untuk mereka, dan menggunakan pendekatan yang sama sekali baru untuk merancang untuk membuat GPU komputasi pertama di dunia. Ketika dimulai meletakkan dasar untuk Fermi, yang mengumpulkan umpan balik pengguna yang ekstensif pada komputasi GPU sejak diperkenalkannya G80 dan GT200, dan terfokus pada bidang utama berikut untuk perbaikan: 
  • Meningkatkan Presisi ganda Kinerja sementara presisi tunggal kinerja floating point berada di urutan sepuluh kali kinerja CPU desktop beberapa aplikasi komputasi GPU yang diinginkan kinerja presisi ganda.
  • ECC dukungan ECC memungkinkan pengguna komputasi GPU untuk aman menyebarkan sejumlah besar GPU dalam instalasi datacenter, dan juga memastikan aplikasi data sensitif seperti pencitraan medis dan pilihan keuangan harga yang dilindungi dari kesalahan memori.
  • Benar Cache Hierarchy-beberapa algoritma paralel tidak dapat menggunakan memori GPU, dan pengguna diminta arsitektur cache yang benar untuk membantu mereka. Penggunaan memory lebih banyak, programmer CUDA meminta lebih dari 16 KB dari SM memori bersama untuk mempercepat aplikasi mereka. 
  • Konteks Cepat pengguna Switching diminta konteks yang lebih cepat beralih di antara program aplikasi dan grafis yang lebih cepat dan menghitung interoperation 
Dengan permintaan ini dalam pikiran, tim Fermi merancang prosesor yang sangat meningkatkan komputasi mentah tenaga kuda, dan melalui inovasi arsitektur, juga menawarkan meningkat secara dramatis programmability dan menghitung efisiensi. Highlights arsitektur utama Fermi adalah: 
  • Generasi Ketiga Streaming Multiprocessor (SM) 
§  32 CUDA core per SM, 4x lebih GT200
§  8x presisi ganda puncak kinerja floating poin atas GT200
§  Ganda Warp Scheduler bersamaan jadwal dan mengirimkan instruksi dari dua warps independen
§  64 KB RAM dengan partisi dikonfigurasi memori bersama dan cache L1
  •  Generasi Kedua Paralel Thread Eksekusi ISA 
§  Bersatu Ruang Alamat dengan Dukungan Penuh C ++
§  Dioptimalkan untuk OpenCL dan DirectCompute
§  Kendali IEEE 754-2008 32-bit dan 64-bit presisi
§  penuh 32-bit jalur bilangan bulat dengan ekstensi 64-bit
§  instruksi akses memori untuk mendukung transisi ke 64-bit
§  Peningkatan Kinerja melalui Prediction
  •  Peningkatan Memory Subsystem 
§  NVIDIA DataCacheTM Paralel hirarki dengan Dikonfigurasi L1 dan L2Caches Bersatu
§  GPU pertama dengan dukungan memori ECC
§  Sangat meningkatkan kinerja operasi memori atom
  •  NVIDIA GigaThread TM Mesin 
§  10x lebih cepat aplikasi switching konteks
§  eksekusi kernel Concurrent
§  Out of Order eksekusi thread block
§  Ganda tumpang tindih mesin perpindahan memori.


Gambaran Umum Arsitektur Fermi

GPU berbasis Fermi pertama, dilaksanakan dengan 3,0 miliar transistor, fitur hingga 512 CUDA core. Sebuah inti CUDA mengeksekusi titik atau integer instruksi floating per jam untuk benang. 512 core CUDA diatur dalam 16 SM dari 32 core masing-masing. GPU ini memiliki enam partisi memori 64-bit, untuk antarmuka memori 384-bit, mendukung hingga total 6 GB memori GDDR5 DRAM. Sebuah antarmuka host menghubungkan GPU ke CPU melalui PCI-Express. The GigaThread scheduler global yang mendistribusikan benang blok ke SM benang penjadwal.

Fermi 16 SM diposisikan sekitar cache L2 umum. Setiap SM adalah persegi panjang jalur vertikal yang mengandung bagian jeruk (scheduler dan pengiriman), sebagian hijau (unit eksekusi), dan bagian-bagian biru muda (register file dan cache L1).

Unit 16 Load / Simpan
Setiap SM memiliki 16 unit load / store, yang memungkinkan sumber dan alamat tujuan harus dihitung selama enam belas benang per jam. Mendukung unit beban dan menyimpan data pada setiap alamat untuk cache atau DRAM.

Empat Unit Fungsi Khusus
Unit Fungsi Khusus (SFUs) mengeksekusi instruksi transendental seperti sin, cosinus, timbal balik, dan akar kuadrat. Setiap SFU mengeksekusi satu instruksi per benang, per jam; warp mengeksekusi lebih dari delapan jam. The SFU pipa dipisahkan dari unit pengiriman, yang memungkinkan unit pengiriman untuk mengeluarkan unit eksekusi lainnya sementara SFU ditempati.

Dirancang untuk presisi ganda
Dua aritmatika presisi adalah jantung dari aplikasi HPC seperti aljabar linear, simulasi numerik, dan kimia kuantum. Arsitektur Fermi telah secara khusus dirancang untuk menawarkan kinerja belum pernah terjadi sebelumnya dalam presisi ganda; hingga 16 presisi ganda menyatu multiply-add operasi dapat dilakukan per SM, per jam, peningkatan dramatis atas arsitektur GT200.

Evaluasi kinerja awal menunjukkan Fermi melakukan sampai 4.2x lebih cepat dari GT200 dalam aplikasi presisi ganda.

Inovasi Memory Subsystem

NVIDIA Paralel Data Cache TM digurasi L1 dan L2 Cache Bersatu.





Bekerja dengan ratusan aplikasi komputasi GPU dari berbagai industri, kita belajar bahwa sementara memori Bersama manfaat banyak masalah, itu tidak sesuai untuk semua masalah. Beberapa algoritma peta alami ke memori bersama, yang lainnya memerlukan cache, sementara yang lainnya memerlukan kombinasi keduanya. Hirarki memori yang optimal harus menawarkan manfaat dari kedua dan cache memori bersama, dan memungkinkan programmer pilihan atas partisi nya. Hirarki memori Fermi menyesuaikan dengan kedua jenis perilaku program. Menambahkan hirarki cache yang benar untuk operasi load / store disajikan tantangan yang signifikan. Arsitektur GPU Tradisional mendukung  pembacaan '' beban '' jalan untuk operasi tekstur dan penulisan '' ekspor '' jalur untuk data output pixel. Namun, pendekatan ini kurang cocok untuk melaksanakan tujuan C umum atau program benang C ++ yang mengharapkan membaca dan menulis harus dipesan. Sebagai salah satu contoh: menumpahkan operand register ke memori dan kemudian membaca kembali menciptakan membaca setelah menulis bahaya; jika membaca dan menulis jalur terpisah, mungkin perlu secara eksplisit menyiram seluruh penulisan '' ekspor '' jalan sebelum aman untuk mengeluarkan membaca, dan setiap cache di jalan membaca tidak akan kebigungan sehubungan dengan menulis data.
Fermi alamat arsitektur tantangan ini dengan menerapkan jalur permintaan memori tunggal terpadu untuk beban dan toko, dengan cache L1 per SM multiprosesor dan bersatu L2 cache yang layanan semua operasi (beban, menyimpan dan tekstur). Per-SM L1 cache dikonfigurasi untuk mendukung kedua memori bersama dan caching operasi memori lokal dan global. 64 KB memori dapat dikonfigurasi baik sebagai 48 KB memori bersama dengan 16 KB dari L1 cache, atau 16 KB memori bersama dengan 48 KB dari L1. Ketika dikonfigurasi dengan 48 KB dari memori bersama, program yang membuat ekstensif menggunakan memori bersama (seperti simulasi elektrodinamik) dapat melakukan hingga tiga kali lebih cepat. Untuk program yang memori akses tidak diketahui sebelumnya, 48 cache konfigurasi KB L1 menawarkan sangat meningkatkan kinerja atas akses langsung ke DRAM.

Dalam konfigurasi baik, cache L1 juga membantu dengan caching tambahan daftar sementara program yang kompleks. GPU generasi sebelumnya tambahan register langsung ke DRAM, meningkatkan akses latency. Dengan cache L1, timbangan kinerja anggun dengan peningkatan penggunaan daftar sementara.
Fermi memiliki 768 KB L2 cache yang bersatu layanan semua permintaan beban, menyimpan, dan tekstur. The L2 menyediakan efisien, kecepatan tinggi berbagi data di GPU. Algoritma yang alamat data yang tidak diketahui sebelumnya, seperti pemecah fisika, raytracing, dan jarang perkalian matriks terutama manfaat dari hirarki cache. Filter dan konvolusi kernel yang memerlukan beberapa SM untuk membaca data yang sama juga menguntungkan.


GPU pertama dengan ECC Dukungan Memori
Fermi adalah GPU pertama yang mendukung Kesalahan Correcting Code (ECC) perlindungan berbasis data di memori. ECC diminta oleh pengguna komputasi GPU untuk meningkatkan integritas data dalam lingkungan komputasi kinerja tinggi. ECC adalah fitur yang sangat diinginkan di berbagai bidang seperti pencitraan medis dan cluster komputasi skala besar. Tentu terjadi radiasi dapat menyebabkan sedikit yang disimpan dalam memori untuk diubah, sehingga terjadinya error sedikit. Teknologi ECC mendeteksi dan mengoreksi single-bit error kecil sebelum mereka mempengaruhi system, Karena kemungkinan radiasi yang disebabkan kesalahan tersebut meningkat secara linear dengan jumlah sistem terinstal. ECC merupakan persyaratan penting dalam instalasi cluster yang besar. Fermi mendukung Mendeteksi kode (SECDED) ECC Single-Kesalahan Correct dua Kesalahan Itu benar Setiap kesalahan bit tunggal dalam hardware Sebagai data Apakah diakses. Selain itu, SECDED ECC Memastikan Bahwa semua Kesalahan bit ganda dan Banyak Kesalahan multi-bit juga dapat dideteksi dan dilaporkan sehingga program dapat kembali menjalankan bukannya dibiarkan terus melaksanakan dengan data yang buruk.
Cache L1, L2 cache, dan memori DRAM adalah ECC dilindungi, sehingga tidak hanya GPU yang paling kuat untuk aplikasi HPC, tetapi juga yang paling handal. Selain itu, Fermi mendukung standar industri untuk memeriksa data selama transmisi dari chip ke chip. Semua GPU NVIDIA termasuk dukungan untuk standar PCI Express untuk CRC memeriksa dengan retry pada lapisan data link. Fermi juga mendukung standar GDDR5 yang sama untuk CRC memeriksa dengan retry (alias "EDC") selama transmisi data seluruh ke memori.

Memory Atom cepat Operasi
Operasi memori atom adalah penting dalam pemrograman paralel, yang memungkinkan benang bersamaan untuk benar melakukan operasi read-memodifikasi-menulis pada struktur data bersama. Atomic operasi seperti menambah, min, max, dan bandingkan-dan-swap atom dalam arti bahwa membaca, memodifikasi, dan menulis operasi dilakukan tanpa diganggu oleh benang lain. Atomic operasi memori secara luas digunakan untuk penyusunan paralel, operasi pengurangan, dan data bangunan struktur secara paralel tanpa kunci yang cerita eksekusi thread. Berkat kombinasi unit atom lebih di hardware dan penambahan cache L2, kinerja operasi atom hingga 20 × lebih cepat di Fermi dibandingkan dengan generasi GT200.

Giga Thread TM Thread Scheduler
Salah satu teknologi yang paling penting dari arsitektur Fermi adalah yang dua tingkat, didistribusikan benang scheduler. Pada tingkat chip, blok jadwal mesin benang pembagian kerja global yang berbagai SM, sementara di tingkat SM, setiap scheduler warp mendistribusikan warps dari 32 benang untuk unit pelaksanaannya. Pertama mesin Giga Thread generasi diperkenalkan di G80 berhasil sampai 12.288 benang secara realtime. Arsitektur Fermi meningkatkan pada yayasan ini dengan tidak menyediakan tempat yang lebih besar, tapi konteks switching secara dramatis lebih cepat, kernel bersamaan eksekusi, dan meningkatkan penjadwalan thread blok. 10x lebih cepat Aplikasi Konteks Switching Seperti CPU, GPU mendukung multitasking melalui penggunaan konteks switching, di mana masing-masing Program menerima sepotong waktu sumber daya prosesor. Fermi pipa dioptimalkan untuk mengurangi biaya saklar konteks aplikasi di bawah 25 mikrodetik, signifikan perbaikan atas GPU generasi terakhir. Selain meningkatkan kinerja, hal ini memungkinkan pengembang untuk membuat aplikasi yang memanfaatkan lebih sering kernel-to-kernel komunikasi, seperti halus interoperation antara grafis dan aplikasi PhysX.

Concurrent Kernel Eksekusi
Fermi mendukung eksekusi kernel bersamaan, kernel mana yang berbeda dari aplikasi yang sama konteks dapat mengeksekusi pada GPU pada saat yang sama. Eksekusi kernel Concurrent memungkinkan program yang mengeksekusi sejumlah kernel kecil untuk memanfaatkan seluruh GPU. Sebagai contoh, Program PhysX dapat memanggil pemecah cairan dan pemecah tubuh kaku yang, jika dijalankan berurutan, akan menggunakan hanya setengah dari prosesor benang yang tersedia. Pada arsitektur Fermi, kernel yang berbeda dari konteks CUDA yang sama dapat mengeksekusi secara bersamaan, memungkinkan maksimum pemanfaatan sumber daya GPU. Kernel dari konteks aplikasi yang berbeda masih dapat menjalankan berurutan dengan efisiensi yang besar berkat peningkatan kinerja konteks switching.



Sumber Materi

Tidak ada komentar:

Posting Komentar