Тарифы Услуги Сим-карты

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

ОРГАНИЗАЦИЯ ПАМЯТИ В ВЫЧИСЛИТЕЛЬНЫХ МАШИНАХ

Назначение, основные параметры и

Классификация видов памяти

Устройства памяти (запоминающие устройства) ВМ предназначены для записи, хранения и считывания информации, представленной в цифровой форме /2,3/. Устройства памяти, как и процессоры, оперируют с двумя видами информации – программами и данными, поэтому характеристики памяти во многом определяют производительность и функциональные возможности ВМ.

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

Основными параметрами, характеризующими устройства памяти, являются информационная емкость (объем), быстродействие, энергопотребление и стоимость /2,5,8/.

Информационная емкость (объем) устройства памяти определяется максимальным количеством хранимой информации и измеряется в байтах, Кбайтах, Мбайтах, Гбайтах и Тбайтах.

1 Кбайт = 2 10 байт; 1Мбайт = 2 20 байт; 1Гбайт = 2 30 байт и 1Тбайт = 2 40 байт.

Быстродействие памяти характеризуется следующими основными параметрами:

временем выборки (доступа) t В, определяемым временным интервалом между моментами подачи сигнала выборки (начала цикла чтения) и получением считанных данных на выходе памяти;

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

В общем случае цикл обращения состоит из фазы выборки (доступа) и фазы регенерации (восстановления) памяти, поэтому t Ц > t В.

Быстродействие памяти можно также характеризовать скоростью передачи записываемых или считываемых данных и измерять в Мбайтах/сек.

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

Для сравнения разных видов памяти удобно использовать приведенные к одной ячейке (т.е. удельные) энергопотребление и стоимость устройств памяти.

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

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

По физическому принципу работы память классифицируется на электронную, магнитную, оптическую, магнитно – оптическую.

Электронная память выполняется на полупроводниковых элементах и реализуется в виде БИС. Электронная память разделяется на статическую и динамическую.

В БИС статической памяти в качестве элементарных ячеек памяти применяются статические триггеры на биполярных или полевых транзисторах. Как известно, число устойчивых состояний триггера равно двум, что позволяет использовать его для хранения единицы информации – бита. Ячейки памяти для хранения байт и слов используют соответственно 8 и 16 триггеров.

В БИС динамической памяти в качестве элементарных ячеек памяти применяются электрические конденсаторы. Наличие заряда соответствует хранению логической «1», отсутствие заряда – хранению логического «0». В качестве запоминающих конденсаторов используются либо межэлектродные емкости МОП транзисторов, либо специально созданные в кристалле БИС МОП конденсаторы. Фрагмент структурной схемы динамической памяти, содержащий две ячейки 1 и 2, изображен на рис.6.1.

Каждая элементарная ячейка памяти содержит запоминающий МОП конденсатор С (десятые доли пФ) и транзисторный ключ Т, подключающий этот конденсатор к шине данных. Затвор транзисторного МОП – ключа соединен с соответствующим выходом дешифратора адреса. При выборе ячейки ключ Т открывается и подключает конденсатор С к шине данных. Далее, в зависимости от вида команды: запись (WR) или чтение (RD) - через соответствующий усилитель производится запись входных данных (DI) или чтение выходных данных (DO).

Динамическая память по сравнению со статической существенно проще, дешевле и обеспечивает очень высокую степень интеграции, т.е. более высокую удельную емкость. Но по сравнению со статической динамическая память обладает меньшим быстродействием и требует периодической регенерации (восстановления) информации в элементарных ячейках. Другими словами, необходимо периодически восстанавливать заряд на запоминающих конденсаторах С, которые с течением времени саморазряжаются, т.е. «теряют» информацию. Для этого через каждые несколько миллисекунд (mсек) производятчтение информации из ячеек памяти и затем повторную запись информации, что позволяет восстанавливать заряд на запоминающих конденсаторах C. Необходимость организации периодических циклов регенерации (Refresh Cycles) несколько усложняет управление динамической памятью.

Для типовых модулей электронной памяти время выборки t В составляет единицы – десятки наносекунд (nсек ), а информационная емкость – десятки – сотни Мбайт.

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

