TLB yönetimine sahip bir mikroişlemcide (diyelim bir Intel x86-64), TLB eksikse ve işlemci sayfa tablosunda yürüyorsa, bu (çip dışı) bellek erişimi önbellek hiyerarşisinden (L1, L2, vb.) Geçiyorsa. )?
TLB yönetimine sahip bir mikroişlemcide (diyelim bir Intel x86-64), TLB eksikse ve işlemci sayfa tablosunda yürüyorsa, bu (çip dışı) bellek erişimi önbellek hiyerarşisinden (L1, L2, vb.) Geçiyorsa. )?
Yanıtlar:
Evet, anlayabildiğim kadarıyla, Intel x86-64 işlemcilerinde, TLB eksik olduğunda ve işlemci sayfa tablosunda yürürken, bu yonga dışı bellek erişimleri önbellek hiyerarşisinden geçer.
Birkaç ayrıntıda hala biraz bulanıkım ve umarım başka bir cevap onları dolduracaktır - sayfa yürüyüşünü ayrıntılı olarak açıklayan bir Intel veya AMD kılavuzu yok mu? Benim anlayışım şudur:
Thomas W. Barr, Alan L. Cox, Scott Rixner sayfa 2'deki diyagram. " MMU önbelleği tarafından kaydedilen girişler" ile "L2 veri önbelleği tarafından kaydedilen girişler" arasında bir çizgi çizen "Çeviri Önbelleğe Alma: Atla, Yürüme (Sayfa Tablosu) ". (Bu tamamen "Elektronik tasarım" için konu olan yeni CPU tasarlayan insanlar için yararlı bir kağıt olabilir ).
Stephane Eranian ve David Mosberger. "IA-64 Linux Çekirdeğinde Sanal Bellek" ve Ulrich Drepper. "Her programcının bellek hakkında bilmesi gerekenler" (Bu, ED için biraz konu dışı olan IA-64 sayfa tablosuyla ilgilenen işletim sistemleri yazan insanlar için yararlı bir kağıt olabilir - belki "işletim- sistem "etiketi veya " osdev "etiketi veya OSDev.org wiki bu konu için daha iyi bir yer olabilir).
Intel sayfa 533'teki Tablo A-10. "Intel® 64 ve IA-32 Architectures Yazılım Geliştirici Kılavuzu" "PAGE_WALKS.CYCLES ... sayfa yürüyüşlerinin çoğunun önbelleklerden memnun olup olmadığına dair ipucu verebilir veya L2 önbellek kaybına neden olabilir."
invlpg
ISA'lar SW'nin TLB girişlerini değiştirmek için özel talimatlara sahiptir, ancak x86'nın belirli bir virt addr için herhangi bir TLB önbelleğini geçersiz kılmak dışında olduğunu düşünmüyorum. HW sayfa gösterimi o sanal adres için bir giriş bulamazsa veya girişin izinleri erişime izin vermezse, bir #PF
istisna alırsınız . İşletim sistemi, sayfa tablosunu güncelleyerek (muhtemelen diskteki verileri sayfaladıktan sonra veya yazma üzerine kopyalama yaptıktan sonra) ve ardından devam eden yükün / deponun yeniden çalışmasını ve HW pagewalk'ın başarılı olmasını sürdürür.
Bunun bir bilgisayar mimarisi stackexchange'e, elektronik bir stackexchange'e ait olduğunu kabul etme eğilimindeyim, ancak burada olduğu için:
@davidcary doğru.
Bazı tarihler:
Intel x86 sayfa tablosu yürüyüşleri P5, yani Pentium'a kadar önbelleğe alınmadı. Daha doğrusu, sayfa tablosu yürüme belleği erişimleri önbelleğe alınmadı, önbellek atlandı. O zamana kadar çoğu makine yazma yoluyla olduğundan, önbellekle tutarlı değerler aldılar. Ama önbellekleri gözetlemediler.
P6, diğer adıyla Pentium Pro ve AFAIK sonraki tüm işlemci sayfa tablosu yürüyüşlerinin önbelleğe erişmesine ve önbellekten çekilen bir değer kullanmasına izin verildi. Böylece, geri yazma önbellekleriyle çalıştılar. (Elbette sayfa tablolarını, örneğin MTRR'ler tarafından tanımlanan önbelleğe alınamayan bir belleğe yerleştirebilirsiniz. Ancak, işletim sistemlerinde hata ayıklamak için yararlı olsa da, bu büyük bir performans kaybıdır.)
Bu arada, bu "sayfa tablosu yürüme belleği erişimleri veri önbelleklerine erişebilir" den ayrıdır "sayfa tablosu girişleri bir TLB Ttranslation Lookaside Buffer'da saklanabilir (önbelleğe alınabilir)." Bazı makinelerde TLB'ye "Çeviri Önbelleği" denir.
İlgili diğer bir konu, sayfa tablolarının iç düğümlerinin, örneğin PDE-önbellek gibi TLB benzeri veri yapılarında önbelleğe alınabilmesidir.
Önemli bir fark: veri önbelleği uyumludur ve gizlidir. Ancak TLB ve PDE önbellekleri gözetlenmez, yani tutarlı değildir. Sonuç olarak, sayfa tabloları tutarsız TLB'lerde ve PDE önbelleklerinde vb. Önbelleğe alınabileceğinden, yazılımın sayfa tablosu girişleri, önbellek değiştirildi. En azından "tehlikeli" bir şekilde değiştirildiğinde, RW-> R-> I'den gidildiğinde veya adresleri değiştirirken.
Yeni bir tutarlı olmayan TLB benzeri önbellekleme türü eklendiğinde, bazı işletim sistemlerinin bozulduğunu söylemek doğru olur, çünkü bunun yapılmadığı varsayımları vardı.