Pages - Menu

30 Oktober, 2013

Memory Architecture of GPU



GPU Memory Architecture


Makalah
diajukan untuk memenuhi tugas pada Mata Kuliah GPU Computing
disusun oleh :
Caroline Dessiana S.                         118100002
Daniar Pratiwi                                   118101093
Ellisa Ratna Dewi                              118101083
Karina Priscilia                                           118100014


Description: http://blog.ittelkom.ac.id/blog/files/2009/07/logo-itt-2008-300x228.jpg

M. Abdurrobbi Azam                        118100061

FAKULTAS SAINS PROGRAM STUDI S1 ILMU KOMPUTASI
INSTITUT TEKNOLOGI TELKOM
BANDUNG
2013

1       Pengertian GPU

Graphics Processing Unit (GPU), atau yang biasa disebut Visual Processing Unit (VPU) adalah sebuah circuit elektronik khusus yang dirancang untuk dapat memanipulasi dengan cepat dan menjadikan memori lebih cepat dalam penciptaan gambar-gambar pada sebuah frame buffer yang dimaksudkan sebagai output ke layar. GPU digunakan dalam sistem embedded, ponsel, komputer pribadi, workstation, dan konsol game. GPU modern sangat efisien dalam memanipulasi grafis komputer dan struktur paralel yang digunakannya membuat GPU lebih efektif dibandingkan dengan CPU untuk algoritma. Pada komputer pribadi, GPU dapat berupa video card, atau bisa terdapat dalam motherboard.
GPU dipopulerkan oleh Nvidia pada tahun 1999, yang memasarkan GeForce 256 sebagai “GPU pertama di dunia” dan rivalnya yaitu ATI Technologies memasarkan Visual Processing Unit (VPU) “Radeon 9700” pada tahun 2002.

1.1Fungsi Komputasional

GPU modern menggunakan transistor-transistornya untuk melakukan perhitungan yang terkait dengan grafik komputer 3D. GPU awalnya digunakan untuk mempercepat kerja memori-intensif pada pemetaan tekstur dan rendering polygons, kemudian ditambahkan unit untuk mempercepat perhitungan geometris seperti rotasi dan translasi dari simpul ke dalam sistem koordinat yang berbeda. Perkembangan GPU saat ini yaitu dapat memanipulasi simpul dan tekstur dengan operasi yang sama pada CPU dan menjadikan warna-warna dengan presisi yang tinggi. Karena sebagian besar perhitungan melibatkan matriks dan operasi vektor, insinyur dan ilmuwan telah mempelajari penggunaan GPU untuk perhitungan non-grafis, contohnya yaitu gererasi Bitcoins dimana GPU digunakan untuk menyelesaikan “fungsi hash”.Saat ini GPU memiliki dasar akselerasi 2D dan kemampuan framebuffer (biasanya dengan kesesuaian mode VGA).

1.2Keunggulan GPU

Beberapa keunggulan yang dimiliki GPU antara lain :
a.       Memiliki ribuan core
b.      Dapat diprogram
c.       Dapat dengam mudah di install pada hampir semua dekstop
d.      Harganya sama dengan harga CPU
e.       GPU memanfaatkan hukum Moore’s dengan lebih baik dibandingkan dengan CPU.
f.       Hardware mendukung multi threading skala besar.
Multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen. Keuntungan adanya multithreading antara lain :
·         Responsif : Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang. Misalnya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread yang lain berusaha menampilkan gambar.
·         Berbagi sumber daya : Beberapa thread yang melakukan proses yang sama akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
·         Ekonomis : Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan context switching thread
·         Utilisasi arsitektur multiprosesor : Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas procesor yang berbeda.




2       Sekilas Mengenai CPU

2.1 CPU Style Core

Penjelasan masing-masing bagian :
1.      OOO exection logic : merupakan kepanjangan dari out of order execution yang berarti paradigma instruksi yang dijalankan oleh prosesor data dengan data yang masuk.
2.      Branch predictor : lintasan digital yg mencari jalan dipercabangan sebelum diketahui.Tujuannya meningktkan aliran dalam jalur instruksi (instruction pipeline)
3.      Fetch / decode : untuk mengambil data dan instruksi dari memori utama kemudian menyimpan ke dalam memori temporal internal, sedangkan untuk membuat instruksi data yang telah diambil yaitu mengunakan decode.
4.      ALU (Arithmetic Logic Unit) berfungsi untuk melakukan operasi hitungan aritmatika dan logika. Contoh operasi matematika adalah penjumlahan dan pengurangan, operasi logika AND dan OR.
5.      Execution Context dalam core berfungsi untuk :
a.       membaca nilai dari register
b.      meneruskan ke ALU ke dalam fungsi matematika dan logika
c.       menuliskan hasilnya kembali ke register
d.      mengirimkan sinyal kembali ke control unit (CU)

2.2Hierarki Memory “ CPU Style ”

