Блок арифметико-логического устройства для реализации умножения больших чисел

УДК 004.272.42

DOI 10.21685/2072-3059-2016-3-3

Р. Н. Федюнин

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

Аннотация.

Актуальность и цели. Способы реализации функциональных блоков, обработки чисел большой разрядности для специализированных арифметико-логических устройств (АЛУ) являются актуальным направлением исследования на протяжении последних 20 лет, о чем свидетельствуют разработки и множество статей по данной тематике. Необходимость в проектировании данных видов блоков возникает в результате того, что диапазон чисел, который используется в реальных задачах, порой доходит до нескольких сот и даже тысяч десятичных цифр. Такой диапазон чисел не соответствует базовым типам данных современных архитектур АЛУ и требует особого подхода при реализации АЛУ.

Материалы и методы. Исследование и реализация функциональных блоков АЛУ проведены на основе формализма теории недетерминированных автоматов с последующим функциональным моделированием блоков АЛУ в САПР ALTERA QUARTUS. В качестве основного алгоритма исследования и реализации блоков взят алгоритм умножения длинных чисел (алгоритм Карацубы).

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

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

Ключевые слова: soft-процессор, функциональный блок умножения, большие числа, алгоритм Карацубы, САПР Altera Quartus.

R N. Fedyunin

ARITHMETIC LOGIC MODULES FOR MULTIPLICATION OF LARGE NUMBERS

Abstract.

Background. Ways to implement functional units that process large numbers for specialized arithmetic and logic units (ALU) have been the actual direction of research over the past twenty years. The need for these types of design units arises from the fact that the range of numbers used in real applications is sometimes up to several hundreds and even thousands of decimal digits. This range of numbers does not correspond to the basic data types of modern ALU architectures.

Materials and methods. Research and implementation of ALU functional units were based on the formalism of the theory of nondeterministic automata, followed

by functional simulation of ALU functional units in the ALTERA QUARTUS CAD. The authors used the algorithm of long numbers multiplication (the Karatsuba algorithm) as the main algorithm of research and unit implementation.

Results. The researcher described the soft-processor in detail, on the basis of which the functioning of the large numbers multiplication unit was planned. The author obtained a model of the large numbers multiplication unit, based on the theory of non-deterministic automata. The article suggests a system of canonical equations based on the mathematical model of the multiplication algorithm. The researcher has designed a circuit of the functional multiplication unit with subsequent modeling in the Altera Quartus CAD.

Conclusions. The article suggests a method of implementation of functional units for large numbers multiplication. The theory of nondeterministic automata was used implement the function multiplication unit model. The author mathematically described and then functionally designed the multiplication device at the soft-processor level.

Key words: soft-processor, function multiplication unit, large numbers, Karatsuba algorithm, Altera Quartus CAD.

Введение

Одним из эффективных путей, позволяющих сократить сроки и снизить стоимость разработки системы на кристалле (СнК), является применение в процессе проектирования встраиваемых soft-процессоров (рис. 1).

Входные данные Прерывание

Рис. 1. Обобщенная структура стандартного soft-процессора

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

Преимущество готовых блоков заключается в том, что при их использовании проектировщик не тратит время и средства на разработку и верификацию. Для решения ряда задач можно использовать библиотеки функциональных блоков, предлагаемые различными компаниями по «открытой» лицензии (например, GNU General Public License - открытое лицензионное соглашение GNU). Для дальнейшего коммерческого применения полученных результатов обычно требуется приобрести соответствующую лицензию у разработчика библиотеки.

В статье рассматривается способ проектирования функционального блока для реализации умножения больших чисел и интеграция его в soft-про-цессор, основанный на soft-ядрах сторонних разработчиков [1].

<Q

3'

П> П> ч

3' <0 (л О Гй'

о ГЬ 1л

3 -о

С

1л О П>'

о ^

о о

3

Q С

Гй «Э

3'

05 П>

3' <о

D О.

О

О 3

ш

16

Входные данные IN_PORT\7:0]

16

Блок регистров общего назначения 16 регистров X 8 разрядов

А s7

В 56

С sS

D S4

Е 53

F s2

G si

Н s0

10

Адрес команды ADDRFJJ[9:0]

CLK

Л

Память программ 1024x19 бит

Шина команд

10

У

Сброс_ RESET'

Блок дешифрации команд

Блок управления оводом/выводом

16

