Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Jejak kitaran arahan yang dipermudah

Menghafal perkataan fetch, decode dan execute memang mudah, sehingga soalan bertanya apa yang disimpan setiap daftar selepas setiap langkah.

Dalam halaman ini
  1. Apa yang berlaku dalam setiap peringkat?
  2. Contoh berlangkah
  3. Kesilapan yang perlu diawasi
  4. Semak kendiri
  5. Ke mana selepas ini

Pemproses menjalankan atur cara dengan mengulang satu kitaran: fetch (ambil) arahan seterusnya daripada memori, decode (nyahkod) arahan itu, kemudian execute (laksana) arahan itu. Jejak kitaran ini menunjukkan apa yang disimpan daftar selepas setiap langkah.

Kemahiran ini tergolong dalam perkakasan dan pemprosesan. Ia asas kepada pelajaran seterusnya tentang kegunaan setiap daftar, dan berkait rapat dengan jadual jejak dalam soalan algoritma.

Apa yang berlaku dalam setiap peringkat?

Kita menggunakan model yang dipermudah dengan lima daftar: pembilang atur cara (PC), daftar alamat memori (MAR), daftar data memori (MDR), daftar arahan semasa (CIR) dan penumpuk (ACC).

Fetch

  1. Alamat dalam PC disalin ke MAR.
  2. PC ditambah 1, supaya menunjuk kepada arahan seterusnya.
  3. Kandungan lokasi memori dalam MAR disalin ke MDR.
  4. Kandungan MDR disalin ke CIR.

Decode. Unit kawalan (control unit) memahami maksud arahan dalam CIR: operasi apa, dan alamat mana.

Execute. Arahan dilaksanakan. Arahan muat (load) menyalin nilai ke dalam ACC, arahan aritmetik menggunakan unit logik aritmetik (ALU) dan meninggalkan hasil dalam ACC, dan arahan simpan (store) menyalin ACC ke memori.

Dalam pseudokod, fetch kelihatan seperti ini:

MAR ← PC
PC ← PC + 1
MDR ← Memory[MAR]
CIR ← MDR

Contoh berlangkah

Memori menyimpan atur cara dan data ini. LDA 200 memuatkan nilai pada alamat 200 ke dalam ACC, ADD 201 menambah nilai pada alamat 201 kepada ACC, STO 202 menyimpan ACC pada alamat 202, dan END berhenti.

AlamatKandungan
100LDA 200
101ADD 201
102STO 202
103END
2007
2015
2020

PC bermula pada 100. ACC kosong pada permulaan, ditunjukkan dengan sengkang.

LangkahPCMARMDRCIRACC
Mula100----
Fetch 1101100LDA 200LDA 200-
Execute 11012007LDA 2007
Fetch 2102101ADD 201ADD 2017
Execute 21022015ADD 20112
Fetch 3103102STO 202STO 20212
Execute 310320212STO 20212
Fetch 4104103ENDEND12

Semak nilai utama dua kali. Dalam Execute 2, ALU menambah 7 + 5 = 12. Dalam Execute 3, nilai 12 ditulis pada alamat 202, jadi lokasi 202 berubah daripada 0 kepada 12.

Setiap fetch membaca alamat yang disimpan PC sebelum ia ditambah: 100, 101, 102, 103.

Kitaran yang sama dalam Python, menggunakan kamus (dictionary) sebagai memori:

memory = {100: "LDA 200", 101: "ADD 201", 102: "STO 202", 103: "END",
          200: 7, 201: 5, 202: 0}
pc = 100
acc = 0
while True:
    mar = pc
    pc = pc + 1
    mdr = memory[mar]
    cir = mdr
    op = cir.split()[0]
    if op == "END":
        break
    address = int(cir.split()[1])
    if op == "LDA":
        acc = memory[address]
    elif op == "ADD":
        acc = acc + memory[address]
    elif op == "STO":
        memory[address] = acc
print(memory[202])   # 12

Ini model pengajaran, bukan cara pemproses sebenar dibina, dan kotak pasir penaakulan Python yang selamat membolehkan anda menjalankan contoh kecil seperti ini.

Kesilapan yang perlu diawasi

