Mikroprogramlama

Tarihi

Önceden bilgisayar bilimcileri kendi çalışmalarını sekteye uğratan birçok kısıtlamalarla karşı karşıya kaldılar. Programlar alt düzey dillerle yazılmış ve mevcut depolanan alan küçüktü. Bu sebeple güçlü alt düzey buyruklar her zaman bilim adamları tarafından en çok ilgilenilen konu oldu çünkü güçlü buyruklar kolay programlanabilir ve bellekte az yer kaplar öte yandan daha güçlü buyruklar büyük ve hantal olan daha karmaşık donanımsal yorumlayıcılar gerektirir.
Bilgisayarın denetim parçaları yani elektronik parçaların mantık kapılarına dönüştürülmesi 60’ların öncesinde yapılandırıldı. Bilgisayarların inşasının özellikle denetim mantığının karmaşık ve hata eğilimli olduğunun kısa zamanda farkına varılmıştır bu yüzden hataları azaltmak ve ileri sistem yapılandırılması yapmak için birtakım teknikler geliştirildi. Bunun rağmen hala karmaşıktır ve hataları da düzeltmek zordur.
1947'de MIT Whirlwind tasarımı, bilgisayar tasarımını kolaylaştıran ve "amaca özel-niyete mahsus" olan yöntemlerin ötesine geçmek için bir yol olan denetim belleği fikri ile tanıştı. Denetim belleği iki boyutlu bir kafestir. Bir boyut MİB dahili saatinden "denetim zamanı vuruşları" olarak kabul edildi, diğeri ise kapılar ve diğer akımlar üzerindeki denetim sinyallerine bağlıdır. "Vuruş dağıtıcı", MİB saati tarafından oluşturulan vuruşları alır ve her biri kafesin farklı bir satırını etkinleştiren sekiz parça zaman vuruşuna böler. Satırlar etkinleştiği zaman, kendisine bağlı olan denetim sinyallerini etkinleştirir. Başka bir yoldan açıklarsak, sinyaller denetim belleğinden ardışık bir şekilde yayılır ve bitlerden kurulan çok geniş kelime dizisi tarafından kontrol edilir. Mikroprogramlama karmaşık yorumlayıcılara alternatif olarak 1951 yılında Maurice V. Wilkes tarafından ileri sürüldü. Wilkes'in tasarısı bir sonraki buyruğu gidip ana programdan alıp getiren, buyruğu çözümleyen ve buyrukları çalıştırmak için gerekli donanımsal işleri gerçekleştiren fiziksel bağlantılı bir program uygulamakla ilgilidir. Bu denetim yolu tasarımını fazlasıyla kolaylaştırır. Bu tasarıya göre mikroprogram merkezî işlem birimi üzerindeki bir bellek dizisinde saklanmalı ve hemen hemen olağan programlama teknikleri ile tasarlanmalı daha sonra da teller ve kapılarla gerçekleştirilmelidir.
1951'de Wilkes bu konuya "koşullu uygulamayı" ekleyerek geliştirdi. Onun başlangıç uygulaması bir çift matris içerir. İkinci matris bir sonraki devire geçen sinyal satırını seçerken, birincisi Whirlwind denetim belleği şeklinde sinyaller üretir. İkinci matristen alternatifler seçebilen koşullular denetim belleğinde tek bir hat geliştirilerek uygulandı. Bu yakalanan dahili sinyallerde koşullu denetim sinyalleri oluşturur. Wilkes bu özelliği açıklamak ve bunu basit bir denetim belleğinden ayırmak için mikroprogramlama terimini keşfetti.

Yatay ve dikey mikroprogramlama

Yatay ve dikey olmak üzere iki tür mikro programlama vardır. Bu ayrımın sebebi mikro kodun işlenme şeklidir. Veriyolu kontrol sinyalleri ile yönetildiğinden mikro kodun bu sinyallerle nasıl ilişkilendirileceği problemi ortaya çıkar. Yatay ve dikey mikro programlama bu ilişkilendirme şeklidir. En basit yöntem olan "tam yatay mikro programlama" mikro koddaki her bitin kontrol sinyallerindeki bitlerle birebir eşlenmesidir. Ama böyle bir mikro programlama tekniğinde veriyolu yönetimi için çok fazla mikro buyruk ve aynı zamanda geniş veri yolu gerektirmektedir. Bunlara rağmen paralel programlama desteğini de artırmaktadır. Diğer bir mikro programlama türü tam dikey mikro programlamadır. Bu yöntemle veriyolu bitleri kodlanmakta ve böylece daha az mikro buyruk gerektirmektedir. Mikro buyruklardaki azalma ise mikro programlama için gerekli olan belleği azaltmaktadır. Ama dikey programlama paralel programlamayı engeller.