Temel Bilgisayar Yapısı ve Devreleri
Buyruk kodu (Instruction Code) Bilgisayar mimarisi: Yazaçlar Zamanlama ve denetim Buyruk kümesi (Instruction Set) ile tanımlıdır. Bilgisayar donanımına komut vermek için onun dilinden konuşmalısınız. Bilgisayarın kullandığı dilin kelimeleri instruction(buyruklardır) Kelime haznesi : instruction-set Program: bir dizi buyruktan oluşur. Kullanıcı: program aracılığı ile bilgisayarı denetler. Bilgisayar buyruğu: Binary koddur Bir dizi mikroişlemden oluşur Her bilgisayar kendine ait buyrukları işletebilir. Mikroişlem: bilgisayar belleğindeki bir buyruğun parçasıdır.
Temel Bilgisayar Yapısı ve Devreleri Bir sayısal bilgisayarın, kullanıcı tarafından kullanımı “program” ve verilen “veri” ile mümkün olur. Program çeşitli görevleri yapan komutlardan oluşur. Komutlar(buyruk), veriler ile beraber bellekte bulunur.
BUYRUK İşlem kodu İşlemci yazacı veri İşlem bellekteki veriyle AC arasında gerçekleşir. Komut kodu iki parçadan oluşmuştur: operasyon kısmı ve adress kısmı. Operasyon kısmı yapılan işlemin tanımlandığı bit grubudur. Adres kısmı ise, tanımlanan moda göre, operand adresinin tanımlandığı bitlerdir. Operand hesaplanan “efektif adres” değerine göre bellekten okunur. En kullanışlı bilgisayar yapılarından biri, işlemciye ait bir hızlı-bellek elemanı (akümülatör-AC) kullanmaktır. İşlem görecek operandı ve işlem sonucunu burada saklamaktır.
Dolaylı Adres
Bilgisayar Yazaçları DR ve AR,anabellek okuma ve yazma işlemlerinde veri ve adres bilgisini tutmakla görevlidir. PC, bilgisayarda saklı bulunan programın komutlarının okunmasıyla görevli olup, koşulan komuttan sonraki komutun adresini gösterir. INPR ve OUTR 8 bitlik karakterin, kesinti işlevi yoluyla, bilgisayar akümülatörüne okunması ve yazılmasıyla görevlidir. TR ise geçici verinin saklanabileceği hızlı bellektir. Son olarak da, IR komutun saklanması, operasyonunun yorumlanıp, mikroişlemlerin başlatılması görevini yapar.
Ortak Veri Yolu Sistemi Temel bilgisayar sekiz yazaç, bir ana bellek ve kontrol biriminden oluşmaktadır. Bu yapıda ikili bilgiler, 16 bit hat grubu yoluyla elemanlar arasında transfer edilmektedir. İkili bilgi aktarımı şu şekilde yapılır: Bellek elemanların çıkışları S2 S1 S0 seçim girişleri ile kontrol edilen MUX (3X8) tarafından hat grubuna bağlanır. Örneğin, DR'nin çıkışı 3 ise, S2 S1 S0 =011 DR'nin çıkışının seçilmesini sağlar. Böylece, DR'nin içeriği hat grubuna verilir. Bu içerik hangi yazaca yüklenecekse, onun “yükle” kontrolü aktive edilir. Örnek: AC'nin yükle hattı aktive edilirse ACDR 16 bitlik bilgi transferi sağlanır. Yazaçlarda üç kontrol işareti vardır: Yükle, arttır ve temizle. Böylece, belleklerin bilgi içeriği kontrol edilir.
Ortak Veri Yolu Sistemi Yazaçlar: DR, AC, IR ve TR:16 bit, AR ve PC: 12 bit, İNPR, OUTR: 8 bit AR ve PC anabellekteki adreslerin tanımlanmasını sağlar. Eğer içerikleri 16 bit veri yoluna aktarılırsa, en anlamlı 4 bit 0000 olarak alınır. Bilgi alırken 12 önemsiz biti alırlar. İNPR ve OUTR veri yolunun en az anlamlı 8 bitini kullanırlar. INPR herhangi bir cihazdan bir karakter alır bunu AC ye aktarır. OUTR:AC’den karakter alır ve çıkış cihazına gönderir. Anabellek okuma ve yazma : AR ve DR ile yapılır. Okuma operasyonunda AR anabellek adresini tutar, anabelleğin oku kontrolü aktive edilir. Son olarak da, bu içerik DR'ye aktarılacağından, onun “yükle” kontrolü aktive edilerek transfer gerçeklenir. Yazma işleminde ters işlem yapıldığı hatırlanmalıdır. Gösterilen yapının diğer bir özelliği de aynı saat darbesinde iki mikroişlemin yapılabileceğinin gözlenmesidir: DR AC , AC DR Yukarıdaki şekilde DR ve AC arasındaki bağlantı bu transferleri sağlar. ALU'da E bayrağı (flag) toplama işleminin eldesi, çıkarmanın ödüncü, taşma vb. değerleri göstermekte kullanılır.
Bilgisayar Buyrukları Temel bilgisayarın üç buyruk kod biçimi vardır. Bellek adreslemeli: ilk bit doğrudan ve dolaylı adreslemeyi belirtir. I=0 doğrudan adresleme, I=1 dolaylı adresleme Yazaç adreslemeli: Buyruk işlem kodları 111 dir. En soldaki 0 dır. AC üzerinden bir işlem veya AC nin test edilmesi işlemlerini yapar. Bellekten veriye gerek yoktur, geriye kalan 12 bit yapılacak işlem için kullanılabilir. Giriş çıkış adreslemeli:bellekten veriye gerek duymaz. G/Ç işlem tipini belirtmek için 12 bit kullanılır.
Bilgisayar Buyrukları İşlem kodu için: 3 bit kullanıldısadece 8 işlem vardır. Yazaç adreslemeli ve G/Ç buyruklarındaki 12 bit farklı işlemlerin tanımlanmasında kullanıldığından toplam buyruk sayısı 8 den fazladır.
Buyruk Kümesinin Tamamlığı Genel olarak bir komut seti aşağıda tanımlanan her bir sınıftan yeteri komut bulunduruyorsa, bu set “tam bir komut seti” dir denilir. Bu sınıflar: Temel bilgisayar komutları tablosunda tanımlanan komutların her bir sınıftan “minimum” komut içerdiğini göstermek mümkündür. Böylece tanımlanan set, bir minimum settir. Örneğin, sadece ADD operasyonu vardır, çıkarma için 2’ye tümleyen elde edilip, toplama yapılması gerekir. Çarpma, bölme vs. komutları için aynı yol izlenmelidir. Diğer taraftan, bu komut seti verimli bir set değildir. Sık kullanılan komutlar hızlı bir şekilde gerçeklenmemiştir. Çıkarma, çarpma, OR, XOR işlemleri çok yavaş gerçeklenmiştir. Günümüz bilgisayarları hızlı devrelerle bu işlemleri yapabilmektedir, örneğin çarpma devresi.
The Instruction Set: A Critical Interface software instruction set hardware
Zamanlama Tüm bilgisayarlar donanımda gerçekleşen olayların zamanlaması için saat kullanılarak yapılandırılırlar. Bu ayrık zaman aralıkları clock cycles (or ticks, clock ticks, clock periods, clocks, cycles) olarak adlandırılır. Bir saat periyodu tamamlanmış bir clock cycle ile tanımlanır (örn, 250 picoseconds, yada 250 ps) Yada clock rate (örn 4 gigahertz, yada 4 GHz).
CPU performansı CPU time: Yada clock cycle time yerine clock rate ile hesaplanabilir. Program için gerekli Clock cycle sayısı azaltılabilir yada clock cycle süresi azaltılabilir. Biri için geliştirilen bir yöntem diğerinin uzamasına neden olabilir.
Örnek Bilgisayar A’da bir program 10 saniyede çalışsın ve Clock: 2GHz. Aynı programı 6 saniyede çalıştıracak bir B bilgisayarı yapılacak. Dizaynırlar kaç clock rate hedeflemelidir? Dizaynır clock rate değerinde azımsanmayacak bir artış hedeflemiştir. Fakat bu artış kalan CPU dizaynını etkileyecektir. B bilgisayarı, A bilgisayarının bu program için ihtiyaç duyduğu clock cycle sayısından 1.2 kere daha çok clock cycle time ihtiyacı olacaktır kararına varılır.
Cevap
CPU performansı
Zamanlama Metodu Bilgisayarda gerçekleşen buyrukların sıraya konması için örn aynı anda aynı dosyanın okunup yazılmasının önüne geçmek için bir zamanlama denetimi kurulmuştur. Basit bir tasarım için kenar-tetiklemeli zamanlama mekanizması kullanılmıştır. kenar-tetiklemeli zamanlama: bir lojik elemanda saklı bilgi sadece saat kenar darbesinde(clock edge) güncellenebilir. Girişler bir önceki saat çevriminde yazılmış değerler iken, çıkışlar bir sonraki saat çevriminde kullanılacak olan değerlerdir. State element 1’den state element 2’ye geçmek için gerekli sinyaller için gereken zaman saat çevrimi uzunluğunu verir.
Zamanlama Ve Denetim Bilgisayarın zamanlaması master saat üreteci tarafından oluşturulan saat darbeleriyle sağlanır. Saat darbeleri ancak kontrol işareti ile birlikte olunca yazaçların durumunu değiştirebilir. Örneğin, yükle işareti ile birlikte uygulanan saat darbesi belleğin yüklenmesini sağlar. İki çeşit kontrol yapısı kullanılmaktadır: donanım yoluyla (hardwired) mikroprogramlama veya yazılım yoluyla (microprogrammed) kontrol. Donanım yoluyla kontrolde, lojik kapılar, FF' ler, dekoder ve diğer sayısal devreler kullanılır. Bu kontrol hızlıdır, bir kez tasarlanınca bir daha değiştirilemez. Mikroprogramlama yoluyla kontrol esnektir fakat daha yavaştır.
Kontrol biriminin iki kısmı gözlenmelidir: 1- zamanlama kısmında 4-bit dizi sayıcısı (sequence counter, SC) 0000'dan 1111'e kadar sıra ile sayarak, önündeki 4x16'lık dekoder devresinin 0'dan 15'e kadar çıkışlarından birini seçmektedir. Seçilen çıkış T0'dan T15'e kadar bir darbe üretir. 2- Diğer kısmı ise IR'ye bağlantılı olarak, burada bulunan komutun operasyon kodu ve adres bilgisini kontrol lojik kapılarına aktarır. Operasyon kodu 3x8 dekoder yoluyla D0' dan D7' ye kadar çıkış işaretleri üretir. I biti de adres bilgisiyle birlikte kontrol devresine giriş oluşturur. Kontrol devresi çıkışı, sonuçta komut ile ilişkili bir bir kontrol işareti dizisi oluşturur.
Zamanlama Birimi D2 T3 : SC 0 İfadenin koşulu (D2 T3 yani eğer T3 zamanında kod çözücünün D2 çıkışı aktif ise koşulu) sağlandığında, dizi sayıcısının (SC) saat darbesinin pozitif geçişinde “temizle” girişi aktif yapılarak ifade sağlanır. SC: saatin yükselen koluna bağlı olarak sinyal gönderir. SC her saat vuruşunun çıkış kısmında artırılır. Ancak silme girişi aktif olursa artırma durur. Böylece T0,T1,T2,… sinyalleri durmadan üretilir. Eğer silme gerçekleşmezse zaman sinyalleri T0,T1,….T15 olur ve T0 dan devam eder.
Saat darbe üreteci, dekoder çıkışından T0 , T1, T2, T3 darbelerini üretir. İşlem: D2 T3 : SC 0 D2 çıkışı T2 sinyalinin sonlanmasıyla aktif hale gelir. T3 zaman sinyali aktifleşince VE kapısının çıkışı D2T3 denetim fonksiyonunu aktif hale getirir. Sinyal SC’nin silme girişine gider. T3 de zaman sinyali sıfırlanır. Eğer silme işlemi olmasaydı T4,T5 diye devam edecekti.
Buyruk Süreci 1- Fetch, 2- Decode 3- buyruk dolaylı adreslemeli ise etkin adresi oku 4- buyruk çalıştır Al getir ve kodunu çöz: PC ilk buyruk adresi ile yüklenir, SC sınıflanır ve T0 zaman sinyali elde edilir. T0 : AR PC (bellek adres girişi sadece AR’ye bağlı olduğundan) T1 : IRM[AR], PCPC+1 T2 : D0 ,...,D7 Decode IR(12-14), AR IR(0-11), IIR(15) (IR içindeki işlem kodu çözülür. Dolaylı adres biti I flip-flopa, buyruğun adres kısmı AR’ye, aktarılır)
Buyruk Süreci PC, AR ve IR yazaçları kullanıldığına; bunların “yükle” ve “arttır” kontrol girişlerinin kullanıldığına dikkat edilmelidir. Temel bilgisayar diyagramına ek olarak kullanılan lojik kapılarla bu transferlerin nasıl yapıldığı gözlenmelidir. Örneğin, T1 : IR<=M[AR], PC<=PC+1 ifadesi aşağıdaki adımlarla gerçeklenir: Ana belleğin okuma girişi aktive edilir. Ana bellek içeriği hat grubuna verilip, S2 S1 S0 =111 (ana bellek çıkışı) seçilir. Hat grubundaki içerik “yükle” kontrolü aktive edilerek IR yazılır. Aynı zamanda, PC “arttır” kontrolü ile arttırılır.
Buyruk Tipinin Belirlenmesi T3 zamanında ise ana bellekten okunan komutun tipinin belirlenmesi fazı gelir. Üç komut tipine göre dört kola ayrımın gerektiği anlaşılır: D’7 IT3 : ARM[AR]: Bellek referanslı, dolaylı adresli komut D’7 I’T3: İşlem yok: Bellek referanslı, doğrudan adresli komut D7 I’T3 : Hızlı bellek referanslı komut D7 IT3 : Giriş/çıkış komutu Her bir ayrı koldan, komut çeşitlerine göre tanımlanan mikroişlemler yardımıyla komutlar koşturulur. Burada kapalı olarak SCSC+1 ifadesi her bir mikroişlem için geçerlidir. Her bir komutun koşturumundan sonra SC0 alınarak komut fazı başa döner.
Yazaç Adreslemeli Buyruklar Opr kodu=111 ise kod çözücünün D7 çıkışı 1 dir. Yazaç adreslemeliler OPR kodunun 111 olması ile tanınırlar. Bununla birlikte I=0 dır. Ayrıca 0-11 arası bitler ile 12 buyruğu ifade ederler. IR(0-11) Örnek: CLA instruction 7800=0111 1000 0000 0000 D7I’T3B11 ile ifade edilir. D7I’T3 bütün yazaç adreslemelilerde ortak olacağından kısaltarak rB11 şeklinde yazılır. Yazaç adreslemeli buyruk işletimi T3 zamanında tamamlanır ve SC sıfırlanır. Denetim T0 sinyali ile sonraki buyruğu alır getirir.
Yazaç Adreslemeli Buyruklar
Yazaç Adreslemeli Buyruk MIPS - Örnek f=(g+h)-(i+j) kodu için C derleyicisi nasıl bir kod üretir?
Bellek Adreslemeli Buyruklar Bilgisayar az sayıda yazaç kullanılarak tasarlanır. Bu durumda yazaçlarda saklanamayan veriler bellekte tutulur. Bu veriler üzerinde işlem yapabilmek için registerbellek aktarımı gerçekleştirilmelidir. Bu aktarımı gerçekleştiren komutlar bellek adreslemeli buyruklardır.
MIPS - Örnek Varsayalım ki A:100 kelimelik bir dizi Compiler g ve h değişkenlerini $s1 ve $s2 registerları ile ilişkilendirmiş olsun. Dizinin base adresi $s3 olsun. g=h+A[8] C kodu derlensin, gerçekleşecek mikroişlemler: A[12]=h+A[8] kodu derlensin, gerçekleşecek mikroişlemler:
Bellek Adreslemeli Buyruklar
Bellek Adreslemeli Buyruklar AND AC ile bellekten alınan veriyi VE ler. Sonuç AC ye geri aktarılır. Buyruk için mikroişlemler:
Bellek Adreslemeli Buyruklar ADD AC ile bellekten alınan veriyi toplar. Sonuç AC ye geri aktarılır. AC nin çıkış eldesi E ye aktarılır. Mikroişlemler:
Bellek Adreslemeli Buyruklar LDA: Load to AC AR ile belirtilen bellekteki içeriği AC’ye aktarır. Veri yolundan AC’ye doğrudan aktarım yoktur(şekil 5.4) Veri önce DR’ye sonra AC’ye aktarılır.
Bellek Adreslemeli Buyruklar STA: Store AC AC içeriğini bellek adresi içeriğine yazar. AC çıkışları veri yoluna ve veri yolu da belleğin veri girişlerine bağlıdır.
Bellek Adreslemeli Buyruklar BUN: Branch Unconditionally Programı etkin adres ile verilen adrese yönlendirir. PC T1 zamanında artırılır ve bir sonraki buyruk adresi hazırlanır. BUN programcıya buyrukların sırasını bozma yetkisi kazandırır. Gerekli mikroişlem:
Bellek Adreslemeli Buyruklar BSA: Branch and Save Return Address Programın alt program adı verilen bir bölüme yönelmesini sağlar. BSA icra edilince alt programın başlangıç adresini PC ye yazar. BSA buyruğunun 1 zaman sürecinde tamamlanması imkansız. 2 mikroişlem ile gerçekleştirilir.
BSA BSA buyruğunun bellek adresi 20. I=0. Fetch and decode adımlarından sonra PC=21. AR=135. BSA şu işlemi yapar: M[135]21, PC 135+1=136 Alt programdan ana programa dönüş BUN ile sağlanır.
Bellek Adreslemeli Buyruklar ISZ: Increment and Skip if Zero Etkin adres ile verilen kelimenin(word) değerini artırır. Eğer artırılan değer 0 ise PC 1 artırılır. Bellekte bir word içeriğinin artırılması mümkün değildir, word DR içine okunur.
Çok sayıda yazaç kullanmak Diyelim ki bir prosedür giriş ve çıkış parametreleri için çok sayıda yazaca ihtiyaç duyuyor Bunun için ideal veri yapısıstack—last-in-first-out queue. Stack bit stack pointer a ihtiyaç duyar. SP stack e en son eklenen adresi gösterir. MIPS mimarilerde register 29 stack pointer için ayrılmıştır. ($sp). Push: stack üzerine veri yazmak Pop: stack den veri çekmek
Örnek Stack Kullanımı Aşağıdaki C kodunun derlenmiş MIPS assembly kodu nedir? Compilera ait değişken-register eşlemesi: g,h,i,j için sırayla $a0, $a1, $a2, $a3 f için $s0 Push Gövde Return Pop
G/Ç Düzeni
G/Ç Buyrukları G/Ç buyrukları: bilgi AC’ye aktarır yada AC’den aktarır. Kesmelerde bu buyruklar ile denetim yapılır. İşlem kodu =111 dir. I=1 dir Kalan bitler işlemin özel kodu için ayrılmıştır.
Program Kesme Bilgisayar bayrak bitini kontrol etmeye devam eder. Bit=1 ise aktarım başlar Bilgisayarın sürekli bayrak bitini kontrol etmesi etkin bir yol değildir. Bu durumda alternatif yol: cihaz aktarıma hazır olduğunda bilgisayara haber verir. Bilgisayar bu sinyali(kesme sinyali) alana kadar başka işler ile uğraşabilir. Bilgisayar programları çalıştırırken bayrak bitlerini kontrol etmez. Bayrak =1 olduğunda çalıştırılan program durdurulur ve kesmeye yönelinir. Kesme (G/Ç) işi cevaplandığında yarıda kesilen programa geri dönülür. Uyarı si
Kesme Süreci Bilgisayara bir R kesme flip-flopu eklenir. R=0 ise buyruk R=1 ise kesme süreci başlar. IEN flip-flop: kesme izin flip-floptur. IEN=0 olduğu sürece programcı kesme kullanmak istemiyordur. IEN=1 ise kesme kullanılmak isteniyordur bu durumda Input ve Output için sırayla FGI ve FGO bayrak bitlerine bakılır. İkisi de 0 ise G/Ç hazır değildir. Bu durumda denetim bir sonraki buyruk sürecine geçer. Eğer IEN=1 iken bayraklardan biri 1 olursa R flip-flop 1 yapılır. Ve sonraki süreçte kesme işletimi başlar.
Kesme Süreci-Örnek
Kesme Süreci-Örnek Kesme isteği geldiğinde PC=256 var (dönüş adresi). Interrupt handler (IH) 1120 adresinde yer alıyor T0 zaman sinyalinde R=1 dir ve denetim kesme sürecine girer. PC=256 içeriği belleğin 0 adresine yazılır. PC=1 ve R=0 yapılır. PC=1 de kesme işleyicinin adresine zıplanmasını sağlayan buyruk işletilir G/Ç tamamlanır. “1 BUN 0” buyruğu ile 0 adresine yani 256 numaralı adrese zıplanır
Kesme Süreci Denetim Fetch evresine sadece R=0 da girer. R=1 ise denetim kesme evresine girer. R=1 yapılması herhangi bir Ti zamanında olabilir (T0,T1,T2 zamanları hariç) Bu durumda R nin 1 yapılma şartı: PC içeriği kesilen program adresi bellek 0 adresine yerleştirilir. Kesme süreci 1 bellek adresine dallanır IEN, R ve SC yi temizler. Bu adımları gerçekleştiren mikroişlemler:
Temel Bilgisayar Donanım Bileşenleri 16 bitlik 4096 kelimelik bir bellek 9 yazaç: AR,PC,DR,AC,IR, TR, OUTR, INPR, SC 7 flip-flop: I,S,E,R,IEN,FGI,FGO 2 kod-çözücü: 1 adet 3x8, 1 adet 4x16 kod çözücü (zamanlama için) 16 bit ortak veri yolu Denetim mantık kapıları AC nin girişine konan toplayıcı ve mantık devreler