Ассоциативная память. Развитие ассоциативной памяти

Ассоциативная память

Наименование параметра Значение
Тема статьи: Ассоциативная память
Рубрика (тематическая категория) Компьютеры

Таблица страниц

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

Итак, виртуальный адрес состоит из виртуального номера страницы (high-order bits) и смещения (low-order bits). Номер виртуальной страницы используется как индекс в таблице страниц для нахождения записи (entry) о виртуальной странице. Из этой записи в таблице страниц находится номер кадра (page frame number), затем прибавляется смещение и формируется физический адрес. Помимо этого запись в таблице страниц содержит информацию об атрибутах страницы, в частности биты защиты.

Основную проблему для эффективной реализации таблицы страниц создают большие размеры виртуальных адресных пространств современных компьютеров, которые обычно определяются разрядностью архитектуры процессора. Самыми распространенными на сегодняшний день являются 32-разрядные процессоры, позволяющие создавать виртуальные адресные пространства такого размером 4 Гб (для 64-разрядных компьютеров эта величина равна 2**64б).

Подсчитаем примерный размер таблицы страниц. В 32-битном адресном пространстве при размере страницы 4К (Intel) получаем 1М страниц, а в 64-битном и того более. Т.о. таблица должна иметь 1М строк (entry), причем запись в строке состоит из нескольких байт. Заметим, что каждый процесс, нуждается в своей таблице страниц (а в случае сегментно-страничной схемы по одной на каждый сегмент). Итак, в данном случае таблица страниц должна быть чересчур большой.

Вместе с тем, отображение должно быть быстрым. Отображение должно быть быстрым, так как оно делается при каждом обращении к памяти, ĸᴏᴛᴏᴩᴏᴇ происходит практически в каждой машинной инструкции. Эта проблема решается главным образом за счёт реализации ассоциативной памяти.

Для того чтобы избежать крайне важно сти иметь огромную таблицу в памяти всœе время, а хранить лишь несколько ее фрагментов (это возможно опять же на основании свойства локальности), многие компьютеры используют многоуровневую таблицу страниц.

Рассмотрим модельный пример (рис.10.4). Предположим, что 32-разрядный адрес делится на 10-разрядное поле Рtr1, 10-разрядное поле Рtr2 и 12-разрядное смещение Offset. 12 разрядов смещения позволяют локализовать байт внутри страницы размером 4К (2**12), а всœего имеем 2**20 страниц. Как видно из рис. 9.4 1024 строки в таблице верхнего уровня при помощи поля Ptr1 ссылаются на 1024 таблицы второго уровня, каждая из которых содержит также 1024 строки. При помощи поля Ptr2 каждая строка таблицы второго уровня указывает на конкретную страницу. Смысл такой организации в том, чтобы избежать поддержки всœех таблиц второго уровня (а их 1024) в памяти постоянно. Рассмотрим пример с круглыми цифрами. Допустим, что процессу нужны 12М памяти: 4М в нижней части памяти для кода, 4М в нижней части для данных и 4М в верхней части памяти для стека. Между дном стека и верхом данных гигантское пространство размером 4Gb-12Mb, ĸᴏᴛᴏᴩᴏᴇ не используется. Для этого случая необходимы лишь 1 таблица верхнего уровня и 3 таблицы второго уровня. Такой подход естественным образом обобщается на три и более уровней таблицы.

Рассмотрим одну из записей таблицы страниц. Ее размер колеблется от системы к системе, но 32 бита - наиболее общий случай. Самое важное поле - номер кадра. Цель страничного отображения - локализовать эту величину. Далее бит присутствия, биты защиты (к примеру, 0 - read/write, 1 - read only ...), биты модификации (если на нее писали) и биты ссылки, которые помогают выделить мало используемые страницы, биты разрешающие кэширование. Заметим, что адреса страниц на диске не являются частью таблицы страниц.

Рисунок 10.4 - Пример двухуровневой таблицы страниц.

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

