Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Архитектура ЭВМ и систем. Учебное пособие
.pdf
свойственна симметричная структура, в дальнейшем наборы шин будем называть «левым» (Л) и «правым» (П). В целом организация матрицы ЗЭ остается традиционной.
Доступ к ячейкам возможен как через левую, так и через правую
группу шин, причем если Л- и П-адреса различны, никаких конфликтов не возникает. Проблемы потенциально возможны
, когда Л- и
П-устройства одновременно обращаются по одному и тому же адресу
и хотя бы одно из этих устройств пытается выполнить операцию записи. В этом случае, если один из портов читает информацию, а другой
производит запись в ту же ячейку, вероятно считывание недостоверной информации. При попытке единовременного
ввода в ячейку с двух
направлений в нее может быть занесена неопределенная комбинация
из записываемых слов. Несмотря на то что вероятность подобных ситуаций по оценкам не превышает 0,1%, такой вариант необходимо
учитывать, для чего в двухпортовой памяти имеется схема арбитража с
использованием сигналов «Занято».
Память типа FIFO. Во многих случаях ОЗУ применяется для
буферизации потока данных, когда данные считываются из памяти в
той же последовательности, в которой они туда заносились, но поступление и считывание происходят с различной скоростью. Часто для
этой цели применяют обычное ОЗУ, однако здесь одновременная запись и считывание информации невозможны. Более эффективным
видом ОЗУ, где оба действия могут вестись одновременно, служит память типа FIFO. Микросхема представляет собой двухпортовое ОЗУ,
где один порт предназначен для занесения информации, а второй – для
считывания. Для FIFO-памяти характерны все технологические приемы, свойственные двухпортовой памяти, в частности способы арбитража при одномоментном обращении к одной и той
же ячейке. В то же
время есть и существенные отличия.
Первое состоит в том, что у микросхемы нет входов для указания
адреса ячейки, занесение и считывание данных производится в порядке их поступления через одну входную точку и одну выходную.
Второе отличие связано с необходимостью слежения за состоянием очереди.
Для этого в микросхеме имеются регистры-указатели адресов начала и конца очереди, а также специальные флаги, которые
указывают на две ситуации: отсутствие данных (в этом случае блокируется считывание из микросхемы) и полное заполнение памяти (блокируется запись).
Стековая память. Стековая память обеспечивает такой режим
работы, когда информация записывается и считывается по принципу
«последним записан – первым считан» (LIFO – Last In First Out). Память с подобной организацией широко применяется для запоминания
91

и восстановления содержимого регистров процессора (контекста) при
обработке подпрограмм и прерываний.
Наиболее распространенным в настоящее время является внешний или аппаратно-программный стек, в котором для хранения информации отводится область ОП. Обычно для этих целей отводится
участок памяти с наибольшими адресами, а стек расширяется в сторону уменьшения адресов. Поскольку
программа обычно загружается,
начиная с меньших адресов, такой прием во многих случаях позволяет
избежать перекрытия областей программы и стека. Адресация стека
обеспечивается специальным регистром – указателем стека (SP – stack
pointer), в который предварительно помещается наибольший адрес
области основной памяти, отведенной под стек.
При занесении в стек очередного слова сначала производится
уменьшение на единицу содержимого
указателя стека (УС), которое
затем используется как адрес ячейки, куда и производится запись, т.е.
указатель стека хранит адрес той ячейки, к которой было произведено
последнее обращение.
При считывании слова из стека в качестве адреса этого слова берется текущее содержимое указателя стека, а после того как слово извлечено,
содержимое УС увеличивается на единицу.
Ассоциативная память. В рассмотренных ранее видах запоми-
нающих устройств доступ к информации требовал указания адреса
ячейки. Зачастую значительно удобнее искать информацию не по адресу, а опираясь на какой-нибудь характерный признак, содержащийся
в самой информации. Такой принцип лежит в основе ЗУ, известного
как ассоциативное запоминающее устройство (АЗУ). В литературе
встречаются и иные
названия подобного ЗУ: память, адресуемая по
содержанию (content addressable memory); память, адресуемая по данным (data addressable memory); память с параллельным поиском
(parallel search memory); каталоговая память (catalog memory); информационное ЗУ (information storage); тегированная память (tag memory).
Ассоциативное ЗУ – это устройство, способное хранить информацию,
сравнивать ее с некоторым заданным образцом и указывать на их соответствие или несоответствие друг другу. Признак, по которому про
изводится поиск информации, будем называть ассоциативным признаком, а кодовую комбинацию, выступающую в роли образца для поиска, – признаком поиска. Ассоциативный признак может быть частью
искомой информации или дополнительно придаваться ей. В последнем
случае его принято называть тегом или ярлыком.
АЗУ включает в себя:
запоминающий массив для хранения N m-разрядных слов, в
−
каждом из которых несколько младших разрядов занимает служебная
информация;
92
-

