
- •Тема 9. Организация памяти вычислительных систем
- •1. Системы с общей и распределенной памятью
- •2. Многоуровневая организация общей памяти
- •3. Память с чередованием адресов
- •4. Симметричные (smp) многопроцессорные вс. Архитектура типа uma, coma, numa
- •5. Мультипроцессор Sun Enterprise 10000
- •Тема 10. Векторные и векторно-конвейерные вычислительные системы
- •1. Понятие вектора и размещение данных в памяти
- •2. Понятие векторного процессора
- •4. Структура векторного процессора
- •5. Структуры типа «память-память» и «регистр-регистр»
- •6. Обработка длинных векторов и матриц
- •Тема 11. Матричные вычислительные системы
- •1. Обобщенная модель матричной вс
- •2. Интерфейсная вм
- •3. Контроллер массива процессоров
- •4. Массив процессоров
- •5. Структура процессорного элемента
- •6. Подключение и отключение процессорных элементов
- •7. Сети взаимосвязей процессорных элементов
- •9. Ассоциативная память
- •10. Ассоциативные вс
- •11. Систолические структуры
- •Тема 12. Кластерные и mpp-системы
- •1. Понятие кластера. Преимущества и виды
- •2. Топологии кластеров
- •3. Примеры кластеров
- •4. Системы с массовым параллелизмом (mpp-системы)
- •Тема 13. Информационные технологии конечного пользователя
- •1. Общая классификация информационных технологий
- •2. Автоматизированное рабочее место – средство автоматизации работы конечного пользователя
- •3. Характеристика информационных технологий в экономике
- •3.1. Информационная технология поддержки принятия решений
- •3.2. Информационная технология экспертных систем
- •3.3. Информационные технологии управления
- •3.4. Автоматизация офиса
- •3.5. Аудио- и видеоконференции в автоматизации офиса
- •3.6. Технологии баз данных
- •Контрольные вопросы
3. Память с чередованием адресов
Физически память вычислительной системы состоит из нескольких модулей (банков), при этом существенным вопросом является то, как в этом случае распределено адресное пространство (набор всех адресов, которые может сформировать процессор). Один из способов распределения виртуальных адресов по модулям памяти состоит в разбиении адресного пространства на последовательные блоки. Если память состоит из n банков, то ячейка с адресом i при поблочном разбиении будет находиться в банке с номером i/n. В системе памяти с чередованием адресов (interleaved memory) последовательные адреса располагаются в различных банках: ячейка с адресом i находится в банке с номером i mod n. Пусть, например, память состоит из четырех банков, по 256 байт в каждом. В схеме, ориентированной на блочную адресацию, первому банку будут выделены виртуальные адреса 0-255, второму - 256-511 и т. д. В схеме с чередованием адресов последовательные ячейки в первом банке будут иметь виртуальные адреса 0, 4, 8, … во втором банке — 1, 5, 9 и т. д.
Распределение адресного пространства по модулям дает возможность одновременной обработки запросов на доступ к памяти, если соответствующие адреса относятся к разным банкам. Процессор может в одном из циклов затребовать доступ к ячейке i, а в следующем цикле - к ячейке j. Если i и j находятся в разных банках, информация будет передана в последовательных циклах. Здесь под циклом понимается цикл процессора, в то время как полный цикл памяти занимает несколько циклов процессора. Таким образом, в данном случае процессор не должен ждать, пока будет завершен полный цикл обращения к ячейке i. Рассмотренный прием позволяет повысить пропускную способность: если система памяти состоит из достаточного числа банков, имеется возможность обмена информацией между процессором и памятью со скоростью одно слово за цикл процессора, независимо от длительности цикла памяти.
Решение о том, какой вариант распределения адресов выбрать (поблочный или с расслоением), зависит от ожидаемого порядка доступа к информации. Программы компилируются так, что последовательные команды располагаются в ячейках с последовательными адресами, поэтому высока вероятность, что после команды, извлеченной из ячейки с адресом i, будет выполняться команда из ячейки i+1. Элементы векторов компилятор также помещает в последовательные ячейки, поэтому в операциях с векторами можно использовать преимущества метода чередования. По этой причине в векторных процессорах обычно применяется какой-либо вариант чередования адресов. В мультипроцессорах с совместно используемой памятью, тем не менее, используется поблочная адресация, поскольку схемы обращения к памяти в MIMD-системах могут сильно различаться. В таких системах целью является соединить процессор с блоком памяти и задействовать максимум находящейся в нем информации, прежде чем переключиться на другой блок памяти.
4. Симметричные (smp) многопроцессорные вс. Архитектура типа uma, coma, numa
Мультипроцессор, как и все компьютеры, должен содержать устройства ввода-вывода (диски, сетевые адаптеры и т. п.). В одних мультипроцессорных системах только определенные процессоры имеют доступ к устройствам ввода-вывода и, следовательно, имеют специальную функцию ввода-вывода. В других мультипроцессорных системах каждый процессор имеет доступ к любому устройству ввода-вывода. Если все процессоры имеют равный доступ ко всем модулям памяти и всем устройствам ввода-вывода и каждый процессор взаимозаменим с другими процессорами, то такая система называется SMP (Symmetric Multiprocessor — симметричный мультипроцессор).
В системах с общей памятью все процессоры имеют равные возможности по доступу к единому адресному пространству. Единая память может быть построена как одноблочная или по модульному принципу, но обычно практикуется второй вариант.
Вычислительные системы с общей памятью, где доступ любого процессора к памяти производится единообразно и занимает одинаковое время, называют системами с однородным доступом к памяти и обозначают аббревиатурой UMA (Uniform Memory Access). Это наиболее распространенная архитектура памяти параллельных ВС с общей памятью.
Технически UMA-системы предполагают наличие узла, соединяющего каждый из n процессоров с каждым из т модулей памяти. Простейший путь построения таких ВС - объединение нескольких процессоров (P) с единой памятью (Mp) посредством общей шины (рис.). В этом случае, однако, в каждый момент времени обмен по шине может вести только один из процессоров, то есть процессоры должны соперничать за доступ к шине. Когда процессор Рi, выбирает из памяти команду, остальные процессоры Pj (i<>j) должны ожидать, пока шина освободится. Если в систему входят только два процессора, они в состоянии работать с производительностью, близкой к максимальной, поскольку их доступ к шине можно чередовать; пока один процессор декодирует и выполняет команду, другой вправе использовать шину для выборки из памяти следующей команды. Однако когда добавляется третий процессор, производительность начинает падать.
При наличии на шине десяти процессоров, кривая быстродействия шины становится горизонтальной, так что добавление 11-го процессора уже не дает повышения производительности. Нижняя кривая на рисунке иллюстрирует тот факт, что память и шина обладают фиксированной пропускной способностью, определяемой комбинацией длительности цикла памяти и протоколом шины, и в многопроцессорной системе с общей шиной эта пропускная способность распределена между несколькими процессорами. Если длительность цикла процессора больше по сравнению с циклом памяти, к шине можно подключать много процессоров. Однако фактически процессор обычно намного быстрее памяти, поэтому данная схема широкого применения не находит
Рисунок Архитектура UMA
Можно оптимизировать архитектуру UMA, добавляя локальный кэш и локальную память к каждому из процессоров.
Чтобы оптимально использовать последнюю конфигурацию, компилятор должен поместить в локальные модули памяти весь текст программы, цепочки, константы, другие данные, предназначенные только для чтения, стеки и локальные переменные. Общая разделенная память используется только для общих переменных. В большинстве случаев такое разумное размещение сильно сокращает количество данных, передаваемых по шине, и не требует активного вмешательства со стороны компилятора.
Мультипроцессоры UMA с координатными коммутаторами
Даже при всех возможных оптимизациях использование только одной шины ограничивает размер мультипроцессора UMA до 16 или 32 процессоров. Чтобы получить больший размер, требуется другой тип коммуникационной сети. Самая простая схема соединения n процессоров с к блоками памяти —координатный коммутатор (рис). Координатные коммутаторы используются на протяжении многих десятилетий для соединения группы входящих линий с рядом выходящих линий произвольным образом.
Координатный коммутатор представляет собой неблокируемую сеть. Это значит, что процессор всегда будет связан с нужным блоком памяти, даже если какая-то линия или узел уже заняты. Более того, никакого предварительного планирования не требуется.
Недостаток системы: рост узлов как n2. При наличии 1000 процессоров и 1000 модулей памяти получаем число узлов – 1 млн. Это неприемлемо. Тем не менее координатные коммутаторы вполне применимы для систем средних размеров.
Мультипроцессоры UMA с многоступенчатыми сетями
В основе подхода – коммутатор 2x2. Этот коммутатор содержит два входа и два выхода. Сообщения, приходящие на любую из входных линий, могут переключаться на любую выходную линию. В нашем примере сообщения будут содержать до четырех частей.
Поле Модуль сообщает, какую память использовать. Поле Адрес определяет адрес в этом модуле памяти. В поле Код операции содержится операция, например READ или WRITE. Наконец, дополнительное поле Значение может содержать операнд, например 32-битное слово, которое нужно записать при выполнении операции WRITE. Коммутатор исследует поле Модуль и использует его для определения, через какую выходную линию нужно отправить сообщение: через X или через Y.
Наши коммутаторы 2x2 можно компоновать различными способами и получать многоступенчатые сети.
Один из возможных вариантов — сеть omega. Здесь мы соединили 8 процессоров с 8 модулями памяти, используя 12 коммутаторов. Для n процессоров и n модулей памяти нам понадобится log2n ступеней, n/2 коммутаторов на каждую ступень, то есть всего (n/2)log2n коммутаторов, что намного лучше, чем n2 узлов (точек пересечения), особенно для больших n.
Каждая ступень для передачи сигнала в соответствующем направлении использует биты в поле Модуль (0 – верхний выход, 1 – нижний). При этом после прохождения ступени соответствующие биты становятся не нужны и они заменяются на номер входной линии. Рассматривая пути a и b (на рис.), видим, что они используют разные коммутаторы, следовательно, запросы могут выполняться параллельно.
В отличие от координатного коммутатора, сеть omega — это блокируемая сеть. Не всякий набор запросов может передаваться одновременно. Конфликты могут возникать при использовании одного и того же провода или одного и того же коммутатора, а также между запросами, направленными к памяти, и ответами, исходящими из памяти.
Мультипроцессоры NUMA
Размер мультипроцессоров UMA с одной шиной обычно ограничивается до нескольких десятков процессоров, а для координатных мультипроцессоров или мультипроцессоров с коммутаторами требуется дорогое аппаратное обеспечение, и они ненамного больше по размеру. Чтобы получить более 100 процессоров, нужно что-то предпринять. Отметим, что все модули памяти имеют одинаковое время доступа.
Для большей масштабируемости мультипроцессоров приспособлена архитектура NUMA (NonUniform Memory Access — с неоднородным доступом к памяти). Как и мультипроцессоры UMA, они обеспечивают единое адресное пространство для всех процессоров, но, в отличие от машин UMA, доступ к локальным модулям памяти происходит быстрее, чем к удаленным.
Машины NUMA имеют три ключевые характеристики, которыми все они обладают и которые в совокупности отличают их от других мультипроцессоров:
1. Существует одно адресное пространство, видимое для всех процессоров.
2. Доступ к удаленной памяти производится с использованием команд LOAD и STORE.
3. Доступ к удаленной памяти происходит медленнее, чем доступ к локальной памяти. Доступ процессора к собственной Локальной памяти производится напрямую, что намного быстрее, чем доступ к удаленной памяти через коммутатор или сеть.
В рамках концепции NUMA реализуется несколько различных подходов, обозначаемых аббревиатурами СОМА, cc-numa и ncc-numa.
Особенности COMA
1) Локальная память каждого процессора рассматривается как кэш для доступа «своего» процессора.
2) Кэши всех процессоров рассматриваются как глобальная память системы, а сама глобальная память отсутствует.
3) Данные не привязаны к конкретному модулю памяти и не имеют уникального адреса, остающегося неизменным в течение всего времени существования переменной.
4) Данные переносятся в кэш-память того процессора, который последним их запросил. Перенос данных из одного локального кэша в другой не требует участия в этом процессе операционной системы, но подразумевает сложную и дорогостоящую аппаратуру управления памятью.
Достоинство
Всегда единственная копия данных в быстром локальном кэше.
Недостаток
Если данные требуются нескольким процессорам, то строка кэша с данными должна перемещаться туда и обратно при каждом доступе к данным.
Особенности NC-NUMA (No Caching NUMA — NUMA без кэширования)
1) Отсутствует кэш-память, это значит, что память гарантированно согласованна
2) Каждое слово памяти находится только в одном месте, нет копий.
3) От того, в какой памяти находится слово, зависит производительность.
4) Имеется страничный сканер, который может перемещать страницы памяти между блоками памяти в зависимости от статистики.
Недостаток
Низкая расширяемость
Особенности CC-NUMA (Cache Coherent Non-Uniform Memory Architecture)
1) Наличие кэша у процессоров.
2) Совместимость кэшей на программном или аппаратном уровне.
Способы обеспечения совместимости кешей:
A. Отслеживание системной шины (низкая масштабируемость, простота технической реализации)
B. Использование каталога (хранение БД кэш-строк в высокоскоростном специализированном аппаратном обеспечении)