TLB ve veri önbelleği nasıl çalışır?


15

Bir sınav için çalışmaya çalışıyorum ve TLB ve veri önbelleğinin nasıl çalıştığı konusunda şaşkın olduğumu fark ettim.

TLB'nin en son kullanılan fiziksel adreslerin önbelleği olduğunu anlıyorum. Ancak, ders kitabımdaki bir şemaya bakıyordum (aşağıda gösterilmiştir) ve içinde neler olduğunu anlamıyorum. Aniden fiziksel adresi böler ve önbelleği dizine eklemek için kullanır sanırım. Peki neden önbelleği ve verileri ayrı ayrı gösteriyor? ve bayt uzaklığı neden yüzüyor? Önbelleğin de veri depolaması gerektiğinden eminim. Tek amacının içinde bir isabet ya da özlem olup olmadığını belirlemek olduğunu sanmıyorum.

Cehaletim için şimdiden özür dilerim, ancak kitap TLB'leri zar zor kapsıyor (bir sayfadan biraz daha fazlası gibi) ve TLB ve önbellek arasındaki ilişkiyi açıklamakta çok iyi bir iş çıkarmıyor.

şekil


Bu soru çok uzun. Bundan dar ve spesifik bir soru çıkarabilir ve ardından sorunuzu yalnızca tek bir soruya göre düzenleyebilir misiniz? İyi bir soru sormanın bir kısmı, bilmeniz gereken şeyin asgari özü hakkında dikkatlice düşünmeyi ve yalnızca bu soru için önemli ve önemli olanları da içerir. Örneğin, TLB'lerin nasıl çalıştığı hakkında spesifik bir sorunuz varsa, tüm bunları boşaltmak yerine, bir TLB hakkında dar bir şekilde hazırlanmış tek bir soruyu çerçevelemeye ne dersiniz?
DW

Amacım, konu hakkında zaten anladığımı göstermekti, çünkü yığın değişimindeki çoğu insan, asker biraz çaba göstermeden soruları cevaplamaktan hoşlanmıyor (anlaşılır). Sanırım herkesi mutlu edemem. Belki de sorumu kalın bir şeyle düzenlerim.
audiFanatic

@DW daha iyi mi?
audiFanatic

audiFanatic, yorumlarımı ve "biraz çaba göster" zihniyetini yanlış yorumlamış veya yanlış anlamış olabilirsiniz. Benim önerim, dar bir soruyu - "TLB nasıl çalışır? Tam olarak anlamıyorum" gibi bir şeyi tanımlamanız ve daha sonra yalnızca bu soruya yeniden odaklanmanızdır. Evet, cevap için ciddi bir çaba gerekir bu soruyu ve size cevap vermek yaptık çaba göstermelidir belirli soruyu örneğin sabit çalıştı gerçeği yapmak (ama alakasız bir konuda çaba alakalı değildir size bu soruyu düşündüren bir ödev sorusundaki ilerleme).
DW

Bunun arkaplanını anlamanıza yardımcı olalım. Başkalarına yardımcı olacak yüksek kaliteli bir soru ve cevap arşivi oluşturmak istiyoruz (sadece size değil). Yardım etmek için yapabileceğiniz en iyi şey, belirli, dar ve iyi sorulan bir soruyu çıkarmak ve sorunuzu sadece bir soruya odaklamaktır. Çok odaklanmayan, genişleyen, açık uçlu bir sorunun üzerine rastlayabilecek başkalarına yardımcı olma olasılığı daha düşüktür (ve okuyucuların konuya gelmesi ve sorunuzun özünün ne olduğunu anlaması daha zordur, bu nedenle iyi bir yanıt alma olasılığınız düşüktür).
DW

Yanıtlar:


23