Магнитная память основана на наличии у ряда магнитных материалов (например, окиси железа) двух устойчивых состояний остаточного намагничивания противоположного знака. Такие магнитные материалы характеризуются прямоугольной петлей гистерезиса B = f(H) , и из них выполняется рабочий магнитный слой, наносимый на поверхность различных подвижных носителей – магнитных дисков. Для записи и чтения информации используются магнитные головки, представляющие собой миниатюрные катушки индуктивности, намотанные на магнитном сердечнике с зазором. При записи магнитная головка намагничивает участок магнитного слоя, проходящий под рабочим зазором, в направлении, определяемом направлением протекающего тока. При считывании намагниченные участки поверхности проходят около индуктивной головки считывания и наводят в ней импульсы э.д.с. Устройства памяти, использующие этот принцип, имеют очень низкую удельную стоимость хранения информации, являются энергонезависимыми, но, являясь электромеханическими, по быстродействию, надежности и энергопотреблению существенно уступают электронной памяти. Для НЖМД скорость передачи данных достигает десятков Мбайт/сек, а информационная емкость – сотен Гбайт.



В оптической памяти для хранения информации используется изменение оптических свойств (в основном, степени отражения) поверхности носителя. Оптический носитель выполняется в виде диска (Compact Disk - CD), отражающий слой (металлическое напыление) которого покрыт слоем органического красителя. При записи луч лазера модулируется потоком записываемых бит и в определенных местах дорожки выжигает ямки в слое красителя. За счет разницы коэффициента отражения ямок и невыжженных участков поверхности при считывании возникает модуляция яркости отраженного луча, которая кодирует считываемую с CD информацию. Производятся различные типы оптических CD дисков: CD-ROM (Read Only Memory) – позволяющие только считывать записанную матричным способом информацию, CD-R (Recordable) – допускающие хотя бы однократную запись на диск и многократное считывание, CD-RW (ReWritable) – позволяющие многократную перезапись на диск (и конечно же, считывание). Оптические диски дешевы и имеют значительную (до одного Гбайта) информационную емкость, являются энергонезависимыми и легко сменяемыми, но по быстродействию, надежности и энергопотреблению, как и магнитные диски, существенно уступают электронной памяти.

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

ОЗУ предназначено для хранения программ (системных, прикладных) и данных, непосредственно используемых ЦП в текущее время. Длительности циклов чтения и записи для оперативной памяти, как правило, одинаковы. Обычно в качестве ОЗУ применяется динамическая память объемом до единиц Гбайт в зависимости от назначения и области применения МС.

СОЗУ или кэш-память (Cache Memory) – это небольшого объема быстродействующая память, у которой длительность цикла обращения t Ц. меньше длительности машинного цикла процессора. Поэтому при обращении к кэш-памяти не требуется вводить такты ожидания процессора в машинные циклы обращения к памяти. Кэш-память является буферной памятью между ОЗУ и ЦП и выполняется на базе статической памяти. Кэш хранит копии блоков (страниц) программ и данных тех областей ОЗУ, к которым происходили последние обращения, а также каталог – список их текущего соответствия областям ОЗУ. При каждом обращении к оперативной памяти контроллер кэш-памяти по каталогу проверяет, есть ли действительная копия затребованного блока (страницы) в кэш. Если копия там есть, то это случай кэш-попадания , и обращение за данными или кодом происходит только к кэш-памяти. Если действительной копии там нет, то это случай кэш-промаха , и в кэш записывается требуемый блок (страница) из ОЗУ, причем запись производится на место предварительно удаленного из кэш в ОЗУ наименее актуального блока (страницы), т.е. блока информации, число обращений к которому было наименьшим. За счет присущих программам и данным таких фундаментальных свойств, как пространственная и временная локальности /2,7,13/ число кэш-попаданий во много раз превышает число кэш-промахов даже при небольших (единицы – десятки Кбайт) объемах кэш памяти. Поэтому использование кэш-памяти значительно повышает производительность ВМ. Обычно кэш реализуется по трехуровневой схеме: первичный кэш (L1 Cache), объемом десятки Кбайт, и вторичный кэш (L2 Cache), объемом сотни Кбайт, размещается в кристалле МП, кэш третьего уровня (L3 Cache), единицы Мбайт устанавливают на системной плате или в корпусе МП.

