Научная статья на тему 'Основные подходы, используемые при создании высокопроизводительных библиотек математических функций для цифровых сигнальных процессоров с фиксированной точкой'

Основные подходы, используемые при создании высокопроизводительных библиотек математических функций для цифровых сигнальных процессоров с фиксированной точкой Текст научной статьи по специальности «Математика»

CC BY
97
29
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
Известия Транссиба
ВАК
Область наук
Ключевые слова
СВЯЗНОЕ / ТЕЛЕКОММУНИКАЦИОННОЕ ОБОРУДОВАНИЕ / ПРОЦЕССОР ЦИФРОВОЙ ОБРАБОТКИ СИГНАЛОВ / ИТЕРАЦИОННЫЕ АЛГОРИТМЫ / ДИАПАЗОН / ТОЧНОСТЬ / THE COHERENT / TELECOMMUNICATION EQUIPMENT / THE PROCESSOR OF DIGITAL PROCESSING OF SIGNALS / ITERATIVE ALGORITHMS / RANGE / ACCURACY

Аннотация научной статьи по математике, автор научной работы — Фирсанов Константин Александрович

В статье рассматриваются основные подходы, используемые при создании высокопроизводительных библиотек математических функций на платформах цифровых сигнальных процессоров с фиксированной точкой. Рассмотрены основные методы, используемые при создании алгоритмов для вычисления функций, их преимущества и недостатки применительно к DSP-платформам с фиксированной точкой. Подробно рассмотрены вопросы точности и диапазона аргументов и значений реализуемых функций.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Basic approaches, that are used for creation high performance math libraries on fixed point dsp platforms

The article covers principal approaches for creation high performance math libraries on fixed point DSP platforms. The analysis of basic methods, used for creation algorithms for calculation math lib functions on the fixed point DSP platform, the advantages and drawbacks of each method are examined in the article. The subject of accuracy and the range of the arguments and values of created functions are considered in details.

Текст научной работы на тему «Основные подходы, используемые при создании высокопроизводительных библиотек математических функций для цифровых сигнальных процессоров с фиксированной точкой»

В данной статье рассмотрены используемые для оценки временного рассогласования метрики, большинство из которых основано на вычислении автокорреляционной функции и поиске ее экстремума на предполагаемом символьном интервале. Из полученных в ходе моделирования результатов очевидно, что наиболее привлекательной является метрика, учитывающая ОСШ. Однако при этом необходимо помнить об ограниченной применимости алгоритмов временной синхронизации на основе рассмотренных метрик, связанной с тем, что дисперсия оценок и ОСШ находятся в обратной зависимости друг от друга.

1. Романюк, Ю. А. Основы цифровой обработки сигналов [Текст]: В 3 ч. Ч. 1. Свойства и преобразования дискретных сигналов: Учебное пособие / Ю. А. Романюк / МФТИ. - М., 2005. - 332 с.

УДК 004.428.4

К. А. Фирсанов

ОСНОВНЫЕ ПОДХОДЫ, ИСПОЛЬЗУЕМЫЕ ПРИ СОЗДАНИИ ВЫСОКОПРОИЗВОДИТЕЛЬНЫХ БИБЛИОТЕК МАТЕМАТИЧЕСКИХ ФУНКЦИЙ ДЛЯ ЦИФРОВЫХ СИГНАЛЬНЫХ ПРОЦЕССОРОВ С ФИКСИРОВАННОЙ ТОЧКОЙ

В статье рассматриваются основные подходы, применяемые при создании высокопроизводительных библиотек математических функций на платформах цифровых сигнальных процессоров с фиксированного точкой. Рассмотрены основные методы, используемые при создании алгоритмов для вычисления функций, их преимущества и недостатки применительно к DSP-платформам с фиксированного точкой. Подробно рассмотрены вопросы точности и дгшпазона аргументов и значенгш реализуемых функций.