Количество уровней в таблице страниц зависит от конкретных особенностей архитектуры. Можно привести примеры реализации одноуровневого (DEC PDP-11), двухуровневого (Intel, DEC VAX), трехуровневого (Sun SPARC, DEC Alpha) paging"а, а также paging"а с задаваемым количеством уровней (Motorola). Функционирование RISC процессора MIPS R2000 осуществляется вообще без таблицы страниц. Здесь поиск нужной страницы, в случае если эта страница отсутствует в ассоциативной памяти, должна взять на себя ОС (так называемый zero level paging).

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

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

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

Одна запись в таблице в ассоциативной памяти содержит информацию про одну виртуальную страницу, ее атрибуты и кадр, в котором она находится. Эти поля в точности соответствуют полям в таблице страниц.

Отображение виртуальных страниц, хранимых в ассоциативной памяти, осуществляется быстро, однако кэш память является дорогостоящей и имеет ограниченный размер.
Размещено на реф.рф
Число записей в TLB от 8 до 2048

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

Рассмотрим функционирование менеджера памяти при наличии ассоциативной памяти. Вначале он ищет виртуальную страницу в ассоциативной памяти. В случае если страница найдена - всœе нормально за исключением случаев нарушения привилегий, когда запрос на обращение к памяти отклоняется.

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

Процент раз, когда номер страницы находится в ассоциативной памяти, принято называть hit (совпадение) ratio (пропорция, отношение). Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, hit ratio - часть ссылок, которая должна быть сделана с использованием ассоциативной памяти. Обращение к одним и тем же страницам повышает hit ratio.

К примеру, предположим, что для доступа к таблице страниц крайне важно 100 нс, а для доступа к ассоциативной памяти 20 нс. С 90% hit ratio среднее время доступа - 0.9*20+0.1*100 = 28 нс.

Вполне приемлемая производительность современных ОС доказывает эффективность использования ассоциативной памяти. Высокое значение вероятности нахождения данных в ассоциативной памяти связано с наличием у данных объективных свойств: пространственной и временной локальности.

Необходимо обратить внимание на следующий факт. При переключении процессов нужно добиться того, чтобы новый процесс не видел в ассоциативной памяти информацию, относящуюся к предыдущему процессу, к примеру, очищать ее. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, использование ассоциативной памяти увеличивает время переключения контекстов.

Ассоциативная память - понятие и виды. Классификация и особенности категории "Ассоциативная память" 2017, 2018.

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

Особо отметим, что при таком запросе возможен один из трех результатов:

  1. имеется в точности одна строка с заданным тегом;
  2. имеется несколько строк с заданным тегом;
  3. нет ни одной строки с заданным тегом.

Поиск записи по признаку - это действие, типичное для обращений к базам данных, и поиск в базе зачастую чвляется ассоциативным поиском. Для выполнения такого поиска следует просмотреть все записи и сравнить заданный тег с тегом каждой записи. Это можно сделать и при использовании для хранения записей обычной адресуемой памяти (и понятно, что это потребует достаточно много времени - пропорционально количеству хранимых записей!). Об ассоциативной памяти говорят тогда, когда ассоциативная выборка данных из памяти поддержана аппаратно. При записи в ассоциативную память элемент данных помещается в СтрАП вместе с присущим этому элементу тегом. Для этого можно использовать любую свободную СтрАП. Рассмотрим разновидности структурной организации КЭШ-памяти или способы отображения оперативной памяти на КЭШ .

Полностью ассоциативный КЭШ

Схема полностью ассоциативного КЭШа представлена на рисунке (см. рисунок ниже).

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

Если следующие выборки возможны из этого участка, они будут сделаны уже из КЭШа (быстро) - "КЭШ-попадание". Если же окажется, что нужного элемента в КЭШе нет, - "КЭШ-промахом". В этом случае обращение происходит к ОЗУ (медленно), и при этом одновременно заполняется очередная КЭШ-строка.

Схема полностью ассоциативной КЭШ-памяти

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

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

Если произошел КЭШ-промах, а в КЭШе нет свободных строк, необходимо заменить одну строку КЭШа на другую строку.

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

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

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

