Komutların Yürütülmesi
Bilgisayar Bileşenleri:
Genel Görünüm
Program Sayacı
Komut kaydedicisi
Bellek Adres Kaydedicisi
Ara Bellek kaydedicisi
G/Ç Adres Kaydedicisi
G/Ç ara bellek kaydedicisi
1
Sistem Yolu Kavramı
• Adres yolu: Veri
yolundaki verinin ait
olduğu birimin adresini
taşır. Tek yönlüdür
• Veri yolu: Verinin
taşındığı sistem yolu
bileşenidir. Çift
yönlüdür.
• Kontrol yolu: Kodu
çözülen komutlara bağlı
olarak üretilen kontrol
sinyallerinin taşındığı
sistem yolu bileşenidir.
Kaydedici Organizasyonu
• Kaydediciler bellek hiyerarşisinde en üst seviye düzeydedirler.
— Az sayıda fakat yüksek hızda saklama alanlarıdır.
— Veri ve kontrol bilgileri (komutlar) için geçici saklama
alanlarıdır.
• İki kategoride toplanırlar:
— Genel amaçlı (Kullanıcı görünür)
Assembly programlama seviyesinde, komutlar sayesinde
kullanıcıya kullanma imkanı verilen kaydediciler.
— Özel amaçlı (Kontrol ve durum)
– MİB’in işleyişini kontrol etmek için kullanılırlar.
– Çoğu kullanıcıya görünür değildir.
– Kullanıcı tarafından programlamada doğrudan kullanılmaz.
4
2
Genel ve Özel Amaçlı Kaydediciler
• Genel Amaçlı Kaydediciler
— Farklı işlevleri yerine getirmek amacıyla kullanılabilirler.
— Gerçekleştirecekleri işlemler talimat içinde tanımlanmıştır.
— Adresleme fonksiyonu için de kullanılabilirler.
• Özel Amaçlı Kaydediciler
— Veri Kaydedicileri
– Veriyi saklar ve operand adresinin hesaplanmasında kullanılmaz.
– Örneğin Akümlatör
— Adres Kaydedicileri
– Adres bilgisini tutarlar.
– Örnekler: genel amaçlı adres kaydedicileri, segment göstericiler,
stack göstericiler, index kaydedicileri.
5
Özel Amaçlı Kaydediciler
• Durum kodları veya Bayraklar (Flags)
— Gerçekleştirilen işlem sonucuna bağlı olarak işlemci
tarafından ayarlanan bit kümesidir.
— Program tarafından erişilebilir fakat doğrudan
değiştirilemez.
— Örnekler:
– İşaret bayrağı (sign flag)
– Sıfır bayrağı (zero flag)
– Taşma bayrağı (overflow flag)
— Bit değerleri, bir koşula bağlı olarak programı yönlendiren
komutlar içinde kullanılırlar.
6
3
Kaç tane Kaydedici yeterlidir?
• Kaydedici sayısının fazla olması MİB içinde
daha fazla işlemin gerçekleştirilmesine imkan
sağlar. Böylelikle bellek bant genişliği
ihtiyacını düşürür.
• Kaydedici sayısı artışı komut kelimesi (makine
kodu) içinde kaydedici bilgisinin saklanacağı
alan büyüklüğünü arttırır.
• Çoğu makine 8-64 bitlik kaydedici yapısı
kullanırlar.
7
Kaydedici Kelime Büyüklüğü?
• Adres kaydedicisi en büyük adresi tutacak
kadar geniş olmalıdır!
• Veri kaydedicileri, çok farklı tipteki verileri
saklayabilecek büyüklükte olmalıdır.
• Eğer çoğu gerçekleştirilecek işlem 16 veya 32
bit ise 64-bitlik kaydediciler kullanılmak
istenilmez.
• Bellek veri yolu genişliğine de bağlıdır.
• Daha büyük biçimdeki veri tipleri için
kaydediciler birleştirilebilir olmalıdır.
8
4
Kontrol ve Durum (Status) Kaydedicileri
• Bu kaydediciler, komutların getirme
(fetching), kod çözme (decoding) ve yürütme
(execute) çevrimlerinde kullanılırlar.
• Çoğu programcıya görünür değildir.
• Bazıları görünür olmakla birlikte içerikleri
kolaylıkla değiştirilemezler.
9
MİB (CPU) Bileşenleri
• Aritmetik Mantık birimi
(ALU)
— Tümleyici
— Toplayıcı
— Kaydırıcı
• Kontrol Birimi
— Donanımsal/Programsal
• Geçici saklama (kısa
süreli)
Program Sayacı
Komut kaydedicisi
Bellek Adres
Ara Bellek kaydedicisi
G/Ç Adres
G/Ç ara bellek
kaydedicisi
— Genel amaçlı kaydediciler
— Özel amaçlı kaydediciler
10
5
Tipik Kaydediciler
Kaydedici
İşlevi
Program Sayacı - PC
(Program counter) /
Komut Gösterici - IP
(Instruction pointer)
Çalıştırılacak bir sonraki talimatın adresini
tutar.
Komut Kaydedicisi - IR
(Instruction register)
Çalıştırılacak talimatın makine kodunu tutar.
Bellek Adres Kaydedicisi
Memory address register
(MAR)
Bir sonraki erişilecek bellek adresini tutar.
Ara bellek kaydedicisi
Memory data/buffer register
(MBR)
Bellekten getirilen (fetching) aktif veriyi tutar.
Program Durum Kelimesi
Program status word(s)
(PSW/EFLAGS/FLAGS flags)
Talimatların gerçekleştirdiği işlemlerden sonra
veri durumlarını kontrol etmek kullanılan bit
değerlerini (durumlarını) tutar.
11
ALU
• İşlevsel Birimleri İçerir
—
—
—
—
Aritmetik işlemler: +, -, *, /
Mantıksal işlemler (Boolean): OR, AND, NOT, ExOR
Karşılaştırma işlemleri: <, >, =…
Matematiksel ve kayan noktalı işlemler yardımcı işlemciler
gerekebilir.
• RISC (Reduced Instruction Set Computers)
— Birden fazla işlevsel birim vardır.
• İşlevsel birimler pipeline mimari kullanılarak
gerçekleştirilir.
12
6
Komut Yapısı ve Komut Seti (Hatırlatma)
• Komut Seti: Belirli bir merkezi işlem birimine ait farklı
tipte talimatların bir araya gelmesinden oluşmuş talimat
• Komut Yapısı: MİB’in işlemi gerçekleştirebilmesi için
her talimatın içermesi gereken bilgiler vardır.
• Bu bilgiler iki ana bileşen içinde toplanır:
—İşlem kodu - Opcode (Operation code) :
gerçekleştirilecek işlemin ne olduğunu tanımlar.
—İşlenen - Operand : İşlem kodu ile bildirilen işlemin
işleyeceği verinin nerede olduğunu gösteren talimat
bölümüdür.
– Kaynak işlenenkaydedici, bellek, G/Ç
– Sonuç işlenenkaydedici, bellek, G/Ç
– Bir sonraki komut kontrol sonucu program akışının
değişmesi gerektiği durumlarda yürütülecek bir sonraki
talimatın adresidir.
Komut Döngüsü/Çevrimi
(Instruction Cycle)
• Bilgisayarın yerine getirmesi gerek en temel fonksiyon, bellekte
yüklü komutlardan oluşan bir kümenin işletimidir.
• Komutların işlenmesi iki adımda olur:
— İşlemci komutları birer birer okur (fetch)
— herbir komutun kodu çözülerek (decode) sırasıyla yürütülür
(execute).
— Bazen komut kodu çözülmesi ve komut yürülmesi adımları ayrı
ayrı da ele alınabilir.
• Bu iki adıma komut döngüsü (instruction cycle)
• Programın işletimi, tekrarlı bir şekilde komutun alınması ve
işlenmesi şeklinde olur. Komutların işletimi komutun doğasına bağlı
olarak birkaç işlemden oluşabilir.
7
Getirme Döngüsü (Fetch Cycle)
• Program Sayacı (PC) yürütülecek bir sonraki komutun
adresini saklar.
• Bu adres, bellek adres kaydedicisine (MAR) konur.
• İşlemci, PC tarafından MAR’a konan adresteki talimatı
ara bellek kaydedicisine (MBR) getirir.
• PC içeriği bir arttırılır
—Aksi söylenmediği müddetçe
• Getirilen Talimat, talimat kaydedicisine (IR) kodunun
çözülmesi için yüklenir.
• İşlemci talimatı yorumlar ve işlemi gerçekleştirmek için
gerekli adımları yerine getirir.
• Bu aşama bazen kod çözme döngüsü(decode cycle)
olarak da isimlendirilir.
Yürütme Döngüsü (Execute Cycle)
• İşlemci-Bellek
—Veri transferi MİB ve ana bellek arasında olabilir.
• İşlemci – G/Ç
—Veri transferi MİB ve G/Ç birimleri arasında olabilir.
• Veri İşleme
—Veri üzerinde bazı aritmetik ve mantık işlemleri
gerçekleştirilebilir.
• Kontrol
—İşlenen talimatların sırasında değişiklik yapılabilir.
—Jump, call v.b gibi
• Yukarıdaki işlemlerin birleşimi
8
Komut ÇevrimiDurum Diagramı
Kesmeler
• İşlemin normal yürütülme sırasının diğer modüller
(örneğin G/Ç) tarafından kesintiye uğratarak
değiştirilmesi işlemidir.
• Program kesmeleri
— e.g. taşma, sıfıra bölme
• Zamanlayıcı kesmeleri
— MİB içinde bulunan zamanlayıcılar tarafından üretilir.
— Çok görevlilikte görev paylaşımı için kullanılır.
• G/Ç kesmeleri
— G/Ç denetleyicileri tarafından üretilir.
• Donanım kesmeleri
— e.g. Bellek parite hatası, pil uyarısı, disk okuma hatası
9
Kesme Çevrimi
• Komut çevrimine eklenir
• İşlemci kesme var mı kontrolü yapar
— Kesme sinyali yoluyla belirtilir.
• Eğer kesme isteği yoksa bir sonraki komut yürütülür.
• Eğer bekleyen kesme varsa:
— Aktif program yürütülmesi askıya alınır
— Kaydedici içerikleri saklanır (programa ait yürütülecek sıradaki
talimat adresi belleğe (STACK-YIĞIN) alınır)
— PC kaydedicisine yeni adres değeri (kesme servis programının
bulunduğu bellek adresi) yüklenir.
— Kesme için gerekli işlemler yürütülür.
— Kaydedici içerikleri geri alınır ve askıya alınan program kaldığı
yerden yürütülmeye devam edilir.
Kesmeler Yoluyla Kontrol Transferi
10
Kesme Döngüsü- Durum Diagramı
Çoklu Kesmeler
• Yeni gelen kesmeler pasifleştirilir.
—İşlemci bir kesmeye ait işlemi gerçekleştirirken diğer
kesmeleri pasifleştirir.
—Kesmeler bekleme durumuna alınır ve ilk kesme
işlemi tamamladıktan sonra askıda olan kesme var mı
kontrolü yapılır.
—Askıdaki kesmeler geliş sırasına göre ele alınarak
işlenir.
11
Çoklu Kesmeler
• Öncelik sırası tanımlanır. (Önceliklendirme)
—Düşük öncelikli kesmeler daha yüksek öncelikli
kesmeler tarafından kesilebilir.
—Bir kesme çalışırken, yeni gelen kesmenin önceliği
daha düşükse yeni gelen beklemeye alınır.
—Bir kesme çalışırken yeni gelen daha öncelikli ise
çalışan kesme olduğu yerde askıya alınır ve yeni
gelen kesme işlenir.
—Yüksek öncelikli kesmenin işletilmesi tamamlandıktan
sonra bir önceki kesmenin işletilmesine geri dönülür.
Çoklu Kesmeler - Sıralı
12
Çoklu Kesmeler– Öncelikli
Örnek Program İşletimi
• Komutlar ve data 16 bit uzunlugunda.
— 4 bit işlem kodu için toplam 16 işlem kodu olabilir.
— 2^12 = 4K lık bellek doğrudan adreslenebilir
• MİB Kaydedicileri:
— PC ,I/O ve geçici depolama birimi AC(akümülatör)
• İşlem kodlarının bir kısmı:
— 0001 = bellekten akümülatöre yükle
— 0010= akümülatörden belleğe yükle
— 0101= bellek ile akümlatörü topla ve sonucu akümülatöre yükle
13
Örnek Program İşletimi
• Belleğimizde 2 byte lık veriyi tuttuğumuzu düşünelim.(her bellek
gözünde)
• Programımızın da, belleğin 940 ve 941 nolu gözündeki verileri
toplanması istensin.Ve sonucunun da yine 941 nolu bellek gözünde
konulması istensin.
• PC ninde başlangıçtaki değerinin 300 ayarlandığı düşünülsün.
• 3 komut nedeniyle 3 getirme ve 3 yürütme çevrimi olacaktır.
• Aslında MAR ve MBR gerekli fakat bunları basitleştirmek adına
önemsemiyoruz.
Örnek Program İşletilmesi
14
Adresleme Modu
• Adresleme Modu; verinin komutla birlikte ne
şekilde verileceğini gösteren bir yöntem şeklidir.
• Bir komutun gerektirdiği işlemin yürütülmesi
sırasında VERİLERİN bir bellek gözünden yani
bir ADRESTEN alınması veya bir ADRESE
yüklenmesi ya da akümülatör ve kaydediciler
arasında değiştirilmesi için değişik yöntemler
uygulanmaktadır.
Doğal Adresleme
Mikroişlemcilerde, özellikle KAYDEDİCİLER arasında VERİ
TRANSFERİ için uygulanan HIZLI bir adresleme türüdür.
Kaydediciler ile akümülatör ve bellek arasında da aynı
uygulama yapılır.
Örneğin, iki kaydedici arasındaki VERİ transferi için:
• Komutun, “OP CODE”dan sonra gelen adres bölümünde, transferi
yapılacak VERİNİN, çıkacağı (source) ve gideceği (destination) devrelerin
ADLARI bulunmaktadır.
15
Canlandırmalar
• http://www.eastaughs.fsnet.co.uk/cpu/executio
n-fetch.htm
Hemen Adresleme (Veri Komutla Birlikte
Verilir)
16
Doğrudan Adresleme (Komutla Birlikte
Veri Adresi Verilir)
Dolaylı Adresleme (Verinin Bulunduğu
Adres Diğer Bir Kaydedici İçerisindedir)
17
Getirme Çevrimi
18
Download

BM_06hafta06-talimatlarinYurutulmesi