Обзоры
Симметричное мультипроцессирование и Athlon
0

Симметричное мультипроцессирование и Athlon

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

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

Параллельные архитектуры

В 1966 г. американский инженер-электрик Майкл Флин (Michael Flynn) исследовал четыре класса процессорных архитектур, а точнее, способов, которыми компьютер оперирует с данными и инструкциями. Данные на обработку могут посылаться последовательно, по одному при каждой операции чтения, либо группой. То же справедливо и в отношении инструкций.

В компьютерах с последовательной архитектурой осуществляется поток единичных инструкций и единичных данных (Single Instruction Single Data — SISD). Такая архитектура хорошо приспособлена для приложений со сложными взаимозависимостями между инструкциями и данными. Типичным является текстовый процессор.

Остальные комбинации требуют уже параллельных вычислений. При схеме Multiple Instruction Single Data (MISD) поток данных реплицируется и копии посылаются нескольким процессорам, каждый из которых затем выполняет отдельную программу. Например, содержимое базы данных может быть направлено одновременно нескольким процессорам для нахождения различных значений. Если имеется множество процессорных элементов, выполняющих одну инструкцию над массивом данных, то такая архитектура называется Single Instruction Multiple Data (SIMD). Примерами могут служить операции над матрицами и векторами. Эти процессоры обычно именуются векторными или матричными. Подходящим приложением для таких параллельных систем является повышение качества изображений. Наконец, архитектура Multiple Instruction Multiple Data (MIMD). Она наиболее гибкая, но зато сложная для программирования, поскольку требует дополнительных инструкций для координирования работы всех процессоров. Системы MIMD весьма эффективны в моделировании сложных процессов.

Параллельная обработка

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

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

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

В ранних системах взаимоотношения между процессорами строились по схеме главный—подчиненный. Один процессор программировался таким образом, чтобы отвечать за работу всей системы. Подчиненные процессоры выполняли только те задания, которые им адресовал главный. Такая схема вычислений была продиктована тем, что в то время еще не было достигнуто понимания, как программировать многопроцессорную систему для обеспечения кооперативного управления ресурсами. Решение этой проблемы и привело к созданию симметричных мультипроцессорных систем (Symmetric MultiProcessing — SMP).

Ключевые особенности симметричных мультипроцессорных систем

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

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

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

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

Что касается шинной архитектуры, то наиболее распространенным и оптимальным по критерию цена/производительность является использование одной системной шины. Однако такая архитектура плохо масштабируется, поскольку при увеличении числа процессоров шина становится узким местом. Для преодоления этого ограничения были разработаны другие решения. Среди них наиболее распространена архитектура с иерархией шин. В этом варианте несколько процессоров объединяются одной шиной в узел, а уже узлы подсоединяются к общей шине. При необходимости объединить в SMP-систему более 64 процессоров прибегают к архитектуре с коммутируемой памятью (switched memory architecture). В этом случае каждый процессор получает доступ к требуемому участку памяти по коммутируемому каналу. Когерентность памяти для коммутируемой архитектуры обеспечивается проще, чем для шинной, поэтому такие системы лучше масштабируются. Однако их стоимость возрастает линейно с числом процессоров, а добавление коммутаторов снижает общую производительность системы.

Симметричное мультипроцессирование по Intel

В 1993 г. корпорация Intel опубликовала спецификацию Multiprocessor Specification (MPS), которая и стала в последующем основой для построения SMP-систем на базе процессоров Intel Architecture (IA). Согласно Intel, назначение этой спецификации заключалось в том, чтобы установить стандартный интерфейс для мультипроцессорной платформы, который позволил бы повысить производительность существующих платформ PC/AT и перешагнуть традиционный предел однопроцессорных систем, сохранив при этом 100%-ную совместимость с бинарным кодом PC/AT. Конечная же цель — предоставление возможности построения высокопроизводительных рабочих станций и корпоративных серверов, обеспечивающих пользователей привлекательным соотношением цена/производительность и способных выполнять как все существующие для PC/AT программы в бинарном коде, так и MP-приложения в мультипроцессорной программной среде. Как видно, основным преимуществом построения SMP-систем в соответствии с этой спецификацией является выполнение на них без всяких проблем всего существующего "однопроцессорного" программного обеспечения. Перейдем теперь к рассмотрению некоторых особенностей системной архитектуры, предусматриваемой MPS.

