Kita melihat bahwa setiap fase siklus instruksi dapat didekomposisi menjadi rangkaian operasi mikro elementer. Dalam contoh kita, ada satu urutan masing-masing untuk siklus fetch, indirect, dan interrupt, dan untuk siklus eksekusi, ada satu urutan operasi mikro untuk setiap opcode. Untuk melengkapi gambar, kita perlu mengaitkan rangkaian operasi mikro bersama-sama.
Kita asumsikan register 2-bit baru yang disebut kode siklus instruksi (ICC). ICC menunjuk keadaan prosesor dalam hal bagian siklusnya:
00: Fetch
01: Indirect
10: Execute
11: Interrupt
Pada akhir masing-masing dari keempat siklus tersebut, ICC ditetapkan dengan tepat. Siklus tidak langsung selalu diikuti oleh siklus eksekusi. Siklus interupsi selalu diikuti oleh siklus pengambilan. Untuk kedua siklus eksekusi dan pengambilan, siklus berikutnya bergantung pada keadaan sistem.
Dengan demikian, diagram alir pada gambar diatas mendefinisikan urutan lengkap operasi mikro, bergantung hanya pada urutan instruksi dan pola interupsi. Tentu saja, ini adalah contoh yang disederhanakan. Diagram alir untuk prosesor sebenarnya akan lebih kompleks. Bagaimanapun, kita telah mencapai titik dalam diskusi kita di mana pengoperasian prosesor didefinisikan sebagai kinerja rangkaian operasi mikro. Kita sekarang dapat mempertimbangkan bagaimana unit kontrol menyebabkan urutan ini terjadi.
Dari diantara siklus-siklus diatas, penjelasannya adalah sebagai berikut:
- Fetch Cycle (siklus pengambilan)
Kita mulai dengan melihat fetch cycle, yang terjadi pada awal setiap siklus instruksi dan menyebabkan instruksi diambil dari memory. Empat register yang terlibat diantaranya:
- Register alamat memori (MAR): terhubung ke baris alamat bus sistem. Ini menentukan alamat di memori untuk operasi baca atau tulis.
- Memory buffer register (MBR): terhubung ke jalur data bus sistem. Ini berisi nilai yang akan disimpan di memori atau nilai terakhir dibaca dari memori.
- Program counter (PC): Memegang alamat instruksi berikutnya untuk diambil.
- Instruction register (IR): Pegang instruksi terakhir yang diambil.
- Pada awal fetch cycle, alamat instruksi berikutnya yang akan dieksekusi ada di program counter (PC); dalam hal ini, alamatnya adalah 1100100.
- Langkah pertama adalah memindahkan alamat itu ke register alamat memori (MAR) karena ini adalah satu-satunya register yang terhubung di jalur alamat bus sistem.
- Langkah kedua adalah membawa instruksi. Alamat yang diinginkan (di MAR) ditempatkan pada bus alamat, unit kontrol mengeluarkan perintah READ pada bus kontrol, dan hasilnya muncul pada bus data dan disalin ke register bu bu memori (MBR). Kita juga perlu menambah PC dengan 1 untuk bersiap-siap untuk instruksi selanjutnya. Karena kedua tindakan ini (baca kata dari memori, tambahkan 1 ke PC) jangan saling mengganggu, kita bisa melakukannya sekaligus untuk menghemat waktu.
- Langkah ketiga adalah memindahkan isi MBR ke register instruksi (IR). Ini membebaskan MBR untuk digunakan selama siklus tidak langsung yang mungkin terjadi.
Dengan demikian, fetch cycle sederhana sebenarnya terdiri dari tiga langkah dan empat operasi mikro. Setiap operasi mikro melibatkan pergerakan data ke dalam atau di luar register. Selama gerakan ini tidak saling mengganggu, beberapa di antaranya bisa berlangsung dalam satu langkah, hemat kapur. Secara simbolis, kita bisa menuliskan urutan peristiwa sebagai berikut:
t1: MAR <= (PC)
t2: MBR <= memori
PC <= (PC) + l
t3: IR <= (MBR)
Dimana I adalah panjang instruksi. Kita perlu membuat beberapa komentar tentang urutan ini. Bisa diasumsikan bahwa sebuah jam tersedia untuk tujuan waktu dan memancarkan pulsa clock secara teratur. Setiap denyut nadi mendefinisikan satuan waktu. Dengan demikian, semua unit waktu memiliki durasi yang sama. Setiap operasi mikro dapat dilakukan dalam waktu satu unit waktu. Notasi (t1, t2, t3) mewakili satuan waktu berturut-turut. Dengan kata lain, hal ini memiliki:
- Unit waktu pertama: Pindahkan isi PC ke MAR.
- Unit waktu kedua:
- Unit waktu kedua:
- Pindahkan isi lokasi memori yang ditentukan oleh MAR ke MBR.
- Kenaikan oleh l isi PC.
Perhatikan bahwa operasi mikro kedua dan ketiga keduanya berlangsung selama unit waktu kedua. Operasi mikro ketiga bisa dikelompokkan dengan yang keempat tanpa mempengaruhi operasi pengambilan:
t1: MAR <= (PC)
t2: MBR <= memori
t3: PC <= (PC) + l
IR <= (MBR)
Pengelompokan operasi mikro harus mengikuti dua aturan sederhana:
- Urutan kejadian yang tepat harus diikuti. Jadi (MAR <= (PC)) harus mendahului (MBR <= Memori) karena operasi baca memori menggunakan alamat di MAR.
- Konflik harus dihindari. Seseorang tidak boleh membaca dan menulis dari daftar yang sama dalam satu unit waktu, karena hasilnya tidak dapat diprediksi. Misalnya, operasi mikro (MBR <= Memori) dan (IR <= MBR) tidak boleh terjadi selama unit waktu yang sama.
- Poin terakhir yang perlu dicatat adalah bahwa salah satu operasi mikro melibatkan penambahan. Untuk menghindari duplikasi sirkuit, penambahan ini bisa dilakukan oleh ALU. Penggunaan ALU mungkin melibatkan operasi mikro tambahan, bergantung pada fungsionalitas ALU dan pengorganisasian prosesor.
Untuk menggambarkan siklus kita bisa menggunakan notasi register. Ini adalah cara yang sangat sederhana untuk mencatat semua langkah yang terlibat. Dalam semua kasus di mana Anda melihat tanda kurung mis. [PC], ini berarti isi benda di dalam kurung sudah terisi. Dalam kasus baris pertama, isi dari counter program dimasukkan ke Register Alamat Memori.
Deskripsi rinci tentang siklus Fetch-Decode-Execute, Untuk lebih memahami apa yang sedang terjadi di setiap tahap, kita sekarang akan melihat deskripsi terperinci:
Isi dari Counter Program, alamat instruksi berikutnya yang akan dieksekusi, ditempatkan ke Register pada Alamat Memori.
Alamat dikirim dari MAR melalui bus alamat ke Memori Utama. Instruksi pada alamat tersebut ditemukan dan dikembalikan melalui data bus ke Register Buffer Memori. Pada saat bersamaan isi Counter Program akan ditambah 1, untuk referensi instruksi berikutnya yang akan dieksekusi.
MBR memuat Current Instruction Register dengan instruksi yang akan dieksekusi.
Instruksi didekodekan dan dieksekusi dengan menggunakan ALU jika diperlukan.
Aturan untuk Pengelompokan Siklus Clock
Dalam menggelompokkan clock cycle atau siklus clock, ada beberapa aturan yang harus dipenuhi:
Aturan untuk Pengelompokan Siklus Clock
Dalam menggelompokkan clock cycle atau siklus clock, ada beberapa aturan yang harus dipenuhi:
- Urutan yang tepat harus diikuti
- MAR <- (PC) harus mendahului MBR <- (memori)
- Konflik harus dihindari
- Tidak boleh membaca & menulis register yang sama pada waktu bersamaan
- MBR <- (memori) & IR <- (MBR) tidak boleh berada dalam siklus yang sama
- Juga: PC <- (PC) +1 melibatkan penambahan
- Gunakan ALU dan mungkin perlu tambahan operasi mikro.
- Indirect Cycle (Siklus Tidak Langsung)
Begitu instruksi diambil, langkah selanjutnya adalah mengambil operan sumber. Melanjutkan contoh sederhana kami, mari kita asumsikan format instruksi satu alamat, dengan pengalamatan langsung dan tidak langsung diizinkan. Jika instruksi menentukan alamat tidak langsung, maka siklus tidak langsung harus mendahului siklus eksekusi. Aliran data mencakup operasi mikro berikut:
t1: MAR <= (IR (Alamat))
t2: MBR <= memori
t3: IR (alamat) <= (MBR (alamat))
Bidang alamat pada instruksi dipindahkan ke MAR. Ini kemudian digunakan untuk mengambil alamat operan. Akhirnya, bidang alamat IR diperbarui dari MBR, sehingga sekarang berisi alamat langsung dan bukan alamat tidak langsung. IR sekarang dalam keadaan sama seperti jika pengalamatan tidak langsung tidak digunakan, dan siap untuk melakukan siklus eksekusi. Kita melewatkan siklus itu sejenak, untuk mempertimbangkan siklus interupsi.
Kita sekarang dalam posisi untuk menguraikan sedikit pada siklus instruksi. Pertama, kita harus mengenalkan satu sub-siklus tambahan, yang dikenal sebagai siklus tidak langsung.
Kita telah melihat bahwa eksekusi sebuah instruksi mungkin melibatkan satu atau lebih operan dalam memori, yang masing-masing memerlukan akses memori. Selanjutnya, jika pengalamatan tidak langsung digunakan, diperlukan tambahan akses memori.
Kita bisa mengumpamakan pengambilan alamat tidak langsung sebagai satu sub-siklus instruksi lagi. Hasilnya ditunjukkan pada gambar berikut.
Cara lain untuk melihat proses ini ditunjukkan pada Gambar berikutnya. Ini menggambarkan sifat dari siklus instruksi. Begitu instruksi diambil, penspesifikasi operand harus diidentifikasi. Setiap input Operand dalam memori kemudian diambil, dan proses ini mungkin memerlukan pengalamatan tidak langsung. Register-based operand tidak perlu diambilnya. Setelah opcode dijalankan, proses yang serupa mungkin diperlukan untuk menyimpan hasilnya di memori utama.
Data Flow (Indirect Cycle)
Setelah siklus pengambilan selesai, unit kontrol memeriksa isi IR untuk menentukan apakah itu berisi specifier operand menggunakan pengalamatan tidak langsung. Jika demikian, sebuah siklus tidak langsung dilakukan. Seperti ditunjukkan pada gambar dibawah, ini adalah siklus sederhana. N bit paling kanan dari MBR, yang berisi referensi alamat, akan ditransfer ke MAR. Kemudian unit kontrol meminta memori dibaca, untuk mendapatkan alamat yang diinginkan dari operan ke dalam MBR.
- Interrupt Cycle
Pada penyelesaian siklus eksekusi, sebuah tes dilakukan untuk menentukan apakah ada interupsi yang diaktifkan. Jika demikian, siklus interupsi terjadi. Sifat siklus ini sangat bervariasi dari satu mesin ke mesin lainnya. Disajikan rangkaian acara yang sangat sederhana, diantaranya:
t1: MBR <= (PC)
t2: MAR <= Save_Address
PC <= Routine_Address
t3: memori <= (MBR)
Pada langkah pertama, isi PC ditransfer ke MBR, sehingga bisa disimpan untuk kembali dari interrupt. Kemudian MAR dimuatkan dengan alamat di mana isi PC disimpan, dan PC diisikan dengan alamat awal dari rutin pemrosesan interupsi. Kedua tindakan ini mungkin masing-masing merupakan operasi mikro tunggal. Namun, karena kebanyakan prosesor menyediakan beberapa tipe dan / atau tingkat interupsi, mungkin danau satu atau lebih operasi mikro tambahan untuk mendapatkan save_address dan routine_address sebelum mereka dapat dipindahkan ke MAR dan PC, masing-masing. Bagaimanapun, sekali ini selesai, langkah terakhir adalah menyimpan MBR, yang berisi nilai lama PC, ke dalam memori. Prosesor sekarang siap untuk memulai siklus instruksi berikutnya.
Data Flow (Interrupt Cycle)
Seperti siklus pengambilan dan tidak langsung, siklus interupsi sederhana dan dapat diprediksi. Isi PC saat ini harus disimpan agar CPU bisa melanjutkan aktivitas normal setelah diinterupsi. Dengan demikian, isi busur PC dialihkan ke MBR untuk ditulis ke memori. Lokasi memori khusus yang dipesan untuk tujuan ini dimasukkan ke MAR dari unit kontrol. Mungkin, misalnya, menjadi stack pointer. PC sarat dengan alamat rutin interupsi. Akibatnya, siklus instruksi berikutnya akan dimulai dengan mengambil instruksi yang sesuai.
- Execute Cycle (Siklus Eksekusi)
Siklus fetch, indirect, dan interrupt sederhana dan dapat diprediksi. Masing-masing melibatkan sejumlah kecil operasi tetap mikro dan, dalam setiap kemudahannya, operasi mikro yang sama dicabut setiap saat. Ini tidak benar pada siklus eksekusi. Untuk mesin dengan opcode N yang berbeda, ada beberapa urutan operasi mikro yang berbeda yang dapat terjadi. Mari kita simak beberapa contoh hipotetis.
Pertama, pertimbangkan sebuah instruksi tambahan:
ADD R1, X
yang menambahkan isi lokasi X untuk mendaftar Rl. Berikut urutan operasi mikro yang mungkin terjadi:
t1: MAR <= (IR (alamat))
t2: MBR <= memori
t3: Rl <= (Rl) + (MBR)
Kita mulai dengan IR yang berisi instruksi ADD. Pada langkah pertama, bagian alamat IR dimuat ke MAR. Kemudian lokasi memori yang direferensikan dibaca. Akhirnya, isi R1 dan MBR ditambahkan oleh ALU. Sekali lagi, ini adalah contoh yang disederhanakan. Operasi mikro tambahan mungkin diperlukan untuk mengekstrak referensi register dari IR dan mungkin untuk mengatur input ALU atau keluaran di beberapa register perantara. Mari kita lihat dua contoh yang lebih kompleks. Instruksi umum adalah kenaikan dan lompat jika nol:
ISZ X
Isi lokasi X bertambah dengan 1. Jika hasilnya 0, instruksi berikutnya dilewati. Kemungkinan urutan operasi mikro adalah
t1: MAR <= (CR (alamat))
t2: MBR <= memori
t3: MBR <= (MBR) - 1
t4: Memori <= (MBR)
Jika ((MBR) = 0) maka (PC <= (PC) + I)
Fitur baru yang diperkenalkan di sini adalah tindakan kondisional. PC bertambah jika (MBR) = 0; Tes dan tindakan ini bisa diimplementasikan sebagai satu operasi mikro. Perhatikan juga bahwa operasi mikro ini dapat dilakukan selama unit waktu yang sama dimana nilai yang diperbarui dalam MBR disimpan kembali ke memori.
Akhirnya, pertimbangkan instruksi panggilan subrutin. Sebagai contoh, pertimbangkan instruksi branch-and-save-address:
BSA X
Alamat instruksi yang mengikuti instruksi BSA disimpan di lokasi X, dan eksekusi berlanjut ke lokasi X - l. Alamat yang tersimpan kemudian akan digunakan untuk kembali. Ini adalah teknik langsung untuk memberikan panggilan subrutin. sumber operasi mikro berikut:
t1: MAR <= (IR (alamat))
MBR <= (PC)
t2: PC <= (IR (alamat)) Memori <= (MBR)
t3: PC <= (PC) + I
Alamat di PC pada awal instruksi adalah alamat instruksi berikutnya secara berurutan. Ini disimpan di alamat yang ditetapkan dalam Ihe IK. Alamat terakhir juga ditambahkan untuk memberikan alamat instruksi untuk siklus instruksi berikutnya.
Sumber: Tugas Matakuliah Arsitektur dan Organisasi Komputer@Edwin-Erdiyana
Izin copas pak, buat tugas.
BalasHapusSilahkan.
Hapussertakan sumbernya ya..
HapusTerimakasih Pak
BalasHapusSangat membantu saya dalam mencari bahan materi lain :D