Saat ini dunia komputer mungkin sedang euphoria dengan istilah-istilah seperti "dual core" dan "quad core". Terimakasih kepada kampanye marketing dari Intel, konsumen-konsumen yang kebanyakan duit akan dengan senang hati membeli prosesor quad core dengan harapan bahwa komputernya akan memberikan kinerja maksimum. After all, semakin banyak core, maka komputer akan semakin cepat. Bukan begitu?
Belum tentu.
Kalau ada berpikir bahwa prosesor dual core akan memberikan kinerja dua kali lipat, sedangkan prosesor quad core akan memberikan kinerja empat kali lipat, maka jawabannya salah. Kenapa? Karena tidak semua proses dapat diparalelkan. Peningkatan kinerja yang diperoleh dengan menambah jumlah core tetap dibatasi oleh proses-proses yang tidak bisa diparalelkan. Ini disebut dengan Amdahl's Law.
Sebagai contoh, seandainya suatu rangkaian proses memakan waktu 20 jam. Tapi dari 20 jam itu, ada suatu proses sebesar 5 jam yang tidak dapat diparalelkan. Maka, jika proses tersebut dikerjakan dengan dual core, waktu pengerjaannya adalah 5 jam + (15 jam / 2 processor ) = 12.5 jam.
Yup, ternyata dual core tidak berhasil mengecilkan waktu proses menjadi 10 jam, tetapi hanya sampai 12.5 jam saja. Peningkatan kinerja yang diperoleh bukan 2 kali lipat (bukan 20 jam / 10 jam), tapi hanya sekedar 1.6 kali lipat saja (yaitu 20 jam / 12.5 jam).
Oke, sekarang bagaimana kalau rangkaian proses di atas dikerjakan dengan processor 4 core? Maka waktu pengerjaannya menjadi 5 jam + (15 jam / 4 processor) = 8.75 jam.
Ternyata menggunakan quad core juga gagal mengurangi waktu proses menjadi 5 jam, tetapi hanya menjadi 8.75 jam saja. Peningkatan kinerja yang diperoleh bukan 4 kali lipat (bukan 20 jam / 5 jam), tetapi hanya 2.28 kali lipat saja (yaitu 20 jam / 8.75 jam).
Bagaimana kalau kita menggunakan 8 core? Berhubung proses yang 5 jam itu tidak dapat diparalelkan, maka waktu pengerjaannya menjadi 5 jam + (15 jam /8 processor) = 6.875 jam. Peningkatan kinerja yang diperoleh adalah 20 jam / 6.875 jam = 3 kali lipat.
Dari sini terlihat bahwa:
Dengan 2 core, ternyata peningkatannya hanya sebesar 1.6 kali lipat.
Dengan 4 core, ternyata peningkatannya hanya sebesar 2.28 kali lipat.
Dengan 8 core, ternyata peningkatannya hanya sebesar 3 kali lipat.
Inilah yang disebut dengan law of diminishing return, dimana peningkatan kinerja malah menjadi semakin kecil dengan penambahan core. Sebagai contoh, penggunaan 8 core hanya memberikan kinerja sebesar 3 kali lipat, padahal jumlah core -nya adalah 8. Jadi ternyata 8 core tidak bisa menambah kinerja menjadi 8 kali lipat.
Tentu semua ini dengan asumsi bahwa dari suatu rangkaian proses sebesar 20 jam, ada proses sebesar 5 jam yang tidak dapat diparalelkan. Tapi bisa kita lihat, bahwa dalam kasus di atas, proses yang tidak bisa diparalelkan tersebut hanyalah sebesar 25% (5 dari 20), tapi sudah cukup untuk mengurangi kinerja 8 core menjadi hanya sebesar 3 kali lipat saja.
Kalau begitu, apakah processor 8 core tidak bisa memberikan kinerja 8 kali lipat? Jawabannya: BISA. Tetapi hanya pada kondisi ideal dimana 100% proses bisa diparalelkan.
Tapi sekali lagi, di dunia nyata ini tidak mungkin ada 100% proses yang bisa diparalelkan. Membangun rumah saja harus membuat fondasi dulu, harus membuat kerangka dulu, baru bisa mengerjakan yang lain-lainnya. Sebelum memasang genteng, rumahnya kan harus jadi dulu. Jadi memang tidak mungkin ada proses yang 100% bisa diparalelkan.
Demikian juga dengan proses-proses komputer. Proses-proses yang dapat dikerjakan secara paralel (oleh dual core, quad-core, dsb) tetap membutuhkan overhead untuk mensinkronisasikan proses-proses tersebut. Dan overhead ini tidak dapat diparalelkan, namanya juga overhead.
Selain itu, tidak semua proses itu gampang untuk diparalelkan. Proses-proses yang linear seperti ray-tracing atau video encoding memang mudah untuk diparalelkan. Tetapi banyak sekali proses yang bersifat "unpredictable" (seperti bermain game atau mengetik dengan MS-Word) sehingga sulit diparalelkan.
Peningkatan kinerja multicore (dual core, quad core, dsb) tidak hanya berasal dari kemajuan teknologi processor, tetapi juga lebih berasal dari modifikasi-modifikasi terhadap coding aplikasi atau sistem operasi. Game-game yang sudah agak kuno, misalnya, tidak akan mendapat keuntungan apa-apa dari dual core. Kalau game kuno itu berjalan cepat di Core2 Duo, itu bukan karena dual core -nya, tetapi karena masing-masing core dari Core2 Duo memang lebih cepat daripada Pentium 4.
Sistem operasi dapat "mengakali" aplikasi-aplikasi yang tidak dirancang untuk dual core supaya bisa mendapat keuntungan dari dual core tersebut, yaitu dengan metode yang disebut sebagai "processor affinity". Misalnya saja, kita dapat mengeset supaya MS-Word berjalan di core nomor 1, sedangkan WinAmp berjalan di core nomor 2. Dengan demikian, kita bisa mengetik sambil mendengarkan WinAmp dengan kinerja yang lebih cepat daripada kalau menggunakan processor tipe single core.
Tapi tetap saja, software MS-Word itu sendiri tidak bisa diparalelkan. Kalau WinAmp -nya kita matikan, misalnya, maka kinerja MS-Word tidak akan menjadi lebih cepat.
Thoughts? Opinion?