Örnek : 24 bitlik bir bilgisayar 250 adet bellek referanslı buyruk içeriyor olsun.  Bu durumda bu bilgisayarın her bir register'i kaç bit veri içerir?

Register'leri anlattığım konu : Temel Bilgisayarın İç Yapısı ve İşleyişi [Bilgisayar Mimarisi]

Detaylı Çözüm :
Bilgisayarın 24 bitlik olması demek, bu bilgisayarın 24 bitlik buyruk register'lerine (IR) sahip olması anlamına gelmektedir. Ayrıca, bellekteki herbir satır da aynı zaman 24 bit veri tutuyor demektir. Yani belleğin her bir satırında 24 kutucuk var diyebiliriz. Her kutucuğa da bir bit geldiğini düşünürsek.

Sonrasın da ise 250 adet buyruk içeriyormuş dedik örneğimizde.

Buraya kadarlık kısmı zaten "Doğrudan Adresleme" örneğinde de anlatmıştım.
Bakınız :  Bilgisayar Mimarisi Örnek Sorular ve Çözüm [Doğrudan Adresleme]

Asıl fark buradan sonra başlıyor.  Bu sefer 24 bitlik register dediğimiz şey 3 parçaya bölünmüştür. Bir kısmında OPR bitleri saklanır, diğer kısmda adres bitleri ve doğrudan adreslemeden farklı olarak 1 bit de o verinin doğrudan mı dolaylı mı olduğu bilgisi saklanır.

O 1 bit;
0 ise doğrudan adresleme. (Önceki örnekte gösterme gereği bile duymadık.)
1 ise dolaylı adresleme olduğunu gösterir.

Soruda "250 adet bellek referanslı buyruk" demişiz. Bu da demek oluyor ki bu basit yapılı bilgisayarımız 250 çeşit farklı işlem yapabilir. Demin dediğim gibi toplama, çıkarma, çarpma, kopyalama, taşıma... vs. vs. vs. böyle 250 tane işlem yapılabiliyormuş.

Register'imiz 24 bitlikti soruya göre. Bu bilgisayar 250 tane işlem yapabiliyorsa o halde OPR biti dediğimiz kısım 8 bit olmalı. 8 bit ile kaç farklı kombinasyon yada kaç farklı işlem yapılabilir? Cevap = 256 farklı işlem! (Çünkü 2 üzeri 8'den 256 farklı kombinasyon çıkar.)


OPR bitinin neden 8 olduğunu önceki örnekte detaylı bir şekilde anlattığım için burada tekrardan detayları ile anlatmayacağım.


Neden OPR bitine "8 bit olmalı? diyorsanız eğer, buraya tıklayarak önceki yazıyı inceleyiniz.


Sonuç olarak, OPR bitimiz = 8 bit imiş. Bu kombinasyon olayından onu anladık. Bilgisayarımız 24 bitlik bir bilgisayar olduğuna göre ve dolayısıyla registerlar de 24 bitlik olduğuna göre 24-8 = 16 bitlik bir alanımız kalıyor geriye. Bu 16 bitin 1 biti "dolaylı adresleme" olduğunu gösteren bittir. O halde IR register'in adres kısmına 15 bit kalacaktır. (1+ 15 + 8 = 24)

Yani şeklimiz şöyle olacaktır :



PC ve AR adres taşıyan registerlar oldukları için adres kısmını taşırlar. birinci şekilde adres kısmı 15 bit olduğu için;

PC = 15 bit
AR = 15 bit

diğer kalan tüm registerlar bu soruya göre 24 bit olacak.

IR = 24 bit
DR = 24 bit
TR = 24 bit

veri taşırlar.

Tüm cevap buydu. Anlamadığınız yerler olursa eğer, aşağı kısma yorum olarak yazabilirsiniz. Size elimden geldiğince yardımcı olmaya çalışırım.

Yukarıdaki örneği anladıysanız eğer, konuyu daha iyi pekiştirmek için aşağıdaki örneği de siz yapın.

Örnek :
20 bitlik bir bilgisayar 130 farklı buyruk çalıştırabiliyor. Bu durumda bellek şekli nasıl olur? AR, PC, IR, TR, DR registerlerinin her biri kaç bit olur? (dolaylı adresleme olacak.)

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

Yazının devamını oku
Örnek : 24 bitlik bir bilgisayar 250 adet bellek referanslı buyruk içeriyor olsun.  Bu durumda bu bilgisayarın her bir register'i kaç bit veri içerir?

Register'leri anlattığım konu : Temel Bilgisayarın İç Yapısı ve İşleyişi [Bilgisayar Mimarisi]


Detaylı Çözüm :
Bilgisayarın 24 bitlik olması demek, bu bilgisayarın 24 bitlik buyruk register'lerine (IR) sahip olması anlamına gelmektedir. Ayrıca, bellekteki herbir satır da aynı zaman 24 bit veri tutuyor demektir. Yani belleğin her bir satırında 24 kutucuk var diyebiliriz. Her kutucuğa da bir bit geldiğini düşünürsek.

