Image

Siklus Instruksi dan Pipelining Instruksi

9 Nov
  1. SIKLUS INSTRUKSI DALAM SEBUAH KOMPUTER

Fungsi dasar yang dibentuk komputer adalah eksekusi program. Program yang akan dieksekusi berisi sejumlah instruksi yang tersimpan di dalam memori. CPU melakukan tugas ini dengan cara mengeksekusi suatu program. Pandangan paling sederhana tentang hal ini adalah dengan mengambil pengolahan instruksi yang terdiri dari dua langkah: instruksi (fetch) CPU dari memori pada suatu saat, kemudian CPU mengeksekusi setiap instruksi. Eksekusi program terdiri dari proses pengulangan fetch dan eksekusi instruksi. Tentu saja, eksekusi sebuah instruksi sendiri dapat terdiri sejumlah langkah. Pada tahap ini, kita dapat membagi pengolahan instruksi menjadi dua tahap, fetch dan eksekusi seperti berikut: fetch instruksi adalah operasi umum bagi setiap instruksi, dan terdiri dari pembacaan instruksi dari suatu lokasi di dalam memori. Eksekusi instruksi dapat melibatkan sejumlah operasi dan tergantung pada sifat-sifat instruksi. Pengolahan yang diperlukan untuk instruksi tunggal disebut siklus instruksi. Kedua langkah itu berkaitan dengan siklus fetch dan siklus eksekusi. Eksekusi program akan terhenti apabila mesin dimatikan, terjadi kesalahan, atau terdapat instruksi program yang menghentikan komputer.

Pada awal siklus instruksi, CPU membaca instruksi dari memori. Pada CPU yang umum, suatu register yang disebut program counter (PC) dipakai untuk mengawasi instruksi yang akan dibaca selanjutnya. Dengan tidak ada perkecualian tertentu, CPU selalu menambahkan PC setiap kali membaca instruksi, sehingga CPU akan membaca instruksi selanjutnya secara berurutan yaitu instruksi yang terletak pada alamat yang lebih tinggi berikutnya di dalam memori. Instruksi yang dibaca akan dimuatkan ke dalam sebuah register di dalam CPU yang dikenal sebagai instruction register (IR). Instruksi berbentuk kode biner yang menentukan apa yang perlu dilakukan oleh CPU. CPU menginterprestasikan instruksi dan melakukan aksi yang diperlukan.

  1. 2.      Pipelining Intruksi

Pengertian pipeline

Pipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara bersama tetapi dalam tahap yang berbeda yang dialirkan secara kontinou pada unit pemrosesor. Dengan ccara ini, maka unit pemrosesan selalu bekerja.

Teknik pipeline ini dapat diterapkan pada berbagai tingkatan dalam sistemkomputer. 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 dalam unjuk kerja 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. 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 microprocessoryang 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 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, Pengaturan Jump ke suatu lokasi memori.
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. Sedangkan ketergantungan terhadap data, bisa muncul, misalnya instruksi yang berurutan memerlukan data dari instruksi yang sebelumnya.

Intruksi pipeline      

Tahapan pipeline

ž  Mengambil instruksi dan membuffferkannya

ž  Ketika tahapn 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 .

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

t = 1 2 3 4 5 6 7 8 9 10
ADD AX,AX IF DE IF DE EX          
ADD BX,CX           IF DE IF DE EX

Disini instruksi baru akan dijemput jika instruksi sebelumnya telah selesai dilaksanakan.

 

Contoh pengerjaan instruksi dengan pipeline

t = 1 2 3 4 5 6 7 8 9 10
ADD AX,AX IF DE IF DE EX          
ADD BX,CX   IF DE IF DE EX        
ADD DX,DX     IF DE IF DE EX      

Disini instruksi baru akan dijemput setelah tahap IF menganggur (t2).

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, 14 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 utnuk 100 instruksi akan dapat dikerjakan dalam 104T (CPI = 1,04). Pada kondisi  ideal CPI akan harga 1.

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 (instuksi berikutnya tidak bisa dilaksanakan). Situasi ini disebut Hazards. Hazards mengurangi performansi dari CPU dimana percepatan ideal tidak dapat dicapai.

Ada 3 kelompok Hazards :

1.   Structural Hazards muncul dari konflik resource sistem yaitu ketika hardware tidak dapat mensuport semua kemungkinan kombinasi pelaksanaan instruksi.

2.   Data Hazards muncul ketika data untuk suatu instruksi tergantung pada hasil instruksi sebelumnya.

3.   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 dan Kerugian

Pipelining tidak membantu dalam semua kasus. Ada beberapa kemungkinan kerugian. Pipa instruksi dikatakan sepenuhnya pipelined jika dapat menerima instruksi baru setiap clock cycle. Sebuah pipa yang tidak sepenuhnya pipelined telah menunggu siklus yang menunda kemajuan pipa.

Keuntungan dari Pipelining:

1. Waktu siklus prosesor berkurang, sehingga meningkatkan tingkat instruksi-isu   dalam kebanyakan kasus.
2. Beberapa combinational sirkuit seperti penambah atau pengganda dapat dibuat lebih cepat dengan menambahkan lebih banyak sirkuit.

Jika pipelining digunakan sebagai pengganti, hal itu dapat menghemat sirkuit vs combinational yang lebih kompleks sirkuit.

Kekurangan Pipelining:

1. Non-pipelined prosesor 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.
2. Instruksi latency di non-pipelined prosesor sedikit lebih rendah daripada dalam pipelined setara. Hal ini disebabkan oleh fakta bahwa sandal jepit ekstra harus ditambahkan ke jalur data dari prosesor pipelined.
3. Non-pipelined prosesor akan memiliki instruksi yang stabil bandwidth. Kinerja prosesor yang pipelined jauh lebih sulit untuk meramalkan dan dapat bervariasi lebih luas di antara program yang berbeda.

Leave a comment