Bölümler | Kategoriler | Konular | Üye Girişi | İletişim


İşlemci (CPU) Nedir? Nasıl Çalışır?

Genel Yapı

Bir bilgisayarın en popüler ve en önemli parçası işlemcidir. Kısaca CPU (Central Processing Unit / Merkezi İşlem Birimi) olarak anılan işlemciler, adından da anlaşılacağı üzere bir bilgisayardaki işlemleri yürüten ve sonuçları gerekli yerlere gönderen elemandır.

1971 yılında Intel firmasının ilk defa binlerce transistörü bir silikon çip üzerinde birleştirmesinle bilgisayar çağında devrim gerçekleştirilmiş oldu. Bu şekilde daha önce sadece büyük şirketlerin ve üniversitelerin kullanabildiği bilgisayarlar iyice küçüldü ve evlere girmeye başladı.

Mikroişlemci ler, açma kapama anahtarı gibi çalışan milyonlarca transistörden oluşmaktadır. Bu anahtarların programlanma durumuna göre elektrik sinyalleri bunların üzerinden akar. Bu sinyaller, bilgisayarın yaptığı tüm işleri toplama, çıkarma, çarpma ve bölme gibi temel matematiksel işlemlere indirir. İşlemci de bu işlemleri en basit sayma sistemi olan ikilik düzen yani sadece 0 ve 1 sayılarını kullanarak yapar.

Mikroişlemciler her türlü işi ikilik sayma sistemine dökmüştür. Mesela “Y” harfi ikilik sistemde “1011001” ile ifade edilebildiği gibi kırmızı gibi bir renk de bunun gibi ikilik tabandaki üç ayrı sayı grubu ile ifade edilir. Aynı şekilde bir ses veya görüntü kaydı da yine buna benzer ikilik sayı grupları ile ifade edilirler.

Bu sayı grupları üzerinde işlem yapmak için işlemci içerisinde bir takım komut listesinden ibaret bir program mevcuttur. Bu komutlar işlemciye iki sayının çıkarılması, toplanması yönünde emir verebildiği gibi klavyeden girilen tercihlere göre bir takım komut satırını atlayıp (şartlı dallanma - conditional branch) diğer komut satırlarını icra etmeye devam edebilir. Yani klavyeden bir soru karşısında gireceğimiz “E” (evet) veya “H” (hayır) ifadelerine göre program belirli komut satırlarını icra eder veya etmez. Temel olarak, mikroişlemcinin yaptığı iş, bitler üzerinde işlem yapmak üzere komutları çalıştırmaktır.


Üniteler

İşlemci üzerinde komutları icra etme işini uygulama ünite si (execution unit) ya da fonksiyon ünitesi (function unit) adı verilen üniteler gerçekleştirir. Modern işlemcilerde değişik komut türlerini işletmek üzere birden fazla fonksiyon ünitesi bulunur. Çoğunlukla aritmetik/mantıksal ünite (arithmetic/logic unit) olarak da anılan tamsayı (integer) üniteleri tam sayılar ile ilgili işlemleri yapar. Kayan nokta ünitesi (FPU-Floating Point Unit) ise 5,21 gibi küsuratlı sayılarla ilgili işlemleri yapar. Bir mikroişlemcide ne kadar fazla fonksiyon ünitesi varsa aynı anda çalışabilecek komut sayısı da o kadar artar.


Register seti

Register ler, işlem anında bir program tarafından kullanılmakta olan sayıların saklandığı geçici hafıza hücreleridir. Farklı komut ve register setlerine sahip olan işlemciler birbirlerinin yazılımlarını çalıştıramazlar.


Mimari

Mikroişlemciler mimari (architecture) olarak gruplara ayrılırlar. Ortak mimariye sahip olan işlemciler aynı komutları tanımakta ve aynı yazılımları çalıştırabilmektedirler.

En meşhur mikroişlemci mimari si Intel’in x86 işlemcisidir. Intel ilk x86 tabanlı işlemcisini 8086 olarak 1978 yılında piyasaya sürdü. Daha sonraki yıllarda yeni nesil x86 tabanlı işlemciler çıkarıldı. 286,386,486, Pentium ve Pentium Pro olarak bu kuşakları görebilmekteyiz. Pentium II, Celeron, Pentium III, Xeon ve Katmai, altıncı kuşak Pentium Pro’nun varyasyonlarıdır.

