Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3-й семестр / Организация ЭВМиС; Орлов С.А., Цилькер Б.Я

..pdf
Скачиваний:
428
Добавлен:
25.12.2020
Размер:
5.43 Mб
Скачать

Стековая память

271

 

 

Здесь P4 ... P0 — контрольные разряды, вычисленные генератором контрольных разрядов на основании информационных битов считанного из памяти кода (MD15 ...

MD0). MP5 ... MP0 — такие же контрольные разряды, полученные тем же генератором, но перед записью информации в память и хранившиеся там вместе с основной информацией. Если синдром не равен нулю, то он указывает на позицию исказившегося бита при одиночной ошибке. С учетом контрольного разряда P5 возможны четыре ситуации, показанные в табл. 6.6.

Таблица 6.6. Обнаружение ошибок

 

 

 

 

 

Синдром

P5

Тип ошибки

Примечания

0

0

Ошибки нет

 

≠0

1

Одиночная ошибка

Корректируемая: синдром указывает на пози-

 

 

 

цию искаженного разряда

≠0

0

Двойная ошибка

Неисправимая

0

1

Ошибка в контроль-

Искажен контрольный разряд P5, и он может

 

 

ном разряде

быть откорректирован

Сигнал Чт/Зп на схеме определяет выполняемую операцию. Чт/Зп = 1 означает чтение из памяти, а Чт/Зп = 0 — запись в память.

Проанализировав полученный синдром и разряд P5, обнаружитель ошибки формирует двухразрядный код ошибки E1E0 (табл. 6.7).

Таблица 6.7. Кодирование ошибок

 

 

 

Код ошибки (E1, E0)

Описание

00

Ошибки нет

01

Одиночная ошибка — исправимая

10

Двойная ошибка — неисправимая

11

Ошибка в контрольном разряде — исправимая

Стековая память

Стековая память обеспечивает такой режим работы, когда информация записывается и считывается по принципу «последним записан первым считан» (LIFO — Last In First Out). Память с подобной организацией широко применяется для запоминания и восстановления содержимого регистров процессора при обработке подпрограмм и прерываний. Работу стековой памяти поясняет рис. 6.23, а.

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

272

Глава 6. Память

 

 

Рис. 6.23. Организация стековой памяти: а — логика работы; б — аппаратно-программный стек

Наиболее распространенным в настоящее время является внешний или аппаратнопрограммный стек, в котором для хранения информации используется область ОП. Обычно для этих целей отводится участок памяти с наибольшими адресами, а стек расширяется в сторону уменьшения адресов. Так как программа обычно загружается, начиная с меньших адресов, такой прием во многих случаях позволяет избежать перекрытия областей программы и стека. Адресация стека обеспечивается специальным регистром — указателем стека (SP — stack pointer), в который предварительно помещается наибольший адрес области основной памяти, отведенной под стек (рис. 6.23, б).

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

УС := УС – 1; ОП[(УС)] := ШД.

При считывании слова из стека в качестве адреса этого слова берется текущее содержимое указателя стека, а после того как слово извлечено, содержимое УС увеличивается на единицу. Таким образом, при извлечении слова из стека реализуются следующие операции: ШД := ОП[(УС)]; УС := УС + 1.

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

В рассмотренных ранее видах запоминающих устройств доступ к информации требовал указания адреса ячейки. Зачастую значительно удобнее искать информацию не по адресу, а опираясь на какой-нибудь характерный признак, содержащийся в самой информации. Такой принцип лежит в основе ЗУ, известного как ассоциативное запоминающее устройство (АЗУ). В литературе встречаются и иные названия подобного ЗУ: память, адресуемая по содержанию (content addressable memory); память, адресуемая по данным (data addressable memory); память с параллельным поиском (parallel search memory); каталоговая память (catalog memory);

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

273

 

 

информационное ЗУ (information storage); тегированная память (tag memory). Ассоциативное ЗУ — это устройство, способное хранить информацию, сравнивать ее с некоторым заданным образцом и указывать на их соответствие или несоответствие друг другу. Признак, по которому производится поиск информации, будем называть ассоциативным признаком, а кодовую комбинацию, выступающую в роли образца для поиска, — признаком поиска. Ассоциативный признак может быть частью искомой информации или дополнительно придаваться ей. В последнем случае его принято называть тегом или ярлыком.

Рис. 6.24. Структура ассоциативного запоминающего устройства

Один из вариантов построения ассоциативной памяти показан на рис. 6.24. АЗУ включает в себя:

запоминающий массив для хранения N m-разрядных слов, в каждом из которых несколько младших разрядов занимает служебная информация;

регистр ассоциативного признака, куда помещается код искомой информации (признак поиска);

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

регистр совпадений, где каждой ячейке запоминающего массива соответствует один разряд, в который заносится единица, если все разряды соответствующей ячейки совпали с одноименными разрядами признака поиска;

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

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

274

Глава 6. Память

 

 

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

Из-за того что результаты поиска могут оказаться неоднозначными, содержимое регистра совпадений подается на СУЧЗ, где формируются сигналы, извещающие о том, что искомая информация:

не найдена;содержится в одной ячейке;

содержится более чем в одной ячейке.

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

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

Запись в АП производится без указания конкретного адреса, в первую свободную ячейку. Для отыскания свободной ячейки СУЧЗ организует операцию считывания, в которой не замаскированы только служебные разряды, показывающие, как давно производилось обращение к данной ячейке, и свободной считается либо пустая ячейка, либо та, которая дольше всего не использовалась.

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

Общность идеи ассоциативного поиска информации отнюдь не исключает разно­ образия архитектур АЗУ. Конкретная архитектура определяется сочетанием четырех факторов: вида поиска информации; техники сравнения признаков; способа считывания информации при множественных совпадениях и способа записи информации.

