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