# Buyruk kümesi mimarisi

**Buyruk kümesi mimarisi** (**BKM**; İngilizce: *instruction set architecture*, kısaca **ISA**), bir işlemcinin makine düzeyinde gerçekleştirebildiği işlemleri, bu işlemlerin kodlanma biçimini, yazmaç organizasyonunu ve bellek erişim modelini tanımlayan soyut arayüzdür. Buyruk kümesi mimarisi; donanım tasarımcıları ile sistem yazılımı (işletim sistemi, derleyici) geliştiricileri arasındaki sözleşmeyi belirler: aynı BKM'yi gerçekleyen farklı donanımlar (farklı transistor teknolojileri, farklı boru hatları) aynı makine kodunu koşturabilir.

BKM kavramı, mikromimari kavramından ayrılmalıdır. Mikromimari, bir BKM'nin somut donanım gerçeklemesidir: boru hattı derinliği, önbellek yapısı, dal tahmincisi ve benzeri uygulama seçimleri mikromimariye aittir. Örneğin x86 BKM'si, Intel Core ve AMD Zen serisi gibi birbirinden farklı pek çok mikromimariyle gerçekleştirilmiştir; ancak tüm bu işlemciler aynı ikili kodu yürütür.

## Tarihçe

1940'lı ve 1950'li yıllarda her bilgisayar modeli kendine özgü buyruk kümesiyle üretiliyordu; yazılımın bir makineden diğerine taşınması neredeyse olanaksızdı. IBM System/360 (1964), farklı performans sınıfındaki makinelerin tek bir buyruk kümesini paylaşması ilkesini endüstriyel ölçekte uygulayan ilk büyük aileydi ve BKM soyutlamasını yaygınlaştırdı.

1970'lerde işlemci karmaşıklığı hızla arttı; mikrokodla gerçeklenen zengin buyruk kümeleri (CISC anlayışı) hâkim oldu. 1980'lerin başında Patterson ve Hennessy'nin çalışmaları, RISC (azaltılmış buyruk kümesi) yaklaşımını ortaya koydu: basit, sabit uzunluklu buyruklar ve boru hattına uygun tasarım. MIPS (1985), SPARC (1987) ve sonrasında ARM bu yaklaşımı benimsedi. 1990'larda Intel/HP Itanium ile denenen VLIW/EPIC mimarisi beklenen başarıyı kazanamadı.

2010'lu yıllarda mobil pazarın büyümesiyle ARM, düşük güç tüketimi avantajıyla masaüstü ve sunucu pazarına da girdi (Apple Silicon, Ampere). 2015'te Berkeley'de başlatılan RISC-V, açık ve telif ücretsiz bir BKM olarak akademik ve endüstriyel benimsemede hızla büyüdü.

## Tasarım parametreleri

### Dahili depolama modeli

İşlenecek verinin işlemci içinde nasıl tutulduğu, BKM'nin temel tasarım seçimlerinden biridir. Üç ana model vardır:

* **Yığıt mimarisi**: İşlenenler örtük yığıt üzerinden alınır ve yığıta yazılır; açık yazmaç belirtme gerekmez (örn. Java Bytecode, eski x87 kayan nokta birimi).
* **Biriktirici mimarisi**: Tek örtük biriktirici yazmacı tüm işlemlerde hedef ya da kaynak işlevi görür; erken 8 bitlik işlemcilerde yaygındır.
* **Genel amaçlı yazmaç mimarisi**: Buyruklar açıkça yazmaç numaraları belirtir; modern RISC ve CISC mimarilerinin büyük çoğunluğu bu modeli izler (örn. RISC-V 32 tamsayı yazmacı, x86-64 16 tamsayı yazmacı).

### İşlenen sayısı ve konumu

Aritmetik buyruklar için yaygın biçimler şunlardır:

* **3 adres** (dest ← src1 op src2): RISC mimarileri; her kaynak ve hedef ayrı belirtilir.
* **2 adres** (dest ← dest op src): x86 klasik biçimi.
* **1 adres** (biriktirici ← biriktirici op src): Biriktirici tabanlı tasarımlar.
* **0 adres** (örtük yığıt): Yığıt mimarileri.