− регистр ассоциативного признака, куда помещается код иско-
мой информации (признак поиска). Разрядность регистра k обычно
меньше длины слова т;
схемы совпадения, используемые для параллельного сравне-
−
ния каждого бита всех хранимых слов с соответствующим битом признака поиска и выработки сигналов совпадения;
регистр совпадений, где каждой ячейке запоминающего мас-
−
сива соответствует один разряд, в который заносится единица, если все
разряды соответствующей ячейки совпали с одноименными разрядами
признака поиска;
регистр маски, позволяющий запретить сравнение определен-
−
ных битов;
комбинационную схему, которая на основании анализа содер-
−
жимого регистра совпадений формирует сигналы, характеризующие
результаты поиска информации.
При обращении к АЗУ сначала в регистре маски обнуляются разряды, которые не должны учитываться при поиске информации. Все
разряды регистра совпадений устанавливаются в единичное состояние.
После этого в регистр ассоциативного признака заносится код искомой
информации (признак поиска) и начинается ее поиск, в процессе которого схемы совпадения одновременно сравнивают первый бит всех
ячеек запоминающего массива с первым битом признака поиска. Те
схемы, которые зафиксировали несовпадение, формируют сигнал, переводящий соответствующий бит регистра совпадений в нулевое состояние. Так же происходит процесс поиска и для
остальных незамаскированных битов признака поиска. В итоге единицы сохраняются
лишь в тех разрядах регистра совпадений, которые соответствуют
ячейкам, где находится искомая информация. Конфигурация единиц в
регистре совпадений используется в качестве адресов, по которым
производится считывание из запоминающего массива.
Из-за того, что результаты поиска могут оказаться неоднознач-
ными, содержимое регистра
совпадений подается на комбинационную
схему, где формируются сигналы, извещающие о том, что искомая
информация:
−
а0 – не найдена;
а1 – содержится в одной ячейке;
−
−
а2 – содержится более чем в одной ячейке.
Формирование содержимого регистра совпадений и сигналов а0,
а1, a2, носит название операции контроля ассоциации. Она является
составной частью операций считывания и записи, хотя может иметь и
самостоятельное значение.
93

