Bir önceki yazımızda bilgisayarın en temel görevlerini yerine getiren Buyruk yapısından, işlevlerinden ve çeşitlerinden bahsetmiştik. 

Şimdiki yazımızda ise Buyrukların nasıl tam olduğundan, buyrukların çalışmasındaki zaman denetiminden, Buyruk sürecinin nasıl işlediğinden ve buyruk tipini nasıl belirleyebileceğimizden bahsedeceğiz. 

BUYRUK KÜMESİNİN TAM OLMASI 

Bir bilgisayarda bir adet buyruk kümesi vardır. Buyruklar nihayetinde bir küme halinde görevlerini yerine getirirler çünkü kendi yapıları en basit ve temel işlemler için hazırlanmıştır. Bu buyruklar sayesinde kullanıcı olan kişi birleştirici dil programlar yaparak işlenebilir fonksiyonlar yazabilir.

Peki bu buyruk kümesi ne zaman tam olarak bir küme olur? Aşağıdaki belirtilen sınıflarda yeterince buyruk varsa biz o kümeye tam diyebiliriz. 

1.Aritmetik, mantık ve kaydırma buyrukları (ADD, CMA...) (Eğer eksik olursa bilgi doğru işlenmez ve oluşmamış olur.) 

2.Bilginin bellek ve yazaçlar arasında aktarılmasını sağlayacak buyruklar (LDA,STA...)

3.Durumu belirleyen programlarla program denetim buyrukları (BUN,ISZ...)

4.Giriş/Çıkış Buyrukları (IN,OUT)

 

Buyruk kümesi yukarıdaki elemanları sağladığında tam olduğu konusundan emin olabiliriz. Ancak yine de bir buyruk kümesinin tam olması bilgisayarın çok etkin ve hızlı olduğu anlamına gelmez. Bilgisayarın daha hızlı olması için daha etkin toplama, çıkarma, VEYA ve ÖZEL-VEYA işlemlerinin olması gerekir. Temel bilgisayarda olmayan bu işlemleri ise programlar yardımıyla elde ederek bilgisayarımızın daha etkin olmasını sağlayabiliriz. 

 

BUYRUKLARIN ZAMANLAMASI 

Temel bilgisayarda bütün yazaçların zamanı bir ana saat tarafından kontrol edilmektedir. Saat vuruşları sistemdeki tüm yaz-bozlara ve yazaçlara uygulanmaktadır ancak bu vuruşlar yazaçların içeriğini denetim sinyali tarafından izin verilmediği sürece değiştiremez. Yani saat vuruşu sadece izin verilmiş yazaçların içeriğini değiştirebilir.

Bilgisayardaki pek çok olay saat vuruşlarıyla çalışsada buyrukların zamanlaması saat vuruşuna bağlı değildir. 

Her bir buyruğun bir çok mikro buyrukları vardır. Yani bölünmüş bir yapıya sahiptir. Bu yüzden her bir buyruk T0 ve T15 arasında zaman dilimlerine ayrılarak kontrol edilir. Buyruğun dilimleri ayrılmasını SC yazacı sağlar. 

SC yazacı bir decoder yardımıyla belirtilen sinyalleri üretir ve buyruk yazacından gelen emirler için zaman oluşturmuş olur. Ancak her buyruk T15'e kadar olan zamanını doldurmak zorunda değildir. Gerektiği durumlarda daha kısa sürede bitirebilir. Bu durumda görevini yerine getiren buyruk yazacı T15'den önce biterse geriye dönmeden önce SC yazacının içini sıfırlar. Böylelikle ardından gelen buyruk tekrar T0 anından başlamış olur ve zamanda kayıp önlenmiş olur. 

 

BUYRUK SÜRECİ NASIL İŞLER? 

Her bir buyruk süreci bir takım alt parçalardan oluşur. Temel bilgisayarda ki her bir buyruk için aşağıdaki süreçler takip edilir;

1.FETCH: Buyruğun bellekten alınıp getirilmesi 

2.DECODE: Getirilen buyruk kodunun çözülmesi 

3.ETKİN ADRES: Eğer buyruk dolaylı adreslemeli ise etkin adresin okunması

4.EXECUTE: Buyruğun icrası. 

 

Fetch ve Decoder Evresine ait mikro işlemler aşağıdaki gibidir; 

T0: AR ← PC 

Bu aşamada Sıra Sayıcı olan SC'nin içeriği sıfırlanmıştır ki böylelikle T0 zaman sinyali üretilmiştir. Program Sayıcı olan PC ise ilk buyruğun adresini AR registerından almaktadır. PC yazacı direkt olarak belleğe ulaşamaz. Bu yüzden adres bellekten önce AR'ye yazılır. Ardından PC tarafından AR'den alınır. 

T1: IR ← M[AR], PC ← PC+1