Intel’in haricindeki diğer mimariler ise şunlardır: Modern Machintosh’larda bulunan PowerPC, eski Mac’lerdeki 68oxo serisi, Digital ve Compaq’ın güçlü serverlerinde kullanılan Alpha ailesi, Silicon Grahics’in Mips Rxooo serisi, Hawlett-Packard’ın PARISC’i ve Sun Microsystems’e ait SPARC’tır.

Mimariler, ortaya çıktıkları dönemin felsefesine göre dizayn edilirler. 1970’lerde veri saklama cihazları ve hafıza bu güne göre çok kısıtlıydı. Bu kaynakları tasarruflu bir şekilde kullanabilmek için Intel x86 tabanlı işlemcilerde CISC (Complex Instruction Set Computing - Karmaşık komut seti ile hesaplama) diye bilinen bir mimari kullandı. CISC’ın karakteristik iki özelliği, değişken uzunluktaki komutlar ve karmaşık komutlardır. Değişken uzunluktaki komutlar hafıza tasarrufu sağlar. Çünkü basit komutlar karmaşık komutlardan daha kısadır. Karmaşık komutlar da iki ya da daha fazla komutu tek bir komut haline getirdikleri için hem hafızadan hem de programda yer alması gereken komut sayısından tasarruf sağlar.

İlerleyen yıllarda CISC’in kısıtlamaları ve hafızayı tasarruflu kullanmanın önemini yitirmesi neticesinde CISC’a rakip olarak RISC (Reduced Instruction Set Computing - daraltılmış komut seti ile hesaplama) ortaya çıktı.

RISC’ın komutlarının uzunluğu sabittir (genelde de 32 bit’tir) ve her bir komut basit bir işlemi yerine getirir. Bir RISC çipi bu iki karakteristik özelliği sayesinde, fetch (komutu hafızadan taşıma), decode (komutun anlamını çözme) ve komutu çalıştırma işlemlerini daha kolay bir şekilde yapabilir. RISC’ın bir dezavantajı kodun uzamasıdır. Tüm komutlar gerek olsun olmasın 32 bitliktir. Dolayısıyla RISC programları CISC programlarından daha fazla hafıza gerektirebilirler. Buna rağmen decode aşamasının CISC’e göre daha hızlı gerçekleşmesine ek olarak, çoğu RISC komutları sabit bir zaman diliminde işlem görür. Bu da superscalar pipelining teknolojisi kullanan modern işlemciler için önemli bir özelliktir.


Pipelining

Pipelining , tıpkı bir fabrikadaki seri üretim bandı gibi çalışır. Bir fonksiyon ünitesi, her komutun işletilmesini aşamalarına ayırır. Basit bir pipeline’de beş ya da altı aşama olabilir. Bir superpipeline’da ise 10 ya da daha fazla aşama olabilir. Böyle bir pipeline’dan aynı anda birkaç komut birden akabilir. Her komut da ayrı bir aşamada işlem görmekte olabilir. Superscalar bir işlemcide her birisinin kendisine ait pipeline’ı olan iki ya da daha fazla fonksiyon ünitesi yer alabilir. Böyle bir işlemci birkaç komutu birden paralel olarak işletebilir.

RISC bu tekniğe daha da elverişlidir. Çünkü basitleştirilmiş komutlar pipeline’lardan daha pürüzsüz bir şekilde akarlar ve CISC komutlarının neden olabildiği tıkanmalara maruz kalmazlar.


Cache

Cache , çalışmakta olan bir programa ait komutların geçici olarak saklandığı bir hafızadır. Cache hafızalar, işlemcinin komutları daha hızlı yüklemesini sağlayan yüksek hızlı hafızalardır. Cache hafızlar, Level 1 (L1) ve Level 2 (L2) olmak üzere ikiye ayrılırlar. İşlemci ihtiyaç duyduğu komutu ilk önce L1 cache hafızada arar. Eğer işlemcinin aradığı komut burada yoksa L2 cache hafızaya bakılır. Eğer burada da yoksa (cache miss durumu) sırayla, RAM ve HDD üzerindeki sanal hafıza üzerinde arar. L1 cache hafıza bunlar içerisinde en hızlı olanıdır ve genellikle işlemcinin üzerine imal edilir. L2 cache hafıza ise L1 e göre daha yavaş olmasına rağmen gene de hızı çok yüksektir. Bir kısım işlemcilerde (Celeronların ilk nesillerinde olduğu gibi) L2 cache hafıza bulmayabilmektedir. Bu durumda L1 cache hafızaya sığmayan komutlar L2 olmadığı için direkt olarak daha yavaş olan RAM a yazılmakta ve işlemcinin performansı düşmektedir. L2 cache hafıza genelde işlemcinin yakınındaki yüksek hızlı hafıza çiplerinden oluşur. Bazı yeni işlemcilerde (Celeron 300A ve sonrası gibi) L2 cache hafıza işlemcinin içine monte edilmiş ve daha hızlı erişim sağlanmıştır.


