Alat

Pilihan simulator HDL, assembler, dan emulator RISC-V yang dipakai untuk seluruh proyek jalur ini.

Daftar isi

Topik ini memperkenalkan peralatan yang dipakai untuk seluruh proyek pada jalur ini, mulai dari simulator chip hingga emulator RISC-V. Lanskap alat dibahas lebih dahulu agar pilihan yang diambil jalur ini dapat dinilai pada konteksnya, kemudian pemeriksaan lingkungan kerja menutup pembahasan. Setelah topik ini selesai dibaca, semua nama alat yang muncul pada topik-topik teknis sudah memiliki penjelasan beserta cara penggunaannya.

Lanskap alat belajar arsitektur#

Belajar arsitektur komputer tanpa perangkat keras sungguhan sepenuhnya mungkin, karena seluruh rantai dari gerbang hingga sistem operasi dapat disimulasikan. Empat kelompok alat paling sering dipakai untuk keperluan itu, dan masing-masing menutupi bagian tangga yang berbeda. Pemilihan alat menentukan seberapa banyak mekanisme yang terlihat, sehingga lanskapnya perlu dipahami lebih dahulu.

Kelompok pertama adalah suite nand2tetris, yaitu himpunan alat resmi kursus The Elements of Computing Systems. HardwareSimulator menjalankan deskripsi chip yang ditulis dalam berkas .hdl dan mengujinya dengan skrip .tst, sehingga gerbang, ALU, hingga CPU dapat diverifikasi perilakunya satu per satu. CPUEmulator melanjutkan pada lapisan berikutnya dengan menjalankan program bahasa mesin Hack, komputer yang dibangun pada kursus tersebut, sedangkan assembler dan emulator VM (virtual machine) menutup jarak menuju bahasa tingkat tinggi.

Kelompok kedua bekerja pada lapisan assembly. RARS (RISC-V Assembler and Runtime Simulator) adalah program Java yang menyediakan editor, assembler, dan tampilan register dalam satu jendela, sehingga program RISC-V dapat disunting dan dijalankan sambil mengamati isi registernya. Alat jenis ini menjadi pilihan lazim pada banyak kuliah assembly. Kelompok ketiga menaruh simulator di browser. Venus menjalankan assembly RISC-V langsung dari halaman web tanpa instalasi apa pun, cocok untuk percobaan singkat, dengan kelemahan berupa kontrol yang lebih terbatas dibandingkan alat desktop.

Kelompok keempat adalah ekosistem resmi. spike merupakan simulator referensi ISA RISC-V yang menyertai spesifikasinya, sedangkan QEMU adalah emulator sistem yang mampu menjalankan sistem operasi RISC-V utuh. Keduanya menargetkan kesetiaan penuh terhadap spesifikasi, sehingga perilakunya paling dekat dengan perangkat keras sungguhan. Tabel berikut merangkum keenam alat tersebut beserta bagian tangga yang dicakupnya.

AlatBentukBagian tangga yang dicakup
HardwareSimulator (nand2tetris)aplikasi desktop Javagerbang hingga CPU Hack
CPUEmulator (nand2tetris)aplikasi desktop Javabahasa mesin Hack
RARSaplikasi desktop Javaassembly RISC-V
Venusaplikasi browserassembly RISC-V
spikesimulator baris perintaheksekusi RISC-V sesuai spesifikasi
QEMUemulator sistemsistem operasi RISC-V utuh

Tidak ada alat yang keliru dipilih, karena setiap alat dirancang untuk tujuan yang berbeda. Pertimbangan pemilihannya menyangkut keterbacaan, kesetiaan simulasi, dan kebutuhan instalasi, dan tiga hal itulah yang menjadi dasar keputusan pada bagian berikutnya. Sisanya berupa kenyamanan kerja, misalnya keinginan mengamati isi register saat program berjalan.

Pilihan jalur ini: simulator kecil berbasis Python#

