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