При считывании сначала производится контроль ассоциации по
аргументу поиска. Затем при а0 = 1 считывание отменяется из-за отсутствия искомой информации, при а1 = 1 считывается слово, на которое указывает единица в регистре совпадений, а при а2 = 1 сбрасывается самая старшая единица в регистре совпадений и извлекается соответствующее ей слово. Повторяя эту
операцию, можно последователь-
но считать все слова.
Запись в АП производится без указания конкретного адреса в
первую свободную ячейку. Для отыскания свободной ячейки выполняется операция считывания, в которой не замаскированы только служебные разряды, показывающие, как давно производилось обращение
к данной ячейке, и свободной считается либо пустая ячейка, либо
та,
которая дольше всего не использовалась.
Главное преимущество ассоциативных ЗУ определяется тем, что
время поиска информации зависит только от числа разрядов в признаке поиска и скорости опроса разрядов и не зависит от числа ячеек в
запоминающем массиве.
Общность идеи ассоциативного поиска информации отнюдь не
исключает разнообразия архитектур АЗУ. Конкретная архитектура
определяется сочетанием четырех факторов: вида поиска информации;
техники сравнения признаков; способа считывания информации при
множественных совпадениях и способа записи информации.
В каждом конкретном применении АЗУ задача поиска информации может формулироваться по-разному.
При простом поиске требуется полное совпадение всех разрядов
признака поиска с одноименными разрядами слов, хранящихся в запоминающем массиве.
При соответствующей организации АЗУ способно к более сложным вариантам поиска, с частичным совпадением. Можно, например,
ставить задачу поиска слов с максимальным или минимальным значением ассоциативного признака. Многократная выборка из АЗУ слова с
максимальным или минимальным значением ассоциативного признака
(с исключением его из дальнейшего поиска), по существу,
представляет собой упорядоченную выборку информации. Упорядоченную выборку можно обеспечить и другим способом, если вести поиск слов,
ассоциативный признак которых по отношению к признаку опроса
является ближайшим большим или меньшим значением.
Еще одним вариантом сложного поиска может быть нахождение
слов, численное значение признака в которых больше или меньше заданной
величины. Подобный подход позволяет вести поиск слов с
признаками, лежащими внутри или вне заданных пределов.
Очевидно, что реализация сложных методов поиска связана с соответствующими изменениями в архитектуре АЗУ, в частности с усложнением схемы ЗУ и введением в нее дополнительной логики.
94

При построении АЗУ выбирают из четырех вариантов организации опроса содержимого памяти. Варианты эти могут комбинироваться параллельно по группе разрядов и последовательно по группам.
В плане времени поиска наиболее эффективным можно считать параллельный опрос как по словам, так и по разрядам, но не все виды запоминающих элементов допускают
такую возможность.
Цепь очередности реализуется с помощью достаточно сложного
устройства, где фиксируются слова, образующие многозначный ответ.
Цепь очередности позволяет производить считывание слов в порядке
возрастания номера ячейки АЗУ независимо от величины ассоциативных признаков.
При алгоритмическом способе извлечения многозначного ответа
выборка производится в результате серии опросов. Серия опросов может
формироваться путем упорядочивания тех разрядов, которые были
замаскированы и не участвовали в признаке поиска. В другом варианте
для этих целей выделяются специальные разряды. Существует целый
ряд алгоритмов, позволяющих организовать упорядоченную выборку
из АЗУ.
Существенные отличия в архитектурах АЗУ могут быть связаны с
выбранным принципом записи информации. Ранее был описан вариант
с
записью в незанятую ячейку с наименьшим номером. На практике
применяются и иные способы, из которых наиболее сложный – запись
с сортировкой информации на входе АЗУ по величине ассоциативного
признака. Здесь местоположение ячейки, куда будет помещено новое
слово, зависит от соотношения ассоциативных признаков вновь записываемого слова и уже хранящихся в АЗУ
слов.
Из-за относительно высокой стоимости АЗУ редко используется
как самостоятельный вид памяти.
Как уже отмечалось, в качестве элементной базы основной памяти в большинстве ВМ служат микросхемы динамических ОЗУ, на порядок уступающие по быстродействию центральному процессору.
В результате процессор вынужден простаивать несколько тактовых
периодов, пока информация из ИМС памяти установится на шине данных ВМ. Если ОП выполнить на быстрых микросхемах статической
памяти, стоимость ВМ возрастет весьма существенно. Экономически
приемлемое решение этой проблемы было предложено М. Уилксом в
1965 году в процессе разработки ВМ Atlas и заключается оно в использовании двухуровневой памяти, когда между ОП и процессором размещается небольшая, но быстродействующая буферная память. В процессе работы такой системы в буферную память
5.9. КЭШ-ПАМЯТЬ
копируются те участ-
95

