Смекни!
smekni.com

Устройство кэш-памяти и стратегии кэширования (стр. 2 из 2)

Однако в нашем случае между процессором и адресом основной памяти находится кэш-контроллер. Он определяет, находятся ли нужные данные в кэш-памяти SRAM. Если да, то ситуация называется "кэш-попаданием". Случай, когда нужные данные находятся в основной памяти, называется "кэш-промахом". В первом случае кэш-контроллер читает данные из быстрой кэш-памяти и направляет их процессору. Это обычно происходит без ожидания, т.е. с максимальной скоростью шины. Запрос на чтение перехватывается кэш-памятью, и основная память о нем не знает.

В случае кэш-промаха кэш-контроллер должен вначале прочитать данные из основной памяти; таким образом, запрос на чтение переадресуется в основную память. Поскольку это обычно занимает больше времени, то требуется определенное число циклов ожидания; кэш-контроллер сбрасывает сигнал готовности (или другой соответствующий сигнал), и процессор поэтому вставляет циклы ожидания. Одновременно с этим обращается к памяти и кэш-контроллер. Внутренняя организация большинства моделей кэш-памяти такова, что в том случае, когда происходит запрос на чтение информации, которой нет в кэш-памяти, из основной памяти в SRAM читаются не только непосредственно запрашиваемые байты данных, но и вся кэш-строка. Эта операция известна как заполнение кэш-строки. Перед тем, как записать в кэш-память новые данные, нужно, чтобы содержащиеся в ней результаты предыдущих операций были сохранены в основной памяти. Кэш-контроллер достаточно разумен для того, чтобы выполнить циклы чтения и записи данных в основную память независимо друг от друга. Байты данных, запрашиваемые процессором, немедленно, т.е. до завершения полной обработки всей кэш-строки, передаются ему кэш-контроллером.

Кэш-строки обычно составляют 16 или 32 байта, поскольку, как уже говорилось ранее, данные и команды формируются в виде блоков; поэтому очень вероятно, что следующий запрос обратится к информации, содержащейся в той же кэш-строке. Это увеличивает скорость доступа. Кроме того, большинство кэш-контроллеров реализует так называемый пакетный режим, посредством которого считывается целиком блок данных, в котором содержится больше байт, чем позволяет ширина шины (поэтому для чтения блока данных требуется несколько циклов шины). Пакетный режим почти удваивает скорость передачи данных шиной, поэтому целая кэш-строка читается значительно быстрее, чем отдельное значение. Таким образом, организация кэш-памяти в виде кэш-строк увеличивает быстродействие системы.

В случае, когда процессор записывает данные, кэш-контроллер определяет, находятся ли данные в кэш-памяти SRAM. Если да, то данные из процессора записываются в кэш. Существует три различных стратегии, определяющие дальнейшие действия кэш-контроллера: сквозная запись, отложенная запись (известная также как обратное копирование) и запись с размещением. Первые две стратегии относятся к случаю кэш-попадания, последняя - к ситуации кэш-промаха.

Наиболее простым методом является сквозная запись, которая реализована в большинстве моделей кэш-памяти. Операция записи, инициированная процессором, всегда приводит к передаче данных в основную память, даже в случае кэш-попадания; все операции записи проходят через основную память. Это, естественно, касается также записи и обновления соответствующих ячеек кэш-памяти. Сквозная запись имеет тот недостаток, что все операции записи должны производиться также и с основной, более медленной памятью. Если не принять дополнительных мер, то это в принципе может привести к отключению кэш-памяти в режиме записи, результатом чего явится неоправданно большое время доступа при записи. По этой причине модели кэш-памяти со сквозной записью используют быстрые буферы записи, позволяющие буферизовать операции доступа на запись. Однако это возможно только до тех пор, пока буфер не заполнится. Следовательно, многократные запросы на запись неизбежно приводят к состоянию ожидания. С другой стороны, в мультипроцессорных системах стратегия сквозной записи автоматически обеспечивает согласованность содержимого основной памяти, поскольку все данные обновляются через основную память. Согласованность содержимого кэш-памяти, однако, в мультипроцессорных системах не гарантируется. Например, один из процессоров может переписать содержимое основной памяти, а кэш-память другого процессора может ничего об этом не знать. Только цикл просмотра может восстановить согласованность данных.

Кэш с отложенной записью концентрирует все операции записи и обновляет только содержимое элемента кэш-памяти, не затрагивая содержимого основной памяти. Только по определенной команде измененное содержимое кэш-строки записывается в основную память, обновляя содержащуюся в ней информацию. В компьютерах Pentium это может быть выполнено программным путем, например, посредством команды WBIND (записать и аннулировать данные кэш-памяти), путем выдачи аппаратного сигнала FLUSH, при безусловной замене одной кэш-строки другой в случае отсутствия запрашиваемых данных в кэш-памяти, а также при выполнении внутреннего или внешнего цикла просмотра. Недостатком кэш-памяти с отложенной записью является то, что смена строк кэш-памяти занимает больше времени, поскольку до того, как новые данные могут быть записаны в кэш, прежнее содержимое кэш-памяти должно быть записано в основную память. Этот недостаток, однако, более чем компенсируется тем, что предшествующие запросы на запись не проходят через медленную общую память.