Bunun yanı sıra işlenenlerin bellekten mi yoksa yalnızca yazmaçlardan mı okunacağı da kritik bir seçimdir. Yalnızca yazmaç-yazmaç aritmetiğine izin veren mimarilerde (RISC), bellek erişimi ayrı yükle/sakla buyrukları aracılığıyla yapılır.

### Buyruk uzunluğu

**Sabit uzunluklu** buyruklar (örn. MIPS 32 bit, RISC-V temel 32 bit) boru hattı tasarımını ve kod çözmeyi basitleştirir. **Değişken uzunluklu** buyruklar (örn. x86 1–15 bayt) kod yoğunluğunu artırır ancak çözücü karmaşıklığını yükseltir. RISC-V sıkıştırılmış (C) uzantısı 16 bitlik kodlamalar ekleyerek bu iki yaklaşım arasında bir denge sunar.

### Adresleme kipleri

Adresleme kipleri, bir buyruğun işleneninin bellekte ya da yazmaçta nasıl konumlandırıldığını tanımlar. Yaygın kipler şunlardır: anlık (sabit değer buyruk içinde), yazmaç doğrudan, bellek doğrudan (mutlak adres), yazmaç dolaylı, taban+öteleme (temel yazmaç + sabit sapma), indisli (iki yazmaç toplamı) ve göreceli (PC'ye göre).

### Bayt sıralaması

Çok baytlı bir veri sözcüğünün bellekte hangi sırayla saklandığı, Bayt sıralaması tercihi ile belirlenir. **big-endian** düzeninde en yüksek anlamlı bayt düşük adreste, **little-endian** düzeninde ise en düşük anlamlı bayt düşük adreste yer alır. x86 little-endian kullanırken IBM POWER big-endian tercih eder. ARM ve MIPS her iki kipte de çalışabilecek biçimde tasarlanmış olup çift-endian (*bi-endian*) özelliğini destekler; DEC Alpha da çift-endian bir mimariydi. RISC-V varsayılan olarak little-endian olmakla birlikte büyük ve iki-endian uzantı seçenekleri de tanımlanmıştır.

### Yazmaç organizasyonu

Yazmaç sayısı ve genişliği, BKM'nin önemli parametrelerinden biridir. Az sayıda yazmaç (örn. x86'nın orijinal 8 tamsayı yazmacı), kodlama genişliğini azaltır; çok sayıda yazmaç (örn. RISC-V'nin 32 yazmacı, SPARC'ın pencereli yazmaçları) derleyicinin geçici değerleri bellekte saklaması (*register spill*) gereksinimini azaltır. Özel amaçlı yazmaçlar arasında program sayacı (PC), bayrak/durum yazmacı ve yığıt göstericisi sayılabilir; bunların programcı tarafından erişilebilir olup olmadığı da BKM tanımının parçasıdır.

## RISC ve CISC

RISC ve CISC tasarım felsefelerini karşılaştıran temel özellikler aşağıdaki tabloda verilmiştir.

RISC ve CISC karşılaştırması
| Özellik | RISC | CISC
 |
| --- | --- | --- |
| Buyruk sayısı | Az (tipik 50–150) | Çok (tipik 200–500+)
 |
| Buyruk uzunluğu | Sabit (genellikle 32 bit) | Değişken (x86: 1–15 B)
 |
| Bellek erişimi | Yalnızca yükle/sakla buyruklarıyla | Aritmetik buyruklar doğrudan erişebilir
 |
| Yazmaç sayısı | Çok (≥ 32) | Az (x86 orijinal: 8)
 |
| Mikrokod kullanımı | Yok/minimal | Yaygın
 |
| Derleyici yükü | Yüksek (yazmaç atama karmaşık) | Orta
 |
| Boru hattına uyum | İyi | Daha güç
 |
| Örnekler | RISC-V, ARM, MIPS, SPARC | x86, IBM System/360
 |

Günümüzde iki yaklaşım arasındaki sınır belirgin biçimde bulanıklaşmıştır. Modern x86 işlemciler, değişken uzunluklu CISC buyruklarını iç RISC-benzeri mikro-işlemlere dönüştürerek boru hattında çalıştırır. Öte yandan ARM AArch64 gibi RISC mimarilerine, SIMD ve kriptografi uzantılarıyla CISC niteliğinde karmaşık işlemler eklenmiştir.