ки ОП, к которым производится обращение со стороны процессора.
В общепринятой терминологии – производится отображение участков
ОП на буферную память. Выигрыш достигается за счет ранее рассмотренного свойства локальности – если отобразить участок ОП в более
быстродействующую буферную память и переадресовать на нее все
обращения в пределах скопированного участка, можно добиться существенного
повышения производительности ВМ.
Уилкс называл рассматриваемую буферную память подчиненной
(slave memory). Позже распространение получил термин «кэш-память»
(от английского слова cache – убежище, тайник), поскольку такая па-
мять обычно скрыта от программиста в том смысле, что он не может ее
адресовать и может даже вообще не знать о ее существовании. Впервые кэш-
системы появились в машинах модели 85 семейства IBM 360.
В общем виде использование кэш-памяти поясним следующим
образом. Когда ЦП пытается прочитать слово из основной памяти,
сначала осуществляется поиск копии этого слова в кэше. Если такая
копия существует, обращение к ОП не производится, а в ЦП передается слово, извлеченное из кэш-памяти. Данную
ситуацию принято называть успешным обращением или попаданием (hit). При отсутствии
слова в кэше, т.е. при неуспешном обращении – промахе (miss), – требуемое слово передается в ЦП из основной памяти, но одновременно из
ОП в кэш-память пересылается блок данных, содержащий это слово.
На эффективность применения кэш-памяти в иерархической сис-
памяти влияет целый ряд моментов. К наиболее существенным из
теме
них можно отнести:
емкость кэш-памяти;
−
размер строки;
−
способ отображения основной памяти на кэш-память;
−
алгоритм замещения информации в заполненной кэш-памяти;
−
алгоритм согласования содержимого основной и кэш-памяти;
−
число уровней кэш-памяти.
−
5.9.1. ЕМКОСТЬ КЭШ-ПАМЯТИ
Выбор емкости кэш-памяти – это всегда определенный компромисс. С одной стороны, кэш-память должна быть достаточно мала,
чтобы ее стоимостные показатели были близки к величине, характерной для ОП. С другой – она должна быть достаточно большой, чтобы
среднее время доступа в системе, состоящей из основной и кэшпамяти, определялось временем
доступа к кэш-памяти. В пользу
уменьшения размера кэш-памяти имеется больше мотивировок. Так,
чем вместительнее кэш-память, тем больше логических схем должно
участвовать в ее адресации. Как следствие, ИМС кэш-памяти повы-
96

шенной емкости работают медленнее по сравнению с микросхемами
меньшей емкости, даже если они выполнены по одной и той же технологии.
5.9.2. РАЗМЕР СТРОКИ
Еще одним важным фактором, влияющим на эффективность использования кэш-памяти, служит размер строки. Когда в кэш-память
помещается строка, вместе с требуемым словом туда попадают и соседние слова. По мере увеличения размера строки вероятность промахов сначала падает, так как в кэш, согласно принципу локальности,
попадает все больше данных
, которые понадобятся в ближайшее время. Однако вероятность промахов начинает расти, когда размер строки
становится излишне большим. Объясняется это тем, что:
большие размеры строки уменьшают общее количество строк,
−
которые можно загрузить в кэш-память, а малое число строк приводит
к необходимости частой их смены;
по мере увеличения размера строки каждое дополнительное
−
слово оказывается дальше от запрошенного, поэтому такое дополнительное слово менее вероятно понадобится в ближайшем будущем.
Зависимость между размером строки и вероятностью промахов во
многом определяется характеристиками конкретной программы, из-за
чего трудно рекомендовать определенное значение величины строки.
Наиболее близким к оптимальному можно признать
размер строки,
равный 4…8 адресуемым единицам (словам или байтам). На практике
размер строки обычно выбирают равным ширине шины данных, связывающей кэш-память с основной памятью.
5.9.3. ОДНОУРОВНЕВАЯ И МНОГОУРОВНЕВАЯ КЭШ-ПАМЯТЬ
Современные технологии позволяют разместить кэш-память и ЦП
на общем кристалле. Такая внутренняя кэш-память строится по технологии статического ОЗУ и является наиболее быстродействующей.
Емкость ее обычно не превышает 64 Кбайт. Попытки увеличения емкости обычно приводят к снижению быстродействия, главным образом
из-за усложнения схем управления и дешифрации адреса. Общую
емкость кэш-памяти ВМ увеличивают за счет второй (внешней) кэшпамяти, расположенной между внутренней кэш-памятью и ОП. Такая
система известна под названием двухуровневой, где внутренней кэшпамяти отводится роль первого уровня (L1), а внешней – второго
уровня (L2). Емкость L2 обычно на порядок больше, чем у L1, а быстродействие и стоимость – несколько
ниже. Память второго уровня
также строится как статическое ОЗУ. Типичная емкость кэш-памяти
второго уровня – 256 и 512 Кбайт, реже – 1 Мбайт, а реализуется она,
97

