Assembly Programlama Dili (eKitap )

Bu dokümanda Fehmi Noyan İSİ tarafından hazırlanan, Intel firmasının 80×86 serisi olarak nitelendirilen 8086, 80186, 80286, 80386,
80486 ve Pentium işlemcileri için 16-bit Assembly programlama dili genel yapısı ile anlatılacaktır . Bu sebepten, dokümanda sadece 8086, 80186 ve 80286 (Intel firmasının 16-bit işlemcileri) işlemciler için assembly dili anlatılacaktır. Örnekler MS-DOS işletim sistemi için yazılmıştır. Windows işletim sistemi için assembly programlama 32-bit olup bu dokümanda ele alınmayacaktır. Dokümanda bulunan “Linux Altında Assembly Dili” bölümünde, Linux işletim sistemi altında assembly dilinin kullanımı anlatılmaktadır. Assembly programlama dili ile ilgili elinize geçecek birçok kaynakta bazı temel terim ve ifadeler sürekli orijinal İngilizce halleriyle kullanıldıkları için ben de birçok terimin ve ifadenin Türkçe karşılığını kullanmadım. Bu, bazı durumlarda anlatımı biraz vasatlaştırmışsa da kavramların çok bilinen adları ile öğrenmenin daha faydalı olacağını düşünüyorum.

Kendi Linux Dağıtımınızı Oluşturun (LFS – Türkçe Dökümanı)

Linux From Scratch (LFS), Linux işletim sistemin gerekli bileşenlerini bir araya getirerek, yalnızca kullanım amacına yönelik yeni bir işletim sistemi oluşturmaişlemidir.Bu sayede, Linux dağıtımları ile birlikte gelen ve son kullanıcı tarafından kullanılmayacak programlar ve işlevlerin de işletim sistemi içerisinde yer almaması, böylece de performans ve sabit disk üzerinde kaplanan alan açısından da avantaj sağlanmış olmaktadır.Özellikle web sunucusu, dosya sunucusu, e-posta sunucusu, DHCP sunucusu gibi belirli bir amaca hizmet eden bilgisayarlarda üzerinde sadece ilgili programların olduğu bir işletim sistemi kullanmak bu açıdan faydalı olacaktır.

Bu çalışmada temel seviyede Linux bilgisi olan kullanıcılar için LFS işleminin nasıl gerçekleştirileceği, LFS kitabındaki detaylara girilmemesine karşın, sadece en temeli şlemler adım adım anlatılmıştır.Bu konuda temel kitap niteliği taşıyan Gerard Beekmans‟in Linux From Scratch kitabı daha çok ileri seviye kullanıcıları hedef alan bir kitaptır ve bu çalışmada yer alan Automated Linux From Scratch (ALFS) işlemleri temel LFS üzerinden anlatmaktadır. Çeşitli internet sitelerinde ALFS ile ilgili açıklamalar yer almış olsa da bu çalışmanın amacı, LFS konusunda Türkçe bir kaynak sağlamak, bu konudaki çeşitli çalışmaları bir araya toplamak ve temel seviyedeki kullanıcıların da LFS ile kendi ihtiyaçlarına yönelik bir işletim sistemi yapabilmelerini sağlamaktır ve sonuçta da sadece web sunucusu özelliği olan bir Linux işletim sistemi hazırlamaktır.

Çalışma öncesinde, öncelikle temel Linux bilgisi için bir çalışma yapılmış, Gerard Beekmans‟in Linux From Scratch 6.3 kitabı okunmuş ve ALFS ve LFS konusunda internet üzerinde genel bir araştırma yapılmıştır.Temel Linux bilgisi, yapılan işlemlerin ne işe yaradığı ve işlemler sırasında kullanılan komutları anlamak, LFS kitabı ise işlemlerin neler olduğunu öğrenmek ve konu hakkında ayrıntılı bilgi sahibi olmak, internet araştırması ise bu konuda daha önce yapılan çalışmaların incelenmesi ve konu hakkında daha çok fikir sahibi olmak açısından önem taşımaktadır.

Dökümanı (PDF) indirmek için aşağıdaki bağlantıyı kullanabilirsiniz.

 

RISC-V Komut Seti Mimarisi (ISA) Hakkında birkaç kelam

