Category Archives: Teknologi

AMD Asynchronous Shader, Sebuah Teknologi “Rahasia” dari AMD

Asynchronous Shaders

Pada Game Developers Conference (GDC) yang diselenggarakan pada bulan Maret 2015 yang lalu, AMD menyinggung soal teknologi “rahasia”-nya yaitu Asynchronous Shaders.

Graphics Processing Unit (GPU) berevolusi dari VGA Card dari sebuah kartu tambahan pada komputer untuk menggambar di layar menjadi sesuatu yang mempunyai kepintaran sendiri. GPU atau terkadang disebut juga Visual Processing Unit (VPU) lahir pada tahun 1999 dengan ditanamkannya sebuah prosesor yang sanggup untuk melakukan trik-trik pada gambar sekaligus menampilkannya pada layar. GPU sendiri tidak harus berupa sebuah kartu, tetapi bisa berupa Core yang ditanamkan pada Central Processing Unit (CPU) seperti pada Accelerated Processing Unit (APU) dari AMD.

Setelah sekian lama waktu berlalu, tidak hanya kecepatan proses pada GPU ini yang berkembang, tapi jumlah trik-trik yang bisa dilakukannya. Misalnya GPU dapat membantu tugas CPU, GPU dapat mengubah format video, GPU dapat mengolah suara, dan lain sebagainya. Tapi kita simpan topik ini untuk pembahasan di lain kesempatan.

Salah satu “rahasia” yang ditanamkan pada GPU AMD sejak AMD mengubah arsitekturnya menjadi Graphics Core Next (GCN) adalah Asynchronous Compute Engine (ACE). ACE ini sudah ada sejak seri AMD Radeon 79xx lahir. AMD Radeon 79xx mempunyai 2 ACE dan AMD menambahkannya hingga 8 ACE pada AMD Radeon R9 290 dan R9 290x.

LiquidVR SDK Sample Demo

Pada demo yang menggunakan sampel dari LiquidVR Software Development Kit (SDK), AMD menunjukkan dengan Asynchronous Shaders, kecepatan dari gambar yang tampil/Frame Per Second (FPS) dapat meningkat hingga 46% dengan hardware yang sama. Ini merupakan kabar gembira bukan hanya untuk mereka yang suka dengan FPS tinggi, Oculus sebagai pelopor pengembangan Virtual Reality (VR) mengatakan untuk pengalaman yang seindah asli dalam dunia VR dibutuhkan resolusi minimal 1.440p dan FPS minimum 75-90. Kalau FPS turun dibawah rekomendasi, maka pengguna akan mulai merasa tidak nyaman, sakit kepala, dan sebagainya.

AMD GPU Layout

ACE berlokasi diantara Graphics Command Processor (GCP) dan Shaders. Jika diibaratkan seperti sebuah perusahaan, GCP ini adalah Big Boss yang mengambil pesanan dari pelanggan (CPU) dan memerintahkan semua bagian di perusahaan (GPU) untuk mengerjakan pesanan itu tanpa terlalu banyak detil tentang tugas tersebut. ACE bagaikan Manager yang hanya punya kuasa kepada bawahannya (shaders) dan bertugas untuk mengatur karyawan agar mengerjakan pesanan dengan maksimal. Shaders bertugas untuk mengolah gambar dan special-effects-nya, mengkalkulasi efek pencahayaan, mengkalkulasi efek fisika dalam game, dan lain sebagainya.

GPU Pipeline DirectX 11

DirectX 11 dan sebelumnya sangat berantakan dan kemampuan multi-thread-nya sudah rusak dari sejak awal diluncurkan, bukan hanya pada GPU semata, namun pada CPU juga. Banyak yang merekomendasikan CPU dengan Single/Dual Core karena perbedaannya tidak jauh dengan Quad Core/Hexa Core/Octa Core, oleh sebab itu walaupun ACE ini sudah hadir bertahun-tahun silam masih saja belum bisa dimanfaatkan. Namun AMD tetap meningkatkan jumlah ACE dari 2 buah pada AMD Radeon 7970 menjadi 8 buah pada AMD Radeon R9 290x karena AMD percaya bahwa suatu hari kelak ACE akan berguna. Ini menjadi kenyataan dengan hadirnya Low-Level API baru seperti Mantle, Vulkan, dan DirectX 12 yang dikembangkan AMD bersama Microsoft untuk menghadirkan Asynchronous Shader.