как правило, в виде отдельной микросхемы, хотя в последнее время L2
часто размещают на одном кристалле с процессором, за счет чего сокращается длина связей и повышается быстродействие.
При доступе к памяти ЦП сначала обращается к кэш-памяти первого уровня. В случае промаха производится обращение к кэш-памяти
второго уровня. Если
информация отсутствует и в L2, выполняется
обращение к ОП и соответствующий блок заносится сначала в L2, а затем и в L1. Благодаря такой процедуре часто запрашиваемая информация может быть быстро восстановлена из кэш-памяти второго уровня.
Потенциальная экономия за счет применения L2 зависит от веро-
ятности попаданий как в L1, так и в L2.
Ряд исследований показывает,
что использование кэш-памяти второго уровня существенно улучшает
производительность.
В большинстве семейств микропроцессоров предусмотрены специальные ИМС контроллеров внешней кэш-памяти, например микросхема 8291 для микропроцессора Intel 486 или 82491 – для Intel
Pentium. Для ускорения обмена информацией между ЦП и L2 между
ними часто вводят специальную шину, так называемую шину заднего
плана, в
отличие от шины переднего плана, связывающей ЦП с основ-
ной памятью.
Количество уровней кэш-памяти не ограничивается двумя. В некоторых ВМ уже можно встретить кэш-память третьего уровня (L3) и
ведутся активные дискуссии о введении также и кэш-памяти четвертого уровня (L4). Характер взаимодействия очередного уровня с предшествующим аналогичен описанному
для L1 и L2. Таким образом, можно
говорить об иерархии кэш-памяти. Каждый последующий уровень характеризуется большей емкостью, меньшей стоимостью, но и меньшим
быстродействием, хотя оно все же выше, чем у ЗУ основной памяти.
Концепция кэш-памяти применима и к дисковым ЗУ. Принцип
кэширования дисков во многом схож с принципом кэширования основной памяти, хотя способы доступа к диску и ОП существенно разнятся. Если время обращения к любой ячейке ОП одинаково, то для
диска оно зависит от целого ряда факторов. Во-первых, нужно затра
тить некоторое время для установки головки считывания/записи на
нужную дорожку. Во-вторых, поскольку при движении головка вибрирует, необходимо подождать, чтобы она успокоилась. В-третьих, искомый сектор может оказаться под головкой также лишь спустя некоторое время.
Дисковая кэш-память представляет собой память с произвольным
доступом, «размещенную» между
98
5.9.4. ДИСКОВАЯ КЭШ-ПАМЯТЬ
-
дисками и ОП. Емкость такой памя-

