Pada postingan saya terdahulu saya sudah mencoba untuk membuat
bagaimana penjumlahan data di komputer IAS. Nah, pada kesempatan ini saya akan
mencoba untuk membuat program pada komputer IAS untuk melakukan operasi
perkalian data yang ada di memori alamat 0551 dengan data di memori alamat
0552. Hasil dari prkalian tersebut disimpan ke dalam memori (MSB dialamat 0556
dan LSB dialamat 0557). Kemudian menjumlahkan data LSB hasil perkalian tersebut
dengan isi memori alamat 0553. Dari
hasil penjumlahan tersebut hasilnya disimpan kembali di alamat 0559. Tapi,
sebelumnya perhatikan dulu apa saja register komputer IAS dan bagaimana struktur
detail dari komputer IAS itu sendiri.
Register Komputer IAS.
- Memory buffer register (MBR) : berisi data yang akan disimpan di memori, atau digunakan untuk menerima data dari memori.
- Memory address register (MAR) : berisi alamat memori suatu data yang hendak ditulis dari MBR atau dibaca ke MBR.
- Instruction register (IR) : berisi 8 bit kode instruksi yang hendak dieksekusi.
- Instruction buffer register (IBR) : tempat menyimpan instruksi sementara.
- Program counter (PC) : berisi alamat dari instruksi yang hendak diambil dari memori.
- Accumulator (AC) dan multiplier quotient (MQ) : tempat penyimpanan sementara operand dan hasil operasi ALU.
-
Struktur
Detail Komputer IAS.
Gambar 1: Struktur
Detail Komputer IAS
Program dengan bahasa komputer
IAS:
- LOAD MQ, M (0551)
- MUL M (0552)
Penjelasan:
Instruksi ini untuk mengaalikan M(0552) dengan MQ yang kemudian hasilnya didua
tempat yaitu Most Significant Bit (MSB) atau bit yang paling berarti yang
letaknya paling kiri yang mempunyai harga tempat paling besar disimpan di AC
dan Least Significant Bit (LSB) atau bit yang kurang berarti yang letaknya
paling kanan yang mempunyai harga tempat paling kecil disimpan di MQ. Jadi,
pada instruksi ini AC = MSB (A*B), sedangkan MQ = LSB (A*B).
- STOR M (0556)
Penjelasan: Instruksi
ini digunakan untuk mentransfer isi AC ke memori alamat (0556). Jadi, pada
instruksi ini M(0556) = AC = MSB (A*B)
- LOAD MQ
Penjelasan: Instruksi
ini digunakan untuk mentransfer isi
register MQ ke AC. Jadi, pada instruksi ini AC = MQ = LSB (A*B)
- STOR M (0557)
Penjelasan:
Instruksi ini digunakan untuk mentransfer isi AC ke memori alamat (0557). Jadi,
pada instruksi ini M(0557) = AC = LSB (A*B)
- LOAD M (0557)
Penjelasan:
Instruksi ini digunakan untuk mentransfer isi memori alamat (0557) ke AC. Pada
instruksi ini AC = M (0557) yang artinya AC sekarang berisi nilai dari memori
alamat (0557) yang isinya adalah LSB (A*B). Jadi, AC = LSB (A*B).
- ADD M (0553)
Penjelasan:
Instruksi ini digugakan untuk menjumlahkan isi memori alamat M (0553) dengan
AC, yang kemudian hasil dari penjumlahan itu akan disimpan di AC. Jadi, pada
instruksi ini AC = AC + C, => AC = LSB (A*B) + C.
- STOR M (0559)
Penjelasan:
Instruksi ini digunakan untuk mentransfer isi dari AC ke memori alamat (0559).
Jadi, pada instruksi ini M(0559) = AC = LSB (A*B) + C.
Jadi, begitulah program dengan bahasa komputer IAS untuk
kasus operasi di atas. Untuk lebih jelasnya kasus operasi di atas dapat
digambarkan peta memorinya yaitu untuk memperlihatkan dimana program dan data
diletakkan. OK, Langsung saja gambaran peta memorinya dapat dilihat pada Gambar
2 dibawah ini.
Gambar 2: Peta Memori
Kemudian biar lebih mudah lagi untuk memahami bagaimana
fungsi komputer, pada kasus diatas terdapat dua langkah untuk pengolahan
instruksi dalam bentuk yang paling sederhana yaitu prosesor membaca instruksi
dari memori, satu persatu setiap waktu (Fetch) dan eksekusi setiap instruksi (Execute).
Nah, eksekusi suatu program merupakan pengulangan proses fetch dan execute
intruksi saja. Untuk lebih jelasnya bagaimana urutan instruction cycle yaitu
fetch cycle dan execution cycle bisa dilihat pada penjelasan berikut ini.
Urutan instruction cycle fetch cycle dan execution cycle:
Ø
FETCH 1
· PC = 0011
· PC -> MAR, yang artinya MAR = PC = 0011
· M(MAR) = M(0011) -> MBR, yang artinya isi
dari memori alamat (0011) ditransfer ke MBR, yang berisi instruksi – instruksi yang
dapat digambarkan sebagai berikut
MBR (20:39) -> IBR, artinya instruksi yang
berada di MBR(20:39) disimpan sementara di IBR, jadi pada instruksi ini IBR =
MBR(20:39) = MUL M (0552)
· MBR (0:7) -> IR, artinya instruksi yang
berada di MBR (0:7) yang terdiri atas 8 bit code ditransfer ke IR yang hendak
dieksekusi. Sehingga, IR = MBR (0:7) = LOAD MQ, M
· MBR (8:19) -> MAR, artinya alamat yang ada di
MBR (8:19) dibawa ke MAR yang hendak ditulis dari MBR atau dibaca ke MBR.
Sehingga MAR = MBR (8:19) = M (0551)
Ø
EXECUTE 1
· M(0551) -> MBR, artinya pada instruksi ini,
isi dari M(0551) di transfer ke MBR. Sehingga, MBR = M(0551) = A
· Karena instruksi yang dieksekusi adalah LOAD MQ,
M (0551), Maka MQ = M(0551), artinya isi dari M(0551) akan ditransfer ke MQ.
Sehingga, MQ = M (0551) = A
Ø
FETCH 2
· IBR (0:7) -> IR, artinya upcode yang
sebelumnya tersimpan di IBR ditransfer ke IR untuk dieksekusi. Jadi, IR = IBR (0:7)
= MUL
· IBR (8:19) -> MAR, artinya alamat memori yang
sebelumnya tersimpan di IBR ditransfer ke MAR. Sehingga, MAR = M(0101).
· PC = PC + 1, untuk pindah ke alamat memori
selanjutnya. Sehingga, PC = 0011 + 1 = 0012
Ø
EXECUTE 2
· M(0552) -> MBR, artinya nilai yang ada di
alamat M(0101) ditransfer ke MBR. Jadi, MBR = M (0552) = B
· Karena instruksi yang dieksekusi adalah MUL,
maka (MQ * M(0552)) = (A * B) dan AC = MSB (A * B), sedangkan MQ = LSB (A * B).
Ø
FETCH 3
· PC = 0012
· PC -> MAR, yang artinya MAR = PC = 0012
· M(MAR) = M(0012) -> MBR, yang artinya isi
dari memori alamat (0012) ditransfer ke MBR, yang berisi instruksi – instruksi yang
dapat digambarkan sebagai berikut.
· MBR (20:39) -> IBR, artinya instruksi yang
berada di MBR(20:39) disimpan sementara di IBR, jadi pada instruksi ini IBR =
MBR(20:39) = LOAD MQ
· MBR (0:7) -> IR, artinya instruksi yang
berada di MBR (0:7) yang terdiri atas 8 bit code ditransfer ke IR yang hendak
dieksekusi. Sehingga, IR = MBR (0:7) = STOR
· MBR (8:19) -> MAR, artinya alamat yang ada di
MBR (8:19) dibawa ke MAR yang hendak ditulis dari MBR atau dibaca ke MBR.
Sehingga MAR = MBR (8:19) = M (0556)
Ø
EXECUTE 3
· M(0556) -> MBR, artinya pada instruksi ini,
isi dari M(0556) di transfer ke MBR. Sehingga, MBR = M(0556) = MSB (A * B)
· Karena instruksi yang dieksekusi adalah STOR M (0556),
Maka MQ = M (0556), artinya isidari M(0556) akan ditransfer ke AC. Sehingga, AC
= M (0556) = MSB (A * B)
Ø
FETCH 4
· IBR (0:7) -> IR, artinya upcode yang
sebelumnya tersimpan di IBR ditransfer ke IR untuk dieksekusi. Jadi, IR = IBR (0:7)
= LOAD
· IBR (8:19) -> MAR, artinya alamat memori yang
sebelumnya tersimpan di IBR ditransfer ke MAR. Sehingga, MAR = MQ.
· PC = PC + 1, untuk pindah ke alamat memori
selanjutnya. Sehingga, PC = 0012 + 1 = 0013
Ø
EXECUTE 4
· MQ -> MBR, artinya isi register MQ ditransfer
ke MBR. Jadi, MBR = MQ = LSB (A * B)
· Karena instruksi yang dieksekusi adalah LOAD,
maka AC = LSB (A * B)
Ø
FETCH 5
·
PC = 0013
·
PC -> MAR, yang artinya MAR = PC = 0013
· M(MAR) = M(0013) -> MBR, yang artinya isi
dari memori alamat (0013) ditransfer ke MBR, yang berisi instruksi – instruksi yang
dapat digambarkan sebagai berikut.
· MBR (20:39) -> IBR, artinya instruksi yang
berada di MBR(20:39) disimpan sementara di IBR, jadi pada instruksi ini IBR =
MBR(20:39) = LOAD M (0557)
· MBR (0:7) -> IR, artinya instruksi yang
berada di MBR (0:7) yang terdiri atas 8 bit code ditransfer ke IR yang hendak
dieksekusi. Sehingga, IR = MBR (0:7) = STOR
· MBR (8:19) -> MAR, artinya alamat yang ada di
MBR (8:19) dibawa ke MAR yang hendak ditulis dari MBR atau dibaca ke MBR.
Sehingga MAR = MBR (8:19) = M (0557)
Ø
EXECUTE 5
· M(0557) -> MBR, artinya pada instruksi ini,
isi dari M(0557) di transfer ke MBR. Sehingga, MBR = M(0557) = LSB (A * B)
· Karena instruksi yang dieksekusi adalah STROR,
Maka isi dari AC akan di transfer ke memori alamat (0557), Sehingga M(0557) = AC = LSB (A * B)
Ø
FETCH 6
· IBR (0:7) -> IR, artinya upcode yang
sebelumnya tersimpan di IBR ditransfer ke IR untuk dieksekusi. Jadi, IR = IBR (0:7)
= LOAD
· IBR (8:19) -> MAR, artinya alamat memori yang
sebelumnya tersimpan di IBR ditransfer ke MAR. Sehingga, MAR = M(0557).
· PC = PC + 1, untuk pindah ke alamat memori
selanjutnya. Sehingga, PC = 0013 + 1 = 0014
Ø
EXECUTE 6
· M(0557) -> MBR, artinya isi memori alamat M(0557)
ditransfer ke MBR. Jadi, MBR = M(0557) = LSB (A * B)
· Karena instruksi yang dieksekusi adalah LOAD,
maka AC = LSB (A * B)
Ø
FETCH 7
·
PC = 0014
·
PC -> MAR, yang artinya MAR = PC = 0014
· M(MAR) = M(0014) -> MBR, yang artinya isi
dari memori alamat (0014) ditransfer ke MBR, yang berisi instruksi – instruksi yang
dapat digambarkan sebagai berikut.
· MBR (20:39) -> IBR, artinya instruksi yang
berada di MBR(20:39) disimpan sementara di IBR, jadi pada instruksi ini IBR =
MBR(20:39) = STOR M(0559)
· MBR (0:7) -> IR, artinya instruksi yang
berada di MBR (0:7) yang terdiri atas 8 bit code ditransfer ke IR yang hendak
dieksekusi. Sehingga, IR = MBR (0:7) = ADD
· MBR (8:19) -> MAR, artinya alamat yang ada di
MBR (8:19) dibawa ke MAR yang hendak ditulis dari MBR atau dibaca ke MBR.
Sehingga MAR = MBR (8:19) = M(0553)
Ø
EXECUTE 7
· M(0553) -> MBR, artinya pada instruksi ini,
isi dari M(0553) di transfer ke MBR. Sehingga, MBR = M(0553) = C
· Karena instruksi yang dieksekusi adalah ADD M(0553),
Maka memori alamat M(0553) dijumlahkan dengan isi AC dan menyimpan hasilnya di
AC. Sehingga, AC = C + LSB (A * B)
Ø
FETCH 8
· IBR (0:7) -> IR, artinya upcode yang
sebelumnya tersimpan di IBR ditransfer ke IR untuk dieksekusi. Jadi, IR = IBR (0:7)
= STOR
· IBR (8:19) -> MAR, artinya alamat memori yang
sebelumnya tersimpan di IBR ditransfer ke MAR. Sehingga, MAR = M(0559).
Ø
EXECUTE 8
· M(0559) -> MBR, artinya isi memori alamat M(0559)
ditransfer ke MBR. Jadi, MBR = M(0557) = LSB (A * B)
· Karena instruksi yang dieksekusi adalah STOR,
maka isi AC akan ditransfert ke memori alamat M(0559). Sehingga, M(0559) = C +
LSB (A * B).
Jadi,
seperti itu lah urutan instruction cycle yaitu fetch cycle dan execution cycle
dari kasus permasalahan di atas. Semoga bermanfaat bagi teman-teman sekalian, tidak menutup kemungkinan kalau ada kekurangan atau kesalahan dalam penjelasan tadi, mohon kritik dan sarannya yang membangun untuk penjelasan dan penulisan selanjutnya
0 komentar:
Posting Komentar