PAPER PIPELINE INSTRUKSI ARSITEKTUR DAN ORGANISASI KOMPUTER
Dosen : Drs. Eko Polosoro, M.Eng, M.M
Kelompok: Muhammad Akbar (1111601058) Rano Kurniawan (1111601074) Taufik Tirkaamiasa (1111601082)
MAGISTER ILMU KOMPUTER UNIVERSITAS BUDI LUHUR JAKARTA 2012
PIPELINE I.
Penjelasan Umum Teknologi pipeline yang digunakan pada komputer bertujuan untuk meningkatkan kinerja dari komputer. Secara sederhana, pipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara bersamaan, tetapi dalam tahap yang berbeda serta dialirkan secara kontinu pada unit pemrosesan. Dengan cara ini, maka unit pemroses selalu bekerja. 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 dijalankan oleh microprocessor. 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 sedang diproses, maka instruksi yang berikutnya juga dapat diproses dalam satu 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. Dengan penerapan pipeline pada microprocessor akan didapatkan peningkatan dalam unjuk kerja microprocessor. Hal ini terjadi karena beberapa instruksi dapat dilakukan secara paralel 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.
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 memory. Karena beberapa instruksi diproses secara bersamaan ada kemungkinan 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 memory 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. Dengan menerapkan teknik pipeline ini, akan ditemukan sejumlah perhatian yang khusus terhadap beberapa hal di atas, tetapi tetap akan menghasilkan peningkatan yang berarti dalam kinerja microprocessor. Ada kasus tertentu yang memang sangat tepat bila memanfaatkan pipeline ini, dan juga ada kasus lain yang mungkin tidak tepat bila menggunakan teknologi pipeline.
Gambar 1.1 : Diagram Pewaktuan Pipeline
1.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 masuk ke 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 mobil adalah 75 menit. Pada titik ini, mobil selanjutnya akan datang dari jalur perakitan pada kenaikan 20 menit.
II.
Kelebihan dan Kekurangan Pipeline Pipeline tidak selalu berfungsi pada berbagai kasus, ada beberapa kelebihan dan kerugian dari pipeline. Berikut adalah kelebihan dan kekurangan pipeline:
2.1
Kelebihan ü Siklus waktu dalam processor berkurang, sehingga secara umum meningkatkan instruksi-isu dalam kebanyakan kasus. ü Kombinasi beberapa sirkuit seperti penambah atau pengganda dapat dibuah lebih cepat dengan menambahkan lebih banyak sirkuit. Jika pipeline digunakan sebagai pengganti, hal itu dapat menghemat sirkuit vs combinational yang lebih kompleks sirkuitnya.
Wait Instruction Instruction 2.2
Fetch
New Address Instruction Instruction
Wait Result Execute
Result Kekurangan Fetch Execute ü Mencegah penundaan cabang (berlaku, setiap cabang yang tertunda) dan masalah dengan serial instruksi yang dijalankan secara bersamaan, akibatnya desain yang Discard lebih sederhana dan murah untuk produksi (diproduksi). ü Instruksi yang tersembunyi pada processor non pipelining tersebut sedikit lebih rendah daripada pipelining yang setara. Hal ini disebabkan oleh kenyataan bahwa harus ditambahkannya jalur extra pada jalur data dari processor pipeline. ü Processor non pipelining akan ada instruksi bandwidth yang stabil. Kinerja processor pipeline sangat sulit untuk diprediksi dan dapat bervariasi secara lebih luas di antara berbagai program.
III.
Instruksi Pipeline
3.1
Tahapan Pipeline ü Mengambil instruksi dan membufferkannya. ü Ketika tahapan yang kedua bebas, tahapan pertama mengirimkan instruksi yang di bufferkan tersebut. ü Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkan siklus memory yang tidak dipakai untuk mengambil dan membufferkan instruksi berikutnya.
Gambar 3.1.1 : Pandangan Sederhana
Gambar 3.1.2 : Pandangan Rinci
Karena untuk setiap tahap pengerjaan instruksi, komponen yang bekerja berbeda, maka dimungkinkan untuk mengisi kekosongan pada komponen tersebut. Sebagai contoh: Instruksi 1 : ADD AX, AX Instruksi 2 : ADD EX, CX Setelah CU menjemput Instruksi 1 dari memory (IF), CU akan menerjemahkan instruksi tersebut (ID). Pada saat menterjemahkan Instruksi 1 tersebut, komponen IF tidak bekerja. Adanya teknologi pipeline menyebabkan IF akan menjemput Instruksi 2 pada saat ID menterjemahkan 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
IF
DE
IF
DE
EX
6
7
8
9
10
IF
DE
IF
DE
EX
ADD AX, AX ADD EX, CX Pada ilustrasi di atas, dijelaskan bahwa instruksi baru akan dijemput jika instruksi sebelumnya telah selesai dilaksanakan. Contoh pengerjaan instruksi dengan pipeline: T=
1
2
3
4
5
ADD AX, AX
IF
DE
IF
DE
EX
IF
DE
IF
DE
EX
IF
DE
IF
DE
ADD EX, CX ADD DX, DX
6
7
EX
Pada ilustrasi di atas, dijelaskan bahwa instruksi baru akan dijemput/dipanggil setelah tahap IF menganggur (t2).
Dengan adanya pipeline, dua instruksi selesai dilaksanakan pada detik keenam, sedangkan kasus tanpa pipeline baru selesai pada detik kesepuluh. Dengan demikian telah terjadi percepatan sebanyak 1,67 x 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 untuk 100 instruksi akan dapat dikerjakan dalam 104T(CPI = 1,04). Pada kondisi ideal CPI akan berharga/bernilai 1. Dalam teknik pipeline, problem dibagi menjadi deretan yang harus dilaksanakan satu persatu setelah lainnya. Setiap tugas nantinya akan dieksekusi oleh proses atau processor yang berbeda.
Gambar 3.1.3 : Proses Pipeline
Gambar 3.1.4 : Pipeline untuk Penjumlahan Filter frekuensi menghilangkan frekuensi tertentu (katakan ƒ0, ƒ1, ƒ2, ƒ3, dan seterusnya) signal, ƒ(t)/Signal dapat dilewati pipeline dari kiri.
Gambar 3.1.5 : Pipeline untuk Filter Frekuensi
Pipeline dapat meningkatkan kecepatan untuk problem yang sekuensial, dalam tiga tipe komputasi: 1. Jika lebih dari satu instance dari problem yang akan dieksekusi. 2. Jika ada deretan item data yang harus di proses, masing-masing membutuhkan operasi ganda. 3. Jika informasi untuk memulai proses berikutnya dapat diberikan sebelum proses selesai melaksanakan operasi internalnya. 3.2
Diagram Ruang Waktu Pipeline “Tipe 1”
Gambar 3.2.1 : Diagram Ruang Waktu Pipeline
Gambar 3.2.2 : Diagram Ruang Waktu Alternatif
3.3
Diagram Ruang Waktu Pipeline “Tipe 2”
Gambar 3.3.1 : Pemrosesan Pipeline 10 Elemen Data 3.4
Diagram Ruang Waktu Pipeline “Tipe 3”
Gambar 3.4.1 : Pemrosesan Pipeline, Informasi di pass sebelum proses selesai Jika jumlah tahap lebih besar dari jumlah processor dalam pipeline, kelompok tahap dapat di assign untuk tiap processor.
Gambar 3.4.2 : Partitioning Processes onto processors 3.5
Platform Komputasi untuk Aplikasi Pipeline
Gambar 3.5.1 : Penjumlahan Pipeline Kode dasar untuk proses Pi: recv (& accumulation, Pi - 1); accumulation = accumulation + number; send (& accumulation, Pi + 1); Kecuali untuk proses pertama P0, yaitu: send (& number, P1); dan proses terakhir Pn-1, yaitu: recv (& number, Pn – 2); accumulation = accumulation + number; 3.6
Single Program Multiple Data (SPMD) Memungkinkan interleaving pemrograman secara parallel dan serial. SPMD memungkinkan user untuk mendefinisikan sebuah blok kode secara bersamaan pada beberapa proses. Variabel ditempatkan pada pemroses agar dimungkinkan untuk akses langsung ke nilai-nilai dari klien dengan referensi melalui objek komposit. If(process > 0){ recv (& accumulation, Pi – 1); accumulation = accumulation + number;
}If(process < n – 1) send (& accumulation, Pi + 1); Hasil akhir ada di proses terakhir. Selain penjumlahan, operasi aritmatika lainnya dapat dilakukan juga.
Gambar 3.6.1 : Penjumlahan Angka Pipeline dengan Proses Master dan Konfigurasi Cincin
Gambar 3.6.2 : Penjumlahan Angka Pipeline dengan akses langsung ke Proses Slave IV.
Permasalahan di (dalam) Instruksi Pipelining •
Variasi Waktu: Tidak semua tahap memakan waktu yang sama. Ini berarti untuk mendapatkan kecepatan dalam instruksi pipelining sangat ditentukan oleh tahap yang paling lambat. Masalah ini sangat akut dalam memproses instruksi, sejak instruksi yang berbeda memiliki persyaratan operand waktu proses yang berbeda. Selain itu, diperlukan mekanisme sinkronisasi untuk memastikan bahwa data lewat dari stage ke stage hanya ketika kedua stage siap.
•
Data Berbahaya (Data Hazards): Ketika beberapa instruksi di eksekusi secara parsial, masalah timbul jika mereka referensi data yang sama. Kita harus memastikan bahwa instruksi selanjutnya tidak berusaha untuk mengakses data lebih cepat dari instruksi sebelumnya, jika ini terjadi akan menyebabkan hasil yang salah. Sebagai contoh, instruksi N + 1 tidak
harus diperbolehkan untuk mengambil sebuah operand yang belum disimpan oleh instruksi N.
•
Percabangan (Branch): Untuk mengambil instruksi berikutnya, kita harus tahu mana saja yang dibutuhkan, jika instruksi ini adalah cabang bersyarat (conditional branch) instruksi berikutnya mungkin tidak diketahui sampai saat diproses.
•
Jeda/Interupsi (Interruptions) Interupsi membuat interupsi extra yang tidak terencana untuk masuk ke dalam aliran instruksi. Jeda (Interrupt) harus berperan antar instruksi, yaitu ketika satu instruksi telah selesai dan instruksi berikutnya belum dimulai. Dengan pipelining, instruksi berikutnya biasanya dimulai sebelum instruksi yang terlebih dahulu selesai. Semua masalah ini harus diselesaikan dalam konteks kebutuhan kita untuk mendapatkan kinerja dengan kecepatan tinggi. Jika kita tidak dapat mencapai kecepatan yang cukup, pipelining mungkin tidak sepadan.
Daftar Pustaka
•
http://id.wikipedia.org/wiki/Multipengolahan 19-05-2012.
•
http://en.wikipedia.org/wiki/Multiprocessing 19-05-2012.
•
http://syahrie.files.wordpress.com/2009/01/multiprocessor.pdf 19-05-2012.
•
http://amutiara.staff.gunadarma.ac.id/Downloads/files/262/ArKompPar1.pdf 19-05-2012.