Адрес порта ввода/вывода Р0йг_(0[7:0] READ_STROBE WRITE_STROBE

Выходные данные OUT_PORT\1SO\

Тактовый сигнал Прерывание INTERRUPT INTERRUPT АСК

Схема управления прерываниями

Стек1 для специализированного АЛУ

-ч—

Стек2 для специализированного АЛУ

Регистр статуса

10

—

Регистр фиксации флагов при прерываниях

Блок управления

выбором следующего адреса

Программный счётчик

Стек

Рис. 2. Архитектура модуля стандартного soft-процессора

1б Ои

Uj -!£ No

о

СП

1

С •с

П) о

з; С

го t Q

С

•8-о

С §

Q

3 с з;

„Q

CD а

2 С

2 с

3 §

а t

0 Si

3

1

с *

Q

Функциональный блок умножения больших чисел (устройство умножения арифметико-логического устройства (АЛУ) - рис. 2) выполнен на основе алгоритма Карацубы [2]. Данный алгоритм поддерживает эффективную работу с числами в диапазоне от 1024 до 4096 разрядов [2].

1. Формальное описание функционального блока умножения с помощью теории недетерминированных автоматов

На основании исследований, представленных в [3-5], составляется математическая модель функционального блока умножения (рис. 3).

События (рис. 3) представляют собой состояния недетерминированного автомата в i единицу времени: Sp - сравнение с порогом;

Smux - простое умножение; Sr - разбиение на две части; Sa - число а, равное левой половине числа А; Sb - число Ъ, равное правой половине числа А; Sc - число с, равное левой половине числа В; Sd - число d, равное правой половине числа В; ^ - сумма чисел а и Ъ; Ss2 - сумма чисел с и d;

Sт 1 - находим Т, которое равно половине от разрядности входных чисел; ус1 - управляющий сигнал 1; ус2 - управляющий сигнал 2;

кон - сигнал об окончании промежуточного умножения; Sсч - считывание значений А и В; Sg.p1 - стек 1; Sст 2 - стек 2;

Sтк - считанное значение из стека 1 является числом;

SкOд - считанное значение из стека 1 является значением КОД;

51 - первое значение сверху в стеке 2;

52 - второе значение сверху в стеке 2;

53 - третье значение сверху в стеке 2;

54 - вычитание из S2 Значения S3; Sfc - вычисление значения к;

Sсд - сдвиг влево на Sт1 разрядов; Sм - суммирование со значением S1;

Smx - суммирование - значение умножения для чисел, которые меньше порога;

с1... с6 - сигналы для соблюдения последовательности действий при промежуточном умножении;

SсOх - сохранение результата в стеке 2; Ответ - вывод ответа.

ус1Лус2Л5сч

Рис. 3. Математическая модель функционального блока умножения больших чисел

Для последующей программной и схемотехнической реализации функционального блока умножения в рамках 80Й-процессора на основе описанных состояний и рис. 3 составим систему канонических уравнений алгоритма умножения больших чисел:

(V + 1) = (А а В) V ^ст1 а (ус 1 а ус2 а ), Sr(V +1) = Sp, +1) = Sr а (Sa V Sb), Sя2^ +1) = Sr а(Sc V Sd),

^^тих ( ^ 1) = Sр ,

^т^ + 1) = (Sr а V (а • (Ус1 а Ус2) V ^"ст2 а ("^гк а Ус2 а Зсод) > ^"ст2 ({ + 1) = <^1 а (("^тк V <$код ) а кон) V (^х а ^их ) а (Ус1 а кон) V "^ст2 а

а(¿код V ¿"тк V Ус1) V S ст2 а(<$код V тк V Sсох ) , Sp (V + 1) = Sст2 а (S2 а Sз а Ус1) , Sk (V + 1) = Sp а с1 V Sст2 а (^ V Ус1) , Sсд (V + 1) = (Sk а с2 V Sсt2 а (Sз V ус1) V Sсд а с4) а Sсtl а (Sml V УС1), , £т (V + 1) = Sсд а с2 а Sст2 а Sl а Ус1, Engineering sciences. Computer science, computer engineering and 33

^ ^ + 1) = ^ а с5 л "^д л с6,

Ответ(t + 1) = Sст2 а кон.

2. Схемотехническое описание функционального блока умножения

Формальное математическое описание и материал [6] позволяют реализовать следующую схему функционального блока умножения (рис. 4).

Рис. 4. Схемотехническая реализация функционального блока умножения

