Siklus Ambil–Dekode–Eksekusi – di Dalam CPU Sederhana

InformatikaKomputer dan perangkat kerasUsia 16–17

CPU mini dengan PC, MAR, MDR, CIR, ACC, ALU, dan unit kendali, terhubung ke 16 atau 32 sel memori melalui bus alamat, bus data, dan bus kendali. Muat program contoh dalam bahasa rakitan sederhana (LDA, ADD, SUB, STA, BRZ, BRP, BRA, OUT, HLT), lalu maju per siklus clock untuk melihat data bergerak di bus pada tahap ambil, dekode, dan eksekusi; ubah kecepatan clock dan hitung jumlah siklusnya.

Pelajaran: Di dalam komputer: CPU, register, bus, dan siklus ambil–dekode–eksekusi

Yang ditunjukkan

Komputer program tersimpan menyimpan instruksi dan data sebagai bilangan di memori utama. CPU mengulang siklus yang sama: mengambil instruksi pada alamat yang ditunjuk penghitung program, mendekodenya di unit kendali, lalu mengeksekusinya dengan memindahkan nilai antara register, ALU, dan memori melalui bus alamat, bus data, dan bus kendali. Model ini bekerja seperti Little Man Computer: kode desimal tiga digit, digit pertama adalah kode operasi dan dua digit terakhir adalah alamat, dengan satu pemindahan antarregister per siklus clock.

Cara menggunakan

Pilih Program contoh dan atur Nilai A serta Nilai B. Tekan Langkah (1 siklus) untuk maju satu siklus clock dan baca pemindahan antarregister di bagian atas, misalnya MAR ← PC; tekan Satu instruksi untuk menuntaskan instruksi saat ini, atau Jalankan agar Kecepatan clock menggerakkan CPU. Ganti Tampilan memori antara bahasa rakitan dan kode mesin, lalu klik sel memori untuk melihat bagaimana CPU akan membacanya.

Parameter yang dapat diubah

  • Program contoh Menjumlahkan dua bilangan (A + B), Hitung mundur dari A ke 0 (perulangan), Yang lebih besar dari A dan B
  • Nilai A 0–50
  • Nilai B 0–50
  • Kecepatan clock 0,5–20 Hz
  • Jumlah sel memori 16 sel, 32 sel
  • Tampilan memori Bahasa rakitan (LDA 13…), Kode mesin (513…)

Pertanyaan untuk dijelajahi

  1. Mengapa penghitung program bertambah pada tahap ambil, sebelum instruksi dieksekusi?
  2. Berapa siklus clock yang diperlukan ADD dan BRA dalam model ini, dan mengapa berbeda?
  3. Pada program hitung mundur, bagaimana jumlah total siklus berubah jika A bertambah 1?