CPU Nedir? Ne İşe Yarar? Hakkında Bilgi
Bilgisayarlarımızın Anakart üzerinde bulunan en değerli parçası ve bilgisayarlarımızın beyni olan cpu hakkında merak ettiğiniz herşeyi bu yazımızda bulabilirsiniz.
Merkezi işlem birimi (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 Birimler’i (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İBler’in 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ı..
CPU Tarihçesi
İ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 minibilgisayarların ortaya çıkışına dayanmaktadır ve tümleşik devrelerin yayılmasıyla da hız kazanmıştır. Tümleşik devreler, işlemcilerin daha kompleks olarak tasarlanabilmesine 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ı vs.).
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şmiyle ortaya çıkmıştır.
Kayıtlı-program bilgisayar fikri ENIAC tasarımı esnasında mevcut olmasına rağmen, bu fikir makinanın erken bitirilebilmesi için rafa kaldırılmıştı. 30 Haziran 1945’te, 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 1949’da 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 Zuse’nin) benzer fikirler vardı. Ayriyetten, EDVAC’tan önce tamamlanan Harvard Mak I’nın Harvard mimarisi, elektronik bellek yerine delikli kâğı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İB’ler 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, tamamiyle ç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İB’in 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İB’ler 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ından, o zamanlar için 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ı. 1950’ler ve 1960’lar da MİB’lerın transistörlere geçişi ile vakum tübü ve elektriksel röle gibi güvensiz ve kırılgan geçiş elemenları 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İB’ler 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İB’lerı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İB’i 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 mikroprogram (veya mikrokod) konseptini kullanmaya başladı, ki bu konsept modern MİB’lerı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 getircek 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-8’i 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-11’i piyasaya sunacaktı. SSI ve MSI öncelleriyle sahip olduğu fark ile, PDP-11’in ilk LSI gerçekleştirilmesi, 4 LSI tümleşik devreden oluşan bir MİB’e 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üresinde ki belirgin hız artışı sayesinde, MİB’lerin saat hızlarında MHz’in on katları seviyesine erişildi. Ek olarak, ayrık transistör ve tümleşik devre MİB’leri sık kullanımda iken, SIMD (Tek Komut Çoklu Data) vektör işelmcileri 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 Cpu’lar, merkez işlem birimini yürütme metodları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.
Her ne kadar MİB’in 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 çıkakabilecek elektron göçü ve eşikaltı voltajı durumları önemsenecek boyutlara gelmeye başladı. Bu tip endişeler, araştırmacıları yeni metodlar aramaya (quantum bilgisayarı, paralelliğin kullanımının gelişimi) yöneltti.
MİB İşletimi
Çoğu MİB’nin 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İB’leri 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ı, Cpu’nun 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’nun 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’nun bellekten getirdiği komut, Cpu’nun ne yapacağını belirlemede kullanılır. İşte bu kodçözme evresinde, komut Cpu’daki önem oranına göre parçalara ayrılır. Sayısal kodun değerinin yorumlanması, Cpu’nun 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’nun komut çözme işinde sahip olduğu kısımlar değiştirilemez donanımsal parçalardı. Ancak Cpu’ların ve ISA’ların gelişmesiyle, kodun çözümünde ve gerekli ayarların yapılmasında Cpu’ya yardımcı olan mikro programlar kullanılmaya başlandı. Bu mikro programlar, Cpu’nun 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’nun 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’nun 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’nun 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şiti, 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’lardan 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 Boru hattı başlığında incelenen konuları anlatmaktadır, ki birçok elektronik aygıtta (mikro denetleyici) bu basit Cpu 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 hemde hafıza ile iletişim kurmalıdır.
Tasarım ve Uygulama
Tam 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 metodları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 sebeble 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 periyod, 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 metodları 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) boru hattı 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.
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’larda 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.
CPU 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.
Yorum Yap