ПЗУ – это электронная энергонезависимая память, которая применяется для хранения неизменяемой или редко изменяемой в течении времени эксплуатации ВМ информации: системного ПО (BIOS), прикладного ПО для встраиваемых и бортовых ВМ, наборов таблиц, параметров конфигурации различных систем и т.п. Основным режимом работы ПЗУ является чтение, что и обуславливает другое общее название такой памяти ROM (Read Only Memory). Запись информации в ПЗУ, называемая программированием, обычно существенно сложнее, требует больших затрат времени и энергии, чем чтение.

ВЗУ предназначены для энергонезависимого хранения больших объемов определенным образом структурированной информации: файлов, баз данных, архивов. Характерной особенностью внешней памяти является то, что ее устройства оперируют блоками информации, а не байтами или словами, как это позволяет оперативная память. Кроме того, процессор может осуществлять доступ к ВЗУ только через оперативную память. В качестве ВЗУ обычно используется дисковые (НЖМД, CD) накопители, позволяющие хранить сотни Гбайт информации.

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

Способ организации памяти определяется методом размещения и поиска информации в ЗУ. По этому признаку различают адресную, ассоциативную и стековую организацию памяти.

В адресной памяти для обращения к ячейкам памяти используются их адреса , под которыми понимаются коды номеров ячеек памяти. Адресная организация памяти позволяет обращаться к ячейкам памяти по их адресам в произвольном порядке, причем длительность цикла обращения является одинаковой для всех ячеек независимо от адреса. Поэтому для названия такой память также используется термин «запоминающие устройства с произвольной выборкой (ЗУПВ)» или RAM (Random Access Memory). Адресную организацию памяти имеют, например, ОЗУ и ПЗУ.

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

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

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

Стековая память (Stack), так же как и ассоциативная является безадресной. Стек можно рассматривать как совокупность ячеек, образующих одномерный массив, в котором соседние ячейки связаны друг с другом разрядными цепями передачи слов. В этой памяти запись и чтение производятся по правилу «последнее записанное считывается первым» или «Last Input First Output (LIFO)». Поэтому стек называют «магазинной» памятью с обратным порядком считывания. Обычно стек организуют в оперативной памяти. Количество слов в стеке определяется регистром-указателем стека SP, а запись в стек и чтение из него производится соответственно командами PUSH и POP. Широкое применение стековая память находит, как уже было рассмотрено выше, при обработке прерываний и вызове подпрограмм.

Наряду со стековой памятью большое распространение получила «магазинная» память с прямым порядком считывания, т.е. «первое записанное считывается первым» или «First Input First Output (FIFO)». Эта память называется буферной и, как и стек, организуется в ОЗУ.

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

1. Память в ЭВМ имеет многоуровневую организацию.

2.Память классифицируется по способу доступа к данным.

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

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

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

3. По способу хранения.

Статические

Динамические

Постоянные

Флэш память

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

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

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

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

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

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

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



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

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

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

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

Что касается архитектуры самих ЗУ, которые предназначены для хранения,

записи и считывания данных можно отметить следующее.

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

Увеличение емкости памяти

Увеличение быстродействия

Повышение надежности хранения и снижение энергоемкости памяти.

Если системная память современных 32х разрядных компьютеров,имеющих адресную шину обращения к памяти в 32 разряда, дает возможность наращивать свою емкость до 4ГБТ, то для ЭВМ 2и 3 поколений, имеющих ферритовую память, емкость даже суперкомпьютеров того времени исчислялась только десятками и сотнями кбт Так емкость памяти БЭСМ6 отечественного суперкомпьютера в свое время составляла около768кбт,даже не доходя до мегабайтной границы.

Скачок в объеме оперативной памяти произошел с введением полупроводниковой технологии при изготовлении запоминающих устройств памяти,благодаря которой емкость оперативной памяти перешагнула мегабайтный рубеж. Одной из первых ЭВМ, которая имела такую память была IBM7030 в1961году.Размер ее памяти составлял 2МГБТ. Конструкторские наработки в этой машине были использованы позже в известных сериях машин IBM360 и IBM370. Эти машины, имеющие адресные шины обращения к памяти в 24 разряда имели возможность наращивания объемов своих памятей до16 МГБТ. С внедрением 32х разрядной шины в таких ЭВМ как ESA370, IBM4381 память хоть и не перешла гигабайтную границу, но имела возможность наращивания от 16 до64мгбт.