Устройство (рис. 4) работает следующим образом: исходные данные А и В подаются на информационные входы блока 1, где данные сравниваются с пороговым значением Р (порог задается исходя из потребностей реализации) и если они превышают его, то A и B передаются в блок 2, иначе данные коммутируются в блок 13, где обрабатываются по правилам чисел с малой разрядностью (рис. 5). В блоке 2 данные разбиваются на части: A разбивается на a и Ь, B разбивается на c и d (рис. 6). После чего определяется разрядность полученных промежуточных значений: a, Ь, c, d. Далее полученные промежуточные результаты блока 2 Ь, c, с1) поступают в блок 3. В блоке 3 производится сложение поступивших данных по формулам: A1 = a + Ь , B1 = c + d (рис. 7). Далее данные поступают в блок 4, где в зависимости от значений управляющих сигналов происходит работа с запоминающим устройством.

Поступившие промежуточные результаты обрабатываются блоком 5 по формуле С1 = A1 • B1 - a • c . Далее данные передаются в блок 6, где происходит их сдвиг на половину значащих разрядов большего числа. В блоке 7 происходит повторный сдвиг полученного в блоке 6 числа (рис. 8).

Затем в блоке 8 происходит вычисление по формуле С1 = С1 - Ь • d . Далее в блоке 9 происходит сдвиг числа, полученного в блоке 8, на половину значащих разрядов большего числа. В следующем блоке 10 происходит вычисление по формуле C2 = a • c • T + Ь • d . Результаты, вычисленные в предыдущих блоках (С1 и С2), суммируются в блоке 11 и на выходе получается конечный результат.

lin Npo Uii Hjlr> ttfn iMOr» Т»йг> 1450™ 160,

Исходные числа —"s

#4 lisol i Jl 1 i Л ) iM 1

1*1 1.ы1 A.'.' -JÎ""ÏÎ~Ï ШО GO

4»]

» 1 1

а* ? fiîffl

•t № fïïïTl

it! (.«J

b.all -: ЬЯОШ  ;.

e.all ю ШШШШ^ШШ'ШШШМШШШШ:

t>v

1*4 m

1*15 Ы пяп

1*15 el f-ЛОК i i 19 1

1*1. A i m i

1*1! T* ................

1*19 •_«l)

i> К E.eO :v:v:vvv:v ю

Oil

tfS ЖФЙКЭЗЗЙИМОЮК««^^

ifS b.ej) WÎSRÎSfiSiiÎîfîîÎiC^

ОЯ d.eil ¡йййййййййййййййй^ * i )йййййййййй5ййййййййЖйй&1ййй^^

lii t.aJJ

l*X кГ

» к »

1*л Ы4

1*л M Г1П

1*» И ГЙП

1*31 tJ ГТП

1*3.' riôn

1*13 с <Я

i*W M ьлок rn

Ф» л rïôTi

l*x

1*1' rc2.' m n~s

UJ ic1_»H

4»» pri.sJl 4.Ы1 Щ|<

±t lilt

u«

t_ijltl ffiSïSSSSSSSSSSSSSK^^

1>" Ь_Я11

t»« iïySyïïïy:^^

