logo
АВМиС - бывшее АПЭВМ / apvem / всякаявсячина

32.Кэш память

Может показаться, что для преобразования виртуального адреса в физический требуется много времени, но на самом деле, это не так. Микропроцессоры Intel 386, 486 и Pentium имеют внутреннюю кэш-память, в которой могут храниться таблицы страниц. Фактически, преобразование адреса осуществляется очень быстро без каких-либо существенных потерь производительности. Накопители на магнитных дисках обладают крайне низкой скоро­стью по сравнению с быстродействием центральной части компьютера. Разница в быстродействии отличается на несколько порядков. Современные процессоры за один такт работы, а они работают уже с частотами в 1 ГГц и более, могут выполнять по две операции. В то же время переход магнитной головки с дорожки на дорожку составляет несколько миллисекунд. Такие же временные интервалы имеют место и при ожидании, пока под головкой чтения/ записи не окажется нужный сектор данных. В современных приво­дах средняя длительность на чтение случайным образом выбранного сектора данных составляет около 20 мс, что существенно медленнее, чем выборка коман­ды или операнда из оперативной памяти и уж тем более из кэша. Правда, после этого данные читаются большим пакетом (при операциях с диском часто читается или записывается сразу несколько секторов). Таким образом, средняя скорость работы процессора с оперативной памятью на 2-3 порядка выше, чем средняя скорость передачи данных из внешней памяти на магнитных дисках в оперативную память. Для того чтобы сгладить такое сильное несоответствие в производительности основных подсистем, используется буферирование и/или кэширование1 данных. Кэширование исключительно, когда программа неоднократно читает с диска одни и те же данные. После того как они один раз будут помещены в кэш, обращений к диску больше не потребуется и скорость работы программы значительно возрастет. под кэшем можно понимать некий пул буфе­ров, которыми мы управляем с помощью соответствующего системного процес­са. Если мы считываем какое-то множество секторов, содержащих записи того или иного файла, то эти данные, пройдя через кэш, там остаются (до тех пор, пока другие секторы не заменят эти буферы). Если впоследствии потребуется повторное чтение, то данные могут быть извлечены непосредственно из опера­тивной памяти без фактического обращения к диску. Ускорить можно и опера­ции записи: данные помещаются в кэш, и для запросившей эту операцию задачи можно считать, что они уже фактически и записаны. Задача может продолжить свое выполнение, а системные внешние процессы через некоторое время запи­шут данные на диск. Это называется операцией отложенной записи Если отложенная запись отключена, только одна задача мо­жет записывать на диск свои данные. Остальные приложения должны ждать своей очереди. Количество буферов, составляющих кэш, ограничено, поэтому возникает ситуация, когда вновь прочитанные или записываемые новые секторы данных должны будут заменить данные в этих буферах.