Современные мейнфреймы Zархитектуры такие,например, как Z9BC имеют возможность наращивания до 64ГБТ,имея 64 разрядную шину, а ЭВМZ10 даже до 1,5ТРБТ.

Что же касается наших отечественных ЭВМ объем оперативной памяти машин ЕС Ряд 3(ЕС1046,ЕС1066) достиг 8Мгбт, машин которым суждено было закончить свой исторический путь развития на этом этапе.

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

Следующей одной из основных характеристик физической организации памяти является время выборки данных,которое составляло для ЭВМ 2ого поколения, имеющих память на магнитных сердечниках, 10-12мкск. И только с внедрением полупроводниковой памяти время выборки данных сократилось на порядок и стало от 1,5 до0,5мкск.

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

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

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

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

Реальная память стала разбиваться на физические страницы, размеры которых соответствовали размеру виртуальных страниц.

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

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

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

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

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

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

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

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

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

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

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

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

Рассмотрим, какие аппаратные средства необходимы для преобразования логических адресов в физические.

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

Поэтапный механизм преобразования логического адреса в физический(при разбиении старшей части логического адреса на две части) происходит в следующем порядке:

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

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

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

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

И так в соответствии с вышеописанным алгоритмом аппаратными средствами поддержки преобразования логических адресов в физические являются:

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

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

3. Сумматор для выполнения операций сложения адресной арифметики.

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

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

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

Следует отметить, что идеология сегментации виртуальной памяти в вычислительных системах трактуется по- разному. Например, этап сегментации в процессе преобразования логических адресов в физические в системах фирмы IBM(IBM360,IBM370,сервера Zархитектуры) неотделим от этапа страничного преобразования, являясь предшествующим этапом перед этапом преобразования страниц также как в системахINTEL, он управляется только старшей частью адресов логического адреса, средняя часть адреса и младшая группа адресов участвует только при страничном преобразовании. Тем самым осуществляя неразделимую логическую связь между этапами, разбивая виртуальную память вначале на сегменты- области большого размера а потом сегменты на страницы.

В серверах Zархитектуры размер виртуального адреса был увеличен до64 разрядов, что дало возможность адресовать виртуальную память объемом до 16 эксабайт. Что же касается многомерности логической памяти в этих серверах, то аппаратная часть их дает возможность иметь до4х типов виртуальных независимых друг от друга адресных пространств с количеством пространств в двух из них по 64К и в двух оставшихся по 16 со своими табличными преобразованиями для каждого типа, которые используются для построения виртуальных логических образований- логических партиций,в каждой из которых функционирует своя операционная система. Каждый тип виртуальных адресов, связан с типом своей виртуальной памятью подвержен одному и тому же механизму преобразования со своими наборами таблиц. Следовательно, следуя понятиям и терминологии, рассмотренными выше, память в этих серверах можно считать набором из 4х типов одномерных виртуальных памятей с пятиэтапным преобразованием,имеющими пять видов областей: страница, сегмент, регион1, регион2, регион3.

Схема преобразования виртуальных адресов в серверах Zархитектуры

Глава 11

Организация памяти вычислительных систем

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

В зависимости от того, каким образом организована память многопроцессорных (многомашинных) систем, различают вычислительные системы с общей памятью (shared memory) и ВС с распределенной памятью (distributed memory). В системах с общей памятью (ее часто называют также совместно используемой или разделяемой памятью) намять ВС рассматривается как общин ресурс, и каждый из процессоров имеет полный доступ ко всему адресному пространству. Системы с обшей памятью называют сильно связанными (closely coupled systems). Подобное построение вычислительных систем имеет место как в классе SIMD, так и в классе MIMD. Иногда, чтобы подчеркнуть это обстоятельство, вводят специальные подклассы, используя для их обозначения аббревиатуры SM-SIMD (Shared Memory SIMD) и SM-MIMD (Shared Memory MIMD).