Bu aşamada ise bellekten alınan adres yani PC'nin içeriği IR registerına yüklenir. Ardından artık boş olan PC bir arttırılır ve böylelikle PC bir sonraki buyruğun adresini almak üzere hazırlanır. 

T2: D0,...D7 ← DECODE IR(12-14), AR ← IR(0-11), I ← IR(15)

Bu kısımda IR'de olan 12-14 bit arasındaki İşlem Kodu D0'dan D7'ye kadar olan 8 bitlik alan içerisine çözülür. Böylelikle yapılacak iş ve belleğin tipi anlaşılmış olur. 

İkinci adımda IR'nin 0-11 bitleri arasında eğer bir veri varsa bunu AR'ye yazarak tekrar okuabilmeyi sağlamış oluruz. 

Üçüncü adımda IR içerisindeki 15.bitin durumuna bakarız. Çünkü bir önceki yazıdan da hatırlayabileceğimiz gibi 15.bit adresleme bitidir. Dolaylı ya da doğrudan adresleme olmasına göre farklı işlemler yapılacağı için 15.bitin I flagına atılmasını sağlarız.

Adresleme durumuda belirlendikten sonra geriye kalan T zamanlarında buyruk EXECUTE edilir. Yani T0-T1 evresinde FETCH işlemi çalışır. T2'de ise DECODE işlemi yürürlüktedir. Geri kalan zaman dilimlerinde ise EXECUTE işlemi devam eder. 

 

BUYRUK TİPİ NASIL BELİRLENİR?

DECODE aşamasından sonra EXECUTE olayına girmişken aktif olan zaman T3 zaman dilimdir. İşte bu zamanda denetim birimi bellekten henüz okunmuş olan buyruk tipini belirler. Bu belirleme ilerleyen işlemlerin nasıl ilerleyeceği konusunda süreci yönetir. 

 

 

Yukarıdaki şemada detaylandırılmış tip belirleme aşamasını açıklayacak olursak;

-Öncelikle elektrik verildiği anda SC'nin içi sıfırlanır. Böylelikle buyruk süreci başlamış olur.

-Ardından T0 anında meydana gelen FETCH işlemi gerçekleştirilir ve PC içerisine AR'de belirtilen buyruk adresi yüklenir. 

-T1 anında FETCH olayı devam eder. Bu kısımda PC'nin içeriği işleme alınmak üzere IR'ye aktarılır. (Bellek adresi aktarılmıştır.) Ve PC değeri bir arttırılır, sonraki işleme geçer. 

-T2 anında istenen DECODER ile buyruğun çözümlenmesi işlemi başlar. Adımlar yukarıda açıkladığımız gibi devam eder. (İşlem kodu decodera, 0-11.bitler belleğe ve 15.bit I'ya gider.)

-Tüm bu süreçler yerine getirildikten sonra T3 anıyla birlikte belirleme işlemi başlar. Öncelikle işlem kodunun çözümlenip değerlerinin verildiği çıkışlardan biri olan D7 değerine bakılır. Bu D7 buyruk içerisindeki işlem kodunun Decoder'dan geçtikten sonra elde edilen değerlerinden birisidir. 

Eğer D7 1 ise buyruk Yazaç ya G/Ç tipindedir. Eğer 0 ise Bellek Adreslemeli buyruktur. 

-Buna karar verildikten sonra I flagına bakarız. Bir önceki yazıdan hatırlayacağımız üzerine eğer buyruk bellekten bir veri almıyorsa bellek adreslemeli buyruktan farklı olarak adres biti farklı işlemlere tahsis edilebilir demiştik. İşte adres belirtmeyen I flagı ve peşinde gelen bitler 111 ile başlıyorsa buradaki değeri kontrol ederiz. Yazaç ya da G/Ç olduğuna karar verdiysek I bitinin durumu bizi bunlardan bir ihtimali elememizi sağlar. 

Ama eğer geçen adımda bellek adreslemeli olduğuna karar verdiysek I bitine baktığımızda adresleme tipine karar vermemiz gerektiğini görürürüz. 

İlerleyen aşamalarda EXECUTE aşamasına geçilirken Dolaylı Adreslemeli durumda farklı bir durumun olduğu görülür. Dolaylı adreste etkin adrese ulaşmak adına T3 adımı bu olaya ayrılmıştır. Bu işlemde tamamlandıktan sonra Bellek Adreslemeli buyrukta çalıştırılmış olur. 

Donanımlar ortak olsun, çalışma zamanları senkronize olsun diye doğrudan adreslemeli bellek referanslı buyruk bir zaman diliminde hiçbir şey yapmaz, diğer durumun gerçekleşmesini bekler. 

Tüm bu aşamalar bittiğinde SC'ye geri dönülür. Ve diğer buyruklarında bu sıraya girmesine izin verilir.