Способы отображения основной памяти на КЭШ
Алгоритмы поиска и замещения данных в КЭШ непосредственно зависят от способа отображения основной памяти на КЭШ-память.
При кэшировании данных из оперативной памяти широко используются две основные схемы отображения: случайное и детерминированное отображение.
При случайном отображении ячейка оперативной памяти может быть размещена в любом месте КЭШ-памяти. Чтобы можно было найти нужные данные в кэше, они помещаются туда вместе со своим адресом, т. е. тем адресом, который данные имеют в оперативной памяти. При запросе к оперативной памяти, выполняется поиск в КЭШ, критерием которого является адрес оперативной памяти из запроса. Простой перебор при поиске нужных данных в кэше оказывается непригодным из-за недопустимо больших временных затрат.
В КЭШ со случайным отображением используется ассоциативный поиск, при котором сравнение выполняется не последовательно с каждой записью кэша, а параллельно со всеми его записями (рис. 5.17). Признак, по которому выполняется сравнение, называется тегом (tag). В данном случае тегом является адрес данных в оперативной памяти.
Электронная реализация такой схемы приводит к удорожанию памяти, которая существенно возрастает с увеличением объема ЗУ. Поэтому ассоциативная память используется при реализации КЭШ небольшого объёма.
Вытеснение данных из КЭШ происходит, когда вся КЭШ-память заполнена. Выбор данных на выгрузку осуществляется среди всех записей КЭШ. Критерии выбора используются такие же, что и при замещении страниц: выгрузка данных к которым было меньше всего обращений или к которым дольше всего не было обращений.
Рис.5.17. Структура КЭШ со случайным отображением
При детерминированном отображении ячейка оперативной памяти всегда размещается в одном и том же месте КЭШ-памяти. В этом случае кэш-память разделена на строки, каждая из которых содержит определенное количество байт содержимого оперативной памяти и имеет свой номер.
Между номерами строк кэш-памяти и адресами оперативной памяти устанавливается соответствие «один ко многим»: одному номеру строки соответствует несколько (обычно достаточно много) адресов оперативной памяти.
В качестве отображающей функции может использоваться простое выделение нескольких разрядов из адреса оперативной памяти, которые интерпретируются как номер строки кэш-памяти (такое отображение называется прямым). Например, пусть в кэш-памяти может храниться 1024 записи (210=1024), то есть кэш имеет 1024 строки, пронумерованные от 0 до 1023. Тогда любой адрес оперативной памяти может быть отображен на адрес кэш-памяти простым отделением 10 двоичных разрядов (рис. 5.18).
Рис. 5.18. Структура КЭШ с прямым отображением
При поиске данных в кэше используется быстрый прямой доступ к записи по номеру строки, полученному путем обработки адреса оперативной памяти из запроса. Однако поскольку в найденной строке могут находиться данные из любой ячейки оперативной памяти, младшие разряды адреса которой совпадают с номером строки, необходимо выполнить дополнительную проверку. Для этих целей каждая строка кэш-памяти дополняется тегом, содержащим старшую часть адреса данных в оперативной памяти. При совпадении тега с соответствующей частью адреса из запроса констатируется кэш-попадание.
Если же произошел кэш-промах, то данные считываются из оперативной памяти и копируются в кэш. Если строка кэш-памяти, в которую должен быть скопирован элемент данных из оперативной памяти, содержит другие данные, то последние вытесняются из кэша.
Процесс замещения данных в кэш-памяти на основе прямого отображения существенно отличается от процесса замещения данных в кэш-памяти со случайным отображением. Во-первых, вытеснение данных происходит не только в случае отсутствия свободного места в кэше, во-вторых, никакого выбора данных на замещение не существует.
В современных процессорах используют комбинированный способ отображения оперативной памяти на кэш, называемый также ассоциативной памятью со множественным доступом (рис. 5.19). Это позволяет найти компромисс между сравнительно низкой стоимостью кэша с прямым отображением и интеллектуальностью алгоритмов замещения в кэше со случайным отображением. При смешанном подходе произвольный адрес оперативной памяти отображается не на один адрес кэш-памяти (как при прямом отображении) и не на любой адрес кэш-памяти (как при случайном отображении), а на некоторую группу адресов. Все группы пронумерованы аналогично строкам при прямом отображении.
Поиск в кэше осуществляется вначале по номеру группы, а затем в пределах группы путем ассоциативного просмотра всех записей в группе на предмет совпадения старших разрядов адресов оперативной памяти (тэга). При промахе данные копируются по любому свободному месту в группе. При отсутствии свободных мест вытесняется одна из записей в группе аналогично правилам выбора при замещении страниц: выгрузка данных к которым было меньше всего обращений или к которым дольше всего не было обращений. Таким образом, в данном способе комбинируется прямое отображение на группу и случайное отображение в пределах группы.
Рис. 5.19. Структура КЭШ с комбинированным отображением
Управление вводом-выводом
Одной из главных функций ОС является управление устройствами ввода-вывода компьютера. ОС должна передавать устройствам команды, перехватывать прерывания и обрабатывать ошибки; она также должна обеспечивать интерфейс между устройствами и остальной частью системы. В целях развития интерфейс должен быть одинаковым для всех типов устройств (независимость от устройств).