Saturday, 13 December 2014

Instruction Pipeline

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