Tracy Kidder'ın Data General'daki bir ekibin yeni bir makine (daha sonra MV / 8000 olarak adlandırılan "Eagle" kodlu) tasarladığı "Yeni Bir Makinenin Ruhu" nu okuyorum. Önceki bir mimarinin (16 bit Eclipse) 32 bit uzantısıdır. Döner temalardan biri, mod bitli bir makine oluşturmak istemedikleri ve bunu başardıkları gibi görünüyor.
Bununla birlikte, bunun teknik olarak nasıl elde edildiğini ortaya çıkarır ve ayrıca mod biti olmayan bir makine oluşturmanın neden bu kadar çekici olduğuna da bakmaz. Kitap teknik bir kitap değil, bu yüzden detaylar bir şekilde çarpıtılmış olabilir. Bununla birlikte, o zaman bir "mod bit" çözümünün yaygın (ve dolayısıyla uygulanabilir) olduğu, ancak mühendisler tarafından estetik nedenlerden dolayı çekici olmadığı düşünülen bir kitap okudunuz. Kitap ayrıca mod biti olmayan bir tasarımın bu belirli takım tarafından bir şekilde üstesinden gelinmesi son derece zor bir görev gibi görünüyor.
Nasıl elde edildiğinin bu açıklamasını buldum:
http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt
Temel olarak yeni talimatlar için opcode alanının daha önce kullanılmayan bir bölümünü kullanmakla ilgili gibi görünüyor. İtiraf etmeliyim ki "sadece" olduğunu biraz hayal kırıklığına uğradım. Ayrıca bu hala bazı soruları cevapsız bırakır düşünüyorum:
Birincisi, 16 bit işlemler 32 bit adres alanında nasıl yaşadı? Çünkü bunun 32-bit uzantısını "mod biti olmadan" yapmanın temel zorluğu olduğunu düşünüyorum. Öte yandan, talimat setini genişletmek nispeten yaygın bir girişimdir. Nasıl olduğuna dair bir açıklama olmadığından, 16 bit kodun belleğe her zamanki gibi erişebileceğini varsayabiliriz, belki de bir tür sanallaştırılmış / bankalı bellek görünümü görür (ilk adresin nerede olduğunu kontrol eden yeni CPU kayıtları ile) veya bunun gibi bir şey. Ama bundan daha fazlası olup olmadığını bilmiyorum. Bu durumda, bunun bir tür "mod bit" çözümü olduğu iddia edilebilir. 16-bit mod işlemleri, CPU'ya eklenen özel özellikler sayesinde diğer süreçlerle birlikte çalışabilir.
İkincisi, mod biti olmayan bir makine oluşturmak neden bu kadar çekici? Kitapta yer alan avantajların çoğu, müşterilerin eski yazılımları çalıştırmak istemeleri. Ancak bu, bir mod bitine karşı konuşmak gibi görünmemektedir, çünkü bir mod bitini kullanmanın tüm amacı geriye dönük uyumluluğa sahip olmaktır. AMD, x86'yı 64-bit'e genişlettiğinde, en azından yaptıkları şey "mod biti" anlayışına göre tam olarak bir mod biti eklemekti. CPU'yu 64 bit modunda yapacak özel bir bit. Ve bir işlemin 64 bitlik modun "alt modunda" yürütülmesini sağlayan başka bir bit (32 bit uygulamalarla uyumluluğu etkinleştirmek için). Alt modun özü, CPU'nun talimat akışını eski 32 bit talimatlar olarak yorumlaması, ancak yapılan 32 bit bellek erişimlerinin yeni sayfa tabloları formatı (64 bit farkında işletim sistemi tarafından kurulum) kullanılarak çözülmesi ve sonunda tam fiziksel adres alanına eşlendi. Ayrıca, 32 bit kod 64 bit kodla önlenebilir. Data General çözümü gibi bu da 32 bit bir programın 64 bit programlar (DG durumunda 16 bit vs 32 bit) altında çalışmasına izin verdi. Yani müşteri açısından hiçbir fark yok gibi görünüyor. Bu nedenle, tasarımda basitleştirilen tek fayda uygulamada olabilirdi, ancak kitap endişe verici gibi görünmüyor, çünkü mod biti o sırada bile yaygın olarak görüldü (ve daha sonra mimarilerin de x64 davasında gösterildiği gibi kullanmıştır).
Eminim kaçırdığım bir şey var, bu yüzden birisi bu "mod-bit" tasarımının teknik detayları ve erdemleri hakkında daha fazla tartışabilirse harika olurdu.