Yazmakta olduğum kitabıma (şuanki ismi Raspberry Pi ile Linux ve Elektronik Uygulamaları) ARM ile ilgili birkaç kelam eklerken karşılaştığım açık kaynak işlemci komut seti mimarisi olan RISC-V hakkında bazı yorumlarımı ve bilgileri paylaşmak için bu kısa notu yazıyorum. Önce kitabıma ARM hakkında ne yazmıştım onu vereyim:

ARM bilinenin aksine bir işlemci üreticisi değildir, daha çok gömülü sistemler için düşük güç tüketimine sahip RISC mimarisinde çalışan işlemci tasarımları yapar. ARM limited şirketi bu tasarımlarını lisans ücretleri karşılığında çeşitli sistem çipi (SoC) üreticisi firmalara satar (örn: Qualcom, Broadcom, NXP vb.). 1980’lerin başından beri farklı üreticiler tarafından yüzlerce ARM tasarımlı işlemci ürelmiştir. Günümüzde kişisel bilgisayarların (PC) dışındaki sistemlerde (mobil ve gömülü sistemler) kullanılan işlemcilerin %98’i ARM tabanlıdır yani en basit tabiri ile ARM firmasının tasarladığı komut kümesi ile uyumludur. ARM tabanlı belli başlı işlemci/SoC üreticileri Apple, NVidia, Qualcom ve Samsung’dur.

RISC-V Açık Kaynak İşlemci Mimarisi

ARM’dan bahsetmişken RISC-V (Risk-Beş) adlı yeni işlemci mimarisinden ve onu hayata geçiren topluluktan da bahsetmeden geçmeyelim. ARM’ın RISC işlemci pazarında sahip olduğu hâkimiyet ve lisans sınırlamaları, tıpkı yazılım dünyasında olduğu gibi kendini açık kaynak bir işlemci tasarımında da göstermiştir. Yüzlerce organizasyonun ve şirketin desteği ile geliştirilen RISC-V, herhangi bir firmaya bağlı olmayan ortak akılla geliştirilen bir işlemci mimarisi ortaya koymayı amaçlıyor. Destekçileri arasında ASELSAN’ın da olduğu işlemci tasarımının ilk modelleri FPGA üzerinde üretilmiş durumda. RISC-V yaygın bir kullanım bulduğunda donanım fiyatlarının düşeceğini ve işlemci kullanan sistemlerin başarımlarının artacağını tahmin etmek hayalci olmaz. RISC-V gibi bir projenin neden var olduğundan bahsetmek gerekirse;


Bilinen her büyük işlemci üreticisi kendi tasarımlarını kullanmaktalar. Her firmaya özel tasarım, işlemciler arasında bir standardizasyonun oluşamamasına, bu da işlemci üreticilerine bağımlı platformların oluşturduğu sınırlılıkların kullanıcıların zararına (hem maliyet hem de nitelik olarak) olmasına neden oluyor. RISC-V projesinin çıkış nedenlerinden biri de; AMD ve Intel gibi üreticilerin işlemci geliştirirken komut çalıştırma biriminin haricindeki birçok birimle de uğraşmak zorunda oldukları. Örneğin işlemcinin içerisine dâhili olarak eklenen h.264 kod çözücü, şifreleme, sanallaştırma, ses ve görüntü işleme gibi modüller. Bu da işlemcilerin komut mimarisi ile ilgili birimlerine yeterince geliştirme çabası ayrılamamasına neden oluyor. RISC-V projesi amacına ulaştığında, komut mimarisi yönünden gelişmiş ve her zaman geliştirilmeye açık bir işlemci tasarımı ortaya çıkacak, hem işlemcilerin başarımı artacak hem de ortak bir işlemci komut setinde buluşulması sağlanacak.

İşlemcinin ortak akılla geliştirilmesinin sağlayacağı bir özellik de, çoğu kişi tarafından bir NSA arka kapısı olarak görülen ve işlemcinin tasarımından kaynaklı bir güvenlik zafiyeti olan meltdown ve specter zafiyetleri.

FPGA sistemler içerisindeki milyonlarca elektronik elemanı programcısının tasarladığı şekilde bağlantılayarak bir donanım üretilmesini sağlıyor. Tasarlanan şey bir elektronik donanım  olduğundan bir yazılımın yapabileceğinden çok daha yüksek hızda bu görevi donanımsal olarak yerine getiriyor. Bu FPGA sistemler tek seferlik bir kullanıma sahip değil üzerindeki tasarım temizlenerek yeni bir devre tasarlanabiliyor. FPGA’lerin oldukça yüksek hızlara çıktığı günümüzde RISC-V açık işlemci mimarisini kullanılarak herkesin kendi işlemcisini üretmesi mümkün olacak. Hatta bu işi sipariş üzerine yapan sifive adından bir firma da var. İlerde bir firmware update indirir gibi işlemcinizi daha hızlı bir işlemci ile değiştirebildiğinizi düşünün. Bunun internetten indirdiğiniz birkaç kb’lık bir dosya ile yapabileceksiniz.

