DAFTAR LABEL POPULER PENELITIAN.ID

Jangan Buka Artikel Ini!

Makro Prediksi Cabang pada GCC dan Fungsinya

Salah satu teknik optimisasi yang sering digunakan pada kernel Linux adalah "_builtin_expect". Ketika dijalankan dengan kode kondisional (if-else statement), maka akan diketahui cabang mana yang benar dan cabang mana yang salah. Jika kompilator dapat mengetahui informasi ini pada tingkat lebih lanjut, maka hal ini dapat menghasilkan bentuk kode yang paling optimal.


Penjelasan Singkat, Makro Prediksi Cabang pada GCC
Ilustrasi Makro Prediksi GCC


Perhatikan definisi makro dari "likely()" dan "unlikely()" dari kode kernel linux “http://lxr.linux.no/linux+v3.6.5/include/linux/compiler.h”.

#define likely(x) __builtin_expect(!!(x), 1) 
#define unlikely(x) __builtin_expect(!!(x), 0) 

Pada contoh berikut, kode program akan ditandai sebagai likely true:

const char *home_dir ; 
home_dir = getenv("HOME"); 

if (likely(home_dir)) 
printf("home directory: %s\n", home_dir); 

else
perror("getenv"); 

Pada contoh sebelumnya, kode program memiliki kodisional "IF" sebagai "likely()" true, sehingga kompilator akan menempatkan kode true secepatnya dan kode false setelahnya dalam instruksi cabang. Karena hal ini,  maka kompilator akan mecapai nilai optimalnya. Tetapi, jangan menggunakan "likely()" dan "unlikely()" makro secara sembarangan. Jika prediksi bernilai benar, maka artinya terdapat 0 siklus dari lompatan instruksi, tetapi jika prediksi bernilai salah, maka akan mengembalikan beberapa siklus, karena preprosesor dibutuhkan untuk melewatkan alirannya, dimana kondisi terburuk yang dapat terjadi adalah kompilator tidak akan memiliki nilai yang dapat diperkirakan.

'Akses memori' adalah operasi CPU yang paling lambat jika dibandingkan dengan jenis operasi CPU lainnya. Untuk menghindari batasan tersebut CPU menggunakan "CPU caches" atau L1-chache, L2-chache, dan lain sebagainya guna meningkatkan kecepatan akses dari CPU tersebut. Ide utama dari chache adalah mengkopi beberapa bagian dari memori ke dalam CPU itu sendiri. Sehingga, dapat dilakukan akses memori lebih cepat daripada memori yang pernaj dilakukan dengan metode sebelumnya. Namun terdapat masalah, dimana "chache memory" ukurannya terbatas, dan proses kopi data tidak dapat dilakukan pada semua ukuran memori tersebut. Sehingga, CPU hanya melakukan prediksi memori mana saja yang akan digunakan pada waktu dekat dan akan melakukan load memori menjadi CPU chache dan makro yang selanjutnya akan digunakan sebagai petunjuk untuk load memori pada cache CPU.

Komentar

  1. Apa yang dimaksud dengan GCC?

    BalasHapus
    Balasan
    1. GCC adalah singkatan dari GNU Compiler Collection yang merupakan kumpulan atau koleksi kompilator yang dikembangkan oleh proyek GNU. Dimana, pada awal rilisnya, GCC merupakan singkat dari GNU C Compoler karena hanya bisa melakukan kompilasi program terhadap bahasa C saja. Namun, pada Desember 1987, kompilator GCC tidak hanya bisa mendukung bahasa C tetapi juga dapat mendukung bahasa C++.

      Hapus
  2. Apa yang dimaksud dengan GNU?

    BalasHapus
    Balasan
    1. GNU adalah singkatan dari "GNU's No Unix". Kalimat ini diucapkan sebagai suatu suku kata dengan kata G digaungkan lebih keras. Richard Stallman membuat pengumuman awal proyek GNU pada bulan September 1983.


      Catatan: iya, benar, itu adalah singkatan dari GNU yang sebenarnya

      Sumber:
      https://www.gnu.org/gnu/pronunciation.html

      Hapus
    2. Iya tujuan dari pembuatan akronim GNU memang untuk lucu-lucuan aja!!

      Hapus
  3. Heish, akronim konyol macam apa ini -____-

    BalasHapus

Posting Komentar

Hubungi admin melalui Wa : +62-896-2514-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

~ Ikatlah Ilmu dengan Memostingkannya ~

Postingan populer dari blog ini (30 Hari)

Specifier %d dan %i Bahasa C dan Fungsinya

Enkapsulasi Java dan Fungsinya

4 Kesalahan Umum yang Sering Terjadi pada PTK

Cara Membuat Drag and Drop pada HTML

Postingan populer dari blog ini (All Time)

Enkapsulasi Java dan Fungsinya

Komunitas