## Buyruk türleri

Modern BKM'ler buyrukları işlevlerine göre aşağıdaki kategorilere ayırır:

Veri aktarımı
Bellek ile yazmaçlar arasında veri taşıma (yükle, sakla), yazmaçlar arası kopyalama, yığıt işlemleri (it, çek).
Aritmetik ve mantık (ALU)
Tamsayı ve kayan nokta toplama, çıkarma, çarpma, bölme; bit düzeyi AND, OR, XOR, NOT işlemleri.
Bit işleme ve kaydırma
Mantıksal sola/sağa kaydırma, aritmetik sağa kaydırma (işaret biti korunur), döndürme.
Denetim akışı
Koşulsuz ve koşullu dallanma (bayraklara ya da yazmaç değerine göre), altyordam çağrısı/dönüşü, yazılım kesmesi/sistem çağrısı.
Giriş/Çıkış
Bellek eşlemli G/Ç mimarilerinde bu kategori ayrı buyruk içermeyebilir; bağlantı noktası adresli mimarilerde (örn. x86 IN/OUT) özel buyruklar bulunur.
## Genişletilmiş işlem kodu

Sabit uzunluklu buyruk sözcüklerinde tüm buyruklar için tek bir sabit alan ayrılması her zaman olanaklı değildir; farklı buyruk biçimleri farklı alan düzenlemeleri gerektirdiğinden opcode alanının genişliği değişebilir. Genişletilmiş işlem kodu (*expanding opcode*) tekniğinde, kısa opcode değerlerinin bir kısmı "uzantı öneki" olarak ayrılır: bu değerlerden biri görüldüğünde çözücü, buyruğun geri kalanında daha uzun bir opcode aramaya başlar. Böylece sık kullanılan buyruklara kısa, az kullanılan buyruklara daha uzun kodlar atanarak hem buyruk belleği verimliliği artırılır hem de yeterli sayıda farklı buyruk kodlanabilir.

## Buyruk işleme döngüsü

Temel getir-çöz-yürüt döngüsü şu adımlardan oluşur:

1. **Getirme (Fetch)**: Bellek, program sayacındaki (PC) adresin içeriğini buyruk yazmacına (IR) aktarır: `IR ← M[PC]`. PC bir sonraki buyruğa işaret edecek biçimde güncellenir.
2. **Çözme (Decode)**: Denetim birimi IR içeriğini yorumlar; opcode ve işlenen alanlarını ayırt eder, gerekli yazmacları seçer.
3. **Yürütme (Execute)**: ALU ya da ilgili işlevsel birim işlemi gerçekleştirir; dallanma buyrukları PC'yi yeniden yükler, bellek buyruklarında adres hesaplanır ve belleğe erişilir.

Gerçek işlemciler bu adımları boru hattı düzeneğiyle çakıştırarak yürütür: bir buyruk yürütülürken bir sonraki çözülmekte, daha sonraki ise getirilmektedir. Paralel ve sıra dışı yürütme teknikleri boru hattı kavramının doğal uzantılarıdır.

## BKM örnekleri

Günümüzde yaygın kullanılan başlıca BKM'ler aşağıda karşılaştırmalı biçimde verilmiştir.

Başlıca BKM'ler karşılaştırması
| BKM | Sınıf | Tamsayı yazmaç sayısı | Buyruk uzunluğu | Endian | Lisans
 |
| --- | --- | --- | --- | --- | --- |
| x86 (64-bit) | CISC | 16 | 1–15 bayt | little-endian | Tescilli (Intel/AMD)
 |
| ARM AArch64 | RISC | 31 + SP | 32 bit (A64) | little-endian (varsayılan) | Tescilli (Arm Ltd.)
 |
| RISC-V (RV64I) | RISC | 32 | 32 bit (16 bit C uzantısıyla) | little-endian | Açık (BSD)
 |
| MIPS (MIPS64) | RISC | 32 | 32 bit | Çift-endian | Tescilli (MIPS Tech.)
 |

