Senin, 11 Juni 2012

Pipelining


Pipelining
Tujuan pipelining adalah untuk meningkatkan kinerja komputer dengan cara melakukan aktifitas pengerjaan instruksi secara paralel antara instruksi satu dengan instruksi lainnya.
Dasarnya adalah adanya tahapan pada siklus instruksi yaitu siklus fetch dan siklus execute.
Secara umum, satu instruksi dapat didekomposisi menjadi:
1. Mengambil instruksi (fetch instruction - FI)
2. Pemecahan kode instruksi (fetch instruction - DI)
3. Kalkulasi operand (calculate operand - CO)
4. Pengambilan operand (feth operand - FO)
5. Eksekusi instruksi (execute instruction - EI)
6. Tulis operand (write operand - WO)

Contoh pipeline instruksi untuk 9 instruksi

Waktu "

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Instruksi 1
FI
1
DI
1
CO
1
FO
1
EI
1
WO
1








Instruksi 2

FI
1
DI
1
CO
1
FO
1
EI
1
WO
1







Instruksi 3


FI
1
DI
1
CO
1
FO
1
EI
1
WO
1






Instruksi 4



FI
1
DI
1
CO
1
FO
1
EI
1
WO
1





Instruksi 5




FI
1
DI
1
CO
1
FO
1
EI
1
WO
1




Instruksi 6





FI
1
DI
1
CO
1
FO
1
EI
1
WO
1



Instruksi 7






FI
1
DI
1
CO
1
FO
1
EI
1
WO
1


Instruksi 8







FI
1
DI
1
CO
1
FO
1
EI
1
WO
1

Instruksi 9








FI
1
DI
1
CO
1
FO
1
EI
1
WO
1
A ! 5
B ! 7
C ! 8
D ! A+B
E ! C-B
F ! D+E
... dst.


Jumlah total waktu eksekusi dengan pipelining adalah:
Tk = ( k + (n-1) )
Tk = Total waktu eksekusi
k = jumlah langkah dalam pipeline instruksi
n = jumlah instruksi

Contoh:
Berapa total waktu eksekusi secara pipeline untuk 9 instruksi, di mana setiap instruksi didekomposisi menjadi 6 langkah.
Tk     =    ( k + n (n-1) )
         =    ( 6 + (9-1) )
         =    6 + 8
         =    14
Contoh pipelining untuk pencabangan bersyarat (dengan asumsi ada 15 instruksi, di mana terdapat instruksi pencabangan bersyarat di instruki ke-3 untuk mencabang ke instruksi 16).

Waktu "

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Instruksi 1
FI
1
DI
1
CO
1
FO
1
EI
1
WO
1








Instruksi 2

FI
1
DI
1
CO
1
FO
1
EI
1
WO
1







Instruksi 3


FI
1
DI
1
CO
1
FO
1
EI
1
WO
1






Instruksi 4



FI
1
DI
1
CO
1
FO
1







Instruksi 5




FI
1
DI
1
CO
1







Instruksi 6





FI
1
DI
1







Instruksi 7






FI
1























Instruksi 15







FI
1
DI
1
CO
1
FO
1
EI
1
WO
1

Instruksi 16








FI
1
DI
1
CO
1
FO
1
EI
1
WO
1
A ! 5
B ! 6
if A x B > 7 then
.. .. ..
endif

Berhadapan dengan Percabangan
Salah satu masalah utama dalam perancangan pipeline instruksi adalah meyakinkan aliran stasioner instruksi ke langkah awal pipeline.
Hambatan utama, seperti yang telah kita lihat adalah pencabangan bersyarat sampai instruksi benar-benar dieksekusi, mustahil kita menentukan apakah pencabangan itu diambil atau tidak.
Pendekatan yang diambil untuk berhadapan dengan pencabangan bersyarat:
- Multiple stream (berbagai macam arus)
- Prefetch branch target (target pencabangan prefetch)
- Loop buffer (buffer pengulangan)
- Branch prediction (prediksi pencabangan)
- Delayed branch (pencabangan tertunda)

Multiple Stream
Sebuah pipeline sederhana mengalami sanksi untuk instruksi pencabangan karena pipeline harus memilih salah satu instruksi untuk pengambilan instruksi berikutnya dan dapat membuat pilihan yang salah.
Sebuah pendekatan kekuatan fisik untuk mereplikasi pembagian awal pipeline untuk pengambilan kedua instruksi dengan menggunakan 2 arus. Namun cara ini terdapat 2 permasalahan:
-     Dengan berbagai pipeline terdapat penundaan argumen untuk akses ke register dan ke memory
-     Instruksi pencabangan tambahan dapat masuk ke pipeline (salah satu arus) sebelum keputusan pencabangan asli dipecahkan.

0 komentar:

Posting Komentar

 
Design by Wordpress Theme | Bloggerized by Free Blogger Templates | JCPenney Coupons