Veri Yapıları ve Algoritmalar

advertisement
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
Download