- •Глава 1 Обзор компьютерных систем
- •1.1. Основные элементы
- •1.2. Регистры процессора
- •Управляющие регистры и регистры состояния
- •1.3. Исполнение команд
- •Выборка и исполнение команды
- •Функции ввода-вывода
- •Множественные прерывания
- •Многозадачность
- •1.5. Иерархия запоминающих устройств
- •1.6. Кэш
- •Обоснование
- •Принципы работы кэша
- •Внутреннее устройство кэша
- •1.7. Технологии ввода-вывода
- •Программируемый ввод-вывод
- •Ввод-вывод с использованием прерываний
- •Прямой доступ к памяти
- •1.8. Рекомендуемая литература
- •1.9. Задачи
- •Приложение а. Характеристики производительности двухуровневой памяти
- •Функционирование двухуровневой памяти
- •Производительность
- •Приложение б. Управление процедурами
- •Реализация стека
- •Вызов процедуры и возврат из нее
- •Реентерабельные процедуры
Внутреннее устройство кэша
В данной книге внутреннее устройство кэша подробно не рассматривается. В этом разделе кратко перечислены лишь основные его элементы. В дальнейшем читатель сможет убедиться, что при изучении устройства виртуальной памяти и дискового кэша мы имеем дело с похожими вопросами. Все их можно разбить на следующие категории:
• размер кэша;
• размер блока;
• функция отображения;
• алгоритм замещения;
• стратегия записи.
С такой характеристикой, как размер кэша, мы уже знакомы. Оказывается, что даже сравнительно маленький кэш может оказать значительное влияние на производительность компьютера. Другим важным параметром является размер блока, задающий величину порции данных, которая передается из основной памяти в кэш. При увеличении размера блока в соответствии с принципом локализации обращений растет результативность поиска, поскольку в кэш попадает больше полезных данных. Однако есть некое предельное значение, при превышении которого результативность поиска начинает уменьшаться. Это происходит тогда, когда вероятность использования вновь считанных данных становится меньше, чем вероятность повторного использования данных, которые необходимо удалить из кэша, чтобы освободить место для нового блока.
При считывании в кэш нового блока данных функция отображения определяет, какое место будет отведено для этого блока. Разрабатывая эту функцию, необходимо учитывать два фактора, накладывающих на нее определенные ограничения. Во-первых, при считывании блока, вероятно, он заменит другой блок в кэше. Хотелось бы сделать это таким образом, чтобы свести к минимуму вероятность того, что заменяемый блок понадобится в ближайшем будущем. Чем более гибкой является функция отображения, тем больше возможностей для разработки такого алгоритма замены, который бы позволил увеличить результативность поиска. Во-вторых, с увеличением гибкости функции отображения должны усложняться схемы, позволяющие определить наличие в кэше требуемой информации и обеспечить ее поиск,
При загрузке блоков в кэш в конце концов наступает момент, когда все слоты заполняются и новый блок нужно записывать на место, занятое каким-то другим блоком. Выбор этого блока осуществляется в соответствии с алгоритмом замещения, на который накладывает ограничения отображающая функция. При этом желательно было бы убрать именно тот блок, который, скорее всего, не понадобится в ближайшем будущем. Хотя достоверно определить его невозможно» достаточно эффективной стратегией является замена блока, к которому дольше всего не было обращений. Такая стратегия называется политикой недавнего использования блока (least-recently-used — LRU). Для определения используемости блоков необходим соответствующий аппаратно реализованный механизм.
Перед изменением содержимого слота кэша его старое содержимое необходимо записать в основную память. Случаи, когда нужно выполнять операции записи, определяются стратегией записи. Одним из предельных случаев является такой, когда запись производится при каждом обновлении блока. В другом случае запись производится только при замене данного блока новым. Такая стратегия сводит к минимуму количество операций записи в память, но при этом в блоках основной памяти содержится устаревшая информация, что может привести к ошибкам при многопроцессорной работе, а также при прямом доступе к памяти со стороны модулей ввода-вывода.