1.
Komponen Sistem Komputer
Secara garis besar sistem komputer
tersusun dari 3 (tiga) komponen utama, yaitu :
·
CPU (Central Processing Unit) atau Prosesor,
yang terdiri dari: ALU (Arithmetic and Logic Unit), Register dan Control
Unit
·
Memory
·
I/O Device
Ketiga komponen tersebut
dihubungkan dengan suatu Struktur Interkoneksi tertentu. Pengetahuan tentang
komponen-komponen ini beserta operasi atau interaksinya memungkinkan kita untuk
melihat lebih dalam penyebab kelambatan sistem, jalur alternatif, skala
kegagalan sistem dan peluang untuk peningkatan unjuk kerja. Gambar 2.1.
memperlihatkan komponen-komponen sebuah sistem komputer.
Gambar 2.1. Komponen
Sistem Komputer
Von Neumann berjasa karena idenya tentang Pengendalian
Operasi Hardware Komputer melalui manipulasi sinyal kendali. Sebelum idenya
direalisasikan, komputer pertama (ENIAC) harus diubah secara fisik (sambungan
atau solderannya) jika fungsi komputasi komputer ingin diubah. Tetapi kemudian
hal ini tidak terjadi lagi setelah Von Neumann memperkenalkan penggunaan memori
untuk menyimpan program yang berupa urutan instruksi untuk dieksekusi dalam
manipulasi sinyal kendali. Program ini dibuat untuk mewujudkan operasi
tertentu. Ini merupakan peralihan dari rancang ulang hardware menjadi
pemrograman software. Arsitektur Von Neumann ini merupakan basis bagi seluruh
rancangan komputer sejak komputer generasi pertama. Karakteristik Arsitektur
Komputer Von Neuman adalah sebagai berikut:
·
Baik data maupun instruksi (urutan kendali) diletakkan
dalam memori yang sama. Sehingga data tidak bisa dibedakan dari memori karena
keduanya ditulis dengan cara yang sama (biner code) dan diletakkan di
tempat yang sama (memori)
·
Isi memori dapat diakses berdasarkan alamatnya, tanpa
memperdulikan type data atau instruksi yang dikandungnya
·
Eksekusi instruksi dilakukan secara berurutan, mulai
dari instruksi yang ditulis pada lokasi awal memori , kemudian lokasi
berikutnya dan seterusnya sampai akhir program
·
Secara umum, yang dilakukan prosesor adalah mengambil
instruksi dari memori, kemudian menterjemahkan istruksi tersebut menjadi aksi
untuk transfer maupun olah data dalam ALU. Gambar 2.2. memperlihatkan skema hal
tersebut.
Gambar 2.2. Cara
kerja prosesor
2.
Eksekusi Instruksi (Instruction Execution)
Eksekusi
instruksi meliputi langkah-langkah berikut :
a) Penentuan alamat instruksi
berikutnya yang akan dieksekusi
b) Pengambilan instruksi dari lokasi
yang ditunjuk tersebut, kemudian meletakkannya di register instruksi (Instruction
Register) yang terletak berdampingan dengan Control Unit.
c) Penterjemahan (decode)
instruksi untuk mengetahui operasi apa yang harus dilakukan.
d) Kalkulasi alamat operand (data
yang akan dilibatkan dalam operasi), kemudian ambil operand tersebut.
e) Melakukan operasi tertentu terhadap operand
tersebut.
f) Simpan hasilnya pada salah satu
lokasi data, register atau memori.
g) Pengecekan terhadap keberadaan
interupsi. Jika ada, maka eksekusi instruksi berikutnya ditunda dan operasi
instruksi interupsi dimulai.
Gambar 2.3 memperlihatkan siklus instruksi yang secara garis besar
terdiri dari tahap pengambilan (fetch cycle) dan tahap eksekusi (execution
cycle). Sedangkan Gambar 2.4 berisi diagram keadaan (state diagram )
yang merupakan rincian siklus eksekusi instruksi.
Gambar 2.3. Siklus
Instruksi
Gambar 2.4. Diagram Keadaan untuk Langkah Instruksi
Gambar
2.5 memperlihatkan contoh siklus eksekusi sebuah instruksi yang terdiri dari 6
tahap, yaitu :
1.
Karena PC (Program Counter) berisi angka 300, maka instruksi
yang akan diambil adalah instruksi yang terletak di memori alamat 300, yaitu
instruksi dengan kode 1940. Instruksi tersebut diambil dari memori kemudian
disimpan di register instruksi (Instruction Register).
2.
Misalkan kode 1940 merupakan instruksi dengan kode operasi (Operation
Code, opcode) 1, diikuti dengan 940 yang merupakan alamat operand.
Opcode 1 berarti instruksi untuk mengcopy data dari alamat operand (dalam hal
ini 940) ke akumulator. Maka data yang terletak di alamat 940 dicopy ke
accumulator untuk diproses dalam siklus eksekusi ini.
3.
Setelah itu isi PC ditambah satu (incremented) sehingga isinya
menjadi 301. Artinya, instruksi berikutnya yang harus diambil dari memori dan
dieksekusi terletak di memori alamat 301, yaitu instruksi dengan kode 5941.
Instruksi tersebut mengandung opcode 5 dan alamat operand 941.
4.
Karena 5 berarti penjumlahan antara isi akumulator dengan isi memori
yang alamatnya diberikan di sebelah angka 5, maka isi akumulator dijumlahkan
dengan isi memori alamat 941. Kemudian hasil penjumlahannya dikembalikan ke
akumulator.
5.
Setelah PC ditambah satu, maka isinya menjadi 302, sehingga instruksi
berikutnya yang diambil dari memori adalah 2941, yaitu opcode 2 dan operand
941.
6.
Arti 2941 adalah perintah untuk mengcopy isi akumulator ke memori
alamat 941.
Gambar 2.5. Contoh Eksekusi Program
3.
Interupsi (Interrupt)
Dalam proses
eksekusi program, dikenal istilah interupsi, yaitu mekanisme pengalihan kendali
CPU dari program utama atau eksekusi normal ke program subrutin karena
interupsi dari suatu modul I/O. Biasanya I/O device ini 1 sampai 10 kali lebih
lambat dari CPU, sehingga sangat tidak efisien jika CPU harus menunggunya tanpa
melakukan operasi apapun. Selama menunggu I/O device tersebut, CPU dapat
melakukan operasi eksekusi program normal. Tetapi ketika terjadi interupsi,
eksekusi normal tersebut dihentikan sementara untuk melayani interupsi berupa
eksekusi program atau instruksi lain. Gambar 2.6. memperlihatkan alur kendali
kendali eksekusi program dengan dan tanpa interupsi. Pada gambar (a) terlihat
bahwa pengalihan kendali eksekusi dilakukan karena opcode instruksi terakhir,
dalam hal ini instruksi CALL, bukan karena dicegat oleh interupsi. Sedangkan
pada gambar (b) dan (c), pengalihan kendali eksekusi disebabkan oleh interupsi.
Perbedaan gambar (b) dengan (c) adalah sebagai berikut. Pada short I/O wait,
penundaan eksekusi program (program suspending) dapat terjadi di mana
saja pada akhir eksekusi instruksi. Gambar 2.7. memperlihatkan proses ini lebih
rinci. Sedangkan pada Long I/O wait (lihat juga gambar 2.8.), program
suspending hanya boleh terjadi pada saat-saat tertentu saja, yaitu pada
akhir potongan program, bukan pada akhir eksekusi instruksi saat terjadinya
interupsi.
Gambar 2.6. Alur
Kendali Program dengan dan tanpa interups
Gambar 2.7. Pengalihan Kendali via interupsi
Gambar 2.8. Program Timing: Long I/O wait
Prosesor dan Operating
System bertanggung jawab untuk mengidentifikasi interupsi, menunda eksekusi
program normal, melayani interupsi dengan mengeksekusi program atau instruksi
tertentu, kemudian melanjutkan eksekusi program normal yang tertunda tadi.
Interupsi diproses dalam siklus interupsi yang terkandung dalam keseluruhan
siklus instruksi. Gambar 2.9. memperlihatkan siklus eksekusi instruksi yang
memungkinkan adanya interupsi. Sedangkan gambar 2.10. memperlihatkan lebih
rinci siklus eksekusi yang diselipi interupsi. Gambar 2.10. ini merupakan
modifikasi gambar 2.4.
Gambar 2.9. Siklus Instruksi dengan interupsi
Gambar 2.10. Diagram Keadaan untuk Siklus Instruksi, dengan interupsi.
Berikut ini adalah urutan
siklus interupsi :
a. Pada setiap akhir eksekusi
instruksi, yaitu setelah penyimpanan operand ke dalam memori atau register,
prosesor mengecek keberadaan interupsi.
b. Jika tidak ada interupsi, maka
eksekusi program normal dilanjutkan ke instruksi berikutnya. Tetapi jika ada, maka
:
·
Eksekusi program normal ditunda sementara dan keadaan prosesor (isi
seluruh register penting) direkam dalam tumpukan (stack).
·
Lompat ke Interrupt Service Routine (ISR), yaitu ke lokasi
memori yang berisi program pelayanan untuk interupsi terkait. Kemudian proses
eksekusi instruksi dimulai seperti biasa.
·
Setelah eksekusi program ISR selesai, keadaan prosesor ketika ditunda
sementara (suspended) dikembalikan, yaitu mengcopy isi stack ke
dalam register-register. Setelah itu eksekusi instruksi dimulai seperti biasa.
Sebuah
sistem komputer dapat memiliki beberapa sampai lusinan sumber interupsi,
masing-masing akan dilayani oleh ISR terkait. Proses yang harus dilakukan jika
lebih dari 1 interupsi terjadi pada waktu bersamaan, atau interupsi datang
ketika prosesor sedang mengeksekusi ISR interupsi lain, adalah sebagai berikut:
·
Sebelumnya, sistem harus menentukan tingkatan
prioritas untuk setiap interupsi.
·
Pada saat memulai siklus interupsi, interupsi
yang memiliki prioritas lebih tinggi dapat menunda eksekusi ISR yang sedang
berlangsung.
·
Interupsi lainnya akan dilayani kemudian.
·
Jika interupsi terjadi ketika prosesor sedang
mengeksekusi ISR, maka :
§ Instruksi
yang terbaru diabaikan (dengan cara disable interrupt) sampai proses
eksekusi ISR selesai. Misal pada mikrokontroler Motorolla MC68HC11.
§ Identifikasi
dan pelayanan interupsi dilakukan hanya jika interupsi terbaru memiliki
prioritas lebih tinggi dari interupsi yang sedang dilayani. Misal pada prosesor
Intel 8085.
Gambar 2.11.
memperlihatkan skema eksekusi program yang disela oleh 2 interupsi. Kedua ISR
dieksekusi secara berurutan (sequential), sebagaimana terlihat pada
gambar (a). Sedangkan gambar (b) memperlihatkan skema eksekusi yang disela oleh
1 interupsi, kemudian ketika ISR pertama dieksekusi, disela lagi oleh interupsi
berikutnya yang memiliki prioritas lebih tinggi.
Gambar 2.11.Peralihan
Kendali dengan interupsi ganda.
Sedangkan
Gambar 2.12. memperlihatkan skema eksekusi program yang disela oleh 3 interupsi.
ISR komunikasi dapat menyela ISR printer karena prioritas komunikasi lebih
tinggi daripada printer. Sedangkan ISR disk tidak dapat menyela ISR komunikasi
karena prioritas disk lebih rendah dari komunikasi. Tetapi karena disk memiliki
prioritas lebih tinggi daripada printer, maka segera setelah ISR komunikasi
dieksekusi, ISR disk dieksekusi.
Gambar 2.12. Urutan
waktu untuk interupsi ganda.
Terima kasih mas, artikelnya sangat membantu untuk tugas saya.
BalasHapus