Kendi Bilgisayarınızı Kendiniz Yapabilir misiniz?

Bu makalede bir dönem haberlere çıkan yerli anakart veya kendi bilgisayarını üretenleri görüp acaba bu mümkün mü diye kafalarında soru işareti oluşanlar için bu konuyu açıklamaya çalışacağım.

Kendi Bilgisayarınızı Yapmak

Bir bilgisayarı tasarlayıp meydana getirmek bilgisayar mühendisliğinin çalışma alanına girmektedir. Burada bu tasarımın donanım ve yazılım olarak ayrıldığını ve işin en temelinde mimarinin olduğunu söyleyebilirim. Yani sıfırdan bir bilgisayar yaptım diyebilmek için kendi mimariniz üzerine tasarladığınız işlemciyi bir bilgisayar sistemi haline getirebilmeniz gereklidir. Bunun için en başta dijital elektronik olmak üzere dijital tasarım, programlanabilir mantık, donanım tanımlama dilleri, bilgisayar mimarisi ve organizasyonu gibi mühendislik konularında teorik bilgiyi edinmenin yanı sıra pratik yönden de bir birikime sahip olmak şarttır.

Sıfırdan kendi mimarinizi tasarlamanın farklı yolları mevcuttur. İsterseniz bunu transistör seviyesinde bile yapabilirsiniz, isterseniz 74 serisi mantık entegreleri ile isterseniz de en modern şekliyle programlanabilir mantık aygıtları üzerinden donanım tanımlama dillerini (HDL) kullanarak yapabilirsiniz. Günümüzde ARM gibi mimari tasarlayan firmalar bu şekilde tasarım yapmakta ve yaptıkları işlemci tasarımının kodunu mikrodenetleyici tasarlayıp üretecek ya da işlemci üretecek firmalara lisans karşılığında vermektedir. Bunun dışında mesela programlanabilir mantık aygıtlarına yönelik Cortex-M1 çekirdeğini kod olarak indirip elinizdeki bir FPGA kartına yükleyerek bir işlemciyi meydana getirebilirsiniz.

Bunun sadece donanım olduğunu ve gerekli yazılım olmadan yaptığınız bilgisayar sisteminin hiçbir işe yaramayacağını bilmeniz gereklidir. Sıfırdan bir mimari tasarlayıp sistemi yapsanız dahi bunun için en azından bir Assembler yazılımına ihtiyaç vardır. Bunun yanında kullanılabilmesi için temel sistem yazılımlarının beraberinde gelmesi gereklidir. Kimse sizin ürettiğiniz boş bir bilgisayar üzerine işletim sistemi, C derleyicisi, kütüphane ve sürücü kolleksiyonu yazmak için zahmete girmez. Üstelik tasarlanan çip üretime geçmeyip programlanabilir mantık seviyesinde bile olsa bunu bir kart üzerinde çalıştırma ihtiyacı vardır. Basit seviyede kart tasarımında çok usta olmanız şart olmasa da GHz mertebesindeki sinyallerde buna yönelik bir kart tasarlamak için ayrı bir uzmanlık gerekir. Üstelik FPGA aygıtları da belli bir karmaşıklığa kadar uygun bir çözüm olacaktır. Çok karmaşık bir mimariyi programlanabilir mantık üzerinde çalıştırmak kendisini üretmekten kat kat maliyetli hale gelecektir.

Kısacası bir kişinin sıfırdan bir bilgisayar mimarisi tasarlayıp bunu üretip piyasaya sürmesi tamamen zararına olacak bir iştir. Bu yüzden bu tarz işleri o işi yapan firmalar dışında basit seviyede genellikle eğitim amaçlı amatör işler ya da akademik çalışmalar olarak görmekteyiz. Zamanında böyle bir mimari ile çıkıp, imkanlara sahip olup piyasada yer edinenler olmuştur elbette. Mesela AVR mimarisi ilk olarak yüksek lisans tezi olarak ortaya çıkıp sonrasında Atmel firması ile devam etmiştir. Ama şu an için bu coğrafyada bu alanda çalışmanın tamamen zararına olacağını düşünmekteyim.

Günümüzde bazı mimariler tekel haline gelmiş ve hatta bu mimarilerle belli yazılımları kullanmanız şartken kendi başınıza bunlara rakip olacak bir seviyede donanım ve yazılımla ortaya çıkmanız için bile elinizde bir arge birikimi, bu alanda bir tecrübe birikimi ve tecrübeli ekibe ihtiyacınız vardır. Bu firmalar bu seviyeye gelmek için belki onlarca yıl tecrübe kazanmışken sizin buna sıfırdan başlayıp bu seviyeye gelmeniz gereklidir.

Kendi Anakartınızı Üretmek

