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

Таблица 9.1. Иерархия подсистемы памяти ПК
Тип ЗУ 1985 г. 2000 г.
Время выборки Типичный объем Цена / байт Время выборки Типичный объем Цена / байт
1 Сверхоперативные ЗУ (регистры) 0,2 5 нс 16/32 бит $ 3 - 100 0,01 1 нс 32/64/128 бит $ 0,1 10
2 Быстродействующее буферное ЗУ (кэш) 20 100 нс 8Кб - 64Кб ~ $ 10 0,5 - 2 нс 32Кб 1Мб $ 0,1 - 0,5
3 Оперативное (основное) ЗУ ~ 0,5 мс 1Мб - 256Мб $ 0,02 1 2 нс 20 нс 128Мб - 4Гб $ 0,01 0,1
4 Внешние ЗУ (массовая память) 10 - 100 мс 1Мб - 1Гб $ 0,002 - 0,04 5 - 20 мс 1Гб - 0,5Тб $ 0,001 - 0,01

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

Кэш используется для согласования скорости работы ЦП и основной памяти. В вычислительных системах используют многоуровневый кэш : кэш I уровня (L1), кэш II уровня (L2) и т.д. В настольных системах обычно используется двухуровневый кэш , в серверных - трехуровневый. Кэш хранит команды или данные, которые с большой вероятностью в ближайшее время поступят процессору на обработку. Работа кэш-памяти прозрачна для программного обеспечения, поэтому кэш- память обычно программно недоступна.

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

Каждой ячейке оперативной памяти присвоен уникальный адрес . Организационные методы распределения памяти предоставляют программистам возможность эффективного использования всей компьютерной системы. К таким методам относят сплошную ("плоскую") модель памяти и сегментированную модель памяти. При использовании сплошной модели ( flat model ) памяти программа оперирует единым непрерывным адресным пространством линейным адресным пространством, в котором ячейки памяти нумеруются последовательно и непрерывно от 0 до 2n-1, где n - разрядность ЦП по адресу. При использовании сегментированной модели (segmented model ) для программы память представляется группой независимых адресных блоков, называемых сегментами. Для адресации байта памяти программа должна использовать логический адрес , состоящий из селектора сегмента и смещения. Селектор сегмента выбирает определенный сегмент, а смещение указывает на конкретную ячейку в адресном пространстве выбранного сегмента.

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

Назначение и характеристики ВС. Организация вычислений в вычислительных системах. ЭВМ параллельного действия, понятия потока команд и потока данных. Ассоциативные системы. Матричные системы. Конвейеризация вычислений. Конвейер команд, конвейер данных. Суперскаляризация.

Студент должен

знать:

Понятие потока команд;

Понятие потока данных;

Типы вычислительных систем;

Архитектурные особенности вычислительных систем

Вычислительные системы

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

Создание ВС преследует следующие основные цели:

· повышение производительности системы за счёт ускорения процессов обработки данных;

· повышение надёжности и достоверности вычислений;

· предоставление пользователю дополнительных сервисных услуг т.д.

Тема 3.2

Классификация ВС в зависимости от числа потоков команд и данных: ОКОД (SISD), ОКМД (SIMD), МКОД (MISD), МКМД (MIMD).

Классификация многопроцессорных ВС с разными способами реализации памяти совместного использования: UMA, NUMA, СОМА. Сравнительные характеристики, аппаратные и программные особенности.

Классификация многомашинных ВС: МРР, NDW и COW. Назначение, характеристики, особенности.

Примеры ВС различных типов. Преимущества и недостатки различных типов вычислительных систем.

Классификация вычислительных систем

Отличительной особенностью ВС по отношению к классическим ЭВМ является наличие в ней нескольких вычислителей, реализующих параллельную обработку .

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

Вычислительные системы можно разделить на две группы:

· многомашинные ;

· многопроцессорные .

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

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

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

Особенностью многопроцессорных вычислительных систем является наличие общей оперативной памяти в качестве общего ресурса (рисунок 11).

Рисунок 11 - Архитектура многопроцессорной вычислительной системы

Классификация Флинна

Среди всех рассматриваемых систем классификации ВС наибольшее распространение получила классификация, предложенная в 1966г М. Флинном. В её основу положено понятие потока , под которым понимается последовательность элементов команд или данных, обрабатываемая процессором. В зависимости от количества потоков команд и потоков данных Флинн выделяет 4 класса архитектур:

· ОКОД – одиночный поток команд - одиночный поток данных. К ним относятся классические фон – неймановские ВМ. Конвейерная обработка не имеет значения, поэтому в класс ОКОД попадают как ВМ 6600 со скалярными функциональными устройствами, так и 7600 с конвейерными.

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

· ОКМД – один поток команд – много потоков данных – команды выдаются одним управляющим процессором, а выполняются одновременно на всех обрабатывающих процессорах над локальными данными этих процессоров. SIMD (single instruction – multiple data)

