=== Mikroişlemciler ===
Mikroişlemcilerin 1970 lerde ortaya çıkması, MİB tasarımlarını ve kullanımını oldukça etkiledi. İlk mikroişlemci olan Intel 4004 ün çıkması (1970) ve yine ilk geniş çaplı kullanım sağlayan mikroişlemci olan Intel 8080 (1974) ile bu tip Cpu’larMİB'ler, merkez işlem birimini yürütme metotlarını tamamiyle ele geçirmiş oldu. O zaman ki tüm üreticiler, bilgisayar mimarilerini geliştirebilmek için tümleşik devre geliştirme programları yayınladılar. Bunun sonucunda da eski yazılım ve donanımlarıyla geri-uyumlu olan komut set uyumlu mikroişlemciler ürettiler. Günümüzün kişisel bilgisayarlarının başarısıyla birleşince de MİB kelimesi genel olarak mikroişlemciler için de kullanılmaya başlandı.
Önceki nesil MİB’ler ayrık parçalarlardan ve pek çok küçük tümleşik devrelerin bir veya birden çok devre kartlarında bulunmasıyla gerçekleştiriliyordu. Mikroişlemciler ise, MİB’lerin çok az sayıda (genellikle bir) tümleşik devre üzerinde üretiminden oluşuyordu. MİB’lerin tek kalıp üzerinde üretilmesinin getirdiği bu boyut açısından bu küçülme, parasitik [[sığalık]] geçitlerinin azalması gibi fiziksel faktörler sebebiyle daha hızlı geçiş sürelerinin olmasına olanak sağladı. Bu sayedede senkron mikroişlemcilerin 10 MHz civarlarında olan saat hızları GHz seviyelerine taşındı. Ayrıca, olabildiğince ufak transistörlerin tümleşik devrelere yerleştirilebilmedeki artış, tek bir MİB’de sahip olunan transistör sayısını ve karmaşıklığı da artırdı. Bu geniş gözlem, Moore Kuralı ile tanımlanmıştır ve bu kuralın MİB'deki kompleks yapının zamana bağlı olarak artışının oldukça keskin bir tahminini yapabildiği ispatlanmıştır.
=== Getirme evresi (fetch) ===
Bu evre, program belleğinden komutu almayı içerir. Program belleğindeki yer, programın o andaki yerini bir sayıyla tutan program sayıcı tarafından belirlenir. Başka bir deyişle, program sayıcı, Cpu’nunMİB'nin o andaki programın hangi kısmında olduğunun yerini tutmaktadır. Bir komut alındıktan sonra PC( program sayıcı) , alınan komutun boyunun bellek birim cinsinden değeri kadar artırılır. Bazen getirilmesi gereken komut hızca daha yavaş bir bellekten alınır, böylece Cpu’nunMİB'nin komutun geri dönmesini beklerken zaman kazanması sağlanır. Bu konu modern işlemcilerde bellekler ve boruhattı mimarilerinde geniş olarak incelenmektedir.
=== Kod çözme (decode) ===
Cpu’nunMİB'nin bellekten getirdiği komut, Cpu’nunMİB'nin ne yapacağını belirlemede kullanılır. İşte bu kodçözme evresinde, komut Cpu’dakiMİB'deki önem oranına göre parçalara ayrılır. Sayısal kodun değerinin yorumlanması, Cpu’nunMİB'nin komut set mimarisi (Instruction Set Architecture) ile tanımlanır. Genelde, komuttaki sayiların bir grubu, [[işlem kodu]], hangi işlevin gerçekleştirmesi gerektiğini gösterir. Geri kalan kısımdaki sayılar komut için gerekli bilgileri sağlarlar (örneğin bir toplam işlemi için gereken işlenen değerler). Bu tip işlenenler sabit bir sayı olarak verilebileceği gibi, bazende bir değeri gösterecek yer olarak (yazmaç veya bellek adresi) olarak verilebilir. Eski tasarımlarda, Cpu’nunMİB'nin komut çözme işinde sahip olduğu kısımlar değiştirilemez donanımsal parçalardı. Ancak Cpu’larınMİB'lerin ve ISA’ların gelişmesiyle, kodun çözümünde ve gerekli ayarların yapılmasında Cpu’yaMİB'ye yardımcı olan mikroprogramlar kullanılmaya başlandı. Bu mikroprogramlar, Cpu’nunMİB'nin kodçözme şeklini üretiminden sonra da değiştirebilmek için, bazı durumlarda tekrar yazılabilir olurlardı.
=== Yürütme (execute) ===
Bu evrede, istenen işin gerçekleşebilmesi için Cpu’nunMİB'nin birçok kısmı bağlı haldedir. Örneğin, bir toplama işlemi istendiğinde, aritmek ve mantık birimi (Arithmetic Logic Unit) bir kısım giriş ve çıkışlara bağlı olacaktır. Girişler toplamada kullanılacak sayıları içerirken, çıkışlar ise sonuc değerini tutacaktır. ALU, girişlerde basit aritmetik ve mantık işlemlerini gerçekleştirecek devre yapılarına sahiptir. Eğer toplama işlemi Cpu’nunMİB'nin gerçekleştirebileceğinden çok büyük sonuçlar üretiyorsa, bayrak yazmaçlarında ki aritkemik taşma bayrağı kullanılacaktır.
=== Geri yazma (writeback) ===
Basitçe yürütme evresindeki sonucu bir bellek üzerine geri yazma evresidir. Çoğu zaman sonuçlar Cpu’nunMİB'nin iç yazmaçlarına, daha sonraki komutlarda kullanımı hızlı olabilsin amacıyla, yazılır. Diğer durumlarda ise sonuçlar daha yavaş ancak daha ucuz ve büyük ana belleklere yazılır. Bazı komut tipleri program sayacını direk sonuç üretmeden sadece işlerler. Bunlara genellikle atlama (jumps) denir ve döngü, durumsal program yürütme ve program fonksiyonları gibi davranırlar. Bazı komutlar ise bayrak yazmaçlarının durum değerlerini değiştirme amaçlı olurlar. Bu bayraklar, işlemlerin sonucunu gösterdiğinden, programın çalışma şeklini etkilemek amaçlı kullanılabilirler. Örneğin, “karşılaştırma” komutunun bir çeşidi, iki değeri kıyaslar ve bayrak yazmaçlarına hangisinin büyük olduğuna dair bir sayı atar. Bu bayrak daha sonra program akışı acısından başka bir komuta atlama amaçlı kullanılabilr.
Yürütme ve geri yazma evresinden sonra, tüm işlemler tekrarlanır. Bir sonraki komut program sayacının onceden artırılması sebebiyle getirme evresiyle başlatılır. Eğer önceden tamamlanan komut bir atlama ise, program sayacı bir sonraki adresi gösterecek şekilde tekrar ayarlanır ve yürütme ona göre yapılır. Burda bahsettiğimiz Cpu’lardanMİB'lerden daha gelişmiş olanlarında, birden çok komut aynı anda getirilebilir, kodçözme everisine girebilir ve yürütülebilir. Bu kısım genel olarak klasik RISC Boruhattı başlığında incelenen konuları anlatmaktadır, ki birçok elektronik aygıtta (mikrodenetleyici) bu basit CpuMİB kullanılmaktadır.
Kontrol birimi olan MİB, içinde elektirik sinyalini direk bilgisayar sistemine taşınmasını ve kaydedilmesini sağlayan bir döngü sistemine sahiptir. Kontrol ünitesi program direktiflerin çalıştırmaz, bunun yerine sistemin diğer parçalarını bunu yapması için yönetir. Kontrol ünitesi hem aritmetik/logic ünitesi hem de hafıza ile iletişim kurmalıdır.
== Tasarım ve Uygulama ==
=== Tam Sayı Aralığı ===
Cpu’nunMİB'nin 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ınMİB'lerinı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’nunMİB'nin gösterebileceği sayilarin büyüklüğü ve doğruluğu ile ilişkilidir. İkili sayı kullanan bir Cpu’daMİB'de, Cpu’nunMİB'nin ilgilendiği sayilardaki tek bir yerin adına bit denmektedir. Cpu’nunMİB'nin 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’nunMİB'nin farklı bölümlerinde de bu farklılığı gösterir. Örneğin 8-bit bir CpuMİB, 28 veya 256 ayrı sayı aralığıyla ilgilenmektedir. Bu tamsayı büyüklüğü, bir Cpu’nunMİB'nin 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’nunMİB'nin adres belirlerken bellekte kullanabileceği yer sayısını da doğrudan etkileyebilir. Örneğin, eğer bir CpuMİB bellek adresini gösterirken 32 bit kullanıyorsa, ve her bellek adresi bir sekizli(8 bit) ile gösteriliyorsa, bu durumda Cpu’nunMİB'nin erişebileceği maksimum adres değeri 232 sekizlisi veya 4 GiB dir. Bu akış açısı CpuMİB “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’larMİB'ler 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 CpuMİB farklı bölümleri için farklı bit genişlikleriyle tasarlanmaktadır. Örneğin, IBM System/370 Cpu’suMİB'si 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 CpuMİB 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 CpuMİB, 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’nunMİB'nin 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’nunMİB'nin ve veriyi saat sinyalinin iniş/çıkışları civarında ilerletmesini tasarlamak mümkün olacaktır. Bu durum, Cpu’yuMİB'yi 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’nunMİB'nin 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 CpuMİB paralleliğinin çeşitli metotları ile telafi edilmektedir.
Mimari geliştirmeler tek başına global senkronize Cpu’larınMİB'lerin dezavantajlarını ortadan kaldıramaz. Örneğin, bir saat sinyali, başka elektrik sinyalinin gecikmesine de bağlıdır. Artan kompleks CpuMİB 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’nunMİB'nin birden fazla eş saat sinyali kullanmasına yol açmıştır; böylece tek sinyalin gecikmesi, Cpu’nunMİB'nin aksamasını engellemiştir. Diğer bir önemli nokta ise, saat hızları arttıkça, Cpu’nunMİB'nin ü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’daMİB'de 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ınMİB'lerin 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ı CpuMİB 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’nunMİB'nin esas çalışmasının tanımı, bir Cpu’nunMİB'nin alabileceği en basit şekli tanımlamaktadır. Olağan olarak skalar altı (subscalar) diye temas edilen bu türden CpuMİB 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’daMİB'de işin özünde bulunan bir yetersizliği ortaya çıkarmaktadır. Bir seferde sadece bir komutun uygulanabilmesi mümkün olduğundan, Cpu’nunMİB'nin tamamı bir sonraki komutu işlemeye başlamadan önce bu ilk komutun tamamlanmasını beklemek zorundadır. Bunun sonucu, skalar altı CpuMİB 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’nunMİB'nin 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’nunMİB'nin daha az doğrusal ve daha fazla paralel olarak davranmasına neden olan tasarım metodolojilerinde çeşitlilik ile sonuçlanmıştır. Cpu’lardaMİB'lerde 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 CpuMİB 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’nunMİB'nin 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’nunMİB'nin performansını artırmada sağladıkları göreceli etkinlik bakımından da birbirlerinden fark etmektedir.
==== ILP Instruction Level Parallelism) ====
'''Komut boruhatlaması (Instruction pipelining) ve skalar üstü mimari''', artan ölçülerde parallelik gerçekleştirilmesinde kullanılan en basit yöntemlerden biri bir evvelki komutun uygulanması tamamlanmadan önce getirme (fetching) ve kod çözme (decoding) komutunun ilk aşamalarına başlanmasıdır. Bu, komut boruhatlaması diye bilinen bir tekniğin en basit şeklidir ve hemen hemen bütün çağdaş genel amaçlı Cpu’lardaMİB'lerde kullanılmaktadır. Boruhatlama, uygulama yörüngesinin birbirinden ayrı aşamalara bölünmesiyle, birden çok sayıda komutun belirli bir zamanda uygulanmasına olanak sağlamaktadır. Bu ayırma, uygulama dizisinden dışarı çıkana ve çekilinceye kadar, her bir aşamada verilen bir komutun daha tam duruma getirildiği bir montaj hattıyla karşılaştırılabilir.
Bununla birlikte, boruhatlama, bir evvelki işlemin sonucuna bir sonraki işlemi tamamlamak için gereksinme olduğu bir durumun olasılığını getirmektedir; böyle bir duruma çoğu kez veriye bağımlılık çatışması denmektedir. Bununla başa çıkılması için, bu türden koşullar için varlığını kontrol etmek için ek dikkat gösterilmesi gerekmekte ve bu çatışma meydana geldiği takdirde komut boruhattının bir kısmı gecikmektedir. Doğal olarak, bunu gerçekleştirilmesi ek devre donanımını gerektirmekte ve böylece boruhatlı işlemciler skalar altı işlemcilerden çok daha karmaşık (her ne kadar bu pek önemli değilse de) olmaktadırlar. Boruhatlı işlemciler hemen hemen skalar olabilir ve sadece boruhattı durmasıyla (bir aşamada bir saatten fazla çevrim harcanmasına neden olan komut) engellenebilir.
{{DEFAULTSORT:Merkezî Islem Birimi}}
[[Kategori:Merkezî işlem birimi| ]]
[[ml:സെന്ട്രല് പ്രൊസസിങ് യൂണിറ്റ്]]
|