Dünden bugüne x86 işlemciler

8086/8088

Intel, 16 bitlik 8086 işlemcisini 1978 yılında piyasaya sürdü. Yüksek seviyeli programlama dillerine ve daha etkin işletim sistemlerine sahip ilk işlemci olan 8086, IBM uyumlu sistemlerin temelini oluşturdu. Arkasından çıkan 8088 işlemci ile IBM ilk kişisel bilgisayarı (PC) piyasaya sürdü. Bu ilk PC’nin 16K hafizası, grafik özelliği olmayan ekranı ve bir teyp bandı sürücüsü vardı.

Bu ilk işlemci dış veriyolu olarak 8 biti destekliyordu ve 4.77 MHz saat hızında çalışmaktaydı.


80286

Kısa bir süre sonra Intel, 80286 işlemcisini çıkartarak PC performansını yeni bir seviyeye yükseltti. 80286 işlemci 16 bit veriyolunu hem içte hem de dışta kullanabiliyordu. Bu da kendinden önceki işlemcilerden çok daha fazla ilgi görmesine sebep oldu ve artık PC’ler için daha güçlü yazılımlar üretilmeye başlandı.

80386

Intel’in bir kuşak sonraki işlemcisi olan 80386 işlemcisi PC dünyasına büyük değişiklikler getirdi. SX ve DX modelleri olan bu işlemcinin en büyük özelliği 32 bit bir işlemci olmasıydı. 286’lardaki veri yolunun iki katına çıkartılması PC’lerde grafik işlemlerini artırdı. Ayrıca saat hızının 16 MHz’den 33 ve 40 MHz’e çıkartılması işlemleri daha da hızlandırdı.


i486

Intel Nisan 1989 yılında i486 işlemciyi piyasaya sürdü. i486 işlemcisi entegre bir chiptir. Bu chip dört farklı işlev grubunu (asıl CPU’yu, bir matematik yardımcı işlemcisini, bir önbellek denetleyicisini ve DX/DX2 modellerinde bir adet genel önbellek, DX4 modellerinde ise iki adet ayrık 8K önbelleği) bir bileşende birleştirmektedir. i486 hem içten hem de dıştan 32-bit yapı kullanır. Saat hızı olarak da 100 MHz’e ulaşmıştır.


Pentium

i486 işlemcilerin hızla yaygınlaştığı bir dönemde Intel P5 kod adıyla tasarladığı yeni işlemci ailesini Pentium adıyla piyasaya sürdü. Dış veriyolu 64-bit iç veriyolu ise 256-bit olan bu işlemci iki adet ayrık 8K’lık önbelleğe sahiptir. Pentium işlemci 486’lardan farklı olarak iki adet tamsayı işlemcisine sahiptir. Kayan nokta işlemcisi de iyice geliştirilmiştir. Ayrıca 486 işlemcilerde olmayan Branch Protection (dallanma tahmini) teknolojisi kullanılmıştır. Bu teknoloji, program sırasında işletilecek olan dallanma (jump) komutlarının dallanacağı tahmin edilen kod kümelerinin daha hızlı erişilen bir ortama kopyalayarak işlenmeye başlanmasına dayanır. Bu şekilde %25 oranında performans artışı sağlanır.

Pentium işlemciler 0.28 mikronluk BICMOS ve CMOS teknolojisi ile üretilmişlerdir. 60 MHz, 75 MHz, 90 MHz, 100 MHz, 120 MHz, 133 MHz, 166 MHz, 200 MHz ve 233 MHz saat hızında üretilmişlerdir.


Pentium Pro

Pentium işlemcilerin yaklaşık iki katı işlemci gücüne sahip olan bu işlemcilerde 5.5 - 6.1 milyon arasında transistör kullanılmıştır. +2.9V besleme gerilimi ile çalışan bu işlemci 166 MHz, 200 MHz, 233 MHz ve 266 MHz saat hızlarında üretilmişlerdir. Bu işlemci daha çok server bilgisayarlar için tasarlanmıştır ve x86 tabanındaki işlemciler için yazılmış tüm yazılımları desteklemektedir. Pentium Pro öncelikle 32 bitlik programlara ihtiyaç duyar. Bu sebeple işlemcinin tam performansla çalışabilmesi için Windows NT gibi gerçek 32 bitlik işletim sistemi kullanılmalıdır.