Наиболее эффективным является алгоритм замещения на основе наиболее давнего использования (LRU - Least Recently Used ), при котором замещается та строка КЭШ-памяти, к которой дольше всего не было обращения. Проводившиеся исследования показали, что алгоритм LRU, который "смотрит" назад, работает достаточно хорошо в сравнении с оптимальным алгоритмом, "смотрящим" вперед.

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

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

Другой возможный алгоритм замещения - алгоритм, работающий по принципу "первый вошел, первый вышел" (FIFO - First In First Out ). Здесь заменяется строка, дольше всего находившаяся в КЭШ-памяти. Алгоритм легко реализуется с помощью рассмотренной ранее очереди, с той лишь разницей, что после обращения к строке положение соответствующей ссылки в очереди не меняется.

Еще один алгоритм - замена наименее часто использовавшейся строки (LFU - Least Frequently Used). Заменяется та строка в КЭШ-памяти, к которой было меньше всего обращений. Принцип можно воплотить на практике, связав каждую строку со счетчиком обращений, к содержимому которого после каждого обращения добавляется единица. Главным претендентом на замещение является строка, счетчик которой содержит наименьшее число.

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

Кроме тега и байтов данных в КЭШ-строке могут содержаться дополнительные служебные поля, среди которых в первую очередь следует отметить бит достоверности V (от valid - действительный имеющий силу) и бит модификации M (от modify - изменять, модифицировать). При заполнении очередной КЭШ-строки V устанавливается в состояние "достоверно", а M - в состояние "не модифицировано". В случае, если в ходе выполнения программы содержимое данной строки было изменено, переключается бит M, сигнализируя о том, что при замене данной строки ее содержимое следует переписать в ОЗУ. Если по каким-либо причинам произошло изменение копии элемента данной строки, хранимого в другом месте (например в ОЗУ), переключается бит V. При обращении к такой строке будет зафиксирован КЭШ-промах (несмотря на то, что тег совпадает), и обращение произойдет к основному ОЗУ. Кроме того, служебное поле может содержать биты, поддерживающие алгоритм LRU.

Оценка объема оборудования

Типовой объем КЭШ-памяти в современной системе - 8…1024 кбайт, а длина КЭШ-строки 4…32 байт. Дальнейшая оценка делается для значений объема КЭШа 256 кбайт и длины строки 32 байт, что характерно для систем с процессорами Pentium и PentiumPro. Длина тега при этом равна 27 бит, а количество строк в КЭШе составит 256К/ 32=8192. Именно столько цифровых компараторов 27 битных кодов потребуется для реализации вышеописанной структуры.

Приблизительная оценка затрат оборудования для построения цифрового компаратора дает значение 10 транз/бит, а общее количество транзисторов только в блоке компараторов будет равно:

10*27*8192 = 2 211 840,

что приблизительно в полтора раза меньше общего количества транзисторов на кристалле Pentium. Таким образом, ясно, что описанная структура полностью ассоциативной КЭШ-памяти () реализуема только при малом количестве строк в КЭШе, т.е. при малом объеме КЭШа (практически не более 32…64 строк). КЭШ большего объема строят по другой структуре.

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

Спонтанность равно характеризует ассоциативную память как в момент запоминания, то есть фиксации или ретенции, так и воспоминания, то есть репродукции.

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

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

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

Памятьс ассоциативным доступом или ассоциативная память отличается от остальных типов памяти тем, что обращение к ее ячейкам осуществляется не по определенному адресу, а по содержимому ячеек памяти. Фактически ассоциативная память работает как поисковая система, способная найти информацию по заданному образцу. Основу ассоциативной памяти составляют ассоциативные запоминающие устройства (АЗУ) , которые, как и большинство оперативных ЗУ, являются энергозависимыми и реализуются в виде полупроводниковых микросхем (наборов микросхем).

Принцип работы АЗУ поясняет схема, представленная на рис. 3.8.Запоминающий массив, как и в адресных ЗУ, разделен на m -разрядные ячейки, число которых n . Как правило, в состав АЗУ входят:

· запоминающий массив (ЗМ);

· регистр ассоциативных признаков (РгАП);

· регистр маски (РгМ);

