Merkezî işlem birimi

Merkezi işlem birimi (Türkçe kısaltması MİB, ya da kısaca CPU), dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş 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 masraflı 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ı.
Tarihçe
İlk işlemciler, belli işlemler için özel üretilen ve büyük olan parçalardı. Daha sonraları ise maliyeti çok yüksek olan bu üretim şeklinin yerini, gelişen teknoloji ile daha ufak olan ve tek işlev yerine çok işleve sahip olan üretimler almıştır. Bu dönemin başlaması, transistörlerin ve mini-bilgisayarların ortaya çıkışına dayanmaktadır. tümleşik devrelerin yayılmasıyla da hız kazanmıştır. Tümleşik devreler, işlemcilerin daha kompleks olarak tasarlanmasına ve bunların çok az yer kaplayacak şekilde (milimetreler cinsinden) üretilmesine olanak sağlamıştır. Bu sayede işlemciler modern hayatta birçok yerde kullanılmaya başlanmıştır (otomobiller, cep telefonları...).
Günümüz işlemcilerine benzerliklerin başlamasından önce, ENIAC ve benzeri bilgisayarların belli işleri gerçekleştirebilmesi için bağlantılarının fiziksel olarak değiştirilmesi gerekiyordu. MİB kelimesi genel olarak yazılım (bilgisayar programı) uygulama aracı olarak tanımlandığından, gerçek anlamda MİB'lerin oluşumu kayıtlı-program bilgisayarların gelişimi ile ortaya çıkmıştır.
Kayıtlı-program bilgisayar fikri ENIAC tasarımı esnasında mevcut olmasına rağmen, bu fikir makinenin erken bitirilebilmesi için rafa kaldırılmıştı. 30 Haziran 1945te, ENIAC henüz tamamlanmadan, matematikçi John von Neumann, EDVAC proje raporunun ilk taslağını yayımladı. Bu taslakta kayıtlı-program bilgisayarının ancak Ağustos 1949da tamamlanabileceği gösteriliyordu. EDVAC, belli sayıda operasyonları gerçekleştirecek şekilde tasarlanmıştı. EDVAC için yazılan programlar, kabloların fiziksel olarak değiştirilmeyi gerektiren bir ortamda değil, hızlı bir bilgisayar belleğinde kayıtlı tutuluyordu. Bu özelliğiyle de ENIACın kısıtlamalarının üstesinden gelip, zamandan ve zahmet açısından tasarruf sağlıyordu. Her ne kadar von Neumann kayıtlı-program bilgisayar fikrini ortaya koyan kişi olarak gösterilse de ondan önce de (örneğin Konrad Zusenin) benzer fikirler vardı. Ayrıca, EDVACtan önce tamamlanan Harvard Mark Inın Harvard mimarisi, elektronik bellek yerine delikli kağıt şerit kullanarak kayıtlı-program dizaynı gerçekleştirmişti. Günümüzde ise modern MİB'ler temel olarak von Neumann tasarımı olsa da, Harvard mimarisinden de özellikler göze çarpmaktadır.
Dijital aygıt olmalarından ötürü, tüm MİBler ayrık durumlarla ilgilenirler; bu yüzden durumları ayırt edebilmek için bir çeşit geçiş unsuruna ihtiyaçları vardır. Transistörlerin kabulünden önce, elektriksel röleler ve vakum tüpleri bu amaç için kullanılırlardı. Bunların her ne kadar hız avantajı olsa da, tamamen mekanik dizayn olduklarından değişik sebeplerden dolayı güvenilir değillerdi. Örneğin, doğru akım ardışık mantık devrelerinin rölelerden dışarı kurulması, kontak sekmesi problemiyle baş edebilmek için fazladan donanım gerektiriyordu. Vakum tüpleri kontak sekmesi sorunu yaşamazken, bunlar, tamamıyla çalışır hale gelebilmek için ısınma gerektiriyordu, ve işler durumdan da hep birlikte çıkmaları gerekiyordu. Genelde, tüplerden biri başarısız olduğunda, bozulan parçanın tespit edilmesi için MİBin teşhis edilmesi gerekmekteydi. Bu yüzden vakum tüplü bilgisayarlar daha hızlı olmasına rağmen röle bazlı bilgisayarlardan daha az güvenilirdi. Tüp bilgisayarlarında (EDVAC) arızalanma 8 saatte bir olurken, röle bilgisayarlarında (Harvard Mark I) daha nadir rastlanıyordu. Sonuç olarak ise tüp bazlı MİBler hız avantajının arızalanma sorunundan daha ağır basmasından dolayı daha yaygın hale geldiler. Bu eski senkron MİB çeşitleri, günümüzle kıyaslandığında, oldukça düşük saat frekanslarında çalışmaktaydılar. Kuruldukları geçiş aygıtlarının hızlarıyla kısıtlandıkları için, o zamanlar 100 kHz ile 4 MHz arasında değişen saat sinyal frekans değerleri oldukça yaygındı.
Ayrık transistör
Çeşitli teknolojilerin daha küçük ve daha güvenilir elektronik aygıtlar üretmeye başlamasıyla MİB tasarımlarının kompleks yapıları da artış gösterdi. Bu yoldaki ilk gelişme transistörlerin gelişiyle başladı. 1950ler ve 1960lar da MİBlerın transistörlere geçişi ile vakum tüpü ve elektriksel röle gibi güvensiz ve kırılgan geçiş elementleri artık kullanılmaz hale gelmişti. Bu gelişim sayesinde de, üzerinde ayrık bileşenler bulunan bir veya birden çok baskı devre kartlarına daha kompleks ve daha güvenilir MİBler yerleştirildi.
Bu dönemde, oldukça küçük alanlara fazla sayıda transistör yerleştirebilme metodu popülerlik kazandı. Tümleşik devre (IC) sayesinde, büyük sayıda transistörler, yarı iletken tabanlı kalıplar veya çip denilen birimlerin üzerinde üretilebilindi. İlk başlarda, NOR kapıları gibi sadece belli basit dijital devre tipleri tümleşik devreler üzerine minyatürleştirildi. MİBlerın bu inşa bloğu olan tümleşik devrelere kurulması durumuna küçük-ölçekli tümleşme (SSI) denir. SSI tümleşik devreler, Apollo güdüm bilgisayarında (Apollo guidance computer) kullanılanlar gibi, transistör sayısı açısından onun katları biçimindeydi. Mikro elektronik teknolojisi geliştikçe, tümleşik devre üzerindeki transistör sayılarıda artış gösterdi, ve bu sayede bir MİBi tamamlamak için gereken bağımsız parça sayısını azaltılmış oldu. Orta ve büyük-ölçekli (MSI ve LSI) tümleşik devreler sayesinde, barındırılan transistör sayıları yüzler ve onbinler seviyesine kadar arttı.
1964 senesinde IBM, birkaç seri bilgisayarda kullanılan ve aynı programları değişik hız ve performans değerleriyle yürütebilen System/360 adlı bilgisayar mimarisini tanıttı. O dönemde çoğu elektronik bilgisayar, aynı üreticiden çıkmış olsa bile bir diğeriyle uyumsuzluk sorunu yaşarken bu gelişim oldukça önemli bir yer tutmuştu. Bu gelişimi kolaylaştırmak için, IBM mikro-program (veya mikro-kod) konseptini kullanmaya başladı, ki bu konsept modern MİBlerın çoğunda hala geniş bir biçimde kullanılmaktadır (Amdahl et al. 1964). System/360 mimarisinin popülerliği, onu birkaç onyıl boyunca anaçatı bilgisayar pazarını ele geçirmesini, ve IBM zSeries gibi benzer modern bilgisayarlarda kullanılır hale getirecek bir efsane olmasını sağladı. Aynı yılda (1964), Digital Equipment Corporation (DEC), bilimsel ve araştırma pazarlarını hedef seçmiş bir başka bilgisayar olan PDP-8i piyasaya sürdü. Daha sonları ise DEC, SSI tümleşik devrelere kurulmuş olan ancak sonunda LSI bileşenlerin pratikleşmesiyle bunlarla gerçekleştirilmiş ve oldukça popüler olan PDP-11i piyasaya sunacaktı. SSI ve MSI öncelleriyle sahip olduğu fark ile, PDP-11in ilk LSI gerçekleştirilmesi, 4 LSI tümleşik devreden oluşan bir MİBe sahipti (Digital Equipment Corporation 1975).
Transistör bazlı bilgisayarların, öncellerine kıyasla fazla sayıda ve belirgin avantajları vardı. Yüksek güvenilirlik ve az güç tüketiminin yanı sıra, transistörler sayesinde MİB çalışma hızları transistörlerin sahip olduğu düşük geçiş süreleri sayesinde oldukça artış gösterdi. Bu dönemde, yüksek güvenilirlik ve geçiş süresindeki belirgin hız artışı sayesinde, MİBlerin saat hızlarında MHz'in on katları seviyesine erişildi. Ek olarak, ayrık transistör ve tümleşik devre MİBleri sık kullanımda iken, SIMD (Tek Komut Çoklu Data) vektör işlemcileri gibi yeni yüksek performans tasarımlar ortaya çıkmaya başladı. Başlarda deneysel tasarım olan bu sistemler, daha sonraları ise Cray Inc. gibi firmalar tarafından üretilmiş, uzmanlaşmış süper bilgisayarların çağına adım atılmasını sağlayacaktı.
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 MİB'ler, merkez işlem birimini yürütme metotlarını tamamıyla ele geçirmiş oldu. O zamanki 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İBler ayrık parçalardan 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İBlerin çok az sayıda (genellikle bir) tümleşik devre üzerinde üretiminden oluşuyordu. MİBlerin 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 sayede de 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ştirilmedeki artış, tek bir MİBde 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.
Her ne kadar MİBin karmaşıklığı, ebatları, tasarımı ve genel şekli fazlasıyla değişmiş olsa da temel yapısının ve fonksiyonunun değişmediği görülmektedir. Günümüzde yaklaşık her MİB von Neumann kayıtlı-program makineleri olarak adlandırılabilir.
Moore Kuralı geçerli olmaya devam ettiğinden, tümleşik devre transistör teknolojilerinin sahip olabileceği limitleri hakkında endişeler ortaya çıkmaya başladı. Olabildiğince minyatürleme sonucu ortaya çıkabilecek elektron göçü ve eşikaltı voltajı durumları önemsenecek boyutlara gelmeye başladı. Bu tip endişeler, araştırmacıları yeni metotlar aramaya (quantum bilgisayarı, paralelliğin kullanımının gelişimi) yöneltti.
MİB İşletimi
Çoğu MİBnin temel işlemi, aldıkları fiziksel formdan bağımsız olarak, kayıtlı komut serilerisi dediğimiz programları yürütmektir.. Program, bilgisayar belleğinde saklanan seri sayılar ile gösterilir. Genel olarak von Neumann MİBleri işlemi 4 adımda gerçekleştirirler: Getirme (fetch), kodçözücü (decode), yürütme (execute) ve geri yazma (writeback).
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ı, MİB'nin o andaki programın hangi kısmında olduğunun yerini tutmaktadır. Bir komut alındıktan sonra 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 MİB'nin komutun geri dönmesini beklerken zaman kazanması sağlanır. Bu konu modern işlemcilerde bellekler ve boru hattı mimarilerinde geniş olarak incelenmektedir.
Kod çözme (decode)
MİB'nin bellekten getirdiği komut, MİB'nin ne yapacağını belirlemede kullanılır. İşte bu kodçözme evresinde, komut MİB'deki önem oranına göre parçalara ayrılır. Sayısal kodun değerinin yorumlanması, Mİ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, bazen de bir değeri gösterecek yer olarak (yazmaç veya bellek adresi) olarak verilebilir. Eski tasarımlarda, MİB'nin komut çözme işinde sahip olduğu kısımlar değiştirilemez donanımsal parçalardı. Ancak MİB'lerin ve ISAların gelişmesiyle, kodun çözümünde ve gerekli ayarların yapılmasında MİB'ye yardımcı olan mikroprogramlar kullanılmaya başlandı. Bu mikroprogramlar, Mİ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 MİB'nin birçok kısmı bağlı haldedir. Örneğin, bir toplama işlemi istendiğinde, aritmetik 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 sonuç 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 MİB'nin gerçekleştirebileceğinden çok büyük sonuçlar üretiyorsa, bayrak yazmaçlarındaki aritmetik 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 Mİ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ı direkt 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ılabilir.
Yürütme ve geri yazma evresinden sonra, tüm işlemler tekrarlanır. Bir sonraki komut program sayacının önceden 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. Burada bahsettiğimiz Mİ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 MİB kullanılmaktadır.
Kontrol birimi olan MİB, içinde elektrik sinyalini direkt 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ığı
Mİ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ışındaki birkaç model ise üçlü sayı sistemini kullanmıştır. Günümüz Mİ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, MİB'nin gösterebileceği sayilarin büyüklüğü ve doğruluğu ile ilişkilidir. İkili sayı kullanan bir MİB'de, MİB'nin ilgilendiği sayilardaki tek bir yerin adına bit denmektedir. Mİ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ı MİB'nin farklı bölümlerinde de bu farklılığı gösterir. Örneğin 8-bit bir MİB, 28 veya 256 ayrı sayı aralığıyla ilgilenmektedir. Bu tam sayı büyüklüğü, bir Mİ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ığı, MİB'nin adres belirlerken bellekte kullanabileceği yer sayısını da doğrudan etkileyebilir. Örneğin, eğer bir MİB bellek adresini gösterirken 32 bit kullanıyorsa, ve her bellek adresi bir sekizli(8 bit) ile gösteriliyorsa, bu durumda MİB'nin erişebileceği maksimum adres değeri 232 sekizlisi veya 4 GiB dir. Bu akış açısı Mİ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) Mİ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 MİB farklı bölümleri için farklı bit genişlikleriyle tasarlanmaktadır. Örneğin, IBM System/370 Mİ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 Mİ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 Mİ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 Mİ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 MİB'nin ve veriyi saat sinyalinin iniş/çıkışları civarında ilerletmesini tasarlamak mümkün olacaktır. Bu durum, Mİ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 Mİ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 MİB paralleliğinin çeşitli metotları ile telafi edilmektedir.
Mimari geliştirmeler tek başına global senkronize MİB'lerin dezavantajlarını ortadan kaldıramaz. Örneğin, bir saat sinyali, başka elektrik sinyalinin gecikmesine de bağlıdır. Artan kompleks MİB yapılarındaki yüksek saat hızları, saat sinyalini tüm birim boyunca senkron (aynı fazda) tutmayı zorlaştırır. Bu durum birçok modern MİB'nin birden fazla eş saat sinyali kullanmasına yol açmıştır; böylece tek sinyalin gecikmesi, MİB'nin aksamasını engellemiştir. Diğer bir önemli nokta ise, saat hızları arttıkça, Mİ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 Mİ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ündeki 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 Mİ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 MiniMIPSi gösterebiliriz. Bazı MİB tasarımlarında saat sinyalini tamamıyla çıkarmak yerine, asenkronluk belli bölümlere uygulanmıştır, tıpkı asenkron ALUları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 olmasa da, 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 MİB'nin esas çalışmasının tanımı, bir MİB'nin alabileceği en basit şekli tanımlamaktadır. Olağan olarak skalar altı (subscalar) diye temas edilen bu türden Mİ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ı MİB'de işin özünde bulunan bir yetersizliği ortaya çıkarmaktadır. Bir seferde sadece bir komutun uygulanabilmesi mümkün olduğundan, MİB'nin tamamı bir sonraki komutu işlemeye başlamadan önce bu ilk komutun tamamlanmasını beklemek zorundadır. Bunun sonucu, skalar altı Mİ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. Mİ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, Mİ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. Mİ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 Mİ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 Mİ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 Mİ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ı Mİ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.
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.
Çekirdek Sayısı ile İş Parçacığı Sayısının Karıştırılması
Çekirdek sayısı; tek bir bilgi işlem bileşenindeki (yonga ya da çip) bağımsız merkezi işlem birimi sayısını belirten donanım terimidir. İş parçacığı sayısı ile karıştırılmaktadır. Bazen pazarlamacılar tek çekirdekli iki iş parçacıklı işlemcileri "çift çekirdekli" diye tanıtabilmektedir.