Sun Micro Systems’ın buna benzer bir açık kaynak işlemci tasarımı vardı (SPARC) fakat daha sonra Oracle tarafından satın alındıktan sonra bu açık olma özelliği rafa kaldırıldı. Bu açıdan da dünyanın ortak akılla geliştirilen bir işlemci komut seti mimarisine (ISA) ihtiyacı var. Bu teknolojinin dolayısıyla insanlığın gelişiminin önündeki engellerden birini kaldıracaktır. Açık kaynak ve onu destekleyen topluluklar dünyamızı hergün daha güzel bir yer yapan işler çıkartıyorlar. Açık kaynak işlemci modelinde yeterince geç kalınmıştı.

Vakıf projenin tüm dökümanlarının ve kaynak kodlarını yayınladı fakat henüz bir ticari şirket gerçek anlamda bir CPU işine girişmedi. Şirketler uzun yıllar kullanılacak bir ürünün tam olarak oturmasını ve denenmesini beklerler. Ayrıca vakfın yönetmeliğine göre tasarım modelinde yapılacak değişiklikler vakıfa ücretli üye olan katılımcıların onayına tabi. Yani tasarımda bir değişiklik yapılacağında veya RISC-V uyumlu ticari bir ürende logo kullanmak gerektiğinde ASELSAN’ın da oy hakkı var.


RISC-V gibi tamamen açık kaynak bir ISA’nın geliştirilmesi ile birçok programatik ve donanımsal süreç tam bir şeffaflık kazanacak. ARM mimarisinin lisans ücretini ödeyerek satın alan bir işlemci üreticisi ARM ile çok ciddi yaptırımları olan lisans anlaşmaları yapılıyor. Mesela bu üretici ARM komut setinin detaylarını içeren dökümantasyonu kesinlikle dışarı çıkaramaz. Diğer taraftan, kapalı yürüyen bu işler sırasında, ARM yapacağı yenilikler veya iyileştirmeler hakkında kimse ile bir bilgi paylaşmıyor. Bu işlemci ve donanım üreticileri için geleceği görmek açısından çok can sıkıcı bir durum. RISC-V bu sözünü ettiğim duruma da çözüm sağlamış oluyor.

RISC-V’in geliştirmesi yapılırken 128bit’lik adresleme uzayı hedef alınarak çalışılıyor. İleride artan bellek miktarları için onu adresleyebilecek genişlikte bir adres yoluna ihtiyaç olacak. Henüz pratikte bu tarz konularla ilgili fazla deneyim yok ama 128bit dönemeci oldukça parlak bir gelecek vaad ediyor. 128bit ile 64bit arasındaki farkın tam olarak “18.446.744.073.709.551.616” (OnSekizKentilyon DörtYüzKırkAltıKatrilyon YediYüzKırkDörtTrilyon YetmişÜçMilyar YediYüzDokuzMilyon BeşYüzElliBirBin AltıYüzOnAltı) kat olduğu düşünülerse RISC-5 tasarımının ne derece gelecek vizyonu ile devam ettiği güzel anlaşılabilir.

Aslında RISC-V’den bahsederken tam olarak bir işlemciden bahsetmiyoruz. ISA (Instruction Set Artitecture) yani komut seti mimarisi, hangi komutların olacağını, özelliklerinin ne olacağını, girdileri çıktıları birbirleriyle programatik ilişkilerinden bahsediyoruz yani bir bilgisayar programının en küçük parçaları olan komutlar ve onları işlerlik kazandıran donanımsal tasarımdan. Mesela basit bir Mov komutu (iki hafıza konumu arasında kopyalama yapar) ARM veya Intel’de aynı şekilde işlemez. Donanım kısmında farklılıklar vardır. Komut daha da kompleksleştiğinde bu farklılıklar inanılmaz hale gelir. Bu nedenledirki donanım platformuna özel işletim sistemleri ve aynı şekilde programlar yazılması gerekir. Şuan GCC GNU derleme araçları içerisine RISC-V implemente edildi ama işlemci spesifik komutlar icra eden programlar için yapacak birşey yok, o spesifik kısımların RISC-5 modeline göre yeniden kodlanması gerekecek.

