Mikroişlemciler Giriş Öğr. Gör. M. Ozan AKI r1.0
Mikroişlemcilerin Kısa Tarihçesi Hesaplama makinelerinin temelleri çok eskiye dayanır; İlk olarak Çin de kullanılmaya başlayan Abaküs, tamamen elle çalışan ilk mekanik hesaplama aracı sayılır İlk mekanik hesaplama cihazı 1642 Yılında Fransız Bilim Adamı Blasie Pascal Tarafından Yapılmıştır. Charles Xavier Thomas dört işlem yapabilen ilk ticari hesap makinesini 1820 de geliştirmiştir. Charles Babbage Fark Makinesi adını verdiği ve bir talimat programıyla kumada edilen tam otomatik hesaplama makinesini geliştirmiştir. 1937 Yılında Mark-1 adı verilen ve elektromekanik rölelerle çalışan ilk otomatik hesaplama makinesi olan bilgisayar Howard Hathaway Aiken in yönettiği ekip tarafından geliştirildi.
Mikroişlemcilerin Kısa Tarihçesi 1938 Yılında Lowa State Collage da matematik ve fizik profesörü olan Dr. John Vincent Atanasoff, adı ABC (Atanasoff-Berry Computer) olan ilk elektronik kişisel bilgisayarı tasarladı. Bu çalışmaların ışığında 1940 lı Yıllarda A.B.D. Ordusu tarafından finanse edilen ENIAC projesi yapıldı. Bu, 18000 vaku tüpü ile çalışan 30 ton ve 140 metrekarelik bir bilgisayardı. Saniyede 300 çarpma işlemi yapabiliyordu. Aynı yıllarda John Von Neumann bu bilgisayarlarda ikili (binary) sayı sisteminin kullanılabileceğini gösterdi. 1960 lı yılların başında transistörün keşfiyle elektronik devreler küçüldü, hızlandı ve daha az enerjiyle çalışabildiler. 1965 li yıllarda ise, çok sayıda transistörün çok çüçük bir yüzey üzerinde üretilebilmesine olanak tanıyan Entegre Devre teknolojisi ile ilk mikroişlemciler doğmuş oldu.
Mikroişlemcilerin Gelişimi
Mikroişlemcilerin Gelişimi Intel 4004 (1970) Intel 8086 (1977) Intel 80386 (1985) Intel Core i7 (2010)
Mikroişlemcili Bir Sistemin Yapısı
Bir Mikroişlemcide üç temel birim vardır; Mikroişlemcinin İç Yapısı ALU (Aritmetik Lojik Birim) Registers (Kaydediciler) Control (Kontrol Birimi)
Mikroişlemci ile ilgili Kavramlar Reset Vektörü : Mikroişlemcinin, enerji verildiğinde ilk komutunu alacağı bellek adresidir. (Genellikle 0x0000) Fetch & Execution : Mikroişlemcinin çalışma sırasında komutu bellekten alıp getirmesi & komutun gereğinin yapılması (icra etme) (Pipeline?) Instruction Set : Mikroişlemci Komut Seti ALU (Arithmatic Logic Unit) : Aritmetik ve Lojik işlemlerin yapıldığı birim. Register : Kaydedici, Yazmaç. Mikroişlemcinin içinde, geçici işlem verileri ve sonuçlarının yazıldığı 1 WORD uzunluğundaki bellek bölgeleri
Mikroişlemci ile ilgili Kavramlar Interrupt : Kesme. Donanımsal ya da Yazılımsal olarak bir mikroişlemcinin, program akışını keserek daha önce tanımlanmış başka bir program parçasını işletmesi ve tekrar geri dönmesi için uyarı, dürtme. CISC (Complex Instruction Set Computer) : Karmaşık komut setine sahip bilgisayar, mikroişlemci. Bu sınıftaki mikroişlemciler çok sayıda komuta sahiptir ancak komutların çalışma zamanları daha çok cycle harcar. RISC (Reduced Instruction Set Computer) : Azaltılmış komut setine sahip bilgisayar, mikroişlemci. Bu sınıftaki mikroişlemciler az sayıda komuta sahiptir ancak her komuz çok az sayıda (1 ya da 2) cycle harcar.
Mikroişlemci ile ilgili Kavramlar Flags (PSW Program Status Word) / STATUS Çalışma durumu ve komutların çalışma sonuçları ile ilgili bilgilerin bit olarak tutulduğu kaydedicidir. Instruction Pointer (IP) / Program Counter (PC) Komutları sırasıyla çalışmasını sağlayan sayaçtır. Bu sayaç dallanma komutları ile değiştirilerek komut işleyişinin sırası değiştirilir. (Kaç bit olmalı?)
Mikroişemci 8086 Program Status Word (PSW) Flag Register
Mikroişlemci ile ilgili Kavramlar Frekans, Cycle: Her mikroişlemci, çalışabilmesi için bir saat frekansına (sürekli bir lojik kare dalga) ihtiyaç duyarlar. Bu saat darbelerini üreten devreye osilatör devresi, bunu sağlayan devre elemanına ise kristal denir. Üretilen frekans osilatör frekansına bağlıdır. Her bir komut, belirli sayıdaki saat darbeleri boyunca işlemini tamamlar. Her bir komutun kaç cycle işlem yaptığı ise mikroişlemcinin Instruction Set kataloğunda verilir. T = 1 / F ve F = 1 / T formülünden, her bir cycle (saat darbesi) ne kadar süre olduğu bulunur. Daha sonra her bir komutun cycle zamanı ile çarpılarak bu komutun toplam işletim zamanı bulunabilir.
CISC / RISC Komut Seti CISC (Complex Instruction Set Computer) Örn: 8086/8088 AAA, AAD, AAM, AAS, ADC, ADD, AND, CALL, CBW, CLC, CLD, CLI, CMC, CMP, CMPSB, CMPSW, CWD, DAA, DAS, DEC, DIV, ESC, HLT, IDIV, IMUL, IN, INC, INT, INTO, IRET, JA, JAE, JB, JBE, JC, JCXZ, JE, JG, JGE, JL, JLE, JNA, JNAE, JNB, JNBE, JNC, JNE, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JNZ, JO, JP, JPE, JPO, JS, JZ, JMP, LAHF, LDS, LEA, LES, LOCK, LODSB, LODSW, LOOP, MOV, MOVSB, MOVSW, MUL, NEG, NOP, NOT, OR, OUT, POP, POPF, PUSH, PUSHF, RCL, RCR, REP, REPE, REPNE, REPNZ, REPZ, RET, RETN, RETF, ROL, ROR, SAHF, SAL, SAR, SBB, SCASB, SCASW, SHL, SHR, STC, STD, STI, STOSB, STOSW, SUB, TEST, WAIT, XCHG, XLAT, XOR RISC (Reduced Instruction Set Computer) Örn: PIC16F84A ADDWF, ANDWF, CLRF, CLRW, COMF, DECF, DECFSZ, INCF, INCFSZ, IORWF, MOVF, MOVWF, NOP, RLF, RRF, SUBWF, SWAPF, XORWF, BCF, BSF, BTFSC, BTFSS, ADDLW, ANDLW, CALL, CLRWDT, GOTO, IORLW, MOVLW, RETFIE, RETLW, RETURN, SLEEP, SUBLW, XORLW
CISC CMP A,B JB X MOV AX,[A] JMP Z X: MOV AX,[B] Z: MOV [C],AX CISC vs RISC A ve B Bellek adreslerindeki iki sayıyı karşılaştıralım ve büyük olan sayıyı C adresine yazalım RISC MOVF B,W SUBWF A,W BTFSS STATUS,C GOTO X MOVF A,W GOTO Z X: MOVF B,W Z: MOVWF C
Donanım Mimarileri DEP (Data Execution Preventation) Win7: Bilgisayarım -> Özellikler -> Gelişmiş Ayarlar -> Sistem özellikleri -> Advanced - > Performance -> Ayarlar -> Data Execution Prevention
Fiziksel Ortamına Göre Bellek Çeşitleri
Erişim Durumuna Göre Bellek Çeşitleri Analoji: Depo -> Toptancı -> Market, Bakkal -> Dolap, Buzdolabı -> Tabak Bardak
Belleğin Adreslenmesi Register Doğrudan kaydedici adı ile kullanılırlar, bellek adresleri söz konusu değildir. (Instruction Word içerisinde kodlanmıştır) Bellek Bellek adresi ile kullanılırlar. Her adres bir bellek hücresine işaret eder. Her hücre, veriyolu bit sayısı kadar veri saklar
Mikroişlemci Yazılımı (Software) Makine Dili (Machine Language) Komut setlerini oluşturan ikili sayılar doğrudan mikroişlemciye girilebilir. Birleştirici Dil (Assembly) İnsan tarafından okunabilir ve anlaşılabilir OPCODE lar makine diline çevrilir. Kaynak Kod (Source Code) Yüksek seviyeli dillerin kaynak kodlarını makine diline çevirerek object file olarak kaydeder. Compiler (Derleyici) Yüksek seviyeli dillerin kaynak kodlarını makine diline çevirerek object file olarak kaydeder. Cross Compiler (Çapraz Derleyici) Yüksek seviyeli dillerin kaynak kodlarını üzerinde çalıştığı makineden farklı bir işlemcinin makine diline çevirerek object file olarak kaydeder. Linker (Bağlayıcı) Daha önce derlenmiş olan object dosyaları birleştirerek çalıştırılabilir (COM, EXE, BIN, HEX) dosyayı elde eder ve kaydeder.
Mikrodenetleyiciler Mikrodenetleyiciler, mikroişlemcilerin spesifik görevler için özelleştirilmiş halidir. Mikrodenetleyiciler, çalışamaları için gerekli ROM (Flash), RAM, Osilatör gibi birimleri aynı çip üzerinde barındırır. Böylece, neredeyse hiç bir çevre birimine ihtiyaç duymadan çalışabilirler. Ancak mikrodenetleyiciler, hız, bellek ve işlem hacmi bakımından mikroişlemcilerden çok çok küçük boyutlardadır. Mikrodenetleyiciler, özel ve spesifik olarak tanımlanmış görevlerde kullanılırlar. Belirli bir işletim sistemleri olmayabilir,
Mikrodenetleyiciler Yaygın olarak kullanılan mikrodenetleyici üreticileri şunlardır. Microchip PIC -> www.microchip.com Atmel AVR -> www.atmel.com Texas Instruments -> www.ti.com Cypess PSoC -> www.cypress.com Renesas -> www.renesas.eu Philips NXP -> www.nxp.com STMicroelectronics -> www.st.com
Mikrodenetleyicilerin Programlanması DOS/Windows ortamında çalıştırılabilir ikili dosyalar.exe dosyalarıdır. Linux ortamında ise Executable özellikteki ikili dosyalar çalıştırılabilirdir. Mikrodenetleyicilerde ise, derleme ve bağlama işlemlerinden sonra elde edilen çalıştırılabilir dosya.hex ya da.bin ya da.elf dosyalarıdır. Bu dosyaların mikrodenetleyici içerisinde bulunan ROM / Flash belleğe aktarılması gerekir. Bunun için ise programlayıcıler kullanılır.
Programlayıcılar Programlama işlemleri şu şekillerde olabilir; Mikrodenetleyici, bir programlama cihazına takılarak programlanır, ve oradan çıkarılarak tekrar çalışacağı devreye takılır. Mikrodenetleyicinin devre üzeri programlama (In Circuit Serial Programming ICSP, JTAG) uçları kullanılarak devreden hiç sökülmeden programlanır. Daha önce mikrodenetleyiciye yüklenmiş olan bir bootloader kullanılarak HEX dosya seri ya da USB port ile doğrudan programlanır.
Ders ile ilgili Kaynaklar Mikroişlemciler www.intel.com www.amd.com Mikrodetleyiciler www.microchip.com www.atmel.com Arduino www.arduino.cc ozanaki.blogspot.com Proteus (Simülasyon) www.labcenter.com NI Multisim (Simülasyon) www.ni.com Board Şema Çizimi www.fritzing.org