Аннотация
Многопроцессорные системы появились в качестве перспективной альтернативы, чтобы избежать трудностей создания еще более быстрых суперкомпьютеров, используя новейшие технологии. Новые парадигмы проектирования, такие как многопроцессорные системы-на-кристалле (System-ona-Chip – MpSoC), предлагают высокий уровень производительности и гибкости, и в то же время, обещают недорогие, надежные и энергоэффективные реализации. Однако, сложность конструкции таких систем значительно возросла. Основная причина сложности состоит в неоднородной связи параллельного подхода и характера основной аппаратной архитектуры, что создает много проблем для отображения приложений в архитектуре. Это мотивирует к развитию единой парадигмы программирования, которая упрощает отображение, скрывая архитектурную сложность и отображая параллельные ресурсы архитектуры. Для того чтобы проект мог повторного использоваться, такая парадигма программирования должна поддерживать плавный перевод последовательно кода программных алгоритмов в свои параллельные реализации. В данной работе мы переносим параллелизм последовательных мультимедийных приложений написанных на C/C++ для их отображения и планирования на гибкую платформу MpSoC. Мы покажем, что используя наш подход, модель архитектурно-независимого многопоточного алгоритма MPEG-2 видео декодера может быть получена лишь с некоторыми изменениями в существующих последовательных реализациях алгоритма.
Введение
Технический прогресс сделал многопроцессорные реализации для встроенных систем жизнеспособной альтернативой традиционных однопроцессорных и чисто-аппаратных проектов. Такие многопроцессорные проекты предлагают высокий уровень производительности и гибкости и, в то же время, обещают недорогие и энергосберегающие реализации. В настоящее время одним из наиболее перспективных подходов к проектированию таких систем является так называемые парадигмы многопроцессорных систем-на-чипе (MpSoC). Канонический вид системы MpSoC представляет набор процессорных элементов (ПЭ), которые могут быть программируемыми процессорами или фиксированными сопроцессорами для специфических приложений, и элементов памяти (ЭП), подключенными к ПЭ посредством связывающей on-chip архитектуры. Как результат, MpSoC архитектуры представляют гетерогенные системы, которые предлагают гибкие параллельные вычислительные ресурсы для реализации пропускной способности требовательных мультимедийных приложений.
Однако, новые возможности MpSoC платформ вводят несколько задач проектирования, связанных с их параллельной неоднородностью архитектуры. Отображение приложений на архитектуру начинается со сложной спецификации системы, проходит через глубокие исследования разработки и заканчивается сложной реализацией. В этом контексте повторное использование большой базы существующего программного обеспечения для представления исследования различных возможных реализаций является важной задачей. Существующее программное обеспечение, обычно написанное на языке C/C++ для однопроцессорной архитектуры, не может быть непосредственно использовано в многопроцессорной среде, особенно учитывая разнородность составляющих программных и аппаратных компонентов. Существующее программное обеспечение должно быть адаптировано к возможностям параллельной архитектуры. Кроме того, для быстрого и гибкого изучения возможности отображения приложений на архитектуру, программное обеспечение не может быть распараллелено для конкретной задачи, потому что поколение каждого нового отображения может требовать вовлечения огромных усилий кодирования. Таким образом, существует необходимость дисциплинированного подхода, основанного на единой парадигме параллельного моделирования, что обеспечит плавный перевод существующих последовательно-закодированных алгоритмов программного обеспечения в свои параллельные модели, подходящие для адаптации к MpSoC платформам.
Эта статья посвящена проблеме создания такой парадигмы параллельного моделирования. Мы представляем фреймворк и набор руководств для преобразования существующего программного обеспечения с однопроцессорной реализацией для мультимедийных приложений в параллельные модели, которые затем могут быть использованы в исследовании дизайна платформ MpSoC. Фреймворк позволяет построить независимую от архитектуры многопоточную модель выбранного приложения, которая затем может быть легко отображена на любую гомогенную или гетерогенную целевую мультипроцессорную архитектуру. Вместо разработки языка моделирования для новой предметной области, мы предлагаем использовать SystemC, существующий язык моделирования системного уровня. Характеристики языка SystemC, такие как поддержка различных моделей вычислений, его возможности в отношении многопоточного моделирования и моделирования на уровне транзакций, а также тот факт, что он основан на языке C/C++, делают его очень подходящим для создания фреймворка для преобразования существующего последовательного программного обеспечения, написанного на C/C++, в параллельные модели для проектов системного уровня MpSoC платформ.
Остальная часть статьи организована следующим образом. Раздел 2 представляет собой обзор соответствующей работы. В разделе 3 представлена предложенная парадигма параллельного моделирования. Две ее основных части, архитектурно-независимые многопоточные модели и отображение и планирование модели приложения на платформу MpSoC, более подробно описаны в разделах 4 и 5 соответственно. Далее, раздел 6 прилагает представленный метод моделирования на примере мультимедийного приложения – MPEG-2 видео декодера. Наконец, в разделе 7 подводится заключение статьи.
Отображение на MpSoC и диспетчеризация
Как только архитектурно-независимая многопоточная модель для приложения построена, следующий этап состоит из её отражения и планирования на выбранную MpSoC. В целях выполнить функциональную проверку, так же как оценку производительности системы, требуется симулятор многопроцессорной платформы. В этом месте мы главным образом должны выбрать между моделированием исполнения задач на процессорном элементе архитектуры и обменом данных между задачами через каналы связи отражёнными на ЭП.
Для симуляции исполнения задач на ПЭ, может быть использовано два различных пути. С одной стороны могут быть использованы детализированные SystemC модели процессорной микроархитектуры выполняющие операционную систему с предварительно созданным программным обеспечением. С другой стороны, модули SystemC представляющие задачи могут быть помечены флагом Wait, который эмулирует время выполнения соответствующих частей задачи на ПЭ. Времена запуска предварительно рассчитываются, используя, например, симулятор набора команд или микро-архитектурный симулятор, такой как SimpleScalar. В текущей работе мы используем второй подход для получения грубой оценки производительности системы.
Моделирование каналов связи полностью зависит от используемого оборудования/операционной системы и отражения задач на вычислительных ресурсах. Программная модель не ограничивается каким-либо конкретным типом архитектуры. Некоторые примитивы (или каналы связи) будут реализованы исключительно программно, в то время как некоторые из них будут требовать аппаратную поддержку. Например, некоторые каналы связи будут нуждаться в отображении на аппаратной связывающей инфраструктуре, такой как шина. В этой работе мы изучаем новую парадигму связи через SoC платформы, так называемых сетей на кристалле (NoC). Для построения модели симуляции, на верхушке SystemC, была применена библиотека «Сети связи на кристалле» (On-Chip Communication Network – OCCN), которая облегчает разработку новых моделей для архитектур связи на кристалле. Она предоставляет открытый Фреймворк для спецификации (описания), моделирования, имитации и разработки изучения NoC. В этой стадии структура группы пакетной передачи данных (PDU – Packet Data Unit) и пропускная способность каждой связи должны быть определены. Кроме того, для взаимодействия с сетью с пакетной коммутацией, ПЭ требует обёртку (wrapper), называемая сетевым интерфейсом, который отделяет вычисления от взаимодействий.
Рисунок 1. Внутренняя архитектура MpSoC
Рисунок 1 демонстрирует обзор выбранной архитектуры MpSoC, состоящей из числа ПЭ или ЭП, соединённых через сеть на кристалле. NoC состоит из однородных маршрутизаторов, организованных в двумерную сеть (2D-mesh топология). ПЭ или ЭП закреплён за каждым роутером, который выступает в качестве хоста передающего или принимающего пакеты. Пара звеньев связывает два маршрутизатора или один маршрутизатор с соответствующим хостом, по одному для каждого направления.
Список литературы
- Imec conceives ’double-y’ methodology for design of multifunctional devices. Press Release, feb 2004.
- T. Austin, E. Larson, and D. Ernst. Simplescalar: An infrastructure for computer system modelling. IEEE Computer, 35(2):59–67, 2002.
- M. Coppola, S. Curaba, M. Grammatikakis, G. Maruccia, and F. Papariello. On-Chip Communication Network: User Manual V1.0.1. 2003.
- P. Gaulin, C. Pilkington, M. Langevin, E. Bensoudane, K. Szabo, D. Lyonnad, and G. Nicolescu. A multi-processor soc platform and tools for communications applications. Embedded Systems Handbook, CRC Press, 2004.
- F. Herrera, H. Posadas, P. Sanchez, and E. Villar. Systematic Embedded Software Generation from SystemC. In Proceedings of International Conference on Design, Automation and Test in Europe, 2003.
- K. Keutzer, S. Malik, R. Newton, J. Rabaey, and A. Sangiovanni-Vincentelli. System level design: Orthogonalization of concerns and platform-based design. IEEE Transactions on Computer-Aided Design, 19(12), 2000.
- S. Kiran, M. N. Jayram, P. Rao, and S. K. Nandy. A Complexity Effective Communication Model for Behavioral Modelling of Signal Processing Application. In Proceedings of 40th International Design Automation Conference, 2003.
- B. Lewis and J. B. Daniel. Multithreaded Programming with Pthreads. Prentice Hall, 1998.
- MPEG homepage. http://www.mpeg.org/MPEG/index.html.
- J. M. Paul. Programmers’ Views of SoCs. In Proceedings of International Conference on Hardware/Software Codesign and System Synthesis, 2003.
- SystemC homepage. http://www.systemc.org.
- W. Thies, M. Karczmarek, and S. P. Amarasinghe. StreamIt: A language for streaming applications. In Computational Complexity, pages 179–196, 2002.