İşlemci Nasıl Çalışır: Şemaları Okuma ve Von Neumann İlkeleri
Von Neumann mimarisi, programların ve verilerin tek bir ortak bellekte saklandığı ve işlemcinin bunları sırayla (getirme, çözümleme, yürütme) döngüsüyle işlediği bir bilgisayar yapılandırma ilkesidir. Bu şemayı anlamak ve CPU blok diyagramlarını okuyabilmek, bilgisayarın bilgiyi nasıl işlediğini, performans darboğazlarının neden ortaya çıktığını ve modern çiplerin önceki nesillerden nasıl farklılaştığını kavramanızı sağlar.
Von Neumann Mimarısının Özü
1945 yılında John von Neumann, günümüzdeki çoğu bilgisayar için standart haline gelen bir konsept tanımladı. O zamana kadar makineler genellikle sabit "gömülü" programlara veya veri ile talimatlar için ayrı depolama alanlarına sahipti.
Von Neumann mimarisinin temel ilkeleri şunlardır:
- Tekil Bellek. Hem program komutları hem de işlenen veriler aynı adres alanında bulunur. İşlemci bunları fiziksel olarak ayırt etmez; yalnızca yürütme bağlamına göre ayrıştırır.
- Adreslenebilirlik. Bellek numaralandırılmış hücrelerden oluşur. İşlemci bu hücrelere benzersiz bir adres üzerinden erişir.
- Sıralı Yürütme. Komutlar, sırayı değiştirmek için özel bir talimat (dallanma) olmadıkça art arda yürütülür.
- İkili Kodlama. Tüm bilgiler (hem metin hem de talimatlar) bitler (0 ve 1) şeklinde temsil edilir.
Temel avantaj: Esneklik. Program veriler gibi bellekte saklandığı için değiştirilebilir, diskten yüklenebilir ve ağ üzerinden aktarılabilir. Bilgisayar, tek bir göreve özgü bir hesap makinesi yerine evrensel bir cihaza dönüşür.
Blok Diyagramında İşlemcinin Temel Birimleri
İşlemci şemasını okuyabilmek için "oyuncuları" tanımak gerekir. Basit bir mikrodenetleyiciden modern bir Intel Core'a kadar her CPU blok diyagramı aşağıdaki temel öğeleri içerir:
1. Aritmetik Mantık Birimi (ALU)
Beynin içindeki "beyin". Matematiksel işlemleri (toplama, çıkarma) ve mantıksal karşılaştırmaları (VE, VEYA, DEĞİL) gerçekleştirir. Gerçek hesaplamalar tam olarak burada gerçekleşir.
2. Kontrol Birimi (CU)
Orkestra şefi. Hesaplama yapmaz, veri akışını yönetir. CU, talimatları çözer ve işlemcinin diğer bölümlerine sinyaller gönderir: "bu kaydediciyi aç", "sonucu buraya yaz", "bellekten oku".
3. Kaydediciler (Registers)
İşlemci içindeki son derece hızlı bellek. RAM'den (Rastgele Erişimli Bellek) farklı olarak, kaydedicilere erişim tek bir saat döngüsünde gerçekleşir.
- Akümülatör Kaydedicisi: Ara hesaplama sonuçlarını saklar.
- Program Sayacı (PC): Yürütülecek sonraki talimatın adresini saklar.
- Talimat Kaydedicisi (IR): O anda yürütülmekte olan mevcut komutu saklar.
4. Sistem Veri Yolları (Bus)
Bileşenleri birbirine bağlayan iletken grupları:
- Veri yolu: Bilginin kendisi üzerinden akar.
- Adres yolu: Erişilmesi gereken bellek hücresinin numarasını taşır.
- Kontrol yolu: "Okuma", "yazma", "kesme" gibi sinyalleri iletir.
Blok Diyagramını Nasıl Okumalı: Fetch-Decode-Execute Döngüsü
İşlemci şemasını okumak, tek bir talimatın yolunu takip etmek anlamına gelir. Bu yola makine döngüsü denir. Herhangi bir diyagramda bu, kapalı bir döngü veya boru hattı (pipeline) olarak görünür.
Adım 1: Getirme (Fetch)
İşlemci, sonraki talimatın adresini öğrenmek için Program Sayacına (PC) bakar. Bu adres, adres yolu üzerinden belleğe gönderilir. Bellek, verileri (talimatın kendisini) veri yolu üzerinden geri gönderir ve bunlar Talimat Kaydedicisine (IR) yüklenir. Program sayacı artırılır.
Adım 2: Çözümleme (Decode)
Kontrol Birimi, talimat kaydedicisindeki kodu analiz eder. Hangi işlemin yapılması gerektiğini (örneğin toplama) ve bunun için hangi verilere ihtiyaç duyulduğunu (hangi kaydedicilerden veya bellek hücrelerinden) belirler.
Adım 3: Yürütme (Execute)
Hesaplama gerekiyorsa, veriler ALU'ya gönderilir. Bellekten veri okunması gerekiyorsa, RAM'e bir istek oluşturulur. İşlem mantıksal veya veri taşıma ise, kaydediciler içinde gerçekleştirilir.
Adım 4: Sonucun Yazılması (Write-back)
ALU'nun çalışma sonucu tekrar bir kaydediciye veya ana belleğe kaydedilir.
Şema okuma ipucu: Her zaman "Bellek" bloğundan "Çözümleyici" veya "Kontrol Birimi" bloğuna giden okları arayın. Bu, talimat akışıdır. "Kaydediciler" ve "ALU" arasındaki oklar ise veri akışını temsil eder.
Von Neumann Sorunu ve Harvard Mimarisi
Klasik Von Neumann şemasının, "Von Neumann Darboğazı" olarak bilinen temel bir sınırlaması vardır.
Veriler ve talimatlar bellekle iletişim kurmak için aynı veri yolunu kullandığından, işlemci aynı anda hem bir komutu okuyamaz hem de verilerle çalışamaz. Her an ya talimat teslimi ya da veri okuma/yazma işlemi için veri yolu meşgul olur. Bu durum hızı sınırlar.
Yaklaşımların Karşılaştırılması
| Özellik | Von Neumann Mimarisi | Harvard Mimarisi |
|---|---|---|
| Bellek | Kod ve veri için tekil | Kod ve veri için ayrı |
| Veri Yolları | Tek ortak veri/adres yolu | Kod ve veri için bağımsız yollar |
| Hız | Daha düşük (veri yolu erişim çatışması) | Daha yüksek (paralel erişim) |
| Esneklik | Yüksek (programları değiştirmek kolay) | Daha düşük (kendini değiştiren kod daha zor) |
| Kullanım Alanı | PC'ler, sunucular, akıllı telefonlar | Mikrodenetleyiciler, DSP, CPU'daki L1 önbellekler |
Modern kişisel bilgisayarlarda hibrit bir yaklaşım kullanılır. Ana RAM düzeyinde Von Neumann ilkesi (evrensellik) geçerlidir. Ancak işlemcinin kendi içindeki Level 1 (L1) önbelleği genellikle L1i (talimatlar için) ve L1d (veriler için) olarak ayrılır; bu da çalışma hızını artırmak için Harvard mimarisi ilkelerini uygular.
Şemanın Evrimi: Basit Diyagramdan Modern Çipe
Modern bir işlemcinin belgelerine bakarsanız, üç bloktan oluşan basit bir şema görmezsiniz. Modern mikro mimari, temel Von Neumann modelini birkaç kilit teknolojiyle karmaşıklaştırmıştır:
-
Boru Hattı (Pipelining). İşlemci, bir talimatın tamamen tamamlanmasını beklemek yerine bir sonrakine başlar. Bir talimat ALU'da yürütülürken, bir sonrakisi zaten çözülüyor ve üçüncüsü bellekten getiriliyor. Bu, fabrikadaki bir üretim bandına benzer.
-
Dallanma Tahmini (Branch Prediction). Kodda bir
if/elsekoşulu varsa, işlemci hangi komutun sırada olduğunu tahmin etmeye çalışır. Doğru tahmin ederse, boru hattı boşta kalmaz. Yanılırsa, sonuçları silip yeniden başlamak gerekir (hata cezası). -
Çok Çekirdekli Yapı. Tek bir çip üzerinde, her biri kendi ALU'suna ve önbelleğine sahip ancak ortak bellek ve kontrolcüyu paylaşan birkaç bağımsız yürütme birimi (çekirdek) bulunur.
Mimariyi Öğrenirken Sık Yapılan Hatalar
- Komut Seti Mimarisi (ISA) ile mikro mimari arasındaki karışıklık. ISA (örneğin x86 veya ARM), işlemcinin anladığı talimat listesidir. Mikro mimari ise bu talimatların çip içinde nasıl fiziksel olarak uygulandığıdır (kaç transistör olduğu, boru hattının nasıl yapılandırıldığı). İki işlemci aynı ISA'yı destekleyebilir ancak tamamen farklı iç şemalara sahip olabilir.
- Önbelleğin rolünün göz ardı edilmesi. Yeni başlayanlar genellikle işlemcinin doğrudan RAM ile çalıştığını düşünür. Aslında zamanın %90'ında L1/L2 önbelleği ile iletişim halindedir. RAM'e erişim gecikmesi, bir kaydediciye erişimden yüzlerce kat daha fazladır.
- Saat frekansını hızla eşitlemek. Frekans (Hz), senkronizatörün saniyede kaç temel işlem yapabileceğini gösterir. Ancak gerçek hız, mikro mimarinin kalitesi tarafından belirlenen ve her saat döngüsünde yürütülen talimat sayısı (IPC) ile ilişkilidir.
SSS
Von Neumann ile Harvard arasındaki temel fark nedir? Von Neumann'da program ve veri belleği ortaktır, veri yolları ortaktır. Harvard'da bunlar fiziksel olarak ayrılmıştır, bu da talimat ve verinin aynı anda okunmasına olanak tanır.
Neden PC'lerde saf Harvard mimarisi kullanılmaz? Bu, genel amaçlı programlama için uygun değildir. PC'lerde programların ve verilerin boyutu dinamik olarak değişir ve işletim sistemi için tek bir bellek alanını yönetmek daha kolaydır. Harvard mimarisi, görevlerin sabit olduğu yerlerde (gömülü sistemler, sinyal işleme) etkilidir.
"Von Neumann Darboğazı" nedir? Tek bir ortak veri yolunun kullanılması nedeniyle işlemci ve bellek arasındaki veri alışveriş hızındaki sınırlamadır. İşlemci, yavaş RAM'den veri beklerken sık sık boşta kalır.
ALU varken Kontrol Birimine neden ihtiyaç duyulur? ALU sadece hesap yapar. Sırada neyin hesaplanacağını ve sayıların nereden alınacağını bilmez. Kontrol birimi programı yorumlar ve ALU, bellek ve giriş-çıkış dahil olmak üzere diğer tüm birimlerin çalışmasını koordine eder.