BSA : Dallan ve Geri Dönüş Değerini Sakla [Bellek Adreslemeli Buyruk]

Yazar:



Daha önceki konumuzda bir bellek adreslemeli buyruk çeşidi olan BUN buyruğunu anlatmıştım. O konuyu iyice anladıysanız eğer bu konuyu da rahatlıkla anlayabilirsiniz.

Önceki yazı : BUN : Şartsız Dallanma [Bellek Adreslemeli Buyruk]

BSA buyruğu da aynen BUN buyruğu gibidir aslında ama BSA buyruğunun tek farkı geri dönüş değeri saklaması ve önceki yapılan işlem nerede kaldıysa, oradan devam etmesidir.

BUN buyruğunda yazılım düzeyinde bir örnek verirken "void fonksiyon" üzerinden bir örnek vermiştim. BSA buyruğunda ise yine aynı örnekten yola çıkacağız fakat bu sefer bu fonksiyonumuzun "int" veya "double" tipinde dönüş değeri olan bir fonksiyon olduğunu varsayacağız.

100 satırlık bir kod yazdığınızı düşünün. Bilsayarınız, yazdığınız programı ilk satırdan derlemeye başladı. Siz ise 50. satırda bir "int" tipinde bir fonksiyon yazdığınızı düşünün. Bilgisayarınız adım adım 1. satırdan başlayarak programı derlemeye başladı ve siz 50. satırdaki "int" tipindeki fonksiyonunuzu 25. satırda çağırdığınız diyelim. Programınız satır satır derleme işlemi yaparken 25 satıra geldiğinde, 50. satırdaki fonksiyonu çalıştırmaya başlayacak. Fonksiyon çalışacak ve fonksiyonun tipi "int" olduğu için "return" ile fonksiyon 25. satıra geri dönüş değeri ile sonucu verip, 26. satırdan program çalışmaya devam edecetir. İşte donanım seviyesinde de buna benzer bir iş meydana gelmektedir. Bu sebeple de BSA buyruğunun Türkçe adı "Dallan ve Geri Dönüş Değerini Sakla"dır.

BSA buyruğu da yine, önceki bellek adreslemeli buyruklar gibi T4 zamanında işlem yapmaya başlar. Çünkü önceki yazılarda da dediğim gibi ilk 3 adım standart olarak her buyruk işleme, işlemi öncesi gerçekleşmektedir demiştim.

T3 zamanına kadarki mikro işlemleri özet olarak hatırlayacak olursak :
 

Şekilde T2'ye kadar olan adımlar var. T3'te buyruk donanımsal denetim biriminde çözülüp, ne tür bir buyruk olduğuna karar veriliyordu. Mesela şuanda bellek adreslemeli buyruk konusunu işlediğimize göre T3 adımında bellek adreslemeli buyruk olduğu kararı verilmiştir deriz. T3'ten sonra ise BSA buyruğu şu şekilde işleyecektir :



Açıklaması :
Bir sonraki buyruğun adresi PC’den alınır ve bellekte belirtilen adrese yazılır. Alt programın başlangıç adresi PC’ayazılır ve alt programın ilk adresi olarak çalışır. Adım adım yazacak olursak;
T4 zamanında; T4 zaman sinyali belleğe yazma işlemini başlatır. PC içeriği veri yoluna yazılır ve AR’ninINR girişi aktif hale gelir.
T5 zamanında; AR içeriği PC’ye yazılır ve SC sıfırlanır.

Ticari bilgisayarların çoğunda dönüş adresi ya bir işlemci registerındaya da belleğin yığınında saklanır. BSA buyruğunun tek bir zaman süreci içinde işlenmesi mümkün değildir.

Şimdi size biraz daha somut bir örnek vereyim. Aslında her şey bit seviyesinde gerçekleşiyor ama ben daha iyi anlamanız açısından 10'luk sayı sistemi üzerinden örnek vereceğim.

BUN buyruğunda verdiğim örneğin benzerini yazacağım ki iki işlem arasındaki farkı daha iyi görün.


