Иерархическая структура памяти
Иерархическая структура памяти является традиционным решением проблемы хранения больших объемов данных (рис. 2.15). На самом верху иерархии находятся регистры процессора. Доступ к регистрам осуществляется быстрее всего. Дальше идет кэш-память, объем которой сейчас составляет от 32 Кбайт до нескольких мегабайтов. Затем следует основная память, которая в настоящее время может вмещать от 16 Мбайт до десятков гигабайтов. Затем идут магнитные диски и, наконец, накопители на магнитной ленте и оптические диски, которые используются для хранения архивов.
По мере продвижения сверху вниз по иерархии меняются три параметра. Во-первых, увеличивается время доступа. Доступ к регистрам занимает несколько наносекунд, доступ к кэш-памяти — немного больше, доступ к основной памяти — несколько десятков наносекунд. Дальше идет большой разрыв: доступ к дискам занимает по крайней мере 10 мкс, а время доступа к магнитным лентам и оптическим дискам вообще может измеряться в секундах (поскольку эти накопители информации еще нужно поместить в соответствующее устройство). Во-вторых, растет объем памяти. Регистры могут содержать в лучшем случае 128 байт, кэш-память — несколько мегабайтов, основная память — десятки тысяч мегабайтов, магнитные диски — от нескольких единиц до нескольких десятков гигабайтов. Магнитные ленты и оптические диски хранятся автономно от компьютера, поэтому их совокупный объем ограничивается только финансовыми возможностями владельца.
Кэш-память
Кэш-память — это высокоскоростная память произвольного доступа, используемая процессором компьютера для временного хранения информации. Она увеличивает производительность, поскольку хранит наиболее часто используемые данные и команды «ближе» к процессору, откуда их можно быстрее получить
Кэш-память напрямую влияет на скорость вычислений и помогает процессору работать с более равномерной загрузкой. Представьте себе массив информации, используемой в вашем офисе. Небольшие объемы информации, необходимой в первую очередь, скажем список телефонов подразделений, висят на стене над вашим столом. Точно так же вы храните под рукой информацию по текущим проектам. Реже используемые справочники, к примеру, городская телефонная книга, лежат на полке, рядом с рабочим столом. Литература, к которой вы обращаетесь совсем редко, занимает полки книжного шкафа.
Компьютеры хранят данные в аналогичной иерархии. Когда приложение начинает работать, данные и команды переносятся с медленного жесткого диска в оперативную память произвольного доступа (Dynamic Random Access Memory — DRAM), откуда процессор может быстро их получить. Оперативная память выполняет роль кэша для жесткого диска.
Основные способы организации кэШа
При любом обращении к более низкому уровню памяти происходит копирование выбранной строки в КЭШ. Более высокий уровень имеет дело уже с копией. Если строка становится пассивной, то она копируется в более низкий уровень. Для адресации строк каждой строке присваивается свой адресный ТЭГ. Этот ТЭГ сопровождает строку информации при копировании ее в КЭШ.
В состав блока КЭШ входят:
-
Сам накопитель. Он хранит строки информации и ТЭГи.
-
Блок фиксации адреса и выявления принадлежности участков адреса данной КЭШ. Блок занимается определением строки по выставленному адресу.
-
Блок определения отсутствия и замены строк в КЭШе.
Существуют основные способы организации КЭШ:
-
КЭШ полностью ассоциативного типа,
-
КЭШ с прямым отображением,
-
Множественно ассоциативный КЭШ.
Кэш с прямым отображением
Кэш с прямым отображением (размещением) является самым простым типом буфера. Адрес памяти однозначно определяет строку кэша, в которую будет помещен блок информации. При этом предполагается, что оперативная память разбита на блоки и каждому такому блоку в буфере отводится всего одна строка. Это простой и недорогой в реализации способ отображения. Основной его недостаток – жесткое закрепление за определенными блоками ОП одной строки в кэше. Поэтому, если программа поочередно обращается к словам из двух различных блоков, отображаемых на одну и ту же строку кэш-памяти, постоянно будет происходить обновление данной строки и вероятность попадания будет низкой.
Достоинством является уменьшение памяти ТЭГов.
Возникают ограничения на расположение страниц в КЭШ и это может не позволить сформировать оптимальный набор страниц КЭШ.
Полностью ассоциативный КЭШ
Кэш с полностью ассоциативным отображением позволяет преодолеть недостаток прямого, разрешая загрузку любого блока ОП в любую строку кэш-памяти. Логика управления выделяет в адресе ОП два поля: поле тега и поле слова. Поле тега совпадает с адресом блока ОП. Для проверки наличия копии блока в кэш-памяти, логика управления кэша должна одновременно проверить теги всех строк на совпадение с полем тега адреса. Ассоциативное отображение обеспечивает гибкость при выборе строки для вновь записываемого блока. Принципиальный недостаток этого способа – в необходимости использования дорогой ассоциативной памяти.
При этом существует два способа замещения пассивной информации на активную:
-
Наугад, когда освобождается любая строка и на ее месте размещается другой блок информации. Этот способ удобен своим быстродействием, но записываемый в ОЗУ блок информации может оказаться активными и при последующем обращении его придется восстанавливать в КЭШ.
-
Контроллер КЭШ отслеживает интервалы обращения к различным блокам в КЭШ и замещает тот блок, к которому дольше всего не было обращения.