Sebelum hadirnya Asynchronous Shader, semua tugas shader dikerjakan berurutan sesuai dengan datangnya tugas. Walaupun ada tugas yang lebih gampang dan tidak menggunakan bagian yang sama dalam shader, tetap saja burung yang datang duluan yang mendapat cacingnya. Misalnya untuk contoh sederhana: CPU memberi tugas “gambarkan gelombang pada air sewaktu batu jatuh ke dalamnya” lebih dulu lalu tugas “hitunglah jumlah gelombang pada air sewaktu batu jatuh ke dalamnya” datang belakangan, secara manusiawi, pasti kita akan menghitung dulu jumlah gelombang pada air baru menggambarnya, tapi karena shader tidak punya akal seperti manusia, maka shader akan mengerjakan sesuai urutan tugas yang datang walaupun tidak masuk akal. Hal seperti ini sudah dicoba diperbaiki dengan Pre-Emption, yaitu menjadwalkan tugas yang lebih penting untuk dikerjakan lebih dahulu dan yang kurang penting dikerjakan belakangan, namun Pre-Emption sendiri tidak memaksimalkan penggunaan shader, karena tetap saja tugas dikerjakan 1 per 1 padahal untuk menggambar dan menghitung, shader menggunakan bagian yang berbeda yang tidak harus saling menunggu satu sama lain.

GPU Pipeline DirectX 12

Asynchronous Shader menjadikan shader pada GPU AMD Radeon bekerja secara pararel. GPU memang mempunyai ratusan bahkan ribuan Stream Processors didalamnya dan bekerja secara pararel, tetapi pararel yang dihadirkan oleh Asynchronous Shader adalah pararel dalam mengerjakan tugas yang menggunakan bagian yang berbeda dalam GPU.

API Overhead Feature Test

Pada pengujian Application Program Interface (API) awal yang dilakukan dengan bantuan software 3D Mark API Overhead Feature Test yang baru-baru ini dirilis oleh 3D Mark, terlihat bahwa betapa buruknya kinerja DirectX 11. DirectX 11 bekerja lebih baik pada single-thread daripada multi-thread. Thread adalah sub bagian dari sebuah process. Sebuah process misalnya sewaktu web browser berjalan, ada banyak thread didalamnya seperti: thread untuk memuat gambar, thread untuk mengolah tampilan, dll. Multi-thread berguna agar sewaktu web browser tersebut memuat gambar, dia tidak harus menunggu gambar tersebut selesai di muat, dan bisa menampilkan isi lainnya yang sudah terdownload. Tidak masuk akal memang jika multi-thread ini menurunkan kemampuan komputer, malah harusnya sebaliknya, tapi inilah yang terjadi pada DirectX 11. Trik seperti inilah yang dikerjakan oleh Asynchronous Shaders.

Berkat kekacauan inilah AMD dan developer game berinisiatif untuk dihadirkannya API baru. API bagaikan fondasi atau rangka dari program. Dengan adanya API, developer tidak harus mengulang membuat program yang sama dalam setiap game. API berbeda dengan game engine walaupun fungsinya mirip, API jauh lebih mendasar dan lebih mentah daripada game engine. API baru yang dibuat dari awal oleh AMD dan benar-benar baru dari yang sebelumnya pernah ada bernama Mantle. Hanya berkat sebuah API baru tanpa perubahan apapun kepada hardware dapat meningkatkan Draw Calls hingga 1.600% atau 16x lipat dari DirectX 11. Kesuksesan Mantle ini pun digabungkan oleh AMD dan Microsoft ke dalam DirectX 12.

Games-With-Asynchronous-Shaders

Ada beberapa game yang sudah menggunakan teknologi Asynchronous Shader. 3 game pada PlayStation 4 yaitu: Battlefield 4, InFAMOUS Second Son, dan The Tomorrow Children, dan sebuah game di Personal Computer (PC) yaitu: Thief (harus menggunakan Mantle untuk dapat memanfaatkan Asynchronous Shader). Untuk XBox One, walaupun menggunakan CPU dan GPU dari AMD, saat ini belum bisa memanfaatkan Asynchronous Shader, karena masih menggunakan DirectX 11, mudah-mudahan dengan hadirnya DirectX 12 di XBox One nantinya akan memanfaatkan kemampuan Asynchronous Shader. XBox One memilih untuk menggunakan GPU dengan 2 ACE didalamnya, sementara PlayStation 4 yang sama-sama menggunakan hardware dari AMD memilih untuk menggunakan GPU dengan 8 ACE.

Semoga artikel ini bermanfaat *Cheers*

F.A.Q Seputar Heterogeneous System Architecture (HSA)

HSA-Diagram

Kali ini kita akan membahas tentang HSA atau Heterogeneous System Architecture dalam bentuk pertanyaan-pertanyaan yang umum ditanyakan bagi yang masih awam mengenai teknologi HSA ini.

T: Apa itu HSA?

J: HSA atau Heterogeneous System Architecture adalah salah satu tipe arsitektur komputer yang menggabungkan CPU (Central Processing Unit) dengan GPU (Graphics Processing Unit) atau chip lain yang dapat di program untuk semua prosesnya dengan membagi tugas dan memori yang dipakai.

APU Chart

T: Apakah semua CPU dan GPU yang terintegrasi adalah HSA?

J: Tidak. Untuk saat ini hanya AMD APU saja yang menggunakan teknologi HSA.

T: Apa perbedaan APU dengan CPU dan GPU yang terintegrasi?