В варианте с распределенной памятью каждому из процессоров придается собственная память. Процессоры объединяются в сеть и могут при необходимости обмениваться данными, хранящимися в их памяти, передавая друг другу так называемые сообщения. Такой вид ВС называют слабо связанными (loosely coupled systems). Слабо связанные системы также встречаются как в классе SIMD, так и В классе MIMD, и иной раз, чтобы подчеркнуть данную особенность, вводят подклассы DM-SIMD (Distributed Memory SIMD) и DM-MIMD (Distributed Memory MIMD).

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

Различие между общей и распределенной памятью - это разницу в структуре виртуальной памяти, то есть в том, как память выглядит со стороны процессора. Физически почти каждая система памяти разделена на автономные компоненты доступ к которым может производиться независимо. Общую память от распределенной отлипает то, каким образом подсистема памяти интерпретирует поступивший от процессора адрес ячейки. Для примера положим, что процессор выполняет команду load RO, i, означающую «Загрузить регистр R0 содержимым ячейки i». В случае общей памяти i - это глобальный адрес, и для любого процессора указывает на одну и ту же ячейку. В распределенной системе памяти i - это локальный адрес Если два процессора выполняют команду load RO, i, то каждый из них обращается к i-й ячейке в своем локальной памяти, то есть к разным ячейкам, и в регистры R0 могут быть загружены неодинаковые значения.

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

Память с чередованием адресов

Физически память вычислительной системы состоит из нескольких модулей (банков), при этом существенным вопросом является то, как в этом случае распределено адресное пространство (набор всех адресов, которые может сформировать процессор). Один из способов распределения виртуальных адресов по модулям памяти состоит в разбиении адресного пространства на последовательные блоки. Если память состоит из п банков, то ячейка с адресом i при поблочном разбиении будет находиться в банке с номером i / n . В системе памяти с чередованием адресов (interleaved memory) последовательные адреса располагаются в различных банках: ячейка с адресом i находится в банке с номером i mod п. Пусть, например, память состоит из четырех банков, по 256 байт в каждом. В схеме, ориентированной на блочную адресацию, первому банку будут выделены виртуальные адреса 0-255, второму - 256-511 и т. д. В схеме с чередованием адресов последовательные ячейки в первом банке будут иметь виртуальные адреса 0, 4, 8, .... во втором банке - 1, 5, 9 и т. д. (рис. 11.1, а).

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

Рис. 11.1- Память с чередованием адресов: а - распределение адресов; б- элементы, извлекаемые с шагом 9 из массива 8 х 8

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

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

Системы памяти зачастую обеспечивают дополнительную гибкость при извлечении элементов векторов. В некоторых системах возможна одновременная загрузка каждого n-го элемента вектора, например, при извлечении элементов вектора V , хранящегося в последовательных ячейках памяти; при п = 4, память возвратит Интервал между элементами называют шагом по индексу или «страйдом» (stride). Одним из интересных применений этого свойства может служить Доступ к матрицам. Если шаг по индексу на единицу больше числа строк в матрице, одиночный запрос на доступ к памяти возвратит все диагональные элементы матрицы (рис. 11.1,б). Ответственность за то, чтобы все извлекаемые элементы матрицы располагались в разных банках, ложится на программиста.

Модели архитектуры памяти вычислительных систем

В рамках как совместно используемой, так и распределенной памяти реализуется несколько моделей архитектур системы памяти.

Рис. 11.2. Классификация моделей архитектур памяти вычислительных систем

На рис. 11.2 приведена классификация таких моделей, применяемых в вычислительных системах класса MIMD (верна и для класса S1MD).

Модели архитектур совместно используемой памяти

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

Вычислительные системы с общей памятью, где доступ любого процессора к памяти производится единообразно и занимает одинаковое время, называют системами с однородным доступом к памяти и обозначают аббревиатурой UMA (Uniform Memory Access). Это наиболее распространенная архитектура памяти параллельных ВС с общей памятью .

