EEM336 – Microprocessors I

advertisement
Mikroişlemciler
Giriş
1
İçerik
 Tarihi gelişim
 Tanımlar
 Mikroişlemci tabanlı sistemler
 Sayı sistemleri
2
Tarihi gelişimi
3
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
4
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.
5
Yüksek seviye programlama dilleri
 1957, FLOWMATIC, Grace Hopper
 1957, FORTRAN, IBM
 1958, ALGOL
 COBOL
 RPG
 BASIC, PASCAL, ADA
 C / C++ / C# / JAVA
6
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
7
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.
8
İ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ı)
9
Mikroişlemci Çağı
• 1971, Intel 4004 ve 4040
–
–
–
–
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
–
–
–
–
10
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
11
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
12
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
13
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.
14
Modern Mikroişlemciler
• Pentium Pro
• Pentium II
• Pentium III
• Pentium IV
• Core2
• Quad Core
• 64-bit mikroişlemciler
• …
15
Tanımlar
16
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
17
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.
18
Mikroişlemci ve Mikrodenetleyici
• Mikrobilgisayar: CPU olarak bir mikroişlemci kullanan bir
bilgisayar.
• Mikrodenetleyici (veya MCU): Bir ç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.
19
Mikroişlemci tabanlı kişisel bilgisayar
sistemi
20
Mikroişlemci tabanlı bilgisayar sistemi
21
Temel bileşenler
22
23
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.
24
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
25
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.
26
Aritmetik ve mantık operasyonları
Operasyon
Addition
Yorum
Subtraction
Multiplication
Division
27
AND
OR
NOT
Mantıksal çarpma
Mantıksal toplama
NEG
Shift
Rotate
Aritmetik değilleme
Mantıksal değilleme
Kararlar
Karar
Zero
Sign
Carry
Parity
Overflow
28
Yorum
Sayının sıfır olup olmadığını test eder
Sayının pozitif mi negatif mi olduğunu
test eder
Toplamadan dolayı oluşan eldeyi ve
çıkarmadan dolayı oluşan ödünç alma
işlemlerini test eder
Sayının çift mi tek mi olduğunu test eder
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.
29
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
30
Hafıza
• Aynı büyüklükteki (genellikle byte) verilerin tutulduğu
•
•
•
•
31
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.
32
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.
33
Bus Yapısı
34
Download