J: CPU dan GPU yang terintegrasi bekerja secara terpisah. CPU mengerjakan tugas sendiri, dan GPU mengerjakan tugas sendiri. Sehingga program yang ingin memanfaatkan CPU dan GPU tersebut harus menyalin isi yang ingin di kerjakan di dalam Random Access Memory (RAM).

Traditional CPU with iGPU

Pada APU, CPU dan GPU bisa mengakses memory yang sama sehingga data yang sama bisa dikerjakan bersama-sama tanpa perlu membuat salinan untuk masing-masing CPU dan GPU.

APU.

Pada CPU dan GPU yang terintegrasi, GPU harus mengalokasikan memory secara eksklusif untuk GPU sendiri dan sisanya diberikan kepada CPU.

Traditional iGPU Memory Usage

Pada APU, memory yang sama dipakai oleh CPU dan GPU sehingga data didalam memory tidak perlu dibuat ganda agar bisa diproses oleh CPU dan GPU.

APU Memory Usage

T: Mengapa APU masih membutuhkan alokasi kalau CPU dan GPUnya bisa membaca memory yang sama?

J: Alokasi memory digunakan oleh APU untuk menampung gambar, video, tekstur pada game, dan sejenisnya. GPU pada APU tidak memerlukan salinan memory spesial (yang hanya dimengerti oleh GPU) untuk membantu CPU mengerjakan tugas.

Frame Buffer

T: Apakah untuk menggunakan HSA dengan APU kita memerlukan peralatan khusus?

J: Tidak. APU seperti layaknya CPU biasa, tidak ada perbedaan yang kasat mata atau perlu tambahan hardware istimewa seperti sebuah super komputer memerlukan co-processor untuk keperluan komputasi dengan GPGPU, semua sudah disediakan oleh APU.

No Special Hardware Required

T: Apakah HSA hanya bisa menggabungkan CPU dan GPU saja?

J: Tidak. Semua chip yang bisa di program seperti video codec, Digital Signal Processor (DSP), Field Programmable Gate Array (FPGA), dan lainnya di masa mendatang sejalan dengan perkembangan HSA mungkin akan mengintegrasikan lebih dari CPU dan GPU saja.

HSA Foundation

T: Jika saya menambahkan VGA/GPU card tambahan, apakah HSA didalam APU masih aktif?

J: Ya. GPU didalam APU masih aktif membantu CPU dalam proses secara pararel. GPU didalam APU hanya menjadi tidak aktif ketika di-disable.

Heterogeneous System Architecture

T: Jika saya ingin menambahkan VGA/GPU card tambahan ke APU AMD, apakah harus VGA/GPU tersebut harus bermerek AMD agar tetap bisa menikmati teknologi HSA?

J: Tidak. VGA/GPU card merk dan jenis apapun bisa dipakai untuk memproses data secara pararel, tetapi hanya GPU yang didalam APU yang dapat saling bertukar data didalam memory yang sama.

T: Mengapa HSA dibuat?

1. Karena kemampuan komputasi CPU mengalami perkembangan yang lambat. Sementara GPU yang berasal dari hanyalah sebuah kartu tambahan untuk menampilkan gambar ke layar komputer mengalami perkembangan yang pesat.

GPU Compute Performance

2.  Berbeda seperti pada masa awal komputer dimana kita harus memerintahkan komputer dengan mengetik perintah agar komputer melakukan sesuatu, komputer berevolusi untuk berinteraksi kepada kita dengan cara yang lebih natural, seperti dengan gerakan tangan, mata, atau bagian tubuh lainnya. Untuk memungkinkan ini terjadi, diperlukan kekuatan yang besar dalam memproses data dan untuk memvisualisasikan gambar seperti pada Virtual Reality

Hololens Demo

3. Untuk mendapatkan kemampuan yang setara dengan kekuatan GPU perlu jumlah core CPU yang banyak dan ada keterbatasan menambahkan core CPU ke dalam suatu chip, juga menjadi tidak praktis menghadirkan 56 core CPU hanya untuk menandingi 8 core GPU.

T: Saya adalah programmer, apakah saya harus belajar bahasa programming tertentu agar program saya bisa memanfaatkan kemampuan HSA?

J: Tidak. HSA sudah didesain untuk bahasa pemrograman yang sudah umum dan ada seperti: C++, C++ AMP, C#, OpenCL, OpenMP, Java and Python.

Python Code

T: Apakah saya harus menggunakan AMD APU agar bisa memanfaatkan kehebatan HSA?

J: Tidak. Ada berbagai perusahaan besar yang tergabung dalam HSA Foundation berkeinginan untuk mengembangkan HSA ke arah yang lebih maju. Saat artikel ini ditulis, hanya AMD APU saja yang mempunyai teknologi HSA.

T: Saya tertarik untuk mempelajari lebih lanjut tentang HSA, dimana saya bisa mendapatkannya?

J: HSA Foundation (http://hsafoundation.com/) menyediakan banyak informasi tentang HSA. Beberapa tutorial dan presentasi bisa didapatkan dari AMD (http://developer.amd.com/).

Semoga artikel ini bermanfaat *Cheers*