Процессоры цифровой обработки сигналов находят широкое применение в современных радиоэлектронных устройствах. Связное, телекоммуникационное оборудование, энергетические устройства включают в себя узлы и блоки, разработанные на основе этих процессоров, реализующие разнообразные алгоритмы обработки сигналов. Часто при реализации алгоритмов обработки сигналов на платформах цифровых сигнальных процессоров возникает необходимость вычисления различных математических функций. Как правило, производители цифровых сигнальных процессоров предоставляют библиотеки элементарных и специальных математических функций на бесплатной или платной основе для использования на своих платформах. Для достижения максимальной производительности процессора эти библиотеки написаны на Ассемблере и оптимизированы по использованию архитектуры процессора: КЭШа, конвейера, памяти. Функции, вызываемые из этих библиотек, имеют определенный программный интерфейс, позволяющий вызывать их как из программ написанных на Ассемблере, так и из программ, написанных на языке C/C++ для исполнения на конкретной модели процессора. К примеру, компания Texas Instruments свободно предлагает разработчикам библиотеку элементарных математических функций DSPLIB для своих сигнальных процессоров TMS. Компания Analog Devices предлагает разработчикам библиотеку элементарных математических функций в составе среды разработки для своих процессоров ADSP. Компания Verysilicon - производитель и разработчик сигнальных процессоров на платформе ZSP - предлагает библиотеку элементарных математических функций ZSPLIB на платной основе для процессоров платформ Gl, G2, G3. Российский разработчик сигнальных процессоров на платформе Multicore, компания Элвис, предлагает реализацию библиотек математических и специальных функций, оптимизированных для выполнения на DSP ядрах Е1-соге14, Е1соге24, Е1соге26. Также существует множество реализацию математических библиотек для различных платформ от сторонних разработчиков. К примеру, разработчик реше-

ний на платформах Т№320УС55, ТМ8320УС62, ТМ3320УС64 компания Ше^й предлагает реализацию библиотеки элементарных математических функций, оптимизированную для этих платформ. Несмотря на то, что необходимые библиотеки можно найти у производителя конкретного сигнального процессора или у сторонних компаний, разработчики систем на цифровых сигнальных процессорах часто сталкиваются с необходимостью реализации своих собственных библиотек, которые отличаются от предлагаемых по набору реализованных функций, скорости выполнения, размеру программного кода. Порой необходимость создания собственных библиотек вызвана необходимостью реализовать уникальный программный интерфейс или обрабатывать данные определенного формата и разрядности. С точки зрения архитектуры сигнального процессора необходимость реализации библиотек математических функций обусловлена тем, что у большинства цифровых сигнальных процессоров в системе вычислительных инструкций присутствуют только арифметические, логические, сдвиговые инструкции и инструкции умножения и умножения с накоплением. Инструкции деления и тем более инструкции для вычисления элементарных математических функций обычно отсутствуют в системе команд процессоров с фиксированной точкой, поэтому для их вычисления и создаются специализированные библиотеки. Любая из существующих библиотек определяется составом функций, и каждая функция библиотеки может быть охарактеризована следующими параметрами: требуемым объемом памяти программ и памяти данных для вычисления функции, количеством тактов на вычисление одного значения, алгоритмом, используемым для реализации, точностью, с которой функция возвращает вычисленные значения, диапазоном аргументов и значений, обработкой значений, лежащих вне области определения, и прототипом вызова функции.

