"İşlemci önbelleği" sayfasının sürümleri arasındaki fark

tanım ve geliştirme
(→‎Kaynakça: düzeltme AWB ile)
(tanım ve geliştirme)
{{Diğer anlamı|Bellek (anlam ayrımı)}}'''İşlemci önbelleği,''' CPU'nun hafızadaki verilere ulaşma süresini azaltan bir donanımdır. Ana belleğe(RAM) kıyasla küçük, hızlı ve işlemci çekirdeğine yakındır. Sık kullanılan veriler ya da en güncel veriler işlemci önbelleğinde saklanır. Günümüzde pek çok CPU, birden çok seviyede önbellek içerir, bu önbellekler verilerin yanı sıra komutları da bünyesinde tutar.
{{Diğer anlamı|Bellek (anlam ayrımı)}}
 
== Ön belleğin gelişimGelişim süreci ve bilgisayar mimarîsindeki yeri ==
== Ön belleğin tanımı ==
 
[[Moore Yasası]]’nın belirttiği üzere işlemci başarımının bellek başarımına oranı yılda yaklaşık %50 artar. Bu da zaman geçtikçe, işlemci hızının bellek hızından çok daha büyük olmasına sebep olur. İşlemci hızı ile bellek hızı arasındaki günGün geçtikçe artan bu fark, bilgisayar mimarîsinde çeşitli sorunlar meydana getirmiş, işlemci hızının oldukça yüksek değerlere ulaşmasına rağmen, bu hızın tam verimle kullanılamamasına sebep olmuştur. Yani bellek konusunda bir darboğaz oluşmuştur. Bu yüzden [[1980]]<ref>{{Web kaynağı | url = http://www.acm.org/crossroads/xrds5-3/pmgap.html | başlık = işlemci-bellek başarımı farkı | erişimtarihi = 2007-11-08 | yayımcı = acm.org | arşivurl = http://web.archive.org/web/20100519090812/http://www.acm.org:80/crossroads/xrds5-3/pmgap.html | arşivtarihi = 19 Mayıs 2010}}</ref> lerde, işlemci saati ''20 Mhz'' değerlerine ulaşmaya başladığında mimarî geliştiricileri, işlemciyle bellek arasında bir ''tampon'' görevi gören ön belleği üretmişler ve işlemci yongası üstünde kullanmaya başlamışlardır.
Sistem belleğinden gelen [[veri]]ler çoğunlukla [[CPU]]'nun hızına yetişemezler. Bu problemi çözmek için CPU içinde yüksek hızlı hafızalar bulunur.
Ön bellek çalışmakta olan programa ait komutların ve verilerin geçici olarak saklandığı yüksek hızlı hafızalardır.
 
== Ön bellekte yerellikYerellik (''{{dil|en|principle of locality}}'') ==
== Ön belleğin gelişim süreci ve bilgisayar mimarîsindeki yeri ==
 
[[Moore Yasası]]’nın belirttiği üzere işlemci başarımının bellek başarımına oranı yılda yaklaşık %50 artar. Bu da zaman geçtikçe, işlemci hızının bellek hızından çok daha büyük olmasına sebep olur. İşlemci hızı ile bellek hızı arasındaki gün geçtikçe artan bu fark, bilgisayar mimarîsinde çeşitli sorunlar meydana getirmiş, işlemci hızının oldukça yüksek değerlere ulaşmasına rağmen, bu hızın tam verimle kullanılamamasına sebep olmuştur. Yani bellek konusunda bir darboğaz oluşmuştur. Bu yüzden [[1980]]<ref>{{Web kaynağı | url = http://www.acm.org/crossroads/xrds5-3/pmgap.html | başlık = işlemci-bellek başarımı farkı | erişimtarihi = 2007-11-08 | yayımcı = acm.org | arşivurl = http://web.archive.org/web/20100519090812/http://www.acm.org:80/crossroads/xrds5-3/pmgap.html | arşivtarihi = 19 Mayıs 2010}}</ref> lerde, işlemci saati ''20 Mhz'' değerlerine ulaşmaya başladığında mimarî geliştiricileri, işlemciyle bellek arasında bir ''tampon'' görevi gören ön belleği üretmişler ve işlemci yongası üstünde kullanmaya başlamışlardır.
 
== Ön bellekte yerellik (''{{dil|en|principle of locality}}'') ==
 
Ön belleğin çalışma ilkelerinden biri "[[yerellik ilkesi]]" ([[İng.]] ''{{dil|en|principle of locality}}'')’dir. Yerellik ilkesine göre iki tür yerellik vardır.
Bellekten okunan bir ögenin yakınındaki adreslerde bulunan ögelere ulaşmak istemesi olasıdır. Bu sebeple okunan ögenin yakınındaki adreslerde bulunan verilerin işlemciye yakın tutulması gerekir.
 
Yerellik ilkesinden yararlanarak, çalıştırılan programların büyük ölçüde hızlanması sağlanır. Çünküçünkü pek çok program yüksek sayıda [[döngü]] içerir ve yerellik sayesinde bellekte yakın adreslerde tutulan döngü komutları ön belleğe alınıp oldukça hızlı bir şekilde işlenebilir. Tasarımda istenenlere göre büyük boyutlu, ama yüksek zaman erişimine sahip ya da yüksek zaman erişimli, ama düşük kapasiteli bellek kullanılır.
 
Yerellik ilkesini kullanmaktaki amaç kullanıcıya,işleve göre sunulabilen en ucuz belleği sunmak ve en büyük hızı sağlamaktır. Tasarımda istenenlere göre büyük boyutlu, ama yüksek zaman erişimine sahip ya da yüksek zaman erişimli, ama düşük kapasiteli bellek kullanılır.
 
== İlişkilendirmeye göre ön bellek çeşitleriÇeşitleri ve çalışma şekilleri ==
 
Ön belleğin [[başarım]]ını artırmak için tasarımcılar çeşitli yollar düşünmüşlerdir. Ön bellekte başarımı artırmak için üç yöntem uygulanabilir.
Bu başarım ilkelerini gerçekleştirirken mühendisliğin pek çok dalında olduğu gibi birinden kazanç sağlamak için diğer ilkeden ödün verilmesi çoğu zaman kaçınılmazdır.
 
Ön bellekte, gerekli başarımı sağlamak için aranan verinin ön bellekte olup olmaması ve varsa nasıl bulunacağı konusu önemli bir konudur. Bu da ön bellekteki [[öbek]]lerin ([[İng.]] ''<nowiki>{{dil|en|datum) ana bellekteki adreslerle nasıl ilişkilendirileceği (eşleneceği) sorusunun cevabıdır. İlişkilendirme şekillerine göre doğrudan ilişkili, tam ilişkili ve küme ilişkili olmak üzere üç tür ön bellek vardır.</nowiki>''
 
=== Doğrudan ilişkili ön bellek ===
 
Bir ön bellekte, bir alt seviye bellekte bulunan her bir veri ögesi, ön bellekte sadece bir yerde tutulabiliyorsa bu tür ön belleğe '''doğrudan ilişkili ön bellek''' denir. Bu tür ilişkilendirmede alt seviyedeki birden fazla veri ön bellekte '''aynı konum'''u paylaşır. Verilerin ön bellekteki adresi, '''bellek adresleri'''nin ön belleğin öbek boyutuna bölümünden kalan hesaplanarak bulunur. Adresin 2<sup>N</sup> satırlık bir ön bellekte aranılan sözcüğü bulması için öncelikle adres üç parçaya ayrılır. Son '''M''' biti bayt seçimi için kullanılır. ([[Kelime]] boyutu 2<sup>M</sup> bayt olduğu için). Sondan M bit ayrıldıktan sonra kalan kısmın son '''N''' biti satırı seçmek için kullanılır. Adresin ön bellekteki satır sayısına bölünmesiyle bulunur. Geriye kalan kısım ise ön bellekte verinin [[etiket]]i olarak saklanır.
[[Dosya:Tam_Iliskili_Onbellek.jpg|right|thumb|300px|Tam ilişkili ön bellekte ilişkilendirme]]
 
=== Tam ilişkili ön bellek ===
 
Tam ilişkili ön bellekte doğrudan ilişkili ön belleğin aksine adres satırı bölündüğünde konumu tutan bir adres parçası olmaz. Örneğin 32 bitlik öbeklere sahip bir ön bellekte 27 bit etiket, geri kalan bitler ise bayt seçimi için kullanılır. Bu ön bellekte satır numarası tutulmadığından etiketlerle verinin adresi aynı anda karşılaştırılır. Bu tür bir ön bellekte iki veri ögesi aynı ön bellek satırında tutulamayacağından çatışmadan dolayı bulamama 0’dır.
 
=== Kümeli ilişkili ön bellek ===
 
Bu ön bellek türü, doğrudan ilişkili ön belleğin iki, dört veya daha fazla küme şeklinde ilişkilendirilmesiyle oluşturulmuştur. Yine doğrudan ilişkili ön bellekte olduğu gibi '''bellek adresi''' parçalara bölünür ve '''etiket''', '''satır numarası''' ve '''bayt seçimi''' olarak ayrılır. Her bir satır yine satır numarasıyla kontrol edilir. Doğrudan ilişkili ön bellekten farklı olarak satır numarasıyla her bir küme sütunundan öbekler alınır ve etiketle karşılaştırıldıktan sonra eğer veri öbekte bulunduysa küme sayısı kadar girişi olan [[çoklayıcı]]yla ([[İng.]] ''{{dil|en|[[MUX]]}}'') istenen veri öbeği seçilip alınır.
Günümüzde her üç ilişkilendirme türü de tasarımın işlevine ve tasarım [[örüntü]]lerine göre çeşitli ön bellek türlerinde kullanılmaktadır.
 
== Yaz-sil denetimi (''{{dil|en|replacement policy}}'') ==
 
Yeni gelen öbeklere yer açmak için, ön belleğin içinde bulunan öbek veya öbeklerin silinmesi gerekir. Hangi öbeklerin ön bellekten boşaltılacağını belirlemek için kullanılan kurala “'''yaz-sil denetimi'''” ([[İng.]] ''{{dil|en|replacement policy}}replacement policy) denir. Yaz-sil denetiminin ana sorunu ileride en az kullanılacak olan öbeğin tahmin edilip ön bellekten silineceğeni belirlemektir. Donanımın hangi öbeğin en az kullanılacağını belirlemesi oldukça zordur. Günümüzde hangi öbeğin ön bellekten silineceğini belirlemek için kullanılan iki yöntem vardır:
* '''Optimum yaz-sil denetimi:''' Gelecekte hangi öbeklere hangi sıra ile erişim olacağını bilmeyi gerektirir. Bu sıra tahmin edilebilir ya da kod daha önce çalıştırılarak görülebilir. Ancak maliyet yüksektir.
 
== Ön bellekte verinin bulunamamasının sebepleri ==
 
Aranılan öbek her zaman ön bellekte olmayabilir. Bunun sebepleri şunlardır:
* '''Geçersizleştirme:''' Eğer belleğe erişim sonucu bellek içeriği değişirse ön bellek öbeği anlamsız kalır.
 
== Yazma denetimi (''{{dil|en|write policy}}'') ==
 
Bir veri öbeği, yazma aşamasına geldiğinde ön belleğe yazıldığı gibi ana belleğe de yazılmalıdır. Bunu kontrol eden denetime yazma denetimi ([[İng.]] ''{{dil|en|write policy}}''), denetimin davranış şekline de yazma-yazmama tayini ([[İng.]] ''{{dil|en|write, no-write allocation}}'') denir.
 
=== Yazma tayini (''{{dil|en|write allocation}}'') ===
 
Bu atama şeklinde temelde kullanılan iki yöntem vardır.
Yazma ara belleğinin doymasını önlemek için seviyeli bellek yapısı kullanılır. Yazma ara belleği ile ana bellek arasına ikinci seviye bir ön bellek daha eklenir ve “sonra geri yaz” mantığı kullanılır. Genellikle '''ikinci seviye ön bellek''' ana bellek yongası üstünde bulunan SRAM yapıda küçük bir alandır. Bu uygulama bulamama gecikmesini azaltır.
 
=== Yazmama tayini (''{{dil|en|write no-allocate}}'') ===
 
Eğer ön bellekte yazma işlemi gerçekleştirilmiyorsa, yazma işlemini yapmamak için sadece işlemci erişimi ön belleğe kaydediliyorsa bu duruma yazmama tayini ([[İng.]] ''{{dil|en|write no-allocate}}'') denir.
 
==Çalışması ==
== Ön belleğin çalışması ==
 
Bir ön belleğin çalışması, kabaca özetlenirse, işlemci yeni bir veri istediğinde belleğe erişmek istemesiyle başlar. Veri öbeği önce ön bellekte aranır ve bulunursa gerekli öbek işlemci tarafından alınır. Bulunamaması durumunda ise aranılan veri için bir üst seviye bellek kontrol edilir. Bu kullanılan yapıya göre ana bellek veya ikinci seviye bir ön bellek olabilir. Aranılan veri bu bellekten çekildikten sonra, ön belleğe de yazılması gerekir. Bunun için '''yaz-sil denetimi''' kullanılarak seçilen öbeklerin yerine yenileri yerleştirilir.
İşlemcinin ön belleğe yazım işlemini gerçekleştirmesi için ise '''yazma denetimi''' kullanılır. Yazma denetiminin kararına göre veri ön bellekle, belleğe aynı anda veya öbekler ön bellekten çıkarılırken yazılır. Bu aşamada genellikle bir yazma ara belleği kullanılır. Yazılacak veriler ara belleğe yerleştirilir ve bir üst seviyee yazma işlemini bu '''ara bellek''' gerçekleştirir.
 
==Uygulamaları ==
== Ön bellek uygulamaları ==
 
Ön bellekler günümüzde işlemci dışındaki alanlarda veya işlemcide çeşitli farklı işlemleri gerçekleştirmek için kullanılırlar.
 
=== Özelleştirilmiş ön bellek ===
 
[[Boru hattı]] kullanan MİB’ler (Merkezi İşlem Birimi yani CPU) belleğe boru hattındaki birkaç noktadan erişirler. Bunlar buyruğun yakalanması, sanal-fiziksel adres dönüşümü ve veri yakalanmasıdır. Bu noktaların her biri için farklı fiziksel ön bellekler kullanılır, böylece hiçbir fiziksel kaynak boru hattında iki noktaya hizmet vermek zorunda kalmaz. Sonuç olarak boru hattı her biri farklı görevde özelleşmiş en az üç farklı ön bellek ile biter.
 
=== Geri dönüşüm ön belleği ===
 
'''Geri dönüşüm ön belleği''', çakışma veya kapasite azlığından meydana gelen bulamama durumlarından dolayı işlemci ön belleğinden çıkan öbekleri atmak için kullanılır. Geri dönüşüm ön belleği, ana bellek ve onun tekrar dolma yoluna dayanır ve sadece bulamama durumunda öbekleri atar. Bu teknik, bulamama durumunun gecikmesini azaltmak için kullanılır.
 
=== İz ön belleği ===
 
'''İz ön belleği''', buyruğun önceden yakalanmış ve çözülmüş izlerini saklayarak buyruk yakalama [[bant genişliğini]] artırmak ve güç tüketimini azaltmak için kullanılır.
İz çizgileri izdeki ilk buyruğun [[program sayacı]] ve bir [[dallanma tahmini]] kümesine dayanacak şekilde iz ön belleğinde saklanır. Bu, aynı adresle başlayan, her biri farklı dallanma gösteren farklı iz yollarını saklamak için kullanılır. Bir boru hattının buyruk yakalama aşamasında, o anki program sayacı bir dallanma tahmini kümesi ile birlikte iz ön belleğinde erişim için kontrol edilir. Eğer erişim varsa iz çizgisi düzenli bir ön belleğe ya da belleğe gitmeyen buyrukların yakalanmasını sağlar. İz ön belleği, iz çizgisi bitene ya da boru hattında bir yanlış tahmin olana kadar yakalama birimini beslemeye devam eder. Bulamama durumu olduğunda yeni bir iz yaratılmaya başlanır.
 
=== Çok aşamalı ön bellekler ===
 
Büyük ön bellekler daha iyi bulma oranına sahiptirler fakat gecikme süresi fazladır. Bu sorunu çözmek için birçok bilgisayarda büyük ve yavaş ön bellekler tarafından desteklenen küçük ve hızlı ön bellekler kullanılır.
Çok aşamalı ön bellekler genellikle çalışmaya en küçük (aşama 1) ön bellekle başlar ve eğer erişebilirse bu işlemci yüksek hızda çalışır. Eğer küçük ön bellekte bulunamazsa büyük ön bellek (aşama 2) kontrol edilir ve tüm bellek kontrol edilene kadar devam eder.
 
=== Diğer uygulamalar ===
 
Diğer işlemciler,diğer tür tahmin ediciler ve gelecekteki işlemcilerde gelişmesi muhtemel olan çeşitli özelleştirilmiş tahmin ediciler kullanır. Bu tahmin ediciler hesaplaması masraflı bilgiler saklayan ön belleklerdir. İşlemci içinde dallanma tahminleri vb. işlemleri gerçekleştiren tahmin ediciler de ön bellek yapısına sahiptir. Ayrıca [[sanal bellek]] uygulamalarında '''sanal adres'''lerin '''gerçek adres'''lere dönüştürülmesinde de [[adres dönüştürme ön belleği]] ([[İng.]] ''{{dil|en|[[Translation Lookaside Buffer]]}}'') kullanılır
 
== Kaynakça ==
{{kaynakça|2}}
 
 
[[Kategori:Önbellek]]
[[Kategori:Bilgisayar belleği]]
[[Kategori:Merkezi işlem birimi]]
1.274

değişiklik