- Multiple
Streams
Kedua instruksi percabangan diambil dengan dua buah streams.
Kelemahan :
Adanya persaingan dalam mengakses register dan memori untuk dimasukkan dalam pipeline.
Bila dalam percabangan tersebut terdapat percabangan lagi, tidak mampu ditangani oleh dua stream. Walaupun terdapat kelemahan tapi terbukti meningkatkan kinerja pipelining
Teknik ini diterapkan pada IBM 370/168 dan IBM 3033 - Prefetch branch target
Apabila percabangan bersyarat telah diketahui
Prosesnya: Dilakukan pengambilan awal (prefetch) terhadap instruksi setelah percabangan dan target percabangan. Diterapkan pada IBM 360/91
Masalah: Diperlukan buffer dan register untuk prefetch - Loop
Buffer
Apabila terdapat percabangan maka perangkat keras memeriksa apakah target percabangan telah ada dalam buffer, bila telah ada maka instruksi berikutnya diambil dari buffer.
Perbedaan dengan prefetch adalah pada loop buffer akan membuffer instruksi ke depan dalam jumlah yang banyak, sehingga bila target tidak berjauhan lokasinya maka secara otomatis telah terbuffer. Terkesan teknik ini seperti cache memori, namun terdapat perbedaan karena loop buffer masih mempertahankan urutan instruksi yang diambilnya. - Branch
Prediction
Penganalisaan sejarah instruksi, kenapa? Instruksi komputer seringkali terjadi berulang
Sehingga: Teknik prediksi ini juga diterapkan dalam pengambilan instruksi pada cache memory.
Diperlukan algoritma khusus untuk melakukan prediksi tersebut.
Patokan memprediksi target percabangan Penganalisaan eksekusi-eksekusi yang telah terjadi dan aspek lokalitas Aspek lokalitas memori adalah kecenderungan penyimpanan instruksi yang berhubungan dalam tempat yang berdekatan - Delayed
Branch
Eksekusi pada tahapan pipeline yang melibatkan percabangan akan dilakukan penundaan proses beberapa saat sampai didapatkan hasil percabangan.
Namun tahapan pipelining lainnya dapat berjalan seiring penundaan tersebut
Teknik penundaan ini disebut dengan menggunakan instruksi NOOP