УПРАВЛЕНИЕ, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И ИНФОРМАТИКА
УДК 681.326:518.5
НЕАНАЛИТИЧЕСКИЕ МЕТОДЫ ВЫЧИСЛЕНИЙ ДЛЯ МИКРОПРОЦЕССОРОВ
© 2014 г. И.Н. Булатникова, Н.Н. Гершунина, А.Э. Гершунин
Булатникова Инга Николаевна - канд. техн. наук, доцент, кафедра «Прикладная математика», Кубанский государственный технологический университет.
Гершунина Наталья Николаевна - канд. техн. наук, доцент, кафедра «Начертательная геометрия и компьютерная графика», Кубанский государственный технологический университет.
Гершунин Аркадий Эдуардович - соискатель, Кубанский государственный технологический университет.
Bulatnikova Inga Nikolaevna - Candidate of Technical Sciences, assistant professor, department «Applied Mathematics», Kuban State Technological University.
Gershunina Natalia Nikolaevna - Candidate of Technical Sciences, assistant professor, department «Descriptive Geometry and Computer Graphics», Kuban State Technological University.
Gershunin Arkady Eduardovich - applicant, Kuban State Technological University.
Рассмотрены неаналитические методы вычислений функциональных зависимостей для реализации на микропроцессорах. Произведена модификация основных разностно-итерационных алгоритмов для расширения их применимости в микропроцессорных устройствах локальной автоматики.
Ключевые слова: микропроцессоры; быстродействующие алгоритмы; устройства локальной автоматики.
Considered non-analytic methods for computing the functional relationships of the microprocessor. Modification made major difference-iterative algorithms to extend their applicability to local automation microprocessor devices
Keywords: microprocessors; fast algorithms; devices of local automation.
Широкое внедрение микропроцессорной техники потребовало особого алгоритмического и программного обеспечения, имеющего быстродействие под-стать аппаратному быстродействию самих микропроцессоров (МП). Дело в том, что в феномене МП резко обострились противоречия между истинным характером обработки информации и антропогенностью ее алгоримов.
Ранее все ЭВМ считали по аналитическому выражению реализуемой функции преобразования информации, т.е. повторяли расчеты по формулам, написанным человеком. Отсюда обязательность наличия операций (+, -, х, V). Но это не соответствовало идеологии МП (максимум быстродействия при минимуме аппаратных затрат).
Уже в 60-х гг. прошлого столетия появились первые быстродействующие алгоритмы неаналитических вычислений, сокращавших аппаратурные затраты.
Это алгоритмы Волдера [1] и Меджита [2], имевшие в русскоязычной технической литературе название «шаг за шагом» (от англ. step by step).
У них было исключительно аппаратурное применение - в быстродействующих спецвычислителях (навигация, ракетное дело и др.)
При всех преимуществах они имели ограниченный класс функций, реализуемых ими. Их развитие не
происходило из-за сложности технической (аппаратурной) реализации.
Будучи по сути разностно-итерационными алгоритмами (РИА), они требовали создания методологии проектирования новых функций. Один из авторов подобных РИА А.М. Оранский отмечает: «Теория РИА разработана недостаточно, и синтез алгоритмов идет эвристическим путем» [3, с. 143].
В основе РИА лежат методы цифрового моделирования какого-либо математического или геометрического объекта (вращающийся вектор, как в [1, 2], или итерационный сходящийся процесс, конечным результатом которого будет искомая функция [3]).
Методы псевдоповоротов вектора
Это частный случай алгоритмов Волдера [1] и Меджита [2]. В их основе заложена такая замечательная особенность: два комплексных числа вида (а + ]Ъ), (1 + j2~') легко могут быть перемножены с применением только линейных операторов, так как умножения на 2_г заменяются арифметическими сдвигами
(а + jЪ)(1 + j2-i) = (а + Ъ2-') + j(Ъ + а2~г). (1)
Но процедуру (1) можно представить так: вектор (а, Ь) поворачивается на угол +агС£21_г и дополни-
тельно удлиняется в >/!+ 22 2 раз, где I - номер итерации.
Организовав слежение за текущим углом поворота вектора, можно получить координаты его конца, пропорциональные косинусу и синусу этого угла. И, наоборот, следя за достижением проекций конца вектора на оси определенного значения х, можем получить угол, равный аггаш х или arccos х.
Вот этот алгоритм:
5.--1 = sign^-i =
1+1, если Y.-1 > 0;
[-1, если Y.-1 < 0;
Y = У, Y. = Y.-i -|.-i2-(.-1)X.-1, Yn ^ 0; Xo = x, X. = X.-1 +|.-i2-(.-1)Y-i, Xn ^ kyjx2 + y2
(2)
0o = 0, 9. =9.-1 +^.-iarctg2-(.-1), 9n ^ arctg^
ГУ
qг _1 = signЩ._1signy;
Щ = -, Щ = W1_1 _ qг_121_г' у, ^ 0; (4)
1 . — Vo = V, V- = + 21 х, Vm ^ V + - х,
У
где - = 1, 2, ...п - номер итерации.
Хотя он и называется самым простым, но его основные компоненты (строчки с итерационными выражениями) входят во многие другие более сложные РИА. Например, первая и вторая строки играют роль аддитивного разложения отношения у.
- = ¿1.12».
У .=1
Оно, в свою очередь, служит основой для последующих итерационных выражений, обеспечивающих разнообразные функции.
Известен и другой - мультипликативный вид разложения у (при — > у > 0):
где i = 1, 2,...и - номер итерации; n - разрядность
n—1
n-1 I-
чисел; k = Пл/1 + 2
q. =■
1+1, если Wi > yi; (О, если Wi <yi;
Нами разработана модификация РИА (2) для реализации на МП. За основу взят более точный алгоритм Меджита, а второй этап позаимствован из алгоритма Волдера. Получен более точный и быстрый РИА:
= signY = •
+1, если Yi > 0; —1, если Yi < 0;
Щ = 2(— _у), Щ.+1 = 2(Щ. _ Чгу); 7о = у, Ум = У. + Чг 2-гУг,
где - = 0, 1, 2, ..., п - номер итерации, п - разрядность чисел.
В итоге получаем разложение —/ у в виде
Y0 = У, Y.+1 = 2(Y -I.X.), Ym ^ 0;
X 0 = x, X.+1 = X. 2~Ъ Y , Xm ^ kjx2 + У2
(3)
00 = 0, ег+1 =ег + ^аг^2_г, 9т ^arctgу,
х
где - = 0, 1, 2, ...т - номер итерации, т - половинная разрядность т = (п +1)/2.
Обращаем внимание на то, что число итераций сокращено вдвое. При всех достоинствах РИА (2) и (3) они имеют недостаток - необходимость группы констант ат^21_г и наличие «вредного» коэффициента k.
Простой разностно-итерационный алгоритм
w "
- = п (1 + 2—г )qi,
У i=1
которое используется в последующих итерационных выражениях, обеспечивающих различные функциональные преобразования (возведение в натуральную степень отношения w/y, взятие логарифма log a (w/y) и др.
Алгоритм Оранского и Рейхенберга
Он был изобретен [4] для аппаратной реализации (для х > 0, y > 0):
q. - = sign(X.-! - Y. -1) =
[+1, если Xi—! > Y—1; [—1, если Хг — 1 < Y—1;
Он называется РИА квазиделения без восстановления остатка и квазиумножения [3]. В слегка модернизированном нами (для расширения области сходимости) он имеет такой вид:
2 2
X0 = x, X. = X.-! - q.-1 У2-., Xn ^ ; (5)
x + У
Y0 = У, Y. = Y.-1 -q.-1x2-., Yn ^Xn,
г =0
где i = 1, 2, ..., п - номер итерации, п - разрядность чисел.
РИА (5) имеет ограниченную возможность, он
2 . 2 X + у
вычисляет одну единственную функцию - от
X + у
двух переменных.
С целью расширения области применения РИА (5) нами было произведено исследование его математической модели и на этой основе - модификация:
Чг-1 = ^п(Хг-1 - Yi_1 ^^(И + М>У;
j+ 1 xu + yw
Xо = X, Xj = Xt_i _ qj_xw2 , Xn ^-; (6)
u + w
Yo = у, ^ = Yг_ - Чг_и2-г+1, Yn ^ Х„,
где г = 1, 2, ..., п - номер итерации, п - разрядность чисел.
Условие сходимости этого РИА (6) таково:
|(х -у)/(и + м)\ < 2р+1,
где р (р > 0) - минимальное целое число, обеспечивающее выполнение неравенства
2|и2р + м2р| > |х - у|.
Величина, вычисляемая с помощью РИА (6), является средневзвешенной величиной двух величин х и у, взятых с весами и и м соответственно. То есть это уже функция четырех переменных.
Расширение областей применения РИА
Оно состоит в замене исходных значений итерируемых величин некоторыми функциями одного (двух) аргументов, которые сами просто вычисляются (т. е. без операций умножения и деления). Другими словами, переходом к сложным функциям (суперпозициям функций) РИА значительно расширяют класс реализуемых функций.
Например, простой РИА (4) сможет вычислить не только Vn = F(у, м, у, х) = V + (м/у)х, но и такую, на-
Ф^, t) =
пример, функцию Ф^, t) =
s 2 + s - 2st +12 s +1
. Деля ее
s 2 + s - 2st +12 s +1
Еще большие возможности расширения класса реализуемых функций возникают, если исходные значения всех или некоторых итерируемых величин представить функциями одного аргумента t.
Приведем пример таких преобразований для модифицированного РИА (6). Представим х, у, и, м> так:
x = kxt + mx, w = kwt + mw,
У = kyt + my , u = kut + mu .
(7)
Тогда
Yn = Xn =
At2 + Bt + C Dt + E '
(8)
где
числитель на знаменатель (как многочлен на многочлен - «уголком»), получаем нужное представление для РИА (4)
45 +1
F (5,0 = (5 + t + 1)--t.
5 +1
Заменяя V = 5 +1 +1, V = -(45 +1), у = 5 +1, х = t и подставляя их в качестве исходных данных для РИА (4), в итоге получаем сложную функцию
А = kхku + kykw, ^ = ku + К, Е = ти + тм, 5 = kхmu + ^тх + kymw + ^ту , С = тхти + ШуШ^ .
Для того чтобы упростить предварительное вычисление х, у, и, м для заданного t, выберем ^ (г е {х, у, и, м'}), равными 0; +1; + 0,5; + 0,25;... и т.д. Это позволяет заменить умножение ^ арифметическим сдвигом вправо аргумента t с возможностью инвертирования знака результата, если ^ < 0.
Если же требуется решить обратную задачу: назначить такие ^ и тг (г е {х,у,и, м}), чтобы Хп = Yn были равны требуемой функции F (t) на заданном промежутке / е [а, Р], - то находим одну из аппроксимаций F(t) в виде (8), т.е. соответствующий набор А, В, С, D, Е. Опираясь на них, составляем и решаем избыточную, но с ограничениями систему уравнений:
kхku + kykw = УА;
Кт + Кт + kymw + Кту = ув;
тхти + тутм = Ус; (9)
К + К = уД
ти + тм = УE,
где у - технологический коэффициент, сокращающий дробь (8) до значений, удобных для решения системы
(9).
Нами [5] разработан алгоритм и программы решения системы (9) на персональном компьютере с получением ^ и (г е {х, у, и, м}).
Например, для f (t) = tgt, t е [0, ^] имеем такой набор коэффициентов ^ и (г е {х,у,и, м}), который позволяет вычислить функцию F(t) (8), максимально приближенную к tg(t) на указанном интервале.
kx = 1, ky =-1,
mx = 0,041332,
тУ = 1,000000,
ku = 1,
К = 1/8,
= -1,502386, = 0,060741.
m
m
В таблице приведены абсолютные погрешности вычисления функции tgt, t е [0, ] в нескольких точках по РИА (6).
Ограниченная точность предлагаемых РИА и их модификаций (обеспечивают точность в пределах 10 + 12 двоичных разрядов) не препятствует их использованию в микропроцессорных системах локальной автоматики. Микропроцессоры оперируют со входными данными от 10 - 12-разрядных аналого-цифровых преобразователей и выдают такой же точности выходные данные на цифроаналоговые преобразователи и исполнительные органы управления.
Абсолютная погрешность х103
t, рад 0 0,08 0,16 0,24 0,32 0,44 0,56 0,68 0,78
tg t 0,944 0,873 0,731 0,345 0,223 0,452 0,510 0,310 0,259
Литература
Заметим, что в погрешность по таблице фактически вошла и погрешность аппроксимации.
Преимущества микропроцессорной реализации функций по РИА (6) с заменой переменных по формулам (7) состоит в том, что подпрограмма вычислений различных функций одна и та же. Меняются только коэффициенты ^ и т-1 (/ е {х,у,и, —}). Кроме того,
этот путь позволяет реализовать не только аналитически, но и таблично заданные функции.
В нашей работе [5] также разработаны алгоритмы и программы вычисления коэффициентов для функций, заданных таблично (например, экспериментально снятых зависимостей).
Поступила в редакцию
1. Volger J.E. The CORDIC trigonometric computing // The Trans. On Electronic Comp / 1969. Vol. 8, № 3. Р. 330-340.
2. Meggitt J.E. Pseudodivision and pseudomultiplication processes // IBM J. Res. and Develop. 1962. Vol. 6, № 2. P. 220 - 226.
3. Оранский А.М. Аппаратные методы в цифровой вычислительной технике. Минск, 1977. 208 с.
4. А.с. 744595 СССР, МКИ2 G06 F7/34 Цифровой функциональный преобразователь /А.М. Оранский, А.Л. Рейхен-берг. Опубл. 30.06.80 г., Бюл. № 24.
5. Булатникова И.Н., Частиков А.П. Математическое обеспечение автоматизированного рабочего места разработчика алгоритмов для микропроцессорных систем управления // Изв. вузов. Сев.-Кавк. регион. Техн. науки. 1999. № 1. С. 33 - 35.
10 декабря 2013 г.