Sonrasın da ise 250 adet buyruk içeriyormuş dedik örneğimizde.

Önceki paragrafta 24 bitlik buyruk register'ı (IR) demiştim. Doğrudan adresleme olayında 24 bitlik register dediğimiz şey 2 parçaya bölünmüştür. Bir kısmında OPR bitleri saklanır. Diğer kısmında verinin adresi saklanır.

OPR bitleri dediğimiz yerde buyruklar saklanır. OPR biti işlem bitidir. Yani verimizi hangi işleme tabi tutacağımızın bilgisi orada saklıdır. Toplama, Çıkarma, Çarpma vs.

Soruda "250 adet bellek referanslı buyruk" demişiz. Bu da demek oluyor ki bu basit yapılı bilgisayarımız 250 çeşit farklı işlem yapabilir. Demin dediğim gibi toplama, çıkarma, çarpma, kopyalama, taşıma... vs. vs. vs. böyle 250 tane işlem yapılabiliyormuş.

Register'imiz 24 bitlikti soruya göre. Bu bilgisayar 250 tane işlem yapabiliyorsa o halde OPR biti dediğimiz kısım 8 bit olmalı. 8 bit ile kaç farklı kombinasyon yada kaç farklı işlem yapılabilir? Cevap = 256 farklı işlem! (Çünkü 2 üzeri 8'den 256 farklı kombinasyon çıkar.)

Neden OPR bitine "8 bit olmalı" dedim?? - Bu sorunun cevabını biraz daha detaylı yazayım.

Mesela OPR bitine 7 deseydik, 2 üzeri 7 = 128 edecekti. 7 bit ile 128 farklı kombinasyon yapılır. Yani bu bilgisayar 128 farklı sorun çözer. Oysaki bizim bilgisayarımız 250 adet bellek adreslemeli buyruk içeriyormuş. Yani 250 adet sorun çözebiliyormuş.

8 yaptık, çünkü (2 üzeri 8) = 256 ediyor. Yani bu bilgisayar 256 farklı sorun çözebilir. +6 fazla çıkıyor ama o önemli değil. 250'den +6 fazla. Ama fazla olması önemli değil. Fazla olsun ama az olmasın. Problem değil. Sonuçta 250 adet işlem içeriyor olmasıdır bizim için önemli olan. Soruda, bu bilgisayarın 250 adet bellek adreslemeli (referanslı) buyruk içerdiği söylenmiş.


Kombinasyon kısmını açacak olursam :

0 0 0 0 0 0 0 1 = Toplama
0 0 0 0 0 0 1 0 = Çıkarma
0 1 0 0 0 0 0 0 = Çarpma
0 0 1 0 0 0 0 0 = Bölme

..vs. şeklinde 256 farklı işlem bilgisi tutuluyor bilgisayarda. Herbiri 8 bit olacak şekilde.

Bu olayı daha basit şekliyle şöyle açıklayabilirim. Sayısal Tasarım yada Sayısal Elektronik dersi gördüyseniz eğer oradan mantık kurun. Eğer Flip-Flop 2 bitlik ise, bu 2 bit ile 4 farklı kombinasyon yapabiliyorduk.

(2 üzeri 2) = 4 farklı kombinasyon.
Bu 4 kombinasyon da şunlar olacaktır : 00, 01, 10 ve 11


Sonuç olarak, OPR bitimiz = 8 bit imiş. Bu kombinasyon olayından onu anladık. Bilgisayarımız 24 bitlik bir bilgisayar olduğuna göre ve dolayısıyla registerlar de 24 bitlik olduğuna göre....
O halde IR register'in adres kısmına 16 bit kalacaktır. (16 + 8 = 24)

Yani şeklimiz şöyle olacaktır :


Soruda bilgisayarımız için 30 bitlik bir bilgisayar deseydi OPR biti yine 8 bit olacaktı. Çünkü soruda "bu bilgisayar 250 adet buyruk" içeriyor demiş. Ama adres biti bu sefer 22 olurdu. Şayet öyle bir şey olsaydı. 

Son olarak..
24 bitlik bilgisayar örneğimize göre herbir registerin kaç bit veri içerdiğini yazalım :

PC ve AR adres taşıyan registerlar oldukları, bellekteki 24 bitlik verinin sadece adres kısmını tutarlar. Şekilden de göreceğiniz üzere adres kısmı 16 bit olduğu için;

PC = 16 bit
AR = 16 bit

diğer kalan tüm registerlar bu soruya göre 24 bit olacak.

IR = 24 bit
DR = 24 bit
TR = 24 bit

veri taşırlar.

Tüm cevap buydu. Anlamadığınız yerler olursa eğer, aşağı kısma yorum olarak yazabilirsiniz. Size elimden geldiğince yardımcı olmaya çalışırım.

Yukarıdaki örneği anladıysanız eğer, konuyu daha iyi pekiştirmek için aşağıdaki örneği de siz yapın.

