Superskalar

Prosesor Superskalar 

Prosesor superskalar adalah salah satu jenis arsitektur komputer di mana prosesor uniprosesor dapat menjalankan dua atau lebih operasi skalar secara paralel. Istilah ini juga bisa merujuk kepada prosesor yang mampu menjalankan banyak instruksi setiap siklusnya dengan menggunakan teknik yang disebut pipelining.

Arsitektur superskalar dirancang untuk meningkatkan kecepatan pemrosesan CPU. Sebagian besar komputer yang digunakan saat ini menggunakan mekanisme superskalar. Standar pipelining yang digunakan melibatkan pengolahan bilangan bulat (integer) dan sebagian besar prosesor juga memiliki kemampuan untuk mengolah data floating point (bilangan berkoma).

Misalkan Instruksi
 
  Add R1, R2, R3

Instruksi yang akan menambahkan isi registernya R1 dan R2 dan menempatkan hasilnya dalam register R3. Isi dari register R1 dan R2 awalnya akan ditransfer ke Unit aritmetika dan logika. Setelah operasi penambahan dilakukan, hasil penjumlahannya akan ditransfer ke register R3. 

Prosesor dapat membaca instruksi selanjutnya dari memori, sementara operasi penambahan dilakukan. Kemudian, jika instruksi menggunakan ALU,  operand-nya dapat ditransfer ke input ALU pada saat yang sama dengan hasil instruksi Add ditransfer ke register R3.

Pipeline yang mengolah bilangan bulat juga dapat digunakan untuk mengolah data dengan tipe floating point ini, namun untuk aplikasi tertentu, terutama dalam konteks keperluan ilmiah, CPU yang memiliki kemampuan pengolahan floating point dapat meningkatkan kecepatan proses secara dramatis.

Peristiwa yang dapat dilakukan dengan metode superscalar ini adalah dalam hal meramalkan pencabangan instruksi (branch prediction) serta eksekusi spekulatif. Peristiwa ini sangat menguntungkan bagi program yang membutuhkan pencabangan dari kelompok instruksi yang dijalankan.

Program yang terdiri dari kelompok perintah bercabang ini sering digunakan dalam pemrograman. Contohnya adalah dalam menentukan aktivitas yang dilakukan oleh suatu sistem berdasarkan umur seseorang yang sedang diolahnya. Misalnya, jika umur yang bersangkutan lebih dari 18 tahun, maka akan diberlakukan instruksi yang berhubungan dengan umur tersebut. Anggaplah seseorang tersebut dianggap telah dewasa. Sedangkan untuk kondisi lainnya, dianggap belum dewasa. Tentu perlakuan akan dibedakan sesuai dengan sistem yang sedang dijalankan.

Pada kasus ideal, jika semua instruksi ditumpuk ke derajat yang maksimum yang mungkin dilakukan, maka eksekusi dilanjutkan pada kecepatan penyelesaian satu instruksi dalam tiap siklus detak prosesor. Instruksi individual, mungkin masih memerlukan beberapa siklus detak agar selesai dilakukan. Tetapi untuk tujuan perhitungan, prosesor superskalar umumnya mampu melakukannya dalam tiap siklus.

Prosesor superskalar umumnya menggunakan beberapa unit fungsional, menciptakan jalur paralel di mana berbagai instruksi yang berbeda dapat dieksekusi secara paralel. Dengan pengaturan tersebut, maka dimungkinkan untuk memulai eksekusi beberapa instruksi secara paralel tiap siklus detak. Tentu saja, eksekusi paralel harus mempertahankan kebenaran logikan program, sehingga hasil yang diperoleh harus sama dengan hasil dari eksekusi secara serial.

Pada CPU yang mendukung perintah pencabangan ini, CPU membutuhkan lumayan banyak clock cycle, mengingat CPU menempatkan semuanya pada pipeline dan menemukan perintah berikutnya yang akan dieksekusinya. Sirkuit untuk branch prediction melakukan pekerjaan ini bekerja sama dengan pipeline, yang dilakukan sebelum proses di ALU dilaksanakan, dan memperkirakan hasil dari pencabangan tersebut.

Jika CPU berfikir bahwa branch akan menuju suatu cabang, biasanya berdasarkan pekerjaan sebelumnya, maka perintah berikutnya sudah dipersiapkan untuk dieksekusi berikut data-datanya, bahkan dengan adanya pipeline ini, bila tidak diperlukan suatu referensi dari instruksi terakhir, maka bisa dilaksanakan dengan segera, karena data dan instruksi yang dibutuhkan telah dipersiapkan sebelumnya.

