Иерархическая организация памяти


Иерархическая организация памяти

Рис. 1. 37. Иерархическая организация памяти

Иерархическая организация памяти предусматривает согласование времени доступа, объёма и пропускной способности памяти на различных уровнях. Основная задача, стоящая перед подсистемой памяти – это её виртуализации, т.е. метод автоматического управления иерархической памятью, т.о. что реализуется единая быстродействующая память большого объёма. Учёт локальности потока команд и данных в пространстве и времени и частоты использования данных позволяет построить виртуальную память, в которой :

§ используется блочная пересылка между уровнями;

§ наиболее часто используемые данные располагаются в более быстродействующей памяти.

Кэш-память — это быстродействующая память, расположенная между процессором и основной памятью, между дисковой и основной. Процессор осуществляет обмен только с кэш-памятью, а кэш-контроллер выполняет обмен между кэш-памятью и ОП.

Организации кэш-памяти

Рис. 1. 38. Организации кэш-памяти

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

Кэш-память

Рис. 1. 39. Кэш-память

А – адрес блока;

D – смещение внутри блока.

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

Ёмкость кэш-памяти составляет 1/500…1/100 ёмкости кэшируемой памяти, а её быстродействие 5…10 раз выше нижележащей памяти.

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

Локальность потока команд и данных, заключающийся в том, что взаимосвязанные данные в потоке команд и взаимосвязанные команды в потоке данных находятся на небольшом расстоянии друг от друга, как во времени, так и в пространстве.

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

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

Мы будем использовать следующую модель адресного пространства кэш-памяти и ОП:

Адресное пространство кэш-памяти

Рис. 1. 40. Адресное пространство кэш-памяти

Имеется адресное пространство кэш-памяти, которое разбито на М-мест. Имеется ОП, которая разбивается на блоки (блоков больше чем мест). Причем, в одном месте в кэш-памяти помещается один блок. В кэш-памяти каждый блок снабжается тэгом, в котором записывается, хранящийся в ОП, номер блока. Это означает, что в 0-м месте может находиться 3-й блок, на 1-м месте может находиться N-1 блок в месте М-1 может ничего не находится и т.д. Возникает проблема: если вся кэш-память занята и процессор затребовал данные, которые в данный момент не находятся в кэш-памяти. Необходимо освободить место, которое занято и в него переписать, используя блочный обмен, блок который содержит кусочек требуемых данных, а потом разрешить процессору работать с этими данными в кэш-памяти. Но как выбрать это место в кэш-памяти, ведь можно попасть в то место, которое потребуется в следующий момент времени, поэтому при рассмотрении кэш-памяти говорят о стратегии замещения места. Стратегия обновления основной памяти определяет метод замещения старых данных в основной памяти новыми. Допустим, процессор записал в кэш-память какие-то данные. Освободить это место, не сохранив измененные данные в основной памяти нельзя, то есть должен быть флаг, указывающий на то, что эти данные изменены. Если необходимо освободить место, надо до этого освобождения сохранить эти данные в основной памяти, чтобы не нарушилась целостность данных, иначе процессор, программист или программа будут считать, что они эту ячейку изменили, а окажется, что они изменили кэш-память, а до основной памяти это изменение не дошло. Для решения такой проблемы необходимо выполнить стратегию обновления.

Стратегии:

1. Стратегия обновления. Определяет метод замещения старых данных в основной памяти при их модификации в кэш-памяти: сквозная и обратная запись.

2. Стратегия выборки. Определяет метод выбора места для размещения считанного из основной памяти блока. В разных типах памяти стратегия разная.

3. Стратегия замещения. Определяет метод определения места, куда необходимо разместить новый блок данных, с учётом того, что все доступные места заняты (какой блок выгрузить из кэш-памяти).

clip_image010

Рис. 1. 41. Кэш память

Бит А периодически сбрасывается в “0”. При обращении к блоку бит А устанавливается в “1”. Если флаг сброшен, то это место – кандидат в замещение. Если флаг установлен, то это место – кандидат в замещение в последнюю очередь.

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

Далее стратегия выбора наиболее редко используемого места.

Стратегия выбора немодифицируемого места, то есть то место, где блок не изменился. Из всех редко используемых блоков выбирается любой немодифицированный блок (определяется по флагу). Объем тэговой памяти занимает 10-20% от объема кэш-памяти.

Эффективность кэш-памяти определяется отношением числа успешных обращений (кэш-попаданий) к общему числу обращений к основной памяти процессором. Кэш-промах – это когда требуемая процессором порция данных не находится в кэш-памяти.

Направление просмотра определяет, какой следующий блок будет считан из ОП. Блочная выборка может доставить данные, расположенные как до, так и после затребованной порции процессором. Для учета этого вводится специальный тэг.

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