VERİ İŞLEME Araş. Gör. Dr. İbrahim ŞANLIALP Bilgisayar Mimarisi Verinin işlenmesini kontrol eden devreye Merkezi İşlem Birimi denir. (Central Processing Unit or CPU) CPU Toplama – Çıkarma gibi aritmetik işlemlerin yapıldığı birim İşlemcinin aktivitelerini kontrol eden birim Yazmaçlar (Geçici bellek) Genel Özel? Genel yazmaçlar verinin / sonucun geçici olarak saklandığı ve işlendiği birimlerdir. CPU ve Ana Bellek birbirlerine veriyolu (Bus) adı verilen bir grup tel ile bağlıdır. Bellketeki iki sayıyı bir biri ile toplamak için arka planda bir çok işlemler dönmektedir. Ön bellek CPU nun üzerinde fiziksel olarak mevcut olan yüksek hızlı bellek parçasıdır. Ön bellek → Ana Bellek → Yığın Bellek İşlemler yazmaçlar ile önbellek arası gerçekleşir. Saklı – Program kavramı Her cihazın yürüteceği adımlar üretim sırasında kontrol birimi içerisinde makinanın bir parçası olarak tanımlanır ve değiştirilemezdi. (Hesap Makinesi) Bir bilgisayarın kendi çalıştıracağı programın kendi ana belleğinde kaydedilmesi «saklı program kavramı» (The Stored-Program Concept) olarak adlandırılır. Makine Dili Saklı program kavramını uygulamak için CPU’ bit desenleri ile kodlanmış ve CPU’ya ne yapacağını söyleyen kodlamara ihtiyaç vardır. Belirli temel özellikleri yerine getiren bir bilgisayar için yeni özellikler eklemek bilgisayar kapasitesine bir katkısı olmayacaktır. RISC vs CISC İndirgenmiş Komut Takımlı Bilgisayar (reduced instruction set computer) RISC Karmaşık Komut Takımlı Bilgisayar (complex instruction set computer) CISC Ana Argüman: Donanım Ana Argüman: Yazılım Belleğe sadece “load” ve “store” komutlarıyla erişilmelidir. CISC mimarisinin karakteristik iki özelliğinden birisi, değişken uzunluktaki komutlar, diğeri ise karmaşık komutlardır. Komut kümesi çok azdır. Geniş komut kümesi vardır. Donanıma güvenir. Mikrokod kullanır. CISC mimari ile bir satırda çözülecek kod için RISC de 3-4 satır kod yazmak gereklidir. CPU’daki komut işleme daha hızlı Her bir komut daha yetenekli olmaya olacağından bu hızda çalışan CPU’ya hızlı başladığından verilen bir görevi yürütmek RAM ve büyük önbelleklere ihtiyaç vardır. için daha az komut kullanılır. Bu, nispeten yavaş ana belleğin daha etkili kullanımını sağlar. Farklı uzunlukta komutların okunması çok çevrim gerektirdiğinden performans düşüklüğü olabiliyor. Sanal Bir Makine • 0’dan 15’e kadar numaralandırılmış 8 bitlik 16 Yazmaca sahip • 256 adet ana bellek hücresine sahip • 16 bitlik 12 temel koda sahip bir işlemci Bir makine komutunun kodlanmış hali iki bölümden oluşur. İşlem kodu (op-code) İşlenen (operand) Bu sanal makine için her komutun ilk 4 biti (16 lık sistemde ilk basamak) işlem kodudur. Örnek: 70C5 komutu (7: Yazmaçlarda bulunan iki veriyi OR işlemine tabi tutma) C ve 5 adresli yazmaçlarda bulunan veriyi OR işlemine tabi tut ve sonucu 0 nolu yazmaca yaz. CPU için küçük işlem adımları İki Sayının Toplanması Toplanacak sayılardan birini bellekten al ve bir yazmaca yerleştir. Bellekten diğer sayıyı al ve başka bir yazmaca yerleştir. Adım 1 ve 2’deki yazmaçları giriş olarak kullanacak ve sonucu başka bir yazmaca yazacak şekilde toplama işlemini yap. Sonucu belleğe kaydet. Dur. İki sayının toplamı Kodlanmış Komut Çevrimi 156C Yazmaç 5’e 6C adresli bellek hücresinin içeriğini yükle. 166D Yazmaç 6’ya 6D adresli bellek hücresinin içeriğini yükle. 5056 Yazmaç 5 ve 6 içeriğini topla ve sonucu yazmaç 0’da tut. 306E Yazmaç 0’ın içeriğini 6E adresli bellek hücresine kaydet. C000 Dur. Sanal Makinamızın Bazı Komutları İşlem Kodu Açıklama Açıklama - Örnek 1 Yükleme (LOAD) 14A3: A3 adresindeki hafıza hücresinin değerini 4 nolu yazmaca yükle. 2 Yükle (LOAD) 24A3: 4 nolu yazmaca A3 değerini yükle 3 Kaydet (STORE) 35B1: 5 numaralı yazmacın içeriğinin belleğin B1 adresine yerleştirilmesine sebep olur. 4 Taşı (MOVE) 40A4: A yazmacının içeriğini, yazmaç 4 de kopyala 5 Topla (ADD) 2’ye tümleyen devresi ile toplama alma. 5526: yazmaç 2 ve 6’daki içeriğin 2’ye tümleyen yöntemi ile toplanıp sonucunun 5 nolu yazmaca yüklenmesi. 7 Veya (OR) 7CB4: yazmaç B ve 4’teki içeriğin OR işlemine tabi tutulması ve sonucun C yazmacına alınması 8 Ve (AND) 8CB4: yazmaç B ve 4’teki içeriğin AND işlemine tabi tutulması ve sonucun C yazmacına alınması 9 Özel veya (XOR) 9CB4: yazmaç B ve 4’teki içeriğin XOR işlemine tabi tutulması ve sonucun C yazmacına alınması A Sağa kaydır A403: 4 nolu yazmacın içeriğini 3 bit sağa kaydır. B Atla (JUMP) B43C: 4 nolu ile 0 nolu yazmaç içerikleri birbirleri ile aynı ise program sayacına 3C yüklenir. C Durdurma (HALT) Program durdurma. AA adresli bellek içeriği ile 2 no’lu yazmacın içeriğini karşılaştırıp eğer eşit ise program sayacını FF adresine yönlendirecek program komutlarını yazınız? Bir Programın Yürütülmesi Program komutları belirli bir sıra ile CPU belleğine alınarak işlenir. (Kesmeler Hariç) Komut Yazmacı (Instruction Register) Program Sayacı (Program Counter) Bir Program Yürütme Örneği Bellekte olan iki sayının toplanıp tekrar belleğe yerleştirilmesi: Programımızın Ana Bellekte A0 adresinden başlayarak yerleştirildiğini farz edelim. Yazmaç 5 6 0 İçerik Adres 6C 6D 6E İçerik 05 03 Öncelikle A0 adresinden program komutu çekilir. (156C) – (Getir - Fetch) Adres 6C 6D 6E İçerik 05 03 Program sayacı 2 artırılır. Ardından 156C komutunu işleyerek, 6C konumundaki içeriği yazmaç 5’e yükler. (Çöz, Çalıştır. – Decode, Execute) Yazmaç 5 6 0 İçerik 5 Adres 6C 6D 6E İçerik 05 03 Sonrasında A2 adresindeki program komutu çekilir. 166D Program Sayacı 2 artırılır. 6D adresindeki veri 6 no’lu yazmaca getirilir. Yazmaç 5 6 0 İçerik 5 3 Adres 6C 6D 6E İçerik 05 03 Sonrasında A4 adresindeki program komutu çekilir. 5056 Program Sayacı 2 artırılır. Aritmetik Mantık Birimi ilgili devrelerini çalıştırarak 5 ve 6 nolu yazmaç değerlerini toplar. Sonucunu 0 nolu yazmaca yükler. Yazmaç 5 6 0 İçerik 5 3 8 Adres 6C 6D 6E İçerik 05 03 Sonrasında A6 adresindeki program komutu çekilir. 306E Program Sayacı 2 artırılır. 0 nolu yazmacın içeriği, 6E adresli belleğe kaydedilir. Adres 6C 6D 6E İçerik 05 03 08 Sonrasında A8 adresindeki program komutu çekilir. C000 Program Sayacı 2 artırılır. Yürütme durur ve program tamamlanmış olur. Örnek? Adres İçerik 00 14 01 02 02 34 03 17 04 C0 05 00 Program sayacı 00’dan başlarsa, program tamamlandığında 17 nolu adres belleğinde hangi içerik yer alır? Aritmetik/Mantık Komutları CPU’da « Aritmetik/Mantık İşlem Birimi » içerisinde aritmetik/mantık işlemlerini gerçekleştirmek için gereken devreler yer almaktadır. Bu birimde kullanılan program komutlarını inceleyelim. Maskeleme Yapma AND ile işlem yapmanın avantajları Örneğin 00001111 yüksek öncelikli 4 bitin 0 olacağı bellidir. OR işleminin avantajı Örneğin 11110000, ile işlem yapılacak verinin sonucunda ilk 4 bitin 1 olacağı bellidir. Bit Eşlem lerde maskeleme oldukça fazla kullanılan bir yöntemdir. Örneğin 8 bitlik bir sayının yüksek değerlikli 3.biti nin 0 olup olmadığının ölçümü Örneğin sadece 3.biti sıfır yapmak istiyorsak 3.Biti 1 yapmak için OR ile maskeleme yapılabilir. XOR ile maskeleme yapmak ise bitleri ters çevirmek için kullanılabilir. Döndürme ve Kaydırma İşlemleri Yön ve dairesel olup olmaması önemlidir. 1100 1100 (Döndürme veya dairesel kaydırma) 1100 1100 (Mantıksal Kaydırma)(0) Sola kaydırmak iki ile çarpmaktır. Sağa kaydırmak iki ile bölmektir. Eğer işaret biti korunuyorsa « Aritmetik Kaydırma » denir. Diğer Cihazlar İle Haberleşme Yazıcı, Klavye, Fare gibi çevresel birimler ile haberleşmek için «Denetleyici» birimi kullanılır. Her çevresel birimin kendi denetleyicisi mevcuttur. Bellek Haritalı Giriş / Çıkış Bellek alanında belirli adres alanları ayrı ayrı denetleyiciler için ayrılır. Bazı denetleyicilerin CPU yu aracı yapmadan direk ana belleğe ulaşmasına « Doğrudan Bellek Erişimi » denir. (DMA, Direct Memory Access.) USB vs FireWire El Sıkışma & Durum Sözcüğü Veri kaybı olmaması için « El Sıkışma » yöntemleri kullanılmaktadır. (Yazıcı → CPU) Paralel ve Seri Haberleşme Klasik Sabit Telefonlarda veri arka arkaya ses tonları şeklinde iletilirdi. Bu işlem için telefon içerisinde modemler kullanılırdı. Modem (MODulator-DEModulator) DSL (Digital Subscriber Line – Sayısal Abone Hattı) Fiber Optik İletim Haberleşme Hızları Bit / Saniye (bps – Bits per second) Kilobit / Saniye (Kbps – Kilobits per second) (1000 bps ye eşit.) Mbps Gbps Klasik telefon hattı ile bağlantı: 57.6 Kbps DSL ile bağlantı: 54 Mbps Sayılarda ön ekler 0b → Binary (ikilik sayı sistemi için) 0x → Hexadecimal (onaltılık sayı sistemi için) Yazılan Programın İşlemesi int main(){ int su_sicakligi = 0; su_sicakligi = readTemp(); if(su_sicakligi>60){ printf(" Tehlike\n "); } } Küme Komut İşleme (Pipelining) Elektrik sinyalleri bir iletken tel içerisinde ışık hızının altında bir hızla ilerler. Işık hızı 1 ns de 30 cm. Sinyal hızı 2 ns de 30 cm. CPU nun iki veriyi ana bellekten çekmesi, işlemesi ve tekrar yerine koyması belirli bir zaman alır. İşlemlerin hızlı olması için «Pipelining» kullanılır. Yani bir komut işlemeye alınırken bir sonraki komutun getirilmesi işlemidir. Çok çekirdekli işlemciler Aynı çipin üzerinde birden fazla işlemci ve paylaşılmış bir ön belleğin olmasıdır. Yazılım destekli olmaz ise sadece bir çekirdek çalışır. Çift çekirdek iki kat hız değildir. Hız, Güç, Isınma, Fiyat, Performans YAZILIM HER ŞEYDİR. Çok işlemcili makineler Birden fazla birbirinden bağımsız çalışabilen işlemcilerin aynı anda kullanılmasıdır. Bir CPU büyük bir iş yükü geldiğinde, bu yükün bir kısmını program olarak diğer işlemcinin ana belleğine yazabilir.