3. PIPELINING INSTRUKSI
•
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.
•
Mesin yang melaksanakan beberapa komputasi yang berbeda
secara bersama-sama, namun pada saat itu setiap komputasi
akan berada dalam tahapan eksekusi yang berbeda
•
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.
4. •
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.
•
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.
5. Tiga kesulitan yang sering dihadapi ketika menggunakan teknik
pipeline ini adalah :
•
Terjadinya penggunaan resource yang bersamaan, Ketika
beberapa instruksi diproses secara bersamaan, ini
memungkinkan ada penggunaan resource memori pada tempat
yang sama.
•
Ketergantungan terhadap data, Misalnya instruksi yang
berurutan yang membutuhkan data dari instruksi sebelumnya.
•
Pengaturan Jump ke suatu lokasi memori, 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.
6. TAHAPAN-TAHAPAN PIPELINING
Mengambil instruksi dan membufferkannya
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 membufferkan
instruksi berikutnya .
7. MASALAH PADA PIPELINING
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).
8. 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 Pipelining:
1.
2.
3.
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 pipelining digunakan sebagai pengganti, hal itu
dapat menghemat sirkuit vs combinational yang lebih
kompleks sirkuit.
9. 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.
10. Tujuan pipelining :
- adalah untuk memaksimalkan kecepatan
mengalirnya instruksi.
- Diciptakan juga dengan tujuan mempercepat
kinerja komputer.
Kategori pipelining:
1. Pipeline Unit Arithmetic
Berguna untuk operasi vektor
2. Pipeline Unit Instruction
Berguna untuk komputer yang mempunyai set
instruksi yang sederhana
11. Bedanya prosesor yang tidak menggunakan
tekonologi pipeline adalah dalam segi pengerjaan
tugas atau operasi.
Prosesor yang tidak menggunakan teknologi
pipeline harus menyelesaikan suatu proses sampai
dengan selesai dulu, baru bisa melanjutkan kie
proses selanjutnya.
Sedangkan prosesor yang menggunakan
teknologi pipeline dapat melakukan beberapa
proses secara bersamaan tanpa harus menunggu
proses sebelumnya diselesaikan.
13. 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).
14. Contoh pengerjaan instruksi tanpa pipeline
Disini instruksi baru akan dijemput jika instruksi
sebelumnya telah selesai dilaksanakan.
15. Contoh pengerjaan instruksi dengan pipeline
Disini instruksi baru akan dijemput setelah tahap IF
menganggur (t2).
17. PENGERTIAN
Suatu instruksi terdiri dari beberapa field yang sesuai
dengan elemen dalam instruksi tersebut.
layout dari instruksi sering disebut sebagai format
instruksi.
Program terdiri dari urutan instruksi, setiap instrusksi
memiliki aksi tertentu.
Setiap instruksi terdiri dari field kode operasi atau opcode
yang menentukan operasi apa yang harus dikerjakan oleh
CPU.
Instruksi dapat berupa opcode saja, tetapi sebagian besar
instrusksi melibatkan satu atau lebih operand.
Untuk menentukan dimana operand berada disebut
addressing.
18. Instruksi tanpa operand disebut dengan zero
address instruction. Instruksi yang
memerlukan satu atau lebih operand disebut
one-address instruction, two-address
instruction,dan seterusnya.
Panjang Instruksi tergantung jumlah operand
yang terlibat dan cara menentukan setiap
operand.
19. CONTOH FORMAT INSTRUKSI
Opcode/mnemonic Operand1
Operand2
...
OperandN
• operand source/destination
• Opcode : menyatakan operasinya (mnemonic)
• Operands: menyatakan data input (source) dan output (destination)
untuk operasi ybs
datanya (imediate) atau
lokasi/alamat data (ekslisit atau implisit)
19
20. Selama berlangsungnya eksekusi instruksi, instruksi
dibaca ke dalam register instruksi (Instruction
Register-IR) yang terdapar dalam CPU.
Opcode
direpresentasikan
dengan
singkatansingkatan
yang
disebut
mnemonik,
yang
mengindikasikan operasi.Misal:
a. ADD (menambahkan)
b. SUB (pengurangan)
c. MPY (multiply)
d. DIV (pembagian)
e. LOAD (muatkan data dari memori)
f. STORE (simpan data ke memori)
21. Operand-operand juga direpresentasikan
secara simbolik. Misalnya instruksi:
ADD
R,Y
Berarti tambahkan nilai yang terdapat pada lokasi
Y ke isi register R dimana Y berkaitan dengan
alamat lokasi di dalam memori, dan R berkaitan
dengan register tertentu.
23. APA YANG HARUS DISPESIFIKASIKAN OLEH SEBUAH INSTRUKSI ?
Kode operasi Opcode
add r0, r1, r3
add, load, branch, dsb.
Dimana operand-operand sumbernya berada ?
add r0, r1, r3
didalam register2 CPU, main memory, I/O, atau terdapat dalam
instruksi itu sendiri.
Kemana operand hasil (hasil operasi ) disimpan ?
add r0, r1, r3
ke register2 CPU atau main memory
Opcode
Operand-operand sumber dan operand hasil
(alamat penyimpanannya)
23
24. ADDRESSING MODE
Beberapa jenis addressing modes diuraikan sebagai berikut:
1. Immediate Addressing
Pada mode ini, operand merupakan bagian dari instruksi,
sehingga operand tersedia dengan segera. Operand ini
disebut immediate operand karena secara otomatis di-fetch
dari memori dengan instruksi.
2. Direct Addressing
Pada mode ini instruksi menyediakan alamat operand
secara langsung. CPU menggunakan alamat ini untuk
melakukan fetch (atau store) oprend.
3. Register Direct Addressing
Mode ini mirip dengan direct addressing, perbedaannya field
operand menentukan register, bukan alamatmemori.
Register ini adalah salah satu dari general purpose register
(GPR) CPU.
25. 4. Register Indirect Addressing
Pada mode ini register ditentukan oleh instruksi yang berisi alamat
operand, bukan operand itu sendiri. Karena memegang alamat
operand, maka register dapat dipandang sebagai petunjuk ke
operand, sehingga disebut pointer.
5. Indirect Addressing
Pada addressing mode berikutnya instruksi menentukan alamat
operand berkaiatan dengan jarak dari alamat yang laian. Pada mode
addressing ini instruksi menyediakan dan menunjukkan register mana
yang memegang indek. Indek menentukan berapa jauh operand dari
alamat yang disediakan oleh instruksi.
6. Based Addressing
Mode ini dikenal dengan relative addressing. Pada tipe addressing ini
alamat operand berkenaan dengan jarak (atau displacement) dengn
base address yang disimpan dalam register.
7. Relative Addressing
Program melibatkan instruksi tipe jump untuk menttansfer control ke
program lain atau ke bagian lain dari program lain dari program yang
sama.
26. SET INSTRUKSI
Set instruki dapat berbeda tidak hanya pada tipe
operasi, tetapi juga tipe data dimana operasi-operasi tersebut
dilakukan.
Dipandang dari tipe operasi, instruksi dapat dibagi menjadi
tiga kelas utama, yaitu:
1. Instruksi transfer data
Memindahkan data antar lokasi tanpa melakukan operasi
apapun pada data yang bersangkutan. Contoh instrusi
transfer data adalah MOV.
2. Instruksi kendali
Tidak melakukan operasi pada data. Fungsi instrusksi ini
untuk mengendalikan program dan keadaan (state) CPU.
Contoh instrusksi transfer kendali adalah
JUMP, CALLSUB, RETSUB, RETINT, LOOPBCK (kendali
program) dan SETC, CLRC, ENINT, DISINT, HALT, NOP
(kendali CPU).
27. 3. Instruksi manipulasi data
Melakukan operasi data yang memberikan
hasil melalui transformasi data. Yang termasuk
instruksi manipulasi data adalah:
a). Aritmetik
b). Lojik
c). Shift/rotate
d). Manipulasi bit
e). Perosesan string
28. CPU TIMING
Instruction cyce dan Machine cycle
Adalah urutan langkah yang diperlukan dalam fetching
dan eksekusi instrusi. Di dalam prosesor, langkah ini
dibagi menjadi urutan yanglebih kecil yang disebut
machine cycle. Tipe machine cycle yang umum adalah:
a). Memory Read
b). Memory Write
c). Internal Operation
d). Interupt Acknowledge
e). Bus Grant