Mikroişlemciler Giriş Öğr. Gör. M. Ozan AKI r1.1 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 80386 (1985) Intel 8086 (1977) Intel Core i7 (2010) Mikroişlemcili Bir Sistemin Yapısı Mikroişlemcinin İç Yapısı Bir Mikroişlemcide üç temel birim vardır; •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 bir istek üzerine mikroişlemcinin rutin program akışını keserek daha önce tanımlanmış başka bir program parçasını işletmesi ve tekrar geri dönerek kaldığı yerden çalışmaya devam etmesi. •CISC (Complex Instruction Set Computer) : Karmaşık komut setine sahip bilgisayar, mikroişlemci. Bu sınıftaki mikroişlemciler çok sayıda komuta sahiptir. •RISC (Reduced Instruction Set Computer) : Azaltılmış komut setine sahip bilgisayar, mikroişlemci. Bu sınıftaki mikroişlemciler daha az sayıda komuta sahiptir. 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 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 • CISC • RISC CMP A,B JB X MOV AX,[A] JMP Z X: MOV AX,[B] Z: MOV [C],AX 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) Belirli bir formata sahip ikilik tabandaki sayı dizilerinden oluşan mikroişlemci komutlarıdır. Mikroişlemci bu komutları doğrudan işletir. Birleştirici Dil (Assembly) Makine dilinin, insan tarafından okunabilir ve anlaşılabilir OPCODE lar şeklinde ifade edilmiş halidir. Birleştirici dil doğrudan makine diline dönüştürülebilir. Kaynak Kod (Source Code) Yüksek seviyeli dillerin kurallarına ve veri yapılarına göre yazılmış, okunabilir ve anlaşılabilir komutlar ve veriler bütünüdür. Compiler (Derleyici) Kaynak kodları, mikroişlemcinin anlayacağı makine diline dönüştüren yazılım araçlarıdır. Cross Compiler (Çapraz Derleyici) Kaynak kodları, üzerinde çalışmakta olduğu platformdan farklı, başka bir mikroişlemci için derleyen derleyicilere denir. Linker (Bağlayıcı) Daha önce derlenmiş olan object dosyaları ve kütüphane bağlantılarını birleştirerek çalıştırılabilir (COM, EXE, BIN, HEX) dosyayı oluşturan yazılım araçlarıdır. Mikrodenetleyiciler Mikrodenetleyiciler, mikroişlemcilerin spesifik görevler için özelleştirilmiş halidir. Mikrodenetleyiciler, çalışmaları 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, genellikle doğrudan kullanıcı kodunu çalıştırırlar. 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 ozanaki.blogspot.com Proteus (Simülasyon) www.labcenter.com Mikrodetleyiciler •www.microchip.com •www.atmel.com NI Multisim (Simülasyon) www.ni.com Arduino www.arduino.cc Board Şema Çizimi www.fritzing.org