Кэш-память. Сверхоперативная память

Сверхоперативная память

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

- программируемые в командах “прямоадресуемые” регистры (регистры “общего назначения”), предназначенные для размещения в них данных, часто используемых процессором;

- группы регистров, в которых автоматически (аппаратно) сохраняются часто используемые данные (“кэш (cache) - памяти”).

Использование одного типа регистров в процессоре не исключает использования другого типа регистров.

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

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

- способ доступа к кэш-памяти при обращении к находящимся в ней данным из процессора и при перемещении данных в кэш-память из оперативной памяти;

- способ выполнения записи данных в кэш-память из процессора.

По способу доступа к кэш-памяти различаются следующие организации кэш-памяти:

- полностью ассоциативная кэш-память;

- кэш-память с “прямой” адресацией;

- частично ассоциативная кэш-память.

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

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

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

0000 – 0077, 0400 – 0477, 1000 – 1077, 1400 – 1477 и т.д.

В первый блок кэш-памяти могут быть переданы данные из ячеек оперативной памяти с адресами:

0100 – 0177, 0500 – 0577 и т.д.

Для приведенного примера данные с адресом 0432 могут быть найдены лишь в нулевом блоке кэш-памяти при нахождении в указанном специальном регистре при этом блоке адреса 0400, а данные с адресом 0543 могут быть найдены лишь в первом блоке кэш-памяти при нахождении в его специальном регистре адреса 0500.

В случае “промаха” при обращении в определенный блок кэш-памяти выполняется замена информации в нем на требуемую информацию из оперативной памяти (с возможной предварительной записью находившейся в нем информации в оперативную память как и в случае полностью ассоциативной памяти).

Организация частично-ассоциативной памяти обеспечивает разделение блоков кэш-памяти на группы по одинаковому числу блоков по принципу организации кэш-памяти «с прямой адресацией», а поиск данных в выбранной группе блоков кэш-памяти осуществляется по принципу организации полностью ассоциативной памяти. Так для указанного выше примера четырех блоков кэш-памяти возможна организация частично-ассоциативной памяти из двух групп блоков по два блока в каждой. В “нулевую” группу попадают нулевой и первый блоки, а в первую – второй и третий блоки. Данные с адресами 0000 – 0177, 0400 – 0577, 1000 – 1177, 1400-1577 могут находиться лишь в блоках нулевой группы. Данные с указанными выше адресами 0432 и 0543 могут находиться или отсутствовать либо в нулевом, либо в первом блоке кэш-памяти.

Замена информации в частично-ассоциативной кэш-памяти при “промахе” обращения в нее происходит аналогично замене информации в других организациях кэш-памяти.

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

Память с прямой адресацией отличается наибольшей простотой нахождения места расположения данных в ней.

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: