Rastlantısal Veriden Mimari Kesitlere: Bir Donanım Gözlemi
Son birkaç haftadır üzerinde çalıştığım küçük bir proje var. Teorik olarak basit görünüyor: bir mikrodenetleyiciden sürekli, farklı bir çıktı üretmek. Ancak bu "basitlik" algısı, her zaman en büyük yanılgıyı barındırır. Özellikle donanım ve yazılımın kesiştiği bu noktada, rastgelelik kavramı, kahve telvesindeki bir desen kadar karmaşık bir hal alabiliyor.
Biz yazılımcılar, çoğu zaman büyük yapıları tasarlarken, bu yapıların atomik hareketlerini, yani en küçük bir bit değişimini göz ardı etme eğilimindeyiz. Bir algoritma yazıyorum diyelim; girdiyi alıp, belirli bir dönüşüm geçirerek çıktıyı belirliyorum. Bu süreç mükemmel bir kontrol altında olmalı. Ancak bazen, kontrolü bilinçli olarak gevşetmeye karar veriyorum.
Tohumun Seçimi ve Kaosun Doğuşu
Projemde, bir seri bağlı sensörden gelen veriyi alıp, bu veriye göre bir sonraki komut dizilimini belirliyorum. Eğer bu komut dizilimi tamamen deterministik olsaydı, sistem sadece bir döngüye girerdi ya da benim her zaman öngörebileceğim bir davranış sergilerdi. Oysa benim ilgimi çeken, bu öngörülemezlik potansiyeli.
Bu öngörülemezliği en doğal haliyle yakalamak için, bir önceki durumun küçük, neredeyse gözden kaçan bir parametresini yeni durumu belirleyen kritik bir girdiye ekliyorum. Bu, bilgisayar bilimindeki "hal makinesi" kavramının, fiziksel bir uygulamaya uyarlanmış hali gibi. Her bir direnç değeri, her bir kapasitörün üzerindeki gerilim düşüşü bile, bu büyük sistemin başlangıç durumuna bir bilgi yüklüyor.
Bu aşamada, benim için her bir mikrodenetleyicinin kaydettiği zamanlayıcı (timer) sayıcısı, evrenin o anki mikro ölçekli birikimi gibi. O sayacın taşmasıyla oluşan taşma biti (overflow bit), benim için bir sonraki büyük mimari değişikliğin fitilini ateşliyor.
Akışkanlık ve Donanım Sınırları
Burada devreye olanın sanatsal tarafına giriyorum diyebilirim. Yazılım tarafında, bir sonraki komutun XOR işlemiyle değiştirilmesi gibi basit bir mantık kullanıyorum. Ancak bu mantığın fiziksel olarak nasıl gerçekleştiğini düşünmek gerekiyor. Bu XOR operasyonu, eğer onu besleyen girişler (sensör okumalarıyla dolan o taşma biti) birazcık bile kaymışsa, çıktının tamamen farklı olması demek.
Bu durum, bana İstanbul'un sisli sabahlarında gözlemlediğim sahnelere benziyor. Sis tabakası, birbirinden bağımsız olan iki ayrı sahneyi birleştirip, onları tek bir, sürekli değişen görüntüye kavuşturuyor. Eğer ilk sahne (veri kaynağı) sabitse, sis (işlemci/algoritma) ile son sahne (çıktı) arasında tutarlılık aranır. Ama eğer sisin kendisi bile değişkenlik gösteriyorsa, ortaya çıkan görüntü bir "anlık kesit" olmaktan öte, yaşayan bir varlık haline geliyor.
Bu dengeyi kurmak, bir mimari taslağı çizmektir. Bir ucunda saf matematiksel kesinlik, diğer ucunda ise fiziksel dünyanın kaotik, küçük ölçekli gürültüsü var. Benim görevim, bu iki uç arasında köprü kurmak ve bu köprünün kendisini, yani geçiş sürecini belgelemek oluyor. Ve itiraf etmeliyim ki, bu geçiş süreçleri, her zaman en doyurucu kısım oluyor.