ти обычно достаточно велика – от 8 Мбайт и более. Пересылка информации между дисками и основной памятью организуется контроллером дисковой кэш-памяти. Изготавливается дисковая кэш-память на
базе таких же полупроводниковых запоминающих устройств, что и
основная память, поэтому в ряде случаев с ней обращаются как с дополнительной основной памятью. С
другой стороны, в ряде операционных систем, таких как UNIX, в качестве дискового кэша используется область основной памяти.
В дисковой кэш-памяти хранятся блоки информации, которые с
большой вероятностью будут востребованы в ближайшем будущем.
Принцип локальности, обеспечивающий эффективность обычной кэшпамяти, справедлив и для дисковой, приводя к сокращению времени
вывода данных от величин 20…30 мс до значений порядка
ввода/
2…5 мс, в зависимости объема передаваемой информации.
В качестве единицы пересылки может выступать сектор, несколько секторов, а также одна или несколько дорожек диска. Кроме того,
иногда применяется пересылка информации, начиная с выбранного
сектора на дорожке до ее конца. В случае пересылки секторов
кэшпамять заполняется не только требуемым сектором, но секторами, непосредственно следующими за ним, так как известно, что в большинстве случаев взаимосвязанные данные хранятся в соседних секторах.
Этот метод известен также как опережающее чтение (read ahead).
В дисковых кэшах обычно используется алгоритм сквозной запи-
си. Специфика состоит в том, что далеко не
всю информацию, перемещаемую между дисками и основной памятью, выгодно помещать в
дисковый кэш. В ряде случаев определенные данные и команды целесообразно пересылать напрямую между ОП и диском. По этой причине в системах с дисковым кэшем предусматривают специальный динамический механизм, позволяющий переключать тракт пересылки
информации: через кэш
или минуя его.
Одна из привлекательных сторон дискового кэша в том, что связанные с ним преимущества могут быть получены без изменений в
имеющемся аппаратном и программном обеспечении. Многие серийно
выпускаемые дисковые кэши интегрированы в состав дисковых ЗУ.
В качестве примера можно привести модель 23 системы IBM 3880, в
состав которой входят дисковые ЗУ
со встроенным контроллером кэшпамяти и кэш-памятью емкостью от 8 до 64 Мбайт. Дисковая кэшпамять применяется и в персональных ВМ.
Дисковая кэш-память обычно включает в себя средства для обнаружения и исправления ошибок. Так, в уже упоминавшейся модели 23
системы IBM 3880 имеются средства для обнаружения тройных ошибок
(одновременного появления ошибок в
трех разрядах) и исправления
одиночных, двойных и большинства тройных ошибок. Более ранняя
99

модель 13 той же системы имела кэш-память емкостью 4…8 Мбайт и
умела обнаруживать двойные и исправлять одиночные ошибки. В обеих моделях замещение информации в кэше производится в соответствии с алгоритмом минимального предыдущего использования (LRU).
Примечательно, что архитектура кэш-памяти современных магнитных дисков типа «винчестер» реализует полностью ассоциативное
отображение.
5.10. ПОНЯТИЕ ВИРТУАЛЬНОЙ ПАМЯТИ
Для большинства типичных применений ВМ характерна ситуация, когда размещение всей программы в ОП невозможно из-за ее
большого размера. В этом однако и нет принципиальной необходимости, поскольку в каждый момент времени «внимание» машины концентрируется на определенных сравнительно небольших участках программы. Таким образом, в ОП достаточно хранить только
используемые в данный период части программ, а остальные части могут располагаться на внешних ЗУ (ВЗУ). Сложность подобного подхода в том,
что процессы обращения к ОП и ВЗУ существенно различаются, и это
усложняет задачу программиста. Выходом из такой ситуации было
появление в 1959 году идеи виртуализации памяти, под которой понимается метод автоматического управления иерархической памятью,
при котором программисту кажется, что он имеет дело с единой памятью большой емкости и высокого быстродействия. Эту память называют виртуальной (кажущейся) памятью. По своей сути виртуализация
памяти представляет собой способ аппаратной и программной реализации концепции иерархической памяти.
В рамках идеи виртуализации памяти
ОП рассматривается как
линейное пространство N адресов, называемое физическим пространством памяти. Для задач, где требуется более чем N ячеек, предоставляется значительно большее пространство адресов (обычно равное
общей емкости всех видов памяти), называемое виртуальным пространством, в общем случае не обязательно линейное. Адреса виртуального пространства называют виртуальными, а адреса физического
пространства – физическими. Программа пишется в виртуальных адресах, но поскольку для ее выполнения нужно, чтобы обрабатываемые
команды и данные находились в ОП, требуется, чтобы каждому виртуальному адресу соответствовал физический. Таким образом, в процессе вычислений необходимо, прежде всего, переписать из ВЗУ в ОП ту
часть информации, на которую указывает виртуальный
адрес (отобразить виртуальное пространство на физическое), после чего преобразовать виртуальный адрес в физический.
100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
