Önbellek algoritması teorisindeki son teknoloji nedir?


14

Kısa bir süre önce, birden fazla bellek türünün mevcut olduğu ve belirli bir bellek bölümünün kapasitesi ile bu belleğe erişme hızı arasında bir değişimin olduğu bir durumda bellek kullanımını optimize etme genel sorunuyla ilgilenmeye başladım.

Bilinen örnek, işlemci önbelleği, RAM ve sabit sürücüden ne zaman okunacağına / yazacağına karar veren bir programdır (sanal bellek üzerinden).

Özellikle yüklenmesi gereken veri miktarının (programın kendisi dahil) mevcut en hızlı depolama kapasitesini aştığı özel bir durumla ilgileniyorum (yani "sadece her şeyi yükleyin" önemsiz çözümü uygulanamaz).

Neredeyse istediğim gibi bazı yaygın önbellek algoritmalarını açıklayan bir Wikipedia sayfası buldum . Ne yazık ki, bunlar biraz düşük seviyelidir:

  • LRU veya MRU gibi birçoğu, yalnızca birçok kez erişilen alt rutinleriniz varsa mantıklıdır. Çok sayıda alt programa sahip bir programım varsa, bunlardan hiçbirine belirli bir çalıştırmada erişilmezse ve bazılarına bir veya iki kez erişilirse, bu strateji hiçbir zaman işe yaramaz çünkü ne hakkında yeterli veri oluşturamaz yaygın olarak kullanılır ve ne değildir.
  • CLOCK gibi diğerleri, sorunun köküne saldırmak yerine, uygulamanın özellikleriyle uğraşmaktadır.
  • Bir test çalışması sırasında bir programı ilk kez profillendiren, daha sonra işletim sisteminin buna göre optimize etmesi için bir profil sağladığı bir strateji olduğunu biliyorum. Ancak, profili oluştururken gerçek anlamda temsili bir "örnek kullanım" sağlama sorununu yine de çözmemiz gerekir.

Gerçekten öğrenmek istediğim şudur: Donanım ve yazılımın tüm teknik özelliklerini soyutladığımızda ve tamamen teorik bir bağlamda konuştuğumuzda, bir algoritmanın yapısını bir şekilde analiz etmek, etkili bir önbellek stratejisi oluşturmak mümkün mü algoritmanın ne yaptığının yüksek düzeyde anlaşılmasına dayanıyor mu?


"Erişim grafiği" modeliyle ilgileniyor olabilirsiniz .
Neal Young

Yanıtlar:


2

Genel olarak bir önbellek politikası oluşturmak için rasgele verilen bir algoritmayı analiz etmek için bir yöntem bilmiyorum (bu oldukça zor görünüyor), ancak temelde bir vakada yapılan (en uygun şekilde, asimptotik anlamda) -bölme ve fethetme yapılarını analiz ederek, en çok bilinen önbellek- bilmeyen algoritmalar için büyük -temel. Önbellek-habersiz algoritmalar FFT, matris çarpımı, sıralama ve diğerleri için bilinir. Wikipedia sayfasına ve buradaki referanslara bakın .

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.