Örnek :
20 bitlik bir bilgisayar 130 farklı buyruk çalıştırabiliyor. Bu durumda bellek şekli nasıl olur? AR, PC, IR, TR, DR registerlerinin her biri kaç bit olur? (doğrudan adreslemeli olacak.)


Bu konu ile ilgili anlatacaklarım bu kadar. Peki ya soruda "dolaylı adresleme" deseydi ne yapacaktık? O konuya da başka bir başlık altında değineceğim.

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



Yazının devamını oku
Önceki konularda BUN ve BSA buyruk tiplerini detaylı olarak anlattım.

BUN : Şartsız Dallanma
BSA : Dallan ve Geri Dönüş Değerini Sakla

O konuları iyi anladıysanız bu konuyu da anlarsınız diye düşünüyorum.

ISZ 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 ISZ buyruğu şu şekilde işleyecektir :


Açıklama : 
D6T4 : M nolu bellek gözündeki veriyi, DataRegister'e yükle.
D6T5 : Verinin değerini 1 arttır. (Veri bitler halindedir ve veri bit düzeyinde 1 arttırılıyor.)
D6T6 : Bit değeri arttırılan veriyi M nolu bellek gözüne yükle. Eğer DR =0 ise PC <= PC + 1 yaparak bu veriyi işlemeden bir sonraki veriye atla. Program sayacı olan SC'yi de yine sıfırla.


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

Yazının devamını oku
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!

Yazının devamını oku
Daha önceki yazımızda "Bellek Adreslemeli Buyruklar"a giriş yapmıştık. Bu yazıda ise bellek adreslemeli buyruklar konusuna devam edeceğiz. Eğer önceki konuyu incelemediyseniz, bu konuyu daha iyi anlayabilmek için önceki yazıyı okumanızda fayda vardır.

Önceki yazı : Bellek Adreslemeli Buyruklar

BUN buyruğu da bir bellek adreslemeli buyruktur. Tam olarak Türkçe'ye karşılığı "Şartsız Dallanma" anlamına gelmektedir. BUN buyruğunun önceki bellek adreslemeli buyruklardan farkı ise registerlar arası bilgi aktarımı yapmamaktadır. BUN buyruğu, programcıya buyrukların sırasını bozabilme yetkisi kazandırır. Buna programın dallanması veya atlaması adı da verilir. "Şartsız Dallanma" kelimesindeki "şartsız" ifadesi ise bu buyruğun geri dönüş değeri olmadığı anlamına gelmektedir.

Yazılım düzeyinde bir örnek verecek olursam. Bir program yazdığınızı düşünün. Bu programda fonksiyon kullandığınızı düşünün. Bilsayarınız, yazdığınız programı ilk satırdan derlemeye başladı. 100 satırlık bir kod yazdığınızı düşünün. Siz ise 50. satırda bir "void" tipinde bir fonksiyon yazdığınızı düşünün. Bilgisayarınız adım adım 1. satırdan başlayarak programo derlemeye başladı ve siz 50. satırdaki void 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, 25 ile 50. satır arasını atlayarak direkt olarak 50. satırdaki fonksiyonu çalıştırmaya başlayacak ve fonksiyon void olduğu için (geri dönüş değeri yok) 50. satırdan itibaren derleme işlemini devam ettirip 100. satırda derleme işlemini bitirecektir. İşte donanım seviyesinde de buna benzer bir iş meydana gelmektedir. Bu sebeple de BUN buyruğunun Türkçe adı "Şartsız Dallanma"dır.

BUN buyruğu da yine, önceki bellek adreslemeli buyruklar gibi T4 zamanında işlem yapmaya başlar. Çünkü önceki yazıda da dediğimiz 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 BUN buyruğu şu şekilde işleyecektir :

BUN buyruğu tek bir mikroişlem ile gerçekleştirilir. Etkin adres ortak veri yolu ile PC’ye aktarılır ve SC’nin yine "0" yapılır. Şöyle ki;


Açıklaması : 
PC, bildiğiniz üzere adres tutar. Peki neyin adresini tutuyordu? PC, çalıştırılacak programın adresini tutuyordu. PC’ye adres aktarma işlemi yaparak, "git oradaki veriyi işle ve oradan itibaren buyrukları işlemeye devam et" demiş olduk bilgisayarımıza.

Ş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.


Bazı karakterlerin editör tarafından desteklenmemesi sebebi ile örneği ekran görüntüsü şeklinde vermek zorunda kaldım.

BUN buyruğu ile ilgili anlatacaklarım bu kadar. Sonraki konumuzda ise yine bir bellek adreslemeli buyruk olan BSA buyruğunu anlatacağım. Bu konu ile ilgili tüm sorularınızı aşağıdaki kısma yorum olarak bırakabilirsiniz. Elimden geldiğince sizlere yardımcı olmaya çalışırım.

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

Yazının devamını oku
Bu yazıda yazacaklarımı anlayabilmek için önceki yazılarım hakkında bilgi sahibi olmanız gerekmektedir.

