BİLGİSAYAR SİSTEMLERİ Hesaplama, saklama gibi çeşitli işlemler amacıyla bilgisayara verilen sayı, yazı, resim, ses, ölçüm vb. değerlerden oluşan her türlü sayısal, alfasayısal bilgiler veri olarak adlandırılmaktadır. Veri (Data) İşlem (Process) Bilgi (Information) Şekil. Veri işlem modeli Verinin bilgisayar tarafından işlenmesiyle bilgi elde edilmektedir. Ayrıca bir işlem sonucu elde edilen bilgi başka bir işlem için veri olarak kullanılabilmektedir. Adres Yolu (Address Bus) CPU Central Processing Unit MİB Merkezi İşlem Birimi Bellek Birimi I/O Arabirimi Çevre Birimler Veri Yolu (Databus) Kontrol Yolu (Control bus) Şekil 2. Mikroişlemci temelli bilgisayar temel blok şeması Mikroişlemci (MP - Microprocessor) CPU Central Processing Unit MİB -Merkezi İşlem Birimi Bilgisayarın beyni olarak adlandırılan aritmetik, mantık ve karar işlemlerinin yürütüldüğü entegre olarak paketlenmiş elektronik birimdir. Mikroişlemcili sistemlerde ayrıca I/O ve bellek ünitesine ihtiyaç duyulmaktadır. Mikroişlemci içi ve dışındaki birimler arasındaki haberleşme iletişim yolları ile sağlanır. BUS İletişim Yolları Bilgisayarı oluşturan birimler arasında veri transferi, adresleme ve kontrol işlemleri amacıyla kullanılan 8 bit, 6 bit, 32 bit vb. olabileceği gibi veya 2 bitlik hatlar şeklinde de olabilen yapıdaki elektriksel yollardır. Temelinde ve anlamına gelen enerji var veya enerji yok sinyallerinin iletilmesinde kullanılır. İletişim yolu 3 temel sınıfta incelenir: Veriyolu (Databus) - İki yölü Adres Yolu (Addressbus) - Tek yönlü Kontrol Yolu (Controlbus) - İki yönlü -2-
Adres Yolu (2 bit) Mikroişlemci Veriyolu (8 bit) Bellek Kontrol Yolu (Oku / Yaz) Adresleme Kapasitesi Şekil xxx. Mikroişlemci Bellek arası sembolik veriyolu işleyişi Adres yolunu oluşturan hat sayısı, adresleme kapasitesi ile doğrudan ilişkilidir. 3 Bit lik Adres Yolu ile yapılabilecek farklı adreslemeler Sembolik Bellek Gösterimi 2 n ile adresleme kapasitesi bulunur. n: Hat Sayısı (Bit sayısı) Örneğin n değeri 3 olduğunda, 2 3 =8 bellek gözü adreslenebilir Soru : 36 adet bellek gözünün adreslenebilmesi için adres yolu en az kaç bit olmalıdır? Cevap : 2 n 36 kuralı gereği; 2 6 =64 (64 36) olduğundan adres yolu en az 6 bit olmalıdır? NOT: Birimlerin maksimum kapasitede kullanılması, performans açısından sıkıntı verir. Bilgisayar sisteminde anakartın destek verdiği maksimum bellek büyüklüğü, adres yolu büyüklüğüyle doğrudan ilişkilidir. -3-
Bellek (Memory) Bellek mikroişlemci/mikrodenetleyicinin veri depolama amacıyla kullanılan birimidir. Her bir bellek hücresinin ayrı bir adresi vardır. Mikroişlemci ve bellek arasındaki veri iletişiminde, bellekten okuma veya yazma amacıyla ilgili bellek hücrelerinin adresleri kullanılır. Yapı ve kullanım şekline göre bellekler çeşitli sınıflara ayrılmaktadır. Kaynak : PIC Microcontrollers - Programming in C (www.mikroe.com) Belleklerin temelinde ve olarak adlandırılan BIT yapıları vardır. BIT : BInary DigiT (Binary Sayı Sistemindeki rakamlardır) Veri Tanımı Birim Açıklama veya Bit Bit 4 adet Bit () Nibble Nibble 8 adet Bit () 24 x Kilo KB 24 x K Mega MB 24 x M Giga GB 24 x G Tera TB 24 x T Peta PB 24 x P Exa EB 2 = 24 olduğundan birimlerarası dönüşümde 24 kullanılır. -4-
Geçici Bellek - Birincil Bellekler (İşlem amaçlı) RAM, Önbellek (Cache Memory) Kalıcı Bellek - İkincil Bellekler (Depolama amaçlı) Sabit Disk, CDROM, Flash Disk RAM ROM MROM OTP ROM PROM UV EPROM Random Access Memory (Rastgele Erişimli Bellek) Read Only Memory (Sadece Okunabilir Bellek) Masked ROM (Üretici tarafından programlı ROM) One Time Programmable ROM (Sadece bir kez programlanabilir ROM) Programmable ROM (Sadece bir kez programlanabilir ROM) UV Erasable Programmable ROM (Ultra-Viole Işıkla Silinebilir Programlanabilir ROM) EEPROM Electrically Erasable Programmable ROM (Elektrikle Silinebilir Programlanabilir ROM) FLASH Memory Yazılımla silinip programlanabilen gelişmiş EEPROM. Cache Memory - Önbellek : Ana belleğe yardımcı, daha küçük boyutlu olan; daha önceden kullanılan veya tahmin edilen verilere erişim amacıyla kullanılan bellek türüdür. L (Code - Kod ve Data-Veri olmak üzere 2 tane olabilir) İşlemci içerisinde çekirdeğe yakın L2 İşlemci paketi içerisinde L3 Anakart üzerinde Önbellek statik RAM temeline dayanır. Hızlı olmasına karşılık fiziksel olarak daha büyük ve maliyeti yüksektir. (Küçük kapasiteli olsun yine de olsun prensibi) -5-
MİKRODENETLEYİCİ (MICROCONTROLLER) MCU Micro Controller Unit Mikrodenetleyici Birimi İşlemci ile birlikte I/O ve bellek birimlerinin tek bir entegre olarak paketlendiği elektronik birime mikrodenetleyici (microcontroller) adı verilmektedir. MicroChip firması tarafından üretilen mikrodenetleyicilere PIC adı verilmektedir. PIC Peripheral Interface Controller (Çevresel Arabirim Denetleyici) PIC6F84, PIC8F877, PIC8F854 vb. Atmel firması tarafından üretilen mikrodenetleyiciler AVR adını almaktadır. Atmega8, Atmega6, Atmega32, Atmega64, Atmega28 vb. -6-
İŞLEMCİ MİMARİLERİ Mikroişlemci Mimarisi, CPU ve Bellek arasındaki veri iletişim şeklinin ve verilerin işlenmesinin nasıl yapılacağını ifade etmektedir. Mikroişlemci/Mikrodenetleyici üreticileri 2 temel tasarım modelini kullanılır: - Von-Neuman Mimarisi - Harvard Mimarisi. VON-NEUMANN Mimarisi Von-Neuman Mimarı yapısı Von-Neuman mimarisini kullanan mikrodenetleyiciler, sadece bir bellek bloğu ve 8 bit veriyoluna sahiptir. Bu mimaride komut kodu ve veri aynı bit (8 bit) genişliğindedir. Tüm veriler bu 8 hat üzerinden iletildiğinden dolayı, veriyolunun aşırı yüklenmesiyle iletişim çok yavaşlar ve verimsiz olur. CPU aynı anda sadece ya bir komut okuyabilir ya da belleğe bir veri yazabilir veya bellekten bir veri okuyabilir. Komut ve veri aynı veriyolunu kullandığı için, aynı zamanda her ikisinin olması mümkün değildir. Gerçekleşen tüm ara işlemler için aynı veriyolu kullanılır. Von-Neuman mimarisini kullanan mikrodenetleyiciler, CISC işlemci yapısındadır. 2. HARVARD Mimarisi Harvard mimari yapısı -7-
Harvard mimarisini kullanan mikrodenetleyiciler 2 farklı veri yoluna sahiptir. Bunlardan biri 8 bit genişliğinde olup, CPU yu RAM e bağlar. Diğeri ise 2, 4 veya 6 bit genişliğinde olup CPU yu Flash ROM a (Program Belleği) bağlar. Bundan dolayı, CPU aynı zamanda bir komut okuyabilir ve veri belleğine erişebilir. Harvard mimarisinde komut kodu bit genişliği ile veri bit genişliği birbirinden farklı olabilmektedir. Bununla birlikte makine kodları ve veriler farklı bellek blokları içerisinde yer almaktadır. Bu sebeple, saat çevriminde hem makine koduna hem de veriye erişim mümkündür. Tüm komutlar saat çevriminde çalışan komutlardır (İstisna: Jump komutu 2 saat çevriminde çalışır). Dolayısı ile her bir kodun icra süresi eşittir. Harvard mimarisini kullanan mikrodenetleyiciler, RISC işlemci yapısındadır. 3. RISC ve CISC Mimarileri Mikroişlemcilerin temelinde genelde CISC mimarisi kullanılırken, mikrode netleyicilerin temelinde ise RISC mimarisi kullanılmaktadır. RISC Reduced Inctruction Set Computers (Komut kümesi indirgenmiş mikroişlemci mimarisi) Komut kümesi az sayıda komuttan oluşmaktadır (<5). Komutlar basit yapıdadır ve istisnalar hariç komutlar tek bir saat çevriminde işletilebilen türdedir. Genel olarak her bir komutun icra süresi eşittir. Komut kodu bit genişliği ve veri bit genişliği farklı olabilmektedir. İşlemci içi donanımları daha az olduğundan boyut küçüktür ve ısınma problemleri daha azdır. CISC Complex Instruction Set Computers Komplex komut kümesine sahip mikroişlemci mimarisi Tek bir komut ile aynı anda birden çok işlem yapılabilir. Karmaşık bir yapıdadır. Komut sayısı (kümesi) çoktur. İşlemci içi donanımları daha çok olduğundan boyut da daha büyüktür ve ısınma problemleri nedeniyle güçlü soğutma sistemlerine ihtiyaç duyulmaktadır. RISC mimarili mikrodenetleyiciler sadece toplama, çıkartma, kopyalama gibi temel işlemleri tanır ve işletirler. Diğer taraftan daha karmaşık işlemler ise, bu basit işlemlerin kombinasyonları ile gerçekleştirilir. Örneğin, çarpma ardışık toplama işlemleri ile yapılır. -8-
Programlama Dilleri Programlama dilleri temel olarak 3 sınıfta incelenebilir : Makina Dili (Hexadecimal - Onaltılı Kodlar) t Düzey Programlama Dilleri (Assembly Dili) Üst Düzey Programlama Dilleri (Pascal, Delphi, VBasic ) t Düzey Programlama Dilleri Kolaylaşır Program Yazma Hızlanır Kod Azalırken dosya boyutu artar Programın Çalışması Yavaşlar Etkinlik azalır Üst Düzey Programlama Dilleri Üst Düzey Programlama Dilleri Text Tabanlı Programlama Dilleri (Pascal, GW Basic vb.) Görsel Programlama Dilleri (Delphi, Visual Basic vb.) Grafik Programlama Dilleri (Labview, WorkBench, Parsic vb.) YORUMLAYICI INTERPRETER Programı oluşturan komut satırları birer birer ele alınır. Komut satırında hata yoksa çalıştırılır ve bir sonraki komut satırına geçilir. Hata olduğu anda program çalışması durur. Bu işlem bu şekilde program sonuna kadar devam eder. Yorumlayıcı mantığında programın tamamının hatalardan arındırılmış olması gerekmez. Hatta hataya rastlanılmadığı, şartlar hatalı satırın olduğu komut satırının çalıştırılmasını gerektirmediği sürece program çalışmasına devam eder. Hata listesi verilmez. Program hataları genel olarak 3 sınıfta incelenir: - Syntax Error (Yazım Sözdizim Hatası) - Logical Error (Mantık Hatası) - Run-Time Error (Çalışma Zamanı Hatası) Programın çalışması esnasında meydana gelebilecek hataları önceden kestirmek ve program akışını bu duruma göre kontrol etmek amacıyla, programlama işlemlerinde Hata Yakalama Yordamları sıkça kullanılmaktadır. Örnek Hata Yakalama Yordamları; Pascal / Delphi : Try/Except/End ve Try/Finally/End C# : try / catch / finally -9-
DERLEYİCİ COMPILER Programın tamamı gözden geçirilir ve hiç hata yoksa program çalıştırılabilir hale gelir. Hatalar varsa; hata listesi verilir. Kaynak Kod Source Code Compiler Derleyici Object Code (Hex Kod) Linker Bağlayıcı Çalıştırabilir Kod *.EXE BAĞLAYICI (LINKER) Bilgisayar Tabanlı Programlama Adımları Derleme ile elde edilen Object kodların ilave durumdaki kütüphane vb. ekstra kodlar ile birlikte kendi başına çalıştırılabilecek hale getirilmesi işlemidir. ÇEVİRİCİ ASSEMBLER Assembly dilinde Mnemonik komutlardan oluşan ve text tabanlı olarak yazılmış programın HEX kodlara dönüştürülmesini sağlayan yazılımlara Assembler-Çevirici adı verilir. Mnemonik Komut Örnekleri (MOVLW, ADDF, GOTO, CALL BNC vb. kısaltmalar) SHL Shift Left Sola Kaydır SHR Shift Right Sağa Kaydır ROR Rotate Right Kaynak Kod Source Code *.ASM Assembler Çevirici Object Code (Hex Kod) Programlayıcı Donanım ve Yazılım Mikrodenetleyici PIC, ATMEL Assembly Dili Programlama Adımları Mikrodenetleyici Programlama İhtiyaçları Assembly Dilinde yazılmış program Assembler Yazılımı (Assembly >>> Hex) HEX kodlar Mikrodenetleyici (PIC, Atmel vb. olabilir.) Mikrodenetleyici Programlama Donanımı (Programlayıcı) Mikrodenetleyici Programlama Yazılımı (PIC programmer (usburn2a.exe)) -2-
MANTIK DEVRELERİ AND AND kapısı 2 (veya daha fazla) girişe ve tane çıkışa sahiptir. OR OR kapısı 2 (veya daha fazla) girişe ve tane çıkışa sahiptir. NOT NOT kapısı girişe ve tane çıkışa sahiptir. EXCLUSIVE OR (XOR) -2-
REGISTER (KAYDEDİCİ) Register (Kaydedici Yazmac - Saklayıcı) veya bellek hücresi, byte (işlemci yapısına bağlı olarak daha fazla olabilir) verinin tutulduğu elektronik bir devredir. DOĞRULUK TABLOLARI A B NOT A NOT B A AND B A OR B A EXOR B -22-
Yazmaçlar Registers Mikroişlemci ve Mikrodenetleyici içerisinde yer alan, veri işlem ve adresleme vb. amaçlar için kullanılan (Ax, Bx, Cx gibi adlarla anılırlar) veri saklama alanlarıdır. EAX Yazmaç Yapısı EAX DoubleWord 32 Bit AX Word 6 Bit 3 3 29 28 27 26 25 24 23 22 2 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2-23-
Örnek : Assembly dili komutlarının Delphi ortamında gömülü (ASM/END bloğu) olarak kullanılması a. Program Kodları unit Unit; interface uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls; type TForm = class(tform) Button: TButton; edt_x: TEdit; edt_y: TEdit; edt_t: TEdit; Label: TLabel; Label2: TLabel; Label3: TLabel; procedure ButtonClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form: TForm; implementation {$R *.dfm} procedure TForm.ButtonClick(Sender: TObject); var X,Y,T :; begin // X ve Y Değerlerini X:= StrToInt(edt_X.Text); Y:= StrToInt(edt_Y.Text); end; end. // AND işlemi Asm Mov,X Mov,Y And, Mov T, End; // Sonuç (T) değeri ekrana bas edt_t.text := IntToStr(T); b. Form Görünümü -24-
c. İşleyiş Program Kodu Bellek Yazmaç X:= StrToInt(edt_X.Text); X Y T 2 5 4 3 2 9 8 7 6 5 4 3 2 Y:= StrToInt(edt_Y.Text); X Y T 2 6 5 4 3 2 9 8 7 6 5 4 3 2 Mov,X X Y T 2 6 5 4 3 2 9 8 7 6 5 4 3 2 Mov,Y X Y T 2 6 5 4 3 2 9 8 7 6 5 4 3 2 And, Çalışma Prensibi: And X Y T 2 6 5 4 3 2 9 8 7 6 5 4 3 2-25-
Mov T, X Y T 2 6 4 5 4 3 2 9 8 7 6 5 4 3 2 edt_t.text := IntToStr(T); X Y T 2 6 4 5 4 3 2 9 8 7 6 5 4 3 2-26-