· регистр индикаторов адреса со схемами сравнения на входе.

В АЗУ могут быть и другие элементы, наличие и функции которых определяются способом использования АЗУ.

Рис. 3.8. Ассоциативное запоминающее устройство

Выборка информации из АЗУ происходит следующим образом. В регистр ассоциативных признаков из устройства управления передается образец для поиска - код признака искомой информации (иногда его называют компарандом ). Код может иметь произвольное число разрядов – от 1 до m . Если код признаков используется полностью, то он без изменения поступает на схему сравнения, если же необходимо использовать только часть кода, тогда ненужные разряды маскируются с помощью регистра маски. Перед началом поиска информации в АЗУ все разряды регистра индикаторов адреса устанавливаются в состояние 1 .После этого производится опрос первого разряда всех ячеек запоминающего массива, и содержимое сравнивается с первым разрядом регистра ассоциативных признаков. Если содержимое первого разряда i -й ячейки не совпадает с содержимым первого разряда РгАП, то соответствующий этой ячейке разряд регистра индикаторов адреса Т i сбрасывается в состояние 0 , если совпадает – разряд Т i остается 1 . Затем эта операция повторяется со вторым, третьим и последующими разрядами до тех пор, пока не будет произведено сравнение со всеми разрядами РгАП. После поразрядного опроса и сравнения в состоянии 1 останутся те разряды регистра индикаторов адреса, которые соответствуют ячейкам, содержащим информацию, совпадающую с записанной в регистре ассоциативных признаков. Эта информация может быть считана в той последовательности, которая определяется устройством управления.



Заметим, что время поиска информации в ЗМ по ассоциативному признаку зависит только от числа разрядов признака и от скорости опроса разрядов, но совершенно не зависит от числа ячеек ЗМ. Этим и определяется главное преимущество АЗУ перед адресными ЗУ: в адресных ЗУ при операции поиска необходим перебор всех ячеек запоминающего массива. Кроме того, существуют реализации АЗУ, выполняющих поиск одновременно над всеми разрядами всех слов, записанных в память, т.е. время поиска в подобных устройствах не превышает времени цикла памяти.

Запись новой информации в ЗМ производится без указания номера ячейки. Обычно один из разрядов каждой ячейки используется для указания ее занятости, т.е. если ячейка свободна для записи, то в этом разряде записан 0 , а если занята, – 1 . Тогда при записи в АЗУ новой информации устанавливается признак 0 в соответствующем разряде регистра ассоциативных признаков, и определяются все ячейки ЗМ, которые свободны для записи. В одну из них устройство управления помещает новую информацию.

Нередко АЗУ строятся таким образом, что кроме ассоциативной допускается и прямая адресация данных, что представляет определенные удобства при работе.

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

Отмеченные выше свойства АЗУ характеризуют преимущества АЗУ для обработки информации. Формирование нескольких потоков идентичной информации с помощью АЗУ осуществляется быстро и просто, а с большим числом операционных элементов можно создавать высокопроизводительные системы. Надо учитывать еще и то, что на основе ассоциативной памяти легко реализуется изменение места и порядка расположения информации. Благодаря этому АЗУ является эффективным средством формирования наборов данных.

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

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

Кэш-память

Впервые двухуровневое построение памяти было предложено М.Уилксом в 1965 году при построении ЭВМ Atlas. Суть подхода заключалась в размещении между ЦП и ОП быстродействующей буферной памяти небольшого размера. В процессе работы ЭВМ те участки ОП, к которым ведется обращение, копируются в буферную память. За счет соблюдения принципа локальности по обращению получается существенный выигрыш в производительности.

Новый вид памяти получил название кэш-память (от англ. cache – «тайник, убежище»), поскольку такая память скрыта, «невидима» для ЦП, который не может непосредственно обратиться к ней. В свою очередь, программист может вообще не знать о существовании кэш-памяти. В серийных ЭВМ кэш-память впервые была применена в системах модели 85 семейства IBMS/360. Сегодня кэш-память наличествует в любом классе ЭВМ, причем зачастую имеет многоуровневую структуру.

