Який стан теорії алгоритму кешу?


14

Нещодавно я зацікавився загальною проблемою оптимізації використання пам’яті в ситуації, коли доступно більше одного виду пам’яті, і існує компроміс між ємністю певного сегмента пам’яті та швидкістю доступу до неї.

Знайомий приклад - програма, яка вирішує, коли читати з / запису в кеш процесора, оперативної пам’яті та жорсткого диска (через віртуальну пам’ять).

Мене особливо цікавить особливий випадок, коли обсяг даних (включаючи саму програму), які потрібно завантажити, значно перевищує ємність найшвидшого доступного сховища (тобто тривіальне рішення "просто завантажувати все" не застосовується).

Я виявив, що сторінка Вікіпедії, що описує деякі загальні алгоритми кешування, це майже те, що я хочу. На жаль, це дещо низькі рівні:

  • Багато з них, наприклад, LRU або MRU, мають сенс лише у тому випадку, якщо у вас є підпрограми, до яких можна отримати доступ багато разів. Якщо у мене є програма з великою кількістю підпрограм, до яких ніколи не можна отримати доступ за певний цикл, а до деяких з них звертаються один-два рази, ця стратегія ніколи не працюватиме, оскільки вона не може зібрати достатньо даних про те, що зазвичай використовується, а що ні.
  • Інші, наприклад, CLOCK, схоже, мають справу з особливостями впровадження, а не насправді атакують корінь проблеми.
  • Я знаю, що існує стратегія, коли один спочатку профілює програму під час тестового запуску, а потім забезпечує профіль для операційної системи, щоб оптимізувати її відповідно. Однак ми все ж повинні вирішити проблему надання справді репрезентативного «прикладу використання» під час створення профілю.

Я дійсно хочу дізнатись про це: Коли ми абстрагуємо всі технічні засоби та програмне забезпечення і говоримо в чисто теоретичному контексті, чи можна якось проаналізувати структуру алгоритму, розробити ефективну стратегію кешування для це грунтується на високому рівні розуміння того, що алгоритм працює?


Можливо, вас зацікавить модель "графік доступу" .
Ніл Янг

Відповіді:


2

Я не знаю про метод аналізу довільного заданого алгоритму, щоб загалом придумати політику кешу (це звучить досить важко), але це, по суті, те, що зроблено (оптимально, в асимптотичному сенсі) на конкретному випадку - основою для більшості відомих алгоритмів , що не підлягають кешу , шляхом аналізу їхньої структури ділення і підкорення. Алгоритми, що не враховують кеш, відомі як FFT, множення матриць, сортування та деякі інші. Дивіться сторінку Вікіпедії та посилання на неї.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.