Нужно сказать, что декларация "все процессоры равны" нарушается в двух случаях: при инициализации системы и при ее выключении. В течение этих процедур один становится процессором начальной загрузки (BootStrap Processor — BSP), тогда как остальные — процессорами приложений (Application Processors — AP). BSP несет ответственность за инициализацию системы и загрузку ОС. Процессоры AP активируются только после загрузки операционной системы. К ним присоединяется и процессор BSP, предварительно изменив свой статус на AP.

Одной из проблем в мультипроцессорной среде является обеспечение корректной работы с аппаратными прерываниями. Она решается с помощью усовершенствованных программируемых контроллеров прерываний (Advanced Programmable Interrupt Controller — APIC), которые встраиваются в каждый элемент системы, предусматривающий генерирование сигнала прерывания. Кроме внешних устройств, сигналы прерывания используются также процессорами для межпроцессорных коммуникаций (InterProcessor Interrupts — IPI). Все контроллеры APIC объединяются выделенной шиной межпроцессорных коммуникаций Interrupt Controller Communications bus (ICC bus).

Распределение памяти в Intel-базированных SMP-системах такое же, как и в стандартных компьютерах PC/AT: 4 GB RAM с непрерывной адресацией, начиная с 0. Хотя в большинстве современных компьютеров сохранилась лишь шина PCI, все шины индустриальных стандартов, такие, как ISA, EISA, MCI и VL, также могут быть включены в мультипроцессорную систему.

AMD-760 MP Platform — альтернативное решение

Если говорить о симметричном мультипроцессировании для систем, построенных на чипах Intel, то отсчет здесь нужно вести от Pentium Pro, хотя существовали некоммерческие оригинальные мультипроцессорные системы и на моделях 386 и 486. Athlon является первым процессором AMD со встроенной поддержкой мультипроцессорности. Правда, для сторонников "чистоты учения", называемых в просторечии пуристами, следует отметить, что клон предыдущих чипов AMD К6/К6-2 и некоторые процессоры Cyrix поддерживали, по заявлению производителей, спецификацию OpenMP — набор расширений компилятора и библиотеку времени исполнения, позволяющих работать с разделяемой памятью в параллельных системах. Так это или не так, остается вопросом спорным, поскольку ни одна компания не поставила на рынок материнскую плату, удовлетворяющую OpenMP для этих чипов. Выход AMD-760 MP Platform, по сути, нарушил "монополию" Intel на поставку решений в области SMP-систем.

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

Ключевым элементом, определяющим производительность системы, является системная шина, соединяющая процессор и системную логику (в индустрии она именуется фронтальной — front-side bus). Для повышения производительности системы AMD отказалась от архитектуры с разделяемой шиной. Оба процессора соединяются с северным мостом двумя независимыми высокоскоростными шинами, работающими на частоте 2 x 133 MHz. Это исключает конкуренцию за ресурс и позволяет процессорам независимо друг от друга выполнять обмен с памятью. Более того, системная шина на самом деле состоит из трех отдельных шин, действующих параллельно: двух однонаправленных (процессор ->системный контроллер, системный контроллер -> процессор) и двунаправленной шины данных. Первые две служат для обмена командами между процессором и системной логикой, вторая — для обмена данными. И все они работают на эффективной частоте 266 MHz. В итоге пиковая пропускная способность системной шины достигает 2,1 GBps. Правда, замечательные особенности системной шины EV6 "компенсируются" более сложной системной логикой. Именно поэтому платформа AMD-760 MP предполагает построение только двухпроцессорных систем. При необходимости получить более мощные системы двухпроцессорные блоки объединяются с помощью также предложенной AMD шины HyperTransport.

О том, насколько эффективно решение от AMD, вы можете судить по результатам испытаний, проведенных нашей Тестовой лабораторией и опубликованных в этом номере.


Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: