İçeriğe atla

Mikroprogramlama

Vikipedi, özgür ansiklopedi

Mikroprogramlama, bir işlemcinin denetim birimini, bellekte saklanan mikrokod (ya da mikroprogram) aracılığıyla tasarlama yöntemidir. Mikrokod, işlemcinin makine dili buyruklarını, işlemcinin iç bileşenlerini süren daha basit adımlara dönüştüren alt düzey bir denetim katmanıdır; böylece donanımla buyruk kümesi arasında bir soyutlama (ara) katmanı oluşturur.[1][2]

Bir işlemcide her makine buyruğu, denetim deposu (control store) adı verilen özel bir bellekte saklanan bir ya da daha çok mikrobuyruğa (microinstruction) karşılık gelir. Her mikrobuyruk; aritmetik mantık birimi, yazmaçlar ve veri yolları gibi iç birimleri yöneten denetim işaretlerini doğrudan üretir. Böylece tek bir karmaşık makine buyruğu, sırayla yürütülen bir mikrobuyruk dizisiyle gerçeklenir.[1]

Mikroprogramlamanın başlıca alternatifi, denetim işaretlerinin doğrudan mantık devreleriyle üretildiği donanımsal (kabloyla bağlı) denetimdir. Donanımsal denetim daha hızlıdır; mikroprogramlama ise tasarım esnekliği ve karmaşık buyrukları gerçeklemede kolaylık sağlar. Bu nedenle mikrokod, çok sayıda karmaşık buyruğa sahip CISC işlemcilerde (örneğin x86) yaygınken; basit buyruklara dayanan RISC işlemciler çoğunlukla donanımsal denetim kullanır.[2]

Mikroprogramlama kavramı 1951'de Maurice Wilkes tarafından ortaya atıldı. Wilkes, denetim biriminin düzensiz mantık devreleri yerine, bellekte saklanan düzenli bir mikrobuyruk dizisiyle tasarlanmasını önerdi; bu yaklaşım denetim birimi tasarımını sistematik ve kolayca değiştirilebilir kılıyordu.[3] Kavram ilk kez EDSAC 2 (1958) gibi bilgisayarlarda uygulandı.

Mikroprogramlama, 1964'te tanıtılan IBM System/360 ailesiyle yaygınlaştı: aynı buyruk kümesi, farklı fiyat ve başarım düzeyindeki donanımlarda mikrokod sayesinde gerçeklenebiliyor, hatta eski makinelerin öykünümü (emülasyon) yapılabiliyordu.[1] 1970'ler ve 1980'lerde mikrokod, karmaşık buyruk kümeli işlemcilerin neredeyse tümünde standart bir teknik hâline geldi. 1980'lerde güç kazanan RISC akımı ise basit buyruklar ve donanımsal denetimle mikrokodun ağırlığını azalttı.[2]

Denetim deposu ve mikrobuyruklar

[değiştir | kaynağı değiştir]

Denetim deposu genellikle bir salt okunur bellektir (ROM); çalışma sırasında yeniden yazılabilen (writable control store) tasarımlar da vardır. Her mikrobuyruk kabaca iki tür bilgi içerir: işlemcinin iç birimlerini süren denetim işaretleri ile yürütülecek bir sonraki mikrobuyruğun nasıl seçileceğini belirleyen sıralama (dallanma) bilgisi. Sıralamayı bir mikrosıralayıcı (microsequencer) yönetir. Örnek bir mikrobuyruk; bir işlem alanı, bir koşul alanı, bir dallanma türü alanı ve bir adres alanından oluşabilir.[4]

Yatay ve dikey mikrokod

[değiştir | kaynağı değiştir]

Mikrobuyrukların kodlanma biçimine göre iki uç yaklaşım vardır:[1][4]

  • Yatay mikrokod: Mikrobuyruk geniştir ve her denetim işareti için ayrı bir bit ayrılır. Kodlama az olduğu için çözme gerektirmez, çok sayıda işlem aynı anda yürütülebilir ve hızlıdır; ancak denetim deposu büyür.
  • Dikey mikrokod: Mikrobuyruk dardır; denetim işaretleri kodlanmış alanlarda tutulur ve kullanılmadan önce bir çözücüden geçirilir. Daha az yer kaplar, ancak daha yavaştır ve daha az paralellik sunar.

Uygulamadaki çoğu tasarım bu iki uç arasında yer alır; iki düzeyli mikrokod (nanokod) gibi ara biçimler de kullanılmıştır.

Üstünlükleri:

  • Karmaşık buyrukların gerçeklenmesini kolaylaştırır ve denetim birimi tasarımını sistematik kılar.
  • Aynı buyruk kümesinin farklı donanımlarda gerçeklenmesini ve başka mimarilerin öykünümünü kolaylaştırır.
  • Üretimden sonra ortaya çıkan tasarım hatalarının (errata) ya da güvenlik açıklarının mikrokod güncellemesiyle düzeltilebilmesini sağlar.

Sınırlılıkları:

  • Denetim deposuna erişim ek gecikme getirdiğinden, mikroprogramlı denetim genellikle donanımsal denetimden daha yavaştır.

Modern yüksek başarımlı işlemciler iki yaklaşımı birleştirir: sık kullanılan basit buyruklar donanımla doğrudan, karmaşık buyruklar ise mikrokodla yürütülür. Günümüzde Intel ve AMD gibi üreticiler, hata düzeltmeleri ve güvenlik önlemleri için işletim sistemi ya da BIOS/UEFI yoluyla yüklenen mikrokod güncellemeleri yayımlar.[2]

  1. 1 2 3 4 Tanenbaum, Andrew S. (2013). Structured Computer Organization (6 bas.). Pearson. ISBN 978-0-13-291652-3.
  2. 1 2 3 4 Patterson, David A.; Hennessy, John L. (2017). Computer Organization and Design: The Hardware/Software Interface (5 bas.). Morgan Kaufmann. ISBN 978-0-12-407726-3.
  3. Wilkes, M. V. (1951). "The Best Way to Design an Automatic Calculating Machine". Report of the Manchester University Computer Inaugural Conference. ss. 16–18.
  4. 1 2 Mano, M. Morris (1993). Computer System Architecture (3 bas.). Prentice Hall.

Dış bağlantılar

[değiştir | kaynağı değiştir]