tit! .4 1] 1JJ1 (Jjui

lie

M «1

I* к: nr 1

1*11 «H 1 i

i*U Ijll

l*u CjiU t,eH 1 mm

«M ГШ

1*И пп

Рис. 6. Временные диаграммы работы функционального блока умножения больших чисел

Nm Ьца »pftt Wp« SSOns ИВ.Оч 40,0ч Ч0РЛ1 Щ

1*211 Стек 1 1 1 ^ ( 1 1

A Olli

t>'ji a.Äiu

I* И

t+a ABl 5 Стек 2 ГШ ш1г1

ÖMl ali Г-Г-1 Г"1—1

LßÜ Uli йШЩШ-йШШШИШ»: шшшшштшт

и S3 fli.bcjits > 15 itjwiS

шшштшшштт

KS

и- Р >Ьсй

WS

iS

uiTC um! жжшжжшжжжжшжж шшшшшш

ФТ> l_«5

ti>71 5 - иХянхюШ

и cji.

•Ot

It

U>7S К

L*tt нашшшшшшют

1*71 К?

l^T? Ii БЛОК 7

oea ШШШШк

tKSl 1 «a' ШШШШШШШШШШШШШШМШШШШШЖ

~к!-

tf-SJ It

irsi Блок й-

tfk id !_orf<J M.OJ3

t>U

m кгз

кэ

IS ьлок а

HID

Mia

m Kill

t»* K^DID

Mil

№1D1 AB11 in; 1 im)

lp 10? dtt Блок 12

li-103 а .cut 12 iB_cnt 12 licll?

t*10i

106 лза

115 ПП j

»109 BI3 ( ГЗоП j

ii HD 413

Рис. 7. Временные диаграммы работы функционального блока умножения больших чисел

3. Реализация разработанного устройства в САПР ALTERA QUARTUS

Выбор ALTERA QUARTUS 12.0 связан с тем, что САПР обеспечивает минимальное время компиляции [7], что позволяет разработчикам сосредоточиться на вопросах внедрения инноваций в конечное решение и оптимизации процесса разработки. По сравнению с аналогичными продуктами при использовании данного САПР пользователи серии ПЛИС для работы с soft-ядрами могут достичь сокращения времени компиляции проекта на 35 %, что важно

при реализации масштабных проектов (реализация параллельных и распределенных сред, многомерные систолические структуры и т.д.).

Рис. 8. Временные диаграммы работы функционального блока умножения больших чисел

В результате реализация вышеописанного функционального блока была произведена с использованием САПР ALTERA Quartus. Корректность работы разработанного устройства проверена имитационным макетированием

блока умножения с помощью временных диаграмм (рис. 9). Исходные данные: А=1100, В=1011, порог равен 2.

Рис. 9. Временные диаграммы работы функционального блока умножения больших чисел

Заключение

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

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

1. URL: https://www.altera.com/

2. Карацуба, Е. А. Быстрые алгоритмы и метод БВЕ / Е. А. Карацуба. - М. : Ви-льямс, 2008. - 341 с.

3. Вашкевич, Н. П. Недетерминированные автоматы в проектировании систем параллельной обработки : учеб. пособие / Н. П. Вашкевич. - Пенза : Изд-во ПГУ, 2004. - 280 с.

4. Вашкевич, Н. П. Формальное описание алгоритма управления взаимодействующими параллельными процессами в задаче «производители-потребители» с использованием кольцевого согласующего буфера / Н. П. Вашкевич, Р. А. Бик-ташев, А. А. Тараканов // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2007. - № 4. - С. 98-106.

5. Федюнин, Р. Н. Функциональные блоки АЛУ для конвейерно-параллельной обработки информации на базе однородных вычислительных структур / Р. Н. Федюнин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2007. - № 2. - С. 32-41.

6. Федюнин, Р. Н. Способ реализации аппаратного слоя VLIW архитектуры на базе систолических структур / Р. Н. Федюнин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2013. - № 2 (26). - С. 15-22.

References

1. Available at: https://www.altera.com/

2. Karatsuba E. A. Bystrye algoritmy i metodBVE [Fast algorithms and the FEE method]. Moscow: Vil'yams, 2008, 341 p.

3. Vashkevich N. P. Nedeterminirovannye avtomaty v proektirovanii sistem parallel'noy obrabotki: ucheb. posobie [Non-deterministic automata in parallel processing system design]. Penza: Izd-vo PGU, 2004, 280 p.

4. Vashkevich N. P., Biktashev R. A., Tarakanov A. A. Izvestiya vysshikh uchebnykh zavedeniy. Povolzhskiy region. Tekhnicheskie nauki [University proceedings. Volga region. Engineering sciences]. 2007, no. 4, pp. 98-106.

5. Fedyunin R. N. Izvestiya vysshikh uchebnykh zavedeniy. Povolzhskiy region. Tekhnicheskie nauki [University proceedings. Volga region. Engineering sciences]. 2007, no. 2, pp. 32-41.

6. Fedyunin R. N. Izvestiya vysshikh uchebnykh zavedeniy. Povolzhskiy region. Tekhnicheskie nauki [University proceedings. Volga region. Engineering sciences]. 2013, no. 2 (26), pp. 15-22.

Федюнин Роман Николаевич

кандидат технических наук, доцент, кафедра вычислительной техники, Пензенский государственный университет

E-mail: frn_penza@mail.ru

Fedyunin Roman Nikolaevich Candidate of engineering sciences, associate professor, sub-department of computer engineering, Penza State University

УДК 004.272.42 Федюнин, Р. Н.

Блок арифметико-логического устройства для реализации умножения больших чисел / Р. Н. Федюнин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2016. - № 3 (39). - С. 29-40. Б01 10.21685/2072-3059-2016-3-3