Выпуск #8/2011
А.Беляев, Ф.Путря, Т.Солохина, В.Юдинцев
Многоядерные процессоры для устройств связи. Перспективы и проблемы
Многоядерные процессоры для устройств связи. Перспективы и проблемы
Просмотры: 4725
Стремительный рост популярности мобильных средств обмена информацией привел к появлению новых классов процессоров, ориентированных на работу в сети. Распространение мультимедийного контента приводит к повышению объема сетевого трафика, а это, в свою очередь, накладывает определенные требования к быстродействию сетевых процессоров. Этим требованиям соответствуют многоядерные гетерогенные системы, которые обеспечивают эффективную обработку сетевого трафика, и, при необходимости, выполняют другие задачи.
Производительность микропроцессоров, на основе которых создаются современные устройства обработки и передачи информации, постоянно увеличивается. Эта устойчивая тенденция позволяет повышать объемы обрабатываемых данных, использовать более широкие каналы связи, и улучшать качество обработки информации, например, обрабатывать видеопотоки большей четкости. Надо отметить, что эволюция современных микропроцессоров всегда неразрывно связана с развитием их программного обеспечения. Так, новые процессоры должны максимально эффективно выполнять целевые задачи, в то же время не усложняя адаптацию под них старого ПО. Разработчики ПО (главным образом, встроенного), в свою очередь, также стараются оптимизировать приложения под особенности новых процессоров.
Предпосылки к использованию многоядерных систем
Исторически сложилось так, что определенные функции в системах связи выполнялись специализированными процессорами. Например, процессоры для цифровой обработки сигнала (ПЦОС) идеально подходят для обработки звуковых и видеосигналов. Из-за многообразия современных стандартов беспроводной связи ПЦОС все шире применяются для реализации сетевых протоколов. Сетевые ПЦОС обеспечивают высокую скорость передачи пакетов данных, а также обрабатывают пакеты и контролируют их прохождение в сети. В этом случае основной (универсальный) процессор осуществляет общий контроль и управление сетью и ввод-вывод данных.
Использование многоядерных процессоров позволяет отказаться от дорогих ПЛИС или дополнительных процессоров ЦОС, так как все необходимые устройства объединяются в одном корпусе. Соответственно уменьшается энергопотребление устройства и его стоимость. Но с точки зрения программиста, многоядерность – это не технологическое достижение а, скорее, невозможность далее наращивать производительность одноядерных систем. Причины перехода к многоядерным архитектурам подробно описаны в литературе и в основном связаны с проблемой потребляемой мощности [1]. Но в любом случае, эра многоядерных процессоров началась, и этот факт надо принимать как данность. Уже прошла первая волна адаптации ПО к многоядерным процессорам, и в ближайшем времени намечается выход нового поколения многоядерных процессоров, ориентирующихся именно на такое параллельное ПО.
Кроме этого, конкуренция и постоянный рост объема и качества услуг связи оказывают существенное влияние на провайдеров этих услуг, которым становится выгодно использовать элементную базу нового поколения (рис.1). На функциональность аппаратуры связи и, в частности, на процессоры, влияет и само содержимое сети, причем это влияние продолжает увеличиваться, и в первую очередь это касается ПЦОС. Традиционно они использовались для преобразования голоса из аналоговой формы в цифровую, его кодирования/декодирования и формирования сетевых пакетов из голосовых фреймов. С возникновением необходимости обрабатывать не только звуковую, но и видеоинформацию (в том числе и высокого разрешения) требования, предъявляемые к ПЦОС, превысили возможности одноядерных процессоров, так как для обработки одного потока видеоданных нужно несколько ядер. Таким образом, архитектуры современных процессоров ЦОС должны постоянно совершенствоваться, чтобы соответствовать увеличивающимся объемам сетевого трафика и более сложным алгоритмам обработки мультимедиа.
Увеличение сложности и объемов информации в сети породило еще одну тенденцию развития современных микропроцессорных систем – появление гетерогенных многоядерных систем и сетей на кристалле. Классические архитектуры ПЦОС, даже многоядерные, плохо справляются с кодированием/декодированием видео высокого разрешения, анализом огромного объема сетевого трафика и прочих подобных задач. Для обработки информации такого рода используются интегрированные специализированные ядра – сетевые, видеопроцессоры и т.д.
Сегодня существуют целое направление разработки архитектур вычислительных ядер со специфичной для конкретного приложения системой команд – ASIP (Application Specific Instruction Set Processor), специализированные САПР и методологии для выбора архитектуры и необходимой системы команд для ASIP [2]. Такая методология позволяет разрабатывать системы команд для произвольного класса задач, однако наибольшее распространение (кроме, естественно, архитектур ЦПУ и ПЦОС) получили специализированные графические ядра (GPU), видеопроцессоры (VPU), сетевые и векторные сопроцессоры.
Многоядерность и применение различных сопроцессоров – это не единственный способ использовать преимущества более совершенных технологических процессов. Важнейшая проблема современной вычислительной техники – обеспечение ввода и вывода данных на скоростях, обеспечивающих полноценную загрузку вычислительных ядер. Один из путей ее решения – размещение на одном кристалле вместе с вычислительными ядрами контроллеров и даже специализированных процессоров ввода-вывода. В качестве примера можно привести интеграцию в телекоммуникационном сетевом оборудовании определенных интерфейсов с подсистемой ввода-вывода (В/В) процессора для обеспечения высокоскоростного обмена данными по интерфейсам Ethernet, Serial RapidIO, PCI Express и другими, а также для обеспечения встроенной поддержки различных протоколов Интернета.
Современные сетевые многоядерные процессоры
Несмотря на то, что сетевой трафик резко возрастает, капитальные затраты провайдеров на увеличение пропускной способности сети из года в год остаются приблизительно одинаковыми (рис.2, 3). Это происходит потому, что при сохранении общего уровня капитальных затрат их доля на мультимедиа-применения будет резко возрастать для удовлетворения требованиям значительно более высокого трафика мультимедиа-данных в сети. Другими словами, требования к обработке мультимедиа-данных будут значительно возрастать в последующие несколько лет и это представляет собой другую силу, поддерживающую развитие новых архитектур многоядерных ПЦОС [3].
То же самое можно сказать и о беспроводных сетях. С каждым новым поколением этих сетей ширина полосы пропускания данных увеличивается из-за возрастающих требований пользователей к сетевому контенту. Увеличить полосу пропускания можно с помощью алгоритмов планирования, которые максимально повышают спектральную эффективность, и обработки сигналов в системе MIMO антенных решеток. Эта задача ложится на специализированные процессоры ЦОС [3]. Ведущие производители элементной базы активно поддерживают это направление. Так, фирма Freescale объявила о начале выпуска 28-нм многоядерных процессоров следующего поколения серии Advanced Multiprocessing (AMP). В новой платформе, основанной на 64-разрядных ядрах архитектуры Power Architecture с многочисленными программными потоками (multi-threaded) используются 24 виртуальных ядра. Основа платформ этой серии, 2,5-ГГц ядро e6500, имеет в своем составе усовершенствованную версию быстродействующего векторного SIMD-процессора AltiVec, эффективность которого наблюдалась при использовании в радарах и сонарах, а также в сетевых устройствах.
Ядра е6500 также входят в состав процессора Т4240, первого изделия серии QorlQ AMP, предназначенного для сетевого, промышленного и военного/авиакосмического оборудования. Т4240 имеет 12 ядер е6500 со сдвоенными программными потоками. Эти процессоры предназначены для обработки пакетов данных. И в связи с ожидаемым взрывным ростом IP-трафика нужно решить проблему, связанную с увеличением потребляемой мощности. Кроме того, эти процессоры будут использоваться в проводном и беспроводном оборудовании связи для сотовой инфраструктуры, мобильной связи, предприятий и центров данных. Возможность перепрограммирования позволяет использовать их в промышленном (интеллектуальные сети, устройства для сбора данных, измерительные устройства, средства автоматизации производства) и военном оборудовании (надежные одноплатные компьютеры). Первые образцы процессоров T4240 появятся на рынке в начале 2012 года.
Возможные конкуренты Freescale в области быстродействующих микропроцессоров – фирма Intel и производители СнК Cavium и Netlogic, использующие MIPS-ядра [4], а также даже малоизвестные фирмы. Например, фирма Mindspeed представила в 2010 году на конференции Hot Chip новую серию СнК для сотовых базовых станций, которые должны составить конкуренцию решениям ведущих изготовителей СнК, таких как Texas Instruments и Freescale [5]. В платформах Mindspeed серии Transcede используется 26 процессорных ядер, среди них четыре ядра ARM Cortex-A9, десять ЦОС-ядер CEVA и девять ЦОС-акселераторов. Схема Transcede 4000 изготовлена по 40-нм технологии TSMC и осуществляет передачу данных на частоте 750 МГц при потребляемой мощности 12 Вт. Микросхема содержит 300 млн. транзисторов. Для связи ядер и периферийных устройств используется сеть на базе интерфейса AMBA AXI фирмы ARM. Интегрированная кэш-память L1 и L2 имеет объем 9,1 Мбайт. Связь с внешними устройствами осуществляется с помощью комбинации десяти параллельно-последовательных и последовательно-параллельных преобразователей, интерфейсов PCI Express и Rapid I/O. Платформа поддерживает разнообразные беспроводные протоколы, включая LTE, W-CDMA и WiMAX. Для программирования платформ Transcede применяется язык С, фирма Mindspeed предлагает собственный новый метод моделирования для разбиения и профилирования приложения на раннем этапе разработки.
Перспективы и проблемы гетерогенных многоядерных процессоров
Современные технологии позволяют изготавливать процессоры, содержащие до 100 ядер (фирма Tilera Corp. [6]). Но по прогнозам 2009 года аналитической фирмы The Linley Group, переход на многоядерные процессоры в системах связи и системах сетей будет замедленным из-за сложности и фрагментарности используемой технологии. В 2012 году двухъядерные конструкции займут 20% рынка систем связи (рис.4), а доля процессоров с четырьмя и более ядрами будет составлять чуть больше 10%. Популярность одноядерных процессоров во встроенных системах продолжает увеличиваться. Фирма Freescale Semiconductor снижает производство гетерогенных многоядерных процессоров из-за перехода на более простую двухъядерную архитектуру [7].
Но, на наш взгляд, роль гетерогенных архитектур в данном прогнозе все же занижена. Конечно, гомогенные системы легче программировать, задача распределения нагрузки между ядрами решается проще, чем в гетерогенных. Однако гетерогенные системы обладают большей эффективностью как с точки зрения реальной производительности на целевых задачах, так и с точки зрения соотношения производительность/потребляемая мощность. При условии должной поддержки со стороны средств разработки и отладки ПО гетерогенные архитектуры в будущем все же займут существенную долю рынка. Это подтверждает тот факт, что уже сейчас большое число мобильных устройств (в том числе популярные смартфоны и планшеты Apple) и многие образцы телекомуникационного оборудования используют многоядерные процессоры с гетерогенной архитектурой.
Освоение многоядерных процессоров – задача сложная, на этом пути немало барьеров, особенно со стороны программного обеспечения. В настоящее время большинство встроенного ПО предназначено для одноядерных процессоров. Операционные системы для симметричных многопроцессорных архитектур плохо масштабируются для систем с числом ядер больше четырех. Асимметричные архитектуры требуют сложной балансировки нагрузки, а аппаратные акселераторы и сопроцессоры – сложного набора разнообразных программных прикладных интерфейсов (API).
На распространение гетерогенных процессоров накладывает ограничения и аппаратная часть, это в основном связано со сложностями масштабирования системы. Особенно острой проблемой для многоядерных процессоров стала пропускная способность общего для нескольких ядер интерфейса памяти. "Узким местом" в этом случае может стать даже общий кэш данных. Кроме того, из-за ограниченного количества открытых одновременно страниц динамического ОЗУ могут возникать конфликты при обращению к памяти [7]. Еще одна серьезная проблема связана с масштабированием подсистемы обеспечения когерентности кэш-памяти, которая плохо отработана и требует существенных аппаратных затрат для числа ядер больше восьми. Подсистема обмена данными на основе общей шины в этом случае становится неэффективной, а система на основе коммутатора сложна в реализации. Это приводит к необходимости разработки многослойных вариантов межсоединений и переходу к архитектурам сетей на кристалле. Внутрикристальная коммутация вообще становится краеугольным камнем в современных процессорах, и именно грамотно спроектированная и эффективная коммутационная логика становится фактором, определяющим производительность всей системы.
Тем не менее, ведущие производители микросхем занимаются целенаправленной разработкой и производством многоядерных процессоров для устройств связи. Примером успешной реализации многоядерной архитектуры могут служить процессоры с архитектурой KeyStone фирмы Texas Instruments. В этой архитектуре интегрированы RISC- и ЦОС-ядра со специализированными сопроцессорами и системой ввода-вывода. KeyStone – фактически первая архитектура, в которой обеспечивается приемлемая внутренняя полоса пропускания для неблокируемого доступа ко всем ядрам и периферийным устройствам.
Эти процессоры интересны своей подсистемой обмена данными качественно нового уровня, основа которой – несколько специализированных блоков.
Коммутатор TeraNet – это не просто шина или коммутатор типа точка-точка, а сеть, т.е. совокупность коммутаторов, работающих на разных частотах и обслуживающих различные группы устройств. Карта соединений блоков и устройств, которых в составе процессора уже несколько десятков, нетривиальна, – очевидно, при ее проектировании был детально проанализирован трафик данных, характерный для целевых задач. Такой анализ позволяет уйти от сложной в реализации схемы соединений по принципу "все со всеми" и выделить, какие именно блоки необходимо соединять напрямую, какие связи должны быть независимыми для предотвращения простоев и блокировок при обмене данными, а также определить требуемые пропускные способности отдельных коммутаторов.
Многоядерный навигатор – инновационное управляющее устройство пакетной обработки, которое может контролировать 8192 очереди. Навигатор распределяет задачи среди соответствующих аппаратных средств. Многоядерный контроллер общей памяти обеспечивает непосредственный доступ к памяти без использования коммутационной системы, так что перемещение пакетов не нарушается обращением к памяти.
Межкристальный интерфейс HyperLink имеет пропускную способность 50 Гбит/с. Работая совместно с навигатором, HyperLink обеспечивает "прозрачное" распределение задач между кристаллами [8].
Архитектура KeyStone позволяет добиться большей производительности, чем можно ожидать от простого увеличения числа вычислительных ядер. В частности, заметное увеличение быстродействия достигается посредством интеграции в СнК ускоряющих сопроцессоров. Таким образом, усовершенствованная многоядерная архитектура вкупе с интегрированными специализированными акселераторами – весьма эффективная комбинация для повышения производительности [3].
Разработка ПО для подобных систем невозможна без эффективной программной среды. Чтобы максимально упростить процесс освоения программистами новой многоядерной системы, желательно иметь готовые драйверы, прикладные библиотеки и примеры их использования. Так, например, полная программная инфраструктура для KeyStone состоит из инструментальных средств программного конструирования, разработки, отладки, профилирования и вспомогательного ПО для передачи конечного продукта из лаборатории на производство (рис.5).
Проблемы проектирования сетевых устройств
Спрос на многоядерную обработку данных во встроенных применениях, в частности, в сетевых устройствах, увеличивается. Сетевые процессоры могут использоваться в маршрутизаторах, сетевых коммутаторах, аппаратных брандмауэрах, системах безопасности и наблюдения.
Работа в сетевых устройствах требует от процессора как обработки входных и выходных данных, так и осуществления функций контроля и управления (рис.6). Обработка входных данных включает в себя анализ, классификацию и проверку на безопасность пакетов данных различной длины и типа. Кроме этого, необходима возможность изменения данных в пакетах. При этом должна обеспечиваться заданная пропускная способность канала связи, достичь которой можно, лишь используя быстродействующий специализированный процессор. Обработка выходных данных значительно проще и в основном состоит из управления трафиком.
Под управлением подразумевается контроль состояния узлов сети, маршрутизация и т.д. Для выполнения этих задач используются стандартные RISC (в основном MIPS) процессоры [9]. На рис.7 показана процессорная система, в которой используются указанные технологии. В этом приборе восемь процессорных ядер е500 с архитектурой Power Architecture и блоки аппаратного структурирования, кодирования, управления буфером, очередью и фреймами. Для обработки данных могут быть задействованы аппаратные ускорители и некоторые процессорные ядра, а для осуществления функций управления – оставшиеся ядра е500. Количество ядер позволяет гибко распределять задачи между ними.
Однако имеются определенные сложности, связанные с выбором ПО. С одной стороны, приемлемое быстродействие при обработке входных и выходных данных может обеспечить ОС реального времени (RTOS), с другой, – для выполнения сложных задач управления и контроля может понадобиться более громоздкая ОС Linux. При этом возможны проблемы с совместимостью старого ПО для одноядерных систем с новыми многоядерными.
Современные многоядерные процессоры, как правило, используют все уровни параллелизма – на уровне данных и задач. Реализация параллелизма задач пока еще требует "ручного" определения подзадач и потоков, которые можно исполнять параллельно, и внесения в программный код директив с указаниями метода деления программы на потоки и распределения ее по вычислительным ядрам.
Параллелизм данных реализуется в SIMD-архитектурах, а также программными средствами на многоядерных системах. Стоит отметить, что некоторые многоядерные процессоры допускают явную конфигурацию группы ядер для работы в режимах SIMD или VLIW (рис.8).
При выборе конфигурации многоядерной системы необходимо решить вопрос распределения задач между ядрами и акселераторами. Для сетевых устройств этот вопрос сводится к определению оптимального количества управляющих и обрабатывающих ядер. Особенность встроенных систем – обеспечение системным процессам общего доступа к ресурсам (периферийные устройства, память и сами ядра). Существуют два метода проектирования многоядерных систем с использованием ресурсов операционной системы. Симметричная многопроцессорная обработка (Symmetric Multi-Processing) широко используется в сравнительно простых системах. В этом случае одна ОС контролирует все ядра процессора. Второй метод – асимметричная многопроцессорная обработка (Asymmetric Multi-Processing – AMP) подразумевает использование независимых копий ОС для каждого ядра. Оба этих способа могут быть использованы в одной системе, например, при реализации стандарта беспроводной связи LTE, который имеет строгие требования по производительности для ПО физического уровня (РНY) и уровня контроля доступа к среде (МАС). В такой системе для обработки уровня PHY возможно использование одного или двух ядер, работающих в АМР-конфигурации c ОС RTOS, а уровень MAC реализован методом SMP с более подходящей для этих целей ОС Linux (рис.9).
Реализовать многосистемность и получить возможность управлять системой можно, используя виртуальные машины, которые создаются средствами основной ОС. Для этого требуется дополнительное ПО – так называемый гипервизор, который управляет доступом к памяти (в частности, осуществляет ее защиту), к периферийным устройствам и другим единым системным ресурсам. Для соответствия требованиям по задержке отклика гипервизор должен быть способен работать в реальном времени, занимать мало памяти и иметь небольшой объем служебных данных. Для ускорения выполнения некоторых общих задач гипервизоры обычно имеют поддержку на аппаратном уровне.
Выбор того или иного вида гипервизора зависит от требований системы. Простая многоядерная конфигурация может быть построена по принципу "главный – подчиненный", где одно ядро управляет другими. Схема распределения памяти может не меняться во время работы, т.е. быть статичной. В этом случае гипервизор не требуется. Но в более сложных системных конфигурациях вся система должна управляться с использованием другого слоя программной абстракции. Например, для маломощных вычислительных устройств необходимо обеспечить динамическое отключение ядер во время низкой загрузки и работы нескольких ОС на одном ядре и подключение дополнительных ядер во время пика нагрузки. Для такого динамического управления и используется гипервизор.
На рис.10 изображена структурная схема многоядерной системы с виртуальными машинами, в которых операционная система осуществляет обработку данных и управление. Каждая виртуальная машина имеет доступ к подмножеству системных ядер, памяти и устройствам ввода-вывода. Гипервизор обеспечивает виртуализацию ядер, периферийных устройств и асинхронных событий, например, внешних прерываний [9].
Эффективность многоядерных систем
Разработчики быстродействующих приложений, предназначенных для работы на многоядерных процессорах, сталкиваются с проблемами, обусловленными жесткими системными требованиями. В настоящее время приложения должны обеспечивать скорость обмена данными 10 Гбит/с, и в ближайшем будущем эта цифра увеличится до 40 Гбит/с и более. Трафик, передаваемый на этих скоростях, должен быть структурирован с ориентацией на пакетную обработку, что приводит к необходимости одновременного анализа миллионов потоков. В результате появляются неоднородные мультиплексированные данные, которые при обработке на универсальном процессоре снижают эффективность использования кэша, памяти и устройств ввода-вывода. Высокие скорости передачи данных неоднородного трафика могут нарушить циклы универсального процессора и увеличить задержку отклика системы.
Кроме этого, в большинстве случаев требуется проведение анализа трафика на вредоносное содержание. Для достижения приемлемой скорости работы блоки, обеспечивающие сетевую безопасность, должны быть тесно интегрированы с устройствами обработки данных. Для анализа пакетов при высокой скорости передачи данных необходимо использовать универсальные быстродействующие процессоры.
Для обеспечения гибкости и быстрой адаптации к изменениям сетевых протоколов все сетевые устройства должны иметь возможность перепрограммирования в широких пределах.
Быстрое развитие специализированных сетей и средств сетевой безопасности приводит к увеличению стоимости и потребляемой мощности, а также усложняет их обслуживание. В этом случае наиболее выгодное решение – снижение количества сетевых устройств посредством виртуализации высокой степени.
Общая эффективность многоядерной системы складывается из нескольких компонентов.Во-первых, это быстродействие самого процессора, эффективное использование инструкций и оптимальное распределение нагрузки. Во-вторых, большой вклад в общую эффективность вносит ширина полосы пропускания памяти и коммутационной логики, эффективность кэша и минимизация задержек при обращении к памяти. И, в-третьих, для всей системы важна энергоэффективность, т.е. низкая потребляемая мощность всех узлов, в том числе и процессора при решении целевых задач.
Решить эти задачи можно, используя многоядерные гетерогенные процессоры, в которых обработка сетевых пакетов осуществляется в отдельном модуле, связанном с виртуальными многоядерными процессорами x86 посредством виртуального интерфейса PCI Express. Такое решение в четыре раза эффективней, чем многоядерные x86-системы со стандартными интерфейсами. В этом случае гетерогенная многоядерная архитектура обеспечивает несколько функций, увеличивающих общую эффективность системы.
За счет распределения нагрузки между ядрами оптимизируется общая загрузка процессора (рис.11). Для предварительной обработки быстрых потоков данных используются специализированные процессоры. Многоядерный потоковый процессор демультиплексирует неоднородный трафик на скорости, соответствующей пропускной способности линии, и обеспечивает мелкоструктурную (fine-grain) классификацию пакетов и потоков. Функции низкоуровневой обработки сетевых пакетов, обработки структурного потока (granular flow), глубокого анализа пакетов (DPI) и функции обеспечения сетевой безопасности также могут быть переданы спецпроцессорам реального времени. После предварительной обработки трафик распределяется между ядрами, тем самым увеличивается и скорость выполнения задач на универсальном процессоре, и общая эффективность системы. Еще одна функция заключается в организации связи сетевого и процессорного доменов посредством быстродействующего интерфейса с возможностью виртуализации. Для этого используется виртуальный (IOV) интерфейс PCI Express 2.0, в дальнейшем может обеспечиваться поддержка технологии Intel VTD[10].
Особенности сетевых процессоров для различных областей применения
Процессоры для мобильной связи. Как правило, это гетерогенные архитектуры ARM+DSP. Пример таких процессоров – серия OMAP фирмы Texas Instruments. Они могут быть дополнены графическими и видеоакселераторами (рис.12).
Сетевые процессоры. Чаще всего для этих целей используются гетерогенные системы, работающие по принципу главный–подчиненные, например, SP2603 фирмы Agere. Проблема разработки приложений для многоядерных СнК этого типа заключается не в разбиении программы на многочисленные потоки или координацию обработки между ПЦОС, а в распределении доступа к общим ресурсам (память DDR, порты Ethernet, кэш L2 и т.д) между процессорными ядрами (рис.13).
Процессоры для модемов базовых станций. Для этих целей хорошо подходят многоядерные ПЦОС, например, ТС16487 фирмы Texas Instruments. Добиться малого времени отклика системы можно, жестко распределяя задачи между ядрами (например, только обработка данных или только управление) и задействуя аппаратные ускорители [9].
Программируемые радиоустройства. Изначально предназначенные для военной электронной техники, сейчас они используются в сотовых телефонах для работы в различных сетях передачи данных (GSM, EDGE, WCDMA, Bluetooth, 802.11, FM radio, DVB). Особенностью этих приложений является широкая распараллеливаемость и потоковый характер обработки данных, небольшая кэш-память, несколько каналов DMA, а также использование команд SIMD при обработке данных.
Хороший пример перспективной архитектуры этого направления – экономичная и эффективная архитектура AsAP (Asynchronous Array of Simple Processos – асинхронная матрица простых процессоров) (рис.14). Ядра малого размера (0,17 мм2) имеют свои тактовые генераторы и связаны между собой буферами FIFO (связь локальная, т.е. каждое ядро соединяется с соседними), так что по сути этот прибор является асинхронным. Если память FIFO пуста, связанные с ней ядра переходят в ждущий режим и остаются в нем до тех пор, пока они не получат данные для обработки. Иными словами, обмен данными организован на принципе накопления, а не перенаправления их к другим ядрам. Схема с архитектурой AsAP – пример матрицы выполняющих простые вычисления процессоров, но программная модель такой схемы пока находится в состоянии разработки [11].
Отечественная элементная база для связи и навигации
Для задач связи в ГУП "НПЦ "Элвис" было разработано новое поколение процессоров на базе платформы "Мультикор". Основа процессора – ядро MIPS32 и многоядерный кластер ядер DSP с архитектурой VLIW "DELCore-30" и общим полем памяти. Ядра объединены сетью, которая состоит из двух независимых коммутаторов, связывающих процессор и каналы DMA с периферийными контроллерами и DSP-кластером. Отдельный коммутатор объединяет DSP-ядра с общим полем памяти в DSP-кластер.
Процессоры изготавливаются по 130-нм технологии и имеют рабочую частоту 300 МГц. В планах предприятия – перевод этих процессоров на технологии 65 и 45 нм и увеличение рабочей частоты до 600 МГц и выше.
Для портативных радиостанций лучше всего подходят трехъядерные процессоры (1CPU + 2 DSP) со встроенным коррелятором ГЛОНАСС/GPS. Для применения в базовых станциях предназначено другое решение – пятиядерные процессоры со схожей архитектурой, но без навигационного процессора, с усиленным четырехъядерным DSP-кластером и более широким набором скоростных периферийных интерфейсов (SRIO, SpaceWire) (рис.15).
Последние тенденции в области создания гетерогенных многоядерных систем на кристалле
Как было сказано выше, сетевые процессоры выполняют две основные функции – управления и обработки данных. Функция управления часто осуществляется стандартными ISA-процессорами и контроллерами. Если спектр решаемых задач очень широк и неизвестен на момент проектирования устройства (например, процессор смартфона), лучше всего использовать универсальный процессор. Требуемая производительность достигается за счет многоядерных процессоров и распределения задач в рамках гомогенной системы.
Для обработки данных необходимы более гибкие и оптимизированные варианты. Для этих целей используются гетерогенные многоядерные системы с дополнительными аппаратными ускорителями и сопроцессорами. Архитектура связей между ядрами и набор сопроцессоров определяются целевой задачей.
В последнее время появился новый класс специализированных устройств – DPU (Data plane Processing Unit, устройство обработки данных) (рис. 16). DPU может использоваться, например, для кодирования и декодирования аудио/видеоданных. В течение многих лет аудиокодеки реализовывались с помощью специализированных аппаратных средств. В настоящее время разработчики многоядерных СнК имеют возможность использовать для этих целей DPU или добавить специальные команды в процессор, предназначенный для обработки данных. Такие DPU не только более гибки в программировании, но и более экономичны.
Архитектура многоядерных процессоров для связи имеет следующие особенности:
Существенное влияние на производительность всей системы оказывает эффективность коммутации между всеми элементами процессора. Все большее распространение получают многослойные сети на кристалле, в которых связи организуются несколькими коммутаторами. Архитектура такой сети и принцип группировки ее узлов напрямую зависят от характера потоков данных в целевой задаче, т.е. процессоры этого класса становятся специализированными даже с точки зрения внутренней коммутации.
Активное использование сопроцессоров различного типа и разработки аппаратных ускорителей с узкоспециализированной системой команд (ASIP).
Интеграция высокоскоростных периферийных интерфейсов и интеллектуальных подсистем ввода-вывода на кристалле многоядерного процессора для более эффективной работы с большими потоками данных.
Аппаратная поддержка виртуализации.
Сильное влияние на процесс проектирования многоядерных процессоров оказывает их сложность, поскольку они по сути уже есть законченные системы, реализованные на одной ИС. Для разработки такой системы с нуля фирме необходимы компетентные специалисты, которые будут разрабатывать алгоритмы ЦОС и обработки видео, сетевые технологии, архитектуру различных вычислительных ядер, протоколы высокоскоростных интерфейсов, цифровую и аналоговую схемотехнику, заниматься высокоуровневым проектированием ИС и т.п. Кроме этого, такой процессор невозможно грамотно спроектировать без соответствующего опыта системного проектирования. Таким образом, реальная производительность системы, и иногда даже ее работоспособность определяется множеством нюансов, которые имеют место при запуске ОС, работе с приложениями и взаимодействии процессора с другими устройствами. Учет всех этих нюансов на этапе проектирования позволяет получить качественную многоядерную систему. Однако реальность такова, что практически ни одна фирма не обладает достаточными для этого ресурсами. В результате появились следующие тенденции разработки подобных систем:
Активное использование покупных IP-ядер, IP-блоков периферийных интерфейсов и даже генераторов соединений. Их предлагают, например, фирмы Synopsys и ARM.
Кроме проверки работоспособности прикладного ПО на еще разрабатываемой многоядерной системе проектировщики берут на себя разработку драйверов, прикладных библиотек и встроенного ПО, без которых использование новой системы будет весьма затруднено.
Разработку многоядерных систем постепенно берут на себя фирмы, выпускающие конечные устройства, так как у них есть достаточный опыт системного проектирования, а развитый рынок IP-блоков несколько снижает требования к компетенции в области схемотехнического проектирования. В то же время фирмы, занимающиеся разработкой микросхем, либо максимально усиливают взаимодействие с разработчиками аппаратуры, учитывая все их пожелания, либо начинают выпуск собственной аппаратуры на базе своих микросхем, фактически становясь разработчиками устройств.
Фирма-разработчик аппаратуры может доработать купленную IP-платформу, выбирая оптимальную конфигурацию системы и, при необходимости, разрабатывая собственными силами некоторые блоки. В этом случае фирма получает аппаратуру с более выигрышными характеристиками (функциональность, производительность, габариты, потребление), получая прибыль от продаж конечных устройств, но не микросхем.
Литература
Путря Ф.М. Архитектурные особенности процессоров с большим числом вычислительных ядер. – Информационные технологии, 2009,№4, с.2–7.
Matthias Grles, Kurt Keutzer. Building ASIPs: The Mescal Methodology. – University of California at Berkeley electronics research laboratory, 2005.
Warner J., Bhal S. The role of multicore in the evolution of communications. – www.ti.com
Yoshida J. AMP: Freescale’s answer to exploding Internet traffic. – www.eetimes.com
Meritt R. Update: Mindspeed desribes 26-core base station DSP. – www.eetimes.com
Clarke P. Tilera Launches many-core 64-bit processor. – www.eetimes.com
Meritt R. News Analysis: Multicore COUs face slow road in comms. – www.embedded.com/216000018
ixed and Floating-Point Digital Signal Processor. TMS320C6671. Advance Information. – www.ti.com
Oshana R. The keys to success in multicore application development. – www.embedded.com/219200259?printable=true
Siket J. Making multicore CPUs work in embedded communications designs. – www.embedded-computing.com/articles/id?4291
Karam L.J. et al. Trends in Multicore DSP Platforms. – IEEE Signal Processing Magazine, 38, November 2009.
Gwennap L. OMAP 4470 improves CPU, graphics. – www.linleygroup.com
Martin G. New trends in heterogenous multicore SoCs. – www.embedded-computing.com/articles/id/?4304
Предпосылки к использованию многоядерных систем
Исторически сложилось так, что определенные функции в системах связи выполнялись специализированными процессорами. Например, процессоры для цифровой обработки сигнала (ПЦОС) идеально подходят для обработки звуковых и видеосигналов. Из-за многообразия современных стандартов беспроводной связи ПЦОС все шире применяются для реализации сетевых протоколов. Сетевые ПЦОС обеспечивают высокую скорость передачи пакетов данных, а также обрабатывают пакеты и контролируют их прохождение в сети. В этом случае основной (универсальный) процессор осуществляет общий контроль и управление сетью и ввод-вывод данных.
Использование многоядерных процессоров позволяет отказаться от дорогих ПЛИС или дополнительных процессоров ЦОС, так как все необходимые устройства объединяются в одном корпусе. Соответственно уменьшается энергопотребление устройства и его стоимость. Но с точки зрения программиста, многоядерность – это не технологическое достижение а, скорее, невозможность далее наращивать производительность одноядерных систем. Причины перехода к многоядерным архитектурам подробно описаны в литературе и в основном связаны с проблемой потребляемой мощности [1]. Но в любом случае, эра многоядерных процессоров началась, и этот факт надо принимать как данность. Уже прошла первая волна адаптации ПО к многоядерным процессорам, и в ближайшем времени намечается выход нового поколения многоядерных процессоров, ориентирующихся именно на такое параллельное ПО.
Кроме этого, конкуренция и постоянный рост объема и качества услуг связи оказывают существенное влияние на провайдеров этих услуг, которым становится выгодно использовать элементную базу нового поколения (рис.1). На функциональность аппаратуры связи и, в частности, на процессоры, влияет и само содержимое сети, причем это влияние продолжает увеличиваться, и в первую очередь это касается ПЦОС. Традиционно они использовались для преобразования голоса из аналоговой формы в цифровую, его кодирования/декодирования и формирования сетевых пакетов из голосовых фреймов. С возникновением необходимости обрабатывать не только звуковую, но и видеоинформацию (в том числе и высокого разрешения) требования, предъявляемые к ПЦОС, превысили возможности одноядерных процессоров, так как для обработки одного потока видеоданных нужно несколько ядер. Таким образом, архитектуры современных процессоров ЦОС должны постоянно совершенствоваться, чтобы соответствовать увеличивающимся объемам сетевого трафика и более сложным алгоритмам обработки мультимедиа.
Увеличение сложности и объемов информации в сети породило еще одну тенденцию развития современных микропроцессорных систем – появление гетерогенных многоядерных систем и сетей на кристалле. Классические архитектуры ПЦОС, даже многоядерные, плохо справляются с кодированием/декодированием видео высокого разрешения, анализом огромного объема сетевого трафика и прочих подобных задач. Для обработки информации такого рода используются интегрированные специализированные ядра – сетевые, видеопроцессоры и т.д.
Сегодня существуют целое направление разработки архитектур вычислительных ядер со специфичной для конкретного приложения системой команд – ASIP (Application Specific Instruction Set Processor), специализированные САПР и методологии для выбора архитектуры и необходимой системы команд для ASIP [2]. Такая методология позволяет разрабатывать системы команд для произвольного класса задач, однако наибольшее распространение (кроме, естественно, архитектур ЦПУ и ПЦОС) получили специализированные графические ядра (GPU), видеопроцессоры (VPU), сетевые и векторные сопроцессоры.
Многоядерность и применение различных сопроцессоров – это не единственный способ использовать преимущества более совершенных технологических процессов. Важнейшая проблема современной вычислительной техники – обеспечение ввода и вывода данных на скоростях, обеспечивающих полноценную загрузку вычислительных ядер. Один из путей ее решения – размещение на одном кристалле вместе с вычислительными ядрами контроллеров и даже специализированных процессоров ввода-вывода. В качестве примера можно привести интеграцию в телекоммуникационном сетевом оборудовании определенных интерфейсов с подсистемой ввода-вывода (В/В) процессора для обеспечения высокоскоростного обмена данными по интерфейсам Ethernet, Serial RapidIO, PCI Express и другими, а также для обеспечения встроенной поддержки различных протоколов Интернета.
Современные сетевые многоядерные процессоры
Несмотря на то, что сетевой трафик резко возрастает, капитальные затраты провайдеров на увеличение пропускной способности сети из года в год остаются приблизительно одинаковыми (рис.2, 3). Это происходит потому, что при сохранении общего уровня капитальных затрат их доля на мультимедиа-применения будет резко возрастать для удовлетворения требованиям значительно более высокого трафика мультимедиа-данных в сети. Другими словами, требования к обработке мультимедиа-данных будут значительно возрастать в последующие несколько лет и это представляет собой другую силу, поддерживающую развитие новых архитектур многоядерных ПЦОС [3].
То же самое можно сказать и о беспроводных сетях. С каждым новым поколением этих сетей ширина полосы пропускания данных увеличивается из-за возрастающих требований пользователей к сетевому контенту. Увеличить полосу пропускания можно с помощью алгоритмов планирования, которые максимально повышают спектральную эффективность, и обработки сигналов в системе MIMO антенных решеток. Эта задача ложится на специализированные процессоры ЦОС [3]. Ведущие производители элементной базы активно поддерживают это направление. Так, фирма Freescale объявила о начале выпуска 28-нм многоядерных процессоров следующего поколения серии Advanced Multiprocessing (AMP). В новой платформе, основанной на 64-разрядных ядрах архитектуры Power Architecture с многочисленными программными потоками (multi-threaded) используются 24 виртуальных ядра. Основа платформ этой серии, 2,5-ГГц ядро e6500, имеет в своем составе усовершенствованную версию быстродействующего векторного SIMD-процессора AltiVec, эффективность которого наблюдалась при использовании в радарах и сонарах, а также в сетевых устройствах.
Ядра е6500 также входят в состав процессора Т4240, первого изделия серии QorlQ AMP, предназначенного для сетевого, промышленного и военного/авиакосмического оборудования. Т4240 имеет 12 ядер е6500 со сдвоенными программными потоками. Эти процессоры предназначены для обработки пакетов данных. И в связи с ожидаемым взрывным ростом IP-трафика нужно решить проблему, связанную с увеличением потребляемой мощности. Кроме того, эти процессоры будут использоваться в проводном и беспроводном оборудовании связи для сотовой инфраструктуры, мобильной связи, предприятий и центров данных. Возможность перепрограммирования позволяет использовать их в промышленном (интеллектуальные сети, устройства для сбора данных, измерительные устройства, средства автоматизации производства) и военном оборудовании (надежные одноплатные компьютеры). Первые образцы процессоров T4240 появятся на рынке в начале 2012 года.
Возможные конкуренты Freescale в области быстродействующих микропроцессоров – фирма Intel и производители СнК Cavium и Netlogic, использующие MIPS-ядра [4], а также даже малоизвестные фирмы. Например, фирма Mindspeed представила в 2010 году на конференции Hot Chip новую серию СнК для сотовых базовых станций, которые должны составить конкуренцию решениям ведущих изготовителей СнК, таких как Texas Instruments и Freescale [5]. В платформах Mindspeed серии Transcede используется 26 процессорных ядер, среди них четыре ядра ARM Cortex-A9, десять ЦОС-ядер CEVA и девять ЦОС-акселераторов. Схема Transcede 4000 изготовлена по 40-нм технологии TSMC и осуществляет передачу данных на частоте 750 МГц при потребляемой мощности 12 Вт. Микросхема содержит 300 млн. транзисторов. Для связи ядер и периферийных устройств используется сеть на базе интерфейса AMBA AXI фирмы ARM. Интегрированная кэш-память L1 и L2 имеет объем 9,1 Мбайт. Связь с внешними устройствами осуществляется с помощью комбинации десяти параллельно-последовательных и последовательно-параллельных преобразователей, интерфейсов PCI Express и Rapid I/O. Платформа поддерживает разнообразные беспроводные протоколы, включая LTE, W-CDMA и WiMAX. Для программирования платформ Transcede применяется язык С, фирма Mindspeed предлагает собственный новый метод моделирования для разбиения и профилирования приложения на раннем этапе разработки.
Перспективы и проблемы гетерогенных многоядерных процессоров
Современные технологии позволяют изготавливать процессоры, содержащие до 100 ядер (фирма Tilera Corp. [6]). Но по прогнозам 2009 года аналитической фирмы The Linley Group, переход на многоядерные процессоры в системах связи и системах сетей будет замедленным из-за сложности и фрагментарности используемой технологии. В 2012 году двухъядерные конструкции займут 20% рынка систем связи (рис.4), а доля процессоров с четырьмя и более ядрами будет составлять чуть больше 10%. Популярность одноядерных процессоров во встроенных системах продолжает увеличиваться. Фирма Freescale Semiconductor снижает производство гетерогенных многоядерных процессоров из-за перехода на более простую двухъядерную архитектуру [7].
Но, на наш взгляд, роль гетерогенных архитектур в данном прогнозе все же занижена. Конечно, гомогенные системы легче программировать, задача распределения нагрузки между ядрами решается проще, чем в гетерогенных. Однако гетерогенные системы обладают большей эффективностью как с точки зрения реальной производительности на целевых задачах, так и с точки зрения соотношения производительность/потребляемая мощность. При условии должной поддержки со стороны средств разработки и отладки ПО гетерогенные архитектуры в будущем все же займут существенную долю рынка. Это подтверждает тот факт, что уже сейчас большое число мобильных устройств (в том числе популярные смартфоны и планшеты Apple) и многие образцы телекомуникационного оборудования используют многоядерные процессоры с гетерогенной архитектурой.
Освоение многоядерных процессоров – задача сложная, на этом пути немало барьеров, особенно со стороны программного обеспечения. В настоящее время большинство встроенного ПО предназначено для одноядерных процессоров. Операционные системы для симметричных многопроцессорных архитектур плохо масштабируются для систем с числом ядер больше четырех. Асимметричные архитектуры требуют сложной балансировки нагрузки, а аппаратные акселераторы и сопроцессоры – сложного набора разнообразных программных прикладных интерфейсов (API).
На распространение гетерогенных процессоров накладывает ограничения и аппаратная часть, это в основном связано со сложностями масштабирования системы. Особенно острой проблемой для многоядерных процессоров стала пропускная способность общего для нескольких ядер интерфейса памяти. "Узким местом" в этом случае может стать даже общий кэш данных. Кроме того, из-за ограниченного количества открытых одновременно страниц динамического ОЗУ могут возникать конфликты при обращению к памяти [7]. Еще одна серьезная проблема связана с масштабированием подсистемы обеспечения когерентности кэш-памяти, которая плохо отработана и требует существенных аппаратных затрат для числа ядер больше восьми. Подсистема обмена данными на основе общей шины в этом случае становится неэффективной, а система на основе коммутатора сложна в реализации. Это приводит к необходимости разработки многослойных вариантов межсоединений и переходу к архитектурам сетей на кристалле. Внутрикристальная коммутация вообще становится краеугольным камнем в современных процессорах, и именно грамотно спроектированная и эффективная коммутационная логика становится фактором, определяющим производительность всей системы.
Тем не менее, ведущие производители микросхем занимаются целенаправленной разработкой и производством многоядерных процессоров для устройств связи. Примером успешной реализации многоядерной архитектуры могут служить процессоры с архитектурой KeyStone фирмы Texas Instruments. В этой архитектуре интегрированы RISC- и ЦОС-ядра со специализированными сопроцессорами и системой ввода-вывода. KeyStone – фактически первая архитектура, в которой обеспечивается приемлемая внутренняя полоса пропускания для неблокируемого доступа ко всем ядрам и периферийным устройствам.
Эти процессоры интересны своей подсистемой обмена данными качественно нового уровня, основа которой – несколько специализированных блоков.
Коммутатор TeraNet – это не просто шина или коммутатор типа точка-точка, а сеть, т.е. совокупность коммутаторов, работающих на разных частотах и обслуживающих различные группы устройств. Карта соединений блоков и устройств, которых в составе процессора уже несколько десятков, нетривиальна, – очевидно, при ее проектировании был детально проанализирован трафик данных, характерный для целевых задач. Такой анализ позволяет уйти от сложной в реализации схемы соединений по принципу "все со всеми" и выделить, какие именно блоки необходимо соединять напрямую, какие связи должны быть независимыми для предотвращения простоев и блокировок при обмене данными, а также определить требуемые пропускные способности отдельных коммутаторов.
Многоядерный навигатор – инновационное управляющее устройство пакетной обработки, которое может контролировать 8192 очереди. Навигатор распределяет задачи среди соответствующих аппаратных средств. Многоядерный контроллер общей памяти обеспечивает непосредственный доступ к памяти без использования коммутационной системы, так что перемещение пакетов не нарушается обращением к памяти.
Межкристальный интерфейс HyperLink имеет пропускную способность 50 Гбит/с. Работая совместно с навигатором, HyperLink обеспечивает "прозрачное" распределение задач между кристаллами [8].
Архитектура KeyStone позволяет добиться большей производительности, чем можно ожидать от простого увеличения числа вычислительных ядер. В частности, заметное увеличение быстродействия достигается посредством интеграции в СнК ускоряющих сопроцессоров. Таким образом, усовершенствованная многоядерная архитектура вкупе с интегрированными специализированными акселераторами – весьма эффективная комбинация для повышения производительности [3].
Разработка ПО для подобных систем невозможна без эффективной программной среды. Чтобы максимально упростить процесс освоения программистами новой многоядерной системы, желательно иметь готовые драйверы, прикладные библиотеки и примеры их использования. Так, например, полная программная инфраструктура для KeyStone состоит из инструментальных средств программного конструирования, разработки, отладки, профилирования и вспомогательного ПО для передачи конечного продукта из лаборатории на производство (рис.5).
Проблемы проектирования сетевых устройств
Спрос на многоядерную обработку данных во встроенных применениях, в частности, в сетевых устройствах, увеличивается. Сетевые процессоры могут использоваться в маршрутизаторах, сетевых коммутаторах, аппаратных брандмауэрах, системах безопасности и наблюдения.
Работа в сетевых устройствах требует от процессора как обработки входных и выходных данных, так и осуществления функций контроля и управления (рис.6). Обработка входных данных включает в себя анализ, классификацию и проверку на безопасность пакетов данных различной длины и типа. Кроме этого, необходима возможность изменения данных в пакетах. При этом должна обеспечиваться заданная пропускная способность канала связи, достичь которой можно, лишь используя быстродействующий специализированный процессор. Обработка выходных данных значительно проще и в основном состоит из управления трафиком.
Под управлением подразумевается контроль состояния узлов сети, маршрутизация и т.д. Для выполнения этих задач используются стандартные RISC (в основном MIPS) процессоры [9]. На рис.7 показана процессорная система, в которой используются указанные технологии. В этом приборе восемь процессорных ядер е500 с архитектурой Power Architecture и блоки аппаратного структурирования, кодирования, управления буфером, очередью и фреймами. Для обработки данных могут быть задействованы аппаратные ускорители и некоторые процессорные ядра, а для осуществления функций управления – оставшиеся ядра е500. Количество ядер позволяет гибко распределять задачи между ними.
Однако имеются определенные сложности, связанные с выбором ПО. С одной стороны, приемлемое быстродействие при обработке входных и выходных данных может обеспечить ОС реального времени (RTOS), с другой, – для выполнения сложных задач управления и контроля может понадобиться более громоздкая ОС Linux. При этом возможны проблемы с совместимостью старого ПО для одноядерных систем с новыми многоядерными.
Современные многоядерные процессоры, как правило, используют все уровни параллелизма – на уровне данных и задач. Реализация параллелизма задач пока еще требует "ручного" определения подзадач и потоков, которые можно исполнять параллельно, и внесения в программный код директив с указаниями метода деления программы на потоки и распределения ее по вычислительным ядрам.
Параллелизм данных реализуется в SIMD-архитектурах, а также программными средствами на многоядерных системах. Стоит отметить, что некоторые многоядерные процессоры допускают явную конфигурацию группы ядер для работы в режимах SIMD или VLIW (рис.8).
При выборе конфигурации многоядерной системы необходимо решить вопрос распределения задач между ядрами и акселераторами. Для сетевых устройств этот вопрос сводится к определению оптимального количества управляющих и обрабатывающих ядер. Особенность встроенных систем – обеспечение системным процессам общего доступа к ресурсам (периферийные устройства, память и сами ядра). Существуют два метода проектирования многоядерных систем с использованием ресурсов операционной системы. Симметричная многопроцессорная обработка (Symmetric Multi-Processing) широко используется в сравнительно простых системах. В этом случае одна ОС контролирует все ядра процессора. Второй метод – асимметричная многопроцессорная обработка (Asymmetric Multi-Processing – AMP) подразумевает использование независимых копий ОС для каждого ядра. Оба этих способа могут быть использованы в одной системе, например, при реализации стандарта беспроводной связи LTE, который имеет строгие требования по производительности для ПО физического уровня (РНY) и уровня контроля доступа к среде (МАС). В такой системе для обработки уровня PHY возможно использование одного или двух ядер, работающих в АМР-конфигурации c ОС RTOS, а уровень MAC реализован методом SMP с более подходящей для этих целей ОС Linux (рис.9).
Реализовать многосистемность и получить возможность управлять системой можно, используя виртуальные машины, которые создаются средствами основной ОС. Для этого требуется дополнительное ПО – так называемый гипервизор, который управляет доступом к памяти (в частности, осуществляет ее защиту), к периферийным устройствам и другим единым системным ресурсам. Для соответствия требованиям по задержке отклика гипервизор должен быть способен работать в реальном времени, занимать мало памяти и иметь небольшой объем служебных данных. Для ускорения выполнения некоторых общих задач гипервизоры обычно имеют поддержку на аппаратном уровне.
Выбор того или иного вида гипервизора зависит от требований системы. Простая многоядерная конфигурация может быть построена по принципу "главный – подчиненный", где одно ядро управляет другими. Схема распределения памяти может не меняться во время работы, т.е. быть статичной. В этом случае гипервизор не требуется. Но в более сложных системных конфигурациях вся система должна управляться с использованием другого слоя программной абстракции. Например, для маломощных вычислительных устройств необходимо обеспечить динамическое отключение ядер во время низкой загрузки и работы нескольких ОС на одном ядре и подключение дополнительных ядер во время пика нагрузки. Для такого динамического управления и используется гипервизор.
На рис.10 изображена структурная схема многоядерной системы с виртуальными машинами, в которых операционная система осуществляет обработку данных и управление. Каждая виртуальная машина имеет доступ к подмножеству системных ядер, памяти и устройствам ввода-вывода. Гипервизор обеспечивает виртуализацию ядер, периферийных устройств и асинхронных событий, например, внешних прерываний [9].
Эффективность многоядерных систем
Разработчики быстродействующих приложений, предназначенных для работы на многоядерных процессорах, сталкиваются с проблемами, обусловленными жесткими системными требованиями. В настоящее время приложения должны обеспечивать скорость обмена данными 10 Гбит/с, и в ближайшем будущем эта цифра увеличится до 40 Гбит/с и более. Трафик, передаваемый на этих скоростях, должен быть структурирован с ориентацией на пакетную обработку, что приводит к необходимости одновременного анализа миллионов потоков. В результате появляются неоднородные мультиплексированные данные, которые при обработке на универсальном процессоре снижают эффективность использования кэша, памяти и устройств ввода-вывода. Высокие скорости передачи данных неоднородного трафика могут нарушить циклы универсального процессора и увеличить задержку отклика системы.
Кроме этого, в большинстве случаев требуется проведение анализа трафика на вредоносное содержание. Для достижения приемлемой скорости работы блоки, обеспечивающие сетевую безопасность, должны быть тесно интегрированы с устройствами обработки данных. Для анализа пакетов при высокой скорости передачи данных необходимо использовать универсальные быстродействующие процессоры.
Для обеспечения гибкости и быстрой адаптации к изменениям сетевых протоколов все сетевые устройства должны иметь возможность перепрограммирования в широких пределах.
Быстрое развитие специализированных сетей и средств сетевой безопасности приводит к увеличению стоимости и потребляемой мощности, а также усложняет их обслуживание. В этом случае наиболее выгодное решение – снижение количества сетевых устройств посредством виртуализации высокой степени.
Общая эффективность многоядерной системы складывается из нескольких компонентов.Во-первых, это быстродействие самого процессора, эффективное использование инструкций и оптимальное распределение нагрузки. Во-вторых, большой вклад в общую эффективность вносит ширина полосы пропускания памяти и коммутационной логики, эффективность кэша и минимизация задержек при обращении к памяти. И, в-третьих, для всей системы важна энергоэффективность, т.е. низкая потребляемая мощность всех узлов, в том числе и процессора при решении целевых задач.
Решить эти задачи можно, используя многоядерные гетерогенные процессоры, в которых обработка сетевых пакетов осуществляется в отдельном модуле, связанном с виртуальными многоядерными процессорами x86 посредством виртуального интерфейса PCI Express. Такое решение в четыре раза эффективней, чем многоядерные x86-системы со стандартными интерфейсами. В этом случае гетерогенная многоядерная архитектура обеспечивает несколько функций, увеличивающих общую эффективность системы.
За счет распределения нагрузки между ядрами оптимизируется общая загрузка процессора (рис.11). Для предварительной обработки быстрых потоков данных используются специализированные процессоры. Многоядерный потоковый процессор демультиплексирует неоднородный трафик на скорости, соответствующей пропускной способности линии, и обеспечивает мелкоструктурную (fine-grain) классификацию пакетов и потоков. Функции низкоуровневой обработки сетевых пакетов, обработки структурного потока (granular flow), глубокого анализа пакетов (DPI) и функции обеспечения сетевой безопасности также могут быть переданы спецпроцессорам реального времени. После предварительной обработки трафик распределяется между ядрами, тем самым увеличивается и скорость выполнения задач на универсальном процессоре, и общая эффективность системы. Еще одна функция заключается в организации связи сетевого и процессорного доменов посредством быстродействующего интерфейса с возможностью виртуализации. Для этого используется виртуальный (IOV) интерфейс PCI Express 2.0, в дальнейшем может обеспечиваться поддержка технологии Intel VTD[10].
Особенности сетевых процессоров для различных областей применения
Процессоры для мобильной связи. Как правило, это гетерогенные архитектуры ARM+DSP. Пример таких процессоров – серия OMAP фирмы Texas Instruments. Они могут быть дополнены графическими и видеоакселераторами (рис.12).
Сетевые процессоры. Чаще всего для этих целей используются гетерогенные системы, работающие по принципу главный–подчиненные, например, SP2603 фирмы Agere. Проблема разработки приложений для многоядерных СнК этого типа заключается не в разбиении программы на многочисленные потоки или координацию обработки между ПЦОС, а в распределении доступа к общим ресурсам (память DDR, порты Ethernet, кэш L2 и т.д) между процессорными ядрами (рис.13).
Процессоры для модемов базовых станций. Для этих целей хорошо подходят многоядерные ПЦОС, например, ТС16487 фирмы Texas Instruments. Добиться малого времени отклика системы можно, жестко распределяя задачи между ядрами (например, только обработка данных или только управление) и задействуя аппаратные ускорители [9].
Программируемые радиоустройства. Изначально предназначенные для военной электронной техники, сейчас они используются в сотовых телефонах для работы в различных сетях передачи данных (GSM, EDGE, WCDMA, Bluetooth, 802.11, FM radio, DVB). Особенностью этих приложений является широкая распараллеливаемость и потоковый характер обработки данных, небольшая кэш-память, несколько каналов DMA, а также использование команд SIMD при обработке данных.
Хороший пример перспективной архитектуры этого направления – экономичная и эффективная архитектура AsAP (Asynchronous Array of Simple Processos – асинхронная матрица простых процессоров) (рис.14). Ядра малого размера (0,17 мм2) имеют свои тактовые генераторы и связаны между собой буферами FIFO (связь локальная, т.е. каждое ядро соединяется с соседними), так что по сути этот прибор является асинхронным. Если память FIFO пуста, связанные с ней ядра переходят в ждущий режим и остаются в нем до тех пор, пока они не получат данные для обработки. Иными словами, обмен данными организован на принципе накопления, а не перенаправления их к другим ядрам. Схема с архитектурой AsAP – пример матрицы выполняющих простые вычисления процессоров, но программная модель такой схемы пока находится в состоянии разработки [11].
Отечественная элементная база для связи и навигации
Для задач связи в ГУП "НПЦ "Элвис" было разработано новое поколение процессоров на базе платформы "Мультикор". Основа процессора – ядро MIPS32 и многоядерный кластер ядер DSP с архитектурой VLIW "DELCore-30" и общим полем памяти. Ядра объединены сетью, которая состоит из двух независимых коммутаторов, связывающих процессор и каналы DMA с периферийными контроллерами и DSP-кластером. Отдельный коммутатор объединяет DSP-ядра с общим полем памяти в DSP-кластер.
Процессоры изготавливаются по 130-нм технологии и имеют рабочую частоту 300 МГц. В планах предприятия – перевод этих процессоров на технологии 65 и 45 нм и увеличение рабочей частоты до 600 МГц и выше.
Для портативных радиостанций лучше всего подходят трехъядерные процессоры (1CPU + 2 DSP) со встроенным коррелятором ГЛОНАСС/GPS. Для применения в базовых станциях предназначено другое решение – пятиядерные процессоры со схожей архитектурой, но без навигационного процессора, с усиленным четырехъядерным DSP-кластером и более широким набором скоростных периферийных интерфейсов (SRIO, SpaceWire) (рис.15).
Последние тенденции в области создания гетерогенных многоядерных систем на кристалле
Как было сказано выше, сетевые процессоры выполняют две основные функции – управления и обработки данных. Функция управления часто осуществляется стандартными ISA-процессорами и контроллерами. Если спектр решаемых задач очень широк и неизвестен на момент проектирования устройства (например, процессор смартфона), лучше всего использовать универсальный процессор. Требуемая производительность достигается за счет многоядерных процессоров и распределения задач в рамках гомогенной системы.
Для обработки данных необходимы более гибкие и оптимизированные варианты. Для этих целей используются гетерогенные многоядерные системы с дополнительными аппаратными ускорителями и сопроцессорами. Архитектура связей между ядрами и набор сопроцессоров определяются целевой задачей.
В последнее время появился новый класс специализированных устройств – DPU (Data plane Processing Unit, устройство обработки данных) (рис. 16). DPU может использоваться, например, для кодирования и декодирования аудио/видеоданных. В течение многих лет аудиокодеки реализовывались с помощью специализированных аппаратных средств. В настоящее время разработчики многоядерных СнК имеют возможность использовать для этих целей DPU или добавить специальные команды в процессор, предназначенный для обработки данных. Такие DPU не только более гибки в программировании, но и более экономичны.
Архитектура многоядерных процессоров для связи имеет следующие особенности:
Существенное влияние на производительность всей системы оказывает эффективность коммутации между всеми элементами процессора. Все большее распространение получают многослойные сети на кристалле, в которых связи организуются несколькими коммутаторами. Архитектура такой сети и принцип группировки ее узлов напрямую зависят от характера потоков данных в целевой задаче, т.е. процессоры этого класса становятся специализированными даже с точки зрения внутренней коммутации.
Активное использование сопроцессоров различного типа и разработки аппаратных ускорителей с узкоспециализированной системой команд (ASIP).
Интеграция высокоскоростных периферийных интерфейсов и интеллектуальных подсистем ввода-вывода на кристалле многоядерного процессора для более эффективной работы с большими потоками данных.
Аппаратная поддержка виртуализации.
Сильное влияние на процесс проектирования многоядерных процессоров оказывает их сложность, поскольку они по сути уже есть законченные системы, реализованные на одной ИС. Для разработки такой системы с нуля фирме необходимы компетентные специалисты, которые будут разрабатывать алгоритмы ЦОС и обработки видео, сетевые технологии, архитектуру различных вычислительных ядер, протоколы высокоскоростных интерфейсов, цифровую и аналоговую схемотехнику, заниматься высокоуровневым проектированием ИС и т.п. Кроме этого, такой процессор невозможно грамотно спроектировать без соответствующего опыта системного проектирования. Таким образом, реальная производительность системы, и иногда даже ее работоспособность определяется множеством нюансов, которые имеют место при запуске ОС, работе с приложениями и взаимодействии процессора с другими устройствами. Учет всех этих нюансов на этапе проектирования позволяет получить качественную многоядерную систему. Однако реальность такова, что практически ни одна фирма не обладает достаточными для этого ресурсами. В результате появились следующие тенденции разработки подобных систем:
Активное использование покупных IP-ядер, IP-блоков периферийных интерфейсов и даже генераторов соединений. Их предлагают, например, фирмы Synopsys и ARM.
Кроме проверки работоспособности прикладного ПО на еще разрабатываемой многоядерной системе проектировщики берут на себя разработку драйверов, прикладных библиотек и встроенного ПО, без которых использование новой системы будет весьма затруднено.
Разработку многоядерных систем постепенно берут на себя фирмы, выпускающие конечные устройства, так как у них есть достаточный опыт системного проектирования, а развитый рынок IP-блоков несколько снижает требования к компетенции в области схемотехнического проектирования. В то же время фирмы, занимающиеся разработкой микросхем, либо максимально усиливают взаимодействие с разработчиками аппаратуры, учитывая все их пожелания, либо начинают выпуск собственной аппаратуры на базе своих микросхем, фактически становясь разработчиками устройств.
Фирма-разработчик аппаратуры может доработать купленную IP-платформу, выбирая оптимальную конфигурацию системы и, при необходимости, разрабатывая собственными силами некоторые блоки. В этом случае фирма получает аппаратуру с более выигрышными характеристиками (функциональность, производительность, габариты, потребление), получая прибыль от продаж конечных устройств, но не микросхем.
Литература
Путря Ф.М. Архитектурные особенности процессоров с большим числом вычислительных ядер. – Информационные технологии, 2009,№4, с.2–7.
Matthias Grles, Kurt Keutzer. Building ASIPs: The Mescal Methodology. – University of California at Berkeley electronics research laboratory, 2005.
Warner J., Bhal S. The role of multicore in the evolution of communications. – www.ti.com
Yoshida J. AMP: Freescale’s answer to exploding Internet traffic. – www.eetimes.com
Meritt R. Update: Mindspeed desribes 26-core base station DSP. – www.eetimes.com
Clarke P. Tilera Launches many-core 64-bit processor. – www.eetimes.com
Meritt R. News Analysis: Multicore COUs face slow road in comms. – www.embedded.com/216000018
ixed and Floating-Point Digital Signal Processor. TMS320C6671. Advance Information. – www.ti.com
Oshana R. The keys to success in multicore application development. – www.embedded.com/219200259?printable=true
Siket J. Making multicore CPUs work in embedded communications designs. – www.embedded-computing.com/articles/id?4291
Karam L.J. et al. Trends in Multicore DSP Platforms. – IEEE Signal Processing Magazine, 38, November 2009.
Gwennap L. OMAP 4470 improves CPU, graphics. – www.linleygroup.com
Martin G. New trends in heterogenous multicore SoCs. – www.embedded-computing.com/articles/id/?4304
Отзывы читателей