2. Prosesor DLX
Prosesor DLX atau disebut juga prosesor Delux memberikan gambaran menyeluruh
tentang suatu prosesor modern. Bagian penting yang dipelajari adalah jalur data,
instruksi, dan bagian kendali
8.1 Arsitektur DLX
Prosesor DLX menggunakan arsitektur simpan-ambil (load-store) dengan lima tahap
pipeline unutk menyelesaikan suatu instruksi. Kelima tahap tersebut adalah:
Instruction fect (IF), Isntruction Decode (ID), Exute (EX), Memory Access (MEM), dan
Write Back (WB). Panjang semua instruksi DLX adalah 32 bit.
3.
4. Arsitektur prosesor DLX terdiri dari 5 komponen utama yang masing-masing
memiliki fungsi yang berbeda yaitu:
1. PC (Program Counter) : register yang berfungsi menampung nilai yang didunakan
untuk menunjukkan alamat instruksi yang akan dieksekusi . Register ini
merupakan offset dari alamat dasar instruksi sekaligus data.
2. Memori: Terdiri dari dua bagian yaitu memori untuk instruksis yang berisikan
kumpulan seluruh instruksi dan memori untuk data yang berfungsi untuk
menyimpan data.
3. Register: Kumpulan register 32 bit tempat menyimpan nilai sementara
4. ALU (Aritmatic and Logical Unit): tempat dilakukannya operasi aritmatik dan
logika.
5. Unit kendali (Control Unit): unit kendali terdiri dari dua bagian yaitu register
instruksi (instruksi register): register tempat menyimpan sementara instruksi, dan
pengendali (controller): bagian yang menerjemahkan instruksi dan
mengeluarkan set kendali pada seluruh register
5. Register-Register
Register adalah memori kecepatan tinggi yang dapat menyimpan data. Pada dlx
register memiliki lebar 32 bit. Register- register yang terdapat dalam dlx antara
lain:
Register R0 - R31 adalah register tujuan umum (general purpose registers)
yang lebar nya masing-masing 32 bit. Register ini digunakan untuk menyimpan
dan mengoperasikan bilangan integer.
Register F0 - F31 adalah register untuk bilangan floating point dangan lebar
masing - masing 32 bit. Untuk meningkatkan kapasitas register , satu register
dengan register yang lain dapat dipasangkan. Pasangan register ini
digunakan untuk floating-point double- precision.
Register O adalah register khusus yang selalu menyimpan nilai nol. Nilai ini
ditulis dalam bentuk rangkaian permanen. Apapun operasi yang dilakukan
terhadap register ini tidak akan mempengaruhi nilainya.
6. Terdapat tiga buah register tujuan khusus:
1. Register Pencacah Program (Program Counter, PC) adalah register yang
berfungsi menentukan alamat instruksi berikutnya yang akan dieksekusi.
2. Register Alamat Intrupsi (Interrupt Address Register, IAR) adalah register
yang digunakan untuk menyimpan nilai PC sementara pada saat terjadi
interrupt. Setelah interupsi selesai maka nilai PC akan dikembalikan .
3. Register status floating-Point (Floating-Point Status Register, FSR) adalah
register yang menyimpan informasi status hasil operasi floating-point
7. Karakteristik prosesor DLX
Secara umum prosesor DLX memiliki karakteristik yang dapat dibedakan dari prosesor lain
:
1. Perangkat instruksi ambil/simpan (Load/Store) sederhana.
2. Memiliki teknik pipeline untuk meningkatkan kinerjanya.
3. Memiliki register file yang dapat digunakan untuk tujuan umum.
4. Skema penerjemahan instruksi yang sederhana.
5. Teknik kompilasi yang efisien.
Kelas instruksi dalam prosesor dlx antara lain:
1. Instruksi yang mengacu pada memori (Load-Store)
2. Instruksi register ke register
3. Instruksi aritmatik dan logika (ALU)
4. Instruksi floating point
5. Instruksi lompat dan pencabangan (Jump and Branch)
6. Instruksi khusus
8. Tahapan pipeline:
1. Siklus Fect instruksi (IF)
Biasanya disebut sebagai "unit beban" dalam terminologi modern. Instruksi
yang ditunjuk oleh PC diambil dari memori ke register instruksi CPU, dan PC
bertambah untuk menunjuk ke instruksi berikutnya dalam memori.
2. Siklus Decode/Register Fecth (ID)
Unit ini mendapat instruksi dari IF, dan ekstrak opcode dan operand dari instruksi.
Instruksi yang diterjemahkan, dan pada paruh kedua dari tahap Operand ditransfer
dari register file ke input ALU register. Ini juga mengambil nilai-nilai mendaftar jika
diminta oleh operasi
3. Siklus eksekusi (EX)
Menjalankan instruksi, biasanya disebut sebagai ALU dalam terminologi modern.
Logika dan operasi aritmatika yang dijalankan pada operand yang berasal dari ID
stage. Hasil dari operasi dapat menjadi nilai yang akan ditulis kembali dalam
register file atau alamat dari data memori untuk diakses pada tahap berikutnya.
9. 4. Siklus Akses memori/ Pencabangan (MEM)
Unit yang MEM menjemput data dari memori utama, di bawah kontrol instruksi dari ID
dan EX. Data memori diakses (baik membaca atau menulis).
5. Siklus tulis-balik (WB)
Biasanya disebut sebagai “load-store” dalam terminologi modern. Pada tahapan ini,
disediakan saluran bagi DLX sehingga dapat menyimpan kembali register untuk
tahap eksekusi (EX). Hal ini dapat mempercepat pelaksanaan operasi register ke
register oleh ALU yang berada dalam tahap eksekusi.
10. FORMATINSTRUKSI
Dalam DLX terdapat tiga buah format instruksi yaitu: tipe-R, tipe-I, dan tipe-J.
Semua foramat instruksi dibedakan oleh kode operasi (operation code-opcode).
Informasi lain yang ada dalam setiap format berbeda-beda.
1.Tipe-R (register)
Instruksi tipe-R atau disebut tipe register membutuhkan tiga register dalam
sebuah instruksi yaitu dua register sumber dan satu register tujuan
Bagian-bagian instruksi tipe-R:
Kode opersai: 6 bit dari bit 0 – 5
Register sumber 1 (rs1): 5 bit dari bit 6 – 10
Register sumber 2 (rs 2): 5 bit dari bit 11 – 15
Fungsi: 11 bit dari 21 - 31
11. 2.Tipe I (Immediate)
Instruksi tipe-I atau disebut tipe immediate membutuhkan dua register dalam
sebuah instruksi yaitu satu register sumber dan satu register tujuan.
Bagian-bagian instruksi tipe-I:
Kodeoperasi: 6 bit dari 0 – 5
Register sumber (rs): 5 bit dari bit 6 – 10
Register tujuan (rd): 5 bit dari bit 11 - 15
Nilai: 16 bit dari bit 16 – 31
3.Tipe J (jump)
Instruksi tipe-J terdiri dari dua bagian:
Kodeo perasi (opcode): 6 bit dari 0 – 5
Alamat (operand): 26 bit dari 6 – 31,
12. 8.3 PERANGKATINSTRUKSI
Perangkat instruksi adalah kumpulan instruksi yang telah didefinisikan pada
prosesor dlx. Berikut ini daftar instruksi yang terdapat pada prosesor DLX:
13.
14. Ada beberapa catatan pada instruksi di atas:
Instruksi SW pada kenyataannya menggunakan Rt untuk register sumber (nilai yang
disimpan di memori berasal dari Rt)
JL dan JALR hanya menggunakan Rs1, nilai immediate dan Rt dibuang
SRA dan SRAI adalah penggeseran kanan aritmatik. Ini artinya, bit tanda operand
akan digandakan bukan menggantinya dengan nol. SLR dan SRA akan sama jika
Rs1 bernilai positif. Jika Rs1 negatif (bit 31 = = 1), maka 1 disisipkan dari kiri untuk
SRA dan SRAI,
SHI digunakan untuk mengambil bit-bit sebelah atas dari konstanta 32-bit.
15. 8.4 Memori
Register adalah memori kecepatan tinggi yang digunakan untuk menyimpan data
sementara. Kecepatan tinggi berarati pula cepat pengaksesannya. Mengakses register
jauh lebih cepat daripada mengakses memori karena tidak perlu pengalamatan.
Mengakses register dengan menyebut nama register nya.
DLX menyediakan 32 register tujuan umum yang masing-masing lebarnya 32 bit.
Register ini diberi nama R0-R31 . Beberapa register mempunyai yang fungsi
khusus yaitu:
Register R0 selalu bernilai 0 . Semua nilai yang dituliskan ke R0 akan
dibuang.
Alamat kembali setelah instruksi pemanggilan (call) subrutin secara implisit
disimpan dalam register R31.
Register R30 ditaruh paling awal untuk menunjuk sebuah area pada memori
yang nantinya akan digunkan pada vareabel global
Register R29 digunakan untuk stack pointer
Register R28 digunakan untuk frame pointer
Register F0 –F31 adalah register 32 bit untuk nilai float:
16. Memori adalah adalah tempat menyimpan data yang relatif permanen .
Beberapa pengaturan memori pada prosesor DLX, sebagai berikut:
Memori dibagi kedalam 32 bit
Setiap bit tersebut memiliki alamat yang merupakan kelipatan dari 4
Byte dialamatkan dengan mode Big Endian
Byte yang paling berarti (Most signifikan byte ) terletak pada alamat terkecil.
Half word (16 bit ) sama dengan 2 byte
Word (32 bit) sama dengan 4 byte
17. Lebar pita memori (memory bandwidth):
Akses terhadap memori meningkat selama terjadinya proses pipe line , oleh
karena itu maka bandwith dari memori pada DLX harus ditingkatkan.
Instruksi diambil setiap siklus dengan menggunakan proses pipeline. Hal ini
lebih baik daripada empat sampai lima siklus jika menggunakan proses
pipeline
Data pada memori diakses setiap terjadi instruksi Load dan Store
Instruksi pada memori dan data pada memori kemungkinan diakses secara
bersamaan dengan dua instruksi yang ada pada siklus IF dan MEM
Data dan instruksi diletakkan secara terpisah untuk menghindari benturan
akses pada proses pipeline
Instruksi dan data pada memori diimplementasikan sebagai cache internal
yang berada di dalam chip prosesor
18. 8.5 DASAR DASAR PIPELINING PADA PROSESOR DLX
Pipelining adalah suatu teknik pemecahan satu pekerjaan atau tugas menjadi
beberapa sub tugas, dan mengeksekusi sub-tugas tersebut secara
bersamaan/paralel dalam unit –unit multi hardware atau segmen-segmen dengan
tujuan meningkatkan thoughput (jumlah tugas yang dieksekusi per unit waktu.)
Pada prosesor DLX terdapat 5 tahap sub proses yaitu:
1. Siklus pengambilan (fect) instruksi (IF)
2. Siklus decode Instruksi (ID), pengambilan isi register:
3. Siklus eksekusi (EX), alamat efktif:
4. Siklus akses memori (MEM), Penyelesaian pencabangan:
5. Siklus tulis - balik (WB)
19. Gambar di atas Mengilustrasikan sebuah pipeline dengan lima unit , atau lima
stage (5 tahap) :
Tahap 1. mengambil instruksi dari memori dan menempatkan instruksi
tersebut dalam sebuah penyangga sampai instruksi sampai instruksi itu
dibutuhkan.
Tahap 2. mendekodekan instruksi tersebut, menentukan jenisnya dan
operand dan operan apa yang dibutuhkan instruksi tersebut.
Tahap 3. melokasi dan mengambil operand operand baik itu dari
register register ataupun dari memori.
Tahap 4. sebenarnya melaksanakan pekerjaan menjalankan instruksi
tersebut, terutama menjalankan operand operand melalui jalur data.
Tahap 5. menuliskan hasilnya kembali keregister yang sesuai
IF ID EX Mem WB
20. Dalam gambar di atas bagaimana pipeline tersebut beroperasi sebagai suatu fungsi waktu:
Selama siklus waktu 1, S1 sedang menangani instruksi IF , dengan mengambilnya dari memori.
Selama siklus waktu 2, tahap S2 mendekodekan instruksi IF , sedangkan tahap S1 mengambil
instruksi ID.
Selama siklus waktu 3, tahap S3 mengambil operand-operand dari instruksi IF, tahap S2
mendekodekan instruksi ID, dan tahap S1 mengambil instruksi EX.
Selama siklus waktu 4, Tahap S4 menjalankn instruksi IF, tahap S3 mengambil operand-operand
untuk instruksi ID, tahap S2 mendekodekan instruksi ID, dan tahap S1 mengambil instruksi
MEM.
Selama siklus waktu 5 , tahap S5 menulis kembali hasil instruksi IF, sementara tahap tahap
lainnya menangani instruksi-instruksi berikutnya
Inst. WAKTU
1 2 3 4 5 6 7 8 9
S1 IF ID EX MEM WB
S2 IF ID EX MEM WB
S3 IF ID EX MEM WB
S4 IF ID EX MEM WB
S5 IF ID EX MEM WB
26. Analisis berikut menunjukkan bahwa waktu yang digunakan untuk menyelesaikan m
instruksi dalam suatu pipeline n tingkat instruksi diaproksimasi kira-kira sama
dengan n.
Waktu yang digunakan instruksi pertama = ntc dimana tc adalah durasi satu siklus
clock
Waktu yang digunakan untuk sisa instruksi (m-1) adalah (m-1)tc
Total waktu yang digunakan untuk m instruksi = (ntc) + (m-1)tc = (n+m-1)tc
IF ID EX Mem WB
Buffer antar tinggkat
Bagian bagian
IF = instruksi Fect ID = Decode Instruksi EX = Eksekusi MEM =Akses memori, WB =Tulis - balik
27. jika prosesor adalah prosesor nonpipeline,maka waktu yang digunakan untuk m instruksi dalam nmtc dengan
menganggap waktu siklus instruksi sama dengan ntc
Gian kinerja (speedup) pipeline adalah waktu yang digunakan dalam mode pipeline;
Speed-up= waktu, pemrosesan nonpipeline/waktu,pemrosesan pipeline = nmtc / (n+m-1)tc = nm / n+m-1)
Untuk nilai m yang besar yang lebih besar dari (n-1) , maka (n+m-1) mendekati m karena itu speed up = nm / m
= n
Jadi, speed up maksimum secara teoritis adalah sama dengan jumlah tingkat dalam pipeline. Jumlah siklus
clock yang diperlukan untuk mengeksekusi m instruksi adalah m karena satu instruksi selesai setiap siklus
clock
Secara praktis, kehadiran instruksi cabang dalam program mengurangi perolehan speed-up pada pipe lining
dan meningkangkat jumlah siklus clock yang dibutuhkan
Thruoght=jumlah tugas yang dieksekusi per unit waktu = m / (n+m-1)tc
Efisiensi = rasio antara speed up aktual dan speed up maks = speed-up / n = m / n+m-1
Inst. WAKTU
1 2 3 4 5 6 7 8 9
S1 IF ID EX MEM WB
S2 IF ID EX MEM WB
S3 IF ID EX MEM WB
S4 IF ID EX MEM WB
S5 IF ID EX MEM WB
Siklus waktu
INSTRUKSI
28. 8.6 Hambatan Utama Pipelining-Resiko Pipeline [Pipeline Hazard]
Hazard adalah hambatan hambatan yang ditemui setelah penerapan metode
pipeline, hazard mengurangi kinerja dari kecepatan ideal yang dicapai oleh
pipelining.
Terdapat tiga jenis Hazard:
1. Hazard struktur yang yang timbul dari konflik sumber daya pada saat
perangkat keras tidak mendukung semua kemungkinan kobinasi instruksi dalam
eksekusi bersamaan yang simultan
2. Hazard Data yang timbul pada saat instruksi tergantung pada hasil instruksi
sebelummya.
3. Hazard kendali yang timbul dari pipelining pencabangan dan instruksi lain
yang mengubah PC