Sanırım karışıklığınızı görüyorum. TLB ve veri önbelleği iki ayrı mekanizmadır. Her ikisi de bir tür önbellektir, ancak farklı şeyleri önbelleğe alırlar:

  • Bu nedenle, TLB bu arama için özel bir önbellek görevi görür. TLB'nin birkaç TLB girişi vardır, burada her TLB girişi hem sanal bir adres hem de karşılık gelen fiziksel adresi içerir.

    TLB, işlemcinin sanal adresleri çok hızlı bir şekilde fiziksel adreslere dönüştürmesini sağlar. Bir talimat işlemciden (sanal) bir adres üzerinde bir miktar bellek işlemi yapmasını isterse, işlemci önce TLB'nin o sanal adres için bir giriş içerip içermediğini kontrol eder. Varsa, buna TLB araması için "önbellek isabet" denir ve TLB girişi de çevrilmiş fiziksel adresi de içerdiğinden, işlemci hangi fiziksel adresi kullanacağını hemen bilir. Değilse, bu TLB araması için bir önbellek özledim ve işlemcinin sayfa tablosunu yürüterek sanal-fiziksel dönüşümü zahmetli bir şekilde yapması gerekiyor. (Bu dönüşümü tamamladıktan sonra, bu sanal adresin gelecekteki dönüşümlerinin çok daha hızlı gerçekleşmesi için TLB'ye bir giriş ekler.)

  • Veri önbelleği, bellek içeriği için bir önbellektir. Ana bellek, fiziksel bir adres belirlemenizi ve bu fiziksel adresteki değeri okumanızı sağlar. Ancak, ana bellek yavaştır. Her bellek işlemi yapmak istediğimizde ana belleğe gitmek zorunda olsaydık, işlemcimiz çok yavaş olurdu.

    Bu nedenle, veri önbelleği bellek okumaları için özel bir önbellek görevi görür. Veri önbelleğinde bazı önbellek girdileri bulunur; burada her önbellek girdisi fiziksel bir adres ve bu adresteki bellek değerini içerir.

    Veri önbelleği, işlemcinin bellekten çok hızlı bir şekilde okumasını sağlar. İşlemci bazı (fiziksel) adresteki belleği okumak istediğinde, ilk olarak veri önbelleğini, o adres için bir önbellek girdisi içerip içermediğini kontrol eder. Eğer öyleyse, bu "önbellek isabet" olarak bilinir (veri önbelleğinde) ve işlemci ana belleğe başvurmanıza gerek kalmadan bu önbellek girişinde saklanan veri değerini hemen kullanabilir. Değilse, bu bir "önbellek özledim" dir (veri önbelleği için) ve işlemcinin ana belleğe gitmesi gerekir. (İşlemci bu adresteki değeri ana bellekten aldıktan sonra, veri önbelleğine bir önbellek girişi ekler, böylece aynı adresi okuma önbelleği veri önbelleğinde vurulur.)

Her ikisi de önbellektir, ancak farklı bir amaca hizmet ederler. İşlemci her bir bellek işlemi için her ikisini de kullanır: önce sanal adresten fiziksel adrese dönüştürmek için TLB'yi kullanır, ardından o adresteki bellekte saklanan değeri okuma işlemini hızlandırmak için veri önbelleğini kontrol eder.

Daha fazla ayrıntı için TLB'ler hakkındaki Wikipedia makalesini okuyabilirsiniz . Bir arama yaparsanız, TLB'ler ve veri önbellekleri hakkında birçok başka bilgi bulunur. "TLB" ve "L1 önbellek" ya da "L2 önbellek" aramasını öneririm (son 2 veri önbellek çeşitleridir).

(İleride başvurmak için: burada sormadan ve standart İnternet kaynaklarını kontrol etmeden önce sorunuzla ilgili biraz araştırma yapmanızı bekliyoruz. Yanıt Wikipedia'da bulunabiliyorsa, kendi başınıza yeterli araştırma yapmamış olabilirsiniz. burada sormadan önce nasıl TLBs hakkında bilgi almak için internet kaynaklarına kontrol ederseniz iyi şanslar. Ayrıca bkz yığın taşması kullanıcıların beklenen ne kadar araştırma çabası? . Yani, kendi nasıl artırabileceğini için bir ders olarak kullanmak fırsatı araştırma becerileri - kariyeriniz boyunca sizin için değerli olacak bir şey.)


1
Teşekkür ederim! Bu çoğunlukla her şeyi temizledi. Bunu araştırmak için çok fazla zaman harcadım (birkaç gün), hepsini birbirine bağlayan net, özlü bir bilgi bulamadım (ayrıca karışıklığım muhtemelen aramama yardımcı olmadı). Bir benzetme olarak, teşhis edilmemiş bazı rahatsızlıkların tedavisi için bir eczanede olduğumu hissettim; rehber olarak sadece belirtileri kullanmak.
audiFanatic

Bununla birlikte, bir sorum daha var. Önbellekler ise, kitap neden önbelleğin veri ve etiket bölümlerini ayırıyor (cehennem, veri bölümü etiket ve geçerli bit bölümünden bile daha uzun)? Önbelleğin etiketleri kontrol etmekten başka bir hizmeti sunmadığını gösterir (veri depolamıyormuş gibi). Bu veri bloğu, önbelleğin resim kısmının sağ alt köşesinde mi yoksa ana belleğin bir parçası mı yoksa ne?
audiFanatic

1
VPV+1P+1V+2P+2V+4095P+4095

benbenben

Tamam harika. Teşekkürler. Sanırım beni en çok şaşırtan şey ayrılıktı.
audiFanatic
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.