Принцип действия КЭШ памяти
Содержимое КЭШ памяти – это совокупность записей обо всех элементах загруженных в нее из основной памяти. Каждая запись об элементе данных включает в себя:
1) Значение элемента данных (сама информация).
2) Адрес, который этот элемент данных имеет в ОЗУ (в основной памяти)
3) Дополнительная информация, которая используется для реализации алгоритма смещения данных в КЭШе и обычно включает признак модификации и признак действительности данных.
При каждом обращении к основной памяти по физическому адресу просматривается содержимое КЭШ памяти с целью определения, не находятся ли там нужные данные. КЭШ память не является адресуемой => поиск нужных данных осуществляется по содержимому, т.е. по взятому из запроса значению поля адреса в ОЗУ.
Далее возможен один из вариантов развития событий:
1) Если данные обнаруживаются в КЭШе (быстрой памяти), т.е. произошло КЭШ-попадание – данные считываются из КЭШ и результат передается источнику запроса.
2) Если нужные данные отсутствуют в КЭШе, т.е. произошел КЭШ-промах – они считываются из основной памяти и передаются источнику запроса и одновременно с этим копируются в КЭШ.
Среднее время доступа в системе с КЭШами линейно зависит от вероятности попадания в КЭШ и изменяется от среднего времени доступа к ОЗУ до среднего времени доступа к КЭШу. Т.о. использование КЭШа имеет смысл, когда вероятность попадания в КЭШ высока. Эта вероятность зависит от факторов: объем КЭШ; алгоритм замещения данных в КЭШ; особенности выполняемой программы; времени ее работы; уровня мультипрограммирования и других особенностей вычислительного процесса. В большинстве реализаций процент попадания оказывается высоким (свыше 90%). Такое высокое значение вероятности нахождения данных в КЭШе объясняется наличием 2-х свойств: пространственной и временной локальностей.
Временная локальность – если произошло обращение по некоторому адресу, то следующее обращение по тому же адресу с большой вероятностью произойдет в ближайшее время.
Пространственная локальность – если произошло обращение по некоторому адресу, то с высокой степенью вероятности в ближайшее время произойдет обращение к соседним адресам. Основываясь на свойстве временной локальности данные, только что считанные из основной памяти, размещают в ЗУ быстрого доступа (КЭШе) предполагая при этом, что скоро они опять понадобятся. В начале работы системы, когда КЭШ еще пуст, почти каждый запрос к основной памяти выполняется по полной программе: просмотр КЭШа, констатация промаха, чтение данных из основной памяти, передача результата источнику запроса и копирование данных в КЭШ. Затем, по мере заполнения КЭШа, в соответствии со свойством временной локальности возрастает вероятность обращения к данным, которые уже были использованы на предыдущих этапах работы, т.е. к данным, которые содержатся в КЭШе и могут быть оттуда быстро считаны.
Свойства пространственной локальности так же используются для увеличения вероятности КЭШ-попаданий: как правило, с КЭШ-памяти считывается не один информационный элемент, к которому произошло обращение, а целый блок данных, расположенный в основной памяти в непосредственной близости с данным элементом. Поскольку при выполнении программы очень высока вероятность, что команды выбираются из памяти последовательно одна за другой из соседних ячеек, то имеет смысл загружать в КЭШ-память целый фрагмент программы. Аналогично, если программа ведет обработку массива, то ее работу можно ускорить, загрузив в КЭШ часть или даже весь массив.
УСТРОЙСТВО ВВОДА-ВЫВОДА
Устройства ввод-вывод м разделить на 2 категории: блочные устройства и символьные.
Блочным устройством называется устройство, хранящее данные фиксированного размера, при чем у каждого блока имеется адрес. Обычно размеры блоков независимо от типов устройства колеблются от величины (512 ÷ 32765) байт. Важное свойство состоит в том, что каждый его блок может быть прочитан независимо от остальных блоков. Наиболее распространенными блочными устройствами являются диски.
Символьное устройство – принимает или предоставляет поток символов из какой-либо блочной структуры. Однако не является адресуемой и не выполняет операции поиска.
Примерами являются: принтеры, интерфейсные адаптеры, мыши и т.п. Устройства ввод-вывод покрывают огромный диапазон скоростей, что создает определенные трудности для программного обеспечения, поскольку приходится обеспечивать работоспособность и производительность на скоростях передачи данных, различающихся на несколько порядков.