Bu sefer 200 satırlık bir belleğimiz olduğunu varsayalım. PC = 19 olsun. Yani 19. satırdaki buyruğu çalıştır dedik bilgisayara. Daha sonra PC otomatik olarak T2 zaman diliminde
PC <= PC + 1 şeklinde bir sonraki bellek satırını gösteriyor demiştik. Sonuç olarak  
PC = 20 oluyor. Yani 20. (yirminci) satırdaki buyruğu çalıştırıyor. PC'ye müdahale edilmediği sürece son satıra kadar yani, 20. satıra kadar her satırdaki veri bu şekilde tek tek işlenir. "PC'ye müdahale edilmediği sürece" lafı ile kastettiğim şey ise, "BUN veya BSA buyrukları ile karşılaşmadığı sürece" demek istiyorum aslında.

Şimdi ise BSA dediğimiz buyruğu, 200 satırlık bellek örneğinden yola çıkarak açıklayayım. Diyelim ki PC register'i 20. (yirminci) satırın adresini gösteriyor. Yani PC = 20 olsun. Bu satırda ise BSA buyruğu ile karşılaştık. BSA ile karşılaştığımız sırada BSA adres registeri olan AR'de 135 değerini içeriyor olsun. Yani AR = 135 olsun. Yazının başlarında BSA buyruğu adres tutar demiştik. Bu sebeple T4 zamanında bu 135 olarak gösterilen adres gözünün içine 21 yazıyoruz. Biz 20. satırdayekn BSA ile karşılaştığımız için, BSA'nın gösterdiği 135 nolu bellek gözüne gidiyoruz. Oraya 21 değerini yazıyoruz. Daha sonrasında ise T5 anında 136. satırdan itibaren program çalışmaya devam ediyor. Taa ki... 135 adres satırını tutan BUN buyruğunu görene kadar.

135 nolu bellek satırını gösteren BUN buyruğu bizi 135 nolu satıra geri götürecektir. 135 nolu bellek gözünün içinde de BSA'nın yazdığı "21" değeri vardı. Oradaki 21 değeri de bizi kaldığımız yere geri götürerek işlemlerimizi yapmaya kaldığımız yerden devam ederiz. Çünkü örneğin başında da hatırlayacağınız üzere 20. (yirminci) satırda kalmıştık en son. Daha sonra BSA geldiği için 135'e gidip oradaki işlemlerimi yapmıştık. Nihayetinde işimiz bitince kaldığımız yere geri döndük. Bu sebeplde BSA buyruğuna "Dallan ve Geri Dönüş Değerini Sakla" denmektedir zaten. Dikkat ettiyseniz BUN sadece dallanıyor. Yani içinde ne var ise, hangi adresin değeri tutuluyor ise sadece oraya gitme işlemi yapıyor. O kadar.

Bu örneğin görselini aşağıdaki ekran görüntüsünden görebilirsiniz :



Not : Konu anlatımı bana aittir fakat konuyu daha iyi anlatabilmem açısından verdiğim örnekteki ekran görüntüsü, Mustafa Kemal Üniversitesi Bilgisayar Mühendisliği öğretmenlerimizden İpek Abasıkeleş hocamızın ders notundan alıntı yapılmıştır.

Bilgisayar Mimarisi Dersi Konu Anlatımlarının Tamamı İçin Buraya Tıklayınız!

0 yorum:

Yorum Sayfası :


Yorum formuna konuyla ilgili görüş ve sorularınızı bırakabilirsiniz.

Yorumunuza mümkün olan en kısa sürede dönüş yapılacağından emin olabilirsiniz.


Eklenen yorumlar, moderatör onayından sonra yayınlanmaktadır.

BLOGKAFEM.NET © Copyright 2008-2023
Sitedeki yazıların her hakkı BLOGKAFEM.NET sitesine aittir.
Kopyalanması halinde lütfen kaynak gösteriniz.
DMCA.com Protection Status
Anasayfa | Hakkında | İletişim