MMX Teknolojisi

Intel, 1997’nin başlarında Pentium MMX işlemciyi piyasaya sürerek Pentium tasarımına yeni bir boyut kazandırdı. Multi Media Extension’ın kısaltılmışı olan MMX , Pentium işlemcisine 57 adet yeni komutun eklenmesiyle oluşmuş bir işlemcidir. Yani birkaç komutun yaptığı bazı işlemler tek komutta toplanmıştır. Single Instruction - Multiple Data -SIMD (Tek Komut - Çoklu Veri) teknolojisinin kullanıldığı bu işlemcilerde tek bir komutun getirdiği bir çok işlem paralel olarak bir arada yapılabilmektedir.

Bu işlemcilerde multimedya için komut setinin genişletilmesiyle birlikte L1 önbellek kapasitesi de 32 KB’a yani iki katına çıkartılmıştır. İşlem performansı söz konusu olduğunda MMX işlemcilerin verimliliği tartışılmaz. MMX işlemcilerin hızlı olmasındaki en büyük faktör önbelleğin büyüklüğüdür. Ayrıca MMX işlemcilerde besleme gerilimi 5V veya 3.2V’tan 2.8V’a düşürülerek işlemci çekirdeğindeki kayıp performans düşürüldü. Bu sayede yüksek saat hızına rağmen işlemci daha az ısınmaktadır.


Pentium II

MMX teknoloji ile yakaladığı performansı Pentium Pro ile birleştiren Intel Pentium II işlemcileri piyasaya sürdü. Pentium II işlemciler hem yapı olarak hem de fiziki olarak önceki işlemcilerden farklılıklar taşımaktadır. Önceki işlemcilerde Soket 7 yi kullanan Intel Pentium II ile birlikte SEC (Single Edge Contact) adını verdiği ve Slot 1’e girecek yapıda bir dizayn kullandı.

Pentium II ailesinin ilk modeli 233 MHz hızında üretildi. Arkasından 266 MHz, 300 MHz ve 333 MHz modelleri geldi. Intel bu aşamadan sonra 66 MHz’lik veri yolunun yanında 100 MHz’lik veri yolunu da kullanmaya başladı ve daha sonra çıkan işlemciler 350 MHz, 400 MHz ve 450 MHz olarak çıktı.

Pentium II’lerin yapılarındaki ve veriyolu hızlarındaki bu değişiklikler beraberinde anakartların da çeşidini artırdı. 66 MHz veri yolunu kullanan Pentium II’ler için 440LX chip set kullanan anakartlar üretildi. Arkasından 100 MHz veri yolu kullanan işlemciler için 440BX chip setli (aynı zamanda 66 MHz veri yolunu da destekler) anakartlar üretildi.

Pentium II ailesinin son ferdi olan 450 MHz den sonra Pentium III’ler piyasaya sürüldü.


Celeron

Daha çok iş istasyonları ve CAD/CAM gibi geniş uygulamalar için tasarlanan Pentium II’ler son kullanıcılar için pahalı gelmekteydi. Bu durumu değerlendiren Intel, son kullanıcılara yönelik yeni bir işlemci piyasaya sürdü. Celeron ismini verdiği bu işlemcilerin Pentium II’den en büyük farkı L2 ön belleğinin olmamasıydı.

Bu serinin ilk ferdi 266 MHz olarak tasarlanmıştır. L2 ön belleği olmayan Celeronlar Pentium Pro ile aynı performansı göstermektedir. 266 MHz işlemcinin arkasından yine L2 önbelleği olmayan Celeron 300 üretildi.

İlk nesil Celeron işlemcilerin fiyatı çok cazip olmasına rağmen önbellek gerektiren uygulamalarda yetersiz kalması bu işlemcilere ilgiyi azalttı. Bu sırada Intel yine bir atak yaparak 128KB L2 önbelleğe sahip Celeron 300A işlemcisini üretti. Arkasından gelen 333 MHz, 366 MHz, 400 MHz, 433 MHz ve 466 MHz işlemciler 128 KB önbellek geleneğini devam ettirdiler.

Celeron işlemciler 333 MHz’e kadar Slot-1 yapısında üretilirken (Şekil 3 ) bundan sonra Soket-370 yapısında üretilmiştir.

Bu işlemciler 0.25 mikron CMOS teknolojisi ile imal edilmişlerdir. Önbellek içermeyen Celeron işlemcilerde 7.5 milyon transistör varken önbellek içeren işlemcilerde 19 milyon transistör olduğunu görmekteyiz.