Önceki yazılar :
Bilgisayarın İç Yapısı ve İşleyişi  [Bilgisayar Mimarisi]
Bilgisayarın İç Yapısı ve İşleyişinde OPR Biti [Bilgisayar Mimarisi]

OPR bitinden bahsettiğim konuda bir buyruğun bellek adreslemeli buyruk olup olmadığına bilgisayarın nasıl karar verdiğinden bahsetmiştim. OPR biti 111 olmadığı sürece gelen buyruğun kesinlikle her bellek adreslemeli buyruk olduğunu söylemiştim. Neden 3 bit olarak almıştık OPR bitini? Çünkü bilgisayarımızın 16 bitlik basit bir bilgisayardı demiştim. 3 bit  OPR biti içeren bir bilgisayar 7 farklı bellek adreslemeli buyruk içerir. Onları da şöyle sıralamıştık :

D0 işlemi veya buyruğu için bilgisayardaki OPR biti kodu = 000
D1 işlemi veya buyruğu için bilgisayardaki OPR biti kodu = 001
D2 işlemi veya buyruğu için bilgisayardaki OPR biti kodu = 010
D3 işlemi veya buyruğu için bilgisayardaki OPR biti kodu = 011
D4 işlemi veya buyruğu için bilgisayardaki OPR biti kodu = 100
D5 işlemi veya buyruğu için bilgisayardaki OPR biti kodu = 101
D6 işlemi veya buyruğu için bilgisayardaki OPR biti kodu = 110

Bu 7 işlemin hepsi bellek adreslemeli buyruk işlemidr. İşte bu konumuzda bu işlemlerin ne işlemleri olduğuna bakacağız.

D0 'a denk gelen OPR biti bilgisayarda = AND işlemi yapıyor.
D1 'e denk gelen OPR biti bilgisayarda = ADD işlemi yapıyor.
D2 'ye denk gelen OPR biti bilgisayarda = LDA işlemi yapıyor.
D3 'e denk gelen OPR biti bilgisayarda = STA işlemi yapıyor.
D4 'e denk gelen OPR biti bilgisayarda = BUN işlemi yapıyor.
D5 'e denk gelen OPR biti bilgisayarda = BSA işlemi yapıyor.
D6 'ya denk gelen OPR biti bilgisayarda = ISZ işlemi yapıyor.


Buyrukların İngilizce açılımları ise şu şekildedir :

AND = And memory word to AC
ADD = Add memory word to AC
LDA = Load AC from memory
STA = Store content of AC into memory
BUN = Branch unconditionally
BSA = Branch and save return address
ISZ = Increment and skip if zero


Tablo olarak gösterecek olursam :

Şimdi bu işlemlerin ne olduklarına bakalım. Şuradaki ilk yazımda T3'e kadar olan tüm adımları yazmıştım. Buradan itibaren ise mikro işlemlere dikkat ederseniz eğer hep T4'den başlatarak yazmaya  başlayacağız. Anlayacağınız üzere orada yaptığımız mikroişlemler standart mikroişlemlerdir. Burada yapılacak bir bir işlem ise devamı niteliğinde olup, T4 zamanından başlayacağına dikkat edin.

Konuya girmeden önce, önceki ilk 3 adımdaki mikroişlemleri hatırlayalım :


AND Buyruğu

AC'yi "VE"le anlamına geliyor. Akümülatör'de (AC) bulunan bitlerle, bellekten alınan veriyi "VE"leme işlemi yapar. Bunun için şu mikro işlemler yapılır :



Açıklaması :
T4 zamanında veri bellekten DR içine atılır.
T5 zamanın AC ile DR "VE"lenir ve sonuç AC'ye yazılır.
Son olarak, sonraki buyruk sürecine hazırlık olsun diye SC = 0 yapılır. Her buyruk işleminden sonra bu SC değeri sıfırlanır. Maksat bir sonraki buyruk T6'dan devam etmesin. Tekrardan T0'dan başlasın diye. SC sadece bir zaman sayacıdır. Kaçıncı zamanda bilgisayarın hangi işlemi yaptığını gösteriyor.


ADD Buyruğu

Bellekteki veri AC'ye eklenir. Başka bir deyişle AC’nindeğeri ile etkin adresten alınan bellek kelimesinin değeri toplanır. Gerçekte, bilgisayar arayüzünde farklı bir işlem yapıyorsunuzdur ama bilgisayarın alt katmanlarında, yaptığınız o işlemin bir parçası olarak bazı bitlerin toplamı gerekiyor olabilir. Bildiğimiz 3+2 şeklinde toplamdan bahsetmiyoruz!Verilerin bit düzeyinde toplamı yapılır. Örneğin; "11011101 + 11100110" gibi 8er bitlik verilerin toplamının yine 8 bit olması beklenirken 9 bit çıkarsa eğer, fazla olan bit eldedir. Bu şekilde, toplamın bir eldesi olma ihtimali olduğu için AC'nin çıkış eldesi E dediğimiz bölgeye aktarılır. Konunun en alt kısmına ekleyeceğim görselden o "E" dediğim kısmı görebilirsiniz.

