Stallings W., Organisasi dan Arsitektur Komputer, Prentice Hall, 1996 Prosesor Superskalar Stallings W., Organisasi dan Arsitektur Komputer, Prentice Hall, 1996
Topik Pekan Ini Superskalar vs superpipelined Keterbatasan superskalar Paralelisme tingkat instruksi dan paralelisme mesin Kebijakan instruction issue Power PC Pentium
Prosesor Superskalar Teknik superskalar bertujuan meningkatkan kinerja eksekusi instruksi-instruksi skalar. Teknik ini sangat tepat diterapkan pada arsitektur komputer yang memiliki panjang instruksi tetap. Prosesor superskalar adalah sebuah rancangan prosesor yang memiliki pipeline instruksi berjumlah banyak, sehingga lebih dari satu instruksi yang dapat dieksekusi pada sebuah tahapan pipeline secara simultan.
Prosesor Superpipelined Prosesor superpipelined adalah rancangan prosesor yang pipeline instruksinya terdiri atas banyak tahapan yang sangat kecil, sehingga lebih dari satu tahapan pipeline yang dapat dieksekusi pada satu siklus waktu dan akibatnya instruksi dalam jumlah besar dapat dieksekusi pada satu tahapan pipeline yang sama pada saat yang bersamaan. Prosesor superpipelined jauh tertinggal oleh prosesor superskalar pada saat awal program dan pada target pencabangan
Keterbatasan Superskalar Pendekatan superskalar tergantung pada kemampuan mengeksekusi sejumlah instruksi secara paralel. Ada beberapa keterbatasan yang terdapat pada paralelisme yang perlu diatasi oleh sistem True data dependency Procedural dependency Resource conflict
True Data Dependency Ketergantungan data sebenarnya terjadi bila sebuah instruksi membutuhkan data yang dihasilkan oleh instruksi sebelumnya. Instruksi tsb tidak dapat dieksekusi apabila instruksi sebelumnya belum selesai dieksekusi. Apabila terdapat ketergantungan data antara instruksi yang pertama dengan instruksi yang kedua, maka instruksi kedua diberi delay selama beberapa siklus waktu yang diperlukan untuk menghilangkan ketergantungan.
Procedural Dependency Instruksi-instruksi yang berada setelah sebuah pencabangan mempunyai ketergantungan prosedural pada pencabangan dan tidak akan dapat dieksekusi sampai pencabangan tersebut selesai dieksekusi. Konsekuensi pada pipeline superskalar akan lebih parah karena kehilangan kesempatan dalam jumlah yang lebih besar pada setiap delaynya.
Resource Conflict Resource conflict merupakan persaingan antara dua buah instruksi atau lebih untuk memperoleh sumber daya yang sama pada saat bersamaan. Contoh sumber daya adalah memori, cache, bus, register-file port dan unit-unit fungsional lainnya. Resource conflict dapat diatasi dengan cara menduplikasi sumber daya. Apabila suatu operasi memakan waktu lama, maka source conflict dapat dikurangi dengan melakukan pipeline terhadap unit- unit fungsional tertentu.
Paralelisme Tingkat Instruksi Paralelisme tingkat instruksi terjadi apabila instruksi-instruksi yang terdapat pada rangkaian bersifat independen dan karena itu dapat dieksekusi secara paralel dengan cara saling bertumpang tindih. Paralelisme tingkat instruksi ditentukan oleh frekuensi true data dependency dan procedural dependency yang terdapat di dalam kode. Penggunaan set instruksi yang memiliki panjang tetap akan meningkatkan paralelisme tingkat instruksi.
Paralelisme Mesin Paralelisme mesin adalah ukuran kemampuan prosesor dalam memanfaatkan paralelisme tingkat instruksi. Paralelisme mesin ditentukan oleh jumlah pipeline yang paralel (jumlah instruksi yang dapat diambil dan dieksekusi dalam waktu yang bersamaan) dan oleh kecepatan serta kecanggihan mekanisme yang digunakan prosesor untuk menemukan instruksi-instruksi independen.
Kebijakan Instruction Issue Kebijakan instruction issue adalah kebijakan penginisiasian eksekusi instruksi di dalam unit-unit fungsional prosesor. Kebijakan instruction issue superskalar dapat digolongkan dalam 3 kategori: In-order issue dengan in-order completion In-order issue dengan out-of-order completion Out-of-order issue dengan out-of-order completion
In-Order Issue dengan In-Order Completion Kebijakan instruction issue yang paling sederhana adalah dengan menerbitkan instruksi dalam urutan pasti yang akan didapatkan oleh eksekusi sekuensial (in-order-issue) dan menuliskan hasilnya dengan urutan yang sama (in-order-completion). Gambar 13.3a merupakan sebuah contoh tentang kebijakan ini.
In-Order Issue dengan In-Order Completion
In-Order Issue dengan Out-of-Order Completion Dengan out-of-order completion, sembarang jumlah instruksi hingga derajat paralelisme mesin maksimum di seluruh unit-unit fungsionalnya dapat berada pada satu tahapan eksekusi pada saat yang bersamaan. Out-of-order completion memerlukan logika instruction issue yang lebih kompleks dibandingkan dengan in-order-completion. Gambar 13.3b menjelaskan penggunaannya pada prosesor superskalar.
In-Order Issue dengan Out-of-Order Completion
Out-of-Order Issue dengan Out-of-Order Completion Untuk memungkinkan out-of-order issue, maka perlu dilakukan decouple tahapan-tahapan dekode dan eksekusi pipeline. Hal ini dilakukan dengan cara menggunakan buffer yang dianggap sebagai jendela instruksi. Setelah prosesor menyelesaikan pendekodean instruksi, maka instruksi tersebut ditempatkan di dalam jendela instruksi. Selama buffer belum penuh, prosesor dapat mengambil instruksi dan mendekode instruksi lainnya. Apabila pada tahapan eksekusi tersedia unit fungsional, maka instruksi yang berasal dari jendela instruksi dapat dikirimkan ke tahap eksekusi.
Out-of-Order Issue dengan Out-of-Order Completion
Power PC Arsitektur PowerPC merupakan pengembangan IBM 801, RT PC dan RS/6000, dengan RS/6000 dikenal juga sebagai implementasi arsitektur POWER. Arsitektur ketiga komputer tersebut adalah mesin RISC. Implementasi pertama arsitektur PowerPC, yaitu 601, memiliki rancangan superskalar yang sangat mirip dengan rancangan RS/6000.
Diagram Blok PowerPC 601
Pipeline PowerPC 601
Pentium Prinsip superskalar dapat diterapkan bagi mesin-mesin CISC, misalnya Pentium. Seperti pada 80486, Pentium menggunakan pipeline integer lima tahapan: Prefetch Dekode Tahap 1 Dekode Tahap 2 Eksekusi Write-Back Dari sudut pandang pipelining instruksi, perbedaan yang paling mencolok antara Pentium dan 80486 adalah Pentium memiliki dua unit eksekusi yang terpisah, ditandai dengan U dan V, seperti pada Gambar 13.11.
Pipeline Pentium dan 80486
Instruction Pairing
Prediksi Pencabangan