Все термины, которые были определены раньше, могут быть использованы и для кэш-памяти, хотя слово «строка » (line ) часто употребляется вместо слова «блок » (block ).

Как правило, кэш-память строится на основе сверхбыстродействующих и дорогостоящих ОЗУ статического типа, при этом ее быстродействие в 5-10 раз превышает быстродействие ОП, а объем – в 500-1000 раз меньше. Заметим, что увеличению объема кэш-памяти по отношению к емкости ОП препятствует не только и не столько высокая стоимость статических ОЗУ. Дело в том, что при увеличении емкости кэш-памяти возрастает сложность схем управления, что, в свою очередь, ведет к падению быстродействия. Многочисленные исследования показали, что указанное соотношение объемов кэш-памяти и ОП является оптимальным и будет сохраняться в процессе развития ЭВМ при увеличении быстродействия обоих видов памяти.

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

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

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

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

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

Стратегии размещения

Существуетследующие способы размещения данных в кэш-памяти:

· прямое распределение;

· полностью ассоциативное распределение;

· частично (множественно) ассоциативное распределение.

Допустим, разрядность шины адреса n , тогда емкость ОП V ОП = 2 n слов. Без ограничения общности определим размер кэш-строки в 256 слов, таким образом, вся ОП будет поделена на 2 n-8 блоков. В адресе ОП старшие n-8 битов будут определять адрес блока, а младший байт – адрес слова в блоке. Пусть емкость кэш-памяти V кэш в 1024 раза меньше емкости ОП, т.е. V кэш = 2 n-10 слов или 2 n-18 блоков (кэш-строк).

Прямое распределение

Если каждый блок основной памяти имеет только одно фиксированное место, на котором он может появиться в кэш-памяти, то такая кэш-память называется кэшем с прямым распределением (direct mapped cache). Это наиболее простая организация кэш-памяти, при которой для отображения адресов блоков ОП на адреса кэш-памяти просто используются младшие разряды адреса блока. Таким образом, все блоки ОП, имеющие одинаковые младшие разряды в своем адресе, попадают в одну кэш-строку, т.е.

(адрес кэш-строки) = (адрес блока ОП) mod (число блоков в кэш-памяти)

В нашем примере адрес кэш-строки c будут составлять младшие n-18 бит адреса блока ОП (см. рис. 3.9). Преобразование адреса блока ОП в адрес кэш-строки осуществляется путем выборки этих младших n-18 бит. По этому адресу кэш-строки может быть помещен любой из 1024 блоков ОП, имеющих одинаковые n-18 младших бит. Между собой эти блоки будут различаться старшими 10-ю битами t , называемыми тегом . Для того, чтобы определить, какой именно блок ОП хранится в данное время в кэш-памяти, используется еще одна память – так называемая память тегов(теговая память) . Теговая память адресуется пословно, причем каждое слово имеет размер, равный размеру тега. Емкость памяти тегов – это произведение размера тега на общее число кэш-строк, для нашего примера составляет 10·2 n-18 бит. Адресом памяти тегов является адрес кэш-строки с . В отличие от памяти тегов, память, в которой хранятся блоки, помещенные в кэш, называется памятью данных . Память данных адресуется пословно, ее адрес образуется из адреса кэш-строки и адреса слова внутри блока (кэш-строки).

Рис. 3.9. Структура адреса памяти при прямом распределении

Рис. 3.10. Организация кэш-памяти с прямым распределением

При доступе к A -му адресу ОП (рис. 3.10) младшие n-18 бит адреса блока (поле c ), где содержится этот адрес, используются в качестве адреса кэш-строки. По адресу кэш-строки из теговой памяти считывается тег (поле t ). Параллельно этому осуществляется доступ к памяти данных с помощью n-10 младших бит адреса A (поля c и w ). Если считанный тег и старшие 10 бит адреса A совпадают, то это означает, что блок, содержащий адрес A , существует в памяти данных, и в слове, к которому осуществляется доступ, хранится копия A -го адреса ОП.