Kesilapan yang kerap berlaku ialah mengemas kini PC selepas peringkat execute, atau membiarkannya pada alamat arahan yang sedang dijalankan.

Baris Fetch 1 yang salah: PC 100, MAR 100, MDR LDA 200, CIR LDA 200

Pelajar membiarkan PC pada 100 kerana “di situlah arahan itu berada”.

PC ditambah semasa fetch, jadi selepas Fetch 1 ia sudah menyimpan 101. Kesilapan ini merebak: setiap MAR kemudian salah satu, dan seluruh jejak gagal. Betulkan dengan menulis penambahan PC sebagai baris kedua dalam setiap fetch.

Semak kendiri

1. Pada permulaan satu fetch, PC menyimpan 300. Tulis nilai MAR dan PC selepas dua langkah pertama fetch.

Lihat jawapan

Langkah 1 menyalin PC ke MAR, jadi MAR = 300. Langkah 2 menambah PC, jadi PC = 301.

2. Daftar manakah menyimpan arahan semasa unit kawalan menyahkodnya?

Lihat jawapan

CIR (daftar arahan semasa). MDR hanya menyimpannya sebentar dalam perjalanan dari memori.

3. Arahan JMP 150 disimpan pada alamat 120. Nyatakan PC selepas fetch dan selepas execute.

Lihat jawapan

Selepas fetch, PC = 121. Melaksanakan arahan lompat menulis ganti PC dengan alamat baharu, jadi selepas execute PC = 150. Fetch seterusnya menggunakan MAR = 150.

Ke mana selepas ini

Setelah boleh menjejak kitaran ini, kaitkan setiap daftar dengan peranannya dan cuba set latihan perkakasan dan pemprosesan. Pelatih jejak pseudokod terhad berguna untuk membina tabiat melangkah nilai yang sama.

Sesetengah pelajar mengikut jejak di dalam kelas tetapi hilang arah apabila berseorangan di atas kertas kosong. Guru dalam tuisyen Computer Science dalam talian satu dengan satu boleh menjejak bersama anda, satu daftar demi satu, sehingga coraknya mantap.

Soalan lazim

Dalam susunan apakah PC, MAR, MDR dan CIR berubah semasa fetch?

Dalam model yang dipermudah: alamat dalam PC disalin ke MAR, PC ditambah 1, arahan pada alamat itu disalin ke MDR, kemudian disalin ke CIR. Sentiasa tunjukkan PC bergerak ke hadapan semasa fetch, sebelum arahan dilaksanakan.

Mengapa PC tidak menyimpan alamat arahan yang sedang dilaksanakan?

Kerana PC dikemas kini semasa fetch supaya sudah menunjuk kepada arahan seterusnya. Semasa arahan semasa dilaksanakan, PC menyimpan alamat berikutnya. Arahan lompat (jump) berbeza: ia menulis ganti PC dengan alamat baharu, jadi fetch seterusnya berlaku di tempat lain.

Adakah saya perlu belajar bahasa himpunan (assembly) sebenar untuk ini?

Tidak. Soalan memberikan set kecil arahan yang digunakan atau menerangkannya dengan perkataan. Tugas anda ialah menggunakan kitaran itu secara konsisten dan menunjukkan setiap daftar. Semak laman subjek Cambridge untuk perkataan topik ini dalam sukatan semasa, dan gunakan nama arahan yang diberikan dalam soalan.

Sumber rujukan

  1. Laman sukatan Cambridge IGCSE Computer Science 0478

Dikemas kini:

Langkah seterusnya

Jika jadual jejak anda tersasar satu baris atau satu daftar, guru satu dengan satu boleh memerhati anda menjejak atur cara dan mencari langkah tempat nilai menjadi salah.

Kelas percubaan berbayar satu jam pada kadar guru yang disahkan, bermula RM80.

Tuisyen diatur bersama ibu bapa atau penjaga. Hantar halaman ini kepada mereka melalui WhatsApp supaya mereka boleh bertanya bagi pihak anda.

Ibu bapa: tanya di sini

  • 9,000+ pelajar telah dibantu melalui perkhidmatan kami
  • 9+ tahun membantu pelajar IGCSE