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
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].