Apa itu Superskalar?

Prosesor superskalar dapat secara mandiri mengeksekusi beberapa instruksi sekaligus selama satu siklus clock. Ini mencakup sumber daya eksekusi yang berlebihan, seperti beberapa unit titik-mengambang, unit logika aritmatika, dan pemindah bilangan bulat. Jenis prosesor ini dirancang untuk komputasi paralel dan eksekusi spekulatif tanpa memerlukan perangkat lunak khusus. Ini dapat meningkatkan kecepatan eksekusi banyak aplikasi intensif prosesor dengan memanipulasi dan mengatur ulang kode. Ini sering digunakan di beberapa kelas komputer, termasuk server, desktop, dan bahkan laptop.

Meskipun beberapa aspek arsitektur telah digunakan dalam prosesor sejak tahun 1960-an, prosesor superskalar yang sebenarnya tidak dirilis sampai lama kemudian. Beberapa prosesor Reduced Instruction Set Computing (RISC) yang dijual pada akhir 1980-an dan awal 1990-an adalah superscalar. Inti sederhana dan instruksi panjang tetap membuat pengiriman dan penjadwalan instruksi paralel relatif mudah. Banyak prosesor non-RISC yang diproduksi sejak akhir 1990-an juga memiliki arsitektur superscalar. Prosesor tertanam, berdaya rendah, dan prosesor khusus lainnya sering kali merupakan pengecualian, mengoptimalkan aspek lain dari desainnya alih-alih eksekusi paralel.

Beberapa prosesor dapat berbagi satu saluran dengan instruksi dari beberapa utas eksekusi, yang dikenal sebagai super-threading. Ketika unit fungsional menganggur karena menunggu di utas yang sedang dieksekusi, ia dapat mengeksekusi instruksi dari utas lain untuk sementara waktu. Teknik ini membantu untuk memanfaatkan prosesor sepenuhnya tetapi tidak seefisien multithreading simultan (SMT). Prosesor superskalar tunggal dapat mengeksekusi banyak instruksi dari beberapa utas secara bersamaan menggunakan SMT. Namun, menjalankan utas secara bersamaan dapat bersaing untuk mendapatkan sumber daya sistem dan prosesor, yang dapat memperlambat sistem.

Prosesor dengan pipeline multi-tahap dapat mengeksekusi beberapa instruksi secara bersamaan selama mereka berada pada tahapan eksekusi yang berbeda. Sebaliknya, beberapa instruksi dapat dieksekusi pada tahap yang sama pada waktu yang sama dalam prosesor superskalar. Meskipun ada banyak kesamaan antara prosesor jenis ini dan prosesor multi-core, mereka tidak sama. Prosesor multi-core berisi beberapa prosesor lengkap, yang disebut core, dalam satu perangkat. Setiap inti dari prosesor multi-inti biasanya superscalar dan dapat mencakup beberapa jalur pipa paralel.

Fitur utama dari prosesor superscalar adalah kemampuannya untuk mengeksekusi kode program yang salah karena alasan efisiensi. Untuk melakukan ini, ia harus menyadari ketergantungan instruksi apa pun pada instruksi lain. Jika sebuah instruksi mempengaruhi hasil atau menggunakan sumber daya yang lain, kemungkinan besar keduanya tidak harus dieksekusi secara paralel. Ada teknik untuk menghilangkan beberapa jenis dependensi, tetapi yang lain harus menunda pemrosesan sampai sumber daya tersedia.

Eksekusi di luar urutan juga harus dapat menjamin isi register, flag, dan sumber daya lainnya dengan benar jika terjadi interupsi sistem. Dalam hal ini, status sistem harus terlihat sama, seolah-olah kode telah dieksekusi secara berurutan seperti yang dirancang. Pertimbangan lain adalah berapa banyak instruksi yang harus diperiksa prosesor untuk menemukan peluang untuk eksekusi paralel. Semakin besar angkanya, semakin efisien eksekusinya. Ini juga termasuk eksekusi instruksi spekulatif di sisi lain dari setiap cabang dalam kode yang diperiksa.