CPU ( işlemci ) 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.
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.