Penjelasan :
Cache : mekanisme penyimpaan data sekunder berkecepatan tinggi, yang digunakan untuk menyimpan data/instruksi yang sering diakses.
a.          L1 Cache             : cache memory yang terletak dalam prosesor (cache internal). Berfungsi untuk penampungan semenara operasi-operasi pengisian register dan untuk meningkatkan efisiensi dari operasi pengisian dan penyimpanan
b.         L2 Cache             : kapasitas L2 lebih besar, tetapi memiliki kecepatan yang lebih  rendah  dari L1 dan letaknya terpisah dari prosesor (cache eksternal). L2 berfungsi untuk memback-up data dari L1 cache.
c.       L3 Cache               : hanya dimiliki oleh prosesor yang memiliki core lebih dari satu, misalnya dual core atau quad core, berfungsi untuk mengontrol data yang masuk dari cache L2 dari masing-masing inti prosesor. Berfungsi untuk membawa data dari L2 cache ke RAM.
Sehingga, secara sederhana, aliran informasi di dalam core yaitu L1 cache > L2 cache > L3 cache > RAM

3       Tampilan Core Pada GPU

3.1 Tampilan core GPU secara keseluruhan

Penjelasan :
Dari gambar diatas dapat dikatakan bahwa 1 core GPU memiliki beberapa shader processor dan texture. Masing-masing shader prosessor memiliki arsitektur memory seperti yang tampak pada gambar kiri atas, yaitu terdiri dari Fetch/decode, sejumlah ALU, Execution contexts dan L1 cache yang telah dijelaskan pada gambar sebelumnya.
1.      Texture Filtering Logic : disebut juga texture smoothing merupakan sebuah metode yang berfungsi untuk menentukan tekstur warna untuk sebuah pemetaan tekstur pixel. Texture Filtering Logic ini termasuk salah satu tipe anti-aliasing.
2.      L1 Texture Cache : merupakan komponen yang penting dalam GPU modern yang berperan dalam mencapai performansi yang real-time saat mengolah gambar yang realistis.

3.2 Tampilan Tiap Komponen 1 Core Processor GPU

(data dari NVIDIA GF100: “Fermi”)
Di dalam GPU modern tidak terdapat L3 cache yang berfungsi untuk meneruskan data dari L2 cache menuju RAM. Hal itu dikarenakan fungsi L3 cache sudah digantikan oleh L2 cache.






3.3 Struktur Multiprosesor CPU dan GPU

Gambar diatas merupakan gambar core CPU dan GPU. Dimana CPU hanya terdiri dari 1 core dengan beberapa komponen seperti control, ALU, cache dan DRAM. Sedangkan pada gambar GPU diatas, tiap baris itu merupakan sebuah core yang memiliki banyak ALU, sebuah control dan cache. Seluruh proses yang dilakukan pada cache kemudian dibawa ke RAM atau DRAM.








4       Contoh Arsitektur Memori NVIDIA GF100

Dari gambar diatas merupakan tampilan arsitektural GF100. Dapat dilihat bahwa arsitektur memori NVIDIA GF100 terdiri dari :
1.      6 memori controller
2.      4 GPC (Graphic Processor Cluster)
3.      1 Giga Thread Engine
4.      1 Host Interface
5.      On chip Level 2(L2) Cache
6.      4 mesin raster ( 1 mesin raster di setiap GPC)
7.      16 Streaming Multiprosessor (SM) ( 4 disetiap GPC)
8.      16 mesin PolyMorph  ( 1 disetiap SM)


                     Gambar diatas merupakan bagian dari SM. Satu streaming multiprocessor (SM) terdiri dari 32 CUDA core. Setiap SM berisi cache atau  local memory untuk total shared memory  48 Kb dengan 16 Kb L1 cache. Memori ini dapat dikonfigurasi ulang untuk penggunaan shared memory 16 Kb dan L1 cache 48 Kb.
                     Tiap CUDA core memiliki operasi floating-point dan integer logic dan melakukan eksekusi secara paralel menggunakan instruksi dari shared instruction dan register file.


5       Contoh Arsitektur Memori NVIDIA Kepler GK110


NVIDIA Kepler GK110 merupakan graphic processor dari NVIDIA GeForce GTX 780 (salah satu produk NVIDIA GeForce notebook platform terbaru).

5.1



 NVIDIA GeForce GTX 780






NVIDIA GeForce GTX 780 menggunakan GK 110 dan memiliki 15 streaming multiprocessor (SM) yang memiliki 2.304 cuda core. Memiliki texture memory unit sebanyak 192 (50% lebih banyak dibanding versi sebelumnya yang hanya memiliki 128 texture memory unit).





 

5.2 Kepler GK 110

                Kepler GK 110 mempunyai 15 SMX atau SM dan 62 bit memory controllers.




 




                Pada Kepler 110 streaming multiprocessor disebut SMX.
