İşlemci: (MİB veya CPU) bir bilgisayarın en önemli parçasıdır. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. İşlemci terimi genelde MİB için kullanılır. Mikroişlemci ise tek bir yonga içine yerleştirilmiş bir MİB'dir. Genelde, günümüzde MİB'ler mikroişlemci şeklindedir.
Merkezi işlem birimi (MİB) [ing. Central Process Unit (CPU)], veya basitçe işlemci, dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. İşlemciler, ana depolama ve giriş/çıkış işlemleri ile birlikte bilgisayarların en gerekli parçaları arasında yer alır. Mikroişlemciler ise tek bir yonga içine yerleştirilirmiş bir merkezi işlem birimidir. 1970'lerin ortasından itibaren gelişen mikroişlemciler ve bunların kullanımı, günümüzde MİB teriminin genel olarak mikroişlemciler yerine de kullanılması sonucunu doğurmuştur.
Merkezi işlem birimi aritmetik ve mantıksal işlem yapma yeteneğine sahiptir. Giriş ve çıkış birimleri arasında verilen yazılım ile uygun çalışmayı sağlar. MİB makine dili denilen düşük seviyeli kodlama sistemi ile çalışır; bu kodlama sistemi bilgisayarın algılayabileceği işlem kodlarından oluşur. Bir mikroişlemcinin algılayabileceği kodların tamamına o işlemcinin komut kümesi denir.
Merkezi işlem birimi aritmetik ve mantıksal işlemleri Aritmetik Mantık Birimi (AMB) aracılığıyla yapar. Bunun dışında virgüllü sayılarla daha rahat hesap yapabilmesi için bir Kayan Nokta işlem birimi (FPU) vardır. Mikroişlemcinin içerisinde bulunan küçük veri saklama alanlarına yazmaç denir.
İlk Merkezi İşlem Birim'leri (MİB) daha büyük,bazen türünün tek örneği bilgisayarlar için özel olarak tasarlanmışlardı.Ancak, belirli bir uygulama için özel MİB tasarımının pahalı olması, bir veya birçok amaç için yapılan kitlesel olarak üretilmiş işlemcilerin gelişmesine yol açtı.Bu standartlaşma eğilimi ayrık transistörlü ana sistemler ve mini bilgisayarlar döneminde başladıve entegre devrelerin (ED) popülerleşmesiyle giderek hız kazandı.ED giderek daha karmaşık ve nanometre ile ölçülebilecek MİB'lerin tasarlanmasına ve üretilmesine olanak verdi.MİB'lerin küçülmesi ve standartlaşması, modern hayatta dijital cihazların varlığını ilk bilgisayar örneklerinin sınırlı uygulamalarının çok ötesinde arttırdı.Modern mikroişlemciler otomobillerden, cep telefonlarına ve oyuncaklara, her yerde görünmeye başladı..
Tasarım ve UygulamaTam Sayı Aralığı:Cpu’nun sayıları gösterme şekli bir dizayn tercihidir ve aygıtın çalışma biçimini etkiler. İlk dijital bilgisayarların bazıları, iç yapılarında sayıları göstermek için ondalık sayı sisteminin elektriksel modelini kullanmışlardır. Bunların dışında ki birkaç model ise üçlü sayı sistemini kullanmıştır. Günümüz Cpu’larının hemen hemen hepsi ise ikili formu kullanmaktadır. Bu formda her basamak iki değerli bir fiziksel niceliği, örneğin yüksek(High) veya düşük(Low) voltaj, gösterir.
Sayıların gösterim şekli, Cpu’nun gösterebileceği sayilarin büyüklüğü ve doğruluğu ile ilişkilidir. İkili sayı kullanan bir Cpu’da, Cpu’nun ilgilendiği sayilardaki tek bir yerin adına bit denmektedir. Cpu’nun sayilari göstermek için kullandığı bit sayisina genelde kelime uzunluğu, bit genişliği, veri yolu genişliği veya tamamen tam sayılarla ilgileniliyorsa tam sayi keskinliği denir. Bu sayi (bit sayisi) mimariler arasında farklılık gösterdiği gibi aynı zamanda da aynı Cpu’nun farklı bölümlerinde de bu farklılığı gösterir. Örneğin 8-bit bir Cpu, 28 veya 256 ayrı sayı aralığıyla ilgilenmektedir. Bu tamsayı büyüklüğü, bir Cpu’nun yazılım çalıştırırken kullanılabilecek tam sayı aralığını belirlemede bir donanımsal kısıtlama olarak iş yapmış olur.
Tam sayı aralığı, Cpu’nun adres belirlerken bellekte kullanabileceği yer sayısını da doğrudan etkileyebilir. Örneğin, eğer bir Cpu bellek adresini gösterirken 32 bit kullanıyorsa, ve her bellek adresi bir sekizli(8 bit) ile gösteriliyorsa, bu durumda Cpu’nun erişebileceği maksimum adres değeri 232 sekizlisi veya 4 GiB dir. Bu akış açısı Cpu “Adres Uzayı”’na oldukça basit bir bakış açısıdır ve birçok dizayn daha kompleks adres metotlarını (örneğin sayfalama) kullanarak tam sayı aralığının izin verdiğinden daha çok belleğe erişmeyi başarmaktadır.
Daha yüksek seviye aralıklar, ek basamaklarla ilgilenebilmek için daha çok yapıya ihtiyaç duyar ve bu sebeple daha fazla karmaşıklık, ebat, yüksek güç tüketimi ve maliyet durumları oluşur. Bu sebepten günümüzde yüksek aralığa sahip (16, 32, 64 ve 128) Cpu’lar mevcutken, 4-bit veya 8-bit mikro denetleyicilerin kullanılması oldukça yaygındır. Daha basit mikro denetleyiciler daha ucuz, daha az güç kullanan ve bu sebeple daha az ısınan yapılardır ve bu özellikler, tasarım esnasında seçilmeleri için oldukça yeterli rol oynarlar. Ancak bazı üst-uç uygulamalarda, ekstra aralığın getirdiği kazanç diğer etkenlerden daha büyük rol oynamaktadır. Her iki durumdan da, düşük ve yüksek bit uzunluklarından, kazanç elde etmek için birçok Cpu farklı bölümleri için farklı bit genişlikleriyle tasarlanmaktadır. Örneğin, IBM System/370 Cpu’su asıl olarak 32 bit kullanırken, gezer noktası (floating point) içerisinde 128-bit keskinlik kullanarak daha net ve daha geniş gezer nokta sayıları elde etmeyi gerçekleştirmiştir. Bundan sonraki Cpu tasarımlarında da, özellikle işlemcinin genel amaçlı kullanımlarda tam sayı ve gezer nokta yeteneği arasındaki denge makul bir seviyedeyken, karışık bit genişliğini kullanılmıştır.
Saat Vuruşu Sıklığı:Çoğu Cpu, ve doğal olarak çoğu sıralı mantık aygıtları, senkron yapılardır. Bu yapılar senkron bir sinyalde çalışacak şekilde tasarlanmıştır. Bu sinyale saat sinyali denir ve genelde bir periyodik kare dalga formunda olur. Elektrik sinyallerinin Cpu’nun farklı bölümlerine ulaşabileceği maksimum süreyi hesaplayarak, tasarımcılar bu saat sinyalinin periyodunu uygun olarak seçebilirler.
Kötü durum koşulunda bu periyot, sinyalin ilerleme hızından veya yayılmasından daha uzun olmalıdır. Saat periyodu kötü durum yayılma gecikmesinden yeterince yüksek tutulduğunda, tüm Cpu’nun ve veriyi saat sinyalinin iniş/çıkışları civarında ilerletmesini tasarlamak mümkün olacaktır. Bu durum, Cpu’yu etkili biçimde sadeleştirme avantajını hem dizayn açısından, hem de bileşen sayısı açısından sağlayacaktır. Ancak bunun yanında da, tüm Cpu’nun en yavaş elemanını, diğer bölümler çok daha hızlı çalışabilecekken beklemek zorunda kalması dezavantajını da doğuracaktır. Bu kısıtlama, gelişen Cpu paralleliğinin çeşitli metotları ile telafi edilmektedir.
Mimari geliştirmeler tek başına global senkronize Cpu’ların dezavantajlarını ortadan kaldıramaz. Örneğin, bir saat sinyali, başka elektrik sinyalinin gecikmesine de bağlıdır. Artan kompleks Cpu yapılarında ki yüksek saat hızları, saat sinyalini tüm birim boyunca senkron (aynı fazda) tutmayı zorlaştırır. Bu durum birçok modern Cpu’nun birden fazla eş saat sinyali kullanmasına yol açmıştır; böylece tek sinyalin gecikmesi, Cpu’nun aksamasını engellemiştir. Diğer bir önemli nokta ise, saat hızları arttıkça, Cpu’nun ürettiği ısıda aynı şekilde artmaktadır. Sabit biçimde değişen saat, birçok bileşenin de kullanılmaksızın değişmesine yol açmaktadır. Genel olarak, değişen her bir bileşen, sabit bir bileşenden daha çok enerji tüketmektedir. Bu sebeple, saat hızı arttıkça, ısı dağılması artar, bu da Cpu’da daha etkili soğutma yollarının kullanılmasını gerektirir.
İstenmeyen bileşen geçişini engellemenin bir yolu, saat geçitleme yöntemidir. Bu yöntemle istenmeyen bileşenlere giden saat sinyali kapatılır. Ancak bunu uygulaması zor olduğundan düşük güç tüketimli tasarımların dışında kullanımı pek söz konusu değldir. Global saat sinyaline sahip olan problemlerin çözümünde ki diğer bir yol ise, tüm saat sinyallerinin birden kaldırılmasıdır. Global saat sinyalinin kaldırılması tasarım sürecini oldukça zorlaştırsada, asenkron (veya saatsiz) tasarımlar güç tüketiminde ve ısı dağılımında sahip oldukları büyük avantajları da beraberinde getirmektedirler. Nadir olmakla birlikte, tüm Cpu’ların global saat sinyali içermeden üretildiği de olmuştur. Bunlardan iki önemli örnek vermek gerekirse ARM uyumlu AMULET ve MIPS R3000 uyumlu MiniMIPS’i gösterebiliriz. Bazı Cpu tasarımlarında saat sinyalini tamamiyle çıkarmak yerine, asenkronluk belli bölümlere uygulanmıştır, tıpkı asenkron ALU’ların skalar üstü (superscalar) boruhattı uygulamasıyla birleştirilerek bazı aritmetik performans kazançlarının elde edilmesinde olduğu gibi. Her ne kadar asenkron tasarımların, senkronize karşılıklarından daha iyi bir performans verebileceği çok açık olmasada, baist matemaiksel işlemlerde daha üstün olduğu bir gerçektir. Bu özelliği, mükemmel güç tüketimi ve ısı dağılım özellikleriyle de birleşince, tümleşik bilgisayarlarda kullanılmak için oldukça uygun olduğunu ortaya çıkarmaktadır.
Paralellik:Bir önceki bölümde verilen Cpu’nun esas çalışmasının tanımı, bir Cpu’nun alabileceği en basit şekli tanımlamaktadır. Olağan olarak skalar altı (subscalar) diye temas edilen bu türden Cpu bir seferde bir veya iki parça veri üzerinden verilen komut üzerine çalışmaya başlamakta ve uygulamayı gerçekleştirmektedir.
Bu süreç skalar altı Cpu’da işin özünde bulunan bir yetersizliği ortaya çıkarmaktadır. Bir seferde sadece bir komutun uygulanabilmesi mümkün olduğundan, Cpu’nun tamamı bir sonraki komutu işlemeye başlamadan önce bu ilk komutun tamamlanmasını beklemek zorundadır. Bunun sonucu, skalar altı Cpu uygulamanın tamamlanması için bir saatten fazla çevirimi süren yönergelere “kapalı” kalmaktadır. İkinci bir uygulama biriminin ilave edilmesi bile (aşağıya bakılması), performansı daha fazla iyiye götürmemektedir; birden fazla yönergenin kapalı olmasının yerine, şimdi iki yörünge de kapanmakta ve kullanılmayan transistörlerin sayısı artmaktadır. Cpu’nun uygulama kaynaklarının sadece bir seferde verilen komuta göre çalışabilmesinin mümkün olduğu bu tasarım sadece skalar performansı (saat başına bir komut) bir olasılıkla öğretebilir. Bununla birlikte, performans hemen hemen her zaman skalar altıdır (yani çevirim başına bir komuttan daha az).
Skalar ve daha iyi performans gerçekleştirmesi için yapılan girişimler, Cpu’nun daha az doğrusal ve daha fazla paralel olarak davranmasına neden olan tasarım metodolojilerinde çeşitlilik ile sonuçlanmıştır. Cpu’larda paralellikten söz edilirken, bu tasarım tekniklerinin sınıflandırılması için genel olarak iki deyim kullanılmaktadır. Komut düzeyinde paralellik (ILP) bir Cpu içerisinde komutların yerine getirilme hızını artırmayı araştırmakta (yani kalıp üzerinden uygulama kaynaklarının artırılması) ve program düzeyinde paralellik (TLP) bir Cpu’nun aynı anda uygulamaya girişebileceği program sayısının (fiili bireysel programları) arttırmayı amaçlamaktadır. Her bir metodun uygulanma tarzlarından aynı zamanda da bir uygulama için Cpu’nun performansını artırmada sağladıkları göreceli etkinlik bakımından da birbirlerinden fark etmektedir.
Performans:Bir işlemcinin performansı ve hızı, o işlemcinin saat vurum sıklığına ve saniye başına komut (IPS) sayısına bağlıdır. Saniye başına komut sayısı arttıkça işlemcinin performansı ve hızı da artar. Ayrıca çok çekirdekli işlemcilerden daha fazla performans elde edilir.
Birçok bildirilmiş IPS değerleri birkaç şubesi bulunan yapay talimat dizilerinde zirve yürütme oranları temsil etmiştir, oysa gerçekçi iş yükleri bazıları diğerlerinden daha uzun çalıştırmak için karıştırılmış talimatları ve uygulamaları içerir. Bellek hiyerarşisi performansı MIPS hesaplamalarında ancak dikkate alınan bir sorun olan işlemci performansını oldukça etkiler. Bu problemlerden ötürü, SPECint gibi çeşitli standartlaşmış testler yaygın olarak kullanılan uygulamalar reel efektif performansını ölçmek girişimi için geliştirilmiştir.
CPU ve RAM Bir bilgisayarın işlem performansı çok çekirdekli işlemci (iki ya da daha çok işlemcinin bir bütünleşmiş devrede birleştirilmesi) kullanılarak arttırılabilir. Çift çekirdekli bir işlemci tek çekirdekli bir işlemcinin neredeyse iki katı kadar güçlü olur. Ancak pratikte güç kazancı kusurlu yazılım algoritmaları ve uygulamaları nedeniyle yüzde elli civarındadır.