RISC-5 yazılımdan ve donanımdan bağımsız bir mimari öngörüyor. Bir arduino için yazdığınız kodun intel bir işlemcide doğrudan çalışabildiğini düşünün ya da bir Apple işlemcisinde çalışmak üzere derlenmiş bir kodun ARM işlemci üzerinde çalıştığını. Bu şekilde ta donanım tabanında ortaklaşmak hem işletim sistemleri hem de onların üzerinde koşan yazılımlar için esneklik getirecek ve hareket alanını genişletecek. Ticari üreticilerin kendi mikromimari ve teknoloji bağımlı özelliklerinin sınırlılığından kurtulunacak. Tabana yayılacak, Zeki Müren’in de bizi görmesi sağlanacak.

Donanım ve işletim sistemi üreticilerinin ticari ve lisanssal sınırlılıklar yüzünden başaramadığı standartlaşamama sorunu ortadan kalkarak tüm ortak aklın “sonuç işe” odaklanmasını sağlayacak. Donanımın apple, intel veya amd olması ya da işletim sisteminin windows, mac, Linux
vb gibi olması son kullanıcıyı çok ilgilendirmez. Son kullanıcı kullanmakta olduğu yazılımın işini hızlı ve düzgün yapmasını bekler. Yani işlemci tasarımındaki ortaklaşmayla donanım ve işletim sistemi platformları arasındaki farklar ortadan kalkacak tüm enerji son kullanıcının işine yarayan yazılımlara kayacak.

RISC-V tabanlı donanımlar üzerinde çalışan firmalardan birinin CEO’su ARM’ın günlerinin sayılı olduğunu ve ARM’a bu iş modeli ile giderse 5 yıl ömür biçiyorum gibi iddialı bir yorumda bulunmuş olması doğru yolda olunduğunun göstergesi. CEO, ARM’ın üretim politikalarının açık kaynak mimari ile karşılaştırıldığında sınırlı bir esnekliğe sahip olduğunu, zaman ve maliyet baskısı altındaki piyasaların lisens kuralları ile vakit kaybedemeyeceğini söylüyor.

 

 

https://www.sifive.com/boards

RISC-V komut seti mimarisini kullanan işlemci tasarımları üretildi. 64 bitlik Berkeley Sıra Dışı Makine (BOOM), 64 bitlik Roket, [20] Berkeley’den beş adet 32 ​​bitlik Sodor CPU tasarımını içeren, açık kaynaklı RISC-V işlemci tasarımları var. picorv32, Clifford Wolf, Syntacore’dan scr1, ETH Zürich / Bologna Üniversitesi’nden PULPino (Riscy ve Zero-Riscy) ve diğerleri. Üç aşamalı Sodor CPU, küçük bir gömülü CPU için uygun görünmektedir. Roket, kişisel cihazlar gibi kompakt, düşük güçlü ara bilgisayarlara uyabilir. BOOM, Rocket için oluşturulan altyapının çoğunu kullanır ve kişisel, süper bilgisayar ve depo ölçekli bilgisayarlar için kullanılabilir. Hem picorv hem de scr1, Verilog’da 32 bitlik mikrodenetleyici ünite (MCU) sınıfı RV32IMC uygulamalarıdır. PULPino’daki çekirdekler, mikro denetleyiciler (Zero-Riscy) için basit bir RV32IMC ISA veya gömülü sinyal işleme için özel DSP uzantıları olan daha güçlü bir RV32IMFC ISA uygular.

Son olarak komut seti mimarisi (ISA) açısından açık kaynak olunmasının sağladığı avantaj ve dez avantajların listelendiği şu tabloyu paylaşarak bitirmek istiyorum.

 

Fotoğraflarla bilgisayarın tarihi görseli/infogram’ı (3.8m X 0.8m)

bilgisayarın tarihi gelişimi görseli
Bilgisayarın tarihi gelişimi görseli 382cm x 80cm (3.8m x 0.8m) ölçülerinde

Bilişim Teknolojileri Öğretmeni Güven Demir tarafından tasarlanmış olan infogram’ın, PSD (photoshop kaynak dosyası) boyutu çok fazla olduğu için (1.41GB) ancak JPG halini paylaşabiliyorum.