Instruction pipeline adalah teknik yang digunakan pada komputer
untuk meningkatkan throughput
eksekusi instruksi pada Central
Processing Unit (CPU). Pipeline
adalah sekumpulan tahapan proses yang terhubung secara berurutan.Output dari
sebuah tahap proses menjadi input untuk tahap berikutnya. Pipeline tidak mengurangi waktu eksekusi sebuah instruksi tetapi
meningkatkan jumlah instruksi yang dapat diproses secara bersamaan.
Dibawah ini akan dibahas tentang Instruction
Pipeline pada CPU. Hal-hal yang dicakup antara lain adalah konsep mengenai pipeline, permasalahan, dan hambatan
yang ada pada pipeline khususnya
mengenai dependensi data, penanganan percabangan instruksi, dan penjelasan
mengenai contoh implementasi pipeline
pada beberapa prosesor komputer.
KONSEP PIPELINE
Diasumsikan pada sebuah bisnis warung makan memiliki tiga tahapan
pekerjaan yaitu Menyiapkan bahan makanan, Memasak, dan Mengantar makanan ke
meja pelanggan yang masing-masing dikerjakan oleh satu orang. Setiap pesanan
pelangganyang diterima akan selalu mengalami tiga tahapan tersebut. Berikut
adalah ilustrasi urutan proses jika tidak menggunakan konsep pipeline.
Gambar 1. Proses Sumber Daya Tanpa Pipeline
Ilustrasi pada Gambar 1 menunjukkan penggunaan sumber daya yang efisien. Oleh
karena itu digunakanlah konsep pipeline.
Untuk meningkatkan efisiensi, pekerjaan Memasak kedua dapat dimulai padaTime 2 saat
proses Mengantar sedang berlangsung pada pesanan pertama. Pada Time 3, saat
proses Mengantarsedang berlangsung pada pesanan pertama dan proses Memasak
sedang berlangsung pada pesanan kedua, maka Menyiapkan dapat dilakukan untuk pesanan
ketiga. Dengan demikian, setiap sumber daya terpakai secara efisien seperti
yang diilustrasikan pada Gambar 2.
Gambar 2. Proses Sumber Daya Menggunakan Pipeline
Berdasarkan analogi yang telah dijelaskan sebelumnya, ide dasar pada pipeline adalah membagi sebuah pekerjaan
menjadi beberapa tahapan proses atau langkah-langkah yang lebih sederhana. Setiap
operasi dikerjakan oleh sebuah elemen pemrosesan.
Jumlah langkah yang terdapat pada sebuah pipeline bisa beragam, tergantung arsitektur komputer yang
digunakan. Berikut adalah contoh tahapanpipeline
untuk berbagai arsitektur komputer.
- · IBM Stretch memperkenalkan istilah tahapFetch, Decode, dan Execute.
- · Tahapan pipeline pada arsitektur RISC klasik:
o
Instruction fetch
o
Instruction decode dan
register fetch
o
Execute
o
Memory access
o
Register write back
- · Atmel AVR dan mikrokontroller PIC memiliki dua tahap pipeline yaitu Fetch dan Execute.
- · Intel Pentium 4 versi awal memiliki 20 tahap pipelinedan versi akhir seperti pada Pentium D memiliki 31 tahap pipeline.
- · Xelerated X10q Network Processor memiliki pipeline dengan ribuan tahap.
Semakin panjang sebuah pipeline,
maka tiap tahapannya akan semakin sederhana sehingga rangkaian elektriknya juga
sederhana. Hal ini memungkinkan clock
prosesor dapat berjalan lebih cepat. Sebuah prosesor disebut fully pipelined jika prosesor tersebut
dapat melakukan fetch instruksi pada
setiap siklus clock-nya. Jika
terdapat instruksi atau kondisi yang menyebabkan munculnya jeda untuk melakukan
fetch instruksi yang baru, prosesor
tersebut tidak termasuk fully pipelined.
INSTRUKSI PIPELINE
Diasumsikan tahapan pada pipeline pada prosesor adalah Fetch, Decode, dan Execute.
Dengan tahapan seperti ini, maka akan ada waktu-waktu saat memori utama sedang
tidak diakses atau prosesor dengan dalam kondisi idle. Ide pada pipeline
ini adalah melakukan Fetch untuk
instruksi kedua pada saat instruksi pertama sedang di-Decode. Kemudian, pada saat instruksi pertama di-Execute dan instruksi kedua di-Decode, instruksi ketiga dapat di-Fetch. Berikut adalah ilustrasi urutan
operasi tanpa menggunakan pipeline.
Gambar 3. Tahapan Pada CPU Tanpa Pipeline
Gambar 3menunjukkankemiripan dengan analogi pipeline pada laundry yang dijelaskan sebelumnya, yaitu adanya
unit-unit pemrosesan tidak dimanfaatkan dengan optimal. Dengan menggunakan pipeline, penggunaan unit-unit
pemrosesan akan lebih optimal seperti yang ditunjukkan pada Gambar 4.
Gambar 4. Tahapan Pada CPU Menggunakan Pipeline
Dalam selang waktu yang sama, pipeline
dapat menyelesaikan lebih banyak instruksi. CPU tanpa pipeline hanya dapat
menyelesaikan 3 instruksi dalam 9 satuan waktu. Pada CPU dengan pipeline debgab
selang waktu yang sama, 7 instruksi berhasil diselesaikan, 1 instruksi memasuki
tahap Decode, dan 1 instruksi
memasuki tahap Fetch.
Dari perbandingan eksekusi pada Gambar 3 dan Gambar 4 dapat diambil
beberapa hal penting sebagai berikut. Untuk eksekusi N tahapan pekerjaan tanpa pipeline:
- · Waktu produksi: N satuan waktu.
- · Sumber daya yang diperlukan: Sebuah unit pemrosesan yang bersifat general purpose.
- · Produktivitas: 1 produk per N satuan waktu.
Untuk eksekusi N tahapan pekerjaan dengan pipeline:
- · Waktu produksi: N satuan waktu.
- · Sumber daya yang diperlukan: Sejumlah N unit pemrosesan yang spesifik.
- · Produktivitas: Sekitar 1 produk per satuan waktu.
Percepatan yang dapat diberikan oleh pipeline
idealnya adalah mendekati jumlah tahapan pada pipeline. Namun hal ini sangat tergantung kepada jumlah dan
kompleksitas instruksi.
Walaupun pada ilustrasi terlihat sederhana, pada kenyataannya tidak
sesederhana itu dan menimbulkan beberapa persoalan. Contoh persoalan tersebut
antara lain adalah dependensi data dan percabangan instruksi.
No comments:
Post a Comment