Bölüm 1.3: Bilgisayarlar
Giriş
Öğrenme Çıktıları
Sınırlı bit sayısının sonuçlarını (negatif sayılar, taşma, kayan nokta) açıklamak.
ASCII, Unicode ve dizgi kavramlarını ayırt etmek.
Saklanan program ve getir–çöz–yürüt döngüsünü açıklamak.
CPU, bellek, yazmaç ve veri yolu ilişkisini yorumlamak.
Giriş
Bilgisayarın Temel Parçaları
Komutları yürütür.
Veri ve komutları saklar.
Dış dünya ile veri alışverişi sağlar.
Veri Temsili
Bilgiden Bitlere
Sayılar, harfler, görüntüler ve program komutları bellekte bit dizileri olarak saklanır. Bit dizisinin anlamını veri tipi ve kodlama belirler.
Veri Temsili · Adım adım
Taban Kavramı
| Sistem | Taban | Rakamlar | Örnek |
|---|---|---|---|
| İkili | 2 | 0–1 | 1101₂ |
| Sekizli | 8 | 0–7 | 15₈ |
| Onluk | 10 | 0–9 | 13₁₀ |
| Onaltılık | 16 | 0–9, A–F | D₁₆ |
45₁₀ = 101101₂. Sekizli ve onaltılık tabanlar, uzun ikili sayıları kısa yazmanın yoludur.
8 = 2³ olduğundan bitler sağdan üçerli gruplanır: 101 101 → 55₈.
16 = 2⁴ olduğundan dörderli gruplanır: 0010 1101 → 2 ve 13 (D) → 2D₁₆.
Veri Temsili
Negatif Tam Sayılar
Modern bilgisayarlar negatif tam sayıları çoğunlukla ikiye tümleyen gösterimle saklar.
Pozitif ve negatif sıfır ayrımı oluşmaz.
Toplama devreleri pozitif ve negatif sayılarda aynı kuralları kullanabilir.
−2ⁿ⁻¹ ile 2ⁿ⁻¹−1 arasındadır.
8 bit: −128 … 127Veri Temsili · Adım adım
İkiye Tümleyen: −5 Nasıl Yazılır?
8 bitte +5 = 00000101. −5'i bulmak için iki adım yeterli.
1. Tüm bitleri ters çevir (0 ↔ 1): 11111010. Buna birler tümleyeni denir.
2. Sonuca 1 ekle: 11111010 + 1 = 11111011 = −5. En soldaki 1, sayının negatif olduğunu gösterir.
Kontrol: 00000101 + 11111011 = 100000000. 9. bit 8 bite sığmaz ve atılır → 0. Toplama devresi negatifler için ayrıca bir şey yapmaz.
Veri Temsili · Adım adım
Çıkarma Aslında Toplamadır: 5 − 9
İşlemcide ayrı bir çıkarma devresi gerekmez: a − b = a + (−b). Önce b'nin ikiye tümleyeni bulunur.
Bütün bitler ters çevrilir (0 ↔ 1): 11110110.
1 eklenir: 11110111 = −9. (İşaretsiz okunursa 247 = 256 − 9.)
Sıradan ikili toplama: 5 + 247 = 252 = 11111100. 256'ya ulaşmadığı için 9. bite elde çıkmaz.
İşaretli okuma: en soldaki bit 1 olduğundan sayı negatiftir. Büyüklük için yine ters çevir + 1: 00000100 = 4 → s = −4 ✓.
a ← 00000101 ; +5 b ← 00001001 ; +9 ters ← NOT b ; bitleri çevir eksi ← ters + 1 ; −9 s ← a + eksi ; 5 + (−9) yaz(s) ; işaretli oku
Veri Temsili · Adım adım
Taşma: 8 Bitte 200 + 100
8 bit işaretsiz sayı en fazla 255 olabilir. 200 + 100 toplayalım.
Gerçek toplam 300 = 100101100₂: sonuç 9 bit gerektirir.
Yazmaç yalnızca 8 bit tutar; 9. bit (256) kaybolur → sonuç 44. Buna taşma (overflow) denir: 300 − 256 = 44.
İşaretli 8 bitte de 127 + 1 taşar ve −128 olur. Programlarda tip seçimi bu yüzden önemlidir.
Veri Temsili
İşaretli Taşma ve Elde Farkı
| İşlem (8 bit) | İkili toplam | Elde | İşaretli taşma | Sonuç |
|---|---|---|---|---|
| 5 + (−9) | 00000101 + 11110111 = 11111100 | 0 | yok | −4 ✓ |
| (−1) + (−1) | 11111111 + 11111111 = 1 11111110 | 1 | yok | −2 ✓ |
| 100 + 50 | 01100100 + 00110010 = 10010110 | 0 | var | −106 ✗ |
| (−100) + (−50) | 10011100 + 11001110 = 1 01101010 | 1 | var | +106 ✗ |
İşaretsiz yorumda sonucun 8 bite sığmadığını gösterir. İşaretli toplamada elde atılır ve sonuç yine doğru olabilir: (−1) + (−1) = −2.
Aynı işaretli iki sayının toplamı ters işaretli çıkarsa oluşur. Farklı işaretli iki sayının toplamı hiçbir zaman taşmaz.
Java’da (byte) (100 + 50) değeri −106’dır: tam sayı taşması hata vermez, sessizce yanlış sonuç üretir.
Veri Temsili
Kayan Noktalı Sayılar
Çok büyük ve çok küçük değerleri bilimsel gösterime benzer biçimde saklar.
Her ondalık değer sonlu bitlerle tam temsil edilemez.
Hesaplama sonuçlarında küçük farklar oluşabilir.
Kayan noktalı sonuçlar tolerans değeriyle karşılaştırılabilir.
0.1 + 0.2 → 0.30000000000000004 // double ile hesaplanınca
Veri Temsili · Adım adım
0,1 Neden Tam Saklanamaz?
Ondalık kesir ikiliye nasıl çevrilir? Kesri 2 ile çarp, tam kısmı (0 ya da 1) bit olarak al, kalan kesirle devam et.
0,1 × 2 = 0,2 → tam kısım 0.
0,2 × 2 = 0,4 → tam kısım 0.
0,4 × 2 = 0,8 → tam kısım 0.
0,8 × 2 = 1,6 → tam kısım 1, kesir 1 çıkarılarak devam eder.
0,6 × 2 = 1,2 → tam kısım 1, kesir 1 çıkarılarak devam eder. Kesir yine 0,2 oldu: açılım döngüye girdi, hiçbir zaman bitmez.
Veri Temsili
Kayan Noktalı Sayılar (IEEE 754)
- float 32 bittir (1 + 8 + 23); double 64 bittir (1 + 11 + 52). Normal sayılarda baştaki 1 saklanmaz.
- 0,1 = 1,1001 1001 1001…₂ × 2⁻⁴: kesir sonsuza dek tekrarlar, 23 bite sığmayınca yuvarlanır.
- Saklanan değer tam olarak 0,100000001490116119384765625’tir: 0,1’e çok yakın ama eşit değil.
Veri Temsili · Adım adım
−6,25 Sayısını float Olarak Kodlama
float 32 bittir: 1 işaret + 8 üs + 23 kesir. Sayı negatif olduğundan işaret biti 1; geri kalan işlemler 6,25 üzerinde yapılır.
Tam kısım 6 = 110₂; kesir 0,25, “2 ile çarp, tam kısmı al” yöntemiyle 0,01₂ olur ve kesir 0'a iner. 6,25 = 110,01₂: 0,1'in aksine sonlu ve tam.
Bilimsel gösterime benzer biçimde virgül, solunda tek 1 kalacak kadar kaydırılır: 2 basamak sola → 1,1001 × 2².
Üs alanına gerçek üs değil, 127 eklenmiş hâli (sapma, bias) yazılır: 2 + 127 = 129. Böylece negatif üsler de işaretsiz saklanır.
Normal sayılarda baştaki 1 her zaman var olduğu için saklanmaz; yalnızca virgülden sonraki 1001 yazılır, kalan 19 bit 0 ile dolar.
32 bit dörderli gruplanır: 1100 0000 1100 1000 0000 … → C0C80000. Java'da Float.floatToIntBits(-6.25f) bu değeri verir.
x ← −6,25 işaret ← 1 ; negatif ikili ← 110,01 ; 6 = 110, 0,25 = 0,01 norm ← 1,1001 × 2² ; virgül 2 sola üs ← 2 + 127 = 129 ; 10000001 kesir ← 1001 0000… ; baştaki 1 yazılmaz yaz(onaltılık(bitler))
Metin Temsili
ASCII
ASCII, temel Latin harflerini, rakamları, noktalama işaretlerini ve kontrol karakterlerini sayısal kodlarla eşleştirir.
ASCII 7 bitlik bir koddur: 128 karakter (0–127) tanımlar; bir bayt içinde saklandığında en yüksek bit 0’dır.
65
0100000197
0110000148
00110000Kontrol karakteri: 10
00001010Metin Temsili · Adım adım
Bit İşlemleri: Harfin Büyüklüğünü Değiştirme
“G” = 71, “g” = 103: fark 32 = 2⁵. Büyük ve küçük harf yalnızca 5. bitte (sağdan, 0'dan sayarak) ayrılır.
OR: maskede 1 olan bit sonuçta 1 olur, öteki bitler aynen kalır. Büyük harf küçüğe döndü.
AND ters maskeyle: maskedeki bit 0'a çekilir, ötekiler korunur. Küçük harf yeniden büyük oldu.
XOR: maskedeki bit ters çevrilir. Aynı maskeyle ikinci kez XOR, eski değeri geri verir.
Sola kaydırma: her bit bir basamak yükselir, sağdan 0 girer → değer 2 ile çarpılır. Sağa kaydırma (>> 1) 2'ye böler: 71 → 35.
c ← 'G' ; 71 = 01000111 m ← 00100000 ; maske: 5. bit (32) k ← c OR m ; biti 1 yap b ← k AND (NOT m) ; biti 0 yap t ← b XOR m ; biti ters çevir s ← c << 1 ; sola kaydır
Metin Temsili
Unicode
Unicode, farklı yazı sistemlerindeki karakterlere benzersiz kod noktaları atar.
Karakterin evrensel numarasıdır.
A → U+0041Unicode karakterlerini değişken uzunlukta bayt dizileriyle kodlar.
Türkçe karakterler, farklı alfabeler, matematik simgeleri ve emoji.
Aynı kod noktası farklı Unicode dönüşüm biçimleriyle saklanabilir.
Metin Temsili · Adım adım
UTF-8 Kodlama: “ğ”
Unicode, “ğ” harfine U+011F (onluk 287) kod noktasını atar. UTF-8 bu sayıyı baytlara nasıl yazar?
287 ikili yazılır: 00100011111. 7 bite sığmaz (ASCII değil) ama 11 bite sığar → 2 bayt gerekir.
2 baytlık UTF-8 şablonu 110xxxxx 10xxxxxx: 11 bit, 5 + 6 olarak ikiye bölünür.
Bitler şablona yerleşir: 11000100 10011111 = C4 9F. Baştaki 110 ve 10, baytın görevini söyler.
ASCII karakterleri 1 bayttır; Türkçe harfler 2, € 3, emoji 4 bayt tutar. UTF-8 bu yüzden değişken uzunlukludur.
Metin Temsili
Dizgiler
Dizgi (string), sıralı karakterlerden oluşan veri tipidir.
Karakter veya kod birimi sayısı.
İki dizgiyi uç uca ekleme.
Bir karakteri veya alt dizgiyi bulma.
İçerik ve sıralama ilişkisini denetleme.
Veri Temsili
Yapılandırılmış Bilgi
Bitler daha büyük yapılar içinde düzenlenerek anlam kazanır.
- Bir öğrenci kaydı numara, ad ve not alanlarından oluşabilir.
- Dosya biçimi, alanların nasıl sıralandığını ve yorumlandığını tanımlar.
Veri Temsili
Veri Temsilinde Sık Yapılan Hatalar
| Sık yapılan hata | Doğrusu |
|---|---|
| Tabanı yazmadan okumak: “1101 bin yüz birdir” | 1101₂ = 13. Taban alt simgeyle ya da 0b/0x önekiyle belirtilir. |
| 10₁₆'yı on sanmak | 10₁₆ = 16; onaltılıkta on, A ile yazılır. |
| İkiye tümleyende yalnız bitleri çevirmek | 11111010 birler tümleyenidir (−5 değil); 1 eklenince 11111011 = −5. |
| Kayan noktalı sonuçları == ile karşılaştırmak | 0,1 + 0,2 ≠ 0,3; |a − b| küçük bir toleranstan küçük mü diye bakılır. |
| Rakam karakteri ile sayıyı karıştırmak | '7' karakterinin kodu 55'tir; sayısal değeri '7' − '0' = 7. |
| Karakter sayısını bayt sayısı sanmak | UTF-8'de “çağ” 3 karakter, 5 bayttır (ç 2 + a 1 + ğ 2). |
| Elde ile işaretli taşmayı karıştırmak | Elde işaretsiz yorumun, taşma işaretli yorumun sorunudur; biri olurken öteki olmayabilir. |
Bilgisayar Mimarisi
Mantık Kapıları
| A | B | AND | OR | XOR | NOT A |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 |
- AND iki girdi de 1 ise, OR girdilerden en az biri 1 ise 1 verir; NOT girdiyi tersine çevirir.
- XOR (özel veya): girdiler farklıysa 1. Toplayıcıda sonuç basamağını üretir.
Kapılar birkaç transistörden kurulur; işlemcideki tüm işlemler bu temel kapıların birleşiminden oluşur.
Bilgisayar Mimarisi · Adım adım
Yarım Toplayıcı: Kapılardan Toplamaya
Yarım toplayıcı iki tek bitlik sayıyı (A, B) toplar. SUM = A XOR B sonuç basamağını, CARRY = A AND B eldeyi verir. Yalnızca iki kapı yeterlidir.
0 + 0: XOR(0, 0) = 0, AND(0, 0) = 0 → 00₂ = 0.
0 + 1: XOR(0, 1) = 1, AND(0, 1) = 0 → 01₂ = 1. Elde oluşmadı.
1 + 1: XOR(1, 1) = 0 (basamak 0), AND(1, 1) = 1 (elde 1) → 10₂ = 2. Onluk sistemdeki 9 + 1 = 10 gibi, elde bir üst basamağa gider.
Yarım toplayıcı gelen eldeyi almaz. Çok bitli toplama için üç girişli tam toplayıcı gerekir (iki yarım toplayıcı ve bir OR kapısı).
Bilgisayar Mimarisi · Adım adım
Tam Toplayıcı Zinciri: 0110 + 0111
Dört tam toplayıcı (TT) zincir hâlinde bağlıdır: her birinin elde çıkışı soldakinin elde girişidir. 6 + 7 hesaplanacak.
i = 0: a0 = 0, b0 = 1, c = 0 → t = 1, s0 = 1; iki giriş birden 1 olmadığı için elde 0.
i = 1: 1 + 1 + 0 → t = 0, s1 = 0, a1 AND b1 = 1 olduğundan elde 1 (onluktaki 5 + 5 gibi).
i = 2: 1 + 1 + 1 = 3 = 11₂ → s2 = 1, elde yine 1.
i = 3: 0 + 0 + 1 → s3 = 1, elde 0. Son elde 0 olduğu için sonuç 4 bite sığdı.
Sonuç 1101₂ = 13 = 6 + 7 ✓. Elde sağdan sola dalga gibi ilerler (dalgalı elde toplayıcı): her TT bir öncekini bekler, bu yüzden bit sayısı arttıkça gecikme büyür.
a ← 0110 ; 6 b ← 0111 ; 7 c ← 0 ; ilk elde i = 0, 1, 2, 3 için: ; sağdan sola t ← a[i] XOR b[i] s[i] ← t XOR c c ← (a[i] AND b[i]) OR (t AND c) yaz(c, s)
Bilgisayar Mimarisi
Depolanan Program Kavramı
Program komutları ve işlenecek veriler aynı bellekte sayısal kodlar olarak saklanır. İşlemci komutları sırayla okuyup yürütür.
Aynı donanım farklı programlarla farklı görevler yapar.
Davranış donanımı değiştirmeden yazılımla değişebilir.
Tek sistem hesaplama, iletişim ve medya görevlerini yürütebilir.
Bilgisayar Mimarisi
Getir–Çöz–Yürüt Döngüsü
- Program sayacı (PC) sıradaki komutun adresini, komut yazmacı (IR) getirilen komutu tutar.
- Kontrol birimi işlem kodunu (opcode) yorumlar.
- ALU veya başka bir birim işlemi gerçekleştirir.
- Komut ve veri çoğu zaman RAM yerine işlemcideki önbellekten gelir; yazmaç ve önbellek RAM’den çok daha hızlıdır.
Bilgisayar Mimarisi
CPU'nun Temel Bölümleri
Komutların sırasını ve veri hareketini yönetir.
Aritmetik ve mantıksal işlemleri yapar.
İşlem sırasında kullanılan küçük ve hızlı depolama alanlarıdır.
Sık kullanılan veri ve komutları işlemciye yakın tutar.
Bilgisayar Mimarisi · Adım adım
Veri Yolları: Bellekten Okuma
Üç yol CPU'yu bellek ve G/Ç birimlerine bağlar. Örnek: CPU, 1004 adresindeki değeri okuyacak.
Adres yolu: CPU hangi hücreyi istediğini gönderir → 1004. Tek yönlüdür (CPU'dan çıkar).
Kontrol yolu: CPU OKU sinyalini gönderir (yazma olsaydı YAZ). Zamanlama sinyalleri de bu yoldadır.
Veri yolu: bellek hücrenin içeriğini (12) CPU'ya gönderir. Veri yolu çift yönlüdür.
| Yol | Görev |
|---|---|
| Veri yolu | CPU, bellek ve aygıtlar arasında veriyi taşır. |
| Adres yolu | İşlem yapılacak bellek veya aygıt konumunu belirtir. |
| Kontrol yolu | Okuma, yazma ve zamanlama sinyallerini taşır. |
Bilgisayar Mimarisi
Bellek Adresleri
| Adres | İçerik |
|---|---|
| 1000 | LOAD 1004 |
| 1001 | ADD 1005 |
| 1002 | STORE 1006 |
| 1003 | HALT |
| 1004 | 12 |
| 1005 | 8 |
| 1006 | 0 |
- Her bellek hücresinin bir adresi vardır.
- Komutlar adres kullanarak veriye ulaşır.
- Aynı bit dizisi komut veya veri olarak yorumlanabilir.
- HALT olmasaydı CPU 1004'teki 12'yi de komut sanıp çalıştırmaya çalışırdı.
Bilgisayar Mimarisi · Endianness
Çok Baytlı Değerler ve Bayt Sırası
Bellek bayt adreslidir: her adres 1 bayt tutar. 32 bitlik bir int 4 ardışık adrese yayılır; baytların hangi sırayla yazılacağına bayt sırası denir.
En anlamlı bayt en küçük adreste. Ağ protokolleri bu sırayı kullanır (ağ bayt sırası).
En az anlamlı bayt en küçük adreste. x86-64 ve yaygın ARM sistemleri bu sırayla çalışır.
Ham ikili veri ters sıralı makinede okunursa 0x12345678, 0x78563412 olarak görülür.
Tek bayt (ör. ASCII karakter) için sıra sorunu yoktur; UTF-8 de bayt bayt okunduğu için bayt sırasından etkilenmez.
Bilgisayar Mimarisi · Getir–çöz–yürüt adım adım
Programı Adım Adım Çalıştırma
Başlangıç: PC = 1000 (ilk komutun adresi), ACC = 0. CPU döngüye başlar.
Getir: PC'deki 1000 adres yoluna çıkar, komut LOAD 1004 veri yoluyla IR'ye gelir. PC bir artar → 1001.
Çöz: kontrol birimi IR'yi ayırır: opcode LOAD, adres 1004 → bellek[1004] okunup ACC'ye yüklenecek.
Yürüt: 1004 adresi okunur, 12 ACC'ye yüklenir.
Getir: PC'deki 1001 adres yoluna çıkar, komut ADD 1005 veri yoluyla IR'ye gelir. PC bir artar → 1002.
Çöz: kontrol birimi IR'yi ayırır: opcode ADD, adres 1005 → bellek[1005] ACC'ye eklenecek.
Yürüt: 1005 adresindeki 8 okunur, ALU 12 + 8 = 20 hesaplar, sonuç ACC'ye yazılır.
Getir: PC'deki 1002 adres yoluna çıkar, komut STORE 1006 veri yoluyla IR'ye gelir. PC bir artar → 1003.
Çöz: kontrol birimi IR'yi ayırır: opcode STORE, adres 1006 → ACC bellek[1006]'e yazılacak.
Yürüt: ACC'deki 20 veri yoluyla 1006 adresine yazılır.
Getir: PC'deki 1003 adres yoluna çıkar, komut HALT veri yoluyla IR'ye gelir. PC bir artar → 1004.
Çöz: opcode HALT → CPU durur. Sonuç bellek[1006] = 20. 4 komut, 4 getir–çöz–yürüt turu.
1000: LOAD 1004 ; ACC ← bellek[1004] 1001: ADD 1005 ; ACC ← ACC + bellek[1005] 1002: STORE 1006 ; bellek[1006] ← ACC 1003: HALT ; dur 1004: 12 ; veri 1005: 8 ; veri 1006: 0 ; sonuç
Bilgisayar Mimarisi · Getir–çöz–yürüt adım adım
Dallanma: Döngüde PC Nasıl Değişir?
1000: LOAD 1010 ; ACC ← sayaç 1001: JUMPZ 1008 ; ACC = 0 ise atla 1002: ADD 1011 ; ACC ← ACC + toplam 1003: STORE 1011 ; toplam ← ACC 1004: LOAD 1010 1005: SUB 1012 ; ACC ← ACC − 1 1006: STORE 1010 ; sayaç ← ACC 1007: JUMP 1000 ; PC ← 1000 1008: HALT 1010: 2 1011: 0 1012: 1
sayaç 2'den geriye sayar; döngü bitince toplam = 2 + 1 olacak.
LOAD → ACC = 2. JUMPZ: ACC ≠ 0, atlama yok; PC sıradaki 1002'de kalır.
ADD: 2 + 0 = 2; STORE → toplam = 2.
LOAD, SUB, STORE: sayaç 2 − 1 = 1.
JUMP 1000: getirmede 1008 olan PC'nin üzerine 1000 yazılır. Döngü başa döndü.
İkinci tur aynı 8 komutu yürütür: toplam = 1 + 2 = 3, sayaç = 0, yine JUMP.
LOAD → ACC = 0. JUMPZ bu kez atlar: PC ← 1008, döngü gövdesi atlanır.
HALT: CPU durur. 19 komut getirildi (8 + 8 + 3). Java'daki while döngüsü bu tür koşullu ve koşulsuz atlamalara dönüşür.
Bilgisayar Mimarisi
von Neumann Mimarisi
- Program komutları ve veriler ortak bellekte tutulur.
- CPU komutları sırayla işler; dallanma komutları bu sırayı değiştirebilir.
- Komut ve veri aynı yoldan geldiği için CPU–bellek aktarımı performansı sınırlar (von Neumann darboğazı).
Bilgisayar Mimarisi
von Neumann ve Harvard Mimarisi
| Özellik | von Neumann | Harvard |
|---|---|---|
| Bellek | Komut ve veri ortak bellekte | Komut ve veri ayrı belleklerde |
| Yol | Tek yol: komut ve veri sırayla taşınır | İki yol: komut ve veri aynı anda okunur |
| Esneklik | Program, veri gibi yüklenip değiştirilebilir | Program belleği çoğunlukla sabittir (flash) |
| Yaygın kullanım | Genel amaçlı bilgisayarlar | Mikrodenetleyiciler, sinyal işlemciler |
Günümüz işlemcileri ikisini birleştirir: ana bellek ortaktır, çekirdeğe en yakın L1 önbellek ise komut ve veri için ayrıdır (değiştirilmiş Harvard).
Bilgisayar Mimarisi
Komutların Kodlanması
Makine komutu genellikle yapılacak işlemi ve kullanılacak değer veya adresleri belirtir.
İşlemin türünü tanımlar.
ADDİşlemde kullanılacak yazmaç, değer veya adres.
R1, R2Bit alanlarının sayısını ve yerini mimari belirler.
İşlemcinin doğrudan anlayabildiği komutların tamamı.
Bilgisayar Mimarisi · RISC / CISC
Komut Kümesi Tasarımı: RISC ve CISC
| Özellik | RISC | CISC |
|---|---|---|
| Komut kümesi | Az sayıda, basit komut | Çok sayıda, karmaşık komut |
| Komut uzunluğu | Sabit (ör. 32 bit) | Değişken (x86-64’te 1–15 bayt) |
| Bellek erişimi | Yalnızca LOAD / STORE komutları | İşlem komutları doğrudan bellek işleneni alabilir |
| Örnek | ARM, RISC-V | x86-64 |
RISC: bellekteki a = a + b
LOAD R1, a LOAD R2, b ADD R1, R1, R2 STORE R1, a
CISC (x86-64): aynı iş
MOV EAX, [b] ADD [a], EAX
4 komut yerine 2 komut; ama ikinci komut içeride okuma, toplama ve yazma adımlarına bölünür.
Bilgisayar Mimarisi
Mimari Sınırlar
Aynı anda saklanabilecek veri miktarı sınırlıdır.
Her komut zaman ve enerji tüketir.
Sınırlı bit sayısı taşma ve yuvarlama üretebilir.
CPU, bellekteki veriyi beklerken boş kalabilir.
Her problem eşit ölçüde paralelleştirilemez.
Program ve veri aynı sistem kaynaklarını paylaştığı için yalıtım gerekir.
Bilgisayar Mimarisi · Örnek
Performans: Komut Sayısı, CPI ve Saat Hızı
CPU süresi = komut sayısı × CPI ÷ saat hızı
CPI: komut başına ortalama saat turu sayısı
| Program: 2 × 10⁹ komut | Saat hızı | CPI | Süre |
|---|---|---|---|
| İşlemci A | 3 GHz | 1,5 | 2 × 10⁹ × 1,5 ÷ (3 × 10⁹) = 1,0 sn |
| İşlemci B | 4 GHz | 2,5 | 2 × 10⁹ × 2,5 ÷ (4 × 10⁹) = 1,25 sn |
| A, daha iyi derleyiciyle (1,6 × 10⁹ komut) | 3 GHz | 1,5 | 1,6 × 10⁹ × 1,5 ÷ (3 × 10⁹) = 0,8 sn |
Algoritma, derleyici ve komut kümesine bağlıdır.
İç tasarıma ve bellek beklemelerine (önbellek ıskaları) bağlıdır.
Üretim teknolojisi, güç ve ısı sınırlarına bağlıdır.
B’nin saat hızı daha yüksek olduğu hâlde A 1,25 kat hızlıdır: tek bir sayı performansı belirlemez.
Programlama
Programlama Soyutlama Düzeyleri
Her düzey bir alttakinin ayrıntısını gizler. Yüksek düzeyli dil okunabilir ve taşınabilirdir; assembly ve onun ikili karşılığı olan makine komutları belirli bir işlemci mimarisine özgüdür. Örnek satırlar gösterim amaçlıdır.
Programlama · Kodu adım adım çalıştır
Kod İzleme: total = a + b
Tek Java satırı işlemcide üç komuta dönüşür. Bellekte a = 12, b = 8 var.
LOAD: a'nın değeri bellekten yazmaca taşınır → R1 = 12. ALU yalnızca yazmaçlarla çalışır.
ADD: b okunur, ALU 12 + 8 = 20 hesaplar, sonuç R1'e yazılır.
STORE: R1'deki 20 belleğe, total değişkeninin yerine yazılır. Java satırı tamamlandı: total = 20.
// Java: int total = a + b; LOAD R1, a ; R1 ← a ADD R1, b ; R1 ← R1 + b STORE R1, total ; total ← R1
Özet
Bölüm Özeti
- Bilgisayar bütün verileri bit dizileriyle temsil eder.
- İkili gösterim tam sayılar için kesin, kayan nokta bazı ondalıklar için yaklaşık olabilir.
- ASCII ve Unicode karakterleri sayısal kodlarla eşleştirir.
- Saklanan program yaklaşımında komutlar ve veriler bellekte tutulur.
- Mantık kapıları toplayıcı gibi devrelerin yapı taşıdır; ikili toplama tam toplayıcı zinciriyle yapılır.
- CPU, komutları getir–çöz–yürüt döngüsünde yürütür.
- Yüksek düzeyli diller donanım ayrıntılarını soyutlar.
Özet
Kontrol Soruları
- 1101₂ sayısı onluk sistemde kaçtır?
- 8 bit işaretli tam sayı aralığı nedir?
- ASCII ile Unicode arasındaki temel fark nedir?
- Program komutlarının bellekte saklanması hangi avantajı sağlar?
- Veri, adres ve kontrol yollarının görevleri nelerdir?
- Bir assembly komutu ile makine komutu arasındaki ilişki nedir?
Özet
Alıştırmalar
- 8 bit ikiye tümleyen gösterimde 11111110 hangi sayıdır?
- 3F₁₆ sayısını ikili ve onluk sisteme çevirin.
- “ç” (U+00E7) karakterini UTF-8 ile kodlayın; kaç bayt tutar?
- 8 bit işaretsiz yazmaçta 250 + 10 işleminin sonucu ne olur? Neden?
- “Programı Adım Adım Çalıştırma” örneğinde 1004 = 7 ve 1005 = 5 olsaydı program bitince 1006'da ne olurdu? Kaç komut getirilirdi?
int fark = a - b;satırı için LOAD / SUB / STORE ile assembly karşılığını yazın.
Cevapları göster
- Tersi alınıp 1 eklenir: 00000001 + 1 = 00000010 = 2 → sayı −2.
- 3F₁₆ = 0011 1111₂ = 63.
- U+00E7 = 00011100111 → 11000011 10100111 = C3 A7, 2 bayt.
- 260 8 bite sığmaz; 9. bit atılır → 4 (taşma).
- 1006 = 7 + 5 = 12; 4 komut getirilir (LOAD, ADD, STORE, HALT).
LOAD R1, a·SUB R1, b·STORE R1, fark.
Özet
Kaynaklar
- Patterson ve Hennessy, Computer Organization and Design.
- Bryant ve O'Hallaron, Computer Systems: A Programmer's Perspective.
- Unicode Consortium, The Unicode Standard.
- IEEE 754, Floating-Point Arithmetic.