Если тег отличается от старших 10 бит адреса A , то из основной памяти считывается блок, содержащий адрес A , а из кэш-памяти удаляется кэш-строка, чей адрес определяется полем c (младшими n-18 битами) адреса считываемого блока. На место удаленной кэш-строки помещается считанный из ОП блок, при этом обновляется соответствующий тег в памяти тегов.

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

Ассоциативная память

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

Ассоциации – это невидимые зацепки, прочно связывающие то, что мы уже хорошо помним, с тем, что требуется закрепить в памяти.

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

Но хватит теории, пора переходить непосредственно к простым и совершенно необременительным упражнениям!

Итак, вы прочитали 50 слов, представляя соответствующие образы как можно ярче, в цвете и движении. А теперь постарайтесь связать все слова в один длинный рассказ или в несколько коротких: кошка, дом, машина, яблоко…

Ключ

Бело-рыжая КОШКА зашла в ДОМ из красного кирпича, прошла во встроенный гараж, села в малиновую МАШИНУ, выехала на автостраду и стала, управляя рулем левой лапой, грызть зеленое ЯБЛОКО, держа его правой лапой.

Вспоминать слова на данном этапе развития памяти нет никакой необходимости. Это вы будете делать чуть позже, причем легко и играючи. Сейчас же я не рекомендую перегружать себя сложными упражнениями. Хотите достигнуть очень высокого уровня памяти? Для большинства людей эффективнее двигаться, наращивая уровень сложности понемногу, зато регулярно.

Из книги Общая психология автора Дмитриева Н Ю

8. Ассоциативная психология В процессе формирования психологии стал преобладать ассоцианистский подход к восприятию. Ассоциативная психология – одно из основных направлений в психологии XVII–XIX вв. Главным объяснительным принципом психической жизни являлось понятие

Из книги Начнем сначала, или Как разглядеть свое Завтра автора Козлов Николай Иванович

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

Из книги Психология развития [Методы исследования] автора Миллер Скотт

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

Из книги Разблокируй свою память: запомни все! автора Мюллер Станислав

Часть I. Как в два раза улучшить память за сорок пять минут, или Введение в голографическую память С чего все начиналось… Несколько лет назад, после окончания последнего занятия по развитию памяти, один из студентов предъявляет претензии в отношении результатов

Из книги Вспомни всё [Секреты суперпамяти. Книга-тренажер] автора Мюллер Станислав

Ассоциативная память Говорят, что память держится на трех китах: ассоциации, запечатлении, повторении. Но обязательно ли придерживаться этой модели?Догадливые читатели без труда увидят аналогию с древними представлениями о мироустройстве и о Земле, имеющей плоскую

Из книги Тайна Бога и наука о мозге [Нейробиология веры и религиозного опыта] автора Ньюберг Эндрю

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

Из книги Все лучшее, что не купишь за деньги. Мир без политики, нищеты и войн автора Фреско Жак

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

Из книги Психология взрослости автора Ильин Евгений Павлович

Ассоциативная память Придумайте один рассказ, содержащий все пятьдесят слов, или несколько коротких. Трудные слова теперь не пропускаем. Составление рассказа не должно уже представлять для вас труда.Вспоминать слова или рассказы на данном этапе развития ассоциативной

Из книги Психология интеллекта и одаренности автора Ушаков Дмитрий Викторович

Часть I Как в два раза улучшить память за 45 минут, или введение в голографическую память «В начале славных дел…» Несколько лет назад, после окончания последнего занятия по развитию памяти, один из студентов предъявил мне претензии:– Станислав, люди к вам приходят, чтобы

Из книги автора

Из книги автора

Ассоциативная методика диагностики личностной зрелости Авторы: Е. В. Каляева, Т. В. ПрокофьеваИнструкция. Вашему вниманию предлагается ряд слов. Подумайте, какие ассоциации вызывает каждое из этих слов, запишите их.Предлагаются 35 характеристик, раскрывающих понятие

Из книги автора

Режимы творческого мышления, ассоциативная сеть и распределенное внимание Идеи механизмов, которые могут быть сопоставлены с интуитивным полюсом мышления, в современной психологии восходят к работам С. Медника. В начале 1960-х годов он предположил, что индивидуальные