NandGame – Sıfırdan bilgisayar yapmanın yolu
(nandgame.com)- NandGame, basit mantık parçalarından başlayıp sonunda programlanabilir bir bilgisayar monte ettiğiniz eğitici bir bulmaca oyunudur
- Her seviye, belirtilen özelliklere göre çalışan bir bileşen oluşturma görevidir; tamamlanan parçalar sonraki aşamanın yapı taşları haline gelir
- Bilgisayar mimarisi veya yazılım konusunda ön bilgi gerekmez; matematikte de toplama ve çıkarma düzeyi yeterlidir, ancak bazı görevler zaman alabilir
- İlk görev, girişler
avebikisi de1olduğunda çıktısı yalnızca0olan nand bileşenini kablolar ve rölelerle gerçekleştirmektir - Araç kutusundaki parçaları mavi alana sürükleyip yerleştirirsiniz; boşluk çubuğu, yön tuşları ve Escape ile sürükleme ve iptal işlemleri yapılır
Temel parçalardan bilgisayara
- NandGame, temel bileşenleri birleştirerek giderek daha güçlü parçalar oluşturduğunuz ve en sonunda programlanabilir bir bilgisayar kurduğunuz bir yapıda ilerler
- Birden fazla seviyeye ayrılmıştır; her aşamada verilen spesifikasyona uygun şekilde çalışan bir bileşen yapmanız gerekir
- Tamamlanan bileşen, sonraki seviyelerde kullanılabilecek bir parça olur
- Başlangıç noktası en basit mantık bileşenidir
Gerekli ön bilgi ve zorluk
- Bilgisayar mimarisi veya yazılım hakkında ön bilgi gerekmez
- Matematikte toplama ve çıkarmadan fazlası istenmez
- Bazı görevlerin çözümü zaman alabileceğinden sabır gerekir
İlk görev: nand yapmak
- İlk görev, kablolar ve röleler kullanarak nand bileşenini gerçekleştirmektir
avebgirişlerini çıkışa bağlarken, spesifikasyona uygun davranış üretecek bir devre kurmanız gerekir1, akımın aktığı durumu;0, akımın akmadığı durumu ifade ederVgirişi her zaman1olan sabit akım taşır
nand spesifikasyonu
nandçıkışı, yalnızca iki girişin ikisi de1olduğunda0olur- Kesin giriş-çıkış spesifikasyonu şöyledir
| a | b | Çıkış |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Kullanım şekli
- Araç kutusundaki bileşenleri mavi alana sürükleyip yerleştirirsiniz
- Sürüklenebilir bir öğeyi almak için boşluk çubuğuna basın
- Sürükleme sırasında öğeyi yön tuşlarıyla hareket ettirin
- Yeniden boşluk çubuğuna basınca yeni konuma bırakılır, Escape tuşuna basınca iptal edilir
1 yorum
Hacker News yorumları
Bu oyunu sevdiğim için küçük bir FPGA geliştirme kartı satın alıp kendi komut kümesini ve soft CPU’mu yapmayı denedim
Pratik değildi ama eğlenceli bir alıştırmaydı; açık kaynak ekosistemi iyi ve fiyatı düşük olduğu için iCE40 kartını seçtim: https://www.digikey.com/en/products/detail/lattice-semicondu...
Şimdi daha iyi seçenekler olabilir
Çoğu kişi muhtemelen alelacele bir USB dönüştürücü yapardı, ama Wirth işi düzgün yapmak için bir FPGA kartı alıp bir soft CPU yaptı; sonra bunun üstüne OS, pencere sistemi, dil araç zinciri gibi şeyleri kurdu
Bu sayede donanım tasarım uygulamaları ve metin editörünü çalıştırıp, sevdiği fareyle daha fazla soft CPU tasarımını deneyebildi
Benzer bir oyun olan Turing Complete'i oynadım ve gerçekten çok eğlenceliydi: https://store.steampowered.com/app/1444480/Turing_Complete/
Nand2Tetris kitabına çok benziyor
Makineyi 32 bit komutlara yükselttim ve buna uygun assembly dili dokümantasyonunu bile yazdım
Hâlâ erken erişimde olmasına rağmen harika bir oyun
Güzel görünüyor, iyi cilalanmış ve oldukça bağımlılık yapıcı
GOG'da da olması güzel: https://www.gog.com/game/turing_complete
İlgili yazılar:
NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=36862274 - Temmuz 2023
NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=31055307 - Nisan 2022
NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=25282507 - Aralık 2020
Show HN: Online challenge: Build a CPU from scratch - https://news.ycombinator.com/item?id=17508151 - Temmuz 2018
Gerçekten eğlenceli bir alıştırma
Buna bakınca ne kadar çok şey unuttuğumu hatırlayıp buruk hissediyorum
20 yıldan uzun süre önce üniversitede elektrik mühendisliği okudum ve bilgisayar mimarisi alanında uzmanlaştım, ama meslek hayatımda bunu hiç kullanmayıp yazılım tarafına geçtim
Buradaki şeylerin nasıl yapıldığını hiç hatırlamıyordum; deneme yanılma sonunda ancak bir yarım toplayıcı yapabildim
Tahıl Yasaları'nı kimin geçirdiğini ya da ABD'de soğutmalı taşımacılığı ilk kimin başlattığını hatırlayamadığın için kendini suçlamaya benziyor
Esas anlatıyı, örneğin savaşların mühendislik gerektirdiğini, ardından tarım devrimi ve sanayi devriminin geldiğini, tarihin de sınıf mücadelesi olduğunu anlıyorsan; yeni bilgiler manyetik alan içindeki parçalar gibi yerlerine oturur
O yüzden kendini fazla hırpalama; kendine biraz daha nazik olabilirsin
Bu oyunu ve Nand2Tetris kursunu da ancak ikisini birden yaptıktan sonra aynı bilgisayarı hayata geçirdiklerini fark ettim
Bu oyun etkileşimli, grafiksel bir sürüm; orijinal Nand2Tetris ise mantık kapıları arasındaki bağlantıları tıklayıp sürüklemek yerine metin tabanlı HDL ile yazılıyor
İkisi de eğlenceli ve eğiticiydi ama NandGame tarafı daha eğlenceliydi
Yine de aralarındaki bağlantıyı bilmek faydalı. NandGame'i bitirdikten sonra Nand2Tetris'in devam niteliğindeki, yani daha üst katmandaki bilgisayar yazılımı çalışmalarına geçebilirsin; ayrıca ters sürümü yapan insanlarla deneyim ve içerik paylaşmak da daha kolay olur
Ödevleri yapmak için üniversite ders kitaplarımı ve sınav kâğıtlarımı bile tekrar çıkarmam gerekti; CPU'nun kritik kısımlarının neredeyse tamamlanması gereken noktaya gelince de bıraktım
Dersler ve metin bana açıkçası oldukça yetersiz geldi; internet çağında bunun normal olup olmadığını bilmiyorum ama dersin ve kitabın bir ölçüde kendi içinde yeterli olmasını bekliyordum
Andrew Wilkes'in masaüstü tabanlı LogicSimX/Logic Simulator 2 uygulaması: https://logicsimx.com/about/ https://andrew-wilkes.itch.io/logic-simulator-2
İyi görünüyor ama düzgün değerlendirecek kadar bilmiyorum
Düşünmeye değer bir nokta olarak, ilk aşamada NAND kapısını fiziksel olarak yapma kısmını çıkarırsak, bu sürecin sonunda ortaya çıkan şey aslında sinir ağına oldukça benzer bir yapı oluyor
Tek bir NAND kapısını ifade etmek için 2 nöron gerekiyor; derinliği n olan katmanlar, ağırlık matrisinde çok sayıda 0 ve biraz da depolama alanı olan bir yapı gibi görünüyor
Soru şu: Yalnızca assembly düzeyindeki giriş/çıkış anlamı verildiğinde, boş bir sinir ağını eğitip böyle bir yapıya dönüştürmek mümkün olur mu? Geri yayılım elbette olmaz ama, bir tür yönlendirilmiş arama mümkün değil mi?
3-çoğunluk kapısı ve çeşitli başka kapılar kullandık ama bir katmanın ötesine geçince geri yayılım pek çalışmadı; muhtemelen bit hassasiyeti yetersizdi
“Geri yayılım olmadan eğitim” problemi gerçekten oldukça zor ve sonunda vazgeçtik
Geri yayılım olmadan sinir ağlarını eğitmek için iyi bir yöntem var mı? Bilgi darboğazı bir yere kadar var gibi görünüyor ama sinir ağı olmadan karşılıklı bilgiyi değerlendirmek zor
Bu konuda hiç deneyimim yok; her bileşenin ne yaptığını açıklarsanız sevinirim
rölenin ne yaptığını,
cileinin ne olduğunu bilmiyorumAyrı bir güç kaynağı varken neden
aya dabyi güç kaynağına bağlayıp açınca bunun tek başına da enerji sağlayabildiği de kafamı karıştırıyorBobine (
c) enerji verildiğinde anahtarın durumu varsayılan durumunun tersine dönerVarsayılanı açık olan anahtar,
c = 0ikenindeğerini çıkışa iletir; ancakc = 1olduğunda bobin enerjilenir ve anahtar açılır ya da kapanırVarsayılanı kapalı olan anahtar ise bunun tersine çalışır
c, bobindir; enerji verildiğinde anahtarı değiştiririn, anahtar kapalıyken içinden geçen değerdir; burada bu değer 1 veya 0'dırAyrı güç kaynağı, iki giriş değerinden bağımsız olarak 1 değerini elde etmek için gereklidir
Örneğin iki giriş de 0 iken her durumda 1 çıkışı üretmek istiyorsanız, yukarı çekecek yüksek bir değere ihtiyaç vardır; bu görevi güç kaynağı görür
Cmuhtemelen coil veya control kelimelerindeki C'dirRöle, demir çekirdek üzerine sarılmış bir bobinden oluşan elektromıknatısın kontrol ettiği mekanik bir anahtardır
Bobinden akım geçtiğinde metal yayı kendine çeker; bunun sonucunda akımın
inden çıkışa akmasına izin verebilir ya da tam tersine kesebilirSunulan iki tür röle bileşeni tam olarak bu iki davranışı temsil ediyor
Gerçekten harika. Herkesin MHRD'ye de bir göz atmasını veya oynamasını tavsiye ederim
https://store.steampowered.com/app/576030/MHRD/
Harika görünüyor. Kitabı sonuna kadar bitirememiş olmam üzücü; bunu daha fazla denemek isterim