Akıllı telefonlarımızdan oyun konsollarına, dizüstü bilgisayarlarımızdan sunucularımıza kadar her hesaplama cihazının kalbinde Merkezi İşlem Birimi (CPU) yer alır. Son 50 yılı aşkın sürede CPU mimarisi, performans, enerji verimliliği ve yeni hesaplama paradigmaları peşindeki amansız arayışla dramatik dönüşümler geçirdi. Bu makale, dünyanın ilk ticari CPU'su olan Intel 4004'ten başlayarak, x86 mimarisi gibi 20. yüzyıl sonlarının yeniliklerine, ARM gibi RISC tasarımlarının paralel yükselişine ve nihayetinde Intel, AMD ve Apple gibi şirketlerin günümüzün heterojen çoklu çiplet SoClerine kadar CPU'ların mimari düzeyde nasıl evrildiğine odaklanıyor.
CPU Gerçekte Nedir?
Merkezi İşlem Birimi (CPU), bir bilgisayarın yazılımdan gelen komutları yürüten parçasıdır. En temel düzeyde, bir CPU bir komutu alır, ne yapması gerektiğini çözer, işlemi (aritmetik bir hesaplama veya bellek erişimi gibi) yürütür ve ardından sonucu geri yazar. Bu süreç genel olarak fethet-çöz-yürüt (fetch-decode-execute) döngüsü olarak bilinir.
Fiziksel düzeyde bir CPU sihirli değildir. Milyarlarca minik anahtar olan transistörlerden oluşan entegre bir elektronik devredir. Bu transistörler, bir silikon yongası üzerinde fotolitografi adı verilen hassas bir işlemle üretilir. Bu adımlar onlarca hatta yüzlerce kez tekrar edilerek, üreticiler bir tırnak kadar küçük bir yongaya muazzam sayıda transistör sığdırabilirler; bu da son yıllardaki CPU performansındaki dramatik artışları mümkün kılmıştır.
CPU Mimarisi Ayrıntılı Olarak
Modern CPU'lar sadece "her şeyi yapan tek bir şey" değildir. Bunlar, komutları mümkün olan en hızlı şekilde işlemek ve yürütmek için birlikte çalışan özel bileşenlerin oldukça düzenli koleksiyonlarıdır. Temel düzeyde, bir CPU'nun bir ön ucu (front-end), bir dizi depolama elemanı ve asıl işi yapan birkaç yürütme birimi olduğunu düşünebilirsiniz.
Herhangi bir hesaplama gerçekleşmeden önce, CPU ana bellekten/RAM'den komutları almalı ve ne anlama geldiklerini anlamalıdır. Ön uç bundan sorumludur:
- Komut Alıcı (Instruction Fetcher): Yürütülecek bir sonraki komutu bellekten alır (genellikle önbellekler aracılığıyla).
- Komut Çözücü (Instruction Decoder): Komutun ham bitlerini, CPU'nun bir sonraki ne yapması gerektiğini söyleyen dahili sinyallere dönüştürür.
- Kontrol Birimi (Control Unit): Fethet-çöz-yürüt döngüsünü orkestre ederek ve çözülen komuta göre birimler arasındaki verileri yönlendirerek CPU'nun orkestra şefi gibi davranır. Modern CPU tasarımlarında kontrol birimi, boru hatlarını meşgul tutmak için dallanma tahmini (branch prediction) ve spekülatif yürütmeyi (speculative execution) de yönlendirir.
Her CPU çekirdeğinin kalbinde, işlemcinin şu anda üzerinde çalıştığı verileri ve komutları tutmak için kullanılan, SRAM'dan yapılmış süper küçük, ultra hızlı bellek birimleri olan kayıt tutucular (registers) bulunur. Kayıt tutuculara erişim, ana belleğe veya CPU'nun kendi önbelleklerine kıyasla kat kat daha hızlıdır. Yaygın kayıt tutucu türleri şunları içerir:
- Genel Amaçlı Kayıt Tutucular (General-purpose registers): Aritmetik ve mantık işlemleri için işlenenleri tutar.
- Özel Kayıt Tutucular (Special registers): Bir sonraki alınacak komutu izleyen Program Sayacı (PC) ve çözülmekte olan mevcut komutu tutan Komut Kayıt Tutucusu (IR) gibi.
Aritmetik Mantık Birimi (ALU), temel hesaplamaların çoğunun gerçekleştiği yerdir:
- Tamsayı aritmetiği (toplama, çıkarma, bit kaydırma vb.) ve mantıksal işlemleri (VE/VEYA/ÖZEL VEYA) işler.
- Bir program "bu iki sayıyı topla" gibi komutları yürüttüğünde, bu işi yapan mantıksal devredir.
- Süperskaler (superscalar) ve sıradışı (out-of-order) tasarımlarda, bir CPU döngü başına daha fazla işlemi paralel olarak gerçekleştirmek için birden fazla ALU'ya sahip olabilir.
Ondalıklı sayılarla (ondalık sayılar) ilgili işlemler için CPU'lar bir Kayan Nokta Birimi (FPU) kullanır:
- FPU'lar, toplama, çarpma, bölme ve hatta karekök gibi kayan nokta aritmetiği için optimize edilmiş özel yürütme birimleridir.
- Daha önceki CPU'larda FPU'lar bazen ayrı yardımcı işlemcilerdi, ancak neredeyse tüm modern çiplerde performans için her çekirdeğe entegre edilmişlerdir.
Yükleme/Depolama Birimi (Load/Store Unit - LSU): Veriyi Hareket Ettirme
Çeşitli işlemci blokları arasındaki veri hareketini içeren işlemler için bir Yükleme/Depolama Birimi (LSU) kullanılır:
- Verileri bellekten kayıt tutuculara yükleyen (yüklemeler) veya kayıt tutucu değerlerini belleğe geri yazan (depolamalar) bellek erişim işlemlerini yürütür.
- Özellikle sıradışı CPU'larda bellek işlemlerini izlemek ve doğru sıralamayı sürdürmek için yükleme/depolama kuyrukları ve tamponlama mekanizmaları içerir.
Adres Üretme Birimi (Address Generation Unit - AGU): Bellek Adresi Hesaplamaları
Bellek adreslerini içeren işlemler için CPU'lar bir Adres Üretme Birimi (AGU) kullanır:
- AGU'lar, yükleme ve depolama işlemleri için kullanılan bellek adreslerini hesaplar, bellekte verinin nereden okunacağını veya nereye yazılacağını belirler.
- Modern CPU'lar genellikle birden fazla AGU içerir, böylece birkaç bellek adresini aynı anda hesaplayabilir, döngü başına birden fazla bellek erişimine izin verir ve genel verimi artırır.
Birçok günümüz CPU'su, aynı anda birden fazla veri öğesi üzerinde aynı işlemi gerçekleştirebilen, böylece multimedya, şifreleme ve yapay zeka iş yükleri için büyük bir performans artışı sağlayan SIMD (Tek Komut, Çoklu Veri) veya vektör birimleri de içerir. Örnekler arasında Intel'in SSE/AVX ve ARM'ın NEON uzantıları bulunur.
Çekirdeğin yürütme motorunun tam olarak bir parçası olmasa da, önbellek belleği (cache memory) performans için kritiktir:
- L1/L2/L3 önbellekleri, maliyetli bellek erişimlerini (özellikle gecikme açısından) azaltmak için yakın zamanda kullanılan verilerin kopyalarını tutarak CPU ve ana bellek arasında yer alır.
- Modern CPU'lar, yürütme birimlerini hızlı bir şekilde beslemenin yüksek performans için hayati önem taşıması nedeniyle bu önbelleklere önemli bir çip alanı ayırır.
Bir boru hattı veya süperskaler CPU'da, tüm bu parçaların uyum içinde çalışması gerekir:
- Ön uç, komutları alır ve çözer.
- Kayıt tutucu değerleri okunur ve uygun yürütme birimine (ALU, FPU, vektör birimi) gönderilir;
- Yürütme birimleri işi yapar ve sonuçlar kayıt tutuculara veya ana belleğe geri yazılır.
- Önbellekler ve bellek denetleyicileri her adımda veri erişim gecikmesini azaltır.
Bu bileşenler birlikte, modern CPU'ların saniyede milyarlarca komutu işlemesini sağlayan veri yolu ve kontrol yolunu oluşturur.
Ayrıca, CPU'lar komut seti mimarisi (ISA) adı verilen bir şeyle de karakterize edilir; bu, bir CPU'nun programlanabilir arayüzünü (komutlar, veri türleri, kayıt tutucular vb.) belirleyen soyut bir arayüzdür, yani yazılımın onunla en temel düzeyde nasıl etkileşim kurabileceğini belirler.
x86'nın Doğuşu: Intel 8086
Modern masaüstü CPU'ların hikayesi 1978'de başlıyor; o yıl Intel, hala baskın olan x86 komut seti mimarisine hayat verecek olan 8086 (iAPX 86 olarak da bilinir) mikroişlemcisini tanıttı. O zamanlar, çoğu tüketici mikroişlemcisi hala Intel'in kendi 8080 ve Zilog Z80'i gibi 8 bitlik tasarımlardı. 8086, 16 bit mimarisini tanıtarak önemli bir sıçrama yaptı; yani kayıt tutucuları, aritmetik mantık birimi ve dahili veri yolları tek seferde 16 bitlik kelimeler üzerinde çalışacak şekilde tasarlanmıştı.
Mimari olarak, 8086 16 bitlik dahili kayıt tutuculara ve 16 bitlik bir veri yoluna sahipti, ancak aynı zamanda 20 bitlik bir adres yoluna sahipti ve işlemcinin 1970'lerin sonları standartlarına göre devasa bir miktar olan 1 megabayta (2^20) kadar belleğe erişmesine izin veriyordu. Dahili kayıt tutucular yalnızca 16 bit genişliğinde olduğu için, Intel 20 bitlik adresler oluşturmak üzere benzersiz bir segmentli bellek modeli tanıttı. Bellek adresleri, son fiziksel adresi üretmek için 16 bitlik bir segment kayıt tutucusunun dört bit sola kaydırılıp 16 bitlik bir ofset değeriyle toplandığı bir "segment:ofset" şeması kullanılarak hesaplanıyordu. Bu biraz garip sistem, x86 mimarisinde onlarca yıl boyunca devam edecekti.
Başka bir dikkat çekici tasarım seçimi, işlemcinin iki ana dahili blok olan Veri Yolu Arayüz Birimi (BIU) ve Yürütme Birimi (EU) olarak ayrılmasıydı. BIU, bellek ve G/Ç cihazlarıyla iletişimi, komutları almayı ve adres üretimini yönetiyordu. Bu arada, EU, işlemcinin kayıt tutucuları ve ALU'sunu kullanarak komutları çözüyordu. Verimliliği artırmak için BIU, mevcut komut yürütülürken yaklaşan komutları alabilen bir 6 baytlık komut ön alım kuyruğuna sahipti; bu, komut boru hattının (instruction pipelining) erken bir biçimiydi.
Kayıt tutucu seti de dikkatlice tasarlanmıştı. CPU, her biri tam 16 bitlik bir kayıt tutucu olarak veya iki adet 8 bitlik yarım olarak erişilebilen dört genel amaçlı kayıt tutucu (AX, BX, CX ve DX) içeriyordu. Ayrıca, bellek segmentlerini adreslemek için kullanılan dört segment kayıt tutucusunun yanı sıra yığın işaretçisi (SP), temel işaretçi (BP), kaynak dizini (SI) ve hedef dizini (DI) gibi işaretçi ve dizin kayıt tutucularına da sahipti.
Fiziksel olarak, yonga 40 pinli bir çift sıralı paket (DIP) içinde paketlenmişti ve Intel'in HMOS (Yüksek Performanslı Metal Oksit Yarı İletken) süreci kullanılarak üretilen yaklaşık 29.000 transistör içeriyordu. Modern standartlara göre mütevazı transistör sayısına rağmen, 8086 hesaplama tarihindeki en uzun ömürlü mimarilerden birinin temelini attı.
Sadece bir yıl sonra, Intel 8086'nın dahili 16 bit mimarisini koruyan ancak 8 bitlik harici veri yolu kullanan yakın bir varyantı olan 8088'i (iAPX 88 olarak da bilinir) çıkardı. Bu, mevcut donanımla entegrasyonunu daha ucuz hale getirdi ve 1981'de piyasaya sürülen orijinal IBM PC için seçilen işlemci oldu, bu da x86 mimarisinin kişisel bilgisayar devriminin merkezindeki yerini sağlamlaştırdı.
Erken x86 Gelişimi: 80286'dan 80486'ya
8086 ve 8088'in başarısının ardından Intel, 1980'ler boyunca x86 mimarisini geliştirmeye devam etti. Her yeni nesil, bellek kapasitesini genişleten, daha gelişmiş işletim sistemlerini etkinleştiren ve performansı kademeli olarak artıran önemli iyileştirmeler getirdi.
Intel 80286 – Koruma Modu Geliyor
1982'de piyasaya sürülen Intel 80286 (iAPX 286 olarak da bilinir), orijinal x86 tasarımının yeteneklerini genişletti ve 8086 uyumlu yazılımlarla geriye dönük uyumluluğu korudu. Dahili olarak, hala 16 bitlik bir işlemciydi, ancak 24 bitlik adres yolu, önceki çiplerin 1 megabaytlık sınırına kıyasla çok önemli bir artış olan 16 megabayta kadar belleğe erişmesini sağlıyordu.
En önemli ekleme, bellek koruması ve çoklu görev için donanım mekanizmaları sunan korumalı mod (protected mode) idi. Bu modda, bellek segmentleri, işlemcinin erişim izinlerini zorlamasına ve programları birbirinden izole etmesine olanak tanıyan tanımlayıcı tablolar aracılığıyla tanımlanıyordu.
Bu yetenekler, 80286'yı modern işletim sistemlerine doğru önemli bir adım haline getirdi, ancak erken PC yazılımları —özellikle MS-DOS— uyumluluk nedenleriyle hala orijinal gerçek modda (real mode) çalışıyordu.
Intel 80386 – 32 Bit Geçişi
Intel'in bir sonraki büyük sıçraması, 1985'te piyasaya sürülen 80386 (i386 olarak da bilinir) ile geldi. Bu işlemci, kayıt tutucuları ve dahili veri yollarını genişletirken, adreslenebilir bellek boyutunu da 4 gigabayta çıkaran tamamen 32 bit mimarisini tanıttı.
i386, özel donanım birimleri olan Bellek Yönetimi Birimi (MMU) ve Çeviri Önbelleği (TLB) aracılığıyla bellek sayfalama (memory paging) ile korumalı modu genişletti. Bu, gerçek sanal bellek sistemlerini mümkün kıldı. İşletim sistemleri, sanal adresleri fiziksel belleğe dinamik olarak eşleyebiliyordu, bu da programların izole edilmiş adres alanlarında çalışmasına ve gelişmiş çoklu görev ortamlarının yanı sıra güvenliği de büyük ölçüde artırmasına olanak tanıyordu.
Bu özellikler, 80386'yı Windows NT ve erken Unix benzeri sistemler gibi modern işletim sistemlerini gerçekten destekleyebilen ilk x86 işlemci yaptı.
Intel 80486 – Entegrasyon ve Boru Hattı
1989'da tanıtılan Intel 80486 (i486 olarak da bilinir), i386'nın 32 bit mimarisini korudu ancak birkaç mimari geliştirmeyle performansı önemli ölçüde artırdı.
En büyük değişikliklerden biri, daha önce harici bileşenlerin doğrudan CPU yongasına entegre edilmesiydi. Bir zamanlar ayrı bir yardımcı işlemci olan kayan nokta birimi (FPU) artık işlemcinin kendisine yerleştirildi, bu da özellikle kayan nokta ağırlıklı matematiksel iş yüklerini önemli ölçüde hızlandırdı.
i486 ayrıca 8 kilobaytlık bir seviye 1 (L1) çip içi önbellek ve birden fazla komutun yürütmede çakışmasına izin vererek komut verimini önemli ölçüde artıran boru hattı yürütme mimarisini tanıttı.
Bu iyileştirmelerle i486, önceki x86 yazılımlarıyla tam uyumluluğu korurken i386'dan önemli ölçüde daha yüksek performans sağladı ve bir sonraki büyük mimari dönüm noktası olan Pentium'a giden yolu açtı.
Pentium Dönemi: Paralellik, Tahmin ve Daha Akıllı Yürütme
1990'ların başlarına gelindiğinde, CPU tasarımcıları basitçe saat hızlarını artırmanın sınırlarına ulaşmaya başlamışlardı. Performansı daha da iyileştirmek için mimarlar, komut düzeyinde paralellik (ILP) çıkarmaya giderek daha fazla odaklandılar; bu da işlemci içinde birden fazla komutun aynı anda yürütülmesini sağlıyordu. Intel'in Pentium ailesi, modern CPU tasarımını tanımlayacak birkaç mimari yenilik getirerek bu çabada önemli bir dönüm noktasını temsil ediyordu.
Pentium – Süperskaler Yürütme ve Dal Tahmini
1993'te piyasaya sürülen orijinal Pentium (P5), 80486'dan önemli bir adımdı. Önceki işlemciler komutları çoğunlukla teker teker yürütürken, Pentium süperskaler mimarisini tanıttı; bu da belirli koşullar altında saat döngüsü başına birden fazla komut çıkarabiliyordu. Çip, U ve V boru hatları olarak anılan iki paralel tamsayı boru hattı içeriyordu, bu da belirli komut çiftlerinin aynı anda yürütülmesine olanak tanıyordu.
Başka bir önemli yenilik ise, koşullu atlamalarla ilgili performans cezalarını azaltmak için tasarlanmış dinamik dal tahmini (branch prediction) idi. Modern programlar birçok dallanma içerdiğinden (döngüler, eğer ifadeleri, fonksiyon çağrıları), CPU'lar sürekli olarak bir sonraki hangi komutun yürütüleceğine karar vermek zorundadır. Dal tahmini, işlemcinin bir dalın olası sonucunu tahmin etmesine ve komutları önceden almaya devam etmesine olanak tanıyarak boru hattını dolu tutar ve genel verimi artırır.
Süperskaler yürütme ve dal tahmini birlikte, saat hızlarında dramatik artışlar gerektirmeden performansı önemli ölçüde artırdı.
Pentium Pro – Sıradışı Yürütme ve Kayıt Yeniden Adlandırma
Gerçek mimari sıçraması, Intel'in P6 mikro mimarisini tanıtan Pentium Pro ile 1995'te geldi. Orijinal Pentium birden fazla komutu paralel olarak yürütebilse de, Pentium Pro sıradışı yürütmeyi (out-of-order execution) uygulayarak çok daha ileri gitti; bu, işlemcinin program sırasını kesin olarak takip etmek yerine, veri kullanılabilirliğine göre komutları dinamik olarak yeniden sıralamasına olanak tanıyordu.
Pratikte, bu, CPU'nun veriyi bekleyen komutları —örneğin ana bellekten— atlayabileceği ve önce diğer bağımsız komutları yürütebileceği anlamına geliyordu. Bu yaklaşım, işlemcinin yürütme birimlerini meşgul tutmasını sağladı ve komut yürütme verimini önemli ölçüde artırdı.
Bunu mümkün kılmak için Pentium Pro, kayıt yeniden adlandırma (register renaming) adı verilen bir teknik kullandı. x86 mimarisi, yazılımlara nispeten az sayıda kayıt tutucu sunar; bu da birden fazla komut aynı kayıt tutucuyu kullanmaya çalıştığında yapay bağımlılıklar yaratabilir. Kayıt yeniden adlandırma, bu mimari kayıt tutucuları daha büyük bir dahili fiziksel kayıt tutucuları havuzuna eşleyerek bu yapay bağımlılıkları ortadan kaldırır ve daha fazla komutun paralel olarak yürütülmesine olanak tanır.
Dahili olarak, Pentium Pro ayrıca karmaşık x86 komutlarını yürütmeden önce daha basit mikro-operasyonlara (µops) çevirerek, x86 komut setiyle uyumluluğu korurken iç yürütme motorunun bir RISC işlemcisi gibi davranmasını sağladı.
Dinamik Yürütme ve Modern CPU'ların Temelleri
Bu yenilikler — süperskaler boru hatları, dal tahmini, sıradışı yürütme, kayıt yeniden adlandırma ve spekülatif yürütme — Intel'in dinamik yürütme olarak adlandırdığı şeyin temelini oluşturdu. Amaç, çalışma zamanında bağımsız komutları belirlemek ve bunları birden fazla yürütme birimi boyunca mümkün olan en verimli şekilde yürütmekti.
Pentium Pro ve sonraki sürümleri (Pentium II ve Pentium III), daha büyük önbellekler ve multimedya iş yüklerini hızlandırmak için MMX ve Streaming SIMD Extensions (SSE) gibi yeni SIMD komut setleri getirerek bu teknikleri daha da geliştirdi. 1990'ların sonlarına gelindiğinde, bu mimari fikirler, sadece x86 işlemcilerinde değil, tüm hesaplama endüstrisinde yüksek performanslı CPU'lar için standart plan haline gelmişti.
GHz Yarışı ve Pentium 4: Saat Hızının Her Şeyi Yönettiği Zaman
1990'ların sonları ve 2000'lerin başlarında, CPU performans pazarlaması tek bir sayı etrafında birleşmişti: saat frekansı. Daha yüksek megahertz (ve nihayetinde gigahertz), hem reklamlarda hem de tüketici algısında işlemcileri karşılaştırmak için kullanılan baskın ölçüt haline geldi. Intel, 2000 yılında piyasaya sürülen ve yeni NetBurst mikro-mimariye dayanan Pentium 4 ile bu trendden büyük ölçüde yararlandı.
NetBurst, birincil hedefle tasarlandı: aşırı yüksek saat hızları. Bunu başarmak için Intel, CPU'nun yürütme boru hattını yaklaşık 20 aşamaya (ve daha sonraki sürümlerde daha da uzatarak) önemli ölçüde uzattı, bu da işlemcinin önceki tasarımlardan çok daha yüksek frekanslara ulaşmasını sağladı.
Teorik olarak, mimarinin 10 GHz'e kadar saat hızlarına ölçeklenmesi gerekiyordu.
Ancak bu strateji önemli ödünler getirdi. Daha uzun boru hatları, saat döngüsü başına tamamlanan iş miktarını (döngü başına komut veya IPC olarak bilinir) azalttı ve işlemciyi dal tahmini hatalarına karşı çok daha hassas hale getirdi; bu da tüm boru hattının temizlenip yeniden başlatılmasını gerektiriyordu.
Sonuç olarak, erken Pentium 4 çipler genellikle gerçek dünya iş yüklerinde eski tasarımları geride bırakmakta zorlanıyordu ve AMD'nin rakip Athlon işlemcileri genellikle çok daha düşük saat hızlarında ve çok daha az güç tüketmesine rağmen daha iyi performans sunuyordu.
Pentium 4 dönemi, meraklıların daha sonra “GHz efsanesi” olarak adlandırdığı şeyi ortaya çıkardı: saat hızı tek başına CPU performansının güvenilir bir göstergesi değildi. Enerji verimliliği, boru hattı derinliği, önbellek tasarımı ve mikro-mimari iyileştirmeler de eşit derecede önemli roller oynuyordu.
NetBurst, güç tüketimi ve ısı üretimi nedeniyle nihayetinde bir duvara çarptı, bu da Intel'i 2000'lerin ortasında mimariyi terk etmeye ve tüm CPU tasarım stratejisini yeniden düşünmeye zorladı.
Itanium Deneyi: Intel'in x86'yı Değiştirme Girişimi
Intel masaüstü pazarında Pentium 4'ü zorlarken, Hewlett-Packard ile geliştirilen tamamen yeni bir 64 bit işlemci mimarisi olan Itanium gibi çok daha radikal bir projeyi de sürdürüyordu.
2001'de tanıtılan Itanium, EPIC (Explicitly Parallel Instruction Computing) adı verilen bir tasarım felsefesini uyguladı. Komutları dinamik olarak zamanlamak için karmaşık donanıma büyük ölçüde güvenmek yerine, EPIC'in derleyicinin programları analiz etmesini ve hangi komutların önceden paralel olarak çalıştırılabileceğini belirlemesini bekliyordu.
Teorik olarak, bu yaklaşım daha basit donanımla çok yüksek komut düzeyinde paralellik sağlayabilirdi. Ancak pratikte, derleyiciler üzerinde muazzam talepler yarattı. Gerçek dünya yazılımlarından büyük miktarda paralellik çıkarmak son derece zordu ve birçok program işlemcinin yürütme kaynaklarını tam olarak kullanamıyordu.
Mimari ayrıca yazılım uyumluluğu ile de mücadele etti. Itanium mevcut x86 uygulamalarıyla yerel olarak uyumlu olmadığından, eski yazılımları çalıştırmak genellikle yavaş emülasyon gerektiriyordu.
Kritik darbe, 2003 yılında AMD'nin x86-64 (AMD64)'ü tanıtmasıyla geldi. x86'yı tamamen değiştirmek yerine, AMD mevcut mimariyi 32 bit yazılımlarla tam geriye dönük uyumluluğu korurken 64 bit hesaplamayı destekleyecek şekilde genişletti. Bu yaklaşım, işletim sistemlerinin ve uygulamaların devasa mevcut x86 yazılım ekosisteminden vazgeçmeden 64 bit hesaplamaya geçiş yapmasına olanak tanıdı.
Endüstri hızla AMD'nin tasarımına yöneldi ve Intel de kendi işlemcilerinde aynı yaklaşımı benimsedi. Itanium yıllarca niş kurumsal sunucularda varlığını sürdürse de, x86'yı değiştirme orijinal hedefi asla gerçekleşmedi.
Çok Çekirdekli ve Çoklu İş Parçacığı Baskın Hale Geliyor
2000'lerin başına gelindiğinde, CPU tasarımcıları güç duvarına çarpıyordu: saat hızlarını daha da artırmak aşırı güç tüketimine ve ısıya yol açıyordu. Frekansı daha da yükseltmek yerine, çip üreticileri paralelliği, yani saat döngüsü başına işlenebilen ve yürütülebilen komut sayısını artırarak performansı iyileştirmeye başladılar.
Çözüm çok çekirdekli işlemci oldu. Tek bir büyük çekirdek yerine, CPU'lar aynı yonga üzerine birden fazla bağımsız çekirdek entegre etmeye başladı; her biri kendi komut akışını yürütebiliyordu. Bu, yazılımların iş yüklerini birkaç çekirdeğe bölmesine izin vererek paralel iş yüklerinde performansı önemli ölçüde artırdı.
Çok Çekirdekli CPU'ların Yükselişi
Endüstriyel değişim 2000'lerin ortasında başladı; AMD gibi şirketler 2005'te Athlon 64 X2 gibi erken çift çekirdekli işlemciler tanıttı. Çok çekirdekli işlemciler hızla yeni standart haline geldi; CPU'lar yakında modern masaüstü ve sunucu işlemcilerinde dört çekirdekli, sekiz çekirdekli ve nihayetinde onlarca çekirdeğe genişledi.
Bu yaklaşım, saat hızlarını veya güç tüketimini dramatik bir şekilde artırmadan performansın ölçeklenmesine olanak tanıdı.
Eş Zamanlı Çoklu İş Parçacığı (SMT)
Daha fazla çekirdek eklemenin yanı sıra, CPU tasarımcıları her çekirdeğin içindeki donanımı daha iyi kullanmanın yollarını da aradılar. Önemli bir teknik, tek bir çekirdeğin birden fazla iş parçacığından gelen komutları aynı anda yürütmesine olanak tanıyan eş zamanlı çoklu iş parçacığı (SMT) idi.
Intel, SMT uygulamasını 2002'de Pentium 4 işlemcilerinde Hyper-Threading olarak tanıttı. Hyper-Threading ile her fiziksel çekirdek, işletim sistemine iki mantıksal işlemci olarak görünür; bu da bir iş parçacığı veri beklerken CPU'nun yürütme birimlerini meşgul tutmasını sağlar.
Paralellik Yeni Performans Sınırı Haline Geliyor
Çok çekirdekli mimariler ve donanımsal çoklu iş parçacığı birlikte, CPU tasarımını iş parçacığı düzeyinde paralelliğe kaydırdı. Sadece daha hızlı saatlere güvenmek yerine, modern işlemciler giderek artan bir şekilde birçok iş parçacığını aynı anda yürüterek performansı artırır, ancak bu yalnızca gerçekten geniş bir çekirdek ve iş parçacığı sayısına ölçeklenen iş yükleri için geçerlidir.
Bu geçiş, hem CPU tasarımını hem de yazılım geliştirmeyi temelden şekillendirdi, çünkü işletim sistemleri ve uygulamalar giderek paralel iş yükleri için optimize edilmesi gerekiyordu.
RISC vs CISC – İki Yol, Tek Hedef
1980'ler ve 1990'lar boyunca, CPU tasarımcıları iki rakip felsefe üzerinde tartıştılar: CISC (Karmaşık Komut Seti Hesaplama) ve RISC (Azaltılmış Komut Seti Hesaplama). x86 gibi CISC mimarileri, tek bir komutta birden fazla işlem gerçekleştirebilen karmaşık komutlara odaklanırken, RISC tasarımları hızlı yürütme ve verimli boru hattı için optimize edilmiş daha basit komutları tercih etti.
CISC Kökleri: x86 Mimarisi
x86 mimarisi klasik olarak CISC (Karmaşık Komut Seti Bilgisayarı) olarak etiketlenir; değişken uzunluklu komutlara ve her komutta daha fazlasını yapmak için tasarlanmış karmaşık adresleme modlarına sahiptir. "Ağır" görünse de, bu karmaşıklık güçlü geriye dönük uyumluluk sağladı; bu da on yıllarca süren yazılım sürekliliği ve PC endüstrisi ivmesi için kritik bir faktördü.
Bu karmaşıklığa rağmen, modern x86 işlemcileri dahili olarak komutları RISC tarzı yürütme boru hatlarını besleyen daha basit mikro-operasyonlara çevirir. Sonuç, uyumluluğu korurken dahili olarak RISC verimliliğinden yararlanan hibrit bir tasarımdır.
IBM POWER ve RISC'in Yükselişi
En etkili RISC çabalarından biri, ilk olarak 1990'da RS/6000 iş istasyonları için tanıtılan IBM'in araştırmalarından kaynaklanan POWER mikro mimarisinden geldi. Bu işlemciler, yüksek performans elde etmek için basitleştirilmiş komutlar, büyük kayıt dosyaları ve agresif boru hatları vurgulandı.
POWER daha sonra 2000'lerin başlarındaki Apple Mac'lere ve birkaç büyük oyun konsoluna güç veren PowerPC'ye dönüştü.
Cell İşlemcisi: Cesur Bir Deney
IBM'in RISC soyundan gelen alışılmadık bir soyu, Sony ve Toshiba ile ortak geliştirilen Cell Broadband Engine idi. Çip, geleneksel bir Power çekirdeğini, Sinerjik İşleme Elemanları (SPE'ler) adı verilen ve oldukça paralel, vektör/SIMD iş yükleri için tasarlanmış birkaç özel vektör işleme birimiyle birleştirdi.
Cell mikro mimarisi etkileyici kayan nokta performansı sundu ve PlayStation 3'ü ve hatta bazı ilk petaflop süper bilgisayarlarını çalıştırdı, ancak karmaşıklığı geliştiricilerin tam olarak kullanmasını zorlaştırdı.
Zamanla Yakınsama
Yoğun RISC ve CISC tartışmasına rağmen, modern CPU'lar giderek iki alan arasındaki çizgiyi bulanıklaştırıyor. Günümüz x86 işlemcileri genellikle karmaşık komutları daha basit dahili mikro-operasyonlara çevirir, bu da dahili olarak RISC makinelerine çok daha fazla davrandıkları anlamına gelir.
Pratikte, modern performans, komut setinin kendisinden daha çok güçlü sıradışı motorlar, geniş komut çözücüler, doğru dal tahmincileri, büyük/hızlı önbellekler ve birçok kayıt tutucu ve geniş veri yolu üzerinde çalışan birden fazla yürütme birimi gibi mikro-mimari yeniliklere bağlıdır.
Modern Gelişmeler: Çipletler, Vektör Uzantıları, Yapay Zeka ve Ötesi
Geleneksel transistör ölçeklendirmesi yavaşladıkça, modern CPU yeniliği, yalnızca saat hızlarını artırmaktan ziyade, yeni mimari yaklaşımlar ve sistem entegrasyonundan giderek daha fazla geliyor.
Çipletler ve Modüler CPU Tasarımı
Büyük bir eğilim, çiplet tabanlı işlemcilere doğru hareket etmektir. Üreticiler, bir CPU'yu tek büyük monolitik bir yonga olarak inşa etmek yerine, her biri hesaplama çekirdekleri, önbellek veya G/Ç gibi belirli işlevleri yerine getiren birden fazla küçük yongayı (çiplet) birleştirerek işlemciler monte eder.
Bu yaklaşım, üretim verimini artırır, farklı işlem düğümlerini karıştırmaya olanak tanır ve çekirdek sayılarını ölçeklendirmeyi kolaylaştırır. AMD gibi şirketler, Zen tabanlı işlemcileriyle bu stratejiyi popülerleştirdi ve Intel de benzer modüler paketleme teknolojilerini benimsedi.
Vektör Uzantıları ve Veri Paralelliği
Başka bir önemli gelişme, CPU'ların tek bir komutla birçok veri öğesini işlemesine olanak tanıyan vektör ve SIMD komut setlerinin genişletilmesidir. x86'da SSE, AVX, AVX-512 ve AMX veya ARM'da NEON ve SVE gibi uzantılar, multimedya işleme, bilimsel simülasyonlar ve makine öğrenmesi gibi iş yüklerini hızlandıran veri dizileri üzerinde büyük paralel işlemleri etkinleştirir.
Geleneksel CPU'nun Ötesi: SoClerin Yükselişi
Modern işlemciler, giderek basit CPU'lardan ziyade Çip Üzerinde Sistemlere (SoC) benzemektedir. Bir SoC, bir zamanlar ayrı çipler olan GPU'lar, bellek denetleyicileri, G/Ç arayüzleri ve özel hızlandırıcılar gibi birçok bileşeni aynı silikon parçasına entegre eder.
Bu entegrasyon seviyesi, güç verimliliğini önemli ölçüde artırır ve bileşenler arasındaki gecikmeyi azaltır. Günümüz SoC'leri genellikle yapay zeka hızlandırıcıları, medya motorları, güvenlik işlemcileri, GPU'lar ve ağ donanımı içerir; bu da "CPU"yu yalnızca genel amaçlı bir işlemciden tek bir yongada eksiksiz bir hesaplama platformuna dönüştürür.
Birçok açıdan, bu değişim bir işlemcinin ne olduğunu yeniden tanımladı. Modern çipler artık sadece CPU çekirdeklerinden oluşmuyor — bunlar, grafik işleme, yapay zeka çıkarımı gibi çok çeşitli iş yüklerini tek bir entegre pakette işlemek üzere tasarlanmış heterojen sistemlerdir.
Apple Silicon: ARM'ın Masaüstü İçin Büyük Yenilenmesi
2020'de Apple, Mac serisini Intel işlemcilerden, 2020'nin sonlarında piyasaya sürülen yeni Mac'lerle başlayan ve 2023'te tamamen tamamlanan, Mac platformu için büyük bir mimari değişim olan kendi ARM tabanlı Apple Silicon çiplerine geçireceğini duyurdu.
Kendi işlemcilerini tasarlayarak Apple, CPU, GPU ve sistem mimarisi üzerinde tam kontrol sağladı, bu da macOS ve daha geniş ekosistemi arasında donanım ve yazılımı sıkı bir şekilde entegre etmesine olanak tanıdı.
Apple Silicon CPU'larının dikkat çekici özelliklerinden biri, birçok çağdaş x86 işlemciye kıyasla çok yüksek performans-saat döngüsü oranı (PPC)dır. Bu, birkaç mimari seçime dayanır.
İlk olarak, Apple'ın yüksek performanslı çekirdekleri aşırı geniş mikro mimariler kullanır. Örneğin, M1'deki Firestorm Performans çekirdekleri (P-Çekirdekleri) saat döngüsü başına sekiz komuta kadar çözebilir; bu da birçok ana akım masaüstü çekirdeğinden önemli ölçüde daha geniştir ve büyük miktarda komut düzeyinde paralellik çıkarmalarına olanak tanır.
İkinci olarak, Apple çekirdekleri çok büyük önbellekler içerir; olağanüstü büyük L1 veri/komut önbellekleri ve yürütme birimlerine veriyi yakın tutarak bellek gecikmesini azaltan büyük paylaşımlı L2 önbellekleri bulunur.
Son olarak, Apple Silicon çipleri, CPU çekirdeklerini GPU'lar, sinir motorları ve diğer hızlandırıcılarla aynı yongaya birleştiren yüksek entegre sistemler-on-a-chip olarak tasarlanır. Bu sıkı entegrasyon, veri hareketini azaltır ve tüm sistemde verimliliği artırır.
Bu tasarım seçimleri birlikte, Apple Silicon işlemcilerinin olağanüstü performans-watt oranı ve yüksek PPC verimliliği elde etmesini sağlar ve ARM tabanlı tasarımların geleneksel masaüstü x86 CPU'larla doğrudan rekabet edebileceğini gösterir.
Kapanış Düşünceleri
Intel 8086'dan bu yana geçen yaklaşık elli yıl boyunca, CPU mimarisi dikkate değer bir hızla gelişmeye devam ediyor. Erken ilerleme daha yüksek saat hızları ve daha küçük transistörlerden gelirken, modern yenilik giderek paralellik, uzmanlaşma ve sistem düzeyinde tasarımdan geliyor.
Birkaç eğilim, bir sonraki nesil işlemcileri tanımlayacaktır. Çiplet mimarileri ve 3D yığma, CPU'ların daha büyük ve daha karmaşık çoklu yonga paketlerine ölçeklenmesine olanak tanırken üretim verimliliğini ve verimi artırmaya devam edecek. Bu modüler yaklaşım ayrıca farklı işlem düğümlerini karıştırmaya ve özel hızlandırıcıları daha kolay entegre etmeye olanak tanır.
Aynı zamanda, hesaplama giderek heterojen hale geliyor. Modern sistemler, genel amaçlı CPU çekirdeklerini, grafik işleme, makine öğrenmesi veya sinyal işleme gibi belirli iş yükleri için optimize edilmiş GPU'lar, yapay zeka motorları, Dijital Sinyal İşlemcileri (DSP'ler) ve diğer özel hızlandırıcılarla birleştirir.
Yeni komut seti ekosistemleri de ortaya çıkıyor. x86 ve ARM birçok pazarda baskınlığını sürdürürken, RISC-V gibi açık mimariler, özellikle yerleşik/IoT sistemlerinde, yapay zeka cihazlarında ve özel silikon tasarımlarında ilgi görüyor.
Birçok açıdan, CPU'ların geleceği tek bir işlemci gibi görünmek yerine, birlikte çalışan özel hesaplama motorlarının bir koleksiyonu gibi görünebilir. Ancak temel hedef, 1978'dekiyle aynı kalır: komutları daha hızlı, daha verimli ve giderek artan ölçeklerde yürütmenin yeni yollarını bulmak.
Ve CPU mimarisinin tarihi herhangi bir şey gösterdiyse, o da bir sonraki atılımın muhtemelen bir laboratuvarda bir yerlerde zaten tasarlandığıdır.