Dalam hal eksekusi berspekulasi, artinya CPU akan menggunakan pipelining untuk melakukan perhitungan pada jalur yang berbeda berdasarkan perkiraan yang dibuat oleh komputer. Jika perkiraan yang dibuat oleh komputer benar, maka hasilnya bisa segera diambil dan perintah berikutnya dapat dilanjutkan. Namun, jika perkiraan tersebut tidak benar, maka CPU akan melakukan eksekusi berdasarkan kemungkinan lain sesuai dengan logika instruksi yang diberikan.

Teknik yang digunakan untuk pipeline dan superscalar ini dapat melakukan branch prediction dan speculative execution, yang tentunya membutuhkan banyak transistor tambahan. Sebagai perbandingan, komputer pertama yang menggunakan mesin 8088 dari IBM hanya memiliki sekitar 29.000 transistor. Sementara itu, mesin Pentium III dengan teknologi superscalar dan superpipeline, memiliki sekitar 7,5 juta transistor yang mendukung branch prediction, speculative execution, dan berbagai kemampuan lainnya. Beberapa CPU terkini seperti HP 8500 bahkan memiliki sekitar 140 juta transistor.

Pengguna superscalar Prosesor Intel x86 yang menggunakan arsitektur superskalar adalah keluarga Intel Pentium, Intel Pentium Pro, Intel Pentium II , Intel Pentium III , Intel Itanium, Intel Xeon, Intel Pentium 4, Intel Pentium M, Intel Core dari Intel Corporation. Keluarga AMD K5, AMD K6, AMD Athlon, AMD Athlon 64, dan AMD Opteron.

Superscalar atau superskalar adalah arsitektur prosesor yang memungkinkan eksekusi paralel dari banyak instruksi pada tahap pipeline yang sama dan dengan kualitas yang sama dengan tahap pipeline yang lain.[1]

Merupakan salah satu rancangan untuk meningkatkan kecepatan CPU. Kebanyakan dari komputer saat ini menggunakan mekanisme superskalar ini. Standar pipelain yang digunakan adalah untuk pengolahan bilangan matematika integer (bilangan bulat, bilangan yang tidak memiliki pecahan), kebanyakan CPU juga memiliki kemampuan untuk pengolahan untuk data floating point (bilangan berkoma). Pipelain yang mengolah integer juga dapat digunakan untuk mengolah data berjenis floating point ini, namun untuk aplikasi tertentu, terutama untuk aplikasi keperluan ilmiah, CPU yang memiliki kemampuan pengolahan floating point dapat meningkatkan kecepatan prosesnya secara dramatis. [2]

Teknologi superscalar mampu menjalankan instruksi secara paralel dengan menggunakan satu prosesor. Superscalar dapat diimplementasikan baik pada arsitektur RISC maupun CISC, namun umumnya lebih sering digunakan pada arsitektur RISC. [1]

Peristiwa menarik yang dapat dilakukan dengan metode superscalar ini adalah dalam hal memprediksi pencabangan instruksi (branch prediction) dan melaksanakan eksekusi secara spekulatif (speculative execution). Peristiwa ini sangat menguntungkan bagi program-program yang membutuhkan pencabangan dari kelompok instruksi yang mereka jalankan. [2]

Program yang terdiri dari kelompok perintah bercabang ini sering digunakan dalam pemrograman. Contohnya dalam menentukan aktivitas yang dilakukan oleh suatu sistem berdasarkan umur seseorang yang sedang diolahnya, jika umur yang bersangkutan lebih dari 18 tahun, maka akan diberlakukan instruksi yang berhubungan dengan umur tersebut, anggaplah seseorang tersebut dianggap telah dewasa. Sedangkan untuk kondisi lainnya, seseorang dianggap belum dewasa. Tentu perlakuannya akan dibedakan sesuai dengan sistem yang sedang dijalankan.. [2]

Organisasi Superscalar secara umum

Alasan desain Superscalar

Sebagian besar operasi menggunakan besaran/nilai skalar
Operasi ini memungkinkan peningkatan kinerja sistem hingga level tertentu [1]
Superscalar Implementation

Proses fetch dari beberapa instruksi secara bersamaan.
Logika untuk menentukan ketergantungan sebenarnya yang meliputi nilai register
Mekanisme untuk mengkomunikasikan nilai tersebut.
Mekanisme untuk menginisialisasi instruksi paralel.
Tersedianya sumber untuk eksekusi paralel dari beberapa instruksi.
Mekanisme processing instruksi dengan urutan yg sesuai. [1]

Arsitektur komputer
Mikroprosesor
Komputasi paralel