Şimdi ise ADD buyruğunun bilgisayarda nasıl gerçekleştiğini gösteren mikro işlemlere bakalım :



Açıklaması :
T4 zamanında veri bellekten DR içine atılır.
T5 zamanın AC ile DR toplanır ve sonuç "AC"ye yazılır. SC adı verilen zaman "sayacı" sıfırlanır.


LDA Buyruğu

Bellektekiyi veri "AC"ye yükle anlamı taşır. Bellekten direkt olarak Akümülatör'e (AC) bir yol olmadığı içi veri önce DR dediğimiz DataRegister'e aktarılır. Daha sonra DataRegister'den AC'ye aktarılır.



T4 zamanında veri bellekten DR içine atılır.

Açıklaması :
T4 zamanında, M nolu bellek gözündeki veri DR içine atılır.
T5 zamanında, DR içindeki veri AC'yüklenir. SC adı verilen zaman "sayacı" yine sıfırlanır.


STA Buyruğu

Bu buyruk, "Akümülatör'de (AC) işlenen veriyi belleğe yaz" anlamı taşır. AC çıkışları veri yoluna, veri yolu da belleğin girişlerine bağlıdır. Yazının en altındaki şekilden de bunu görebilirsiniz. Bu sebeple tek mikro işlemle sadece T4 zamanında bu işlem gerçekleştirilebiliyor. Şu şekilde :



Açıklaması :
T4 zamanında, AC'deki veri M nolu bellek gözüne yazılır. SC yine sıfırlanır.

Yukarıdaki buyrukları incelerken, konuyu görsel olarak da pekiştirmeniz için aşağıdaki görseli de inceleyebilirsiniz.

16 bitlik 'register'lara ve 3 bitlik OPR bitine sahip bilgisayarımıza ait işlemcinin ilgili bölümü :



Şuana kadar yaptığım anlatımlarda hep 16 bitlik basit bir bilgisayarı göz önünde bulundurarak işlemler yaptığımızı söylemiştim. Yazının da başında dediğim bu 16 bitlik bilgisayarda toplamda 7 tane bellek adreslemeli buyruk var demiştim. Şuana kadar sizlere D0, D1, D2, D3'e karşılık gelen AND, ADD, LDA, STA buyruklarını anlattım.

Bundan sonrasında ise geriye 3 tane önemli buyruk kalıyor. Bu buyruklar BUN, BSA ve ISZ buyruklarıdır. Bir sonraki yazımda ise bu buyrukları tek tek ele alacağım.

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

Yazının devamını oku
Buradaki yazımda T2 aşamasına kadar bir bilgisayarın iç yapısının işleyişini anlatmıştım. Şimdi ise, T2'den sonraki adımlardan birini işleyerek yolumuza devam edeceğiz.

Önceki yazı : Bilgisayar İç Yapısı ve İşleyişi [Bilgisayar Mimarisi]

T2 aşamasında IR denetim biriminde çözülüyordu. Denetim biriminden çıkan işlemlere göre, kullanıcının yaptığı işlemleri bilgisayar artık anlayabiliyor. Bilgisayarımızın arayüzünde yaptığımız bir çok işlem, bilgisayarda 3 temel kategoriye ayrılmıştır :

1) Bellek adreslemeli işlemler (Kopyalama, toplama vs.)
2) Register adreslemeli işlemler
3) Giriş / Çıkış adreslemeli işlemler (Klavyeden yazı yazma, bilgisayardaki bir metni yazıcı ile A4 kağıdına yazdırma, bilgisayar usb takıp yapılan işlemler vs.)

Yani aslında denetim birimi dediğimiz yerde bellekteki verinin, bu yukarıdaki 3 işlemden hangisi olduğuna karar veriliyor. Peki denetim birimi buna nasıl karar veriyor? Tabii ki de OPR biti ile. Peki OPR biti nedir?



OPR biti, işlem bitidir. Üstte sıraladığım 3 işlemden hangi işlemin yapılacağına karar veren bittir.
OPR biti sabit bir değere sahip değildir. Bu örneğimizde 3'tür. Çünkü, önceki konuda da bilgisayarımızın 16 bit olduğunu söylemiştik. 16 bit bilgisayarımızda 12 bir adres 3 bit OPR + 1 diğer bitti.

OPR biti işlem bitidir. Yukarıdaki 3 işlemden hangi işlemin yapılacağını bilgisayara söyleyen bittir.OPR biti 3 bit olduğu için 2 üzeri 3'ten 8 farklı kombinasyona sahip olabilir. Örneğin;
 
D0 işlemi için = 000
D1 işlemi için = 001
D2işlemi için = 010
D3 işlemi için = 011
D4 işlemi için = 100
D5 işlemi için =  101
D6 işlemi için = 110
D7 işlemi için =  111

