Bilgisayar Organizasyonu ve Temel İşlemci Yapısı
Sayısal lojikten yazmaç aktarımlarına, mikroişlemlerden komut çevrimine, mikroprogramlı denetimden CPU organizasyonuna uzanan bilgisayar organizasyonu ders notları.
Bu metin, bilgisayar organizasyonu dersinde 2013-2015 döneminde tuttuğum notların genişletilmiş sürümüdür. İlk notlardaki yazmaç aktarımı, mikroişlem ve temel bilgisayar modeli sırasını korudum; daha sonraki gözden geçirmelerde kavramları güncel işlemci terminolojisiyle karşılaştırarak belirgin hataları düzelttim. Eğitim amaçlı temel bilgisayar modeli ile gerçek bir modern mikro mimari aynı şey değildir; metin boyunca bu ayrımı özellikle korudum.
Ünite 1: Sayısal Lojik Devrelerin Temelleri
Sayısal bilgisayar
Sayısal bilgisayar, bilgiyi ayrık sembollerle temsil eden ve bu bilgi üzerinde program tarafından belirlenen işlemleri gerçekleştiren bir sistemdir. Güncel bilgisayarların temel fiziksel gösterimi ikili düzene dayanır.
İki temel mantık değeri:
0
1olarak gösterilir.
Bu değerler doğrudan belirli bir gerilime eşit değildir. Fiziksel devrede belirli gerilim aralıkları mantıksal 0 ve mantıksal 1 olarak yorumlanır.
Bir bilgisayarın temel işlevsel yapısı şu biçimde özetlenebilir:
Giriş
↓
İşlemci ↔ Bellek
↓
Çıkışİşlemci içinde başlıca:
- aritmetik ve lojik birim,
- yazmaçlar,
- kontrol birimi
bulunur.
Ana bellek hem program komutlarını hem de veriyi saklayabilir. Bu yapı klasik saklı program bilgisayarı düşüncesinin temelidir.
Bilgisayar mimarisi ve organizasyonu
Bilgisayar mimarisi ve bilgisayar organizasyonu yakın fakat aynı kavram değildir.
Bilgisayar mimarisi, yazılım tarafından görülebilen programlama modelini kapsar. Örneğin:
- komut kümesi,
- yazmaçlar,
- veri tipleri,
- komut biçimleri,
- adresleme biçimleri,
- bellek adres uzayı.
Bilgisayar organizasyonu ise bu mimarinin donanımda nasıl gerçekleştirildiğini inceler. Örneğin:
- veri yolları,
- ALU,
- kontrol işaretleri,
- yazmaç bağlantıları,
- bellek arabirimi,
- komut yürütme mikroişlemleri.
Aynı komut kümesi farklı mikro mimarilerle gerçekleştirilebilir. Bu ayrım modern işlemcilerde daha da belirgindir.
Lojik kapılar
Sayısal devrelerin temel işlevsel yapı taşları lojik kapılardır.
Temel işlemler:
AND
OR
NOT
XOR
NAND
NOR
XNORİki girişli AND:
Y = A Byalnız her iki giriş de 1 olduğunda 1 üretir.
OR:
Y = A + Ben az bir giriş 1 olduğunda 1 üretir.
NOT:
Y = A'girişi tersler.
XOR:
Y = A XOR Bgirişler farklı olduğunda 1 üretir.
Doğruluk tablosu
Bir lojik işlevin bütün giriş kombinasyonlarına karşı ürettiği çıkışlar doğruluk tablosuyla gösterilir.
İki giriş için:
| A | B | AND | OR | XOR | | --- | --- | --- | --- | --- | | 0 | 0 | 0 | 0 | 0 | | 0 | 1 | 0 | 1 | 1 | | 1 | 0 | 0 | 1 | 1 | | 1 | 1 | 1 | 1 | 0 |
n ikili giriş için:
2^nfarklı giriş birleşimi bulunur.
Boolean cebri
Boolean cebri ikili değişkenler üzerinde tanımlanan cebirdir.
Temel kurallardan bazıları:
A + 0 = A
A + 1 = 1
A A = A
A 0 = 0
A + A = A
A + A' = 1
A A' = 0
(A')' = AYutma:
A + AB = A
A(A + B) = ADağılma:
A(B + C) = AB + ACve Boolean cebrine özgü diğer dağılım:
A + BC = (A + B)(A + C)şeklindedir.
De Morgan kuralları
De Morgan kuralları:
(AB)' = A' + B'(A + B)' = A'B'biçimindedir.
Bu kurallar özellikle NAND ve NOR tabanlı gerçekleştirimlerde önemlidir.
NAND ve NOR evrensel kapılardır. Yalnız NAND veya yalnız NOR kullanılarak herhangi bir Boolean işlev gerçekleştirilebilir.
Karnaugh haritası
Karnaugh haritası az sayıda değişken içeren Boolean işlevlerini görsel komşulukla sadeleştirmek için kullanılır.
n değişkenli bir işlev için:
2^nhücre bulunur.
Hücrelerin sıralaması Gray kod düzenindedir:
00 01 11 10Komşu hücreler yalnız bir değişkende farklıdır.
Gruplar:
1, 2, 4, 8, ...gibi ikinin kuvveti büyüklüğünde seçilir.
Amaç mümkün olduğunca büyük gruplar kurarak değişen değişkenleri ortadan kaldırmaktır.
Karnaugh haritası küçük işlevler için güçlüdür. Daha büyük sayıda değişkende Quine-McCluskey, Espresso benzeri algoritmalar veya modern sentez araçları kullanılır.
Birleşimsel devreler
Birleşimsel, diğer adıyla kombinasyonel, devrede çıkış yalnız o andaki girişlere bağlıdır:
Y(t) = F(X(t))Devrede geçmiş durumu saklayan bellek elemanı bulunmaz.
Örnekler:
- toplayıcı,
- kod çözücü,
- kodlayıcı,
- çoklayıcı,
- karşılaştırıcı.
Yarım toplayıcı
İki biti toplar.
Girişler:
A, BToplam:
S = A XOR BElde:
C = ABTam toplayıcı
Tam toplayıcı iki bit ile önceki basamaktan gelen eldeyi toplar.
Girişler:
A, B, CinToplam:
S = A XOR B XOR CinElde:
Cout = AB + Cin(A XOR B)n bitlik basit toplayıcı, tam toplayıcıların zincirlenmesiyle oluşturulabilir. Elde bir basamaktan diğerine yayıldığı için bu yapıya ripple-carry adder denir.
Flip-floplar
Flip-flop bir bitlik durum saklayan devredir.
Temel türler:
- SR,
- JK,
- D,
- T.
Modern senkron tasarımda D flip-flop özellikle yaygındır.
D flip-flop için saat kenarında:
Q(next) = Dolur.
JK flip-flop:
| J | K | Sonraki durum | | --- | --- | --- | | 0 | 0 | Koruma | | 0 | 1 | 0 | | 1 | 0 | 1 | | 1 | 1 | Tersleme |
T flip-flop:
T = 0 -> koru
T = 1 -> tersledavranışına sahiptir.
Latch ve flip-flop ayrımı
Latch genellikle seviye duyarlıdır. Enable etkin olduğu sürece giriş değişikliklerine tepki verebilir.
Flip-flop ise çoğunlukla saat işaretinin belirli kenarında durum değiştirir.
Bu ayrım zamanlama analizinde önemlidir.
Kenar tetikleme
Pozitif kenar tetiklemeli flip-flop:
0 -> 1saat geçişinde giriş değerini örnekler.
Negatif kenar tetiklemeli flip-flop:
1 -> 0geçişinde örnekleme yapar.
Gerçek devrede ayrıca:
- setup time,
- hold time,
- clock-to-Q gecikmesi
gibi zamanlama sınırları bulunur.
Ardışıl devreler
Ardışıl devrede çıkış yalnız anlık girişe değil, önceki duruma da bağlıdır:
Q(next) = F(Q, X)Y = G(Q, X)Bu yapı bir durum makinesidir.
Temel tasarım akışı:
Problem
↓
Durumlar
↓
Durum diyagramı
↓
Durum tablosu
↓
Flip-flop seçimi
↓
Uyarma denklemleri
↓
Boolean sadeleştirme
↓
Lojik devreÜnite 2: Sayısal Bileşenler
Tümdevreler
Tümdevre, çok sayıda elektronik elemanın tek yarıiletken yapı üzerinde gerçekleştirilmesidir.
Tarihsel bütünleşme sınıflandırmaları:
- SSI,
- MSI,
- LSI,
- VLSI
olarak kullanılmıştır.
Bu terimler sayısal tasarım tarihini anlamak için yararlıdır. Güncel işlemciler ve bellekler VLSI ölçeğinin çok ötesinde transistor sayıları içerdiğinden eski sayısal sınırlar artık modern teknoloji sınıflandırması olarak kullanılmaz.
Lojik aileleri
Tarihsel ve temel lojik aileler arasında:
- TTL,
- ECL,
- NMOS,
- PMOS,
- CMOS
bulunur.
TTL bipolar transistorlara dayanır.
ECL transistorları doyuma sokmadan yüksek hız hedefleyen tarihsel bir lojik ailesidir.
MOS ailesi alan etkili transistorlara dayanır.
CMOS, N-kanal ve P-kanal MOSFET'leri tamamlayıcı biçimde kullanır ve modern sayısal tümdevrelerin temel teknolojisidir.
CMOS'un dinamik güç bileşeni yaklaşık olarak:
Pdynamic ≈ alpha C V^2 filişkisiyle açıklanabilir.
Burada:
alpha: anahtarlama etkinliği,C: etkin anahtarlanan kapasite,V: besleme gerilimi,f: frekanstır.
Kod çözücü
Decoder, n bitlik giriş kodunu en fazla:
2^nayrı çıkış hattından birine dönüştürür.
Örneğin 2-to-4 decoder:
00 -> Y0
01 -> Y1
10 -> Y2
11 -> Y3seçimini gerçekleştirir.
Decoder:
- adres çözümleme,
- komut kodu çözme,
- aygıt seçme,
- kontrol işareti üretme
işlemlerinde kullanılır.
Kodlayıcı
Encoder, decoder'ın ters yönlü işlevini gerçekleştirir.
2^n girişten aktif olan hattı n bitlik kod olarak üretir.
Basit encoder aynı anda yalnız bir girişin aktif olduğunu varsayar.
Birden fazla giriş etkin olabiliyorsa öncelikli kodlayıcı kullanılır.
Çoklayıcı
Multiplexer, birçok girişten birini seçim hatlarına göre çıkışa aktarır.
2^n veri girişi için n seçim biti gerekir.
2-to-1 MUX:
Y = S'D0 + SD1şeklinde ifade edilir.
MUX yalnız veri seçmek için değil, Boolean işlevlerin gerçekleştirilmesinde ve ortak veri yolu yapılarında da kullanılabilir.
Yazmaç
Yazmaç, birden fazla flip-flopun ortak kontrol altında bir araya getirilmesiyle oluşturulan küçük ve hızlı saklama birimidir.
n bitlik yazmaç:
n bitbilgi tutar.
Yazmaçların tipik kontrol işlevleri:
- yükle,
- temizle,
- artır,
- azalt,
- kaydır.
İşlemci içindeki yazmaçlar ana belleğe göre çok daha düşük erişim gecikmesine sahiptir.
Kaydırmalı yazmaç
Shift register, saklanan bitleri her saat olayında sağa veya sola kaydırabilir.
Örnek:
1011
↓ sağa kaydır
0101Yeni giren bitin değeri kaydırma türüne göre belirlenir.
Kullanım alanları:
- seri-paralel dönüşüm,
- paralel-seri dönüşüm,
- bit kaydırma,
- gecikme,
- bazı aritmetik işlemler.
İki yönlü kaydırmalı yazmaç
İki yönlü kaydırmalı yazmaç:
- sola kaydırma,
- sağa kaydırma,
- paralel yükleme,
- durumu koruma
işlevlerini seçim hatlarıyla gerçekleştirebilir.
Bu tür yapının her bitinde bir MUX kullanılarak sonraki girişin hangi kaynaktan alınacağı seçilebilir.
İkili sayıcı
İkili sayıcı belirlenmiş durum dizisini saat darbeleriyle izler.
Üç bitlik sayıcı:
000
001
010
011
100
101
110
111
000
...şeklinde çalışır.
n bitlik tam ikili sayıcı:
2^nduruma sahiptir.
Eşzamanlı ve dalgalı sayıcı
Dalgalı sayıcıda bir flip-flopun çıkışı bir sonrakinin saatini tetikleyebilir. Gecikmeler basamaklar boyunca yayılır.
Eşzamanlı sayıcıda flip-floplar ortak saat işaretini kullanır. Sonraki durum lojik denklemlerle birlikte hesaplanır.
Yüksek hızlı tasarımda eşzamanlı yaklaşım daha uygundur.
Ana bellek
Ana bellek çok sayıda adreslenebilir bellek sözcüğünden oluşur.
Genel gösterim:
M[address]şeklindedir.
Bir bellek biriminin temel işaretleri:
- adres,
- veri,
- okuma,
- yazma.
RAM
RAM, seçilen konumdaki veriye adres üzerinden erişilebilen ve normal kullanımda okunup yazılabilen bellektir.
İki temel yarıiletken RAM türü:
SRAM: Hücre başına daha fazla transistor kullanır, yenileme gerektirmez, düşük gecikmelidir. Önbelleklerde yaygındır.
DRAM: Daha yoğun saklama sağlar ancak hücrelerin periyodik olarak yenilenmesi gerekir. Ana belleklerde yaygındır.
"Random access" ifadesi adreslenen herhangi bir konuma benzer erişim modeliyle ulaşılabilmesini ifade eder.
ROM ve kalıcı bellek
ROM ailesi tarihsel olarak:
- mask ROM,
- PROM,
- EPROM,
- EEPROM
biçimlerinde ele alınır.
Flash bellek elektriksel olarak silinip yeniden programlanabilen kalıcı yarıiletken bellek ailesidir.
Günümüzde firmware ve kalıcı depolama uygulamalarında klasik ROM sınıflandırmalarının yanında flash tabanlı çözümler yaygındır.
Ünite 3: Veri Gösterimi
Sayı sistemleri
r tabanlı konumsal sayı sisteminde:
(dn ... d1 d0 . d-1 d-2 ...)rsayısının değeri:
sum di r^iile bulunur.
Bilgisayar sistemlerinde en önemli tabanlar:
- 2,
- 8,
- 10,
- 16.
İkili sistem
İkili sistem:
0, 1rakamlarını kullanır.
Örnek:
101101_2değeri:
1x2^5 + 0x2^4 + 1x2^3 + 1x2^2 + 0x2 + 1
= 45_10olur.
Sekizli ve onaltılı gösterim
Bir sekizli basamak üç bite karşılık gelir:
7_8 = 111_2Bir onaltılı basamak dört bite karşılık gelir:
F_16 = 1111_2Bu nedenle uzun ikili diziler daha kısa olarak:
1011 1100 0110_2
=
BC6_16biçiminde yazılabilir.
Kesirli sayı dönüşümü
İkili kesirde basamak ağırlıkları:
2^-1, 2^-2, 2^-3, ...şeklindedir.
Örnek:
0.101_2
=
1/2 + 0/4 + 1/8
=
0.625_10Onluk kesri ikiliye dönüştürmek için kesir kısmı tekrar tekrar 2 ile çarpılabilir. Her adımda oluşan tam kısım sıradaki biti verir.
Bazı onluk kesirlerin sonlu ikili gösterimi yoktur.
ASCII ve karakter kodları
ASCII 7 bitlik bir karakter kodlamasıdır ve 128 kod noktası tanımlar.
Modern metin sistemlerinde Unicode temel standarttır. Unicode kod noktaları:
- UTF-8,
- UTF-16,
- UTF-32
gibi kodlama biçimleriyle saklanabilir.
UTF-8 ilk 128 karakterde ASCII ile uyumludur.
BCD
Binary Coded Decimal, her onluk rakamı ayrı ikili kodla temsil eder.
8421 BCD'de:
59_10
=
0101 1001_BCDolur.
Bu değer saf ikili:
111011_2gösteriminden farklıdır.
BCD onluk basamakların tam korunmasının önemli olduğu belirli uygulamalarda kullanılır.
Tümleyenler
Tabanı r olan sistemde iki önemli tümleyen vardır:
(r - 1) tümleyeni
r tümleyeniİkili sistemde bunlar:
1'in tümleyeni
2'nin tümleyeniolarak adlandırılır.
Bir bit dizisinin 1'in tümleyeni bütün bitlerin terslenmesiyle bulunur.
2'nin tümleyeni:
1'in tümleyeni + 1şeklindedir.
İki'nin tümleyeni
Modern işlemcilerde signed integer gösteriminde standart yaklaşım iki'nin tümleyenidir.
n bitlik signed aralık:
-2^(n-1) ... 2^(n-1)-1olur.
8 bit için:
-128 ... +127Çıkarma işlemi
İki'nin tümleyeniyle:
A - Bişlemi:
A + two_complement(B)biçimine dönüştürülebilir.
Böylece toplama donanımı çıkarma için de kullanılabilir.
Taşma
Signed aritmetikte carry ile overflow aynı kavram değildir.
İki'nin tümleyeninde aynı işaretli iki sayının toplamı karşı işaretli sonuç veriyorsa signed overflow oluşur.
Örnek 8 bit:
01111111 127
00000001 1
--------
10000000 -128 olarak yorumlanırMatematiksel sonuç 128 8 bit signed aralık dışında olduğundan overflow vardır.
Sabit nokta gösterimi
Fixed-point gösterimde ikili noktanın konumu önceden belirlenmiştir.
Örneğin Qm.n biçiminde:
m: tam kısım,n: kesir bitleri
için kullanılabilir.
Sabit nokta:
- öngörülebilir gecikme,
- düşük donanım maliyeti,
- kontrollü hassasiyet
gereken gömülü ve DSP uygulamalarında önemlidir.
Kayan nokta gösterimi
Kayan nokta büyük dinamik aralığı daha az bit ile temsil eder.
IEEE 754 binary32:
1 bit işaret
8 bit üs
23 bit kesirbinary64:
1 bit işaret
11 bit üs
52 bit kesirkullanır.
Normal sayı:
(-1)^s x 1.f x 2^(e-bias)biçiminde yorumlanır.
IEEE 754 ayrıca:
- +0,
- -0,
- +sonsuz,
- -sonsuz,
- NaN,
- subnormal
değerlerini tanımlar.
Kayan nokta aritmetiği reel sayı aritmetiğinin tam karşılığı değildir. Yuvarlama hataları normaldir.
Eşlik biti
Parity, tek bitlik basit hata sezme tekniğidir.
Çift eşlikte toplam 1 sayısı çift tutulur.
Tek eşlikte toplam 1 sayısı tek tutulur.
Eşlik biti:
- tek sayıda bit hatasını sezebilir,
- hatanın yerini belirleyemez,
- genel olarak hatayı düzeltemez,
- çift sayıda bazı bit hatalarını sezemez.
Bu nedenle parity bir hata düzeltme kodu değil, basit hata sezme mekanizmasıdır.
Hata düzeltme yaklaşımı
Daha güçlü kodlarda yalnız hata sezme değil hata konumunu belirleme ve düzeltme de mümkündür.
Hamming kodlarının temel düşüncesi veri bitlerine birden çok bağımsız eşlik denetimi eklemektir.
Kodun minimum Hamming uzaklığı hata sezme ve düzeltme gücünü belirler.
Ünite 4: Yazmaç Aktarımları ve Mikroişlemler
Sayısal bilgisayarın iç yapısı
Bir işlemcinin veri yolu açısından temel bileşenleri:
Yazmaçlar
↓
Veri yolları
↓
ALU
↓
Yazmaçlarşeklindedir.
Kontrol birimi bu yapıların:
- hangi kaynağı okuyacağını,
- hangi işlemi yapacağını,
- sonucun nereye yazılacağını
belirleyen işaretleri üretir.
Yazmaç aktarım dili
Register Transfer Language, Türkçede yazmaç aktarım dili olarak kullanılabilir.
Bir aktarım:
R2 <- R3ifadesiyle gösterilir.
Anlamı:
R3 içeriğini R2'ye aktar.
Koşullu aktarım:
C: R2 <- R3şeklinde yazılabilir.
Anlamı:
if C = 1:
R2 <- R3Aynı saat olayında yapılabilen bağımsız işlemler:
D: R2 <- R3, R4 <- R5biçiminde gösterilebilir.
Mikroişlem
Bir veya birkaç yazmaçtaki bilgi üzerinde tek saat adımında gerçekleştirilebilen temel işleme mikroişlem denir.
Ana gruplar:
- yazmaç aktarımı,
- aritmetik mikroişlem,
- lojik mikroişlem,
- kaydırma mikroişlemi,
- bellek mikroişlemi.
Veri yolu
Birden çok birimin ortak iletim hatlarını paylaşması veri yolu yapısını oluşturur.
Veri yolu:
- veri,
- adres,
- kontrol
işaretlerini taşıyan farklı hat gruplarını içerebilir.
Yazmaçlar arasında ortak veri yolu oluşturmak için:
- MUX,
- üç durumlu tampon,
- doğrudan çok portlu bağlantı
gibi yöntemler kullanılabilir.
MUX tabanlı ortak veri yolu
n adet m bitlik kaynaktan biri seçilecekse her bit konumu için MUX kullanılabilir.
Seçim hatları bütün bitler için ortaktır.
Örneğin:
S = 011belirli bir yazmacı ortak veri yoluna bağlayabilir.
Hedef yazmacın yükleme işareti etkinleştirildiğinde:
Rdest <- busaktarımı tamamlanır.
Üç durumlu tampon
Üç durumlu çıkış:
0
1
Zdeğerlerinden birini alabilir.
Z, yüksek empedans durumudur.
Ortak hatta yalnız bir sürücünün aktif olması sağlanırsa birden çok kaynak aynı fiziksel bağlantıyı paylaşabilir.
Çip içi modern tasarım araçlarında büyük iç üç durumlu ağlar yerine MUX tabanlı yapılar yaygındır. Üç durumlu sürücüler özellikle fiziksel G/Ç arabirimlerinde önemini korur.
Bellek okuma
Adres yazmacı AR, veri yazmacı DR olsun.
Okuma:
DR <- M[AR]şeklindedir.
Burada AR okunacak adresi, DR okunan veriyi temsil eder.
Bellek yazma
Yazma:
M[AR] <- DRşeklinde ifade edilebilir.
Gerçek sistemde bellek arabirimi ayrıca:
- okuma/yazma işareti,
- byte enable,
- hazır/bekle,
- hata
gibi ek protokol işaretleri içerebilir.
Aritmetik mikroişlemler
Temel aritmetik mikroişlemler:
R3 <- R1 + R2
R1 <- R1 + 1
R1 <- R1 - 1
R1 <- R1 - R2gibi işlemlerdir.
Toplama tam toplayıcı hücrelerinin paralel bağlanmasıyla gerçekleştirilebilir.
Toplama ve çıkarma birimi
Çıkarma:
A - B
=
A + B' + 1olduğundan aynı toplayıcı donanımı kullanılabilir.
Kontrol biti SUB ile:
Y = B XOR SUB
Cin = SUBseçilirse:
SUB = 0 -> A + B
SUB = 1 -> A + B' + 1elde edilir.
Artırma ve azaltma
Artırma:
R <- R + 1azaltma:
R <- R - 1işlemleridir.
Program sayacı, yığın işaretçisi ve döngü sayaçları için sık kullanılır.
Lojik mikroişlemler
Bit düzeyinde:
R <- A AND B
R <- A OR B
R <- A XOR B
R <- NOT Aişlemleri yapılabilir.
Her bit konumu bağımsız işlendiği için n bitlik lojik birim n adet tek bitlik hücrenin paralel çalışmasıyla oluşturulabilir.
Bit maskeleme
Belirli bitleri temizlemek:
R <- R AND maskBelirli bitleri kurmak:
R <- R OR maskBelirli bitleri değiştirmek:
R <- R XOR maskile yapılabilir.
Bu işlemler modern sistem programlamada da temel öneme sahiptir.
Kaydırma mikroişlemleri
Temel kaydırmalar:
- lojik sola,
- lojik sağa,
- aritmetik sağa,
- döndürme.
Lojik sağa kaydırmada soldan 0 girer.
Lojik sola kaydırmada sağdan 0 girer.
Signed iki'nin tümleyeni sayıda aritmetik sağa kaydırma işaret bitini korumaya çalışır:
11010000
>> aritmetik
11101000Dil ve ISA düzeyinde kaydırma davranışının kesin tanımı ilgili standarda göre değerlendirilmelidir.
Döndürme
Rotate işleminde çıkan bit diğer uçtan tekrar girer:
10110001
ROR 1
11011000Carry üzerinden döndürme bazı tarihsel ve güncel ISA'larda ayrıca bulunabilir.
ALU
Arithmetic Logic Unit, aritmetik ve lojik işlemleri ortak bir donanımda gerçekleştirir.
Tipik girişler:
A
B
operation
carry-inTipik çıkışlar:
result
carry
zero
sign
overflowALU'nun ürettiği durum bilgileri program durum yazmacında veya bayrak yazmacında tutulabilir.
ALU ile kaydırıcı
Bir veri yolu:
Yazmaçlar
↓
ALU
↓
Kaydırıcı
↓
Hedef yazmaçbiçiminde düzenlenebilir.
Bazı mikro mimarilerde ALU ve barrel shifter paralel veya birleşik veri yolu içinde yer alabilir.
Ünite 5: Temel Bilgisayar Yapısı ve Komutların Yürütülmesi
Eğitim amaçlı temel bilgisayar
Bu derste kullanılan temel bilgisayar, işlemci organizasyonunun anlaşılması için tasarlanmış sade bir akümülatör makinesidir.
Bu model güncel x86, Arm veya RISC-V işlemcisinin birebir yapısı değildir. Ancak:
- komut getirme,
- komut çözme,
- efektif adres bulma,
- ALU işlemi,
- bellek erişimi,
- dallanma,
- kesme,
- kontrol işareti üretimi
kavramlarını açık biçimde gösterir.
Temel komut biçimi
16 bitlik eğitim modelinde komut:
I | opcode | address
1 3 12 bitbiçiminde düşünülebilir.
12 bit adres:
2^12 = 4096bellek sözcüğünü adresleyebilir.
I biti bellek referanslı komutlarda:
0 -> doğrudan
1 -> dolaylıadresleme seçimi için kullanılır.
Yazmaçlar
Temel bilgisayarın başlıca yazmaçları:
| Yazmaç | Bit | İşlev | | --- | ---: | --- | | AR | 12 | Bellek adresi | | PC | 12 | Sonraki komut adresi | | DR | 16 | Bellekten okunan/yazılan veri | | AC | 16 | Akümülatör | | IR | 16 | Komut yazmacı | | TR | 16 | Geçici veri | | INPR | 8 | Giriş verisi | | OUTR | 8 | Çıkış verisi |
Ek durum ve kontrol bitleri de bulunabilir.
Program sayacı
Program sayacı:
PCbir sonraki getirilecek komutun adresini tutar.
Komut getirildikten sonra tipik olarak:
PC <- PC + 1yapılır.
Dallanma, alt program veya kesme sırasında PC başka bir adresle yüklenebilir.
Komut yazmacı
Instruction Register:
IRo anda çözümlenen ve yürütülen komutu tutar.
Kontrol birimi:
- opcode,
- adres alanı,
- adresleme biti
gibi alanları IR'den alır.
Akümülatör
Akümülatör tabanlı yapıda birçok aritmetik ve lojik işlem bir operandı AC'de tutar:
AC <- AC + M[EA]Bu yaklaşım donanımı sadeleştirir ancak güncel genel amaçlı yazmaç organizasyonlarına göre daha fazla veri hareketi gerektirebilir.
Doğrudan adresleme
Komutun adres alanı efektif adresi doğrudan verir:
EA = addressÖrnek:
LDA Xanlamı:
AC <- M[X]Dolaylı adresleme
Komutun adres alanı operandın adresinin bulunduğu yeri gösterir:
EA = M[address]Sonra:
operand = M[EA]alınır.
Bir ek bellek erişimi gerektirir.
Komut getirme çevrimi
Temel mikroişlemler:
T0: AR <- PC
T1: IR <- M[AR], PC <- PC + 1
T2: opcode <- decode(IR), AR <- IR(address), I <- IR(I)Bu üç adım:
- komut adresini belleğe sunar,
- komutu getirir,
- program sayacını ilerletir,
- komut alanlarını çözümler.
Modern işlemcilerde fetch, decode ve execution birçok komut için örtüşebilir. Ancak bu temel sıra kavramları açıklamak için geçerlidir.
Dolaylı adres fazı
Bellek referanslı komutta dolaylı adresleme seçilmişse:
AR <- M[AR]ile efektif adres alınır.
Bundan sonra komutun yürütme aşaması başlar.
Bellek referanslı komutlar
Temel eğitim makinesinde tipik komutlar:
AND
ADD
LDA
STA
BUN
BSA
ISZolarak ele alınır.
AND
DR <- M[AR]
AC <- AC AND DRişlemlerini gerçekleştirir.
ADD
DR <- M[AR]
AC <- AC + DR
E <- carryişlemlerini gerçekleştirir.
LDA
DR <- M[AR]
AC <- DRSTA
M[AR] <- ACBUN
Koşulsuz dallanma:
PC <- ARBSA
Branch and Save Return Address, alt program çağrısı için kullanılır.
Temel fikir:
M[AR] <- PC
AR <- AR + 1
PC <- ARDönüş adresi bellekte saklanır ve yürütme alt programın ilk komutundan devam eder.
Modern ISA'larda dönüş adresi çoğunlukla yazmaç veya yığın kullanılarak korunur.
ISZ
Increment and Skip if Zero:
DR <- M[AR]
DR <- DR + 1
M[AR] <- DR
if DR == 0:
PC <- PC + 1Bu komut basit döngü yapılarında kullanılabilir.
Yazmaç referanslı komutlar
Opcode alanının özel değeri, adres alanındaki bitlerin yazmaç üzerinde doğrudan işlem seçmesini sağlayabilir.
Klasik eğitim modelindeki örnekler:
CLA AC'yi temizle
CLE E bitini temizle
CMA AC'yi tümle
CME E bitini tümle
CIR sağa döndür
CIL sola döndür
INC AC'yi artır
SPA AC pozitifse atla
SNA AC negatifse atla
SZA AC sıfırsa atla
SZE E sıfırsa atla
HLT durBu komutlar güncel işlemci komutlarıyla birebir eşleştirilmemelidir. Ama veri yolu ve kontrol mantığını öğretmek için uygundur.
Giriş çıkış komutları
Temel modelde tipik:
INP
OUT
SKI
SKO
ION
IOFkomutları bulunur.
INP giriş yazmacından veri alır.
OUT akümülatörün düşük bitlerini çıkış yazmacına aktarabilir.
ION ve IOF kesme etkinliğini denetler.
Komut çevrimi
Genel olarak:
Getir
↓
Çöz
↓
Efektif adresi belirle
↓
Yürüt
↓
Kesme denetimi
↓
Sonraki komutçevrimi kullanılır.
Güncel işlemcilerde bu aşamalar pipeline, out-of-order execution, speculative execution ve önbellek hiyerarşileri nedeniyle fiziksel olarak çok daha karmaşıktır. ISA açısından görülen sonuç yine komutların tanımlanan mimari etkiyi üretmesidir.
Zamanlama ve kontrol
Temel bilgisayarda zaman adımları:
T0, T1, T2, ...biçiminde oluşturulabilir.
Bir sıra sayacı ve decoder, her saat aralığı için farklı zaman işareti üretebilir.
Kontrol işlevi kabaca:
control =
f(opcode, I, flags, timing)şeklinde düşünülebilir.
Donanımsal kontrol
Hardwired control:
- decoder,
- kapılar,
- flip-floplar,
- durum mantığı
ile doğrudan gerçekleştirilir.
Avantajları:
- düşük kontrol gecikmesi,
- özel optimizasyon olanağı.
Dezavantajı:
- karmaşık tasarımın değiştirilmesinin zor olmasıdır.
Kesme
Kesme, normal komut akışının bir olay nedeniyle geçici olarak başka bir işleyiciye yönlendirilmesidir.
Temel süreç:
Normal program
↓
Kesme isteği
↓
Mimari durumun gerekli kısmını koru
↓
Kesme servis rutinine git
↓
Olayı işle
↓
Durumu geri yükle
↓
Programa dönKesme ile polling arasındaki temel fark, işlemcinin aygıt durumunu sürekli sorgulamak zorunda olmamasıdır.
Kesme bağlamı
Modern sistemlerde kesme sırasında hangi durumun otomatik, hangisinin yazılımla saklanacağı ISA ve işletim sistemi sözleşmesine bağlıdır.
Korunabilecek durumlar:
- PC,
- durum yazmacı,
- genel amaçlı yazmaçlar,
- hata kodları.
Kesme, exception ve trap terimlerinin kesin anlamı mimariye göre değişebilir.
Ünite 6: Temel Bilgisayarda Assembly Programlama
Makine dili
Makine dili işlemcinin doğrudan çözümleyebildiği komut bit dizileridir.
Örneğin komut:
opcode + adresleme bilgisi + operand/adres alanışeklinde kodlanabilir.
Makine kodu işlemci mimarisine bağımlıdır.
Assembly dili
Assembly dili makine komutlarına simgesel adlar verir.
Örneğin:
LDA X
ADD Y
STA Zifadeleri doğrudan bit dizilerine göre daha okunabilirdir.
Assembly dili ile makine dili arasında çoğunlukla yakın ilişki vardır ancak her assembly satırının her mimaride tam olarak tek makine komutuna karşılık gelmesi zorunlu değildir. Makrolar ve pseudo-instruction'lar bu ilişkiyi değiştirebilir.
Assembler
Assembly, programlama dilidir.
Assembler, assembly kaynak kodunu makine koduna dönüştüren araçtır.
Girdi:
kaynak programÇıktı:
nesne koduolabilir.
Bu iki terim birbirine karıştırılmamalıdır.
Assembly satırı
Basit eğitim assembler'ında satır:
etiket komut/ifade operand açıklamabölümlerinden oluşabilir.
Örnek:
LDA X
ADD Y
STA Z
X, DEC -20
Y, DEC 40
Z, DEC 0
ENDSembolik adres
Etiket:
X
Y
Z
LOOPgibi isimleri sayısal bellek adresleri yerine kullanmayı sağlar.
Assembler bu sembolleri gerçek adreslere dönüştürür.
Sözde komutlar
Assembler directive veya pseudo-operation, doğrudan CPU tarafından yürütülen makine komutu değildir.
Eğitim assembler'ında:
ORG
END
DEC
HEXgibi ifadeler kullanılabilir.
Örneğin:
ORG 200izleyen kodun yerleşmeye başlayacağı adresi belirler.
İki geçişli assembler
Forward reference nedeniyle sembolün adresi ilk kullanıldığı anda bilinmeyebilir.
İki geçişli yaklaşım:
Birinci geçiş
- kaynak programı tarar,
- location counter tutar,
- etiketleri sembol tablosuna yerleştirir,
- adresleri belirler.
İkinci geçiş
- komut adlarını opcode'a dönüştürür,
- sembolik operandları adreslerle değiştirir,
- nesne kodunu üretir.
Sembol tablosu
Örnek:
| Sembol | Adres | | --- | ---: | | LOOP | 205 | | X | 230 | | Y | 231 |
Assembler ikinci geçişte bu tabloyu kullanır.
Hata tanılama
Assembler en az şu hata sınıflarını bulabilir:
- bilinmeyen komut,
- tanımsız sembol,
- yinelenmiş etiket,
- geçersiz sayı,
- alan taşması,
- sözdizimi hatası.
Modern assembler ve linker araçları ayrıca:
- relocation,
- symbol visibility,
- section,
- object format
gibi kavramlarla çalışır.
Döngü
Assembly düzeyinde yüksek seviyeli for yapısı doğrudan bulunmayabilir.
Tipik döngü:
başlangıç
↓
işlem
↓
sayaç güncelle
↓
koşul
├─ devam
└─ çıkşeklinde dallanma komutlarıyla gerçekleştirilir.
Çarpma ve bölme
Temel eğitim bilgisayarında doğrudan MUL veya DIV komutu bulunmayabilir.
Basit çarpma:
- toplama,
- kaydırma
ile gerçekleştirilebilir.
Bölme:
- çıkarma,
- karşılaştırma,
- kaydırma
işlemlerinden kurulabilir.
Bu durum komut kümesinin hesaplama bakımından yeterli olabileceğini ancak verimli olmayabileceğini gösterir.
Modern genel amaçlı işlemciler çoğunlukla donanımsal çarpma ve bölme komutları sağlar.
Kaydırma ile çarpma
İşaretsiz veya uygun signed sayı için:
x << 1matematiksel aralık taşmıyorsa:
2xile ilişkilidir.
Benzer biçimde sağa kaydırma ikiye bölme ile ilişkili olabilir. Ancak signed negatif değerlerde yuvarlama davranışı ve dil/ISA tanımı dikkate alınmalıdır.
Alt program
Alt program, belirli görevi gerçekleştiren ve çağrıldığı yere geri dönen komut dizisidir.
Gerekli iki temel bilgi:
- alt programın giriş adresi,
- dönüş adresi.
Dönüş adresi:
- belirli yazmaçta,
- bellekte,
- yığında
saklanabilir.
Yinelemeli çağrılar
Tek sabit bellek konumunda dönüş adresi saklayan sistem iç içe veya recursive çağrıları doğrudan desteklemekte zorlanır.
Yığın tabanlı çağrı mekanizması:
push return_address
call
...
pop return_address
returnile iç içe çağrıları doğal olarak destekler.
Parametre aktarımı
Alt programa parametre:
- yazmaç,
- bellek,
- yığın,
- çağrı çerçevesi
üzerinden aktarılabilir.
Modern ABI'ler hangi parametrelerin hangi yazmaçlarda veya yığında taşınacağını belirler.
Giriş çıkış programlaması
Temel bilgisayar modelinde G/Ç:
- veri yazmacı,
- hazır bayrağı,
- kesme etkinleştirme biti
ile modellenebilir.
Polling:
while ready == 0:
bekleşeklindedir.
Kesme tabanlı G/Ç'de işlemci başka iş yaparken aygıt hazır olduğunda kesme oluşturur.
Programlı G/Ç, kesme ve DMA
Üç temel yaklaşım:
Programlı G/Ç: CPU veri aktarımının her adımıyla ilgilenir.
Kesme tabanlı G/Ç: Aygıt hazır olduğunda CPU'yu haberdar eder.
DMA: Veri bloklarının bellek ile aygıt arasında CPU'nun her sözcük aktarımına katılması gerekmeden taşınmasını sağlar.
Bu üçlü, güncel bilgisayar organizasyonunda da temel kavramsal ayrımdır.
Ünite 7: Mikroprogramlı Kontrol
Kontrol biriminin görevi
Kontrol birimi işlemcideki veri yolunun ne yapacağını belirleyen kontrol işaretlerini üretir.
Örneğin:
AR <- PCişlemi için:
- PC çıkışının veri yoluna bağlanması,
- AR yükleme girişinin etkinleştirilmesi,
- uygun saat olayı
gerekir.
Bu işaretlerin üretimi iki temel yöntemle yapılabilir:
- donanımsal kontrol,
- mikroprogramlı kontrol.
Mikroprogramlı kontrol
Microprogrammed control'de kontrol işaretleri bir kontrol belleğinde saklanan mikrokomutlarla tanımlanır.
Temel yapı:
Kontrol adres yazmacı
↓
Kontrol belleği
↓
Mikrokomut yazmacı
↓
Kontrol işaretleriBir mikrokomut işlemci veri yolunda aynı anda yapılabilecek bir veya daha fazla mikroişlemi kodlayabilir.
Kontrol belleği
Kontrol belleği geleneksel eğitim modelinde ROM olarak düşünülebilir.
Her adres bir mikrokomut içerir.
Mikrokomut:
- veri yolu kontrol alanları,
- koşul alanı,
- dallanma alanı,
- sonraki adres
içerebilir.
Kontrol adres yazmacı
Control Address Register:
CARsonraki okunacak mikrokomutun adresini tutar.
Alt program yazmacı
Microprogram kontrolünde:
SBRmikroprogram alt rutininin dönüş adresini tutmak için kullanılabilir.
Bu, normal programdaki call/return kavramının kontrol birimi içindeki karşılığıdır.
Mikrokomut biçimi
Eğitim modelinde mikrokomut:
F1 | F2 | F3 | CD | BR | ADgibi alanlara ayrılabilir.
F1, F2, F3 mikroişlem gruplarını seçer.
CD koşulu seçer.
BR sonraki adres üretme yöntemini seçer.
AD hedef mikrokomut adresini taşır.
Bu özel biçim eğitim mimarisine aittir. Gerçek işlemcilerin mikrocode biçimleri üreticiye özgüdür.
Mikroprogram dizileme
Bir sonraki mikrokomut adresi:
- sıradaki adres,
- koşullu hedef,
- komut opcode'undan eşlenen rutin,
- alt rutin dönüş adresi
gibi kaynaklardan seçilebilir.
Bu işlem microsequencing olarak adlandırılır.
Mapping
Makine komutunun opcode'u ilgili mikroprogram rutininin başlangıç adresine eşlenebilir.
Kavramsal olarak:
opcode
↓ mapping
mikroprogram başlangıç adresişeklindedir.
Fetch mikroprogramı
Komut getirme mikroişlemleri mikroprogramla da tanımlanabilir:
AR <- PC
DR <- M[AR], PC <- PC + 1
AR <- DR(address)
CAR <- routine_address(opcode)Gerçek alan ve veri yolu ayrıntıları tasarıma göre değişir.
Dolaylı adres rutini
Dolaylı adresleme için:
AR <- M[AR]mikroişlemiyle efektif adres elde edilir.
Birden fazla makine komutunun aynı dolaylı adres rutinini kullanması mikroprogram paylaşımına örnektir.
ADD mikroprogramı
Basit ADD:
DR <- M[AR]
AC <- AC + DRişlemlerini gerçekleştiren mikrokomut dizisiyle tanımlanabilir.
Son mikrokomut yeni makine komutunu almak üzere fetch rutinine döner.
Mikroprogram alt rutini
Ortak mikroişlem dizileri mikroprogram alt rutini olarak kullanılabilir.
Çağrıda:
SBR <- return_microaddress
CAR <- subroutine_addressdönüşte:
CAR <- SBRmantığı uygulanabilir.
Yatay ve dikey mikroprogramlama
Yatay mikrokomut çok sayıda kontrol bitini doğrudan veya az kodlanmış biçimde içerir.
Avantajı:
- aynı anda çok sayıda mikroişlem,
- düşük decode gecikmesi.
Dezavantajı:
- geniş kontrol sözcüğü.
Dikey mikrokomut daha yoğun kodlanır.
Avantajı:
- daha dar kontrol belleği.
Dezavantajı:
- ek çözme mantığı,
- daha düşük doğrudan paralellik.
Donanımsal ve mikroprogramlı kontrol karşılaştırması
| Özellik | Donanımsal | Mikroprogramlı | | --- | --- | --- | | Temel yapı | Mantık devresi | Kontrol belleği | | Değişiklik | Zor | Görece kolay | | Kontrol gecikmesi | Genellikle düşük | Kontrol belleği erişimi içerir | | Karmaşık ISA | Tasarım zorlaşabilir | Mikrocode ile düzenlenebilir | | Basit pipeline | Uygun | Uygulamaya bağlı |
Modern işlemciler bu ayrımı mutlak biçimde kullanmak zorunda değildir. Aynı çekirdekte donanımsal decode, mikro-op üretimi ve mikrocode mekanizmaları birlikte bulunabilir.
Ünite 8: Merkezi İşlem Birimi
CPU organizasyonu
CPU temel olarak:
Yazmaç dosyası
↓
ALU
↓
Yazmaç dosyasıveri yolu ile kontrol biriminden oluşur.
Akümülatör tabanlı tasarım tek ana çalışma yazmacına ağırlık verir.
Genel amaçlı yazmaç organizasyonunda birden çok yazmaç işlem operandı olarak kullanılabilir.
Genel amaçlı yazmaç organizasyonu
Birden çok yazmaç:
R0
R1
R2
...
Rnbir yazmaç dosyası oluşturabilir.
İki kaynak ve bir hedef kullanan işlem:
R5 <- R2 + R3için:
R2A girişine,R3B girişine,- ALU
ADDişlemine, - sonuç
R5yazma girişine
seçilir.
Kontrol sözcüğü
Basit genel yazmaç organizasyonunda kontrol sözcüğü:
SELA
SELB
SELD
OPRalanlarından oluşabilir.
Burada:
SELA: ilk kaynak yazmacı,SELB: ikinci kaynak yazmacı,SELD: hedef yazmacı,OPR: ALU/kaydırma işlemini
seçer.
Bu düşünce modern işlemcideki register specifier ve function alanlarının donanımsal karşılığıdır.
Yazmaç dosyası
Modern register file genellikle:
- birden çok okuma portu,
- bir veya daha fazla yazma portu
içerebilir.
İki kaynaklı bir ALU komutu için iki okuma portu doğal bir düzenlemedir.
Daha fazla port:
- alan,
- güç,
- gecikme
maliyetini artırır.
Yığın organizasyonu
Stack son giren ilk çıkar davranışına sahiptir:
LIFOTemel işlemler:
PUSH
POPYığının tepesini:
SPyığın işaretçisi gösterir.
Yığının büyüme yönü mimari sözleşmeye göre artan veya azalan adresler olabilir.
PUSH
Azalan adresli yığında örnek:
SP <- SP - 1
M[SP] <- RPOP
R <- M[SP]
SP <- SP + 1Gerçek sıralama ISA'ya göre değişebilir.
Yığın ve alt program
Yığın:
- dönüş adresleri,
- yerel değişkenler,
- kaydedilen yazmaçlar,
- bazı parametreler
için kullanılabilir.
Fonksiyon çağrısında oluşan düzen stack frame olarak adlandırılır.
Son ekli gösterim
Postfix, ters Polonyalı gösterimde işleç operandlardan sonra gelir.
Örnek:
A B + C *ifadesi:
(A + B) * Canlamına gelir.
Stack makinesinde:
PUSH A
PUSH B
ADD
PUSH C
MULile doğal biçimde değerlendirilebilir.
Komut biçimleri
Komut biçimi şu alanlardan bazılarını içerebilir:
- opcode,
- kaynak yazmaç,
- hedef yazmaç,
- immediate değer,
- adresleme modu,
- displacement.
Komut genişliği:
- sabit,
- değişken
olabilir.
RISC-V temel komut kümeleri sabit 32 bit komut biçimlerini yoğun kullanırken sıkıştırılmış uzantılar daha kısa komutlar ekleyebilir.
x86 değişken uzunluklu komut biçimi kullanır.
Üç adresli komut
ADD R1, R2, R3kavramsal olarak:
R1 <- R2 + R3anlamına gelebilir.
Kaynak operandlar korunur.
İki adresli komut
ADD R1, R2tasarıma göre:
R1 <- R1 + R2anlamına gelebilir.
Bir operand aynı zamanda hedeftir.
Tek adresli komut
Akümülatör mimarisinde:
ADD Xgenellikle:
AC <- AC + M[X]olarak yorumlanır.
Sıfır adresli komut
Stack mimarisinde operand adresleri açıkça belirtilmeyebilir:
ADDyığının tepesindeki iki operandı alıp sonucu tekrar yığına koyabilir.
Adresleme modu
Adresleme modu operandın nasıl bulunacağını tanımlar.
Temel kavram:
EA = effective addressyani efektif adrestir.
Örtük adresleme
Operand komutun anlamından çıkarılır.
Örneğin:
CMAgibi akümülatör komutunda operand açıkça yazılmayabilir.
Immediate adresleme
Operand komutun içindedir:
LOAD R1, #5Burada bellekten operand okumaya gerek yoktur.
Doğrudan adresleme
EA = AKomutun adres alanı operandın adresidir.
Dolaylı adresleme
EA = M[A]Komuttaki alan doğrudan operandı değil, operand adresinin bulunduğu konumu gösterir.
Yazmaç adresleme
Operand doğrudan yazmaçtadır:
ADD R1, R2Bellek erişimi gerektirmez.
Yazmaç dolaylı adresleme
Yazmaç bellek adresini taşır:
LOAD R1, [R2]kavramsal olarak:
R1 <- M[R2]Otomatik artırmalı adresleme
Kavramsal olarak:
R1 <- M[R2]
R2 <- R2 + dişlemlerini birleştirir.
Dizi veya ardışık veri dolaşımında yararlı olabilir.
İndeksli adresleme
EA = base_address + indexşeklindedir.
Dizi elemanlarına erişimde kullanılır.
Gerçek işlemcilerde index ayrıca eleman boyutuna göre ölçeklenebilir.
Baz adresleme
EA = base_register + displacementişlemi özellikle:
- stack frame,
- nesne alanı,
- veri yapısı,
- bellek bölgesi
erişimlerinde yararlıdır.
PC-relative adresleme
EA = PC + displacementşeklindedir.
Özellikle:
- dallanma,
- konumdan bağımsız kod
için önemlidir.
Efektif adres hesabı
Güncel ISA'larda bir bellek operandı:
base + index*scale + displacementgibi daha zengin adres hesaplarını destekleyebilir.
Adresleme modu, yalnız sözdizim özelliği değil veri yolu ve adres üretme donanımının da parçasıdır.
Program kontrol komutları
Program akışını değiştiren komutlar:
- koşulsuz dallanma,
- koşullu dallanma,
- call,
- return,
- trap/system call,
- exception return
gibi sınıflara ayrılabilir.
Durum bayrakları
ALU işlemi sonucunda:
- zero,
- carry,
- sign/negative,
- overflow
gibi durumlar üretilebilir.
Bazı ISA'lar genel amaçlı aritmetik için merkezi flags register kullanır. Bazıları karşılaştırma ve dallanmayı farklı biçimde gerçekleştirir.
RISC yaklaşımı
Reduced Instruction Set Computer yaklaşımının temel düşünceleri tarihsel olarak:
- basit ve düzenli komut biçimleri,
- çok sayıda genel amaçlı yazmaç,
- load/store veri erişimi,
- pipeline'a uygun yürütme
etrafında şekillenmiştir.
Modern RISC-V ve Arm mimarileri bu düşüncenin güncel örnekleridir.
CISC yaklaşımı
Complex Instruction Set Computer olarak sınıflandırılan mimariler:
- daha zengin komut biçimleri,
- değişken uzunluklu kodlama,
- karmaşık adresleme ve işlemler
içerebilir.
x86 bu sınıflandırmanın temel güncel örneğidir.
RISC ve CISC ayrımının sınırı
Güncel mikro mimarilerde RISC/CISC ayrımı tek başına iç donanım karmaşıklığını açıklamaz.
Örneğin x86 işlemciler karmaşık mimari komutları iç mikroişlemlere dönüştürebilir. RISC işlemciler de:
- out-of-order yürütme,
- spekülasyon,
- büyük önbellekler,
- gelişmiş branch prediction,
- vektör birimleri
gibi son derece karmaşık mikro mimari teknikler kullanabilir.
Bu nedenle RISC/CISC esas olarak ISA tasarım geleneğini açıklayan bir çerçeve olarak düşünülmelidir.
Ünite 9: Organizasyondan Modern Mikro Mimariye
Temel modelin güncel karşılığı
Dersin temel bilgisayar modeli:
PC
IR
registers
ALU
memory
controlbileşenlerini açık biçimde gösterir.
Modern işlemci aynı temel kavramları daha fazla paralellik ve ara yapı ile genişletir:
Fetch
↓
Decode
↓
Rename
↓
Schedule
↓
Execute
↓
Memory
↓
RetireBu aşamaların tümü her işlemcide bulunmak zorunda değildir. Ancak güncel yüksek performanslı çekirdeklerde yaygındır.
Pipeline
Pipeline farklı komutların farklı aşamalarını aynı anda çalıştırır.
Basit beş aşamalı model:
IF komutu getir
ID çöz
EX yürüt
MEM bellek
WB geri yazİdeal durumda pipeline komut gecikmesini değil, komut başına ortalama tamamlanma hızını artırır.
Veri tehlikesi
Bir komut önceki komutun sonucuna ihtiyaç duyarsa veri bağımlılığı oluşur.
Örnek:
ADD R1, R2, R3
SUB R4, R1, R5İkinci komut R1 sonucunu bekler.
Basit çözüm:
- stall.
Daha iyi çözüm:
- forwarding/bypassing.
Kontrol tehlikesi
Dallanma komutunda sonraki PC henüz kesin bilinmeyebilir.
Çözümler:
- pipeline bekletme,
- erken branch çözümü,
- branch prediction,
- speculative execution.
Yapısal tehlike
Aynı donanım kaynağına aynı anda birden fazla aşama ihtiyaç duyarsa structural hazard oluşur.
Çözüm:
- kaynak çoğaltma,
- port artırma,
- zamanlama.
Out-of-order yürütme
Komutlar program sırasından farklı bir fiziksel sırada yürütülebilir.
Ama mimari sonuç:
program sırasıile tutarlı görünmelidir.
Bu amaçla:
- register renaming,
- reservation stations/scheduler,
- reorder buffer
benzeri yapılar kullanılabilir.
Yazmaç yeniden adlandırma
WAR ve WAW gibi isim bağımlılıklarını fiziksel yazmaçlarla ortadan kaldırır.
Mimari yazmaç:
R1farklı zamanlarda farklı fiziksel yazmaçlara eşlenebilir.
Önbellek hiyerarşisi
İşlemci ile DRAM arasındaki gecikme farkı önbelleklerle azaltılır.
Tipik yapı:
L1
↓
L2
↓
L3
↓
DRAMBütün işlemciler aynı seviye düzenini kullanmak zorunda değildir.
Temel ilke yerelliktir.
Zamansal yerellik: Yakın zamanda kullanılan verinin tekrar kullanılma olasılığı.
Mekansal yerellik: Bir adrese yakın verinin yakında kullanılma olasılığı.
Sanal bellek
CPU'nun ürettiği sanal adres:
MMU
↓
fiziksel adresdönüşümünden geçebilir.
TLB yakın zamanda kullanılan adres çevirilerini önbelleğe alır.
Sanal bellek:
- süreç izolasyonu,
- koruma,
- esnek adres uzayı
sağlar.
ISA ile mikro mimari ayrımı
ISA programcıya görünen sözleşmedir.
Mikro mimari bu sözleşmeyi gerçekleştiren donanımdır.
Örneğin iki işlemci:
- aynı ISA'yı çalıştırabilir,
- aynı programı çalıştırabilir,
- farklı pipeline,
- farklı cache,
- farklı yürütme birimleri
kullanabilir.
Bu ayrım bilgisayar organizasyonunun en önemli kavramsal sonuçlarından biridir.
Genel Çerçeve
Bilgisayar organizasyonu, lojik kapıdan makine komutuna kadar kesintisiz bir soyutlama zinciridir.
Transistor
↓
Lojik kapı
↓
Birleşimsel / ardışıl devre
↓
Yazmaç, MUX, decoder, ALU
↓
Veri yolu
↓
Mikroişlem
↓
Kontrol birimi
↓
Komut çevrimi
↓
ISA
↓
Assembly
↓
ProgramAlt düzeyde fiziksel devreler bulunur. Üst düzeyde programcı komut kümesini görür.
İki düzey arasında bilgisayar organizasyonu yer alır.
Bir:
ADD R1, R2, R3komutu programcı açısından tek işlemdir.
Donanım açısından ise:
R2'yi oku
R3'ü oku
ALU'ya uygula
ADD işlevini seç
durum işaretlerini üret
sonucu R1'e yazgibi birçok kontrol ve veri yolu işleminin birleşimidir.
Temel bilgisayar modeli bu dönüşümü görünür hale getirir.