Солонина А., Улахович Д. Алгоритмы и процессоры цифровой обработки сигналов (2002) (1095891), страница 70
Текст из файла (страница 70)
и т. л. Это приводит к тому, что требования к быстродействии> р' выполнения различных фрагментов колов п времени выборки/записи р личных констант и переменных сушественпо отличаются. Сложная структура программ определяет требования к структуре памяти процессороэ ЦПОС, которая оказывается достаточно сложнои. Паня гь процессоров состоит из блоков разного назначения (КОМ, КАМ, ЕРКОМ), с различным быстродействием и возможностями доступа в одном командном цикле (бАКАМ, ОАКАМ), которые раэмсшаются как внутри. так вне процессора.
На уровне создания использование сложной структуры программ поддерживается механизмол~ секций ассемблера. Программу, состояшую иэ нескольких секций, можно за~ружать в несколько блоков памяти, распределяя различные секции программы в зависимости от назначения в различные блоки памяти. Например, часть программы, прелставляюшую команлы инициализации процессора, которые выполняются олин раз при включении системы и время выполнения которых не критично, можно разместить в медленной (например, внешней) памяти, а критичныс с точки зрения времени выполнения фрагменты — в быстрой памяти процессора. Каждая секция можег быть незавпсихю настроена на раэмешение в опрслелеппом месте (в соответствии с требуемыми типом и алресом) используемого пространства памяти. Эта настройка па копкрегпые адреса, так же, как раз гашение секций в определенном порялке.
осушествляется компоповз ', бшпком или непосредствегшо ассемблером (ссли он позволяет получить асолютную программу. т. е. программу с абсалютнымп адресами) При этом вглхолная выполняем я . яемая программа можег быть получена в виде нескольких Глава 9. Ггодгоюаха программ гюльэовагеля. Языки программирования выходных секций (пс обязательно совпадаюших с входными), каждая иэ которых способна оказаться независимо предназначенной для раэмсшеппя пли выполнения в различных областях и типах памяти.
Таким образом, на этапе компоновки реализуется разработанная ранее структура системы и алгоритма ее функционирования. Эга структура закладывается в файлы. управляюшие процессом ком~ юповкп. 9.5.2. Начальная загрузка программы Если система постоянно выполняет одну и ту же программу с псиэменпымп исходными ланнымп, го простейшим вариа|гюм с точки зрения использования явяясзся размсшение этой программы и исходных данных в постоянной памяти типа КОМ. Такое размешсние связано с выполнением слслуюшпх условии: ь) если намять внеппзяа, то опа должна утовлсгворять требованиям быстродействия; П лля упрошения системы в целом лучше использовать только внутреннюю память, т. е. процессор с внутренней КОМ; ьз запись информации в постоянную память типа КОМ производится при ее изготоплеш1и; стоимость этого процесса связана с тиражом пэлслпя (особенно внутренней КОМ процессора).
В связи с достаточно широким разбросом возможных вариантов построешгя систем номенклатура выпускаемых процессоров ЦПОС имеет лостаточпо широкий разброс вариантов внутренней памяти, как с точки зрения объема, так и наличия памяти разного вида: КАМ, КОМ. ЕРКОМ (Г!ах!з). Объем памяти типа КОМ. как правило, меньше объема КАМ. а достаточно часто она вообше отсутсгвует (в частности в процессорах фирмы АО1). В связи с отсутствием внутренней памяти типа КОМ, а иногда ее малым объемом возникает задача размешепия и начальной загрузки исполняемой программы.
Возможно несколько варианэов построения системы. 1. Для размешения программы и ее выполнения используется внешняя память типа КОМ. В этом случае она должна обладать требуегиыч (как правило, достаточно высоким) быстролействием. Кроме того. во всех процессорах интерфейс обрвшсния к внешней памяти более огр.пшчсы с точки эре~шя количества доступов по сравнению с впутрснпей и в ряле случаев (например, необходимость считывания из внепшсй памяти кодов и данных) булет "тормозить" выполнение программы 2. Раэмешение программы н исходных данных в "медленной" внешней памяти и загрузка ес лля выполнения во внутреннюю память процессора.
Естественно. возможные и используемые на практике варианты раэмешсния программы пе ог1эапнч|пвпотся лвумя приведенными выше. Находят п име- р Глава й. Подготовка программ пользователя. Языки программирования здб Алгоритмы и процессо ы цифровой обработки сигналов пенис различные компромиссные варианты, при которых для различных частей програмл>ы применяются и внутренняя КОМ.
и внешняя КОМ, как "медленная", так и "быстрая". Крол>е того, в современных сложных системах сушествуют варианты реализации с динамической перезагрузкой программ и данных в процессе работы. Таким образом, достаточно часто возникает задача загрузки (переписывания) программы во внутреннюю память. Эта задача в принципе решается следуюшим образом. В пал>яти типа КОМ (независимо от сс расположения) записывается модуль программы, осушествляюший переписывание па этапе инициачизации системы основной програл>мы из внешней КОМ во внутре»нюю память типа КАМ. В некоторых процессорах подобный загрузчик предусматривается при изготовлении, причем он автол>атически активизируется после сброса или подачи питания.
Данный начальный загрузчик (1>оо1 1оас1ег) в глоссарии ЦПОС Т! определяется так: встроенный сегмент кода, который перемешает исполняемый кол от внешнего источника до памяти программы при включении питания. В процессорах АО1 начальный загрузчик переписывает 256 слов п(юограмм. адрес которых передается в программный счетчик. Загруженный таким образом начальный фрагмент программы лолжен содержать команды перезаписи всей остальной программы.
За>рузчик может работать в нескольких режимаж выбор которых определяется сигналами на внешних выводах процессора. В процессорах Т! загрузчик может заполнять всю внутреннюю память через последовательный или параллельные порты. Режим работы определяется сигнгс>ами на внегдних выводах. 9.с>.3. Оверлейные программы Оверлейными называют программы, которые имеют различное расположение при загрузке и при выполнении. Таким образолп программы, перемешасмь>е с помошью начального загрузчика. являются оверлейными. Менять свое расположение для выполнения может не вся исполняемая программа, а отдельные ее части, критичные к времени выполнения. Основной проблемой, возникаюшсй при использовании оверлейных про.
грамм, является необходимость присваивания символам, и в частности меткам (которые могут являться адресами переходов), значений в соответствия с местом выполнения, а пе загрузки. Эта проблема рец>ается по-разному в ассемблерах различных фирм. В ассемблере Могого!а ввелены соотвсгствук>шие указания транслятору с помощьк> директивы овц, операнды которой указьпгают как место загрузки програмл>ы, так и место ее выполнения В ассемблере Т! адреса загрузки и выполнения указываются в командно>> файле компоновки, и используется специальная директива ° таьет для задания меток прн загрузке.
9.6. Языки С/С++ и архитектуры, дружественные к языку С Практически лля всех пропессоров ЦПОС язык С является одним из допустимых языков программирования. С-компиляторы процессоров ЦПОС почдерживают язык С, отвечаюший стандарту А(л181 (Ашепсап Ха>(опа( 5>апс$агсЬ !пзбгше). Язык С, отвечающий этому стандарту, описан в !!7!. Колшиляторы языка С++ поддерживают стандарт языка АХЗ!/18О, прпведшшый в )38!.
Язык С++ поддерживается компидяторамн процессоров АОЗР-218 фирмы АО1. процессорами платформы С6000 и ТМЗЗ29С28х фирмы Т1, процессорами Зга>Соте ЗС100 и некоторыми другил>и. Планируется разработка компилятора С++ лля платформы С5000 фирмы Т!. Достоинствами языка С помимо естестве>шых достоинств языка высокого уровня является слелуюшее. П Язык С прелставляет собой (несмотря на сушествование "диачектов") стандартный язык программирования (стандарт АХ51) высокого уровня. Поэтому программы на С легко перепосимы на любой процессор ЦПОС, г>оддсржива>оший этот язык. П Значительную часть программ, реализуемых на ЦПОС, составляют сложные управлякнцие структуры. Эти составляющие про> рамм запил>ают малую часть общего времени выполнения программы, однако требуюг значительных усилий цри их разработке.
Поэтому такис части программ легче создавать на языке высокого уровня С. П При использовании языка С программист, вообще говоря. не должен знать архитектуру' процессора, который он программирует (при этом, однако, он не получит эффективнои "хорошей" программы), архитектура процессора закладывается в компилятор и используемые оптимизаторы. П Компиляторы С для ЦПОС допускают введение в программу фрагментов, директив и конструкций на ассемблере. Подобные вставки можно использовать для частей программы, которые лучше писать на ассемблере, например для частей.
кришчных к времени выполнения. С) Процессоры с архитектурой >У)1У гсзг. ровд. 24) имс>от несколько функциональных модулей, рабогаюших параллельно. Для того чтобы писать эффективную программу на ассемблере, в этом случае требуется хорошее знание процессора и ассемблера и достаточно больцпие усилия. Язык С для програмл>ировапия таких процессоров представляется едино>ценно присл>лел>ым. П Как правило, исполняемая програл>л>а, полученная с использованием языка С, имеет больший объем и медленнее выполняется. Однако последние веРсии С-компиляторов имс>от достаточно эффективные оптимизаторы и позволяют получать программы, не сильно уступающие Таблица 9Л. С-компиляторы и ассемблер Язык С Ассемблер Эффектив- ность С„ % Алгоритм Кол-во тактов Кол-во тактов Время, мкс Время, мкс 40 отсчетов КИХ-фильт- ра ка 10 коэффициен- тов 0.90 269 0,76 БИХ-фильтр на 16 коэф- фициентов 0,11 32 0,11 100 Поиск минимума в таб- лице на 2304 значения 1175 4,36 0,17 Перемножение с нако- плением (даа вектора по 40 отсчетов) 0,17 Ассемблер умлита построения библиотек Объектный модуль Объектный модуль Полъявательская библиотека С-ф1 й Стандартная библиотека С-функций высадкой ислолняамый файл Пратрамма на языка ассемблера Алгоритмы я процессоры цифровой обработки сигналов программам на языке С.