В течение предыдущих десяти лет вычислительная мощность
процессоров компьютеров повышалась в основном за счет увеличения количества
вычислительных ядер, а не за счет изменений архитектуры и увеличения их
тактовой частоты.
Такой подход позволяет компьютерам и смартфонам быть
более эффективными с точки зрения потребляемой энергии, однако, дело написания
программ, которые используют все преимущества многоядерной архитектуры, требует
использования некоторых тонкостей и хитростей.
Swarm, новая многоядерная архитектура, разработанная
специалистами Массачусетского технологического института, позволит решить
проблему, связанную с программным обеспечением.
Требуя, чтобы программисты внесли лишь незначительные
поправки в исходный код программ, эта архитектура позволит получить в некоторых
случаях 75-кратное ускорение работы программ.
Опытный образец 64-ядерного процессор Swarm,
разработанный и созданный группой профессора Даниэля Санчеса (Prof. Daniel
Sanchez), включает в себя специализированную схему, выполняющую автоматическую
расстановку приоритетов выполняющихся задач, перекладывая это бремя с плеч
программистов на плечи аппаратной части. А делается все это весьма эффективно и
достаточно простым способом.
Написание программы, предназначенной для исполнения на
многоядерных процессорах, походит на координирование работы многочисленной
команды в рамках достаточно сложного проекта. Некоторые задачи могут быть
выполнены только определенными членами команды, а те, которые могут выполняться
всеми членами команды, должны быть равномерно распределены между всеми. В деле
разработки программного обеспечения такое планирование является чрезвычайно
сложной задачей, отнимающей много времени и существенно повышающей накладные
расходы, которые приводят к снижению скорости работы программ. Поэтому
распараллеливание программного обеспечения пока рентабельно только в рамках
разработки больших программных комплексов, когда отдельные нити программы
насчитывают более тысяч строк исходного кода.
Кроме этого, при создании параллельных программ
разработчики все время сталкиваются с проблемой конфликтов доступа к одним и
тем же данным со стороны различных параллельно работающих частей программы. Для
решения этой проблемы используются специальные механизмы блокировки и
синхронизации, позволяющие организовать очередь доступа к общедоступным данным.
Архитектура Swarm сама занимается всеми вышеописанными
проблемами при помощи специальной схемы, своего рода диспетчера. Этот диспетчер
позволяет быстро выстроить самую эффективную схему распределения приоритетов,
которая позволяет выполнить с максимально возможной скоростью даже самую
незначительную задачу. В результате этого программистам не требуется делать
никаких дополнительных усилий, им необходимо лишь включить в состав своей
программы несколько строчек кода и программа начнет выполняться в десятки раз
быстрей.
"У архитектуры Swarm имеется несколько очевидных
преимуществ перед обычными многоядерными архитектурами" - рассказывает
профессор Санчес, - "Swarm поддерживает эффективное распараллеливание даже
крошечных задач, состоящих всего из нескольких десятков инструкций. Это, в свою
очередь, позволяет максимально эффективно использовать все аппаратные ресурсы
многоядерных систем, ведь даже большие программы легко разделяются на множество
независимых маленьких блоков".
"Кроме этого, Swarm поддерживает глобальное распределение
приоритетов с учетом даже самых маленьких процессов и в этом заключается его
главное отличие от обычных многоядерных систем".
Для проверки эффективности работы архитектуры Swarm
профессор Санчес и его команда использовали шесть стандартных алгоритмов,
исполненных в двух видах, в оптимизированном и неоптимизированном для
параллельных вычислений. Неоптимизированный вариант, в который были включены
участки кода для архитектуры Swarm, показал среднее 18-кратное превосходство
перед просто оптимизированным вариантом. А превосходство неоптимизированного
варианта с включением кода Swarm перед просто неоптимизированным вариантом
составило 75 раз.
Исследователи уверены, что сложности разработки
программного обеспечения для многоядерных процессоров служат тем тормозом,
из-за которого производители процессоров сдерживают дальнейшее увеличение
количества вычислительных ядер в процессорах. Архитектура Swarm позволит решить
эту проблему и открыть путь новому поколению процессоров общего назначения,
которые могут содержать десятки, сотни и даже тысячи ядер, ресурсы которых
будут использоваться программным обеспечением с максимальной эффективностью.
