Э. Таненбаум - Архитектура компьютера (1127755), страница 167
Текст из файла (страница 167)
Поскольку в данном случае этот бит равен 1, сообщение отправляется через нижний выход к коммутатору 21). Все коммутаторы второй ступени, включая 2Е), для определения направления используют второй бит. В данном случае он равен 1, поэтому сообщение отправляется через нижний выход к коммутатору ЗП, который проверяет третий бит. Он равен О, следовательно, сообщение проходит через верхний выход и прибы- ййультипроцессоры 666 вает в модуль памяти 110, чего мы и добивались. Путь, пройденный сообщением, обозначен на рис.
8.25 буквой а. 3 ступени Процессоры Модули памяти Рис. 8.28. Сеть с многоступенчатой коммутацией огпеца По мере прохождения через сеть сообщение поочередно перестает нуждаться во всех битах номера модуля, начиная с самого левого. Их можно использовать для записи номеров входных линий, чтобы было известно, по какому пути посылать ответ. Для пути а входные линии — это 0 (верхний вход в 1П), 1 (нижний вход в 21)) и 1 (нижний вход в 31)) соответственно. Таким образом, при отправке ответа тоже используется последовательность 011, только прочтенная справа налево. Пусть в то время как все это происходит, процессор 001 тоже решает записать слово в модуль памяти 001. Здесь происходит аналогичный процесс.
Сообщение отправляется через верхний, верхний и нижний выходы соответственно. На рис. 8.25 этот путь отмечен буквой Ь. Когда сооб1цение прибывает в пункт назначения, в его поле модуля содержится последовательность 001, показывая путь, который прошло сообщение. Поскольку эти два запроса проходят через разные коммутаторы, линии и модули памяти, они могут выполняться параллельно. А теперь посмотрим, что произошло бы, если бы процессору 000 понадобился доступ к модулю памяти 000. Его запрос вступил бы в конфликт с запросом процессора 001 на коммутаторе ЗА, и одному из них пришлось бы ждать. То есть, в отличие от сети с перекрестной коммутацией, сеть ошеяа — это блокирующая сеть.
Одновременно может передаваться не всякий набор запросов. Конфликты могут возникать как между запросами (при использовании одной и той же линии или одного и того же коммутатора), так и между запросами (к памяти) и ответами (из памяти). Совершенно очевидно, что обращения к памяти желательно равномерно распределять по модулям памяти. Один из возможных способов — использовать младшие биты в качестве номера модуля. Рассмотрим адресное пространство с побайтовой адресацией для компьютера, которому в основном требуется доступ к 32-разрядным словам. Два младших бита обычно равны 00, но следующие три 656 Глава 8.
Параллельные компьютерные архитектуры бита распределяются равномерно. Если задействовать эти три бита в качестве номера модуля памяти, последовательно адресуемые слова оказываются в последовательно расположенных модулях. Система памяти, в которой последовательные слова находятся в разных модулях памяти, называется раселоенной. Расслоенная память доводит параллелизм до абсолюта, поскольку большая часть обращений к памяти — это обращения по последовательным адресам. Возможна также разработка неблокирующих сетей, в которых для оптимизации графика предлагаются несколько путей от каждого процессора к каждому модулю памяти. ЙОМА-мультипроцессоры Количество процессоров в ПМА-мультипроцессорах с одной шиной обычно ограничивается несколькими десятками, а для мультипроцессоров с перекрестной или многоступенчатой коммутацией требуется дорогое оборудованияе, к тому же количество процессоров в них не намного больше.
Чтобы объединить в одном мультипроцессоре более 100 процессоров, нужно какое-то иное решение. Ранее предполагалось, что все модули памяти имеют одинаковое время доступа. Если не замыкаться на этой концепции, можно прийти к мультипроцессорам с неоднородным доступом к памяти (ХогЛ)п11огш Мепюгу Ассезз, ЬП.1МА).
Как и УМА- мультипроцессоры, они предоставляют единое адресное пространство для всех процессоров, но, в отличие от БМА-машин, доступ к локальным модулям памяти происходит быстрее, чем к удаленным. Следовательно, все 1)МА-программы смогут без изменений работать на Х()МА-машинах, но производительность будет хуже, чем на 1)МА-машине с той же тактовой частотой. МЗМА-машины имеют три ключевые характеристики, которые в совокупности отличают их от других мультипроцессоров: + существует единое адресное пространство, видимое всеми процессорами; + доступ к удаленной памяти производится командами ООАО и 5ТОйЕ; + доступ к удаленной памяти выполняется медленнее, чем доступ к локальной.
Если время доступа к удаленной памяти не замаскировано кэшированием (кзш отсутствует), такая система называется ХС-Х$)МА (Хо СасЬ(пй ХПМА ХПМА без кэширования). Если присутствуют согласованные кэши, то система называется СС-Х1)МА (СоЬегепс СасЬе Х()МА — ХПМА с согласованными кэшами). Программисты часто называют такую систему аппаратной распределенной общей памятью, поскольку она, по сути, аналогична распределенной общей памяти (ЕбМ), реализованной программно, однако поддерживается аппаратно с использованием страниц маленького размера. Одной из первых ХС-ХПМА-машин был мультипроцессор Сш" производства Сагпея(е-МеПоп. Он упрощенно показан на рис. 8.26 [2001 Этот мультипроцессор состоял из набора процессоров 181-11, каждый с собственной памятью, обращение к которой производилось по локальной шине.
(ЕЯ1-11 — однопроцессорная версия очень популярного в 70-е годы мини-компьютера Т)ЕС РТ)Р-11.) Кроме того, процессоры Е81-11 были связаны друг с другом системной шиной. Когда выполнялось обращение к памяти, запрос попадал к диспетчеру памяти, Мупьтипроцессоры 657 который проверял, находится нужное слово в локальной памяти или нет. Если да, запрос направлялся по локальной шине, если нет, запрос направлялся по системной шине к той системе, которая содержала данное слово.
Естественно, вторая операция требовала гораздо больше времени, чем первая. Выполнение программы, хранящейся в удаленной памяти, занимало в 10 раз больше времени, чем выполнение той же программы, расположенной локально. Процессор Память Процессор Память Процессор Память Процессор Память Диспе пам Системная шина Рис. В.26. Ы0МА-машина с двумя уровнями шин Согласованность памяти в ХС-ХОМА-машине гарантирована, поскольку в ней отсутствует кэш-память. Каждое слово памяти может находиться только в одном месте, поэтому нет никакой опасности появления копии с устаревшими данными — здесь вообще нет копий. То, в каком именно модуле памяти находится та или иная страница, имеет большое значение, поскольку от этого зависит производительность.
Для максимального увеличения производительности в 1чС-1чШМА- машинах была реализована следующая сложная схема программной поддержки перемещения страниц. Обычно каждые несколько секунд запускался специальный «сторожевой» процесс (демон), называемый страничным сканером.
Его задача — следить за статистикой использования страниц и перемещать их таким образом, чтобы росла производительность. Если страница оказывалась в «неправильномь месте, страничный сканер выгружал ее из памяти, поэтому следующее обращение к ней вызывало ошибку отсутствия страницы. Когда происходит ошибка отсутствия страницы, принимается решение о том, куда эту страницу поместить (возможно, не в тот молуль памяти, в котором она была раньше). Для предотвращения пробуксовки существовало правило, согласно которому страница после размещения должна оставаться на месте в течение времени ЬТ. Предлагалось множество других алгоритмов, но ни один из них так и не стал безусловно лучшим [1221.
СС-МОМА-мультипроцессоры Мультипроцессоры, подобные тому, который изображен на рис. 8.26, плохо поддаются масштабированию, поскольку в них нет кэш-памятн. Каждый раз обращаться к удаленной памяти, чтобы получить доступ к слову, которого нет в локальной памяти, очень расточительно — это весьма негативно сказывается на производительности. Однако с добавлением кэш-памяти возникает проблема согласованности кашей. Один из способов поддержания согласованности кэшей— обеспечить слежение за системной шиной. Технически это сделать несложно, но когда количество процессоров переваливает за некоторый предел, подобное ре- 858 Глава 8.
Параллельные компьютерные архитектуры шение становится нереализуемым. Для создания действительно больших мультипроцессоров нужен совершенно другой подход. Самый популярный на сегодня подход к построению больших мультипроцессоров, относящихся к системам СС-%1МА, реализован в мультипроцессоре на основе каталога. Основная идея состоит в хранении базы данных с информацией о том, где именно находится каждая строка каша и каково ее состояние. При обращении к строке каша в базу данных направляется запрос о том, где эта строка находится и является она «чистой> илн «грязной> 1модифицированной). Поскольку запрашивать базу данных приходится при выполнении любой команды обращения к памяти, база данных должна поддерживаться высокоскоростным специализированным аппаратным обеспечением, способным обработать запрос за доли шинного цикла.
Чтобы лучше понять, что собой представляет мультипроцессор на основе каталога, рассмотрим в качестве примера систему из 256 узлов, в которой каждый узел состоит из одного процессора и 16-мегабайтного ОЗУ, связанного с процессором локальной шиной.
Общий объем памяти составляет 2зз байт. Она разделена на 2'з строк кэша по 64 байт каждая. Память статически распределена по узлам: адреса Π— 16 М располагаются в узле О, адреса 16-32 М вЂ” в узле 1 и т. д. Узлы связаны коммуникационной сетью 1рис. 8.27, а).