В каждом конкретном применении АЗУ задача поиска информации может формулироваться по-разному (рис. 6.25).

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

275

 

 

Рис. 6.25. Классификация АЗУ по виду поиска информации в запоминающем массиве

При простом поиске требуется полное совпадение всех разрядов признака поиска с одноименными разрядами слов, хранящихся в запоминающем массиве.

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

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

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

При построении АЗУ выбирают из четырех вариантов организации опроса содержимого памяти (рис. 6.26).

Рис. 6.26. Классификация АЗУ по способу опроса содержимого запоминающего массива

276

Глава 6. Память

 

 

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

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

Рис. 6.27. Классификация АЗУ по способу выборки совпавших слов при множественных совпадениях

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

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

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

Рис. 6.28. Классификация АЗУ по способу записи информации

Из-за относительно высокой стоимости АЗУ редко используется как самостоятельный вид памяти.

Кэш-память

277

 

 

Кэш-память

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

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

Рис. 6.29. Структура системы с основной и кэш-памятью

На рис. 6.29 приведена структура системы памяти, включающая как основную, так и кэш-память. ОП емкостью 2n слов при взаимодействии с кэш-памятью рассматривается как состоящее из M блоков фиксированной длины по K слов в каждом

278

Глава 6. Память

 

 

(M = 2n/K). Кэш-память также условно разбивается на C блоков аналогичного размера, причем С << M. При обращении к какой-либо ячейке ОП блок, содержащий данную ячейку, копируется в какой-то из блоков кэш-памяти, и все последующие обращения к блоку переадресовываются на его копию в КП. Ввиду малой емкости в кэш-памяти в разное время могут находиться копии различных блоков ОП. По этой причине каждую копию необходимо снабдить так называемым тегом (признаком), указывающим на то, копия какого блока ОП в настоящий момент хранится в данном блоке КП. В результате кэш-память представляет собой совокупность двух ЗУ, одно из которых предназначено для хранения копий данных из ОП (память данных), а второе — для хранения тегов этих копий (память тегов). Каждому блоку в памяти данных соответствует одна ячейка в памяти тегов.

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

емкость кэш-памяти; размер блока;

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

Емкость кэш-памяти

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

Рис. 6.30. Зависимость вероятности промахов от: а — емкости кэш-памяти; б — размера блока

Кэш-память

279

 

 

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

Реальная эффективность использования кэш-памяти зависит от характера решаемых задач, и невозможно заранее определить, какая ее емкость будет действительно оптимальной. Рисунок 6.30, а иллюстрирует зависимость вероятности промахов от емкости кэш-памяти для трех программ А, В и С [140]. Несмотря на очевидные различия, просматривается и общая тенденция: по мере увеличения емкости кэшпамяти вероятность промахов сначала существенно снижается, но при достижении определенного значения эффект сглаживается и становится несущественным. В настоящее время считается, что для большинства задач близкой к оптимальной является емкость кэш-памяти от 1 до 512 Кбайт.

Размер блока

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

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

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

Зависимость между размером блока и вероятностью промахов во многом определяется характеристиками конкретной программы, из-за чего трудно рекомендовать определенное значение величины блока. Исследования [131, 140] показывают, что наиболее близким к оптимальному можно признать размер блока, равный 4–8 адресуемым единицам (словам или байтам). На практике его обычно выбирают сравнительно небольшим, равным ширине шины данных, связывающей кэш-память с основной памятью.

Способы отображения оперативной памяти на кэш-память

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

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

280

Глава 6. Память

 

 

2К слова. Для адресации произвольного слова в основной памяти необходим 18разрядный адрес (218 = 256К), а в кэш-памяти — 11-разрядный адрес (211 = 2К). Как ОП, так и кэш-память условно разбиваются на блоки по 16 слов в каждом. При такой организации 18-разрядный адрес ОП можно условно разделить на две части: младшие 4 разряда определяют адрес слова в пределах блока, а старшие 14 — номер одного из 16 384 блоков. Эти старшие 14 разрядов в дальнейшем будем называть адресом блока основной памяти. 11-разрядный адрес слова в кэш-памяти также можно представить состоящим из двух частей: адреса слова в блоке (4 младших разряда) и адреса блока кэш-памяти (7 старших разрядов).

Центральный процессор (ЦП) всегда обращается к информации в предположении, что она хранится в основной памяти и выставляет на шину адреса 18-разрядный адрес ячейки ОП. Если в кэш-памяти уже находится копия блока, куда входит ячейка, необходимо переадресовать обращение ЦП на кэш-память. Иными словами, нужно преобразовать 18-разрядный адрес ячейки ОП в 11-разрядный адрес ее копии в кэш-памяти. Фактически задача сводится к преобразованию 14-разрядного адреса блока основной памяти в 7-разрядный адрес блока кэш-памяти.

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

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

Прямое отображение

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

Номер строки (i) и столбца (k) матрицы, на пересечении которых располагается блок основной памяти с адресом j, определяются выражениями i = j mod m и k = = j div m. В двоичной записи адреса блока основной памяти номер строки представлен log2m младшими разрядами, а номер столбца — оставшимися старшими разрядами. Такая система позволяет по адресу блока основной памяти, поступившему из ЦП, сразу же однозначно определить адрес блока кэш-памяти, куда должен быть отображен данный блок ОП (если его копия в КП отсутствует) или где следует искать соответствующую копию (если она присутствует в КП).

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

Применительно к системе, предложенной в качестве примера, это означает, что 14-разрядный адрес блока основной памяти может рассматриваться как состоящий из 7-разрядного номера столбца (тега) и 7-разрядного номера строки. При