| Forumdan En İyi Şekilde Faydalanmak İçin KAYIT Olmanız Gerekmektedir. |
|
|
|
Seçenekler | Stil |
|
#1
|
|||
|
Administrator
|
Release: 01-24-2008, 07:05 PM | ||
| Last Update: None | Rating: None | ||
|
Bu bölümde buraya kadar tasarımını gösterdiğimiz Bilgisayar Mimarisi temel çalışma biçimini sanal bir Merkezi İşlem Birimi üzerinde göreceğiz. PIPPIN.
Daha önce gördüğümüz gibi bir Merkezi İşlem Birimi’nin anlamlı bir iş yapabilmesi icin, iki tane öğeye ihtiyacı vardır: Komutlar (instructions) ve Veri (Data). Komutlar Merkezi İşlem Birimi’ne veriler üzerinde ne gibi işlem yapılacağını bildirirler. Verilerin bilgisayarda nasıl temsil edildiklerini gördük ve şimdi komutların nasıl temsil edildiğine biraz daha yakından bakalım. Komutlarda daha önce gördüğümüz gibi 2’li düzende temsil edilirler. Aslında merkezi işlem birimi için hafızada saklı 2’li düzende komut veya veri’yi birbirinden pek farklı değildir. İlkel hesaplayıcı cihazlar için esnek olarak yani kolaylıkla progranabildikleri düşünülmezdi. Programlar kontrol ünitesi içinde her makinenin farklı bir parçası olarak tasarlanır ve burdan işletilirdi. Yeni bir gelişme programların anabellekte depolanması ve burdan yürütülmesinin sağlanması şeklinde ortaya çıktı. Eğer kontrol ünitesi programları ana bellekten yürütebilecek şekilde tasarlanırsa programlar sadece ana bellekteki program kodlarını değiştirebilecek dolayısıyla control ünitesinin tekrar tekrar her işlev için donanımsal olarak tasarlanması gerekmeyecekti. Bu depolanmış program kavramı bügün de kullanılan bir standart halini almıştır. Bunu uygulamak için makinenin bit düzeyinde komutları algılayabilecek şekilde tasarlanması gerekir. Bu komutların bütünü ve beraberinde gelen kodlama tekniğine “makine dili” denir. Bu dil bizim algortimalar aracılığı ile makinalarla iletişim kurabilmemizi sağlar. CPU (Central processing unit, merkezi işlem birimi)’ ne giriş bilgisi olacak bütün veriler bellekte saklanır. Bir Merkezi İşlem Biriminin Çalışma Döngüsü bölümünde sonlu durumlu ardışıl makine olarak tasarlanan merkezi işlem birimi dört durumdan birinde bulduğunu görmiştik: 1. Komut alma çevrimi 2. Operand alma çevrimi 3. Komut yürütme çevrimi 4. Kesme çevrimi PIPPIN Sanal Merkezi işlem Birimi bölümünde bunu biraz daha basitleştirerek bir Merkezi İşlem Birimi, komutu getir (fetch instruction), kodu çöz (decode) ve yürüt (execute) işlemlerini yerien getirdiğini kabul edelim. Bu süreçe “fetch-decode-execute cycle” adı verilir. PIPPIN sanal Merkezi İşlem Birimimizde süreç komutun bellekten veri yolu ile IR (Instruction register, komut kaydedicisi)’ ne alınması ile başlar. IR’de 2’li düzendeki komut (makine dili) bir sonraki birim olan Kod Çözü’cü de çözülür. Bu bileşen çevrimin ikinci adımından sorumludur. Kod çözücü bit paternine bakarak gerekli işlemleri yürütmek için bu işlemler için hazır olan donanımları aktif eder. Bazen komut, verinin bellekten okunmasını ve matematiksel işlemlerin gerçekleştirilmesi için ALU (Arithmetic logic unit, aritmetik mantık ünitesi)’ yu aktif hale getirir. Bu işlem bir kere gerçekleştiğinde, bu çevrim bir sonraki komutla yeniden başlar. Merkezi İişem Birimi her zaman bir sonraki komutu nerede bulacağını bilir çünkü program sayacı devam eden komutun adresini tutar. Bir komut tamamlandığında her zaman program sayacı bir sonraki bellek adresine ilerler. (Kesme komutları hariç.) PIPPIN Sanal Merkezi İşlme Birimi’nde her bir makine komutu iki bölümden oluşur. Op-code (Operation Code, İşlem Komutu) ve operand. Op-Code alanındaki bit paterni örneğin STORE veya JUMP gibi hangi temel işlem kodu olduğunu tanımlar. STORE veya JUMP komut tarafından istenen operand alanında bulunan bit düzeni op-code tarafından belirtilen operasyonla ilgili detaylı bilgi sağlar. Örneğin STORE işlemi için operand alanındaki bilgi hangi kaydedicinin depolanmış veriyi içerdiğini ve hangi bellek hücresinin veriyi alacağını belirler. Resimde görüldüğü gibi PIPPIN’de İlk üç bit op-code’ yi gösterir ve son altı bit operan’ dı gösterir. Ortadaki bit (Number Bit) Operand alanındaki 2’li düzendeki paternin bir hafıza gözünümü adreslediğini veya doprudan veri içerdiğinimi gösterir. Sana Mikro İşlemcimizde Number Bit=1 ise Operand alanındaki veri doğrudan işleme girecek bilgidir. Aşağıdaki tabloda PIPPIN için bazı makine kodlarının listesi verilmiştir. Bütün op-code’ lar programlamayı basitleştirmek için İngilizce ilk harflerinden oluşan tanımlamaya “mnemonic” (anımsatıcı) adı verilir. Bu mnemonic’ lerin bir araya gelmesine assembly dili denir. Assembly dili ile yazılan programlar CPU’nun anlayabilmesi için ikili gösterim şekline dönüştürülmelidir. Genellikle bu işlem assembler denen başka bir program ile yapılır. Dikkat edilirse yukarıdaki makine dili gösteriminde bazı operandlar # simgesi içermektedir. Bu simge işlemcimize operand alanında memory adresi değil, doğrudan bir veri olduğunu gösterir. Dolayısıyla assembler komutu # simgesi ile çevirdiğinde sonuçtaki makine kodu sayı bitini gösterdiği konumda “1” rakamı olur. Ayrıca Accumulator kaydedicisinin oynadığı role dikkat edilirse neredeyse bütün işlemler bu kaydedicinin değerini etkiler. Accumulator devam eden hesaplama işlemlerini geçici olarak sakladığı bellek konumu gibi hareket eder. Makine dili tanımlamamızla birlikte şimdi bazı basit programlara bakabiliriz. Örnek (Toplama): İlk programın adı toplama. Bu program iki bellek bölgesinde konumlanmış verileri toplamaktadır. Matematiksel olarak bu programın gösterdiği formül x+y=z şeklindedir. x=2, y=5 olacak şekilde değerleri baştan vermekte bunları 13 ve 14 adresli hafıza gözlerine saklamakta ve sonra da bunları toplamaktayız. Aşağıda bu programın 2'li düzende ve mnemonic'ler ile makina dilinde yazılmış halini görmekteyiz. Şimdi toplam programının PIPPIN Sanal Merkezi İşlem Birimi tarafından nasıl yürütüldüğünü aşağıdaki animasyon ile görelim. İkinci programın adı sayaçtır. Bu program programcının ilk komutla belirttiği sayıya kadar sayar. Programın JUMP ve EQUAL komutları ile döngü yapısı içerdiğine dikkat edin. Her zaman accumulator içindeki değer azaltılarak istenilen miktara ulaşıp ulaşmadı denenir. Aşağıda bu programın da 2'li düzende ve mnemonic'ler ile makina dilinde yazılmış halini görmekteyiz. Şimdi sayma programının PIPPIN Sanal Merkezi İşlem Birimi tarafından nasıl yürütüldüğünü aşağıdaki animasyon ile görelim. PIPPIN Sanal Merkezi İşlem Birimi ile Program Yürütülmesi Artık PIPPIN Sanal Merkezi İşlem Birimine program yüklemeyi ve bu programın yürütülmesinin simülasyonunu görebiliriz. Simülatör içerisinden dosya kaydetme ve/veya yükleme işleminde hata alıyorsanız bu işlemleri uygulayınız. "C:\Program Files\Java\jre1.x.x_xx\lib\security" dizinine gidin ve "java.policy" dosyasını açın. "grant { };" içerisine "permission java.security.AllPermission;" satırını girerseniz tüm izinleri aktif etmiş olursunuz. Ancak bu durumun güvenlik problemi oluşturması ihtimali vardır. Bunu yapabileceğiniz gibi "permission java.io.FilePermission "*", "read, write, delete"" anahtarı ile sadece dosya yazma izinlerini düzenleyebilirsiniz. java.policy dosyasının konfigüre edilmesi hakkında daha detaylı bilgi almak için Aşağıdaki Program 1, 2 ayrı sayıyı toplayan bir algoritmadır. Mnemonic'leri aşağıdaki PIPPIN Simulatörüne girin. İster basamak basamak her komutun yürütülmesini, bu süreç içinde komut alma çevrimini, yürütme çevrimini ve hafızanın nasıl değiştiğini görebilirsiniz. Bu simulatör ile assembly dilinde yazılmış programların 2'li düzendeki karşılığını bulabilirsiniz. Kontrol tuşlarının olduğu bölümdeki Seymbolic/Binary butonlarına tıklayarak görebilirsiniz. Bu noktada bilginin (2'li düzende sayıların, hafıza gözlerinin veya işlem komutlarının bilgisayar mimarisinde gerçekte nasıl 2'li düzende tutulduğunu ve insanın anlayabilmesi için nasıl sembolik hale dönüştürüldüğüne dikkat edin. Simulatörün sağ tarafında, RAM alanındaki hafıza gözlerinin (0,2,4,..14) 2'şer 2'şer artması simulatörümüzün yapısından kaynaklanmaktadır. Kontrol tuşları bölümündeki RESET, STOP STEO, PLAY ve RUN tuşları simulatörün komutları yürütmesi için kullanılır. STEP tuşu sadece bir komutun yürütüleceği Single Step anlamındadır. CPU simalutörümüzün 0,2,4 ve 6 nolu hafıza gözlerine aşağıdaki sembolik komutları sıra ile girin. LOD #2 ADD Y MUL X STO W Binary tuşuna basarak komutların 2'li düzende nasıl gözüktüğüne bakın. Operand veya doğrudan bilgi olduğunu belirleyen Sayı Biti'nin (sembolik dilde # simgesi ile gösterildiğini görmüştük) nasıl şekillendiğine dikkat edin. Şimdi PIPPIN simulatörümüzün nasıl komutları yürüttüğünü görelim. STEP tuşuna tıklayarak izleyin. İlk olrak Program Counter (Program sayacı) sıfırlanmaktadır. Böylece programın başının bulunduğu hafıza gözü adreslenebilir. Günümüzde kullanılan PC'lerdeki Reset tuşlarının yaptığı da budur. İlk komut LOD #2 komutudur. Akümülatörde doğrudan 2 verisinin yüklenmesini sembolize etmektedir. (# = Sayı Biti). Komut hafızadan okunmakta, Instruction register (komut yazıcısı) yüklenmekte ve bundan sonraki Decoder (Kod çözücü) ile çözümlenmektedir. Komutun içeriğinin nasıl yürütüldüğünü ve doğrudan 2 sayısının önce ALU ve sonra akümülatöre nasıl yüklendiğine dikkat edin. Her komut sonunda mutlaka program sayacı arttırılarak (biziö simulatörün hafıza yapısı tasarımından dolayı 2 arttırılmaktadır) bir sonraki komuta geçilebilir. Örnekler: - Program 1: PIPPIN simulatörünün nasıl çalıştığını, komutları nasıl çözdüğünü ve yürüttüğünü gördük. Sembolik dildeki bu program parçacıklarını doğrudan yazabileceğiniz gibi aşağıdaki dosyalardan da yükleyebilirsiniz. Hazırladığınız program parçacıklarını kendi PC'nize de sklama imkanınız var. Ancak java uygulamalarının varsayılan olarak diskiniz üzerinde işlem yapması günvelik sebebiyle kapalıdır. Bu da java.io.FilePermission hatası almanıza neden olacaktır. Bu hatayı almamak için simülatörün alt tarafında yer alan işlemleri uygulayın: PIPPIN memory after program execution: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00 14 03 05 80 14 07 05 81 00 80 05 82 0F 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 03 07 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Not: Not: Lütfen komutların arka arkaya 2 hafıza gözünü kapladığına dikkat edin. Bu sebeple PC Program sayacı her komut sonunda 2'şer 2'şer artmaktadır. (2-byte instructions (opcode + operand) . Not: Hexadecimal 80, 82...gibi hafıza gözleri W, X ve Y ile simgelenmiştir. - Program 2: Aşağıdaki Program 2 ise, aşağıya doğru sayım yapan bir sayaçtır. Farklı ve yine basit bir sayaç programı için PIPPIN Assembly Dili ile Örnek Programlar Aşağıdaki tabloda soldaki dosyalar, komutlar ve açıklamaları içeren text formatında programlardır. Ayrıca programların yürütülmesi sırasında bazı talimatlar da içerir. Sağ taraftaki dosyalar PIPPIN Sanal Merkezi İşlem Birimimiz için emülatör dosyalarıdır. Bunları PC’nize yükleyim daha sonra PIPPIN sanal Merkezi İşlem Birimi’ni çalıştırın. Bu dosyaları PC’nizden emulatöre yükleyip makine dilinde komutları, 2’li düzende karşılıklarını ve sanal merkezi işlem birimimizin bu programları nasıl yürüttüğünü görebilirsiniz. |
|
||
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
|||
| Bookmarks |
| Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| Seçenekler | |
| Stil | |
|
Benzer Konular
|
||||
| Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
| Kontrol Birimi | maFiaCarLeS | Bilgisayar Mimarisi | 0 | 01-24-2008 07:04 PM |
| Bilgisayar Tasarımı ve Merkezi İşlem Birimi | maFiaCarLeS | Bilgisayar Mimarisi | 0 | 01-24-2008 07:03 PM |