NandGame – Cara Membuat Komputer dari Nol
(nandgame.com)- NandGame adalah gim puzzle edukatif yang dimulai dari komponen logika sederhana hingga akhirnya merakit komputer yang dapat diprogram
- Setiap level adalah tugas membuat komponen yang bekerja sesuai spesifikasi, dan komponen yang sudah selesai menjadi blok bangunan untuk tahap berikutnya
- Tidak diperlukan pengetahuan awal tentang arsitektur komputer atau perangkat lunak, dan matematika setingkat penjumlahan dan pengurangan sudah cukup, meski beberapa tugas bisa memakan waktu
- Tugas pertama adalah mengimplementasikan komponen nand dengan kabel dan relai, yang output-nya menjadi
0hanya ketika inputadanbkeduanya1 - Tempatkan komponen dari toolbox dengan menyeretnya ke area biru; gunakan spasi, tombol panah, dan Escape untuk menyeret serta membatalkan
Dari komponen dasar hingga komputer
- NandGame berjalan dengan cara menggabungkan komponen dasar untuk membuat komponen yang semakin kuat, hingga pada akhirnya menyusun komputer yang dapat diprogram
- Gim ini terbagi menjadi beberapa level, dan pada setiap tahap Anda harus membuat komponen yang bekerja sesuai spesifikasi yang diberikan
- Komponen yang sudah selesai menjadi bagian yang dapat digunakan pada level berikutnya
- Titik awalnya adalah komponen logika yang paling sederhana
Pengetahuan awal yang diperlukan dan tingkat kesulitan
- Tidak diperlukan pengetahuan awal tentang arsitektur komputer atau perangkat lunak
- Matematika yang dibutuhkan tidak lebih dari penjumlahan dan pengurangan
- Beberapa tugas bisa memerlukan waktu untuk diselesaikan, sehingga dibutuhkan kesabaran
Tugas pertama: membuat nand
- Tugas pertama adalah mengimplementasikan komponen nand menggunakan kabel dan relai
- Hubungkan input
adanbke output, tetapi rangkai sirkuit agar menghasilkan perilaku sesuai spesifikasi 1berarti keadaan ketika arus mengalir, sedangkan0berarti keadaan ketika arus tidak mengalir- Input
Vmengirimkan arus konstan yang selalu bernilai1
Spesifikasi nand
- Output
nandmenjadi0hanya ketika kedua input bernilai1 - Spesifikasi input-output yang tepat adalah sebagai berikut
| a | b | output |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Cara pengoperasian
- Seret komponen dari toolbox ke area biru untuk menempatkannya
- Tekan spasi untuk mengambil item yang dapat diseret
- Saat sedang menyeret, gunakan tombol panah untuk memindahkan item
- Tekan spasi lagi untuk meletakkannya di posisi baru, dan tekan Escape untuk membatalkan
1 komentar
Komentar Hacker News
Karena suka game ini, saya membeli board pengembangan FPGA kecil dan mencoba sendiri membuat set instruksi serta soft CPU
Memang tidak praktis, tapi ini latihan yang menyenangkan, dan karena ekosistem open source-nya cukup baik serta harganya murah, saya memilih board iCE40: https://www.digikey.com/en/products/detail/lattice-semicondu...
Sekarang mungkin ada pilihan yang lebih baik
Orang biasa mungkin akan asal membuat konverter USB, tetapi Wirth memilih menanganinya dengan benar: ia mengambil board FPGA, membuat soft CPU, lalu menjalankan OS, sistem window, toolchain bahasa, dan sebagainya di atasnya
Hasilnya, ia bisa menjalankan aplikasi desain hardware dan editor teks, sambil bereksperimen dengan lebih banyak desain soft CPU menggunakan mouse favoritnya
Saya pernah memainkan game serupa, Turing Complete, dan itu benar-benar menyenangkan: https://store.steampowered.com/app/1444480/Turing_Complete/
Sangat mirip dengan buku Nand2Tetris
Saya meng-upgrade mesin itu menjadi instruksi 32-bit, dan bahkan menulis dokumentasi bahasa assembly yang sesuai
Meski masih early access, ini game yang luar biasa
Tampilannya bagus, pengerjaannya rapi, dan cukup adiktif
Menyenangkan juga karena tersedia di GOG: https://www.gog.com/game/turing_complete
Tulisan terkait:
NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=36862274 - Juli 2023
NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=31055307 - April 2022
NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=25282507 - Desember 2020
Show HN: Online challenge: Build a CPU from scratch - https://news.ycombinator.com/item?id=17508151 - Juli 2018
Ini benar-benar latihan yang menyenangkan
Melihat ini membuat saya getir karena teringat betapa banyak hal yang sudah saya lupakan
Lebih dari 20 tahun lalu saya kuliah teknik elektro dan mengambil spesialisasi arsitektur komputer, tetapi secara profesional sama sekali tidak memakainya dan akhirnya masuk ke ranah software
Saya sudah tidak ingat lagi bagaimana melakukan apa pun yang ada di sini, dan setelah banyak trial and error saya baru berhasil membuat half adder
Ini mirip seperti menyalahkan diri sendiri karena tidak ingat siapa yang meloloskan Corn Laws, atau siapa yang memulai transportasi berpendingin di Amerika
Jika Anda memahami narasi intinya—misalnya bahwa perang menuntut rekayasa, lalu diikuti revolusi pertanian dan revolusi industri, dan bahwa sejarah adalah perjuangan kelas—maka informasi baru akan menempatkan diri pada posisinya seperti potongan-potongan dalam medan magnet
Jadi jangan terlalu keras pada diri sendiri; Anda boleh sedikit lebih berbaik hati pada diri sendiri
Baru setelah mencoba game ini dan kursus Nand2Tetris saya sadar bahwa keduanya mengimplementasikan komputer yang sama
Game ini adalah versi grafis interaktif, sedangkan Nand2Tetris aslinya menggunakan HDL teks alih-alih klik dan drag koneksi antar gerbang logika
Keduanya menyenangkan dan edukatif, tetapi NandGame terasa lebih seru
Meski begitu, ada baiknya mengetahui hubungan antara keduanya. Setelah menyelesaikan NandGame, Anda bisa lanjut ke tugas lanjutan Nand2Tetris, yaitu pekerjaan software komputer di level yang lebih tinggi, dan juga lebih mudah berbagi pengalaman serta isi dengan orang-orang yang mencoba versi kebalikannya
Untuk mengerjakan tugasnya, saya sampai harus mencari lagi buku teks dan lembar ujian zaman kuliah, lalu menyerah kira-kira saat sudah hampir menyelesaikan bagian inti CPU
Sejujurnya saya merasa kuliah dan teksnya sangat kurang, dan entah ini memang umum di era internet atau tidak, tetapi saya berharap kelas dan materi ajarnya cukup self-contained
Yaitu LogicSimX/Logic Simulator 2 berbasis desktop dari Andrew Wilkes: https://logicsimx.com/about/ https://andrew-wilkes.itch.io/logic-simulator-2
Kelihatannya cukup bagus, tetapi saya belum cukup tahu untuk menilainya dengan baik
Sebagai bahan pemikiran, jika pada tahap pertama kita mengecualikan bagian membuat gerbang NAND secara fisik, maka saat proses ini selesai bentuk akhirnya justru akan sangat mirip dengan jaringan saraf
Untuk merepresentasikan satu gerbang NAND dibutuhkan 2 neuron, dengan lapisan sedalam n, banyak angka 0 di matriks bobot, dan struktur yang tampak seperti memiliki sedikit ruang penyimpanan
Pertanyaannya adalah ini. Jika hanya diberi semantik input/output pada level assembly, apakah mungkin melatih jaringan saraf kosong hingga menjadi struktur seperti ini? Backpropagation jelas tidak akan bisa dipakai, tetapi mungkinkah ada bentuk pencarian terarah tertentu?
Kami mencoba gerbang 3-mayoritas dan berbagai gerbang lain, tetapi setelah melewati satu lapisan backpropagation tidak bekerja dengan baik, kemungkinan karena presisi bit yang kurang
Masalah melatih “tanpa backpropagation” ternyata memang cukup sulit dan pada akhirnya kami menyerah
Adakah metode yang lumayan bagus untuk melatih jaringan saraf tanpa backpropagation? Information bottleneck tampaknya agak memungkinkan, tetapi sulit mengevaluasi mutual information tanpa jaringan saraf
Saya sama sekali tidak punya pengalaman di bidang ini, jadi saya ingin ada penjelasan tentang fungsi tiap komponennya
Saya tidak tahu relay itu apa, juga tidak tahu
cdaninitu apaSaya juga bingung kenapa ada catu daya terpisah, sementara jika
aataubdihubungkan ke daya lalu dinyalakan, bukankah itu sendiri sudah memberi daya?Saat koil (
c) diberi daya, keadaan sakelar berubah dari keadaan default ke kebalikannyaSakelar default-on akan meneruskan nilai
inke keluaran saatc = 0, tetapi jikac = 1koil diberi daya sehingga sakelar terbuka atau matiSakelar default-off bekerja sebaliknya
cadalah koil, dan saat diberi daya akan men-toggle sakelarinadalah nilai yang lewat ketika sakelar tertutup, dalam hal ini 1 atau 0Catu daya terpisah dibutuhkan untuk memperoleh nilai 1 terlepas dari dua nilai input
Misalnya, jika kedua input sama-sama 0 tetapi kita tetap ingin selalu menghasilkan 1, kita memerlukan nilai tinggi yang bisa ditarik naik, dan peran itu dipenuhi oleh catu daya
Ckemungkinan adalah singkatan dari coil atau controlRelay adalah sakelar mekanis yang dikendalikan elektromagnet yang dibuat dari koil yang dililitkan pada inti besi
Saat arus mengalir melalui koil, ia menarik pegas logam, dan hasilnya arus bisa dialirkan dari
inke keluaran atau justru diputusDua jenis komponen relay yang disediakan menggambarkan tepat dua perilaku ini
Keren sekali. Saya merekomendasikan semua orang untuk juga melihat atau mencoba MHRD
https://store.steampowered.com/app/576030/MHRD/
Kelihatannya keren. Sayang sekali saya tidak sempat menuntaskan bukunya, dan saya ingin mencoba ini lebih banyak lagi