Технически UМА-системы предполагаю наличие узла, соединяющего каждыйиз п процессоров с каждым из т модулей памяти. Простейший путь построения таких ВС - объединение нескольких процессоров (Р i) с единой памятью (M p) посредством общей шины - показан на рис. 11.3, а. В этом случае, однако, в каждый момент времени обмен по шине может вести только один из процессоров, то есть процессоры должны соперничать за доступ к шипе. Когда процессор Р i выбирает из памяти команду, остальные процессоры должны ожидать, пока шина освободится. Если в систему входят только два процессора, они в состоянии работать с производительностью, близкой к максимальной, поскольку их доступ к шинеможно чередовать: пока один процессор декодирует и выполняет команду, другой вправе использовать шину для выборки из памяти следующей команды. Однако когда добавляется третий процессор, производительность начинает падать. При наличии на шине десяти процессоров кривая быстродействия шины (рис. Н.З, а) становится горизонтальной, так что добавление 11-го процессора уже не дает повышения производительности. Нижняя кривая на этом рисунке иллюстрирует тот факт, что память и шина обладают фиксированной пропускной способностью, определяемой комбинацией длительности цикла памяти и протоколом шины, и в многопроцессорной системе с общей шиной эта пропускная способность распределена между несколькими процессорами. Если длительность цикла процессора больше по сравнению с циклом памяти, к шине можно подключать много процессоров. Однако фактически процессор обычно намного быстрее памяти, поэтому данная схема широкого применения не находит.

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

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

К сожалению, архитектура UMA не очень хорошо масштабируется. Наиболее распространенные системы содержат 4-8 процессоров, значительно реже 32-64 процессора. Кроме того, подобные системы нельзя отнести к отказоустойчивым, так как отказ одного процессора или модуля памяти влечет отказ всей ВС.

Другим подходом к построению ВС с общей памятью является неоднородный доступ к памяти, обозначаемый как NUM A (Non-Uniform Memory Access), Здесь по-прежнему фигурирует единое адресное пространство, но каждый процессор имеет локальную память. Доступ процессора к собственной локальной памяти производится напрямую, что намного быстрее, чем доступ к удаленной памяти через коммутатор или сеть. Такая система может быть дополнена глобальной памятью тогда локальные запоминающие устройства играют роль быстрой кэш-памяти для глобальной памяти. Подобная схема может улучшить производительность ВС, по не в состоянии неограниченно отсрочить выравнивание прямой производительности. При наличии у каждого процессора локальной кэш-памяти (рис. 11.3,6) существует высокая вероятность (р > 0,9) того, что нужные команда или данные уже находятся в локальной памяти. Разумная вероятность попадания в локальную память существенно уменьшает число обращений процессора к глобальной памяти и, таким образом, ведет к повышению эффективности. Место излома кривой производительности (верхняя кривая на рис. 11.3, в), соответствующее точке, в которой добавление процессоров еще остается эффективным, теперь перемещается в область 20 процессоров, а тонка, где кривая становится горизонтальной, - в область 30 процессоров.

В рамках концепции NUMA реализуется несколько различных подходов, обозначаемых аббревиатурами СОМА, CC - NUMA и NCC - NUMA .

В архитектуре только с кэш-памятью (СОМА, Cache Only Memory Architecture) локальная память каждого процессора построена как большая кэш-память для быстрого доступа со стороны «своего» процессора . Кэши всех процессоров в совокупности рассматриваются как глобальная память системы. Собственно глобальная память отсутствует. Принципиальная особенность концепции СОМА выражается в динамике. Здесь данные не привязаны статически к определенному модулю памяти и не имеют уникального адреса, остающегося неизменным в течение всего времени существования переменной. В архитектуре СОМА данные переносятся в кэш-память того процессора, который последним их запросил, при этом переменная не фиксирована уникальным адресом и в каждый момент времени может размещаться в любой физической ячейке. Перенос данных из одного локального кэша в другой не требует участия в этом процессе операционной системы, но подразумевает сложную и дорогостоящую аппаратуру управления памятью. Для организации такого режима используют так называемые каталоги кэшей. Отметим также, что последняя копия элемента данных никогда из кэш-памяти не удаляется.

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

