3-й семестр / Организация ЭВМиС; Орлов С.А., Цилькер Б.Я
..pdfСтековая память |
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-разрядного номера строки. При