Эти характеристики обычно закладываются в спецификацию проектируемой библиотеки. Остановимся подробнее на перечисленных выше параметрах, рассмотрев их на примерах реализаций различных элементарных функций. Требуемый объем памяти программ и памяти данных всецело определяется алгоритмом, который используется для реализации функции. С другой стороны, выбор алгоритма для реализации той или иной функции библиотеки производится на основе заданных критериев быстродействия, доступных ресурсов - памяти программ и памяти данных и точности, с которой будет реализована каждая из функций. Как уже указывалось, на всех платформах цифровых сигнальных процессоров с фиксированной точкой отсутствуют команды для вычисления элементарных функций. Сами элементарные функции не могут быть вычислены за конечное число арифметических операций. Их можно только аппроксимировать. Большинство алгоритмов для вычисления элементарных и специальных функций используют итерационные методы, приближение при помощи рядов, полиноминальную интерполяцию или интерполяцию дробно-рациональными функциями. Как пример построения итерационного алгоритма для вычисления элементарных функций рассмотрим итерационный метод Ньютона для вычисления нуля функции и его применимость для реализации различных функций на некоторой обобщенной платформе процессора цифровой обработки сигналов. Пусть нам нужно вычислить некоторое значение уп функции

у = /(х) для точки хп. Пусть обратная функция выражается как х = (р(у). Рассмотрим функцию х = (р{у) - хп и построим вычислительный алгоритм для нахождения нуля этой функции (который очевидно будет в точке уп). Для нахождения нуля возьмем значение у0, которое находится достаточно близко к искомому значению уп, проведем касательную к функции х = (р{у) - хп в точке у0. Касательная пересечет ось У в точке у1, которая будет находиться между у0 и уп. Уравнение касательной в точке (у0;х0) для функции ср(у) можно записать как

Учитывая то, что лл = 0, а х0 = ср{у()) - х,, значение уп может быть приблизительно вычислено как

Уп ~ У0 - (Ф(Уо )-х*)1 ф'(уо). (2)

На следующем шаге проведем касательную в точке (у1; х1) и получим новое приближенное значение уп:

Уп ~ VI-(ф(ух)-х„)/фХу,). (3)

С каждым последующим шагом V, приближается к искомому значению уп. Число таких итераций зависит от выбора начального значения у0 и точности, с которой необходимо получить результат. Обобщенную формулу итерационного алгоритма можно записать как

у„+1=у*-Ыу)-х„)/(рХу) (4)

Исходя из равенства (4) можно составить итерационные алгоритмы для вычисления различных элементарных функций. Так, вычисление функции обратной величины у = — в точке

х

А представим как нахождение нуля функции х = <р(у) - А = — - А . Выражение для произ-

У

водной обратной функции в точке у0 можно записать так:

ФХУо) = -У2О- (5)

Подставляя выражение производной ср {у{)) и выражение для функции ср( у()) в уравнение

(4), получим выражение дня вычисления приближенного значения функции у = — в точке А:

х

у1*у0-(—-А)/(-\) = 2у0-А-у20. (6)

В обобщенном виде выражение (6) можно переписать так:

У^=2У,-А-У1. (7)

Выражение (7) представляет итерационную формулу Ньютона - Рафсона для вычисления функции обратной величины у = —. Найдем итерационные алгоритмы для вычисления

х

