ScholarGate
Asistan

Komut Biçimleri ve Kodlaması

Komut biçimleri, her bir makine komutunun ikili olarak nasıl düzenlendiğini — işlem kodu (opcode), yazmaç alanları ve anlık değerler (immediate values) — tanımlayarak programların ne kadar yoğun depolandığını ve donanımın bunları ne kadar kolay çözebildiğini belirlemektedir.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

Komut biçimi, bir makine komutunun içindeki bit alanlarının, işlemini ve işlenenlerini kodlayan tanımlanmış düzenlemesidir; komut kodlaması ise komutları bu ikili kalıplara eşleyen şemadır.

Kapsam

Bu konu, komutların ikili gösterimini kapsamaktadır: sabit uzunluklu ve değişken uzunluklu kodlamalar, işlemi, kaynak ve hedef yazmaçları ve anlık değerleri belirten alanlar ile kod yoğunluğu ve çözümleme basitliği arasındaki denge. RISC-V'nin R/I/S/B/U/J tipleri gibi temsili biçim ailelerini içermektedir. İşlenenlerin hangi adresleme modlarını kullandığı seçimi (adresleme modları) ve daha geniş RISC/CISC felsefesi (RISC ve CISC) bu kapsamın dışındadır.

Temel sorular

  • Bir komut kodlaması, bir işlemi ve işlenenlerini belirtmek için hangi alanları içermelidir?
  • Sabit uzunluklu ve değişken uzunluklu kodlamalar, çözümleme basitliğini kod yoğunluğuna karşı nasıl dengelemektedir?
  • Anlık değerler ve büyük sabitler, sınırlı komut bitleri içinde nasıl kodlanmaktadır?
  • Düzenli bir kodlama, boru hattı (pipelined) komut çözümlemesini nasıl basitleştirmektedir?

Anahtar kavramlar

  • işlem kodu (opcode) alanı
  • yazmaç belirleyici alanlar
  • anlık alanlar
  • sabit uzunluklu ve değişken uzunluklu kodlama
  • kod yoğunluğu
  • çözümleme düzenliliği
  • komut biçimi aileleri (R/I/S/B/U/J)

Mekanizmalar

Her komut bit alanlarına ayrılmaktadır: bir işlem kodu (opcode) işlemi seçer, yazmaç alanları işlenenleri adlandırır ve anlık alanlar sabitleri veya adres ofsetlerini tutar. Sabit uzunluklu biçimler (RISC-V'de olduğu gibi) tüm komutları aynı genişlikte tutar ve alanları tutarlı bir şekilde yerleştirerek çözümlemeyi basit ve hızlı hale getirir; değişken uzunluklu biçimler (x86'da olduğu gibi) daha karmaşık çözümleme maliyetiyle yoğunluk için komutları sıkıca paketler.

Klinik önem

Kodlama seçimleri bir işlemci boyunca yayılmaktadır: düzenli sabit uzunluklu biçimler, derin boru hattı (pipelining) uygulamalarını pratik kılan basit, hızlı çözümleyicileri mümkün kılarken, yoğun değişken uzunluklu biçimler komut-bellek trafiğini azaltmaktadır. Derleyiciler ve çeviriciler (assemblers) bu biçimleri hassas bir şekilde hedeflemeli ve komut kümesi uzantıları mevcut kodlama alanına sığmalıdır.

Tarihçe

Erken komut kümeleri, kıt belleği korumak için düzensiz, elle ayarlanmış kodlamalar kullanmıştır. 1980'lerin RISC hareketi, çözümlemeyi ve boru hattını (pipelining) kolaylaştırmak için tek tip sabit uzunluklu biçimleri tercih ederken, x86 gibi CISC kümeleri yoğun değişken uzunluklu kodlamaları korumuştur. RISC-V gibi modern açık ISA'lar, temiz, genişletilebilir biçim ailelerini kodlamaktadır.

Öne çıkan isimler

  • David A. Patterson
  • John L. Hennessy

İlgili konular

Temel eserler

  • patterson2020
  • hennessy2019

Sıkça sorulan sorular

RISC komut kümeleri neden sabit uzunluklu kodlamalar kullanmaktadır?
Sabit uzunluklu komutlar, işlemcinin bir sonraki komutu bulmasını ve alanlarını uzunluğu önceden çözmeden çıkarmasını sağlamaktadır; bu da getirme (fetch) ve çözümleme (decode) aşamalarını basitleştirip hızlandırmakta ve derin boru hattı (pipelining) uygulamalarını değişken uzunluklu kodlamalara göre çok daha kolay hale getirmektedir.
Komutlar yalnızca sabit sayıda bit genişliğinde ise büyük sabitler nasıl ele alınmaktadır?
Anlık alanlar sınırlı olduğundan, büyük sabitler parçalar halinde oluşturulmaktadır — örneğin, bir üst anlık yükleme (load-upper-immediate) komutu yüksek bitleri ayarlar ve sonraki bir komut düşük bitleri ekler — veya sabit belleğe yerleştirilip yüklenir.

Bu kavram için yöntemler

İlgili kavramlar