Солонина А., Улахович Д. Алгоритмы и процессоры цифровой обработки сигналов (2002) (1095891), страница 71
Текст из файла (страница 71)
В табл. 9. ! приведены данные, иллюстрируюшие эффективность С-компиляторов по сравнению с ассемблером с точки зрения времени выполнения для процессора С62х (тактовая частота 300 МГц) фирмы Т! (см. Сокпр Ьектс!т.г)р по адресу )т!!р://туттту.б.сош).
С! При использовании языка С распространен вариант создания программ, при котором после написания обшей программы на языке С выявляются критичные с точки зрения зффсктивности программы фрагменты, и затем этп фрагменты переписывакттся или исправляются "вручную" на ассемблере Гси разд. 9.4). Отметим, что пз-за сложности распределения действий межлу 3 операционными устройствами дополнительная полностью "ручная" оптимизация полученного кода на уровне ассемблера лля С6000 и других подобных процессоров более затруднительна. К недостаткам языка С с точки зрения использования его для ((ПОС, особенно ЦПОС с фиксированной точкой, является то, что он не поддерживает тип данных с фиксированной точкой. Язык С++, позвтътяюший вводить пользовательские типы данных, а также полдерживаюший объектно-ориентированное программирование, предоставляет пользователю большие возможности, Рассмотрим формирование исполняемой программы с использованием язы- ка С.
Компилятор языка С программной оболочкой объединяется с набором други ° про1ралкм, в частности с ассемблером и компоповшикокь В качестве выходных к)кайлов компилятора могут быть почучспы к)хтг!лы с программой па языке Глава 9. Подготовка программ пользователя. Языки программирования 387 ассемблера, объектные модули или исполняемые программы за олин шаг.
На этапе компоновки про1раммы можно подключать библиотеку функций языка С и модули. написанные на ассемблере. Составляюшими частями компилято, ра являются препроцессор, оптимизатор и кодогенератор. Препроцессор компилятора выполняет синтаксический анализ, управляет формированием различных информашконных файлов. Оптимизатор анализирует программу с точки зрения возможностей повышения эффективности. уменьшения размера и излтеняет ее. Изменения люгут производиться, например, с целью упрошения выражений, организации и упрошения циклов, использования регистров ддя хранения и передачи переменных, устранения неиспользуемых инструкций и т. д. Оптимизаторы учитывают архитектуру и состав операционных устройств конкретных про'цессоров для повышения эффекткивности программы.
При этом лкогут при. меняться различные уровни оптимизации, определяюшие производимые оптимизатором действия. Кодогенератор компиляптра формирует программу на языке ассемблера. При компиляции может формироваться множество Различных файлов с информационными и диагностическими сообшепиями.
В качестве примера на рис. 9.6 показаны этапы выполнения компиляции и используемые при этом программы для процессоров фирлкы Т! ТМБЗ20. рис. 9.6. Этапы получения исполняемой программы при использовании языка с Программа оболочки компилятора вызывает ипдивилуальные програлгмы с желательными параметРами и опциями или выполняет всс пРогРаммы за Алгоритмы и процессоры цифровой обработки сигналов Глава 9. Подготовка программ пользователя.
языки программирования 389 один проход. Программа оболочки можс< вызывать синтаксический анализатор (црепроцессор), оптимизатор, генератор кода, утилиту межсписка, ассемблер и компоновщик. Синтаксический анализатор читает С-файл исходного текста и выполняет предварительную обработку, проверяст синтаксис и формирует прол<ежуточиый файл, который используется как вхолпой для генератора кола или оптимизатора.
Ои также обраба<ываст л<акроопреледеиин и расширения, включаемые файлы и директивы условной трансляции. Оптимизатор читает промежуточный файл, сгенерированный препроцессором, и производит различиу<о оптимизацию, чтобы повысить быстродействие выполняемой программы. Оптимизация вкдн>чает упрощение инструкции и выражений. расцрелеление переменных в регистрах, упрощение циклов, и объсдииецие нескольких исходных файлов в одш< молуль, чтобы исполнять оптимизацию уровня одного файла. Оптимизатор также делает начальный анализ циклов конвейерной обработки команд, этот процесс будет закончен генератором кода. Оптимизатор созлает иромежуточиый файл который являетсн входным дзя кодогеисрагора. Генератор кола формирует программу иа языке ассемблера, оптиыизироваииую с точки зрения использования конвейера команд процессора.
Эти файлы могут содержать комацлы процессора, директивы ассемблера и макро- директивы. Ассемблер транслирует файл текста ассемблера в объекгиыс файлы формата СОБР. Компоновщик объединяет объектные файлы в единственную выполиил<ую программу формата СОГР. Компоновщик распределяет исремешаел<ые секции и сил<волы в памяти и разрешает вопросы с различными пиешиими ссылками между входными файлал<и. На этапе компоновки могут подключаться библиотеки стандартных фуцкций языка С, библиотеки функций нзыла С и собственные библиотеки пользователя. Последние могут быть образованы с помощью утилиты иост!юеиия библиотеки (ЫЬ<а<у-Ьв!)д о<й!<у).
На этапе компиляции может быть опш<ей подключена утилита 1п<ег!<ль В результате выполнения этой утилиты выводится текст программы, в котором показывается, каким образом каждое утверждеиие языка С переводится иа язык ассемблера. Утилита позволяет проверить ассемблерный код, сгенерированный дзя кажлой инструкции С, и тем самым проверить и выбрать действия, произволимые оптимизатором. Примерно таким же образом язык С исиш<ьзуется ири программировании процессоров фирмы Мо<ого!а.
Программирование процессоров фирмы АО! нес кол ько отл и чается. < В качестве примера можно привести сосгав пакета С-комцилятора семейства цифровых процессоров ОБР56000 фирм<в Мого<о)а, который вкчючает: д56К вЂ” иитегрироваииукз управляюн<ую програмл<у; П <исрр — преироцессор языка С (стаидарт А)л15!); П 056-сс) — оптимизирующий С-компилятор; П авп<56000 — ассемблер; П йвр!пК вЂ” компоиовищк; П йзрБЬ вЂ” библиотекарь; П ййЪ56 — отладчик иа уровне языка С; П гип56 — симулятор: згес, с!сйск1, со(йп<р — различные ииструыентальиыс срсдст<ла манипуляции с содержимым обьекгиого файла. На эффективность работы компилятора С влияет архитектура процессора Архитектура обычных ЦПОС с нсскачькил<и пространствами памяти, большим количеством шии, комбинированными и специализированными колщилами не способствует тому, чтобы с помощью колшилнтора языка высокого уровни получить эффективиу<о программу (см.
!2) по адресу Ь((р://<т«зт.етЬеййей.свш). Язык С гораздо более эффективен, когда процессор имеет большой, универсальный набор регистра и объединенное пространство <зал<лги. Кроме того, архитектура процессоров с плавающей точкой более ориентирована на использование языков высокого уровня. Компилятору трудно опгимальиым образом учесть все аппаратиыс возможности процессора. С этой точки зрения употрсбляетсн терл<ни "архитектура ЦПОС, дружественная к С" (сы. "Согпр!!сг-(г!еяс)!у Агс!«<есц<гсз Гог ОБР" по адресу Ь((р://«чт<т.хзр.со<в). В этой работе в качестве таких архитектур отмечаются Ч).!Ч<< (процессоры платформы С6000 Т1) и суперскалярная архитектура (процессоры ОБР16000 7БР).
В статье "ОБР Вепс!ипагК Вези!ьз Гог <Ье (зиелз %Б!Ч-Вазе<! Ргосслзогз" (ел<. «4« !сэра<00.рй< по адресу Ь1!р://<т<т<т.Ьй!Все<в) приводятся результаты тестирования и сравнения эффективности архитектур Ч«) !Ч и улучшенной стаидартиой (сш. рпзд. 2.4) с точки зрения применения С-кол<пилнторов. При тестировании проверялись показатели программ, полученных с помощью языка С, ио сравнению с про<раылщми.
нацисаииыли< иа ассемблерс, иа примерах задач БПФ, реализации БИХ-фильтра и декодсра Витерби. Соответствующие данные ириведеиы в табл. 9.2. По размеру кода программы иа С для ЧЧБ!Ч-ир<тисссоров проигрывают программам иа ассемблере в 1,5 раза. процессоры улучшенные стаилартной архцтсктурь< — в !1,5 раз. По скорости вьи<олненин ирограмл<ы на С этих двух архитектур уступают црограыл<ам ив ассемблере соответственно; БПФ вЂ” в 7 и 9 рвз.
БИХ-фидьтр— в 2 и 3 раза, декодер Витерби — в 3,5 и 1! раз. Глава 10 Тип архитектуры процессора Задача Соотношение коров ВПФ Улучшенная стандартная Н1.!Ф ВПФ КИХ-фильтр КИХ-фильтр Декодер Витврби Декодер Витврби Улучшенная стандартная НЕ!% Улучшенная стандартная 11,5 Н1.1'ту 3.5 Алгоритмы и процессоры цифровой обработки сигналов Таблице 9.2. Отношение кода лсслв компилятора и коду полученному с использованием ассемблера Архитектурами, оптимизированными для компиляторов С/С++ (по мненпк1 соответствуюших производителей процессоров) являются также архитектуры Яаг Соте (Магога!а), супе)зскалярные архитектуры (75Р) н некоторые другие, в основе которых лежит архитектура процессоров )л!ЯС с сокращенным набором простых команд ]21].
Средства разработки и отладки систем циФровой гб ~~г обработки сигналов Разработка систем БОС является сложным и трудоелгкям процессом, отпо- сяцц1мся к области высокпх компьютерных технологий. Процедура разра- ботки включает в себя: П постановку заиачн; С) разработку или выбор оптимального алгоритма репчення задачи: С) выбор процессора и реализация алгоритма, в конечном счете, в внлс програмлпя на языке ассемблера выбранного процессора; П отладка программы, т. е, устранение возможных ошибок и оптимизация ее с целью минимизации времешюго ресурса.
цеобхочилгого для ее выполнения, а в ряде случаев и памяти; П создание па базе выбранного ЭПОС аппаратного устройства, реалнзуюшего заданные свойства и характеристики системы; 0 отладка разработанной системы. Таким образом, система л(ОС представляет собой совокупность програм- много и аппаратного пролукта. Для се создания необходимы инструмен- тальные средства разработки и отладки. Последние делятся на два обпгпр- ных класса: првгрвгпмные и алппрвтные срелства.