Dalam satu SMX terdapat 192 single-precision cuda cores, 64 unit double-precision, 32 SFU (Special Function Units) dan 32 load/store units (LD/ST). 32 thread paralel pada SMX schedules threads disebut warp.





            Thread
Thread block level schedulling dikelola oleh GigaThread engine (terlihat pada gambar kepler GK 110 full chip block diagram pada halaman sebelumnya). Setiap thread dapat mengakses 255 register.
Untuk memungkinkan thread melakukan sharing data dengan thread lainnya didalam warp maka dilakukan shuffle instruction, seperti gambar dibawah ini :
      Shuffle memberikan keuntungan untuk kinerja shared memory karena operasi store-and-load dapat dilakukan dalam satu langkah, hal ini mengurangi shared memory yang dibutuhkan masing-masing thread block.
Sebuah thread block adalah satu set thread yang dapat bekerja sama satu sama lain dan dapat melalui hambatan saat sinkronisasi sehingga mampu melakukan data sharing. Setiap thread memiliki sebuah thread block , grid, dan sebuah program counter.



      Hierarki thread, block dan grid dapat digambarkan seperti berikut :
            Hierarki CUDA mengenai pemetaan thread ke processor GPU : GPU mengeksekusi satu atau lebih grid kernel. Streaming multiprocessor (SM pada Fermi/SMX pada Kepler) mengeksekusi satu atau lebih thread block dan CUDA core serta unit eksekusi lainnya pada SMX mengeksekusi instruksi thread. SMX mengeksekusi 32 thread atau yang disebut Warp.

Warp



Gambar diatas merupakan single warp scheduler unit.
SMX menjadwalkan thread kedalam grup yang berisi 32 parallel threads yang disebut warps. Setiap SMX pada Kepler memiliki 4 warp schedulers unit dan 8 instruction dispatch unit yang memungkinkan 4 warps dapat dieksekusi.
Kepler quad warp scheduler memiliki 4 warps dan 2 instruksi independen per warp dan dapat dieksekusi pada setiap siklus.




Arsitektur Memori Kepler

-          Setiap SMX mempunyai 16 KB shared memory dan 48 KB L1 cache atau 48 KB shared memory dan 16 KB L1 cache.
-           
-          Kepler mempunyai 48 KB read-only data cache.
-           
-          Kepler GK 110 mempunyai 1536 KB L2 cache memory.





Grid Management Unit Pada Kepler GK 110
      Grid adalah array dari thread block yang mengeksekusi kernel yang sama, membaca masukan dari global memory, menulis hasil ke global memory dan melakukan sinkronisasi antar kernel. Grid dari thread block membagi hasil pada global memory setelah melakukan sinkronisasi kernel-wide global.
Pada Fermi grid pada thread block dikeluarkan oleh CPU dan selalu berjalan sampai proses selesai dan membuat simple undirectional flow dari host ke SM melalui CUDA Work Distributor (CDW) unit.
      Pada Kepler, grid dapat diluncurkan/dikeluarkan oleh CPU sama seperti Fermi, tetapi grid yang baru dapat dibuat oleh program CUDA secara otomatis didalam unit SMX atau SM. Untuk mengatur grid yang dibuat oleh program CUDA dan grid yang asli berasal dari host maka  pada kepler terdapat Grid Management Unit (GMU) yang baru. Kontrol unit ini dapat mengatur dan memprioritaskan grid yang masuk ke CDW dan mengirimkannya ke unit SMX untuk dieksekusi.
      CWD pada Kepler dapat melakukan pengiriman 32 grid aktif, dua kali lebih banyak dibandingkan dengan kapasitas CWD pada Fermi.
      Kepler CWD melakukan komunikasi dengan Grid Management Unit (GMU) untuk pemberhentian sementara pengiriman grid yang baru, GMU juga melakukan komunikasi ke SMX unit untuk pengiriman grid.

6       Kesimpulan

-          GPU memiliki lebih banyak core, ALU, dan tidak menggunakan cache hirarki yang tradisional, akan tetapi menggunakan thread untuk mengantisipasi latensi.
-          GPU tidak berperan untuk menggantikan CPU, akan tetapi menjadi CPU co-processor yang membantu kerja CPU.
-          GPU baik digunakan untuk pemrosesan data paralel.



Daftar Pustaka

Fatahalian, Kayvon. (2011).The GPU Memory Hierarchy.
Lippert, Anthony. (2009). NVIDIA GPU Architecture for General Purpose Computing.
NVIDIA Corporation. (2012). Kepler GK 110. NVIDIA Corporation
Wittenbrink, Craig M, dkk. (2011). Fermi GF100 GPU Architecture. IEEE Computer Society.
W1zzard. (2013). NVIDIA GeForce GTX 780 3 GB. Tersedia : http://www.techpowerup.com/reviews/NVIDIA/GeForce_GTX_780/1.html [diakses pada 1 Oktober 2013].