8 farklı kombinasyon demek, bu bilgisayar 8 farklı işlem yapabiliyor anlamına gelmektedir. Mesela D0 işlemi toplama işlemi olsun. Ben bilgisayardaki hesap makinesinde 3+2 yaptığım zaman OPR biti 000 olacaktır. Bu sadece basit bir örnekti. Aslında bu 3 bitlik verilerin her biri bir işlemdir. Ben D0, D1, D2 ...vs. şeklinde adlandırdım sadece.

Buyruk registerindeki (IR) OPR bitini, D0 ile D6 arası olan tüm işlemlerden herhangi birine ait kodu içeriyorsa, bu işlemi bilgisayarımız Bellek Adreslemeli işlem olarak bilir. (D0 ve D6 da dahil) Yani, biz bilgisayarımızın arayüzünde bir işlem yapacağımız zaman, bu işlem bilgisayarın içinde D0 ve D6  aralığındaki işlemlerden herhangi birine denk geliyorsa, aslında yaptığımız işlem bellek adreslemeli  işlemdir. Eğer işlemimiz bellek adreslemeli bir işlem ise, bir sonraki aşamada bilgisayarımız, üstteki şekilde A harfi ile gösterdiğim tek bite bakacaktır.

A = 0 ise; doğrudan bir bellek adresleme işlemi yapılacaktır.
A = 1 ise; dolaylı bir bellek adresleme işlemi yapılacaktır.

Şayet.... OPR bitinin tüm bitleri 111 ise yani yapılan işlem D7 işlemi ise o halde, kullanıcının yapmak istediği işlem ya Register adreslemeli bir işlemdir yada giriş/çıkış adreslemeli bir işlemdir. Hangi işlem olduğuna ise yine A biti karar verecektir.

A = 0 ise; register adreslemeli işlemdir.
A = 1 ise; giriş/çıkış adreslemeli işlem olduğunu bilgisayar anlamaktadır ve işlemlerini de ona göre yapmaktadır.

Bir sonraki konuda bellek adreslemeli işlemlerin neler olduğuna ve nasıl yapıldıklarına bakacağız. Şimdilik anlatacaklarım bu kadar. Konu ile ilgili tüm aklınıza takılanlar aşağı kısam yorum olarak bırakabilirsiniz. Bilgisayar Mimarisi, Bilsayar Mühendisliği dersleri arasından anlaşılması güç ve dolayısıyla zor olan derslerden biridir. Umarım bu anlatımlarım, ihtiyacı olan arkadaşlara faydalı olur.

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

Yazının devamını oku
Temel bir bilgisayar en kaba hali ile bellek, işlemci, giriş/çıkış birimleri olmak üzere 3 temel yapı ile tanımlanabilir. Yani bir bilgisayar bu 3 yapının birbiri ile iletişimi ile tüm işlemlerimizi gerçekleştirmektedir. Duruma bu şekilde bakınca her şey basit fakat; bilgisayarın derinliklerine doğru ilerledikçe her şey daha da karmaşık bir hâl alabiliyor. Zaten bilgisayar mühendisliğinin ağır derslerinden biridir bence. Çünkü her şeyi soyut olarak hayal etmek zorunda kalıyorsunuz.

Ben bu yazıda bilgisayarın beyni olan işlemcide gerçekleşen işlemleri daha somut bir şekilde anlatacağım. İşlemci dediğimiz şey bizim i5, i7 dediğimiz bilgisayarın beyni olarak adlandırdığımız yerdir. Tüm işlemler bunun içerisinde gerçekeşir. Bunun içerisinde ALU, Register'lar ve Önbellek vardır.

ALU : Aritmetik ve Logic işlemlerin yapıldığı yer.
Registerler : İşlenecek olan verilere ait bilgilerin saklandığı yer.
Önbellek : Bellekteki verinin daha çabuk işlenmesini sağlayan, işlemci içindeki küçük bellek.

Ben temel bilgisayarın işleyişini bu şekilde anlatırsam muhtemelen her şey havada kalacaktır. Çünkü bu ifadeleri göremediğimiz için sizin için her şey soyut kalacaktır.

Bir masaüstü bilgisayarın kasasını düşünün. Bu kasanın büyük bir imparatorluk olduğunu varsayalım. ALU dediğimiz yer ise verilerin işlendiği yer. Bilgisayarın en önemli yeri. Yani bu imparatorluğun padişahı.

Registerlar ise, padişahın etrafında pervane olan yardımcıları olsun. Toplamda 8 adet register vardır. Padişahın 8 adet yardımcısı gibi düşünebilirsiniz. Veziri, habercisi vs. gibi düşünebilirsiniz. Bilgisayarımızdaki 8 adet register'imizin adları PC, AR, DR, IR, TR, AC, INPR, OUTR 'dir. Bir veri geldiği zaman ise, bu registerler sürekli olarak kendi aralarında birbirlerine ilete ilete bu veriyi ALU'ya yani gönderirler. (Padişahın yardımcılarının, padişaha haber uçurması gibi düşünülebilir.)

