BAB I
Komputer Sederhana SAP-1
(Simple As Possible-1)
(Simple As Possible-1)
1.1
Arsitektur
SAP-1
Tujuan
komputer SAP adalah menjelaskan cara kerja komputer yang paling sederhana.
SAP-1 merupakan tahap pertama dalam evolusi kearah pengembangan
komputer-komputer modern. Sekalipun masih kearah pengembangan komputer sederhana,
operasi SAP-1 telah mewakili operasi komputer modern. Kelebihannya,
arsitekturnya sederhana sehingga mudah dimengerti oleh pemula sekalipun. Gambar
di bawah ini menunjukkan arsitektur SAP-1
Gambar
1.1 Arsitektur SAP-1
Penahan
Tiga Keadaan (three state buffer, TSB)
Semua keluaran register menuju bus W yang dikendalikan oleh penahan tiga keadaan (three state buffer, TSB) yang memungkinkan transfer data dari register ke bus secara teratur.
Gambar
1.2 Saklar tiga keadaan (three state buffer, TSB)
Keluaran
dari TSB, Dout, memungkinkan tiga kondisi: 1, 0 atau hambatan tinggi (impedansi
tinggi). Pada saat ENABLE=0 maka terjadi hambatan tinggi pada TSB sehingga
tidak ada data yang mengalir dari input Menuju Output.
Pada
SAP-1 TSB banyak digunakan untuk menahan data dari register menuju ke bus W
atau sebaliknya.
CLK,CLK,CLR,CLR
Jalur kendali umum yang hampir ada pada
setiap komponen dalam komputer, fungsi umum masing-masing jalur:
® CLK :
Memicu pengaktifan komponen dengan mode active higt, akan aktif jika
nilainya = 1
® CLK : Memicu pengaktifan komponen dengan mode active
higt, akan aktif jika nilainya = 0
® CLR:
Me-reset komponen dengan mode active higt, akan aktif jika nilainya = 1
® CLR:
Me-reset komponen dengan mode active higt, akan aktif jika nilainya = 0
Berikut ini adalah
uraian singkat dari setiap kotak diagram dan penjelasan:
a. Pencacah
Program (Program Counter - PC)
Program disimpan
pada bagian awal dari memori dengan instruksi pertama pada alamat biner 0000,
intruksi kedua pada alamat 0001, instruksi ketiga pada alamat 0010, dan
seterusnya. Pencacah program, yang merupakan bagian dari unit kendali, mencacah
dari 0000 sampai 1111. Tugasnya adalah mengirimkan ke memori alamat dari
instruksi berikutnya yang akan diambil dan dilaksanakan. Hal ini dilaksanakan
sebagai berikut.
Program Counter
direset ke 0000 setiap kali sebelum komputer dijalankan. Ketika komputer mulai
bekerja, pencacah program mengirimkan alamat 0000 ke memori. Kemudian mencacah
program meningkatkan angka cacahannya menjadi 0001. Setelah instruksi pertama
diambil dan dilaksanakan, pencacah program mengirimkan alamat 0001 ke memori.
Pencacah program kembali meningkatkan angka cacahannya. Sesudah instruksi kedua
diambil dan dieksekusi, pencacah program mengirimkan alamat 0010 ke memori.
Dengan demikian, pencacah program dapat menentukan instuksi berikutnya yang
akan diambil dan dilaksanakan.
b.
Masukan
dan MAR (Memory Address Register)
Di bawah Program
Counter adalah blok input dan MAR. Disini sudah termasuk register saklar untuk
alamat dan data seperti dibahas dalam Pasal 9-4. Register-register saklar ini,
yang merupakan bagian dari unit masukan, memungkinkan pengiriman 4 bit alamat
dan 8 bit data kepada RAM. Ingatlah bahwa instruksi dan kata-data dituliskan ke
dalam Ram sebelum komputer bekerja.
Memory address
register (disingkat MAR: artinya register alamat memori) adalah bagian dari
memori SAR-1. Selama komputer bekerja, alamat dalam pencacah program ditahan
(latched) pada MAR. Sejenak kemudian, MAR mengirimkan alamat 4 bit ini ke dalam
RAM, dimana operasi membaca dilaksanakan.
c.
Memori RAM (Random Access Memory) 16 x 8
RAM berperan
sebagai memori utama tempat menyimpan instruksi dan data. Selama komputer
beroperasi, RAM menerima alamat 4 bit dari MAR dan operasi membaca
dilaksanakan.
Setelah memori
dibaca, instruksi atau data akan keluar dari memori dan masuk ke dalam bus W.
Instruksi atau data yang berada dalam
bus W dapat diakses oleh register-register lain.
Memori terdiri
dari 16 alamat yang lebarnya 8 bit. Untuk mengakses RAM diperlukan alamat dengan
lebar 2log16 bit = 4 bit. Itulah mengapa pencacah program lebarnya 4
bit.
Jalur kendali yang ada pada RAM
• CE : Mengeluarkan data 8 bit dari
memori ke bus W
d.
Register Instruksi (Instruction
Register)
Register
instruksi merupakan bagian dari unit kendali. Instruksi yang akan dieksekusi,
dibaca dari memori utama dan masuk ke dalam bus W. Pada waktu yang bersamaan,
register instruksi diaktifkan ssehingga instruksi yang dibaca dari memori akan
masuk ke dalam register instruksi.
Register
instruksi dibagi menjadi dua bagian. Bagian atas sebanyak 4 bit dikirim ke blok
engendali pengurut (Controller – Sequencer). Bagian bawah sebanyak 4 bit menuju
bus W dikendalikan oleh TSB.
Jalur
kendali yang ada pada Register Instruksi:
•
LI : mengambil data 8 bit dari bus W
•
EI : Mengendalikan data 4 bit dari register yang menuju ke bus
W.
e.
Pengendali Pengurut (Controller –
Sequencer)
Blok
terbawah di bagian kiri berisi pengendali-pengurut (controller-sequencer)
sebelum komputer bekerja, sinyal-sinyal CLR dan CLR masing-masing dikirimkan ke
pencanah program dan register instruksi. Sebagai akibatnya, pencacah program
direset ke 0000 dan bersamaan ini instruksi terakhir dalam register instruksi
dihapus.
Sebuah sinyal detak CLK
dikirimkan ke semua register bufer; sinyal ini mensinkronkan operasi komputer,
yang menjamin bahwa setiap langkah operasi akan terjadi sebagaimana mestinya.
Dengan kata lain, semua transfer dalam regiter terjadi pada tepi positif dari
sinyal detak CLK yang sama. Perhatikan bahwa sinyal CLK juga memasuki pencacah
program.
Data
12-bit yang berasal dari pengendali-pengurut membentuk suatu kata-pengendalian
komputer (seperti seorang pengawas yang memberitahu tentang apa yang harus
dikerjakan). 12 kawat yang menyalurkan katakendali itu disebut bus kendali
(control bus).
Kata kendali
mempunyai format sbb:
CON = CpEp L MCE
L 1 E 1 L AEA SuEu L B L o
Kata
ini menentukan bagaimana register-register harus bereaksi terhadap tepi positif
sinyal detak berikutnya. Misalnya, Ep tinggi dan M rendah berarti bahwa isi
pencacah program ditahan di dalam MAP pada tepi positif berikutnya. Sebagai
contoh yang lain, dan A yang rendah berrati kata RAM yang telah ditunjuk
alamatnya akan ditransfer ke akumulator pada tepi positif berikutnya dari
lonceng. Kelak kita akan mempelajari diagram pewaktuan yang bersangkutan untuk
melihat tepatnya kapan dan bagaimana transfer data ini dilakukan.
f. Akumulator
Accumulator
(A) adalah sebuah register buffer yang menyimpan jawaban sementara (tahap
menengah, intermediate) selama komputer beroperasi. Dalam Gambar 10-1
diperlihatkan bahwa akumulator mempunyai dua macam keluaran. Keluaran dua
keadaan secara langsung diteruskan ke bagian penjumlahan-pengurang. Keluaran
tiga-keadaan dikirimkan kepada bus W. Karena itu kata 8-bit dari akumulator
secara terus menerus menggerakkan rangkaian penjumlah-pengurangan; dan kata
yang sama juga muncul pada bus W bilamana EA tinggi.
g.
Penjumlah
– Pengurang
SAP-1 menggunakan sebuah
adder-subtractor komplemen-2. Bila Su berharga rendah, maka keluaran jumlah
dari penjumlah-pengurang dalam Gambar 10-1 adalah:
S = A + B
Apalagi Su tinggi, keluarannya
berupa selisih
A = A + B’
(ingat kembali bahwa komplemen-2
ekivalen dengan perubahan tanda dalam bilangan desimal)
Rangkaian
penjumah-pengurang bersifat asinkron (tidak diatur oleh sinyal detak); ini
berarti isi keluarannya akan berubah bila terjadinya perubahan pada kata-kata
masukan. Bilamana Eu tinggi, isi yang bersangkutan akan muncul pada bus W.
h. Register
B
Register
B adalah register bufer yang digunakan
dalam operasi aritmetik. Sinyal B yang rendah dan tepi positif dari sinyal
detak akan mengisikan kata pada bus W ke dalam register B. Keluaran dua-keadaan
dari register B kemudian menggerakkan penjumlah-pengurang, memasukkan bilangan
yang akan dijumlahkan dengan atau dikurangkan dari isi akumulator.
i.
Register Keluraran
Apabila EA tinggi dan 0 rendah
tepi positif sinyal detak berikutnya akan memasukkan kata dari akumulator ke
dalam register keluaran.
Register
ini sering disebut bandar keluaran (output port) karena data yang telah
diproses dapat meninggalkan komputer melalui register ini. Dalam mikrokomputer,
bandar-bandar keluaran dihubungkan dengan rangkaian perantara (interface
circuits) yang menggerakkan alat-alat periferal seperti: printer, tabung
sinar-katoda (CRT), teletypewriter, dan sebagainya. (Rangkaian perantara
menyiapkan data untuk menggerakkan setiap alat).
1.2
Perangkat
Instruksi [Instruction Set]
Instruksi dalam
SAP-1 terdiri dari 2 jenis: memiliki 1 operand dan tanpa operand. Operand
adalah data atau alamat data yang dioperasikan. Instruksi yang memiliki 1
operand adalah: LDA, ADD, dan SUB. Instruksi tanpa operand adalah OUT dan HLT.
Instruksi
Mengacu kepada Memori (Memory Refference Instruction)
Instruksi LDA,
ADD dan SUB disebut instruksi-instruksi yang mengacu momori (memory reference
instruction), karena semua instruksi yang bersangkutan menggunakan data yang
tersimpan dalam memori.
Instruksi-instruksi
yang terdapat dalam SAP-1 sebagai berikut:
LDA (Load the Accumulator)
Instruksi LADA
mengambil data dari memori dan dimasukan ke dalam akumulator.
Contoh:
LDA AH
Instruksi ini
mengambil data dari alamat memori A H dan disimpan kedalam akumulator.
ADD
(Adder)
Instruksi ADD menjumlahkan isi
akumulator dengan data memori
Contoh:
ADD
8 H
Instruksi ini menjumlahkan isi
akumulator dengan data memori alamat 8 H. Hasil penjumlahan disimpan kembali
dalam akumulator.
SUB
(Subtract)
Instruksi SUB mengurangkan isi
akumulator dengan isi register
Contoh :
SUB
DH
Instruksi ini
akan mengurangkan isi akumulator dengan data pada alamat DH. Hasilnya disimpan
kembali ke dalam akumulator.
OUT
Instruksi OUT adalah instruksi tanpa
operand. Data dari akumulator secara otomatis akan diambil dan dimasukkan ke
dalam register keluaran.
HLT
(Halt)
Instruksi HTL
berfungsi untuk menghentikan proses. Instruksi ini memberitahu kepada komputer
untuk berhenti memproses data. HLT menandai akhir suatu program. Instruksi ini
tidak memerlukan operan memori. Setiap program dalam SAP-1 harus diakhiri
dengan HLT.
Tabel 1.1 Rangkuman Instruksi SAP-1
1.3
Pemrograman
SAP-1
Di
dalam pemrograman SAP terdapat kode yang akan memerintahkan komputer untuk
melakukan sesuatu operasi yang disebut dengan kode operasi (operation code)
yang di singkat dengan opcode. Berikut akan diberikakn kode operasi dari tiap
instruksi pada SAP-1
Siklus Instruksi
dalam menyelesaikan setiap instruksi diperlukan tahapan. Tahapan ini disebut siklus instruksi. Siklus instruksi terdiri dari 2 tahapan yaitu FETCH dan EXECUTE. Masing-masing tahap memerlukan 3 siklus detak (clock cycle) ditandai dengan T1, T2, T3, T4, T5 dan T6. Siklus detak ini diatur oleh pencacah yang disebut Ring Counter yang mengeluarkan nilai T:
dalam menyelesaikan setiap instruksi diperlukan tahapan. Tahapan ini disebut siklus instruksi. Siklus instruksi terdiri dari 2 tahapan yaitu FETCH dan EXECUTE. Masing-masing tahap memerlukan 3 siklus detak (clock cycle) ditandai dengan T1, T2, T3, T4, T5 dan T6. Siklus detak ini diatur oleh pencacah yang disebut Ring Counter yang mengeluarkan nilai T:
T=T6,T5,T4,T3,T2,T1
Pada saat komputer
mulai dijalankan, data keluaran pencacah tersebut adalah:
T= 000001
Selanjutnya akan
menghasilkan 000010, 000100, 001000, 010000, 100000. Setiap instruksi
diselesaikan dalam 6 keadaan T tersebut.
Penjelasan rinci
masing-masing tahap sebagai berikut:
a. Siklus
Fetch
Pada siklus fetch dilakukan pengambilan
instruksi dari memori dan diletakkan di dalam register instruksi. Semua
instruksi melalui tahap ini. Tiga hal yang dilakukan pada tahap ini:
•
Mengirim isi Pencacah Program (PC) ke
dalam register pengalamatan (MAR). (Address State)
•
Menambah nilai Pencacah Program dengan
1. (Increment State)
•
Mengambil instruksi dari memori dan
dimasukka ke dalam register instruksi.
(Memory State)
•
Tahap
Pengiriman Alamat (Address State) -1
Pada tahap ini nilai dari pencacah program (PC) dikiri ke
register alamat memori (MAR). Pengendali/pengurut akan menilai kendali COS:
CON = Cp Ep
M
1
1
A EA
Su Eu
B
o
= 0 1 0 1 1
1 1 0 0 0
1 1
Jalur yang aktif
ada dua EP = 1 aktif high dan LM = 0 aktif low
Tahap Penambahan Nilai Pencacah dengan 1 (Increment
State)- T2
Pada tahap ini nilai
pencacah program ditambahkan dengan satu pengendali/Pengurut akan mengirim
nilai kendali CON:
CON = Cp Ep
M
1
1
A EA Su Eu
B
o
= 1 0 1 1
1 1 1
0 0 0
1 1
Jalur
yang aktif ada dua CP = 1. Nilai Pencacah ditambah 1.
Tahap Pengambilan Instruksi dari
Memori (Memory State) – T3
Pada tahap ini
data memori RAM yang ditunjuk oleh MAR dikeluarkan menuju bus. sementara itu,
data dari bus W masuk ke dalam register instruksi. Pengendali/Pengurut akan
mengirim nilai kendali CON:
CON = Cp Ep
M
1
1
A EA Su Eu
B
o
= 0 0 1 0 0 1 1
0 0 0
1 1
Jalur yang aktif
CE dan LI = 0, keduanya aktif low.
Siklus Fetch Keseluruhan
Tahap pengalamatan (address
state), penambahan nilai pencacah (increment state) dan pengambilan instruksi
dari memori (memory state) disebut juga dengan siklus fetc.
b.
Siklus Eksekusi
Eksekusi
instruksi dikendalikan oleh Pengendali/Pengurut (Controller/Sequencer). Masing
– masing tahap eksekusi T4, T5 dan T6 berbeda – beda untuk setiap instruksi Instruksi
LDA
pada instruksi
LDA hanya T4 dan T5 yang aktif, sementara
tahap T6 tidak ada yang aktif. Tahapan pada instruksi LDA:
•
Pada
tahap T4 alamat memori dikirim dari register instruksi ke MAR.
•
Pada
tahap T5 data dari memori diambil dan masuk ke register akumulator.
•
Pada
tahap T6 tidak melakukan apa-apa
Tahap Pengiriman Alamat – T4
pada tahap ini nilai 4 bit operand dari
register instruksi masuk ke MAR. Pengendali/Pengurut akan mengirim nilai
kendali CON:
CON = Cp Ep
M
1
1
A EA Su Eu
B
o
= 0 0 0 1 1
0 1 0 0
0 1 1
Jalur yang aktif
LM dan EI = 0, keduanya aktif low.
Tahap Pengambilan Data – T5
Pada tahap ini data 8 bit dari memori
diambil dan dimaskkan ke dalam akumulator. Pengendali/Pengurut akan mengirim
nilai kendali CON:
CON = Cp Ep
M
1
1
A EA Su Eu
B
o
= 0 0 1 0 1 1
0 0 0 0
1 1
Jalur yang aktif
CE dan LA = 0, keduanya aktif low.
Siklus Instruksi LDA Keseluruhan
Instruksi ADD dan SUB
Pada instruksi ADD dan SUB data operand
diambil dari memori dan dijumlahkan dengan akumulator hasilnya disimpan kembali
ke dalam akumulator. tahapan pada instruksi ADD dan SUB :
•
Pada
tahap T4 alamat memori dikirimdari register instruksi kedalam MAR
•
Pada
tahap T5 data dari memori diambil dan masuk ke register B.
• Pada tahap T6 data dari retister B
dioperasikan dengan akumilator dan hasilnya disimpan dalam akumulator.
Perbedaan instruksi ADD dan SUB pada tahap 6.
Tahap Pengiriman Alamat – T4
Tahap ini sama persis dengan instruksi
LDA. Nilai alamat 4 bit dari regiter instruksi masuk ke daam register alamat
memori (MAR).
Tahap Pengambilan Data – T5
Pada tahap ini
data 8 bit dari memori diambil dan dimasukan ke dalam register B. Pengendali/Pengurut akan mengirim nilai
kendali CON:
CON = Cp Ep
M
1
1
A EA Su Eu
B
o
= 0 0 1 0 1 1
1 0 0 0 0 1
Jalur yang aktif
CE dan LB = 0, keduanya aktif low.
Tahap Pengoperasian ADD/SUB Data – T6
Pada tahap ini data 8 bit dari
akumulator dan register B dioperasikan (ADD/SUB) hasilnya disimpan dalam
akumulator. Pengendali/Pengurut akan mengirim nilai kendali CON:
CON = Cp Ep
M
1
1
A EA Su Eu
B
o
= 0 0 1 1 1
1 0 0 0 1 1 1
Jalur yang aktif
EU = 1 aktif high dan LA=0 aktif low.
Operasi SUB
CON = Cp Ep
M
1
1
A EA Su Eu
B
o
= 0 0 1 1 1
1 0 0 1 1 1 1
Jalur yang aktif
SU, EU aktif high dan LA=0 aktif low.
Siklus Instruksi ADD/SUB Keseluruhan
Instruksi OUT
Instruksi OUT memerlukan satu tahap T4
yaitu memindahkan data dari akumulator ke dalam register keluaran.
Pengendali/Pengurut akan mengirim nilai kendali CON:
CON = Cp Ep
M
1
1
A EA Su Eu
B
o
= 0 0 1 1 1
1 1 1 0 0 1 0
Jalur yang aktif
EA=1 aktif high dan LB=0 aktif low.
1.4
Pengendali/Pengurut
[Controller/Sequencer] SAP-1
Bagian
terpenting dalam SAP-1 adalah register pengendali/pengurut. Pada kompter modern
bagian ini adalah unit kendali (control unit) yang berfungsi mengatur seluruh
jalannya komponen. Pada setiap tahap /siklus tidak semua komponen aktif.
Semuanya ditentukan oleh keluaran dari bagian pengendali/pengurut ini. Keluaran
kendali lebarnya 12 bit, yang masing-masing bitnya mengendalikan seluruh
register dalam SAP-1. Setiap tahap dari T1 sampai T6L, pengendali mengeluarkan
sinyal kendali sebanyak 6 buah. Sinyal kendali yang keluar dari
pengendali/pengurut dinamakan mikroinstruksi.
• ROM Alamat 16 x 4
|
Alamat
|
Isi
|
Rutin
|
|
0000
|
0011
|
LDA
|
|
0001
|
0110
|
ADD
|
|
0010
|
1001
|
SUB
|
|
0011
|
XXXX
|
Tidak ada
|
|
0100
|
XXXX
|
Tidak ada
|
|
0101
|
XXXX
|
Tidak ada
|
|
0110
|
XXXX
|
Tidak ada
|
|
0111
|
XXXX
|
Tidak ada
|
|
1000
|
XXXX
|
Tidak ada
|
|
1001
|
XXXX
|
Tidak ada
|
|
1010
|
XXXX
|
Tidak ada
|
|
1011
|
XXXX
|
Tidak ada
|
|
1100
|
XXXX
|
Tidak ada
|
|
1101
|
XXXX
|
Tidak ada
|
|
1110
|
1100
|
OUT
|
|
1111
|
XXXX
|
Tidak ada
|
• Pencacah Presetable
Pencacah
Presettable akan mencacah dari 0000 sampai 0011. Selanjutnya tergantung dari
kode operasi yang masuk dari ROM Alamat. Jika Instruksinya LDA maka nilai
pencacah berikutnya adalah 0011, jika instruksinya OUT maka nilai pecacah
berikutnya 1100.
• ROM Kendali 16 x 12
|
Alamat
|
Isi
|
Rutin
|
Bit aktif
|
|
0H
|
5E3H
|
Fetch
|
Ep,
|
|
1H
|
BE3H
|
|
Cp
|
|
2H
|
263H
|
|
|
|
3H
|
1A3H
|
LDA
|
|
|
4H
|
2C3H
|
|
|
|
5H
|
3E3H
|
|
Tidak ada
|
|
6H
|
1A3H
|
ADD
|
|
|
7H
|
2E1H
|
|
|
|
8H
|
3C7H
|
|
|
|
9H
|
1A3H
|
SUB
|
|
|
AH
|
2E1H
|
|
|
|
BH
|
3CFH
|
|
|
|
CH
|
3F2H
|
OUT
|
|
|
DH
|
3E3H
|
|
Tidak ada
|
|
EH
|
3E3H
|
|
Tidak ada
|
|
FH
|
X
|
X
|
Tidak dipakai
|
BAB II
Komputer Sederhana SAP-2
(Simple As Possible – 2)
(Simple As Possible – 2)
Perbedaan SAP-1 dengan SAP-2
§ Penambahan
register-register baru.
§ Penambahan
lebar bus menjadi 16 bit (lebar data yang dioperasikan ALU tetap 8 bit).
§ RAM yang
tersedia 64 KB.
§ Penambahan
kemampuan logika pada ALU.
§ Adanya flag
(bendera).
§ Peningkatan
jumlah instruksi dari 5 ke 43 instruksi (42 instruksi + 1 instruksi No
operation).
2.1
Arsiktektur SAP-2
Register Masukan atau Bandar Masukan
SAP-2
mempunyai dua buah bandar masukan, bernomor 1 dan 2. Enkoder papan tombol
(keyboard) heksadesimal dihubungkan dengan bandar I untuk memasukkan instruksi
dan data heksadesimal melalui bandar ini. Perhatikan bahwa enkoder papan tombol
heksadesimal mengirimkan sebuah sinyal READY ke bit 0 dari bandar 2. Sinyal ini
menunjukkan kapan data di bandar I telah menjadi absah (valid).
Perhatikan
pula bahwa sinyal SERIAL IN memasuki penyemat 7 dari bandar 2. Dalam pembahasan
kemudian akan diberikan suatu contoh yang memperlihatkan bagaimana cara
mengubah data masukan seri menjadi data masukan parelel.
Pencacah Program (Program Counter)
Kini, pencacah program
memiliki saluran 16-bit, dan karena itu dapat mencacah dari
PC
= 0000 0000 0000 0000
Sampai
PC = 1111 1111 1111 1111
Ini ekivalen dengan
0000H sampai FFFFH, atau 0 sampai 65.536 desimal.
Sinyal
CLR yang rendah akan mereset PC sebelum setiap operasi komputer. Dengan
demikian peorosesan data selalu dimulai dengan instruksi yang disimpan dalam
lokasi memori 0000H.
MAR dan Memori
Selama
siklus pengambilan, MAR menerima alamat 16-bit dari pencacah program. Keluaran
dua-keadaan dari MAR selanjutnya mengirimkan alamat lokasi memori yang
dikehendaki. Memori mempunyai sebuah ROM 2K yang beralamat 0000H sampai 07FFH.
ROM ini berisi sebuah program, yang disebut monitor. Program ini menganalisasi
komputer pada waktu dinyalakan. Menafsirkan masukan-masukan papan tombol, dan
sebagainya. Sisa dari memori sistem merupakan sebuah RAM 62K yang beralamat
dari 0800H sampai FFFFH.
RAM 64 KB
§ Kapasitas RAM 64
kB dari alamat 0000 H sampai FFFF H.
§ 2 kB pertama
(0000 H s/d 07FF H) untuk program monitor : serangkaian program untuk
menampilkan isi input register dan output register ke monitor.
§ 62 kB
berikutnya untuk instruksi dan data.
Register
Data Memori (Memory Data Register, MDR)
MDR
adalah sebuah register tempat menyimpan sementara data yang dibaca atau akan
dimasukkan ke dalam memori. Pada saat operasi membaca memori (Memory Read),
data dalam memori akan masuk ke dalam MDR untuk diteruskan ke bus W. Pada saat
operasi menulis memori (Memory Write) data dari bus W akan diteruskan ke dalam
memori.
Register
Instruksi (Instruction Register, IR)
Register
Instruksi menyimpan dan menerjemahkan kode operasi instruksi. 8 bit kode
operasi diteruskan ke Pengendali/Pengurut. SAP-2 memiliki lebar kode operasi 8
bit. Sama dengan prosesor 8080/8085. Dengan lebar kode operasi 8 bit, SAP-2
mampu mendefinisikan instruksi sampai 28 =
256 buah instruksi, walau demikian pada SAP-2 hanya didefinisikan
42 instruksi.
Pengendali-Pengurut
Pengendali-pengurut
menghasilkan kata-kata kendali atau mikroinstruksi yang akan mengkoordinasi
atau mengarahkan operasi komputer. Karena SAP-2 memiliki perangkat instruksi
yang lebih luas, maka perangkat keras dari bagian pengendali-pengurut menjadi
lebih rumit. Dipihak lain meskipun kata CON menjadi lebih panjang, tetapi ide
pokoknya tetap sama: kata kendali atau mikroinstruksi menentukan bagaimana
register-register bereaksi terhadap tepi pulsa detak positif berikutnya.
Akumulator
Keluaran
dua-keadaan dari akumulator dikirim ke ALU; sedangkan keluaran tiga- keadaan
dari akumulator ini dihubungkan dengan bus W. Karena itu, kata 8-bit dalam
akumulator secara kontinu menggerakkan ALU, akan tetapi kkata yang sama juga
muncul pada bus bilamana EA menjadi aktif.
ALU dan Bendera
ALU-ALU
standar tersedia secara komersial sebagai rangkaian terpadu. ALU ini memiliki 4
atau lebih dari 4 bit kendali yang menentukan operasi aritmetik atau operasi
logika pada kata-kata A dan B. ALU yang dipakai dalam SAP-2 mengandung operasi
aritmetik dan logika.
Dalam
buku ini, bendera (flag) merupakan sebuah flip-flop yang mengikuti dan
mengawasi perubahan keadaan selama komputer beroperasi. Komputer SAP-2
mempunyai dua macam bendera. Bendera tanda (sign flag) akan diaktifkan bilamana
isi akumulatr berubah menjadi negatif selama eksekusi dari beberapa instruksi.
Bendera nol (zero flag) akan diaktifkan bilamana isi akumulator menjadi nol.
Register TMP, Register B, dan Register C
Sebagai
pengganti peranan register B dalam menahan data yang akan dijumlahkan atau
dikurangkan dengan isi akumulator, di sini digunakan sebuah register sementara
(disingkat TMP dari kata temporary). Register ini memberikan kebebasan lebih
luas dalam menggunakan register B. Di samping
register TMP dan register B, SAP_2 juga menggunakan register C. Dengan
ini, pemindahan data selama komputer bekerja dapat dilakukan secara lebih fleksibel.
Register
Keluaran 3 dan 4
Register yang berfungsi
mengkomunikasikan hasil proses dengan pengguna. Pengguna dapat melihat hasil
operasi pada peraga heksadesimal.
2.2
Jalur Dua-Arah
Pada
SAP-2 terdapat jalur yang memiliki dua arah dan jalur yang memiliki satu arah.
Beberapa register yang menggunakan jalur dua arah adalah Pecacah Program,
Register Data Memori, Akumulator A, Register TEMP, B dan C,
2.3
Perangkat Instruksi [Instruction Set] pada SAP-2
Instruksi
terdiri dari 2 bagian, yaitu kode operasi (operation code, opcode) dan yang
dioperasikan (operand). Kode operasi lebarnya 8 bit, menempati satu alamat di RAM.
Contoh instruksi dengan
operand yang berbeda-beda
ADD B : Kode operasi 80 dan
tidak membutuhkan memori untuk operand.
MVI A, 18 H : Kode operasi 3E membutuhkan satu
alamat RAM untuk operand.
STA 4861 H : Kode operasi 32 membutuhkan 2
alamat RAM untuk operand,
Misal
ketiga instruksi tersebut disimpan pada RAM secara berurutan mulai alamat 1000
H, maka peta isi RAM sebagai berikut :
Kode
Operasi
SAP-2
memiliki lebar kode operasi 8 bit yang memungkinkannya untuk memiliki sampai
256 instruksi. Tidak semua kombinasi kode operasi didefinisikan instruksinya.
SAP-2 hanya memiliki 42 instruksi dan 1 instruksi kosong NOP (No Operation) :
Jenis
– jenis instruksi
Beberapa
instruksi memiliki kesamaan logika proses. Instruksi – instruksi yang memiliki
beberapa kesamaan dikumpulkan dalam satu jenis instruksi. Instruksi 42 buah
pada SAP-2 dapat dikategorikan pada beberapa jenis instruksi:
•
Instruksi Mengacu Memori (Memory
Reference Instruction, MRI)
•
Instruksi Register (Register
Instruction)
•
Instruksi Lompat dan Pemanggilan (Jump
and Call Instruction)
•
Instruksi Logika (Logic Instruction)
•
Instruksi lain – lain.
Siklus
Instruksi
Secara
garis besar, suatu instruksi diselesaikan dengan tiga tahap. Pengambilan
(fetch), penerjemah (decode) dan eksekusi (execute). Siklus pengambilan dalam
SAP-2 adalah sama dengan SAP-1 memerlukan tiga tahap yang meliputi tahap T1
(pengalamatan), tahap T2(penambahan pencacah program) dan tahap T3 (pengambilan
data dari memori). Akhir siklus pengambilan, kode operasi berada dalam register
instruksi.
Siklus
berikutnya penerjemahan kode operasi dilakukan oleh pengendali/pengurut. Hasil
penerjemahan instruksi menentukan kendali apa yang dikeluarkan (CON) oleh
pengendali pada tahap eksekusi.
2.4
Instruksi Mengacu Memori [Memori Reference Instruction, MRI]
LDA
(Load the Accumulator)
Instruksi LDA
berfungsi mengambil data memori alamat tertentu dan dipindahkan kedalam
akumulator.
Format
instruksi:
LDA alamat
Contoh
LDA 1500 H
Insturksi ini
memindahkan data memori alamat 1500 H ke dalam Akumulator.
STA
(Store the Accumulator)
Instruksi
STA mengambil data pada akumulator dan dipindahkan ke dalam memori alamat
tertentu.
Format
instruksi :
STA alamat
Contoh
STA 1501 H
MVI
(Move Immediate)
Instruksi
MVI adalah instruksi transfer data yang memindahkan 8 bit data ke dalam register.
Register yang terlibat sebagai operand adalah register A, B, dan C.
Format
instruksi:
MVI register, byte
Contoh
MVI A, 45 H
MVI B, 5E H
MVI C, F3 H
Setelah
ketiga instruksi ini dijalankan maka nilai register A=45 H, B = 5E H dan C = F3
H
2.5 Instruksi
Register [Register Instruction]
Instruksi
MRI elibatkan pengaksesan memori dua kali, yaitu pada saat siklus pengambilan
dan eksekusi. Proses pengaksesan memori memerlukan waktu yang lebih lama dari
pada pengaksesan register. Pada instruksi register proses perpindahan data
tidak menggunakan memori. Data dapat dipindahkan antar – register secara
langsung sehingga waktu proses lebih cepat.
MOV
(Move)
Instruksi
ini berfungsi menyalin data dari satu register ke register lain. Register –
register yang terlibat dalam instruksi ini adalah register A, B dan C.
Format
instruksi:
MOV
register, register
Contoh
MOV
A, B
Instruksi ini menyalin
data dari register B ke register A. Instruksi – instruksi MOV selengkapnya
sebagai berikut:
MOV
A, B
MOB
A, C
MOV
B, A
MOV
B, C
MOV
C, A
MOV
C, B
ADD
dan SUB (Substract)
Instruksi
register ini berfungsi menambah (ADD) atau mengurangi (SUB) nilai Akumulator
dengan nilai register tertentu dan hasilnya disimpan pada akumulator. Register
yang terlibat sebaga operand adalah register B dan C.
Format
instruksi
ADD register, SUB register
Contoh
ADD B
Setelah insstruksi ini
dieksekursi maka nilai A = A + B. Logika proses ini berlaku untuk instruksi –
instruksi lain yang sejenis, seperti :
ADD C ; A = A + C
ADD B ; A = A - B
ADD C ; A = A – C
INR
(Increment) dan DCR (Decrement)
Intruksi
register ini berfungsi menambahkan nilai 1 (INR) atau menurangkan nilai 1 (DCR)
pada register. Register yang terlibat sebagai operand adalah A, B dan C.
Format
instruksi:
INR register, DCR register
Contoh
INR A
Setelah intruksi ini
dieksekursi maka nilai A = A + 1. Logika proses ini berlaku untuk instruksi –
instruksi lain yang sejenis, seperti ;
INR B ; B = B + 1
INR C ; C = C + 1
DCR A ; A = A - 1
DCR B ; B = B - 1
DCR C ; C = C – 1
2.6
Instruksi Lompat dan Pemanggilan [Jump and Call Instruction]
JMP
(Jump)
Intruksi lompatan tidak
bersyarat. Prosesor langsung mengalihkan eksekusi program sesuai dengan alamat
tujuan lompatan.
Format instruksi
JMP alamat
Contoh
JMP 2500 H
Intruksi ini
memberitahu prosesor untuk menjalankan intruksi pada alamat 2500 H. Prosesor
ini mengubah nilai pencacah program dengan alamat 2500H.
Pencacah program ¬2500H
JM
(Jump if Minus)
Instruksi
lompat bersyarat. Prosesor akan memeriksa bendera (flag) sign keluaran dari ALU pada oerasi sebelumnya.
Jika bendera (flag) sign bernilai 1, artinya hasilnya negatif, maka lompatan
akan dilakukan. Jika sebaliknya maka lompatan tidak dilakukan
Sign flag = 0 jika
nilai Akumulator ≥ 0
Sign flag = 1 jika
nilai Akumulator < 1
Format intruksi
JM alamat
Contoh
Asumsi : nilai register A = 45 H, B = 10 H dan C = 60 h
SUB B ;
A = A – B = 45 H – 10 H =35
JM 1000 H
SUB C ;
A = A – C
JM 2600 H
Setelah
intruksi pertama dieksekusi nilai A positif. Pda instruksi berikutnya (JM
1000H) kondisi syarat untuk lompat tidak dipenuhi maka prosesor mengerjakan
instruksi berikutnya (SUB C).
JZ
(Jump if Zero)
Instruksi
lompat bersyarat. Prosesor akan memeriksa bendera (flag) Zero keluaran dari LAU
pada operasi sebelumnya. Jika bendera (flag) Zero bernilai 1, artinya hasilnya
nol, maka lompatan akan dilakukan. Jika sebaliknya maka nompatan tidak
dilakukan.
Zero flag = 0 jika
nillai Akumulator ≠ 0
Zero flag = 1 jika
nilai Akumulator = 0
Format instruksi
JZ alamat
Contoh
JZ 2500 H
Instruksi ini
memberitahu prosesor untuk menjalankan instruksi pada alamat 2500H jika bendera
nol (zero flag) bernilai 1.
JNZ
(Jump if not Zero)
Instruksi lompatan bersyarat. Prosesor akan
memeriksa (flag) Zero keluaran dari ALU sebelumnya. Jika flag Zero bernilai 0,
artinya hasilnya bukan 0, maka lompatan akan dilakukan. Jika sebaliknya maka
lompatan tidak dilakukan.
Format :
JNZ
alamat
Contoh :
JNZ
2500H
Instruksi ini
memberitahu prosesor untuk menjalankan instruksi pada alamat 2500H jika zero
flag bernilai 1.
CALL
Instruksi call the subroutine (panggil subrutin).
Subrutin
(subroutine) adalah suatu program yang disimpan dalam memori untuk digunakan
dalam program yang lain seperti perhitungan sinus, cosinus, tangen, logaritma,
akar-kuadrat, dsb.
Format :
CALL
alamat
Contoh
:
CALL
6000H
Misalnya,
jika sebuah subrutin logaritma berawal pada alamat 6000H maka eksekusi dari
instruksi CALL 6000H menghasilkan suatu lompatan ke subrutin logaritma.
2.7
Intruksi Logika [Logic Instruction]
Pada
ALU (Arithmetic and logical unit), sesuai dengan namanya, terdapat dua jenis proses
yang dikerjakan yaitu proses aritmetik dan proses logika. Proses logika adalah
proses yang didasarkan pada peraturan aljabar logika. Beberapa instruksi logika
adalah :
CMA
(Complement the Accumulator)
Eksekusi ini akan membalikkan setiap bit dalam
akumulator dan menghasilkan komplement –1 dari bilangan yang bersangkutan.
Format : CMA Contoh : Nilai awal akumulator A = 1001101 Setelah instruksi CMA A
= 0110010 16.
ANA
(AND the Accumulator)
AND-kan
isi akumulator dengan isi register tertentu, hasilnya disimpan dalam
akumulator. Format : ANA register Contoh : ANA B Misal A = 01100011 dan B =
10100110 Setelah ANA B, A = 00100010
ORA
(OR the Accumulator)
Intruksi
ini berfungsi meng-OR-kan isi akumulator dengan isi register. Register yang
dapat digunakan sebagai operand adalah register B dan C.
Format
intruksi
ORA register
Contoh
Misal nilai akumulator A= 00101100
dan B =00011001
Setelah instruksi ORA B nilai
akhirnya :
A = 00111101
XRA (XOR the Accumulator)
Intruksi
ini berfungsi meng-XOR-kan isi akumulator dengan isi register. Register yang
dapat digunakan sebagai operand adalah register B dan C.
Format
intruksi
XRA register
Contoh
Misal nilai akumulator A= 00101100 dan B =00011001
Setelah instruksi XRA B nilai akhirnya :
A = 00110101
ANI (AND Immediate the Accumulator)
Meng-AND-kan isi
Akumulator dengan suatu nilai.
Format :
ANI
byte
Contoh :
ANI
01001100
Misal
: A = 01101010 Setelah instruksi ANI, A = 01001000
ORI
(OR Immediate the Accumulator)
Meng-0R-kan isi
Akumulator dengan suatu nilai.
Format :
0RI
byte
Contoh :
Misal
: A = 00101100 Setelah instruksi ANI, A = 00111110
XRI
(XOR Immediate the Accumulator)
Meng-X0R-kan isi
Akumulator dengan suatu nilai.
Format :
XRI
byte
Contoh :
Misal
: A = 00101100 Setelah instruksi XRI, A = 00011110
2.8
Instruksi Lain – lain
.IN (Input)
Memindahkan data dari
Register masukan ke Akumulator.
OUT
(Output)
Memindahkan data dari
Akumulator ke Register keluaran.
HLT
Tanda
akhir dari program
BAB
III
Komputer
Sederhana SAP-3
(Simple
As Possible – 3)
3.1
Model Pemrograman
Komputer
SAP-3 merupakan pegembangan dari SAP-2. Cara kerja sistemnya tidak jauh
berbeda. Perbedaannya terletak pada jumlah register dan banyaknya instruksi. Register
baru yang terdapat pada SAP-3 adalah register SP (Stack Pointer) yang lebarnya
16 bit dan register D,E,H dan L yang masing – masing lebarnya 8 bit.
Tumpukan (Stack)
Tumpukan
adalah bagian dari memori yang disediakan untuk menangani penyimpanan data
sementara. Data disimpan dan diambil dengan disiplin LIFO (Last In First Out).
Tumpukan
ini dikeloa oleh suatu penunjuk yang nilainya disimpan dalam register SP (Stack
Pointer).
|
SP
|
|
D
|
|
C
|
|
H
|
|
L
|
|
16 bit
|
|
8 bit
|
|
8 bit
|
|
F
|
|
E
|
|
A
|
|
B
|
|
PC
|
3.2
Instruksi Pemindah Data
Instruksi
pemindahan data berguna untuk proses penyimpanan sementara suatu nilai.
Register yang bisa digunakan sebagai operand adalah register A, B, C , D, E, H,
atau L.
MOV(Move)
Instruksi untuk
memindahka data antar- register.
Format instruksi
MOV register, register
Contoh
MOV A, B
Instruksi ini
menyalin isi register B ke dalam register A, setelah instruksi berikut
dijalankan maka isi A = B
MVI (Move
Immediate)
Instruksi unti
memindahkan 8 bit data ke dalam register.
Format instruksi
MVI
register, byte
Contoh
MOV A, 4E H
Setelah
instruksi ini dilaksanankan maka register A = 4E H
3.3 Instruksi Aritmetika
Pada
saat Aritmetik dimungkinkan terjadi carry yaitu hasil operasi ALU melebihi
kapasitas penyimpanan.
Contoh:
Misal
A = 10001101
Pada
saat register A ditambahkan dengan isi suatu register, misal B = 110001101
Kita akan
memperoleh hasil akhirnya:
A 10001101
B 11000100
A 101010001
Terdapat
carry yang tidak dapat ditampung oleh register A.
3.4 STC (Set Carry) dan CMC (Complement Carry)
Carry
Flag dapat diakses langsung oleh pemrogram dengan menggunakan instruksi STC dan
CMC.
Format
instruksi
STC
CMC
Keduanya
instruksi tanpa operand.
ADD
Instruksi
untuk menambahkan nilai suatu register dengan akumulator dan hasilna disimpan
dalam akumulator.
Format
intruksi
ADD register
Contoh
Misal nilai register A = 00001101
dan B = 10010101
ADD B ; A = A+B + 00001101 +
10010101
; Carry = 0 dan A =
10100010
Intruksi
ini menjumlahkan isi B (10010101) dengan isi akumulator (00001101) dan hasilnya
disimpan dalam akumulator (10100010). Hasil operasi ini tidak menghasilkan
carry sehingga carry flag bernilai 0.
ADC (Add with Carry)
Instruksi
ini untuk menambahkan nilai suatu register dengan akumulator termasuk carry
hasil penambahan tersebut. Hasil akhirnya disimpan dalam akumulator.
Format intruksi
ADC
register
Contoh
Misal
nilai register A = 10001101 dan B = 10010101
ADC B ; A = A+B + 10001101 + 10010101
; Carry 1 dan A =
00100010
; A = A + carry =
00100010 + 1 = 00100011
Intruksi
ini menjumlahkan isi B (10010101) dengan isi akumulator (10001101) dan hasilnya
disimpan dalam akumulator (00100010). Operasi ini ternyata menghasilkan carry, maka tahap selanjutnya
akumulator dijumlahkan dengan carry. Diperoleh hasil akhir akumulator bernilai
00100011.
SUB (Substract)
Instruksi
ini untuk mengurangkan nilai suatu register terhadap akumulator dan hasilnya
disimpan dalam akumulator. Ketika terjadi peminjaman bilangan (borrow) karena
niai akumulator lebih kecil dari nilai register, maka carry flag akan di-set 1.
Pengertian carry dan borrow dalam hal ini berefek sama terhadap flag.
Format intruksi
SUB register
Contoh
SUB
B
Intruksi
ini akan mengurangkan nilai akumulator dengan isi register B. Jika hasilnya
negatif maka carry flag akan diset 1.
SBB (Substract with Borrow)
Intruksi
untuk mengurankan nilai stuatu tegister terhadap akumulator dengan menyertakan nilai pinjaman (borrow)
yang terdapat pada carry flag. Hasil akhirnya disimpang dalam akumulator.
Format intruksi
SBB register
Contoh
SBB
B
Intruksi
ini akan mengurangkan nilai akumulator dengan isi register. B yang telah
ditambah carry flag.
Misal register A = 00111000 dan B
=00010001 dan carry flag = 1
Pertama kali menjumlahkan register B
dengan carry flag
B = 00010001
00010010
Kemudian
hasilnya dikurangkan terhadap register A.
A
= 00111000
A
= 00100110
Hasil
akhir dari operai ini adalah Carry Flag = 0 dan A = 0010010
3. 5 INSTRUKSI LOGIKA
Instruksi-instruksi logika yang dimiliki SAP-3 hampir
sama dengan yang terdapat dalam SAP-2.
Sebagai contoh tiga diantaranya adalah :
ANA reg
ORA
reg
XRA
reg
Dengan reg = A,B,C,D,E,H atau L . Instruksi-instruksi
ini masing-masing menyebabkan terjadinya operasi AND, OR dan X OR antara isi register yang
ditentukan dengan isi akumulator secara bit dengan bit.
Instruksi logika yang baru hanyalah CMP, yang diberi
format sebagai berikut
CMP reg
dengan reg = A,B,C,D,E,H atau L. Instruksi CMP
membandingkan isi dari register yang
ditentukan dengan isi akumulator.
Bendera nol menunjukkan hasil dari pembandingan
ini menurut ketentuan :
SAP-3 melaksanakan operasi CMP sebagai berikut. Isi
akumulator disalin oleh register sementara (temporary register). Kemudian isi
dari register yang ditunjuk dikurangkan dari isi register sementara karena
operasi pengurangan dilaksanakan oleh ALU, maka bendera nol akan terpengaruh.
Jika 2 byte yang dibandingkan itu bernilai sama bendera nol akan diset. Jika
kedua byte itu berbeda, bendera nol akan tetap berada dalam keadaan reset.
Karena operasi tersebut mempergunakan register sementara, isi akumulator tidak
akan berubah dengan pelaksanaan instruksi CMP tersebut.
Sebagai contoh, jika
A
= F8H
D
= f8H
Dan Z
= 0
Maka eksekusi CMP menghasilkan :
A
= F8H
D = F8H
Dan Z
= 0
Instruksi CMP tidak berpengaruh pada A dan D; hanya
bendera nol yang akan berubah bilamana A dan B sama (jika tidak sama, Z akan
sama dengan 0).
CMP adalah suatu instruksi yang besar kegunaannya
karena instruksi ini memungkinkan perbandingan antara isi akumulator dengan
data didalam register tertentu. Kini kita dapat mengendalikan operasi loop
dengan cara yang baru; yaitu dengan memanfaatkan instruksi CMP bersama
instruksi lompatan nol bersyarat. Program-program selanjutnya akan
memperlihatkan pelaksanaan cara ini.
3.6 Instruksi Logika dan Aritmetika Segera
[Immediate instruction].
Sebegitu jauh kita telah mengenal instruksi-instruksi
aritmetik dan logika yang terdiri dari ADD, ADC, SUB, ANA, ORA, XRA dan CMP.
Setiap instruksi tersebut menggunakan akumulator sebagai register yang terlihat
dalam operasi, sedangkan data selalu berasal dari register lain yang ditentukan
(A,B,C,D,E,H atau L.
Instruksi-instruksi bersifat segera dari SAP-2, yang
berlaku pula bagi SAP-3, adalah ANI, ORI dan XRI. Masing-masing dinyatakan
dengan format.
ANI
byte
ORI
byte
XRI
byte
Menurut Instruksi-instruksi ini byte data yang segera
mengikuti Mnemonik bersangkutan itu akan di-AND-kan, di-OR-kan atau di-
XOR-kan dengan byte akumulator.
Disamping itu, SAP-3 memiliki instruksi-instruksi
bersifat segera yang lain yaitu :
ADI
byte
ACI
byte
SUI
byte
SBI
byte
CPI
byte
Instruksi ADI menjumlahkan byte dibelakangnya dengan byte akumulator. ACI menjumlahkan byte
dibelakangnya beserta isi bendera CY dengan byte akumulator. SUI mengurangkan
byte dibelakangnya dari byte akumulator. SBI mengurangkan byte dibelakangnya
beserta ini Bendera CY dari byte akumulator. CPI membandingkan byte yang tercantum dengan byte
akumulator jika kedua byte yang dibandingkan sama, bendera nol akan dipasang
(diset). Jika kedua byte itu tidak sama bendera nol akan tetap dalam keadaan
reset.
3.7 Instruksi Lompatan [Jump Instruction]
7 Instruksi Lompatan
Instruksi-instruksi lompatan SAP-2 yang menjadi bagian
dari perangkat instruksi SAP-3 ialah :
JMP
alamat (lompat tanpa syarat)
JM
alamat (lompat bila minus)
JZ alamat (lompat bila sama dengan nol)
JNZ
alamat (lompat bila tak sama dengan
nol)
Instruksi-instruksi lompatan yang lain dari SAP-3 akan
diuraikan dibawah ini.
JP
JM adalah singkatan dari Jump if minus (lompat bila
minus). Apabila program menemui instruksi JM alamat maka lompatan akan
terjadi menuju akamat yang ditentukan jika bendera tanda dalam keadaan set.
Instruksi
JP mempunyai efek yang berlawanan. JP adalah singkatan dari Jump if positif
(lompat bila positif, termasuk nol). Ini berarti bahwa
JP
alamat
Menghasilkan suatu lompatan ke alamat yang ditentukan
bilamana bendera tanda keadaan reset.
JC dan JNC
Instruksi JC alamat
Berarti melompat ke alamat yang ditentukan jika
bendera pindahan dalam keadaan set. Sengkatnya, instruksi JC menyatakan lompat
bila ada pindahan (jump if carry).
Demikian pula,
JNC
alamat
Berarti lompat ke alamat yang telah ditentukan jika bendera pindahan
tidak dalam keadaan set; yang berarti lompat bila tak ada pindahan (jumpif
no carry).
Berikut ini adalah sebuah segmen program yang
memberikan instruksi tentang instruksi JC dan JNC.
Label Instruksi Komentar
MVI
A,FEH
REPEAT: ADI
01H
JNC
REPEAT
MVI
A,C4H
JC
ESCAPE
ESCAPE: MOV
L,A
Instruksi MVI mengisi akumulator dengan FEH. Instruksi
ADI menambah angka 1 pada isi akumulator
sehingga isinya menjadi FFH. Karena tiddak ada pindahan yang terjadi, instruksi
JNC mengarahkan program kembali ke instruksi yang berlabel REPEAT. Dengan ini
ADI akan dilaksanakan untuk kedua kalinya. Kali ini, akumulator mengalami
pelimpahan dari berisi 00H dengan sebuah pindahan. Karena bendera CY dalam
keadaan set, program tidak mengalami lompatan dan diteruskan melalui JNC. Dalam
langkah berikutnya akumulator diisi dengan CAH. Selanjutnya JC
menghasilkan suatu lompatan ke instruksi
berlabel ESCAPE, dan dengan instruksi ini C4H diisikan ke dalam register L.
JPE dan JPO
Di samping bendera tanda, bendera nol, dan bendera
pindaha, SAP-3 memiliki bendera paritas
|
S
|
Z
|
0
|
0
|
0
|
P
|
0
|
CY
|
Gambar 12-5 Register Flag
(parity flag) yang diberi simbol P. Selama eksekusi beberapa instruksi tertentu
(seperti ADD, INR, dan sebagainya), hasil ALU diperiksa untuk menentukan
paritasnya. Bila hasilnya mengandung
angka 1 yang berjumlah genap, bendera paritas akan diset (dipasang);
jika hasil mengandung angka 1 yang berjumlah ganjik, bendera paritas akan
direset
Instruksi JPE alamat
Menghasilkan suatu lompatan ke alamat yang tercantum
bilamana bendera paritas dipasang (paritas ganjil). Sebagai contoh, misalkan
keadaan bendera-bendera adalah:
S = 1 Z = 0 CY
= 0 P = 1
Maka program akan melompat bila menjumpai suatu
instruksi JPE; akan tetapi program akan
mengalir terus (tidak melompat) bila menghadapi instruksi JPO.
Hingga
kini kita telah membahas semua bendera yang terdapat dalam komputer SAP-3.Guna
menyediakan kompatibilitas ke atas dengan mikroprosesor 8085, bendera-bendera
itu harus disimpan di dalam register F, seperti ditunjukkan dalam Gambar 12-5.
Sebagai contoh, bila isi register F adalah:
F
= 0100 0101
Maka kita ketahui bahwa keadaan bendera-bendera
adalah:
S = 0 Z = 1 P
= 1 CY = 1
3.8 Instruksi Register Diperluas [Extended Register
Instrucion]
Beberapa instruksi SAP-3 menggunakan pasangan register
CPU untuk memproses data 16-bit. Dengan kata lain, selama eksekusi instruksi-instruksi
tertentu, register-register CPU disusun dalam kaskade (susunan berderet),
seperti diperlihatkan dalam Gambar 12-6.Pembentukan pasangan register selalu
mengikuti ketentuan sebagai berikut: B berpasangan dengan C, D dengan E, dan H
dengan L. Apa yang akan diuraikan dalam pasal ini adalah instruksi-instruksi SAP-3 yang menggunakan pasangan
register (register pairs). Semua instruksi tersebut mengandung huruf X di
dalamnya, yang merupakan tanda bagi “extended register” (register yang
diperluas) yaitu pasangan register.
|
B
|
C
|
|
D
|
E
|
|
H
|
L
|
Gambar 12-6. Pasanga-pasangan Register
LXI
Karena ada tiga pasangan register (BC, DE, dan HL),
maka instruksi LXI (load extended immediate); artinya isi pasangan
register segera) akan mempunyai
format:
LXI
B, dble
LXI
D, dble
LXI
H, dble
Dengan B mewakili pasangan BC
D mewakili pasangan DE
H mewakili pasangan HL.
Dble menyatakan byte rangkap (double byte).
Instruksi LXI dipakai untuk mengisi pasangan register
tertentu dengan byte rangkap. Misalnya dalam pelaksanaan instruksi.
LXI
B,90FFH
Register B dan register C akan didisi dengan byte byte
atas dan byte bawah sehingga terjadi
B
= 90H
C
= FFH
Dengan membayangkan pasangan B dan C tersusun seperti
dalam Gambar 12-6, kita dapat menuliskan
BC
= 90FFH
DAD
DAD adalah singkatan dari double-edd (penjumlahan
rangkah). Instruksi ini mempunyai tiga format.
DAD
B
DAD
D
DAD
H
Dengan B mewakili BC
D mewakili DE
H mewakili HL
Dengan B mewakili BC
D mewakili DE
H mewakili HL
Instruksi DAD menjumlahkan isi dari pasangan register
tertentu dengan isi dari pasangan pasangan register HL. Hasil penjumlahannya
disimpan dalam pasangan register HL. Misalnya
BC
= F521H
HL
= 0003H
Maka eksekusi instruksi DAD B menghasilkan
HL
= f524H
Sebagaimana dapat anda diikuti; F521H dan 0003H
dijumlahkan menjadi f524H. Hasil ini disimpan dalam pasangan register HL.
Instruksi DAD mempengaruhi bendera CY. Bila ada
pindahan yang terdapat dalam pasangan register HL, maka bendera CY akan
dipasang; bila tidakk ada pindahan, bendera CY akan tetap berada dalam keadaan
reset. Sebagai contoh, misalkan
DE
= 0001
HL
= FFFFH
Eksekusi DAD D akan memberikan hasil:
HL
= 0000H
CY
= 1
Khususnya, instruksi DAD H menghasilkan penjumlahan
data dalam pasangan register HL dengan dirinya sendiri. Dengan kata lain, DAD H
menduakalikan nilai. Jika
HL
= 1234H
Maka sebuah instruksi DAD H menghasilkan
HL
= 2468H
INX dan DCX
INX berarti penambahan angka satu pada isi pasangan
register (inclement the extended register). Dan DCX menyatakan penurunan angka satu dari isi pasangan
register (descrement the extended register). Instruksi penambahan yang
diperluas ini terdiri dari
INX
B
INX
D
INX
H
Dengan B menyatakan BC
D
menyatakan DE
H menyatakan HL
Instruksi-instruksi DCX mempunyai format yang sama : DCX B, DCX D, dan DCXH.
Instruksi INX dan DCX tidak mempengaruhi bendera.
Sebagai contoh misalkan :
BC
= FFFFH
S
= 1
Z
= 0
P
= 1
CY
= 0
Maka eksekusi INX
B akan menghasilkan
BC
= 0000H
S
= 1
Z
= 0
P
= 1
CY
= 0
Perhatikan bahwa semua bendera tidak terpengaruh.
Dapat dirangkumkan bahwa instruksi-instruksi register
yang diperluas meliputi : LX1, DAD, INX
dan DCX. Dari tiga pasangan register itu, pasangan register HL merupakan
kombinasi yang bersifat khusus. Hal ini akan dijelaskan dalam pasal berikutnya.
3.9 Instruksi Tidak Langsung [Indirect Instuction]
Telah dibahas dalam bab 10, bahwa pencacah program
berfungsi sebagai penunjuk instruksi (inctruction pointer), yang
menunjukkan lokasi memori dari instruksi tersimpan yang berikutnya.
Berbeda dengan pasangan register HL ; isinya menunjukkan lokasi-lokasi memori
dari data tersimpan. Dengan kata lain SAP-3 memiliki beberapa instruksi yang
menggunakan pasangan register HL sebagai penunjuk data (data pointer)
Visualisasi Penunjuk
HL
Gambar 12-7a memperlihatkan sebuah memori 64K; yang
memiliki 65.536 register memori atau lokasi memori penyimpan data. Lokasi
memori yang pertama adalah M0000H, berikutnya M0001H dan
seterusnya. Lokasi memori dengan alamat HL adalah MHL.
Pada beberapa instruksi
SAP-3, isi dari pasangan register HL
digunakan sebagai alamat data yang
tersimpan dalam memori. Yaitu, isi pasangan register HL dikirimkan kepada MAR,
dan kemudian suatu operasi membaca atau menulis memori dilaksanakan. Jadi,
seolah-olah pasangan register HL itu merupakan penunjuk lokasi memori
yang diinginkan, sebagaimana diperlihatkan dalam gambar 12-7a.
Sebagai
contoh, misalkan
HL
= 2050H
Bila HL berperan sebagai penunjuk, maka isinya (2050H)
akan dikirimkan ke MAR selama satu keadaan T. Pada keadaan T berikutnya, lokasi
memori beralamat 2050H dikenakan operasi membaca atau menulis. Seperti
diperlihatkan oleh gambar 12-7b, pasangan register HL menunjuk kepada lokasi
memori yang dikehendaki.
Pengalamatan Tak Langsung
Dengan pengalamatan langsung seperti LDA 5000H
dan STA 6000H, seorang pemrogram mengetahui alamat dan dari lokasi
memori karena instruksi itu sendiri secara langsung mencantumkan alamat tersebut.
Namun dengan instruksi yang menggunakan penunjuk HL, pemrpograman tidak mengetahui
alamat yang bersangkutan; yang ia ketahui adalah bahwa alamat tersimpan dalam
pasangan register HL. Bilamana suatu instruksi menggunakan penunjuk HL, maka
pengalamatan seperti ini disebut pengalamatan tak langsung (indirect addressing).
Pembacaan Tak Langsung
Salah satu dari instruksi-instruksi tak langsung
adalah
MOV
reg, M
Dengan reg =
A,B,C,D,E,H atau L
M = MHL
Instruksi ini mengisi register tertentu dengan data
yang alamatnya ditunjukkan oleh HL. Setelah eksekusi instruksi tersebut ,
register itu akan berisi MHL
Sebagai contoh, misalkan
HL =
3000H dan M3000H = 87H
Gambar12-8. Contoh Pengalamatan tak langsung
Maka eksekusi
MOV C,M
Menghasilkan
C
= 87H
Gambar 12-8a memperlihatkan cara visualisasi dari
eksekusi instruksi MOV C,M. penunjuk HL menunjuk pada data 87H, yaitu data yang
dibaca untuk dimasukkan kedalam register C
Penulisan Tak Langsung
Instruksi MOV tak langsung yang lain adalah
MOV
M, reg
Dengan M = MHL
Reg = A, B, C, D, E, E, H, atau L
Instruksi ini akan mengisi lokasi memori yang
alamatnya ditunjuk oleh HL, dengan isi dari register tertentu. Setelah eksekusi
instruksi tersebut, kita akan mendapatkan
MHL
= reg
Sebagai contoh, misalkan
HL
= E300H
B
= F2H
Maka eksekusi dari MOV M,B menghasilkan
ME3000H
= F2H
Gambar 12-8c memberikan ilustrasi dari operasi yang
bersangkutan
Instruksi Segera Tak Langsung
Kadang-kadang kita ingin menuliskan data segera (immediate
data) ke dalam lokasi memori yang dialamatkan oleh penunjuk HL. Instruksi
yang digunakan dalam hal ini ialah
MVI
M, byte.
Jika dimisalkan HL = 3000H, maka eksekusi dari
MVI
M,87H
Akan menghasilkan
M3000H
=87H
3.10 Instruksi Tumpukan [Stack Instruction]
Suatu tumpukan (stack) adalah bagian dari
memori yang disediakan terutama bagi penyimpanan alamat-kembali. SAP-2 memiliki
sebuah tumpukan sebab alamat FFFEH dan FFFH semata-mata hanya dipakai untuk
menyimpan alamat-kembali dari suatu pemanggilan subrutin. Gambar 12-9a memperlihatkan
cara visualisasi tumpukan SAP-2.
Pada SAP dijumpai struktur tumpukan yang berbeda.
Pemrograman dapat memutuskan dari awal, dimana menempatkan lokasi tumpukan dan
berapa besar tumpukan yang akan dipakainya. Sebagai contoh, Gambar 12-9b
memperlihatkan suatu tumpukan yang beralamat anatara 20E0H dan 20FFH. Tumpukan
ini mengandung 32 lokasi memori guna menyimpan alamat kembali. Para pemrogram
dapat menempatkan lokasi tumpukan dimana saja dalam memori, akan tetapi sekali
tumpukan telah ditentukan, mereka tidak dapat lagi menggunakan bagian memori
itu untuk menempatkan program dan data.
Sebaliknya, tumpukan menjadi suatu daerah khusus di dalam memori, yang
digunakan sebagai tempat penyimpanan alamat kembali dari instruksi panggilan
subrutin.
Penunjuk
Penumpukan
Instruksi-instruksi yang melaksanakan pembacaan dan
penulisan ke dalam tumpukan disebut instruksi tumpukan (stack instructions).
Ini meliputi: PUSH, POP, CALL dan lain-lainnya yang akan dibicarakan. Instruksi
tumpukan menggunakan pengalamatan tak langsung karena adanya register 16-bit
dengan sebutan penunjuk tumpukan (stack pointer, disingkat SP), yang
menahan (menyimpan sementara) alamat dari lokasi memori yang dikehendaki.
Sebagaimana ditunjukkan dalam Gambar 12-9c, penunjuk tumpukan berfungsi serupa
dengan penunjuk HL karena isi penunjuk tumpukan itu menunjukkan lokasi memori
yang hendak diakses. Andaikan
SP
= 20FFFH
Gambar 12-9. (a) Tumpukan SAP 2 (b) Contoh Tumpukan (c) Petunjuk Tumpukan (d) SP menunjuk ke
20FFH
Penunjuk tumpukan menunjuk ke lokasi memori M20FFH
(lihat Gambar 12-9d). Bergantung pada instruksi tumpukan, sebuah byte akan
dibaca dari, atau dituliskan ke dalam lokasi memori tersebut.
Untuk inisialisasi penunjuk tumpukan, kita dapat
menggunakan instruksi “isi segera”
LXI SP, dble
Misalkan, jika kita menggunakan instruksi
LXI
SP,20FFH
Maka penunjuk tumpukan akan diisi dengan 20FFH.
PUSH
Isi dari akumulator dan register bendera dikenal
sebagai kata status program (program status word, disingkat PSW). Format
untuk kata ini:
PSW
= AF
Dengan A = Isi akumulator
F = isi register bendera
Isi akumulator merupakan byte tinggi, dan isi register
bendera merupakan byte rendah. Dalam pemanggilan subrutin, biasanya kita harus
menyimpan kata status program, sehingga program utama dapat berlanjut lagi
setelah subrutin selesai dieksekusi. Kita juga diperbolehkan menyimpan isi
register-register yang lain.
Instruksi PUSH (dorong) dipakai guna menyimpan
data dalam suatu tumpukan. Berikut ini adalah empat instruksi PUSH yang tersedia.
PUSH
B
PUSH
D
PUSH
H
PUSH
PSW
Dengan B mewakili BC
D mewakili DE
H mewakili HL
PSW
mewakili kata status program.
Bila instruksi OUSH dilaksanakan, maka akan terjadi
hal-hal sebagai berikut:
1.
Penunjuk
tumpukan dikurangi satu untuk memperoleh harga baru yaitu SP-1
2.
Byte tinggi
dalam pasangan register tertentu disimpan di dalam MSP-1
3.
Penunjuk
tumpukan tumpukan diturunkan lagi menjadi SP-2
4.
Byte rendah dari
pasangan register tersebut disimpan di dalam MSP-2
Sebagai contoh, misalnya
BC = 5612H
SP = 2100H
Bila PUSH B dilaksanakan,
maka
1.
Penunjuk
tumpukan diturunkan menjadi 20FFH.
2.
Byte tinggi 56H
disimpan pada lokasi 20FFH (Gambar 12-10a)
3.
Penunjuk
tumpukan diturunkan lagi menjadi 20FEH
4.
Byte bawah 12H
disimpan pada lokasi 20FEH (Gambar 12-10b)
Sebagai contoh yang lain, umpamakan
SP
= 2100H
AF
= 1234H
DE
= 5678H
HL
= 9A25H
Maka eksekusi dari
PUSH
PSW
PUSH
D
PUSH
H
Akan mengisi tumpukan sebagaimana diperlihatkan dalam
GAMBAR 12-10c. PUSH pertama menyimpan 12H pada lokasi 20FFH dan 34H pada lokasi
20FEH. PUSH berikutnya menyimpan 56H pada lokasi 20FDH dan 78H pada 20FCH. PUSH
terakhir menyimpan 9AH pada lokasi 20FBH dan 25H pada lokasi 20FAH. Perhatikan
bagaimana tumpukan itu disusun; setiap PUSH yang baru akan mendorong data ke
dalam tumpukan.
POP
Terdapat
empat instruksi POP (sembulan)
POP B
POP D
POP H
POP PSW.
Gambar 12-10
Dengan
B mewakili BC
D mewakili DE
H mewakili HL
PSW mewakili kata status program
Sebagai
akibat pelaksanaan instruksi POP akan berlangsung hal-hal berikut :
1.
Byte
rendah dibaca dari lokasi memori yang dialamati oleh penunjuk tumpukan. Byte
ini disimpan di bagian bawah dari
pasangan register yang ditentukan
2.
Penunjuk
tumpukan ditambah dengan angka satu
3.
Byte
tinggi dibaca dan disimpan di bagian
atas dari pasangan register yang ditentukan itu
4.
Penunjuk
tumpukan ditambah dengan angka satu.
Urutan operasi di atas akan diperjelas
melalui contoh di bawah ini.
Andaikan tumpukan terisi seperti dalam Gambar 12-10c dengan penunjuk tumpukan berada pada 20F AH. Maka eksekusi POP B akan menyebabkan hal-hal sebagai berikut :
1.
Byte
25H dibaca dari lokasi 20 F AH (Gambar
12-10c)) dan disimpan di
dalam register C
2.
Penunjuk
tumpukan ditambah dengan satu sehingga
menjadi 20FBH byte 9AH dibaca dari
lokasi 20FBH (Gambar 12-10d) dan disimpan di dalam register B. Pasangan register
BC sekarang berisi
BC
= 9A25H
3.
Penunjuk tumpukan ditambah dengan satu menjadi 20FCH (Gambar 12-10e)
Setiap
kali kita melaksanakan sebuah instruksi POP-2 byte data akan menyembul keluar
dari tumpukan, Bila instruksi POP PSW dan POP H dilaksanakan dalam Gambar 12-10e,
isi register terakhir akan menjadi
AF = 5678H
HL = 1234H
Dan
penunjuk tumpukan akan berisi
SP = 2100H
BAB IV
PROSESOR DLX
4.1 Pengertian Processor DLX
Prosesor DLX adalah prosesor dengan tujuan umum (general purpose
prosessor) yang dirancang oleh John Hennssy dan David Peterson (desainer utama
dari MIPS dan RISC Berkeley, dua contoh
Benchmark desain RISC)
dalam bukunya “Computer
Architecture A Quantitative Approach” pada tahun 1996.
Prosesor DLX pada dasarnya adalah versi sederhana dari arsitektur MIPS dan
sangat mirip dengan itu, dengan 32-bit sederhana load arsitektur. Arsitektur
dan instruksinya tidak terlalu rumit tapi sudah mewakili komputer modern yang
lengkap. Prosesor DLX adalah prosesor yang bertipe-RISC (Reduce Instruction Set
Computer) yang memiliki 32 buah register dengan masing-masing panjangnya 32
bit. Dua buah register mempunyai fungsi khusus, yaitu register 0 selalu
bernilai nol. Register ini digunakan sebagai operand sumber jika memerlukan
nilai nol. DLX juga memiliki program counter dengan panjang 32 bit.
4.2 Arsitektur Prosesor DLX
Prosesor DLX menggunakan arsitektur ambil-simapan (load-store)
dengan lima tahap pipeline (seperti desain MIPS ) untuk meneyelesaikan suatu
instruksi. Kelima tahap tersebut adalah:
Instruction Fetch (IF), Instruction Decode (ID), Execute (EX),
Memory Access (MEM), dan Write Back (WB). Manfaat dari rancangan ini adalah
ketika proses fetch instruksi dari memori akan lebih mudah. Pengambilannya pun
dilakukan dengan membaca 4-byte data dalam memory.
Lima komponen utama prosesor DLX masing-masing memiliki fungsi
yang berbeda yaitu :
1. PC (Program Counter)
: register yang berfungsi menampung nilai yang digunakan untuk meniunjuk alamat
instruksi yang akan dieksekusi. Register ini merupakan offset dari alamat dasar
instruksi sekaligus data.
2. Memori : terdiri dari
dua bagian yaitu memori untuk instruksi yang berisi kumpulan seluruhinstruksi
dan memori untuk data yang berfungsi untuk menyimpan data.
3. Register : kumpulan
register 32 bit tempat menyimpan nilai semsntara.
4. ALU (Arithmatic and
Logical Unit) : tempat dilakukannya operasi aritmatika dan logic.
5. Unit Kendali (Control
Unit) : unit kendali terdiri dari dua bagian yaitu register
instruksi(instruction register): register
tempat menyimpan sementara
instruksi, dan pengendali(controller): bagian yang
menerjemahkan instruksi dan mengeluarkan set kendali pada seluruh register untuk
menjalankan suatu instruksi.
Prosesor ini merupakan prosesor dengan sistem yang berorientasi
pada 32-bit word. Maksudnyaadalah CPU mengandung ALU 32-bit, 32 buah Register
dengan panjang 32 bit dalam registerfile, tiga buah bus 32-bit, register khusus
masing-masing 32-bit (PC, IR, MAR, MDR, IAR,TEMP) dan tiga buah register (A,B
dan C)
4.3 Format Instruksi DLX
Ada tiga format instruksi di DLX : Tipe-R, Tipe-I, dan Tipe-J.
Semua format instruksi dibedakan oleh kode operasi (operation code-opcode),
namun informasi lain dalam instruksi bervariasi menurut format.
1.Tipe-R (register)
Instruksi menetapkan tiga register pada instruksi, dua register
sumber dan satu register tujuan terdapat dalam 32-bit word.
Bagian-bagian instruksi
tipe-R :
•
Kode opersai : 6 bit
dari bit 0 – 5
•
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
2.Tipe-I (Immediate)
Instruksi membutuhkan dua register dalam sebuah intruksi
yaitu satu register sumber, satu
register tujuan, dan 16-bit.
Bagian-bagian instruksi tipe-I :
•
Kode operasi : 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 hanya terdiri dari :
Kode operasi (opcode) : 6 bit dari 0 – 5
Alamat (operand) : 26
bit dari 6 – 31, yang digunakan untuk menghitung alamat tujuan
4.4 Hambatan Pipeline DLX
Terdapat situasi, disebut hazard (risiko), yang mencegah instruksi
berikutnya dalam rangkaian instruksi pada proses eksekusi selama siklus clock
yang ditandainya. Hazard mengurangi kinerja kecepatan ideal yang dicapai oleh
pipelining. Terdapat tiga kelas hazard:
a. Data hazard
disebabkan oleh data yang diperlukan pada proses selanjutnya masih harus
Menunggu nilai terbaru dari proses sebelumnya.
b. Structure
hazard diakibatkan oleh
tidak bisanya menulis dan
membaca register secara bersamaan. Masalah ini terjadinya
akibat konflik sumber daya pada saat perangkat keras tidak dapat mendukung
semua kemungkinan kombinasi instruksi dalam eksekusi yang simultan.
c. Control hazard
terjadi akibat terjadinya proses pencabangan, sehingga prosesor
mengalami kesulitan untuk menentukan tahap IF berikutnya, ketika harus menunggu
hasil perbandingan operand instruksi pencabangan. Masalah ini timbul dari
pipelining pencabangan dan instruksi
lain yang mengubah PC. Hazard dalam
pipeline menyebabkan pipeline harus melakukan stall. Dalam mengatasi hazard
sering kali perlu
diizinkan untuk memroses
beberapa instruksi dalam
pipeline, sementara instruksi
lain harus menunggu (delay). Pada saat sebuah instruksi di-stall, semua
instruksi yang keluar sesudah instruksi tersebut di-stall juga. Instruksi yang
muncul sebelum instruksi yang di- stall
harus terus mengikuti proses
pipeline. Hasilnya, tidak ada instruksi baru yang di-fetch selama stal
BAB V
VHDL-Bahasa
Pemodelan Perangkat Keras
5.1 Pengertian VHDL
VHDL singkatan dari VHSIC Hardware Description Language dan
merupakan sebuah bahasa pemrograman yang digunakan untuk mendefinisikan
hardware elektronika digital. Pada pertengahan tahun 80’an, Departemen
Pertahanan US dan IEEE mensponsori pengembangan bahasa pemrograman ini dengan
tujuan untuk mengembangkan VHIC. Saat ini, VHDL telah menjadi salah satu bahasa
standar industri elektronika yang digunakan untuk menggambarkan sistem digital.
Meskipun sepintas terlihat sama, ada beberapa hal yang
membedakan VHDL dengan bahasa pemrograman lain pada umumnya. VHDL berhubungan
dengan gerbang logika dimana setiap perintah dieksekusi secara parallel dengan
segera saat adanya inputan. Sebuah program HDL meniru perilaku fisik, biasanya
digital, sistem. Hal ini juga memungkinkan penggabungan spesifikasi waktu
(gerbang penundaan) serta untuk menggambarkan sistem sebagai suatu interkoneksi
dari berbagai komponen.
5.2 Arsitektur mode port VHDL
Ports
Sebuah cara atau metode untuk menghubungkan entity secara bersama adalah
menggunakan PORTS. Hal ini didefinisikan bahwa entity menggunakan metode
sebagai berikut: port ( …list of port declarations… ); Deklrasi port ini
mendefinisikan jenis dari koneksi dan arah yang sesuai. Misalnya, deklarasi
port untuk sebuah input bit adalah 1, maka digambarkan sebagai berikut : in1 :
in bit; Dan jika model tersebut memiliki 2 input (in1 dan in2) dan satu output
(out1), maka deklarasi ports dapat digambarkan beriku: port ( in1, in2 : in
bit; out1 : out bit ); Dengan menngunakan ports maka titik koneksi diantara
entities akan berlangsung dengan efektif dalam hal proses koneksi entities satu
sama lain. Selain itu, dengan menggunakan ports akan menjadikan sinyal yang ada
menjadi efektif serta cocok digunakan dalam model VHDL.
Mode port dalam vhdl:
.In: sinyal masuk hanya bias dibaca
.out: sinyal keluar,hanya bias ditulis
.buffer: sinyal data dibaca dan hanya memiliki 1 driver
.inout: sinyal dua arah dapat ditulis maupun dibaca
.In: sinyal masuk hanya bias dibaca
.out: sinyal keluar,hanya bias ditulis
.buffer: sinyal data dibaca dan hanya memiliki 1 driver
.inout: sinyal dua arah dapat ditulis maupun dibaca
Deklarasi
Komponen VHDL:
Pada bagian ini akan dibahas fungsi komonen dalam arsitektur,pada contoh berikut entitas Full_Adder dapat dturunkan langsung dari CARRY_IN bersama dengan sinyal SUM dan CARRY yang berperan sebagai keluaran.
Pada bagian ini akan dibahas fungsi komonen dalam arsitektur,pada contoh berikut entitas Full_Adder dapat dturunkan langsung dari CARRY_IN bersama dengan sinyal SUM dan CARRY yang berperan sebagai keluaran.
Full_Adder
ini terdiri dari beberapa submodule yang harus didefinisikan terlebih dahulu
dalam deklarasi komponen semua tipe modul yang akan digunakan harus
dideklarasikan. Deklasi ini harus dilakukan sebelum kata kunci ‘begin’
Deklarasi
komponen dapat dibandingkan dengan definisi soket yang dapat digunakan sekali
atau beberapa kali dan disisipkan kemudian pada entitas yang sesuai. Dalam
contoh dibawah ini hanya ada dua soket yang berbeda nama soket HALF_ADDER dan
0R_GATE nama lain yang dapat digunakan tetapi lebih baik menggunakan nama entitas
yang akan digunakan kemudian untuk memudahkan membaca.
5.3 Konfigurasi VHDL
Konfigurasi:
Tugas dan Aplikasi Keterhubungan antara entitas dan arsitektur yang digunakan
pada simulasi, pada awalnya dibangun dalam konfigurasi. Konfigurasi adalah
object VHDL yang disimulasikan atau disintesis. Nama komponen harus sesuai
dengan nama entitasnya. Nama port, mode dan tipe data harus serupa-urutan port
dalam deklarasi komponen dibaikan. Contoh berikut menunjukkan konfigurasi dasar
untuk arsitektur struktural. Terdapat simulator yang mengharuskan adanya
definisi konfigurasi yang eksplisit untuk jenis entitas level-atas ini.
Konfigurasi mengacu pada entitas tertentu, pada contoh ini FULL_ADDER.
Arsitektur STRUCT dipilih dengan statemen ‘for’ yang pertama. Ketika tidak ada
perintah konfigurasi tambahan diberikan digunakan aturan asal untuk semua
komponen.
Konfigurasi: Contoh Berikut ini
contoh rinci kode VHDL untuk memahami konfigurasi yang lebih rinci: Pada bagian
akhir, Full_adder akan disimulasikan lagi. Struktur Full_adder ini sama dengan
contoh sebelumnya, yaitu menggunakan dua buah half-adder. Setiap half _adder
yang dideklarasi kan memiliki dua sinyal tipe data ‘bit’ sebagai input dan
output, berturut-turut. Port komponen dihuubungkan dengan sinyal arsitektur
berdasarkan asosiasi posisi, yaitu sinyal pertama dihubungkan dengan port
pertama. Di sini digunakan dua entitas A dan B yang juga memiliki nama
arsitektur yang berbeda RTL dan GATE. Kedua entitas tersebut sesuai dengan port
pada deklarasi komponen.
Konfigurasi: Contoh 2 Entitas dan
arsitekture untuk komponen yang ada di bawahnya diplih dalam liupan ‘for’ pada
statemen for Nama pertama setelah kata kunci ‘for’ adalah nama instantiasi
komponen, diikuti oleh ’:’ (titik dua) dan nama komponennya. Kata kunci ‘all’
dapat digunakan juga jika semua instantiasi komponen akan disebutkan. Dalam
liupan ‘for’, statement yang digunakan memilih entitas dengan menentukan jalur
absolut ke objek. Tanpa perubahan eksplisit, semua objek VHDL dikompilasi ke
dalam librari kerja. Arsitekture untuk entitas yang dipilih ditutup dengan
sepasang ‘(‘dan’)’. Ketika nama port entitas B tidak sama dengan nama port dari
deklarasi komponen, maka diperlukan statemen port map. Dimungkinkan juga untuk
memetakan nama dangan asosiasi posisi maupun asosiasi nama. Asosiasi nama lebih
disarankan untuk memudahkan pembacaan. Dalam kasus ini, parameter formal adalah
nama port entitas, sementara nama port komponen digunakan sebagai parameter
aktual.
Perwujudan
Komponen: Asosiasi Penamaan Sinyal Selain menggunakan asosiasi posisi seperti
yang telah dijelaskan sebelumnya kita mungkin juga memetakan port berdasar
asosiasi nama. Pada asosiasi penamaan urutan sinyal tidak kaku, tidak harus
tetap. Nama port dari deklarasi komponen atau disebut ‘formal’, diasosiasikan
dengan menggunakan tanda ‘=>’ dengan sinyal entiras (‘actual’). Dalam contoh
berikut , port keluaran SUM dideklarasikan pada urutan ketiga dalam deklarasi
komponen. Dalam statemen port map, port ini dihubungkan dengan sinyal W_SUM
pada tempat kedua.
No comments:
Post a Comment