Yukarıda ticari nitelikte bir bilgisayarı sıfırdan tasarlayıp üretmenin zorluğundan bahsettim. Bu sizin sıfırdan bir bilgisayar yapamayacağınız anlamına gelmez. Ama yaptığınız bilgisayar günümüz teknolojisinde ticari bir değere sahip olacak kadar gelişmiş olamaz. Bu işten para kazanmayı hedeflemiyorsanız çip üretmek zorunda kalmadan, programlanabilir mantık aygıtlarıyla hem açık kaynaklı pek çok hazır çalışmayı inceleyip geliştirebilir hem de isterseniz kitaplardaki teorik bilgileri pratiğe dökebilirsiniz. Bunun dışında bu kadar derine inmek istemezseniz mevcut entegrelerle kendi bilgisayar kartınızı tasarlamayı tercih edebilirsiniz.

Yalnız bilgisayar kartı tasarlamanın çok nitelikli ve orijinal bir iş olduğunu çok fazla düşünmeyin. Üstelik üst seviye kartlarda PCB tasarım ve üretimi için iyi bir ekibe ve üretim imkanına sahip olmanız gereklidir. Normal bir bilgisayar anakartının en az 4 katmandan başlayıp 8 katmana kadar gidebildiğini unutmayınız. Bu kadar inceliğe rağmen anakartlar anakart olarak diğer parçalara göre oldukça cüzi fiyatlardan satılmaktadır. Dünyada bu tarz anakart üreten firmaların hemen hepsi sürümden kazanmaktadır. Sizin bunlara rakip olarak bir ürün ortaya koymanızın bir anlamı olmayacaktır.

Bunun dışında Raspberry PI gibi tek kart bilgisayar tasarımı ufak çaplı veya bireysel çalışmalar için daha uygun görünmektedir. Bazı ürünleri sadece çift taraflı PCB tasarımı ile meydana getirebilirsiniz. Bu tarz kartlarda genellikle x86 mimarisi değil de ARM mimarisini kullanan SoC çipler kullanılmakta ve birkaç yongayı birbirine bağlayarak bile bir bilgisayar sistemi ortaya koyabilmektesiniz. Yalnız bu tasarımların bir mikrodenetleyici kartı tasarlamak kadar basit olmadığını GHz mertebesindeki sinyallerde ayrı bir tasarım uzmanlığı gerektiğini unutmayınız. Bir mikrodenetleyici ile bilgisayar sistemi kurmak için breadboard, jumper kablosu ve birkaç devre elemanı bile yeterlidir. Bir mikrodenetleyici kartı da prensipte bir bilgisayar kartı sayılsa da kendi bilgisayarımı yaptım diyebilmek için daha derinlere inmek gereklidir.

Tek kart bilgisayar olarak anakart, işlemci, RAM gibi bileşenlerle beraber üretilen anakartların onlarca çeşidini Çin menşeili firmalardan oldukça uygun fiyatlara zaten bulabilirsiniz. Başta söylediğim gibi bunu yapmak büyük bir başarı değildir ve sürümden kazanmak şarttır. Bunun dışında Z80, 6502 gibi eski işlemcilerle bu tarz kartlar yapan amatörler de mevcuttur.

Resim: https://ciernioo.files.wordpress.com/2018/02/sbc_main_photo.jpg

Bu tarz çalışmalar günümüzde ancak eğitim açısından faydalı olabilir. Okulda kağıt üzerinde 8086, Z80 gibi işlemcileri öğrenmek yerine bunu uygulayarak öğrenmek çok daha faydalı olacaktır. Bilgisayar mühendisliği öğrencilerinin gömülü sistemler alanında çalışmayacak olsalar dahi okulda gördüğü dersleri uygulayarak öğrenmek için gömülü sistemler üzerinde bir miktar çalışmalarının gerektiğini düşünmekteyim. Böylelikle bu derslerin gereksiz olmadığını, işin temellerini bilmenin bakış açısını oldukça geliştirdiğini daha rahat anlamış olurlar.

Bunun dışında isterseniz işi daha ayrıntılı öğrenmek adına 74 ve 40 serisi mantık yongalarını kullanarak daha temelden bir bilgisayar yapabilirsiniz. Bunun en büyük örneği Ben Eater’in breadboard bilgisayarı olsa da bunun daha gelişmişini yapmak pek ala mümkündür.

Resim: https://eater.net/images/8bit-computer.jpg

Bu mimariyi PCB’ye aktaranlar da mevcuttur.

Resim: https://hackster.imgix.net/uploads/attachments/983820/1_OQn-jSdJC4Ktbygoq0LtlQ.jpeg?auto=compress%2Cformat

