Komut Kümesi Mimarisi
Komut kümesi mimarisi (ISA), donanım ile yazılım arasındaki soyut arayüzdür: bir işlemcinin programcıya ve derleyiciye sunduğu komutlar, yazmaçlar (registers), veri tipleri, adresleme modları ve bellek modelinden oluşan kümedir.
Tanım
Bir komut kümesi mimarisi, bir işlemcinin yürütebileceği işlemleri, bu işlemlerin üzerinde çalıştığı işlenenleri ve depolamayı, ayrıca programların ikili kodlamasını tanımlayan bir sözleşmedir; öyle ki, bu sözleşmeye uyan herhangi bir uygulama aynı makine kodunu çalıştırabilmektedir.
Kapsam
Bu alan, bir makinenin yazılım tarafından görüldüğü şekliyle ne yaptığını, donanımın bunu nasıl uyguladığından bağımsız olarak kapsamaktadır. Komut sınıflarını (aritmetik, mantıksal, veri transferi, kontrol), komut formatlarını ve kodlamasını, yazmaç organizasyonunu, adresleme modlarını, bellek ve endianness modelini, istisnaları ve sistem çağrısı arayüzünü, ayrıca zıt RISC ve CISC felsefelerini içermektedir. Bir ISA'nın mikro mimari gerçekleşimini — boru hatları (pipelines), önbellekler (caches) ve sırasız yürütme motorları (out-of-order engines) — işlemci mikro mimarisi altında ele alındığı için bu kapsamın dışında tutulmaktadır.
Alt konular
Temel sorular
- Bir ISA, eksiksiz bir programlama hedefi olabilmek için hangi işlemleri, işlenen türlerini ve yazmaçları sunmalıdır?
- Komutlar ikiliye nasıl kodlanır ve kodlama, kod yoğunluğunu çözme basitliğiyle nasıl dengeler?
- Adresleme modları, işlenenlerin yazmaçlarda ve bellekte nerede bulunduğunu nasıl belirtir?
- Basit, sabit formatlı komutların RISC felsefesini, zengin, değişken uzunluktaki komutların CISC felsefesinden ayıran nedir?
- ISA, uyumluluk sözleşmesi olarak nasıl istikrarlı tutulur ve aynı zamanda onlarca yıl boyunca nasıl genişletilir?
Anahtar kavramlar
- komut formatları ve işlem kodları (opcodes)
- genel amaçlı yazmaç dosyası
- adresleme modları
- yükle-depola mimarisi (load-store architecture)
- RISC ve CISC karşılaştırması
- endianness ve hizalama
- ikili uyumluluk
- istisnalar ve sistem çağrıları
- komut kümesi uzantıları
Temel kuramlar
- Mimari/uygulama ayrımı
- ISA, mikro mimariden kasıtlı olarak ayrılmaktadır, böylece aynı komut kümesi nesiller boyunca birçok farklı donanım organizasyonu tarafından uygulanabilir, bu da ikili uyumluluğu korurken performansın artmasına olanak tanır.
- RISC tasarım ilkeleri
- Azaltılmış komut kümesi argümanı, küçük bir basit, sabit uzunluklu, yazmaçtan yazmaca komut kümesinin verimli bir şekilde boru hattına alınabileceğini ve iyi derlenebileceğini, genellikle daha fazla komut yürütmesine rağmen karmaşık komut kümelerinden daha iyi performans gösterdiğini savunmaktadır.
Klinik önem
ISA, bir bilgi işlem platformunun uzun ömürlü varlığıdır: x86, ARM ve RISC-V'nin her biri geniş yazılım ekosistemlerini desteklemektedir ve komut kümesi hakkındaki kararlar, hangi derleyicilerin, işletim sistemlerinin ve ikili dosyaların çalışabileceğini belirlemektedir. Kararlı ISA'lar, donanımın değişmeyen yazılım altında gelişmesine olanak tanırken, RISC-V gibi açık ISA'lar işlemci tasarımını ve eğitimini yeniden şekillendirmiştir.
Tarihçe
İlk makineler kendine özgü komut kümeleri sunmaktaydı; IBM System/360 (1964), bir makine ailesi genelinde uygulanan tek bir ISA fikrine öncülük etmiştir. 1970'lerde giderek karmaşıklaşan komut kümeleri (CISC) ortaya çıkmış, bu durum 1980'lerin başında Berkeley'den Patterson ve Stanford'dan Hennessy ile ilişkilendirilen RISC tepkisini tetiklemiştir. 2010 civarında Berkeley'de başlatılan açık RISC-V ISA, temiz, genişletilebilir komut kümesi tasarımına olan ilgiyi yeniden canlandırmıştır.
Tartışmalar
- RISC ve CISC tartışması
- Basit, sabit formatlı komut kümelerinin karmaşık, değişken uzunluktaki komut kümelerinden doğası gereği üstün olup olmadığı hala tartışılmaktadır; pratikte modern yüksek performanslı CISC uygulamaları, karmaşık komutları dahili olarak RISC benzeri mikro-işlemlere dönüştürerek orijinal ayrımı bulanıklaştırmaktadır.
Öne çıkan isimler
- David A. Patterson
- John L. Hennessy
- Gene Amdahl
- Seymour Cray
- Krste Asanović
İlgili konular
Temel eserler
- hennessy2019
- patterson2020
- patterson1980risc
Sıkça sorulan sorular
- Komut kümesi mimarisi ile mikro mimari arasındaki fark nedir?
- ISA, görünür arayüzdür — bir programın kullandığı komutlar ve yazmaçlar — mikro mimari ise bu arayüzü uygulayan dahili donanım organizasyonudur (boru hattı, önbellekler, yürütme birimleri). Birçok mikro mimari aynı ISA'yı uygulayabilmektedir.
- İkili uyumluluk neden bu kadar önemlidir?
- Yazılım belirli bir ISA'ya derlendiği için, ISA'yı kararlı tutmak, kullanıcıların mevcut programları yeni işlemcilerde yeniden derlemeye gerek kalmadan çalıştırmasına olanak tanır; bu da donanım gelişirken yazılımdaki büyük yatırımları korumaktadır.