Registerleri yazarken uzun adları ile beraber ezberlerseniz daha kolay akılda kalıcı olur. Çünkü kısaltma yaparken, ingilizce olarak yazılan register adlarının sadece baş harfleri alınmış. Örneğin; program = program, adress = adres, data = veri vs. gibisinden.

Program Counter [PC] => İşlenecek olan verinin yerini gösterir.
Adress Register [AR]  => Verinin adresinin tutulduğu yer.
Data Register [DR] => Verinin kendisinin tutulduğu yer.
Instruction Register [IR] => Buyrukların adreslerinin tutulduğu yer.
Temporary Register [TR] => Bilgi geçici olarak saklanmak istendiğinde kullanılan yer.
ACumulator Register [AC] => Genel işlemlerin yapıldığı yer.
INPut Register [INPR] => Bilgisayara veri girişi yapıldığunda, bu verinin tutulduğu register.
OUTput Register [OUTR] => Bilgisayar veri çıkışı yapacağı zaman, bu verinin tutulduğu yer.


INPR ve OUTR kısmına kesmeler konusunda daha detaylı bir şekilde değineceğim. Bu iki register oralarda kullanılıyor.

Bu register'ların boyutları bilgisayardan bilgisayar göre değişiklik gösteriyor. Yani, boyutları her bilgayarda aynı değildir. İşte bilgisayarlardaki 32 bit ve 64 bit mantığı da aslında buradan geliyor. Register uzunluğuna göre o bilgisayar 64 bittir yada 32 bittir diyebiliyoruz. Gerçek hayatta sıkça karşılaşılan bu bilgiyi de bu sayede öğrenmiş oldunuz. :)

Örneğin bizim 16 bitlik mimariye göre tasarlanmış bir bilgisayarımız olsun. Böyle bir bilgisayarda register boyutları şu şekilde olacaktır.

PC : 12 bit (0-11)(0'dan başlayarak 11'e kadar toplam 12 bit.)
AR : 12 bit (0-11)
DR : 16 bit (0-15)(0'dan başlayarak 15'e kadar toplam 16 bit.)
IR :  16 bit (0-15)
TR : 16 bit (0-15)

INPR : 8 bit (0-7)(0'dan başlayarak 7'ye kadar toplam 8 bit)
OUTR : 8 bit (0-7)(0'dan başlayarak 7'ye kadar toplam 8 bit)

Şimdi bilgisayarın işleyişini anlatacağım. Bunu anlatırken, yine 16 bitlik bir bilgisayarı baz alarak anlatacağım. O sebeple konunu geri kalanında üstteki verileri dikkate alarak konuyu okumaya devam edin.

Bilgisayarda Veriler Nasıl İşleniyor?

Tanıtım kısmından sonra verilerin nasıl işlendiğine bakalım. Burayı da yine somutlaştırarak anlatacağım. Dediğim gibi ALU padişahtır. Tahtında oturur ve her şeyi registerlar yapar. Bizim bilgisayarda yapacağımız tüm işlemlerin bilgisi ise bellekte tutulur. Mesela RAM'de veya önbellekte tutulur. Biz buna kısaca bellek diyelim.

Tüm işlemler dedim. Bunu biraz daha somutlaştıralım. Örneğin dosya kopyalama, dosya silme, program çalıştırma, internete bağlanmak için Google Chrome'u çalıştırma işlemi yapacağımız zaman bile bu bilgi işlenmek üzere belleğe yerleşir. Ama 0 ve 1'ler halinde yerleşir. Google Chrome'a tıkladık diyelim. Chrome'un çalışması için gerekli tüm veriler 0 ve 1'ler halinde belleğe yerleşir. Yani belleği bir hastanenin bekleme salonu gibi düşünün. İşlem bekleyen tüm veriler oradadır. PC adlı register ise, bekleyen bu işlemlerden hangisinin çalıştırılacağını gösterir.

Özetle :
Aynı anda Media Player, Chrome, PhotoShop'a tıkladık. Bunların çalışmasını sağlayan tüm veriler belleğe yerleşti. PC en baştan itibaren belleği tarayarak ilk önce hangisine tıkladıysanız, ondan başlayarak işlenecek olan programı seçer. Yani kısacası PC, hangi programı gösterdiyse ilk önce o program çalışmaya başlayacaktır. Belleğin en başında Media Player var ise, PC register'i Media Player'e ait verileri göstererek işlemciye der ki : "Bu verileri işleyin!".

PC registeri, verileri işlenecek olan programın RAM'deki yerini işlemciye göstermek için, programa ait adres bilgisini tutar. Nasıl ki siz eve pizza siparişi vereceğiniz zaman, pizzacıya evinizin adresini söylüyorsanız PC registeri de aynı işlemi yapıyor. İşlemciye diyor ki "Belleğin X nolu adresindeki Media Player programını çalıştır."

