Mikroişlemciler Giriş
İçerik Ders hakkında bilgi Tarihi gelişim Tanımlar Mikroişlemci tabanlı sistemler Sayı sistemleri
Ders hakkında bilgi
Ders hakkında bilgi Dersi veren: Mustafa M Atanak E-posta adresi: mmatanak@anadolu.edu.tr Ders kitabı: Mikroişlemciler Mikrobilgisayarlar, Eşref Adalı, Birsen Yayınevi, 2004
Notlandırma Ara sınav: % 30, Lab ve küçük sınavlar: % 30 Dönem sonu sınavı: % 40
Tarihi gelişimi
Mekanik Çağı M.Ö. 500, Abaküs 1823, Charles Babbage, Analitik motoru
Elektrik Çağı 1800ler, Elektrik motorunun bulunması 1889, Herman Hollerith, basılı kartların üzerinde yer alan verileri sayan, sıralayan bir makine geliştirdi
Birinci Nesil Bilgisayarlar (1945-1956) 1941, Z3 hesaplama makinesi, Konrad Zuse İkinci Dünya Savaşı’nın başlaması ile, yönetimler bilgisayarların potansiyel stratejik önemi nedeniyle bilgisayar araştırmalarını iyice arttırdılar. 1941’de Alman mühendis Konrad Zuse uçak ve roketler için Z3 olarak adlandırılan bir bilgisayar geliştirdi. Müttefik kuvvetler daha güçlü bilgisayarlar için çalışmaya başladılar.
Birinci Nesil Bilgisayarlar (1945-1956) 1943, Alan Turing, Colossus İngilizler Almanların mesajlarını çözebilmek için Colossus adlı gizli kodları kırmayı başaran bilgisayarı dizayn ettiler. Alman askeri kodlarını kırdı Vakum tüpleri kullandı Programlanabilir değildi Başka problemleri çözemiyordu 1944, Howard H. Aiken, Mark I IBM tamamen elektronik hesap makinasını üretti. Kısaca Mark I olarak adlandıran makine elektronik rolelerden oluşmuş bir cihazdı Mekanik parçaları hareket ettirmek için elektromagnetik sinyaller kullanılmıştı. Makina yavaştı çünkü tek hesaplama 3-5 saniye alıyordu ve ard arda gelen hesaplamalar sırasında herhangi bir şey değiştirilemiyordu. Fakat daha kompleks eşitliklerin üstesinden gelebiliyordu.
Birinci Nesil Bilgisayarlar (1945-1956) 1946, ENIAC, Pensilvanya Üniversitesi Savaş nedeniyle gelişmiş diğer bir bilgisayar, Amerikan hükümeti ve Pennsylvania Universitesi ortaklığı ile ortaya çıkmış olan ENIAC adlı bilgisayardı (Electronic Numerical Integrator And Computer). Bilgisayar 18000 vakum tübü, 70000 direnç ve 5000000 lehim noktarına sahipti. 160 kilowatt elektrik gücü tüketen makina Philadelphia daki ışıkların sönükleşmesine neden oluyordu. ENIAC, Mark I e göre 1000 kez daha hızlı bir bilgisayardı 800 km kablo 30 tondan fazla ağırlık Saniyede 100,000 işlem Devrelerdeki bağlantıların değiştirilmesi ile programlanır
İkinci Nesil Bilgisayarlar (1956-1963) 1948, transistörün geliştirilmesi 1948 de transistörlerin keşfi ile birlikte bilgisayarların gelişimindeki artış iyice arttı. Transistörler televizyonlardaki, radyolardaki ve bilgisayarlardaki büyük ve hantal vakum tüplerinin yerlerini aldılar. Transistörlerin bilgisayarlarda kullanılmaya başlaması ile ikinci nesil bilgisayarlar daha küçük, daha hızlı dahagüvenilir ve önceki modellere göre daha az enerji tüketen modeller olarak ortaya çıkmasına neden oldular. İkinci nesil bilgisayarlarda makine dili ile assembly dili yer değiştirdi ve böylece uzun ve zor ikili kodların yerini kısa programlama kodları aldı
İkinci Nesil Bilgisayarlar (1956-1963) 1960 ların başlarında işyerleride, üniversitelerde, ikinci nesil bilgisayarlar kullanılmaya başlandı. İkinci nesil bilgisayarlara yazıcılar, tape birimleri, disk birimleri, hafıza, işletim sistemi ve programlar ilave edildi. IBM 1401 ikinci nesil bilgisayarlar için önemli bir örnektir. Daha gelişmiş COBOL (Common Business- Oriented Language) ve FORTRAN (Formula Translator) gibi yüksek seviye diller kullanılmaya başlanmıştır. Bu tip dillerde; kriptik ikili makina kodları yerlerini kelimelere, cümlelere ve matematiksel formüllere bırakarak bir bilgisayarın programlanmasının daha basit hale gelmesine neden olmuştur. İkinci nesil bilgisayarların ortaya çıkışı ile birlikte yeni meslek tipleri (programcı, analizleyiciler, bilgisayar sistem uzmanları) ve software endüstrisi doğmuştur.
Üçüncü Nesil Bilgisayarlar (1963-1971) 1960lar, Sayısal entegre devreler Transistörler vakum tüplerine göre avantajlı olsalarda büyük miktarda ısı yayarlar ve bilgisayarın duyarlı iç parçalarının bozulmasına neden olabilirler. 1958 yılında Texas Instruments deki mühendislerden Jack Kilby Tümleşik devreyi (Integrated Circuit (IC)) geliştirdi. Tümleşik devre (IC), kuartzdan yapılmış küçük bir silikon disk üzerinde 3 elektronik bileşenden meydana gelir. Bilimadamları daha sonra yarıiletken olarak adlandırılan küçük bir yonga (chip) üzerine pekçok parçayı yerleştirerek yönetmeyi balardılar. Sonuçta bilgisayarlar küçük bir yonga üzerine daha fazla bileşenin katılmasıyla küçülmüş oldular. Üçüncü nesil bilgisayarlarda işletim sistemi etrafında pekçok programın çalışması mümkün oldu ve bilgisayar hafızası bu programlar tarafından ortak olarak kullanılmaya başlandı
Dördüncü Nesil Bilgisayarlar (1971-Devam ediyor) 1971, Intel tarafından ilk mikroişlemci yapıldı Tümleşik devrelerden sonra, boyutlar azalmaya devam etti. Bir yonga üzerine yüzlerce bileşen monte edildi (Large scale Integration (LSI)). 1980 de bir yonga üzerine binlerce bileşenin yüzlercesi sıkıştırıldı (Very Large scale Integration (VLSI)). Sayı milyonlar mertebesine çıktığında (Ultra-Large scale Integration (ULS söz konusu oldu. Bilgisayarların boyut ve fiyatları azaldı ve azalmaya devam ediyor. Bunun yanında güçleri verimlilikleri güvenilirlikleri artmaya devam ediyor. 1971 yılında Intel 4004 yongasını ürettiğinde çok küçük bir yonga üzerinde bilgisayarın tüm bileşenleri (merkezi işlem birimi (Central Processing Unit (CPU)), hafıza, girdi ve çıktı yönetimi) toplanmıştı.
Dördüncü Nesil Bilgisayarlar (1971-Devam ediyor) 1981 de evde, işyerinde ve okullarda kullanım için kişisel bilgisayarı (Personal Computer (PC)) ortaya çıkarttı. 1981 de 2 milyon olan PC sayısı 1982 de 5.5 milyona ulaştı. On yıl sonra 65 milyon PC kullanılmaya başlandı. Giderek bilgisayarların boyutları küçülmeye devam ederek laptop bilgisayarlar (bir çantaya sığacak büyüklükte), palmtop (gömlek cebine girebilecek büyüklükte) bilgisayarlar dizayn edildiler. 1984 yılına gelindiğinde ilk kez IBM PC ve Apple Macintosh yarışı başladı. Macintoshlar user-friendly dizayn ile ortaya çıktı. Macintosh’un sunduğu işletim sistemi; kullanıcılara, yazılı komutlar yerine bilgisayar ekranında simüle edilen bir simge ile diğer simgeleri (icon) taşıma kolaylığı sağladı. Yakın bilgisayarların daha etkili kullanılabilmesi için birbirlerine bağlanmaya başladılar ve bilgisayar ağları kurulmaya başlandı. Ağ üzerindeki herbir bilgisayar diğer bilgisayarların hafızalarını, programlarını bilgilerini paylaşmaya başladı. Bu tür birbilerine bağlı bilgisayarların oluşturduğu ağlar (Local Area Network (LAN)) diğer bilgisayar ağlarına bağlandılar. Böylece tüm dünyadaki bilgisayarlar birbirlerine bağlanarak ağların ağı olan İnterneti oluşturdular
Programlama gelişmeleri Programlanabilir makineler geliştirilmeye başlanınca, programlar ve programlama dilleri de gelişmeye başladı Bağlantıların yeri değiştirilerek programlama yapmak oldukça zor olduğu için, bilgisayar dilleri gelişmeye başladı. İlk makine dili, birler ve sıfırlar ile geliştirildi. Hafızada program denilen bir grup komut biçiminde idi
Assembly dili 1950lerin başlarında, UNIVAC benzeri sistemlerin gelişmesi ile, digital komutların girilmesini kolaylaştıran assembly dilleri kullanılmaya başlandı. Assembler, kullanıcıların anlaşılabilir kodlar yazmasına izin verdi… Toplama için ADD komutu gibi Digital komutlar yerine 0100 0111 gibi Assembly dili, programlama yapmak için kullanışlı bir araç haline geldi.
Yüksek seviye programlama dilleri 1957, FLOWMATIC, Grace Hopper 1957, FORTRAN, IBM 1958, ALGOL COBOL RPG BASIC, PASCAL, ADA C / C++ / C# / JAVA
Yüksek seviye programlama dilleri ve assembly Bilimsel camia genellikle C/C++ kullanır. Bazen PASCAL ve FORTRAN Güncel bir istatistik, gömülü sistem geliştiricilerinin yaklaşık % 60’ının C programlama dilini kullandıklarını göstermektedir. % 30 assembly dilini kullanır Geri kalanlar ise genellikle BASIC ve JAVA
Assembly’nin önemi C/C++, genellikle assembly dili kullanan düşük seviye kontrol yazılımlarında kullanılmaya başlandı. Ancak, assembly dili hala önemli bir yere sahiptir. Çoğu video oyunu, neredeyse tamamen assembly dilinde yazılır Assembly ayrıca, C/C++ ile entegre olarak, bazı kontrol fonksiyonlarının daha hızlı gerçekleştirilmesini sağlar. Pentium ve çift çekirdekli işlemcilerde kullanılan bazı paralel komutlar, sadece assembly dilinde yazılır.
İkili sayı sistemi Bit: 1, 0 nibble: 4-bit Byte: 8-bit Word: 16-bit 1 KB = 1024 Byte = 210 Byte 1 MB = 1024 KB = 220 Byte 1 GB = 230 Byte, 1 TB = 240 Byte B: byte b: bit 8 Mbps = 8 Megabits per second (Saniyede 8 Mb - ADSL hızı)
Mikroişlemci Çağı 1971, Intel 4004 ve 4040 1972, Intel 8008 4-bit mikroişlemciler 4096 adetlik 4-bit hafıza bölümü 45 komut Çoğu hesap makinesi ve düşük seviye uygulamalar (mikrodalga fırınlar gibi) hala 4-bitlik mikroişlemciler kullanır 1972, Intel 8008 8-bit mikroişlemci 16K satırlık hafıza 48 komut Saniyede 50,000 komut
Mikroişlemciler (devamı) 1973, Intel 8080 64K hafıza satırı Saniyede 500,000 komut (komut başına 2 s) 1974, Motorola 6800 1974, İlk kişisel bilgisayar 1977, Intel 8085 Saniyede 769,230 (komut başına 1.3 s) Dahili saat ve sistem yöneticisi
Modern Mikroişlemciler 1978, Intel 8086 ve 8088 16 bit mikroişlemciler Komut başına 400 ns. Saniyede 2,5 milyon komut 1M satırlık hafıza Çarpma ve bölme komutları 20,000’den fazla komut çeşitliliği Komut sayısı çok fazla olan mikroişlemcilere CISC (complex instruction set computers – Karmaşık komut setli işlemci) ismi verilir
Modern Mikroişlemciler 1983, Intel 80286 16M büyüklüğünde hafıza Arttırılmış saat hızı (8 MHz) Bazı komutların sağlanması 250 ns. alır 1986, Intel 80386 32 bit mikroişlemci 4GB büyüklüğünde hafıza 1989, Intel 80486 80386 gibi. Ancak, komutların çalıştırılması, iki değil tek saat çevriminde yapılır 8 KB önbellek
Pentium Mikroişlemci 1993, Intel Pentium (P5 veya 80586) Giriş verisyonları, 60 & 66 MHz saat frekanslarında ve 110 MIPS hızında çalışmakta idi 16 KB önbellek 30 Hz ve üzerinde video gösterimine olanak tanımakta idi.
Modern Mikroişlemciler Pentium Pro Pentium II Pentium III Pentium IV Core2 Quad Core 64-bit mikroişlemciler …
Tanımlar
Entegre Devre Diğer adıyla IC, mikrodevre, mikroçip, silikon çip, veya çip İnce bir tabaka halindeki yarıiletken materyal üzerinde oluşturulmuş olan minyatür elektronik devre genellikle yarıiletken ve pasif devre elemanlarından oluşur
Mikroişlemci Merkezi işlemci ünitesi (CPU) fonksiyonlarını tek bir entegre devre üzerinde toplayan programlanabilir sayısal elektronik bileşen. 8-bit, 16-bit, 32-bit, ve 64-bit mikroişlemci: Tek bir seferde manipüle edilen bit sayısı. Programların çalıştırılabilmesi için harici bir hafızaya ihtiyaç duyabilir.
Mikroişlemci ve Mikrodenetleyici Mikrobilgisayar: CPU olarak bir mikroişlemci kullanan bir bilgisayar. Mikrodenetleyici (veya MCU): Br çipin üzerindeki bilgisayar. Kendine yetebilirlik ve maliyet düşüklüğüne önem veren bir mikroişlemci. Mikrodenetleyici ile mikroişlemci arasındaki tek fark: Mikroişlemcide sadece ALU, kontrol ünitesi ve register’lar bulunur. Mikrodenetleyicide ise ROM, RAM, harici üniteler (zamanlayıcı, Girdi/Çıktı portları ve benzeri) bulunur.
Mikroişlemci tabanlı kişisel bilgisayar sistemi
Mikroişlemci tabanlı bilgisayar sistemi
Temel bileşenler
Mikroişlemci Mikroişlemciye aynı zamanda Merkezi İşlem Ünitesi (Central Processing Unit - CPU) de denilir. CPU, bilgisayar sistemini kontrol eden elemandır. CPU hafızayı ve girdi/çıktıları bus denilen bağlantılar sayesinde kontrol eder. Bus: Girdi/çıktı veya hafıza ünitesini seçer, farklı bileşenler arasındaki veri akışlarını gerçekleştirir. Hafıza ve Girdi/Çıktı üniteleri, hafızada bulunan ve mikroişlemci tarafından çalıştırılan komutlar sayesinde kontrol edilir.
Mikroişlemci Mikroişlemcinin üç temel işlevi bulunur: Kendisi ile hafıza ve girdi/çıktı sistemleri arasındaki veri akışını kontrol eder. Temel aritmetik ve mantık operasyonlarını gerçekleştirir. Temel karar mekanizmaları ile program akışını kontrol eder. CPU aşağıdaki bileşenlerden oluşur: Aritmetik Mantık Ünitesi: Arithmetic Logic Unit (ALU) Register’lar Kontrol Ünitesi
ALU Aritmetik ve mantık operasyonlarını gerçekleştirir. Ana hafızadan ve/veya register’lardan verileri alır ve sonuçların bu ünitelere yazılmasını sağlar. Mikroişlemci, bir sayının sıfır mı, pozitif mi … ve benzeri durumlarını kontrol eder. Bu durumları da göz önüne alarak oluşturulan program akışı sayesinde, sistem ile ilgili temel kararlar verilmesine olanak tanır.
Aritmetik ve mantık operasyonları Yorum Addition Subtraction Multiplication Division AND Mantıksal çarpma OR Mantıksal toplama NOT Mantıksal değilleme NEG Aritmetik değilleme Shift Rotate
Kararlar Karar Yorum Zero Sayının sıfır olup olmadığını test eder Sign Sayının pozitif mi negatif mi olduğunu test eder Carry Toplamadan dolayı oluşan eldeyi ve çıkarmadan dolayı oluşan ödünç alma işlemlerini test eder Parity Sayının çift mi tek mi olduğunu test eder Overflow Toplama veya çıkarma sonucunda oluşan sayının geçerliliğini kontrol eder
Register’lar CPU’nun ikili sayıları hızlı okumaları ve yazmaları için özelleşmiş bölgeler. Veri veya adres değerlerini tutabilirler. Sayıları ve tipleri, CPU dizaynına bağlıdır. CPU ve girdi/çıktı alt sistemi tarafından kullanılabilirler.
Kontrol Ünitesi Mikroişlemcinin çalışmasını kontrol eden merkezi ünite. Aşağıdaki işlemleri sırası ile gerçekleştirir: Fetch: Makine dili komutlarını hafızadan okur Decode: Komutları tanımlar Execute: Komutların karşılanmasını sağlar Gerekli verileri register’lardan veya hafızadan alır Gerekli işlemlerin yapılmasını sağlar Sonuçları register’lara veya hafızaya yazar
Hafıza Aynı büyüklükteki (genellikle byte) verilerin tutulduğu sayısal bölgeler. Genellikle ardışık byte’lar word (2 byte) ve double word (4 byte) oluşturur. Hafızadaki her satırın ayrı bir adresi bulunur. 16-bit adres, 65,636 (64K) hafıza satırının tanımlanmasına olanak tanır. Dikkat: Bilgisayardaki adres büyüklüğü ile hafızadaki toplam büyüklüğü birbiri ile karıştırmayın. Hafızadan veri transferi read (okuma) operasyonudur. Hafızaya veri transferi write (yazma) operasyonudur.
Bus Bilgisayar sisteminde bileşenleri bağlayan kablolar grubu Mikroişlemci, hafıza ve girdi/çıktı üniteleri arasındaki adres, veri ve kontrol bilgilerini transfer eder. Bazı cihazlar aynı ortak yolu kullanabilirler. Ancak bir zaman diliminde sadece bir tanesi veri yolunu kullanıyor olabilir.
Bus (devam) Address bus: CPU tarafından, halihazırdaki komutun gereksinim duyduğu okuma ve yazma operasyonlarının hangi adres ile ilişkili olduğu bilgisini iletmede kullanılır. Data bus: Mikrobilgisayarın farklı parçaları arasındaki veri akışlarında kullanılır. data bus width (bit olarak): Mikrobilgisayar sistemindeki verilerin büyüklüğünü tanımlar. Control bus: Mikrobilgisayar içerisindeki olayların kontrolünde ve senkronizasyonunda kullanılan sinyallerin iletiminde kullanılır.
Bus Yapısı
Sayı Sistemleri
İkili sistemden (binary) onluk sisteme (decimal) çevrim (110.101)2 = 1×22 + 1×21 + 0×20 + 1×2-1 + 0×2-2 + 1×2-3 = 4 + 2 + 0 + 0.5 + 0 + 0.125 = 6.625
Decimalden ikili sisteme geçiş örneği 0.125 = (0.001)2
Örnek 2 0.468 (0.01110111)2 gerçekte (0.01110111)2 = 0.46484375. Veri kaybı var!
İkili sistemden 16’lık sisteme (hexadecimal) çevrim İkili sistemdeki sayıları dörderli gruplara ayır ve her grubun 16’lık sistemdeki karşılıklarını yaz. Örnek: (1100 0101)2 = (C5)16 Çünkü (1100)2 = (C)16 and (0101)2 = (5)16.
Hexadecimal’den binary’ye çevrim örneği Örnek: (A7)16 = (1010 0111)2