Celeron’ların içerdiği 128 KB önbellek işlemcinin içerisindedir ve çekirdek ile aynı hızda çalışırlar. Bu, Celeron işlemcilerin daha kolay overclock edilmelerini sağlar. Ancak Pentium II’ler her zaman Celeron’lara göre daha üstündürler. Çünkü daha önce de belirttiğimiz gibi Celeron’lar son kullanıcılar için, Pentium II’ler ise daha kapsamlı işler için tasarlanmıştır.


Pentium III

Katmai olarak isimlendirilen çekirdekle tasarlanan işlemci, beraberinde bir çok yenilikler de getirdi. Daha önce MMX işlemcilerde gördüğümüz (fakat onlardan çok daha karışık) şekilde 70 adet yeni komutla gelen bu işlemcinin asıl performansı temel yapısındaki değişiklik olmadığı için hemen birden bire bilgisayarımızda bir performans artışı gözlenememektedir. Intel, Pentium III’te de Pentium Pro’dan beri iyileştirilerek kullanılagelen çekirdek kısmı kullanılmıştır.

İşlemciye 70 adet yeni komut eklenmiş ve bu komutları kullanan birimlerde değişiklikler yapılmıştır. Bu komutlar MMX’teki gibi belli bir konuya mahsus komut değillerdir ve üç ana başlık altında toplanırlar.

Intel’in SIMD (Single Instruction, Multiple Data Parallelism - Çoklu Veri Paralelliği Sağlayan Tek Çevrimli Komutlar) genişletmeleri olarak adlandırdığı bu komutlar işlemci içinde farklı çalıştırma birimlerinde işletilirler. Bu komutlardan ilk 50’si FPU (Floating Point Unit - Matematik İşlem Birimi) içerisinde işlenir. Bu şekilde SIMD FPU komutları normalde onlarca saat çevriminde halledilebilecek 32-bitlik çarpımları tek bir saat çevriminde yapabilmekte ve bu komutlarda aynı anda 4 tanesi birden işletilebilmektedir. Bu sayede 3 boyutla ilgili hesapların yapılma süresi ve MPEG-1 ve MPEG-2 kodlarının çözümleri daha kısa zamanda yapılabilmektedir.

Bu komutlarla birlikte işlemciye eklenmiş diğer yapısal bir değişiklik de 8 adet yeni registerdir. Bu yeni register’lar işlemcide yeni SIMD FPU komutları tarafından kullanılmak üzere yer alıyorlar. Register’lar 128-bit’lik bir genişliğe sahiptir. Bu sayede birden çok (dörde kadar) FP ucu bir register’a yüklenebiliyor ya da SIMD komutları bu register’larda saklanabiliyor. Bu şekilde Intel, RISC işlemcilere göre en büyük eksiklik olan register sayısının azlığını yavaş yavaş kapamaya başladı.

Pentium III işlemcilere eklenen komutlardan 12 tanesi “yeni medya” komutları olarak adlandırılarak MMX ünitesince değerlendirilmektedir. Daha hızlı işlenen iki boyutlu grafikler ile video oynatımı, MPEG çözümünde extra hız, codec’lerin kullanılmasında kolaylık ve daha hızlı istatistiki bilgi kullanılması mümkün olmaktadır.

Diğer 8 adet komut ise Pentium III’ün dış dünya ile konuşmasını sağlayan bus kontrolörüne eklenmiştir. Bu komutlar sayesinde daha büyük 3D veri tabanlarının kullanım hızını, düzgün video akışını ve performansı düşüren hafıza ıskaları konularında işlemler olur.

Daha önce de bahsettiğimiz gibi Pentium II’nin önbelleği işlemci hızının yarı hızında çalışmaktaydı. Bu durum Pentium III’de de devam etmiştir ve bu durum performansı bir miktar düşürmektedir. Pentium III’lerin yeni çıkan bazı modellerinde cache bellek 256 KB’a düşürülmüş ve çekirdek içerisine konarak işlemci ile aynı hızda çalışması sağlanmıştır. Bu modellerin sonuna “E” harfi konmaktadır.Ayrıca normalde 100 MHz veriyolu hızında çalışan Pentium III işlemcilerin yine yeni çıkan modelleri 133 MHz hızında çalışmaktadır. Bu modellerin sonuna da “B” harfi eklenmektedir. Mesela Pentium III 600EB işlemcisi 133 MHz hızında çalışan ve 256 KB cache belleğe sahip bir işlemcidir.


Donanım

MollaCami.Com