1 Komponen Komputer
Hampir semua desain komputer kontemporer didasarkan pada konsep yang dikembangkan oleh
John von Neumann di Institute for Advanced Studies, Princeton. Desain seperti itu disebut
sebagai arsitektur von Neumann dan didasarkan pada tiga konsep utama:
■ Data dan instruksi disimpan dalam satu memori baca-tulis.
■ Isi memori ini dapat diatasi berdasarkan lokasi, tanpa memperhatikan jenis data yang
terkandung di sana.
■ Eksekusi terjadi secara berurutan dari satu instruksi ke instruksi berikutnya.
Ada sekumpulan kecil komponen logika dasar yang dapat digabungkan dalam berbagai cara
untuk menyimpan data biner dan melakukan operasi aritmatika dan logis pada data itu. Jika ada
perhitungan tertentu yang akan dilakukan, konfigurasi komponen logika yang dirancang khusus
untuk komputasi tersebut dapat dibangun. Seluruh program sebenarnya adalah urutan langkah.
Pada setiap langkah, beberapa operasi aritmatika atau logis dilakukan pada beberapa data. Untuk
setiap langkah, serangkaian sinyal kontrol baru diperlukan. Mari kita memberikan kode unik
untuk setiap set sinyal kontrol yang mungkin, dan mari kita tambahkan ke perangkat keras tujuan
umum segmen yang dapat menerima kode dan menghasilkan sinyal kontrol . Pemrograman
sekarang jauh lebih mudah. Alih-alih memutar ulang perangkat keras untuk setiap program baru,
yang perlu kita lakukan adalah menyediakan urutan kode baru. Setiap kode, berlaku, instruksi,
dan bagian dari perangkat keras menafsirkan setiap instruksi dan menghasilkan sinyal kontrol.
Diperlukan satu komponen lagi. Perangkat input akan membawa instruksi dan data secara
berurutan. Tetapi sebuah program tidak selalu dijalankan secara berurutan; mungkin melompat-
lompat . Demikian pula, operasi pada data mungkin memerlukan akses ke lebih dari satu elemen
pada satu waktu dalam urutan yang telah ditentukan. Dengan demikian, harus ada tempat untuk
menyimpan sementara instruksi dan data. Modul itu disebut memori, atau memori utama, untuk
membedakannya dari penyimpanan eksternal atau perangkat periferal. Von Neumann
menunjukkan bahwa memori yang sama dapat digunakan untuk menyimpan instruksi dan data.
Tiga instruksi, yang dapat digambarkan sebagai tiga pengambilan dan tiga siklus eksekusi,
diperlukan:
1. PC berisi 300, alamat instruksi pertama. Instruksi ini (nilai 1940 dalam heksadesimal) dimuat
ke dalam register instruksi IR, dan PC bertahap. Perhatikan bahwa proses ini melibatkan
penggunaan register alamat memori dan register penyangga memori. Untuk kesederhanaan,
register menengah ini diabaikan.
2. 4 bit pertama (digit heksadesimal pertama) di IR menunjukkan bahwa AC akan dimuat.
Sisanya 12 bit (tiga digit heksadesimal) menentukan alamat (940) dari mana data akan dimuat.
3. Instruksi berikutnya (5941) diambil dari lokasi 301, dan PC bertahap.
4. Isi lama AC dan isi lokasi 941 ditambahkan, dan hasilnya disimpan di AC.
5. Instruksi berikutnya (2941) diambil dari lokasi 302, dan PC bertahap.
6. Isi AC disimpan di lokasi 941.
Dalam contoh ini, tiga siklus instruksi, masing-masing terdiri dari siklus pengambilan dan siklus
eksekusi, diperlukan untuk menambahkan konten lokasi 940 ke konten 941. Dengan set instruksi
yang lebih kompleks, lebih sedikit siklus yang diperlukan. Beberapa prosesor lama, misalnya,
menyertakan instruksi yang berisi lebih dari satu alamat memori. Dengan demikian, siklus
eksekusi untuk instruksi tertentu pada prosesor tersebut dapat melibatkan lebih dari satu referensi
ke memori. Selain itu, sebagai ganti referensi memori, instruksi dapat menentukan operasi I / O.
Sebagai contoh, prosesor PDP-11 menyertakan instruksi, yang dinyatakan secara simbolis
sebagai ADD B, A, yang menyimpan jumlah isi dari lokasi memori B dan A ke dalam lokasi
memori A.
Sebuah siklus instruksi tunggal dengan langkah-langkah berikut terjadi:
■ Fetch instruksi ADD.
■ Bacalah isi dari lokasi memori A ke dalam prosesor.
■ Bacalah isi dari lokasi memori B ke dalam prosesor. Agar konten A tidak hilang, prosesor
harus memiliki setidaknya dua register untuk menyimpan nilai memori, bukan satu akumulator.
■ Tambahkan kedua nilai tersebut.
■ Tuliskan hasil dari prosesor ke lokasi memori A.
Dengan demikian, siklus eksekusi untuk instruksi tertentu mungkin melibatkan lebih dari satu
referensi ke memori. Selain itu, sebagai ganti referensi memori, instruksi dapat menentukan
operasi I / O. Untuk setiap siklus instruksi tertentu, beberapa negara bagian mungkin nol dan
yang lainnya dapat dikunjungi lebih dari sekali.
Statusnya dapat dijelaskan sebagai berikut :
■ Perhitungan alamat instruksi: Tentukan alamat instruksi berikutnya yang akan dijalankan.
Biasanya, ini melibatkan penambahan nomor tetap ke alamat instruksi sebelumnya. Misalnya,
jika setiap instruksi memiliki panjang 16 bit dan memori diatur menjadi kata-kata 16-bit, maka
tambahkan 1 ke alamat sebelumnya. Sebaliknya, jika memori diatur sebagai byte 8-bit yang
dapat dialamatkan satu per satu, lalu tambahkan 2 ke alamat sebelumnya.
■ Pengambilan instruksi: Membaca instruksi dari lokasi memorinya ke dalam prosesor.
■ Dekode operasi instruksi: Analisis instruksi untuk menentukan jenis operasi yang akan
dilakukan dan operan yang akan digunakan.
■ Perhitungan alamat operan: Jika operasi melibatkan referensi ke operand dalam memori atau
tersedia melalui I / O, tentukan alamat operan tersebut.
■ Operand fetch: Mengambil operand dari memori atau membacanya dari I / O.
■ Operasi data: Lakukan operasi yang ditunjukkan dalam instruksi.
■ Operand store: Tulis hasil ke dalam memori atau ke I / O.
Keadaan oac muncul dua kali, karena instruksi mungkin melibatkan membaca, menulis, atau
keduanya. Akhirnya, pada beberapa mesin, satu instruksi dapat menentukan operasi yang akan
dilakukan pada vektor angka atau rangkaian karakter.
Interupsi
Hampir semua komputer menyediakan mekanisme di mana modul lain dapat mengganggu
pemrosesan normal prosesorSifat khusus dari interupsi-interupsi ini akan dibahas kemudian
dalam buku ini. Namun, kami perlu memperkenalkan konsep tersebut sekarang untuk memahami
lebih jelas sifat siklus instruksi dan implikasi interupsi pada struktur interkoneksi. Setelah setiap
operasi tulis, prosesor harus berhenti sebentar dan tetap diam hingga printer menyusul. Panjang
jeda ini mungkin di urutan ratusan atau bahkan ribuan siklus instruksi yang tidak melibatkan
memori. Yang jelas, ini sangat boros penggunaan prosesor. Program pengguna melakukan
serangkaian panggilan TULIS yang diselingi dengan pemrosesan.
■ Urutan instruksi, berlabel 4 pada gambar, untuk mempersiapkan operasi I / O yang
sebenarnya. Ini mungkin termasuk menyalin data yang akan dikeluarkan ke buffer khusus dan
menyiapkan parameter untuk perintah perangkat.
■ Perintah I / O yang sebenarnya. Tanpa menggunakan interupsi, setelah perintah ini
dikeluarkan, program harus menunggu perangkat I / O menjalankan fungsi yang
diminta. Program mungkin menunggu hanya dengan melakukan operasi uji berulang kali untuk
menentukan apakah operasi I / O sudah selesai.
■ Urutan instruksi, berlabel 5 pada gambar, untuk menyelesaikan operasi.
Interupsi dan Siklus Instruksi
Program I / O yang dipanggil dalam kasus ini hanya terdiri dari kode persiapan dan perintah I / O
yang sebenarnya. Setelah beberapa instruksi ini dijalankan, kontrol kembali ke program
pengguna. Sementara itu, perangkat eksternal sibuk menerima data dari memori komputer dan
mencetaknya. Operasi I / O ini dilakukan secara bersamaan dengan eksekusi instruksi dalam
program pengguna. Kami memiliki program pengguna yang berisi dua perintah TULIS.
Demikian pula, program I / O terdiri dari segmen kode, diikuti oleh perintah I / O, diikuti oleh
segmen kode lainnya. Perintah I / O menjalankan operasi I / O perangkat keras. Saat pemrosesan
interupsi selesai, eksekusi dilanjutkan. Untuk mengakomodasi interupsi, siklus interupsi
ditambahkan ke siklus instruksi, seperti yang ditunjukkan pada Gambar 3.9. Dalam siklus
interupsi, prosesor memeriksa untuk melihat apakah telah terjadi interupsi, yang ditunjukkan
dengan adanya sinyal interupsi. Jika tidak ada interupsi yang tertunda, prosesor melanjutkan ke
siklus pengambilan dan mengambil instruksi berikutnya dari program saat ini.
■ Ini menangguhkan eksekusi dari program saat ini yang sedang dieksekusi dan menyimpan
konteksnya. Ini berarti menyimpan alamat instruksi berikutnya yang akan dieksekusi dan data
lain yang relevan dengan aktivitas prosesor saat ini.
■ Ini mengatur penghitung program ke alamat awal dari rutin penanganan interupsi.
Prosesor sekarang melanjutkan ke siklus pengambilan dan mengambil instruksi pertama dalam
program penangan interupsi, yang akan melayani interupsi. Program penangan interupsi
umumnya merupakan bagian dari sistem operasi. Biasanya, program ini menentukan sifat
interupsi dan melakukan tindakan apa pun yang diperlukan. Dalam contoh yang telah kita
gunakan, handler menentukan modul I / O mana yang menghasilkan interupsi dan dapat
bercabang ke program yang akan menulis lebih banyak data ke modul I / O tersebut. Saat rutin
penanganan interupsi selesai, prosesor dapat melanjutkan eksekusi program pengguna pada titik
gangguan. Instruksi tambahan harus dijalankan untuk menentukan sifat interupsi dan untuk
memutuskan tindakan yang sesuai. Namun demikian, karena jumlah waktu yang relatif besar
yang akan terbuang hanya dengan menunggu operasi I / O, prosesor dapat digunakan jauh lebih
efisien dengan penggunaan interupsi. Dalam gambar ini, segmen kode program pengguna diarsir
hijau, dan segmen kode program I / O diarsir abu-abu.
Setelah interupsi diperbaiki, eksekusi dilanjutkan dengan sisa segmen kode 2. Kasus yang lebih
umum, terutama untuk perangkat yang lambat seperti printer, adalah bahwa operasi I / O akan
memakan waktu lebih lama daripada menjalankan urutan instruksi pengguna. Dalam kasus ini,
program pengguna mencapai panggilan TULIS kedua sebelum operasi I / O yang dilakukan oleh
panggilan pertama selesai. Hasilnya adalah program pengguna ditutup pada saat itu.
Ketika operasi I / O sebelumnya selesai, panggilan TULIS baru ini dapat diproses, dan operasi I /
O baru dapat dimulai. Kita dapat melihat bahwa masih ada keuntungan dalam efisiensi karena
bagian waktu selama operasi I / O berlangsung tumpang tindih dengan pelaksanaan instruksi
pengguna.
Beberapa Interupsi
Printer akan menghasilkan interupsi setiap kali menyelesaikan operasi pencetakan. Unit dapat
berupa karakter tunggal atau blok, tergantung pada sifat disiplin komunikasi. Bagaimanapun,
adalah mungkin untuk interupsi komunikasi terjadi saat interupsi printer sedang
diproses. Interupsi yang dinonaktifkan berarti bahwa prosesor dapat dan akan mengabaikan
sinyal permintaan interupsi tersebut.
Jika interupsi terjadi selama waktu ini, biasanya interupsi tetap tertunda dan akan diperiksa oleh
prosesor setelah prosesor mengaktifkan interupsi. Saat rutinitas ini masih berjalan, pada t = 15,
terjadi interupsi komunikasi. Karena jalur komunikasi memiliki prioritas lebih tinggi daripada
printer, interupsi dijaga. ISR printer terputus, statusnya didorong ke tumpukan, dan eksekusi
berlanjut pada ISR komunikasi.
Saat rutinitas ini dijalankan, terjadi interupsi disk. Karena interupsi ini memiliki prioritas yang
lebih rendah, interupsi tersebut ditahan begitu saja, dan ISR komunikasi berjalan hingga
selesai. Ketika ISR komunikasi selesai, status prosesor sebelumnya dipulihkan, yang merupakan
eksekusi ISR printer. Namun, bahkan sebelum instruksi tunggal dalam rutinitas itu dapat
dijalankan, prosesor menghormati interupsi disk dengan prioritas lebih tinggi dan transfer kontrol
ke ISR disk.
Hanya setelah rutinitas itu selesai ISR printer dilanjutkan. Ketika rutinitas itu selesai, kontrol
akhirnya kembali ke program pengguna.
I/O Fungsi
I / O Modul I / O dapat bertukar data secara langsung dengan prosesor. Sama seperti prosesor
dapat memulai membaca atau menulis dengan memori, menunjuk alamat lokasi tertentu,
prosesor juga dapat membaca data dari atau menulis data ke modul I / O. Dalam kasus terakhir
ini, prosesor mengidentifikasi perangkat tertentu yang dikontrol oleh modul I / O tertentu. Dalam
kasus seperti itu, prosesor memberikan wewenang kepada modul I / O untuk membaca dari atau
menulis ke memori, sehingga transfer memori I / O dapat terjadi tanpa mengikat prosesor.
Selama transfer tersebut, modul I / O mengeluarkan perintah baca atau tulis ke memori,
membebaskan tanggung jawab prosesor untuk pertukaran tersebut.