**x86** mimarisi 1978'de 16 bit olarak başlamış, 32 bit (IA-32) ve 64 bit (x86-64/AMD64) uzantılarıyla bugüne gelmiştir. MMX, SSE, AVX ve AVX-512 gibi SIMD uzantıları yüksek başarımlı hesaplama uygulamaları için kritik öneme sahiptir.

**ARM** mimarisi düşük güç tüketimiyle mobil pazarda hâkim konuma gelmiş; AArch64 mimarisi sunucu ve masaüstü pazarına da yayılmıştır. NEON SIMD uzantısı ve Scalable Vector Extension (SVE) vektör işlem yeteneklerini genişletir.

**RISC-V**, 2010'lu yıllarda Berkeley Üniversitesi'nde geliştirilen açık bir BKM standardıdır. Temel tamsayı çekirdeği (I) küçük tutulmuş; sıkıştırılmış (C), çarpma-bölme (M), atomik (A), kayan nokta (F/D), vektör (V) gibi modüler uzantılarla isteğe bağlı biçimde zenginleştirilmektedir. Açık lisans yapısı, özel silikon tasarımlarında ve akademik araştırmalarda geniş benimsemeye yol açmıştır.

**MIPS** mimarisi RISC anlayışını 1985'te ticarileştiren öncü tasarımlardan biridir; hem big-endian hem little-endian kipte çalışabilecek biçimde tasarlanmıştır. Uzun süre ağ işlemcilerinde ve gömülü sistemlerde yaygın kullanılmış olmakla birlikte günümüzde pazar payı daralmıştır.

## Geriye dönük uyumluluk ve BKM yaşam döngüsü

Geniş bir yazılım tabanına sahip BKM'lerde geriye dönük uyumluluk güçlü bir ekonomik bağ oluşturur. x86 mimarisinin onlarca yıl süren evriminde yeni buyruklar ve kipler eklenmiş; ancak eski 16/32 bit ikili kodların çalışmaya devam etmesi sağlanmıştır. Bu durum donanım karmaşıklığını artırır, çünkü işlemci hem eski hem yeni kodlama biçimlerini desteklemek zorundadır.

Açık BKM'ler (özellikle RISC-V) bu gerilimi farklı biçimde yönetir: standart tarafından "dondurulmuş" (ratified) uzantılar kalıcı kabul edilirken yeni uzantılar isteğe bağlı bileşenler olarak eklenir; böylece donanım geliştiricisi yalnızca ihtiyaç duyduğu uzantıları gerçekler.

Bir BKM'nin yaşam döngüsü açısından bakıldığında, pazar çıkışından mirasın yönetimine uzanan süreç, yazılım uyumluluğu ile donanım yeniliği arasındaki dengeyi belirler. MIPS ve SPARC gibi mimarilerin pazar payını yitirmesi buna somut örnekler sunarken ARM ve x86 ticari güçleri sayesinde uzun ömürlü olmuştur.

## Ayrıca bakınız

* Buyruk
* Adresleme yöntemi
* Bayt sıralaması
* Boru hattı
* Bellek hiyerarşisi
* mikroişlemci
* derleyici
* makine dili

## Kaynakça

## Genel kaynaklar

* Patterson, David A.; Hennessy, John L. (2020). *Computer Organization and Design RISC-V Edition: The Hardware/Software Interface* (2 bas.). Morgan Kaufmann. ISBN 978-0128203316.
* Hennessy, John L.; Patterson, David A. (2019). *Computer Architecture: A Quantitative Approach* (6 bas.). Morgan Kaufmann. ISBN 978-0128119051.
* Tanenbaum, Andrew S.; Austin, Todd (2012). *Structured Computer Organization* (6 bas.). Pearson. ISBN 978-0132916523.
* Stallings, William (2019). *Computer Organization and Architecture* (11 bas.). Pearson.
* Ergin, Oğuz (2026). *Bilgisayar Mimarisi: RISC-V Tabanlı Yaklaşım*. ISBN 978-625-00-6081-0.

## Dış bağlantılar

* ARM A64 Instruction Set Architecture Reference Guide (İngilizce)
* RISC-V Instruction Set Manual (açık kaynak, İngilizce)