Jalur ini mengambil jalan yang berbeda untuk lapisan bahasa mesin ke atas, yaitu simulator kecil berbasis Python yang disertakan langsung di dalam bundle topik, direktori yang menampung index.md beserta aset-asetnya. Simulator semacam ini dijalankan dengan python3, seluruh isi berkasnya dapat dibaca dari baris pertama hingga terakhir dalam satu kali baca, dan perilakunya dapat diubah untuk bereksperimen. Ketiga sifat itu jarang ditawarkan alat besar, yang sumbernya panjang dan tidak dirancang untuk dibaca utuh.

Contoh utamanya adalah sim.py, simulator RV32I dalam satu berkas Python yang diperkenalkan pada modul Bahasa Mesin dan dipakai sepanjang modul tersebut untuk menjalankan program assembly. Modul Hierarki Memori menyertakan simulator cache, yaitu memori perantara, untuk menghitung tingkat miss atau akses yang tidak ditemukan di cache. Modul C pada Perangkat Keras memakai gcc untuk mengompilasi contoh C dan melihat instruksi mesin hasil kompilasinya. Untuk HDL, jalur ini menulis deskripsi chip dalam teks yang gayanya mengikuti konvensi nand2tetris, sehingga berkas .hdl yang dipraktikkan pada modul Logika Boolean dan Gerbang dapat dipahami tanpa alat tambahan.

Pilihan ini menimbulkan biaya yang perlu diakui secara terbuka, yaitu kesetiaan simulasi yang lebih rendah dibandingkan spike atau QEMU. Untuk tujuan memahami mekanisme, kesetiaan penuh bukan syarat, sedangkan keterbacaan kode adalah syarat yang sulit dipenuhi alat besar. Alat resmi tetap dapat dipakai kapan saja sebagai pembanding, karena instruksi dan register RV32I yang dipelajari pada jalur ini sama dengan yang dibaca keduanya.

Memeriksa lingkungan kerja#

Dua runtime menjadi tulang punggung jalur ini. python3 menjalankan seluruh simulator yang disertakan pada bundle, sedangkan gcc mengompilasi contoh-contoh C dari modul C pada Perangkat Keras dan menyediakan opsi untuk melihat instruksi mesin hasil kompilasinya. Node.js turut diperiksa karena tersedia pada lingkungan yang sama dan berguna apabila sebuah topik memerlukan contoh berbasis JavaScript. Jalankan tiga perintah berikut pada terminal untuk mencetak versi ketiganya.

bash
# memeriksa versi python
python3 --version
# memeriksa baris pertama versi gcc
gcc --version | head -n 1
# memeriksa versi node
node --version
text Keluaran
Python 3.12.16
gcc (Debian 14.2.0-19) 14.2.0
v24.22.2

Nomor versi pada keluaran boleh berbeda dari yang tertera di atas, karena yang penting bukan nomornya, melainkan keberadaan runtime tersebut dan kemampuan memanggilnya dari terminal. Apabila python3 atau gcc belum ditemukan, instal keduanya lebih dahulu sebelum masuk ke topik-topik teknis, karena sebagian besar proyek jalur ini dieksekusi melalui keduanya. Perbedaan versi kecil tidak mengubah perilaku contoh pada jalur ini.

Perintah pada topik-topik berikutnya selalu ditulis dengan pola yang sama, yaitu python3 diikuti nama berkas untuk simulator, gcc diikuti opsi dan nama berkas untuk contoh C, serta perintah terminal lain yang pendek. Kebiasaan yang baik adalah menjalankan setiap perintah pada direktori topik yang sedang dibaca, karena sebagian perintah membaca berkas yang terletak di samping halamannya. Dengan pola itu, keluaran yang tercetak di layar selalu dapat dibandingkan dengan blok Keluaran yang menyertai topik.

Ringkasan#

  • Lanskap alat mencakup suite nand2tetris untuk chip dan bahasa mesin Hack, RARS dan Venus untuk assembly RISC-V, serta spike dan QEMU untuk ekosistem resmi.
  • Jalur ini memakai simulator kecil berbasis Python yang disertakan pada bundle topik, dengan sim.py sebagai simulator RV32I pada modul Bahasa Mesin dan gcc untuk contoh C.
  • Lingkungan kerja memerlukan python3 dan gcc, sedangkan node diperiksa sebagai kelengkapan untuk kebutuhan JavaScript.

Referensi#