Каждый этап выполнения выполняется за n шагов и представляет собой процесс, состоящий в последовательности: ui=f(ui-1). Обозначив разность между двумя соседними членами последовательности - шаг итерации. Каждая итерация первого этапа состоит в определении значения оператора ξi на основании знака δi. На каждой итерации второго этапа определяется очередной член последовательности ui, сходящийся к вычисляемой функции.
Для проведения двух указанных этапов необходимо выполнение двух типов операции: алгебраического сложения и сдвига [1,2].
При рассмотрении рекуррентных соотношений вычисления функции EXP(x), введём следующие обозначения:
где Q0,X0 - начальные значения итерационных последовательностей.
В случае синхронной организации i=ent(k/a)+1 k=0,1,2,...m , m=n*a.
Начальные значения Q0 = X, X0 = 1.
Конечные значения Qкон = 0, Xкон = EXP(x). а - основание системы счисления (2). разрядность операндов (16) [1].
В связи с тем, что разрядная сетка процессора – 16 разрядов с фиксированной запятой: то выберем под целую часть 4 бита, а под дробную часть – 12 разрядов.
Формат представления числа с фиксированной запятой
В начале вычисления функции EXP(x) устанавливаются значения Q0 = X,
X0 = 1, k=0 (рис.1, блок 1). Величина i меняется через каждые две итерации (блок 2). Предварительно определяется сдвинутое вправо на i разрядов значение переменной XK (блок 3), которое затем используется в операциях сложения-вычитания (блоки 5,6), которыми управляет знак переменной Qk. Также знак Q управляет выборкой константы Сi, вычитаемой из Qk для получения новой Qk+1. Переменная Qk увеличивается на константу Сi (блок 7). При i=n, т.е. после выполнения 2n итераций, значение X2n содержит EXP(x). Другая переменная Q2n=0. Затем идёт проверка на окончание (блок 8), и в случае продолжения производим следующую итерацию с наращиванием счётчика итераций (блок 9) [1].
Блок схема алгоритма.
Вычисление функции exp(x) начинается с установки начальных значений: в SM1 и RG1 засылается аргумент X, в SM2 – единица, в сумматор результата SM3 - нуль. В счетчик символов CT1 записывается n. Затем производится вычисление величины 1 – Х и запись ее в SM2 микрооперацией А7. В счетчик CT4 записывается основание системы счисления α. Затем двумя микрооперациями А9 и А10 производится занесение числа i в счетчик CT3 для выполнения сдвигов. Микрооперации А11 и А12 совместно с логическим условием Р1 обеспечивают вычисление значения и запись его в RG1. После анализа знака yk, находящегося в SM2, производится счет по рекуррентным соотношениям
, с помощью микроопераций А13, А17 и А16, А17, А18. При этом, если знак SM2 – положительный, то содержание счетчика CT2 соответствует константе вида log(1+α-i), а при отрицательном знакеSM2 из содержимого CT2 предварительно вычитается единица (А14) для получения нечетного адреса, соответствующего константе log(1-α-i). Затем для восстановления содержимого CT2 выполняется микрооперация А19. После этого производится пересылка нового значения Xk+1 в RG1 и вычитание единицы из счетчика CT4. После выполнения α итераций содержимое CT4 становится равным нулю и выполняется переход к новому значению i, при этом содержимое CT2 увеличивается на два, что соответствует переходу к следующей паре констант log(1±α-(i+1)), а из счетчика циклов CT1 вычитается единица. Итерационный процесс заканчивается после достижения i значения n.
На основе регистрового устройства и по приведенному выше алгоритму составим регистровую блок-схему для вычисления функции EXP(x).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.