Две стратегии кэш-памяти, описываемые здесь, не определяют ее поведения в случае кэш-промаха, т.е. если адрес, к которому происходит обращение, в кэш-памяти отсутствует. Если кэш реализует стратегию записи с размещением, кэш-контроллер заполняет пространство кэш-памяти кэш-строкой, в которую входят данные по запрашиваемому адресу. Обычно данные вначале записываются в основную память; затем кэш-контроллер считывает в кэш ту кэш-строку, элемент которой подлежит обновлению. Поскольку сначала происходит запись информации, процессор может немедленно возобновить выполнение программы. Кэш-контроллер независимо от этого выполняет запись с размещением параллельно с работой процессора. В наихудшем случае он вначале записывает обновленную кэш-строку в основную память, чтобы затем заполнить ее новыми данными. По этой причине и из-за сложности алгоритма работы кэш-памяти большинство моделей кэш-памяти не использует стратегию записи с размещением. Запросы на запись в случае кэш-промаха просто игнорируются кэш-памятью и передаются в основную память.

Если к основной памяти имеют доступ другие процессоры или компоненты системы, как происходит, например, при работе DMA-контроллера, и содержимое памяти изменяется, кэш-контроллер должен информировать соответствующую SRAM о том, что данные в основной памяти были изменены и являются недействительными. Эта операция известна как аннулирование кэш-памяти. Если в кэш-контроллере реализована стратегия отложенной записи и если нужные данные находятся в кэш-памяти, то ее содержимое передается в основную память при особых условиях. Это происходит, например, в том случае, если схема DMA должна передать информацию из основной памяти периферийному устройству, но текущие значения находятся только в кэш-памяти SRAM. Такая операция называется очисткой кэш-памяти.

Программные варианты кэш-памяти, реализованные на компьютере, обладают похожими свойствами. DOS, например, для доступа к гибким и жестким дискам использует внутренние буферы. Можно задать число таких буферов посредством команды BUFFERS в CONFIG.SYS. Эти буферы служат в качестве кэш-памяти, расположенной между процессором, основной памятью и контроллером гибких или жестких дисков. В такой программной кэш-памяти не реализована стратегия сквозной записи, поэтому в случае сбоя системы часть данных, еще не записанных на диск, может находиться в буфере. Только при закрытии обрабатываемого файла или в том случае, если буфер требуется для другого файла или записи, DOS физически записывает содержимое буфера на диск. Выполняя функции 0dh, 5d01h, 68h или выдав прерывание INT 21h, можно заставить DOS выполнить очистку кэш-памяти. С другой стороны, большинство моделей, реализующих программную кэш-памяти для жестких дисков (например, последние версии SMARTDRV, эмулирующие кэш для операций доступа к жесткому диску) в основной памяти, использует стратегию сквозной записи. Все операции записи обращаются при этом к диску, и только чтение производится с копии, размещенной в основной памяти. Новейшие версии SMARTDRV.SYS используют стратегию отложенной записи. В этом случае доступ к диску на запись производится позднее, когда операция отложенной записи может быть выполнена без вмешательства в работу других программ.

ЗАКЛЮЧЕНИЕ

Анализ изложенного выше материала позволяет сделать заключение, что благодаря кэш-памяти уменьшили среднее время доступа к компьютерной памяти. Применение кэш-памяти смешанного типа позволяет добиться превосходных результатов в производительности процессоров и снижает частоту необходимых обращений к основной памяти. Процессор Pentium III компании Intel имеет кэш-память первого уровня емкостью 32 Кбайт на микросхеме процессора и либо кэш-память второго уровня емкостью 256 Кбайт на микросхеме, либо кэш-память второго уровня емкостью 512 Кбайт, не интегрированную с процессором.

Процессоры Intel Pentium III к концу 1999 года выпускались по 180 нм технологии и имели интегрированный кэш второго уровня, работающий на частоте ядра. Но на частотах, близких к 1 ГГц, интегрированный кэш работал нестабильно.

СПИСОК ЛИТЕРАТУРЫ

· Фигурнов, В.Э. IBMPCдля пользователя. Изд. 6-е, перераб. И доп. – М.:ИНФРА-М, 1995. – 432 с.: ил.

· Леонтьев, В.П. Новейшая энциклопедия персонального компьютера 2005. – М.: ОЛМА-ПРЕСС Образование, 2005. – 800 с.: ил.

· Леонтьев, В.П. Персональный компьютер 2003. – М.: ОЛМА-ПРЕСС, 2003. – 920 с.: ил.

· Готовые экзаменационные ответы, информатика, 11 класс, Издательство «Тригон»

· Симонович С.В. Справочник школьника.