Bu tarz çalışmalar bilgisayar mühendisliğinin temellerini öğrenmek için eşsiz bir imkan vermektedir. Eğer ARM, Intel, AMD, Asus gibi firmaların ilgili departmanlarında çalışmayacaksanız iş amaçlı bu konulara kafa yormanızın çok da bir anlamı yoktur. Pek çok firma sizi işe alırken kendi işlemcinizi ya da kendi anakartınızı yapıp yapmadığınıza değil kendi işlerini yapıp yapamayacağınıza bakacaktır! O yüzden bilgisayar mühendisliği okuyanların pek çoğu piyasada programcılık yaparak bir iş bulabilmektedir. Ben de şahsen bu konulara amatör olarak vakit ayırıp profesyonel anlamda kendimi web geliştiriciliğinde ilerletmeye çalışıyorum. Eğer iyi bir kazanç elde edeceğimi bilseydim kendi anakartımı, kendi işlemcimi tasarlayıp yapmaya kafa yorardım. Değil bu işten para kazanmak, bu tarz amatör çalışmaları gerçekleştirmek için bile ciddi bir maddi külfetin altına giriyorsunuz. Artık öğrenciler değil bunları yapmakla uğraşmayı, bir geliştirme kartını almak için bile 10 defa düşünmekteler.

Bilgisayar Toplamak

Bir de işin mühendislik değil teknisyenlik tarafının olduğunu unutmayalım. Kendi bilgisayarınızı toplayarak da bir bakıma bir bilgisayar yapmış oluyorsunuz. Hazır bilgisayar kartı alıp, ekran bağlayıp bunu bir kutu içerisine koyup hazır işletim sistemini yüklemekle bir bilgisayar toplamış olursunuz ama ne derece “yerli bilgisayar” yapmış olursunuz tartışılır. Bu tarz teknisyen işleriyle haberlere çıkanlar aşağı yukarı bu seviyede iş yapmaktadır. Ben şahsen meslek lisesi okumadan önce 8. sınıftayken bile kendi kafamdan istenilen bütçeye göre bilgisayar toplayacak derecede bu işi biliyordum. Bir tarafta sıfırdan bir mimari tasarlamak varken bir tarafta da hazır parçaları birleştirip bir bilgisayar sistemi ortaya koymak var. Bir dönemler toplama bilgisayar yapmakla iyi para kazanılabilse de artık herkes Youtube’dan bunu izleyip kolayca yapabilecek seviyeye gelmiştir. Bir dönem bazı yerli (!) bilgisayarların etiketlerini söktüğünüzde alt tarafta yabancı bir markanın etiketi çıkmaktaydı. :)

İşin Yazılım Tarafı

Her ne kadar bir bilgisayar mimarisi tasarlasanız, işlemci üretseniz ya da anakart üretseniz de yazılım desteği olmadan elinizdeki süs eşyasından farksız olacaktır. Pek çok anakart üreticisi bu yüzden ya ARM ya da x86 mimarilerine bağlı kalmakta ve en azından Linux işletim sistemini destekleyecek bir donanım üretmeye çalışmaktalar. Üretilen tek kart bilgisayarların büyük çoğunluğu Linux tabanlı çalışmakta. Hiçbir anakart ya da çip üreticisi işletim sistemi ya da diğer sistem yazılımlarını baştan yazmaya kalkmamaktadır. Ancak yaptıkları ürünün ilgili işletim sistemlerinde sorunsuz çalışması için sürücü yazılımlarını kendileri yazmaktadır veya bir Linux veya Android dağıtımını alarak kendi sistemlerine uygun hale getirmektedir. Her ne kadar donanım noktasında biraz özgür olsanız da iş yazılım tarafına geldiğinde eliniz kolunuz bağlanmaktadır. Sıfırdan kendi mimarinizi tasarlayıp, ürettiğiniz çiple bir anakart meydana getirseniz de yazılım tarafında Linux, Windows vb. işletim sistemlerine uyumlu olması gerekecektir. Eğer uyumlu değilse mimariye uygun derleyicileri ve sistem yazılımlarını sizin yazmanız şart olacaktır.

Özetlemek gerekirse günümüzde bilgisayar donanımının altın çağı yaşanmamaktadır. Apple II tarzı garajda bireysel çalışmaların ürünü olarak ortaya çıkan bilgisayarlar ancak 1980'lerin başında piyasada yer edinebiliyordu. Şimdi uygulama yazılımı ve yapay zeka, makine öğrenmesi gibi bilgisayar bilimlerinin uzmanlık dallarının konuşulduğu bir dönemdeyiz. Bir bireysel çalışmanın ses getirebilmesi için zamanının trendine uymasının gerektiğini unutmayınız. Şu an bir kişinin geliştirdiği kütüphaneler ve uygulamalar ses getirebilmektedir. Amatör ya da eğitim amaçlı olmadıktan sonra kendi çalışmalarınızla bir bilgisayar donanımı ortaya koymanız çok da bir anlam ifade etmeyecektir. Bunun yerine veri bilimi, yapay zeka, doğal dil işleme ve makine öğrenmesi gibi yeni konularda kimsenin daha önce yapmadığı spesifik işleri yapmaya çalışmak daha makuldur.

--

--