Модель кэш-когерентного доступа к неоднородной памяти (CC-NUMA, Сасhe Coherent Non-Uniform Memory Architecture) принципиально отличается от модели СОМА. В системе CC-NUMA используется не кэш-память, а обычная физически распределенная память. Не происходит никакого копирования страниц или данных между ячейками памяти. Нет никакой программно реализованной передачи сообщений. Существует просто одна карта памяти, с частями, физически связанными медным кабелем, и «умные» аппаратные средства. Аппаратно реализованная кэш-когерентность означает, что не требуется какого-либо программного обеспечения для сохранения множества копий обновленных данных или их передачи. Со всем этим справляется аппаратный уровень. Доступ к локальным модулям памяти в разных узлах системы может производиться одновременно и происходит быстрее, чем к удаленным модулям памяти.

Отличие модели с кэш-некогерентным доступом к неоднородной памяти (NCC-NUMA, Non-Cache Coherent Non-Uniform Memory Architecture) от CC-NUMA очевидно из названия. Архитектура памяти предполагает единое адресное пространство, но не обеспечивает согласованности глобальных данных на аппаратном уровне. Управление использованием таких данных полностью возлагается на программное обеспечение (приложения или компиляторы). Несмотря на это обстоятельство, представляющееся недостатком архитектуры, она оказывается весьма полезной при повышении производительности вычислительных систем с архитектурой памяти типа DSM, рассматриваемой в разделе «Модели архитектур распределенной памяти».

В целом, ВС с общей памятью, построенные по схеме NUMA, называют архитектурами с виртуальной общей памятью (virtual shared memory architectures). Данный вид архитектуры, в частности CC-NUMA, в последнее время рассматривается как самостоятельный и довольно перспективный вид вычислительных систем класса MIMD, поэтому такие ВС ниже будут обсуждены более подробно.

Модели архитектур распределенной памяти

В системе с распределенной памятью каждый процессор обладает собственной памятью и способен адресоваться только к ней. Некоторые авторы называют этот тип систем многомашинными ВС или мультикомпъютерами, подчеркивая тот факт, что блоки, из которых строится система, сами по себе являются небольшими вычислительными системами с процессором и памятью. Модели архитектур с распределенной памятью принято обозначать как архитектуры без прямого доступа к удаленной памяти (NORMA, No Remote Memory Access). Такое название следует из того факта, что каждый процессор имеет доступ только к своей локальной памяти. Доступ к удаленной памяти (локальной памяти другого процессора) возможен только путем обмена сообщениями с процессором, которому принадлежит адресуемая память.

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

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

    требуется время для того, чтобы сформировать и переслать сообщение от одно! процессора к другому;

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

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

Рис. 11.4. Вычислительная система с распределенной памятью: а - процессорный элемент; б - объединение процессорных элементов о

Интересный вариант системы с распределенной памятью представляет собой; модель распределенной совместно используемой памяти (DSM, Distribute Shared Memory), известной также и под другим названием архитектуры с неоднородным доступом к памяти и программным обеспечением когерентности (SC-NUMA, Software-Coherent Non-Uniform Memory Architecture). Идея этой модели состоит в том, что ВС, физически будучи системой с распределенной памятью, благодаря операционной системе представляется пользователю как система с общей памятью. Это означает, что операционная система предлагает пользователю единое адресное пространство, несмотря на то что фактическое обращение к памяти «чужого» компьютера ВС по-прежнему обеспечивается путем обмена сообщениями.

Мультипроцессорная когерентность кэш-памяти

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

В простейшей форме проблему когерентности кэш-памяти можно пояснить следующим образом (рис 11.5). Пусть два процессора Р г и Р г связаны с общей памятью посредством шины. Сначала оба процессора читают переменную х. Копии блоков, содержащих эту переменную, пересылаются из основной памяти в локальные кэши обоих процессоров (рис. 11.5, а). Далее процессор P t выполняет операцию увеличения значения переменной х на единицу. Так как копия переменной уже находится в кэш-памяти данного процессора, произойдет кэш-попадание и значение сбудет изменено только в кэш-памяти 1. Если теперь процессор Р 2 вновь выполнит операцию чтения х, то также произойдет кэш-попадание и Р 2 получит хранящееся в его кэш-памяти «старое» значение х (рис. 11.5, б).

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

В решении проблемы когерентности выделяются два подхода: программный и аппаратный. В некоторых системах применяют стратегии, совмещающие оба подхода.

Программные способы решения проблемы когерентности

Программные приемы решения проблемы когерентности позволяют обойтись без дополнительного оборудования или свести его к минимуму }