Rabu, 27 November 2019

Optimalisasi Software untuk CPU Multicore

Prosesor multicore kini menjadi tren. Namun, masih sedikit program yang dapat memanfaatkan kekuatan besarnya. Ara Komputer akan menunjukkan kapan multicore benar-benar terpakai.

Prosesor multicore

Kedengarannya memang menarik. "Kinerja empat kali lebih cepat hanya dengan 250 Euro”, itulah yang ditawarkan prosesor paling ekonomis Intel Ouadcore Core 2 Quad 06600. Teorinya, memang benar. Bila sistem operasi dan software sudah kompatibel, prosesor ini rfapat mengalahkan CPU Dualcore paling mahal seharga 1.000 Euro.

Namun, walaupun harganya sudah cukup ekonomis, banyak pengguna yang masih menunggu. Banyak yang kurang yakin prosesor 4 core sudah dapat digunakan maksimal. Anggapan ini memang tidak salah. Saat ini, baru beberapa software saja yang dapat memanfaatkan multicore ini. Bahkan ada beberapa tool yang berjalan lebih lambat bila menggunakan multicore! Artinya, dalam kondisi tertentu, penggunaan muticore malah tidak menguntungkan.

Mengapa begitu sulit untuk memanfaatkan potensi dari prosesor baru ini? Tentu saja, masalahnya bukan hanya pada hardware baru dari sisi produsen Ara Komputer. Sebenarnya, pengembang software bisa saja memanfaatkan pfrtensi ini hampir pada semua program. Namun, dari awal mereka harus merancang aplikasi tersebut untuk prosesor multicore. Di sini, Ara Komputer menunjukkan kesulitan apa yang dihadapi oleh pengembang software. Selain itu ditunjukkan pula tambahan kecepatan pada software yang telah dioptimalkan untuk multicore sampai dengan 8 core CPU.

MULTITHREADING: teknik alokasi pada software


Agar sebuah program dapat memanfaatkan kinerja multicore,prosesnya harus dibagi-bagi menjadi yang lebih dikenal dengan "Threads". Dengan "Multithreading", komponen yang membutuhkan proses berat tetap berjalan di background selama CPU tidak terpakai. Pada kondisi ini, hanya grafical interface yang tetap diaktualkan sebagai thread kecil. Namun, di sini tidak ada pertambahan kecepatan karena semua operasi sudah dialokasikan untuk resource yang ada. Meskipun demikian, proses diselesaikan secara berurut.

Prosesor Pentium-4 pun bekerja dengan dua logical core berkat teknologi "Hyperthrea-ding". Teknologi ini dapat melakukan dua operasi hitung yang berbeda secara bersamaan. Namun, di sini muncul masalah baru. Bila dua proses berjalan secara bersamaan dengan resource yang sama, misalnya memory cell, bisa terjadi bahwa salah satu thread lebih cepat diproses. Tidak diperhitungkan apakah proses lain (walaupun penting) sudah selesai dikalkulasi dan proses kedua tidak lagi tersedia pada resource tersebut. Kondisi ini dikenal juga sebagai “Race-Condition”

Masalah kedua, thread bisa saling menghalangi satu sama lain apabila ingin menggunakan resource yang sama secara bersamaan. Kondisi ini disebut "Deadlocks”. Bila masalah pada Hyper-threading dan Dualcore-CPU hanya menyangkut 2 thread, maka dengan bertambahnya jumlah core, thread yang terlibat pun semakin banyak. Oleh sebab itu, pengembang software harus mengubah strateginya.
CPU Multicore

PERBEDAAN: kelebihan dan kekurangan multicore


Ketidakmandirian proses kalku-kasi seringkah membuat paraleli-sasi tidak efisien. Beberapa contoh memperjelas perbedaan ini. Tidak ada pertambahan kecepatan yang diperoleh karena setiap proses membutuhkan hasil kalkulasi dari proses sebelumnya. Contoh klasik yang dapat ditunjukkan di sini adalah cara menghitung populasi kelinci (dikenal sebagai Fibonacci numbers). Untuk sebuah penghitungan diperlukan dua hasil dari operasi hitung sebelumnya. Selain itu, kebanyakan aplikasi juga tidak memanfaatkan multicore, seperti tool kompresi file WinRAR Version 3.71 yang hanya menggunakan satu core saja .

Bahkan pengembang game saat ini masih tetap menunggu walaupun paralelisasi cukup bermanfaat bagi aplikasi game. Grafik Ara Komputer dapat menyelesaikan kalkulasi secara paralel. Selama ini, hanya beberapa game aktual saja yang memanfaatkan multicore, seperti “World in Conflict” yang penuh dengan tokoh-tokoh Al (Artificial Intelligent) dan kalkulasi fisik. Sampai dengan 4 core, paling tidak, pengguna dapat merasakan sedikit pertambahan kecepatan.

Paralelisasi juga cukup menjanjikan untuk video coding karena pada kondisi tertentu pertambahan kecepatan cukup mengesankan. Di sini, thread creating menjadi sangat efektif, baik antara dua scene yang tersimpan sebagai static image (l-Frames) atau saat menginterpolasi dynamic vector dalam gambar. H.264-Pro-Codec dari MainConcept, misalnya, sangat baik melakukan scaling dari satu sampai dengan 4 core. Dengan sebuah hard disk yang cepat, hasilnya pun bisa lebih baik lagi.

Dilema Multithreading: Paralel atau Tidak?


Tool, seperti Intel Compiler 10, momong dapat mengoptimalkan kode program untuk mendukung multicore. Namun, bila pemrogram tidak memanfaatkannya, efek multicore menjadi sla-sla.

kita ambil contoh sebuah program sederhana yang membaca angka secara berurut dari daftar nilai, Program menghitung »i" dan menuliskan hasilnya ke daftar hasil. Saat dioptimalkan compiler tidak "tahu” apakah daftar nilai dan daftar hasil saling berguna satu dengan yang lain atau tidak pada proses selanjutnya untuk multithreading. Sebagai tindakan keamanan agar tidak terjadi kesalahan perhitungan, compiler hanya akan menghasilkan software single thread disini, core tambahan manjadi tidak terpakai

  • Nilai input dan hasilnya tidak saling berkaitan. Kalkulasi dapat dijalankan secara paralel (multithreading), sehingga fungsi dari Multicore tersebut akan termanfaatkan

  • Hasil kalkulasi pertama menjadi nilai input untuk kalkulasi selanjutnya. Tidak dapat dilakukan secata multithreading

123