
Умножение производительности
Докучаев Дмитрий aka Forb
Спецвыпуск Xakep, номер #038, стр. 038-008-1
(forb@real.xakep.ru)
Мультипроцессорные технологии
Одна голова хорошо, а две лучше. Вспомни скучные лабораторные, когда группа разбивалась на бригады. Понятно, что в такой компании обязательно находились люди, которые пользовались мозгами других, а кто-то работал за троих :). Этот пример является примитивной моделью многопроцессорной технологии.
Разные проблемы - разные решения
На самом деле, в многопроцессорности все намного сложнее, хотя и нет ничего хитрого. Важно понять, зачем применять столь сложные технологии, иначе ресурсы машины просто будут простаивать. К примеру, если на лабораторной работе нужно выполнить один эксперимент и простой расчет, для этого хватит мозгов всего одного человека, а мозги остальных в бригаде будут лишними ;). Точно так же и в компьютерной среде: нередко начальники на предприятии не до конца обдумывают пути решения своих задач, а после заказа мультипроцессорной машины просто не могут представить способы ее загрузки на 100%.
Конечно, в институтах ядерной физики и на крупных предприятиях такие технологии себя оправдают в полной мере. Более того, бывает, что одной машины мало, в результате чего в одном помещении устанавливают два, а то и десять серверов.
Кого выбрать
Мультипроцессорными разработками занимаются многие производители. Главными из них является сладкая парочка Intel и AMD. Весьма интересным фактом является то, что конкретная фирма-производитель оптимизирует свои кремниевые камешки под единственную технологию.
AMD и NUMA
Компания AMD пошла в своих разработках наиболее простым и логичным путем. В строении архитектуры подразумевается, что каждому устройству будет выделены отдельные “мозги” (память). Копаться в “мозгах” другого камня считается дурным тоном :). Процессоры делятся на две группы: ведущий (всего один) и ведомые (все остальные). Это сделано для того, чтобы первый проц имел преимущество в ситуации, когда требуется обоюдный обмен данными.
Непонятно? Объясню проще: представь, что в бригаде, состоящей из 4 человек (все еще выполняющих злополучную лабораторную), ведутся расчеты, скажем, по вычислению сопротивления различных материалов. Результаты будут занесены в сводную таблицу, а затем обработаны. Если проецировать технологию NUMA на этот пример, получаем: все люди в бригаде будут вести расчеты на отдельном листе бумаги, не залезая в расчеты других. Задача бригадира - составление полей будущей таблицы. Итак, вычисления завершены, требуется лишь занести данные в протокол. Прямой доступ к чужой памяти закрыт по определению, поэтому процесс идет следующим образом: второй человек в бригаде записывает результаты своих вычислений на отдельный листок, который затем передается прямо в руки бригадиру. Бригадир переписывает результаты в сводную таблицу и радуется жизни. После того, как ведущий человек освободился, с ним работает третий по подобной схеме. И так далее, пока таблица не будет заполнена до конца. Плюсы налицо: практически никаких одновременных обращений к чужому листу бумаги, а также отсутствие длительных простоев.
Содержание Вперед на стр. 038-008-2









































































