İşlemci Nasıl Yapılanır ve Çalışır: Komuttan Sonuca
İşlemci (CPU), makine komutlarını ana bellekten okuyan, bunların kodunu çözen ve aritmetik veya mantıksal işlemleri gerçekleştiren bilgisayarın hesaplama çekirdeğidir. Basitçe ifade etmek gerekirse: verileri alır, belirlenmiş bir algoritmaya göre işler ve sonucu geri yazar. Tüm bu döngü saniyede milyarlarca kez tekrarlanarak işletim sisteminin, oyunların ve uygulamaların çalışmasını sağlar.
İşlemcinin temel bileşenleri
CPU'nun görevleri nasıl yerine getirdiğini anlamak için onu monolitik bir taş olarak değil, birkaç atölyesi olan karmaşık bir fabrika olarak düşünmek gerekir. Modern bir işlemcinin içindeki kilit unsurlar şunlardır:
- Aritmetik Mantık Birimi (ALU). Bu, sayıları doğrudan toplayan, değerleri karşılaştıran ve mantıksal işlemleri (VE, VEYA, DEĞİL) gerçekleştiren "tezgahtır".
- Kontrol Birimi (CU). Orkestra şefi. Komutu okur, hangi bileşenin bunu uygulayacağını belirler ve senkronizasyon sinyallerini gönderir.
- Yazmaçlar. İşlemcinin kendi içindeki son derece hızlı bellek. ALU'nun şu anda üzerinde çalıştığı veriler burada saklanır. Ana belleğin aksine, yazmaçlara erişim anında gerçekleşir.
- Önbellek Belleği (L1, L2, L3). Hızlı yazmaçlar ile yavaş ana bellek (RAM) arasında bir tampon bölge. Önbellek, işlemcinin yüklenmesini beklerken boşta kalmaması için sık kullanılan verileri saklar.
Bellek hiyerarşisi neden önemlidir? Verilere erişim hızı, çekirdekten uzaklaştıkça düşer: Yazmaçlar > L1 Önbellek > L2 Önbellek > L3 Önbellek > Ana Bellek (RAM) > Depolama Birimi (SSD/HDD). İşlemci mimarlarının görevi, yavaş RAM'e yapılan erişimleri en aza indirmektir.
Komut yürütme döngüsü: adım adım
Tarayıcı veya metin editörü olsun, her türlü program işlemci için basit komutlardan (makine kodu) oluşan uzun bir listedir. Böyle bir komutun işlenme sürecine makine döngüsü denir ve üç ana aşamadan oluşur:
1. Getirme (Fetch)
Kontrol birimi, özel bir komut sayacı yazmacında belirtilen adrese göre bellekten (veya önbellekten) sonraki komutu okur. Komut, komut yazmacına yerleştirilir.
2. Kod Çözme (Decode)
Çözücü, komutun ikili kodunu işlemcinin diğer parçalarının anlayabileceği sinyallere dönüştürür. Örneğin, işlemci şunu anlar: "Ah, bu bir toplama komutu, A yazmacından bir sayı ve B yazmacından bir sayı almam gerekiyor."
3. Yürütme (Execute)
- Hesaplama gerekiyorsa, veriler ALU'ya gönderilir.
- Veri taşıma gerekiyorsa, veriler bir yazmaçtan diğerine veya belleğe kopyalanır.
- Sonuç bir yazmaçta saklanır veya geri belleğe gönderilir.
Bundan sonra komut sayacı güncellenir ve döngü bir sonraki komutla yeniden başlar.
Boru hatlama: İşlemci işini nasıl hızlandırır
Eğer işlemci komutları kesinlikle sırayla uygulasaydı (önce tamamen getirir, sonra kodunu çözer, sonra yürütürdü), zamanının çoğunu boşta geçirirdi. Modern CPU'lar boru hattı (pipeline) kullanır.
Çamaşır yıkamayı hayal edin:
- İlk parti kururken (Yürütme), ikinci parti yıkanır (Kod Çözme) ve üçüncü parti makineye yüklenir (Getirme).
Bu şekilde, boru hattının farklı aşamalarında aynı anda birkaç komut bulunur. Bu, performansı önemli ölçüde artırır. Ancak boru hattı tahmin hatalarına karşı hassastır: Eğer program beklenmedik bir atlama (dallanma) yaparsa, boru hattının temizlenip yeni verilerle doldurulması gerekir, bu da zaman alır.
Kullanıcı üzerindeki etkisi Koşullu geçişlerin yoğun olduğu karmaşık görevler (örneğin, bazı şifreleme türleri veya oyunlardaki dallanan kod), boru hattındaki boşluklar nedeniyle doğrusal hesaplamalardan daha az verimli çalışabilir.
Çok çekirdeklilik ve çoklu iş parçacığı
2000'lerin başında saat frekansındaki artış fiziksel sınırlara (ısıl yayılım) takıldı. Mühendisler çekirdek sayısını artırma yoluna gitti.
- Çekirdek, kendi komut akışını yürütebilen bağımsız bir işlemcidir. İki çekirdekli bir işlemci aynı anda iki farklı görevi yürütebilir.
- Çoklu iş parçacığı (Hyper-Threading / SMT), tek bir fiziksel çekirdeğin aynı anda iki veri akışıyla çalışmasına olanak tanıyan teknolojidir. Bir akış bellekten veri beklerken, çekirdek boşta kalmadan ikinci akışa geçer.
Çekirdek sayısının artmasının her zaman doğrusal bir hız artışı sağlamadığını anlamak önemlidir. Program, paralel yürütme (paralelleştirme) için özel olarak yazılmış olmalıdır. Metin editörü muhtemelen CPU'nuzun tüm 16 çekirdeğini kullanmayacaktır, oysa video düzenleyici veya modern bir oyun motoru rahatlıkla kullanabilir.
CPU'nun çalışma biçimine ilişkin yaygın yanlış anlaşılmalar
| Mit | Gerçek |
|---|---|
| Saat frekansı (GHz) gücün ana göstergesidir | Hayır. Mimari (IPC - döngü başına komut) daha önemlidir. Yeni mimariye sahip 3 GHz'lik bir işlemci, eski mimariye sahip 4 GHz'lik bir işlemciden daha hızlı olacaktır. |
| İşlemci programları "düşünür" ve "anlar" | CPU'nun zekası yoktur. Komutları körü körüne yürütür. Koddaki hatalar, işlemci yanlış komutu dürüstçe yerine getirdiği için arızalara yol açar. |
| Her görev için çekirdek sayısı ne kadar çoksa o kadar iyidir | Ofis görevleri ve eski oyunlar için 4-6 hızlı çekirdek yeterlidir. Ek çekirdekler boşta kalacak ve bütçe daha güçlü tek bir çekirdeğe veya hızlı önbelleğe harcanmalıdır. |
SSS: İşlemciler hakkında sorular
İşlemci neden ısınır? Transistörler (milyarlarca adet) anahtarlandığında ısı açığa çıkar. Yük ve frekans ne kadar yüksekse, saniyedeki anahtarlama sayısı o kadar fazla olur ve ısınma o kadar şiddetli olur. Soğutma olmadan transistörler arızalanabilir.
İşlemci bit genişliği (32 veya 64 bit) nedir? Bu, yazmacın ve veri yolunun genişliğidir. 64-bitlik bir işlemci, tek bir döngüde daha büyük bir sayıyı işleyebilir ve 32-bitlik olandan daha büyük bir ana bellek hacmine (4 GB'dan fazla) erişebilir.
İşlemci programları doğrudan sabit diskten yürütebilir mi? Hayır. Veriler ve komutlar önce ana belleğe (RAM), ardından işlemci önbelleğine yüklenmelidir. Sabit disk, CPU ile doğrudan etkileşim için çok yavaştır.
İşlemcinin TDP değeri nedir? Thermal Design Power - Termal Tasarım Gücü. Soğutma sisteminin dağıtması gereken ısı miktarıdır. Pratikte, bu yük altındaki yaklaşık maksimum enerji tüketimidir.