· МКМД – много потоков команд - много потоков данных- совокупность компьютеров, работающих по своим программам со своими исходными данными. MIMD (multiple instruction – multiple data)

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

Существующие вычислительные системы класса MIMD образуют три подкласса: симметричные мультипроцессоры (SMP) , кластеры и массово параллельные системы (MPP). В основе этой классификации лежит структурно – функциональный подход.

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

Использование SMP обеспечивает следующие возможности:

· масштабирование приложений при низких начальных затратах, путём применения без преобразования приложений на новых более производительных аппаратных средствах;

· создание приложений в привычных программных средах;

· одинаковое время доступа ко всей памяти;

· возможность пересылки сообщений с большой пропускной способностью;

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

Кластерная система образуется из модулей, объединённых системой связи или разделяемыми устройствами внешней памяти, например, дисковыми массивами.

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

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

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

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

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

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

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

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

Рисунок 13 - Общая память:

а)объединение процессоров с помощью шины и система с локальными кэшами;

б) производительность системы как функция от числа процессоров на шине;

в) многопроцессорная ВС с общей памятью, состоящей из отдельных модулей

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

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

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

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

Модель кэш-когерентного доступа к неоднородной памяти (CC-NUMA, Cache 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, в последнее время рассматривается как самостоятельный и довольно перспективный вид вычислительных систем класса M1MD.

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

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

Студент должен

знать:

Классификацию ВС;

Примеры ВС различных типов.

уметь:

- выбирать тип вычислительной системы в соответствии с решаемой задачей.


©2015-2019 сайт
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-07-22

Модули памяти характеризуются такими параметрами, как объем (16, 32, 64, 128, 256 или 512 Мбайт), число микросхем, паспортная частота (100 или 133 МГц), время доступа к данным (6 или 7 нс) и число контактов (72, 168 или 184).

Модули DIP. Микросхемы DRAM упаковываются в так называемый DIP-корпус, при этом DIP обозначает Dual In-line Package (корпус с двухрядным расположением выводов). Этот термин относится к корпусам памяти, у которых выводы (Pins) расположены по бокам (напоминают жука) - рис. 3.48, а. Сам кристалл, на котором размещены ячейки памяти, существенно меньше, чем корпус. Данная конструкция корпуса обусловлена такими требованиями, как удобство печатного монтажа и установки микросхемы в панельки на системной плате, а также соблюдение температурного режима работы элементов.

Большинство модулей DIP имеют интервалы между выводами в ряду 2,54 мм (0,1"), а расстояние между рядами - 7,62 мм (0,3" - «Skinny DIP», «Тощий DIP») или 15,24 мм (0,6"). Типичное число контактов равно 8 или любому другому четному числу от 14 до 24 (реже -28) для корпусов на 0,3" и 24, 28, 32 или 40 (реже 36, 48 или 52) для корпусов на 0,6". На территории бывшего СССР используются аналогичные корпуса, но с размерами, выдержанными в метрической системе мер (например, интервал выводов 2,5 мм вместо 2,54 мм/0, Г).

Известны различные варианты корпусов DIP, в основном различающиеся материалом изготовления:

  • керамические (Ceramic Dual In-line Package - CERDIP);
  • пластмассовые (Plastic Dual In-line Package - PDIP);
  • пластмассовые уплотненные (Shrink Plastic Dual In-line Package - SPDIP) - уплотненная версия PDIP с интервалом выводов 1,778 мм (0,07").

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

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

Например, для микросхем фирмы Mostek первые две буквы МК являются обозначением фирмы, МКВ означает, что данная микросхема фирмы Mostek отбракована согласно военному стандарту (MIL STD-833), a MKI - что микросхема прошла отбраковку в соответствии с промышленным диапазоном температур. Цифра 4 говорит о том, что микросхема является элементом DRAM. Следующая за ней цифра обозначает количество инфор-

Рис. 3.48. Внешний вид модулей памяти: а - корпус DIP-14; б - модуль SIP; в - модуль ZIP; г - разъем ZIP; д - SIMM на 72 контакта; е -DDR2 (1 Гбайт, 533 МГц) с радиатором (184 контакта и один ключ); ж - DDR SO-DIMM (РС2700, 200 контактов); з - RDRAM-модуль со

встроенным радиатором

мационных разрядов: 1 - один разряд, 4 - четыре разряда. Группа цифр, следующая далее, обозначает количество информационных разрядов в килобитах (64 - 64 Кбит, 256 - 256 Кбит, 1000 - 1 Мбит). Далее буквой указывается тип корпуса (например, Р - пластмассовый, хотя тип может быть и не указан). Через дефис указывается время доступа в наносекундах. Таким образом, по обозначению МКВ44256-70 можно легко определить, что это микросхема фирмы Mostek, прошедшая отбраковку согласно военному стандарту, имеет емкость 4-го разряда по 256 Кбит каждый и время доступа 70 нс.

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

Технология, реализующая такую конструкцию элементов памяти, называется SMT (Surface Mounting Technology), дословно переводимая как «технология поверхностного монтажа». Благодаря ей совместимые элементы DRAM были установлены на одной плате, что, в первую очередь, означало экономию места.

В качестве реализации технологии SMT можно назвать так называемые SIP-модули с однорядным расположением выводов (Single In-line Package - SIP). SIP-модули представляют собой небольшую плату с установленными на ней совместимыми чипами DRAM (см. рис. 3.48). Такая плата имеет 30 выводов, размеры ее в длину около 8 см и в высоту около 1,7 см.

SIP-модули устанавливаются в соответствующие разъемы на системной плате. Однако при установке и извлечении таких модулей тонкие штырьки выводов часто обламываются, и контакт между штырьком и разъемом ненадежен. Это привело к дальнейшему развитию модулей памяти и появлению SIMM-модулей.

ZIP (Zig-zag In-line Package) - недолго просуществовавшая технология интегральных схем, в частности, чипов DRAM. Она была разработана для замены DIP. Интегральная схема ZIP заключается в пластиковый корпус, обычно размером 3 х 30 х 10 мм. Выводы устройства расположены в 2 ряда на одной из сторон корпуса. Эти ряды находятся на расстоянии 1,27 мм (0,05") друг от друга в шахматном порядке, что дает возможность их более компактного размещения, чем обычная прямоугольная решетка (рис. 3.48, в, г). Корпуса схем при этом могут располагаться на плате более плотно, нежели чем при схемотехнике DIP, при том же размере. ZIP были в дальнейшем вытеснены такими конфигурациями, как TSOP (thin small-outline packages), используемых в SIMM (single-in-line memory modules) и DIMM (dual-in-line memory modules).

SIMM-модули. Когда речь идет о SIMM-модуле, имеют в виду плату, которая по своим размерам примерно соответствует SIP-модулю. Различие, прежде всего, состоит в конструкции контактов. В отличие от SIP-модуля выводы для SIMM-модуля заменены так называемыми контактами типа PAD (вилка). Эти контакты выполнены печатным способом и находятся на одном краю платы. Именно этим краем SIMM-модули устанавливаются в специальные слоты на системной плате (рис. 3.48, d). Благодаря такой конструкции SIMM-модулей существенно повышается надежность электрического контакта в разъеме и механическая прочность модуля в целом, тем более что все контакты изготовлены из высококачественного материала и позолочены.

Отказы в работе оперативной памяти чаще всего происходят не из-за повреждения SIMM-модулей, а, скорее, из-за некачественной обработки контактов разъемов на системной плате.

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

SIMM-модули являются стандартом в современных вычислительных системах. SIMM-модули, оснащенные DRAM 41256, сегодня применяются относительно редко. Чаще SIMM-модули оборудованы микросхемами памяти общей емкостью 8, 16 и 32 Мбит. В дальнейшем на рынке появились SIMM-модули, имеющие емкость 120 Мбит и более.

В PC с CPU 80386 и ранних моделях с CPU 80486 использовались 30-контактные SIMM-модули памяти (DRAM), и число слотов на системной плате колебалось от 4 до 8. В настоящее время найти в продаже подобные модули весьма не просто. В более поздних моделях PC с CPU 80486 и Pentium стали использоваться 72-контактные SIMM-модули памяти (FPM DRAM).

DIMM-модули. В дальнейшем на многих системных платах появились слоты для 168-контактных модулей памяти DIMM (Dual In-line Memory Module). Модули DIMM обладают внутренней архитектурой, схожей с 72-контактными SIMM-модулями, но благодаря более широкой шине обеспечивают повышенную производительность подсистемы «CPU-RAM».

Для правильного позиционирования DIMM-модулей при установке в слоты на системной плате в их конструкции предусмотрены два ключа:

  • первый ключ расположен между контактами 10 и 11 и служит для определения типа памяти модуля (FPM DRAM или SDRAM);
  • второй ключ расположен между контактами 40 и 41 и служит для определения напряжения питания модуля (5 или 3,3 В).

DIMM-модули поддерживают, например, материнские платы на Chipset 82430VX, 82440FX, 83450KX/GX, 82430ТХ.

SO-DIMM (Small Outline Dual In-Line Memory Module) представляет собой тип интегральных схем оперативной памяти компьютера (рис. 3.48, ж).

SO-DIMM является малогабаритной альтернативой для DIMM и обычно занимают около половины пространства, требуемого для обычных модулей DIMM. В результате SO-DIMM в основном используются в таких устройствах, как ноутбуки, небольшие настольные ПК (с платами типа Mini-ITX), высококачественные принтеры и сетевое оборудование (например, маршрутизаторы).

Модули SO-DIMM могут иметь 72, 100, 144 или 200 контактов, поддерживая передачу данных, соответственно, по 32 бита (100) и 64 бита (144 и 200). Обычные DIMM имеют по 168, 184 или 240 и все поддерживают 64-битовую передачу данных.

Различные типы SO-DIMM распознаются по размещению «ключей» - модули на 100 контактов имеют два ключа, 144-контактный SO-DIMM имеет один ключ близко к центру корпуса, 200-контактный SO-DIMM - один ключ ближе к краю корпуса.

SO-DIMM примерно соответствуют (или меньше чем) по мощности DIMM, и обе технологии SO-DIMM и DIMM обеспечивают примерно равные скорости (тактовая частота, например, 400 МГц для РС3200 и латентность CAS величиной 2,0, 2,5 и 3,0) и емкость (512 Мбайт, 1 Гбайт и пр.). Более современные модули DDR2 SO-DIMM имеют частоту до 800 МГц РС6400 и предполагается, что достигнут частоты 1066 МГц РС8500.

RIMM. С появлением Direct RDRAM (DRDRAM) в 1999 г. появляется модуль RIMM (рис. 3.49) (название - не акроним, а торговая марка Rambus Inc). Разъемы RIMM имеют типоразмеры, подобные DIMM, и могут устанавливаться в пределах той же

Рис. 3.49.

самой области системной платы, как и DIMM. Они имеют 184 штырька по сравнению с 168 для DIMM, но используют ту же спецификацию гнезда, как и стандарт DIMM на 100 МГц. BIOS ПК способен определить, какая оперативная память установлена, так что SDRAM-модули на 100 МГц должны работать в RIMM-совместимой системе. Существуют также компактные модели памяти SO-RIMM, аналогичные SO-DIMM.

Главные элементы к подсистеме памяти Rambus включают основное устройство, которое содержит Rambus ASIC Cell (RAC) и контроллер памяти (Rambus Memory Controller RMC), тактовый генератор (Direct Rambus Clock Generator DRCG), разъемы RIMM, модули памяти RIММ и модули непрерывности RIMM, а также подсистему «последовательное устройство обнаружения присутствия» (Serial Presence Detect SPD ROM).

В конечном итоге, технологии DDR, развиваясь и становясь все дешевле, практически вытеснили RDRAM - в интервале 2002-2005 гг. рыночная доля RDRAM не превышала 5 %.

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

Архитектура Fully Buffered DIMM предусматривает промежуточный буфер (Advanced Memory Buffer - AM В), устанавливаемый между контроллером и модулем памяти (рис. 3.50). В отличие от параллельной шинной архитектуры для традиционных

Разъем DDR2 с уникальным ключом

До 8 модулей DIMM

«Южный путь» (10 бит)

Контроллер

Рис. 3.50. Архитектура памяти FB-DIMM

DRAM, FB-DIMM имеет последовательный интерфейс между контроллером и AM В. Это позволяет повысить разрядность памяти без увеличения количества линий контроллера памяти.

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

Существует стандарт (протокол JESD82-20), определяющий интерфейс АМВ с памятью DDR2. Канал FB-DIMM состоит из 14 битовых линий «Северного пути» («northbound»), по которым данные передаются из памяти на процессор, и 10 линий «Южного пути» («southbound»), передающих команды и данные из процессора.

Каждый бит передается на частоте, в 12 раз большей, чем базовая частота памяти (в 6 раз, если используется удвоенная скорость, DDR - DDR3). Например, для чипа DDR2-667 DRAM канал будет работать на частоте 667 х 12/2 =4000 МГц. Каждые 12 циклов образуют кадр: 168 бит «Северного пути» (144 бита данных, передаваемых 72-битовой DDR SDRAM плюс 24 бита для CRC-коррекции) и 120 бит «Южного» (98 полезных бит и 22 CRC-бита). Из 98 бит здесь 2 задают тип кадра, 24 - команда; в оставшихся битах могут содержаться (в зависимости от типа кадра) либо 72 бита записываемых данных, либо две или более 24-битовых команд, либо одна команда или более плюс 36 бит записываемых данных.

Поскольку записываемые данные подаются медленнее, чем это необходимо для ОП DDR, они накапливаются в AM В, а затем записываются в одном пакете (обычно по четыре кадра данных).

Команды соответствуют стандартным циклам доступа DRAM, например, выбор строки (/RAS), предвыборка, регенерация и пр. Команды чтения и записи содержат только адреса столбцов (/CAS) массива памяти. Все команды содержат 3-разрядные адреса FB-DIMM, что позволяет подключать до 8 модулей FB-DIMM на 1 канал.

Глава 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, б).

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

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

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

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