Teknik pipeline ini dapat diterapkan pada berbagai tingkatan dalam
sistem komputer. Bisa pada level yang tinggi, misalnya program aplikasi,
sampai pada tingkat yang rendah, seperti pada instruksi yang dijaankan
oleh microprocessor.
Pada microprocessor yang tidak menggunakan
pipeline , satu instruksi dilakukan sampai selesai, baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam microprocessor
yang menggunakan teknik pipeline, ketika satu instruksi sedangkan
diproses, maka instruksi yang berikutnya juga dapat diproses dalam waktu
yang bersamaan. Tetapi, instruksi yang diproses secara bersamaan ini,
ada dalam tahap proses yang berbeda. Jadi, ada sejumlah tahapan yang
akan dilewati oleh sebuah instruksi.
Dengan penerapan
pipeline ini pada microprocessor akan didapatkan peningkatan kinerja microprocessor.
Hal ini terjadi karena beberapa instruksi dapat dilakukan secara
parallel dalam waktu yang bersamaan. Secara kasarnya diharapkan akan
didapatkan peningkatan sebesar K kali dibandingkan dengan microprocessor yang tidak menggunakan
pipeline , apabila tahapan yang ada dalam satu kali pemrosesan instruksi adalah K tahap.
Karena beberapa instruksi diproses secara bersamaan ada
kemungkinan instruksi tersebut sama-sama memerlukan resource yang sama,
sehingga diperlukan adanya pengaturan yang tepat agar proses tetap
berjalan dengan benar dan lancar. Sedangkan ketergantungan terhadap data
bisa muncul, misalnya instruksi yang berurutan memerlukan data dari
instruksi yang sebelumnya. Kasus Jump, juga perlu perhatian, karena
ketika sebuah instruksi meminta untuk melompat ke suatu lokasi memori
tertentu, akan terjadi perubahan program counter, sedangkan instruksi
yang sedang berada dalam salah satu tahap proses yang berikutnya mungkin
tidak mengharapkan terjadinya perubahan program counter.
Teknik pipeline yang diterapkan pada microprocessor, dapat dikatakan sebuah arsitektur khusus. Ada perbedaan khusus antara model microprocessor yang tidak menggunakan arsitektur
pipeline dengan microprocessor yang menerapkan teknik ini.
Pada microprocessor yang tidak menggunakan
pipeline , satu instruksi dilakukan sampai selesai, baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam microprocessor yang menggunakan teknik
pipeline
ketika satu instruksi sedangkan diproses, maka instruksi yang
berikutnya juga dapat diproses dalam waktu yang bersamaan. Tetapi,
instruksi yang diproses secara bersamaan ini, ada dalam tahap proses
yang berbeda.
Jadi, ada sejumlah tahapan yang akan dilewati oleh sebuah instruksi. Misalnya sebuah microprocessor menyelesaikan
sebuah instruksi dalam 4 langkah. Ketika instruksi pertama masuk ke
langkah 2, maka instruksi berikutnya diambil untuk diproses pada langkah
1 instruksi tersebut. Begitu pun seterusnya, ketika instruksi pertama
masuk ke langkah 3, instruksi kedua masuk ke langkah 2 dan instruksi
ketiga masuk ke langkah 1.
Teknik
pipeline ini menyebabkan ada sejumlah hal yang harus diperhatikan sehingga ketika diterapkan dapat berjalan dengan baik.
Tiga kesulitan yang sering dihadapi ketika menggunakan teknik
pipeline ini adalah :
- Terjadinya penggunaan resource yang bersamaan
- Ketergantungan terhadap data, dan
- Pengaturan Jump ke suatu lokasi memori.
Instruksi pada pipeline
Tahapan pipeline
- Mengambil instruksi dan membuffferkannya
- Ketika tahapan kedua bebas tahapan pertama mengirimkan instruksi yang dibufferkan tersebut
- Pada saat tahapan kedua sedang mengeksekusi instruksi ,tahapan pertama memanfaatkan siklus memori yang tidak dipakai untuk mengambil dan membuffferkan instruksi berikutnya
.Berikut ini adalah gambaran tentang Instuksi pipeline :
Karena untuk setiap tahap pengerjaan instruksi, komponen yang bekerja
berbeda, maka dimungkinkan untuk mengisi kekosongan kerja di komponen
tersebut. Sebagai contoh :
Instruksi 1 : ADD AX, AX Instruksi 2: ADD EX, CX
Setelah CU menjemput instruksi 1 dari memori (IF), CU akan menerjemahkan
instruksi tersebut(ID). Pada menerjemahkan instruksi 1 tersebut,
komponen IF tidak bekerja. Adanya teknologi pipeline menyebabkan IF akan
menjemput instruksi 2 pada saat ID menerjemahkan instruksi 1. Demikian
seterusnya pada saat CU menjalankan instruksi 1 (EX), instruksi 2
diterjemahkan (ID).
Contoh pengerjaan instruksi tanpa pipeline :
Contoh pengerjaan instruksi dengan pipeline :
Dengan adanya
pipeline dua
instruksi selesai dilaksanakan padadetik keenam (sedangkan pada kasus
tanpa pipeline baru selesai pada detik kesepuluh). Dengan demikian telah
terjadi percepatan sebanyak 1,67x dari 10T menjadi hanya 6T. Sedangkan
untuk pengerjaan 3 buah instruksi terjadi percepatan sebanyak 2, 14x
dari 15T menjadi hanya 7T.
Untuk kasus
pipeline sendiri,
2 instruksi dapat dikerjakan dalam 6T (CPI = 3) dan instruksi dapat
dikerjakan dalam 7T (CPT = 2,3) dan untuk 4 instruksi dapat dikerjakan
dalam 8T (CPI =2). Ini berarti untuk 100 instruksi akan dapat
dikerjakan dalam 104T (CPI = 1,04). Pada kondisi ideal CPI akan harga 1.
Konsep Pipeline
Konsep pemrosesan
pipeline dalam
suatu komputer mirip dengan suatu baris perakitan dalam suatu pabrik
industri. Ambil contoh, suatu proses pembuatan sebuah mobil: anggaplah
bahwa langkah-langkah tertentu di jalur perakitan adalah untuk memasang
mesin, memasang kap mesin, dan memasang roda (dalam urutan tersebut,
dengan langkah arbitrary interstitial). Sebuah mobil di jalur perakitan
hanya dapat memiliki salah satu dari tiga tahap yang dilakukan
sekaligus.
Setelah mobil memiliki mesin yang terpasang, bergerak ke bagian
pemasangan kap, meninggalkan fasilitas pemasangan mesin yang tersedia
untuk mobil berikutnya. Mobil pertama kemudian pindah ke pemasangan
roda, mobil kedua untuk pemasangan kap, dan mobil ketiga dimulai untuk
pemasangan mesin. Jika instalasi mesin membutuhkan waktu 20 menit,
instalasi kap mobil memakan waktu 5 menit, dan instalasi roda
membutuhkan waktu 10 menit, kemudian menyelesaikan semua tiga mobil
ketika hanya satu mobil dapat dioperasikan sekaligus akan memakan waktu
105 menit.
Di sisi lain, dengan menggunakan jalur perakitan, total waktu
untuk menyelesaikan ketiga adalah 75 menit. Pada titik ini, mobil
selanjutnya akan datang dari jalur perakitan pada kenaikan 20 menit.
Masalah-masalah pada Pipeline
Dengan adanya persyaratan bahwa setiap instuksi yang berdekatan
harus tidak saling bergantung, maka ada kemungkinan terjadinya situasi
dimana pipeline gagal dilaksanakan (instruksi berikutnya tidak bisa
dilaksanakan). Situasi ini disebut Hazards. Hazards mengurangi performansi dari CPU dimana percepatan ideal tidak dapat dicapai.
Ada 3 kelompok Hazards :
- Structural Hazards muncul dari konflik resource sistem yaitu ketika hardware tidak dapat mensuport semua kemungkinan kombinasi pelaksanaan instruksi.
- Data Hazards muncul ketika data untuk suatu instruksi tergantung pada hasil instruksi sebelumnya.
- Control Hazards muncul pada pelaksanaan instruksi yang mengubah PC (contoh : branch).
Adanya Hazards menyebabkan pipeline terhambat (stalled).
Tidak ada instruksi baru yang dijemput sampai hambatan itu selesai. Ini
berarti instruksi-instruksi selanjutnya akan ditunda pula
penjemputannya.
Keuntungan dari Pipeline
- Waktu siklus prosesor berkurang, sehingga meningkatkan tingkat instruksi-isu dalam kebanyakan kasus.
- Beberapa combinational sirkuit seperti penambah atau pengganda dapat dibuat lebih cepat dengan menambahkan lebih banyak sirkuit.
Jika
pipeline digunakan sebagai pengganti, hal itu dapat menghemat sirkuit vs combinational yang lebih kompleks sirkuit.
Kerugian dari Pipeline
- Prossesor non-pipeline hanya menjalankan satu instruksi pada satu waktu. Hal ini untuk mencegah penundaan cabang (yang berlaku, setiap cabang tertunda) dan masalah dengan serial instruksi dieksekusi secara bersamaan. Akibatnya desain lebih sederhana dan lebih murah untuk diproduksi.
- Instruksi latency di prossesor non-pipeline sedikit lebih rendah daripada dalam pipeline setara. Hal ini disebabkan oleh fakta bahwa sandal jepit ekstra harus ditambahkan ke jalur data dari prossesor pipeline.
- Prossesor non-pipeline akan memiliki instruksi bandwidth yang stabil. Kinerja prossesor yang pipeline jauh lebih sulit untuk meramalkan dan dapat bervariasi lebih luas di antara program yang berbeda.
Tidak ada komentar:
Posting Komentar