PC'nin görevini artık anladık. İşlenme sırası gelen programın adresini, işlemciye söyleme görevini yapıyor. PC işlemciye adres bilgisini verdi tamam ama; işlemcideki hangi register bu adres bilgisini tutacak?

İşlemcideki adres bilgisini AR registeri tutacaktır. Yine pizzacı örneğinden yola çıkacak olursak.... Siz telefonla pizzacıyı arayıp eve pizza siparişi verirken, aynı zamanda ev adresinizi belirttiğiniz için aslında bir PC olmuş oluyorsunuz. Sizin adres bilginizi not eden pizzacıdaki sekreter ise, AR registeri oluyor. (AR : adress register)

Şu aşamadan sonra bu adres bilgisi IR registerine atanacaktır. 16 bitlik bilgisayarı baz alarak anlatım yapacağım demiştim. Üstteki verilere göre 16 bitlik bir bilgisayarda PC = 12 bit adres bilgisi tutar ve AR = 12 bitlik adres bilgisi tutar demiştik. Aynı zamanda da IR için 16 bitlik veri tutar demiştik. Biz AR bilgisini, IR'ye aktaracağımız zaman 16 bitin 12 biti adres bilgisi ile dolacaktır. Peki geriye kalan 4 bitlik kısımda neler saklanacak?

Gördüğünüz gibi kalan 4 bitlik yerde = 3 bit OPR biti var ve +1 bit ile beraber toplamda 4 bitimiz var. Tek başına 1 bit yazdığım yer, buyruk tipinin ne olduğunu belirliyor. O konuya daha sonra değineceğim.

Buraya kadarlık olan kısmı mikro işlemler ile gösterelim : 

Birinci saat çevriminde yani;
T0 zamanında bellekte işlenmeyi bekleyen programlardan birinin verisinin adresini PC şu şekilde AR'ye gösterecektir : AR <= PC

T1 zamanında M bellek gözündeki adres bilgisi IR'ye atanıyor.
IR <= M[AR] ve aynı zamanda, (yine T1 zamanında) PC değeri 1 arttırılıyor.
PC <= PC + 1 şeklinde.

PC <= PC + 1 ifadesinin mantığı :
Konunun ortalarında önce Media Player'i çalıştırmak için tıkladık daha sonra Chrome'a tıkladık demiştim. PC ilk önce Media Player'in çalışması için onun bellekteki yerini gösterdi. Sonrasında ise Chrome'un yerini göstersin istedik ki media player çalıştıktan sonra chrome'da açılsın diye düşünebilirsiniz.

T2 zamanında ise, IR'deki bilgiler artık Denetim Merkezinde çözülecektir. Çünkü ALU hiçbir şey bilmiyordur. Siz kendisine media player'i çalıştırın demek üzere media playere tıkladınız diyelim veya herhangi bir arkadaşınıza facebooktan mesaj göndermek için klavyeden bir şeyler yazdınız veya herhangi bir toplama işlemi yaptınız yada dosya kopyalama işlemi yaptınız diyelim... Bilgisayar, bizim yaptığımız bu işlemleri anlamazlar. Biz kopyalama işlemi yapıyoruzdur ama bir sürü kod yığını gidiyor belleğe. CPU bu kod yığının ne olduğunu bilmiyor. Denetim merkezi dediğimiz yer işte bu kodları IR ' registerinden alarak bilgisayara "abicim, ben bu kodları çözdüm. bu kullanıcı kopyalama işlemi yapıyor." diyor bilgisayara. Yani aslında bizim bilgisayarımızda yaptığımız işlemleri, bilgisayarın beynine tercüme ediyor. Denetim biriminin şekli de şöyledir :

Denetim biriminden çıkan işlemlere göre, kullanıcının yaptığı işlemleri bilgisayar artık anlayabiliyor. Bilgisayarımızın arayüzünde yaptığımız bir çok işlem, bilgisayarda 3 temel kategoriye ayrılmıştır :

1) Bellek adreslemeli işlemler (Kopyalama, toplama vs.)
2) Register adreslemeli işlemler
3) Giriş / Çıkış adreslemeli işlemler (Klavyeden yazı yazma, bilgisayardaki bir metni yazıcı ile A4 kağıdına yazdırma vs.)

Özetle :
T0, T1, T2 işlemleri standarttır.

T0 zamanında; AR <= PC

T1 zamanında;
IR <= M[AR]
PC <= PC + 1

T2 zamanında; denetim biriminde IR içindeki buyruklar çözülüyor.

T2'den sonraki işlemler artık farklılık göstermeye başlayacaktır. Çünkü denetim biriminden çıkan veriler üstte de sıraladığım gibi 3'e ayrılıyor. Herbirinde de bu veriler farklı işlemlere tabi tutuluyorlar. T2'den sonraki adımı "Bilgisayarın İşleyişinde OPR Biti" başlığı altında yazdım.

Yazının devamı :  Bilgisayarın İşleyişinde OPR Biti [Bilgisayar Mimarisi - İşlem Kararı]

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

Yazının devamını oku

İstatistikler

BLOGKAFEM.NET

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