функций у = л/х и у = ~4х . Так, для функции у = у[х обратная функция - этох = уп. Выражение для производной обратной функции можно записать как (рХу) = п • у"~1. Подставляя эти выражения в уравнение (4) и приводя все к обобщенной форме, можно получить итерационный алгоритм для вычисления функции у = 'л[х :

Уп+1={{п-\)-уп+А-у\;п)1п. (8)

Как частный случай из формулы (5) можно получить алгоритм для вычисления функции у = л/х , известный как итерационная формула Ньютона:

Уп+\ = 5 • {у„ + —)• (9)

Уп

Для функции у = ~у[х обратная функция - это х = у~". Выражение для производной обратной функции можно записать как (р'{у) = -п • у~{п+Х). Подставляя эти выражения в уравнение (4) и приводя все к обобщенной форме, можно получить итерационный алгоритм для вычисления функции у = ~4х :

Уп+1=((п + \)-уп-А-у\;п)1п. (10)

Как частный случай из выражения (10) можно получить алгоритм для вычисления функ-

у„и=0,5-(3-у„-А-у>). (11)

Чем ближе начальное значение у0 выбирается к значению /(А), тем меньшее количество итераций требуется для вычисления значения функции и, соответственно, тем меньше вычислительные затраты процессора. Однако если значение у0 выбрано далеко от значения /(А), итерационный алгоритм может расходиться. Для подбора начального значения можно рекомендовать его вычисление, используя метод линейной интерполяции от некоторого известного значения. К преимуществам итерационных методов стоит отнести простоту реализации, невысокие требования к памяти данных - требуется всего лишь несколько слов для хранения коэффициентов, к недостаткам - то, что такой алгоритм трудно распараллелить для вычисления одного значения, эффективная применимость этого метода для использования на платформах с фиксированной точкой ограничена определенными классами функций. Связано это с тем, что только для функции у = хг, где г - действительное число, можно подобрать итерационный алгоритм, содержащий только степенные функции. Исходя из уравнения (4) итерационный алгоритм содержит обратную функцию и ее производную. Маловероятно чтобы инструкции для вычисления этих двух функций присутствовали в системе команд цифрового сигнального процессора с фиксированной точкой. Даже для вычисления (9) необходимо выполнить операцию деления в одной итерации. И для большинства процессоров, у

которых отсутствует инструкция деления, вычисление функции квадратного корня у = 4х

можно выполнить, вычисляя сначала у = с использованием выражения (11), а затем вычисляя обратную величину с применением итерационного алгоритма Ньютона - Рафсона (7).

Использование ряда Тейлора является одним из методов приближения для реализации различных функций на платформах с фиксированной точкой. Известно, что если функция у = /(х) абсолютно дифференцируема в некоторой точке х0, то она может быть представлена в данной точке рядом Тейлора:

v(x) = Дх0) + £ --/(и)(х0)■■ (х ■- х0у. (12)

п\

Преимущества данного подхода - это простота реализации. Достаточно держать в памяти данных предварительно рассчитанные коэффициенты сп=— /(й)(х0) и затем с каждой

п\

итерацией для Ах = х - х0 получить вычисленное значение с заданной точностью:

v(x) = ((...(((Адс + си)- Аде + си_!) • Аде + си_2) • Лх + с2)-Дх + С^-Дх + Сф. (13)

Операция (13) может быть разбита на вычисление двух полиномов: полинома только с четными показателями степени и полинома с только с нечетными показателями степени.

Учитывая то, что для большинства «суперскалярных» и УЫ XV-платформ операции суммирования группируются с операциями умножения, можно построить вычислительный алгоритм так, чтобы сгруппировать операции умножения для вычисления одного полинома с операциями сложения для другого и наоборот. В конце вычисления останется только суммировать полученные результаты. В итоге применение данного приема приводит к существенному повышению производительности. В идеальном случае ряд Тейлора должен строиться по единственной узловой точке для всего диапазона значений интерполируемой функции. Однако есть существенные ограничения по применению данного метода и его оптимальности. Во-первых, необходимо выбирать узловую точку, относительно которой строится данный ряд, как можно ближе к вычисляемому значению: чем ближе данная узловая точка находится к аргументу вычисляемой функции, тем быстрее сойдется ряд Тейлора к искомому значению. Во-вторых, для ряда Тейлора, как для степенного ряда, существует радиус сходимости Я-максимальное расстояние от узловой точки до аргумента вычисляемой функции. Если х - х0 > Я, то ряд будет расходящимся. В-третьих, для аргументов, которые находятся близко к узловой точке, необходимо взять меньшее число членов ряда, чем для тех, которые находятся дальше от нее, чтобы получить искомое значение с заданной точностью. Введение дополнительных шагов для анализа Ах = х - х0, чтобы определить, сколько использовать

членов ряда, или введение дополнительных узловых точек потребует введения команд ветвления, что повлечет за собой увеличение времени для вычисления искомого значения. Тем не менее данный метод может быть достаточно эффективно использован для интерполяции периодических функций и функций, которые не имеют особых точек.

Использование полиноминальной интерполяции позволяет обойти недостатки, присущие методу приближения рядом Тейлора. При интерполяции полиномом вычисляемая функция на всем или части диапазона заменяется полиномом некоторой степени п. Существует множество критериев, используемых для построения полинома. Один из критериев - это равенство значений функции значениям интерполирующего полинома в узловых точках. При использовании данного критерия для построения полинома степени п должна быть использована п +1 узловая точка. Затем составляется и решается система линейных уравнений относительно коэффициентов полинома ап, ее решение и даст искомые коэффициенты:

2 и.

— а0 Ч- сх^х^ Ч- £72^о ......апхо'

__2 п.

— а0 л- £/|Х| л- а^х^ "р......."р ,

V,, = а(, + а,хп + аэх] +.......+ ах".

п и I п 2 п п п

Данный тип интерполяции - интерполяция Лагранжа. Недостаток этого подхода - это то, что необходимо учитывать ошибку интерполяции между узловыми точками, которая может превосходить точность, с которой должна быть вычисляться проектируемая функция для ряда аргументов. Увеличение количества узловых точек уменьшает ошибку интерполяции. Другой способ улучшить приближение между узловыми точками - дополнительно потребовать равенства значений производных определенных порядков аппроксимируемой функции и интерполирующего полинома во всех или определенных узловых точках. С учетом всех этих условий также составляется и решается система линейных уравнений, и если она имеет решение, то искомое решение и будет коэффициентами интерполирующего полинома. Усеченный ряд Тейлора, используемый для аппроксимации, можно также рассматривать как подмножество данного подхода. Ведь по своей сути усеченный ряд Тейлора - это полином, построенный по одной узловой точке, в которой равны значения аппроксимируемой функции и интерполирующего полинома и значения их производных. Как пример других методов в построении интерполирующих полиномов можно привести метод наименьших квадратов, построение полиномов с использованием метода Чебышева: минимизировать максимальное

отклонение. Все эти методы достаточно подробно освещены в литературе [1]. После нахождения искомого полинома его коэффициенты будут храниться в памяти данных, а сама процедура вычисления может быть представлена выражением (13). Однако далеко не для каждой аппроксимируемой функции можно подобрать полином, который будет интерполировать ее на всем диапазоне изменения аргумента. Порядок полинома может оказаться очень большим, что сведет на нет все преимущества интерполяции полиномом. Для решения данной проблемы существует множество методов, один из них - использование кусочно-полиноминальной интерполяции. При данном методе интерполируемый диапазон разбивается на множество маленьких интервалов, каждый из которых интерполируется полиномом невысокого порядка. Методы кусочно-полиноминальной интерполяции достаточно подробно освещены в работе [4]. Другой подход, который разработан для вычислительных платформ с плавающей точкой, - сжатие диапазона [2]. Используя данный подход, можно попытаться определить небольшой диапазон, на котором достаточно интерполировать вычисляемую функцию. Диапазон должен быть определен таким образом, чтобы при преобразовании значения аргумента, находящегося за пределами данного диапазона, к некоторому значению внутри этого диапазона было соответствующее преобразование значения функции. Один из примеров применения данного подхода - интерполяция периодических функций. Так, функ-

ция у(х) = 8т(х) может быть интерполирована на интервале

. Значения аргумента для

данной функции могут быть представлены как

7 71 X к— + ф

2

. После определения четверти, в ко-

торой лежит входной аргумент, вычисляется искомое значение функции. Другой пример -это функция у = ап^(х). Эта функция может быть интерполирована на интервале [0;1]. На интервале от]1;тахГ£7/[, где тах¥а1 - максимальное значение в формате аргумента, функция преобразуется к виду:

х-1

Фо= ап^(--). (15)

х + \

После вычисления д)0 искомое значение определится как у = ф +

В отличие от платформ с плавающей точкой, где точность значения фиксирована, а диапазон значений, к примеру, для стандарта 1ЕЕЕ-754 лежит в пределах ± 2127, для арифметики с фиксированной точкой диапазон возможных значений и точность, с которой эти значения представлены, есть взаимосвязанные величины. Если числовые величины с фиксированной разрядностью - целые числа, то диапазон возможных значений для них лежит в пределах [ -1 • 2й;2" -1]; если же значения рассматриваются как величины в дробном формате, то диапазон возможных значений лежит в пределах [-1;1 - 2~" ], где п - число разрядов операндов без учета знакового разряда. Соответственно точность в первом случае - до единиц целого, во втором - (п -1) - значение после десятичной точки, где п - разрядность операндов процессора. Диапазоны возможных значений и точность промежуточных форматов вида Qk.ni,

где к - число разрядов в целой части и т - число разрядов после десятичной точки, будут ограничены величинами из указанных выше пределов. Реализуемые функции могут накладывать дополнительные ограничения на диапазоны аргументов и значений. Учитывая сказанное выше, при проектировании библиотеки имеет смысл определить для каждой реализуемой функции формат аргументов и формат, в котором функция возвращает результат вычислений. Формат определяется числом разрядов в целой и дробной частях операндов и результата. Соответственно точность определится как вес младшего значащего разряда в конкретном формате, а диапазон возможных значений - числом разрядов в целой части. Пояснить это можно на примерах элементарных функций.

Информационные технологии, автоматика, связь, телекоммуникации

Предположим, что создаваемая библиотека должна содержать функцию у = —, которая об-

х

рабатывает 16-разрядные целые значения и возвращает 32-разрядный результат. Учитывая то, что значения функции по модулю будут меньше 1, будет логичным, чтобы для достижения максимальной точности реализуемая функция возвращала значения в формате 00.31.

Предположим, что создаваемая библиотека должна содержать функцию у = 1п(х), которая обрабатывает 32-разрядные целые значения и возвращает 32- разрядный результат. Учитывая то, что аргумент для данной функции - это положительное число больше нуля, лежащее в диапазоне [1, 2147483647], значения функции для данного диапазона аргумента будут лежать в пределах [0, 21.4875625969]. Чтобы представить целую часть значения, необходимо как минимум пять двоичных разрядов, оставшиеся разряды будут представлять дробную часть значения функции. Соответственно будет логичным, чтобы формат возвращаемого значения был <25.26.

Предположим, что создаваемая библиотека должна содержать функцию у = л/х , которая принимает 32-разрядные целые значения и возвращает 32-разрядный результат. Учитывая то, что аргумент для данной функции - это положительное число, лежащее в диапазоне [0, 2147483647], значения функции для данного диапазона аргумента будут лежать в пределах [0, 46340.950001052]. Учитывая, что для представления целой части всего диапазона значений, функции необходимо 16 двоичных разрядов, будет логичным, чтобы формат возвращаемого значения был ^16.15.

В приведенных выше примерах, форматы значений выбирались как компромисс между числом разрядов, необходимых для представления целой части всего возможного диапазона значений функции и достижения максимально возможной точности. Вполне возможно, что в силу спецификации разрабатываемой библиотеки и ограничений, накладываемых на диапазоны аргументов, разработчик библиотеки примет иную спецификацию форматов выходных значений. Учитывая разнообразие форматов значений для различных функций библиотеки и то, что есть вероятность вызова последовательности функций, стоит остановиться на том, как формат значения зависит от изменения формата входного аргумента. Поясним это снова на примерах элементарных функций.

Пусть реализована функция у = — , которая обрабатывает 16-разрядные целые значения с

х

формированием результата в формате <20.31. Если теперь рассмотреть аргумент как величину в дробном формате <20.15, то значение функции будет величиной в формате <216.15, что

равносильно умножению на 215. И вообще, если аргумент для данной реализованной функции - значение в произвольном формате Qk.ni, где к - число разрядов в целой части, а т —

число разрядов в дробной части и к + т = 15, то данная функция у = — возвратит 32-

х

разрядный результат в формате <2г.5, где ¿' = 31 -к - число разрядов в дробной части результата, а г = \6 + т - число разрядов в целой части результата.

Пусть реализована функция у = 1п(х) для 32-разрядных целых положительных данных формата <231.0. Если рассмотреть аргумент для данной функции как положительную величину формата <20.31, т. е. величину из диапазона ]0, 1[, то значение функции лежит в пределах ]-21.4875625969, 0[, т. е. выходная величина для данного формата аргумента будет смещена на 31-1п(2) и для получения значения функции, если аргумент рассматривается как значение в дробном формате, необходимо будет вычесть 31-1п(2) от значения функции, полученного для целого представления аргумента. Стоит отметить, что формат возвращаемого значения останется <25.26. Однако необходимо будет предусмотреть реализацию еще одной функции у = 1п(х) для дробного формата аргумента или библиотечная функция у = 1п(х)

Информационные технологии, автоматика, связь, телекоммуникации

должна быть модифицирована так, чтобы учитывать возможное изменение формата аргумента, путем передачи параметра о его формате.

Пусть реализована функция у = V* , которая принимает 32-разрядные целые значения и возвращает 32-разрядный результат. Если рассмотреть аргумент для данной функции как положительную величину формата <20.31, т. е. величину из диапазона [0, 1[, то значение функции лежит в пределах [0, 0.999999999767[. Формат выходной величины будет

также <20.31 и дополнительно это значение необходимо будет умножить на -\=. В этом

л/2

случае также потребуется предусмотреть еще одну реализацию функции у = у[х для

дробного формата аргумента или библиотечная функция у = 4х должна быть модифицирована так, чтобы учитывать возможное изменение формата аргумента путем передачи параметра о его формате.

Из приведенных выше примеров следует, что функции, для которых выполняется соотношение /(х-2") = 2к • /(х), где кип- это некоторые целые значения, меняют формат значения при смене формата аргумента. Для других функций, как показано в примерах 2 и 3 выше, если аргумент рассматривается в новом формате, то необходимо произвести дополнительные операции над возвращаемым значением. При этом формат возвращаемого значения может изменяться, а может и остаться прежним. Рассмотрим как еще один пример функцию у = ех, где аргумент х - 32-разрядная величина и значение функции также представлено 32-разрядным числом, и определим оптимальные форматы аргументов и значений. Максимально возможное значение аргумента, при котором значение функции составит 2147483647 -максимально возможную величину с учетом знакового разряда - является значение 21,4875625973, т. е. значение аргумента логично представить в формате 25-26. С другой

стороны, так как функция у = ех является обратной к функции у = 1п(х), то формат аргумента 05.26 и формат значения ОЪ1.0 для функции у = ех являются взаимообратными к соответствующим форматам функции 1/ = 1п(х) - <231.0 и <25.26. Если аргумент в формате <25.26 является отрицательной величиной, то логично потребовать, чтобы значение функции возвращалось в формате <20.31. Учитывая то, что если величина аргумента лежит в диапазоне [0, 1], может быть, потребуется ввести дополнительный формат для представления данных значений. Данный пример с функцией у = ех показывает, что в силу значительно меньшего диапазона значений для систем с фиксированной точкой по сравнению с системами с плавающей точкой охват возможно большего диапазона значений и максимально возможная точность - это вопрос компромисса. Стоит также отметить, что знание информации о форматах аргументов и значений функций поможет избежать введения операций сдвига для приведения значений к какому-то промежуточному формату при последовательном вызове различных функций библиотеки.

После определения форматов каждой из реализуемых функций, алгоритмов, по которым реализована каждая из функций, разработчик библиотеки определяет прототипы вызова каждой из функций и тип значения, который возвращает библиотечная функция. Как правило, в вызываемую функцию передаются указатели на входные и выходные массивы данных и ряд дополнительных параметров: к примеру, параметры управления форматами данных для входных и выходных значений. Использование массивов данных в качестве входных параметров позволяет сделать единственный вызов при итерационном вычислении функции и сэкономить время, которое будет затрачено каждый раз на выполнение команд для сохранения и восстановления контекста. Значение, которое возвращает библиотечная функция, может быть использовано для определения успешности вычисления или для характеристики разного рода исключений.

Исключительные ситуации могут быть следующего вида: аргумент находится за пределом диапазона входных данных, значение функции находится за пределом диапазона значений, определенных форматом выходных значений, аргумент является особой точкой, где значение функции не определено. В отличие от чисел с плавающей точкой, где стандартом определены значения, являющиеся величинами NaN, ± оо , в формате с фиксированной точкой приходится использовать максимальное положительное и минимальное отрицательное значения для представления данных значений.

В заключение стоит отметить, что архитектурные особенности конкретной платформы, для которой создается библиотека, также играют весьма важную роль. Правильный выбор условий в инструкциях условных переходов, если в процессоре используется статическое предсказание ветвлений, позволяет уменьшить накладные расходы в тактах процессора, которые характерны для данных команд. Выбор расположения программного модуля и сегмента данных при компиляции библиотеки может помочь избежать дополнительных тактов ожидания, требуемых процессору для обновления КЭШ памяти программ и памяти данных.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Список литературы

1. Хемминг, Р. В. Численные методы [Текст] / Р. В. Хемминг. - М.: Наука, 1972. - 398 с.

2. Muller, J-M. Elementary functions. Algorithms and implementation [Текст] / J-M. Muller. -Boston: Birkhuser, 1997. -218 c.

3. Бугров, Я. С. Высшая математика. Дифференциальные уравнения. Кратные интегралы. Ряды. Функции комплексного переменного [Текст] / Я. С. Бугров, С. М. Никольский -Ростов-на-Дону: Феникс, 1998. - 514 с.

4. Специальные математические функции и их аппроксимации: [Текст] / Под ред. К. И. Бабенко. - М.: Мир, 1980. - 256 с.

5. Фирсанов, К. А. Счетчики постоянного тока для систем учета электрической энергии на тягу поездов на основе процессоров цифровой обработки сигналов / К. А. Фирсанов, А. А. Хряков // Материалы науч.-техн. конф. СибАДИ / Сибирская автомобильна-дорожная академия. - Омск, 2008. - Кн. 2. - С. 190 - 196.

УДК 656.212.6.073.22

С. А. Егоров, Л. А. Гребенюк, С. Ю. Хорунжин

СОВЕРШЕНСТВОВАНИЕ МЕТОДИКИ РАСЧЕТА ЭЛЕМЕНТОВ КРЕПЛЕНИЯ В СТАТИЧЕСКИ НЕОПРЕДЕЛИМЫХ СХЕМАХ ЗАКРЕПЛЕНИЯ ЕДИНИЧНОГО ГРУЗА

Безопасность движения поездов и сохранность перевозимых грузов напрямую зависят от способа размещения и крепления грузов, поэтому совершенствование методики расчета крепления грузов является актуального прикладного задачей, имеющей сугцественное значение для транспортной науки и отрасли железнодорожного транспорта.

В соответствии со своей миссией ОАО «Российские железные дороги» позиционируется как вертикально интегрированная компания холдингового типа, обеспечивающая эффективное предоставление качественных транспортных услуг как на российском, так и на международном рынке. Достижение этой цели невозможно без обеспечения высокого уровня безопасности перевозок, являющегося гарантией сохранения устойчивых конкурентных преимуществ компании на транспортном рынке.

Безопасность движения поездов и сохранность грузов обеспечиваются не только содержанием в постоянной исправности всей инфраструктуры железнодорожного транспорта, но

i Надоели баннеры? Вы всегда можете отключить рекламу.