УДК 681.324 Кутузов В.В.
Пензенский государственный университет
РЕАЛИЗАЦИЯ И СРАВНЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ ВЫСОКОСКОРОСТНЫХ СПОСОБОВ ПЕРЕДАЧИ СООБЩЕНИЙ
В МНОГОПРОЦЕССОРНЫХ СИСТЕМАХ
Аннотация. Рассматривается методика проектирования устройств аппаратной поддержки обмена сообщениями в многопроцессорных системах с использованием механизма монитора, кольцевого буфера и типовой задачи «производители-потребители». Методика основана на использовании логики событийных недетерминированных автоматов. Приводятся результаты интеграции блока аппаратного ускорения межпроцессорного обмена в многопроцессорную систему и сравнение его производительности с разделяемой памятью
Ключевые слова. Многопроцессорная система, недетерминированный автомат, канал FIFO, разделяемая память, процессорное ядро PicoBlaze, межпроцессорный обмен.
В современных многопроцессорных и распределенных системах применяется множество различных методов обмена между взаимодействующими процессами. Это и каналы FIFO, разделяемая память, почтовые ящики и др. Традиционно в операционных системах все эти методы реализуются программно, что обеспечивает высокую степень универсальности, но создает высокие временные задержки, связанные в первую очередь с выполнением системных вызовов функций синхронизации, что особо критично для систем реального времени. Для снижения накладных расходов предложен метод аппаратной поддержки механизма очередей сообщений для межпроцессного обмена.
Проектирование средств аппаратной поддержки является сложной технической задачей и требует разработки верифицированных алгоритмов управления передачей сообщений, поэтому при разработке блока использовался аппарат событийных недетерминированных автоматов (СНДА) [2], обеспечивающий как формальное описание, так и структурную реализацию механизмов синхронизации при доступе к общему (критическому) ресурсу.
Для решения задач управления взаимодействующими параллельными процессами используют различные механизмы синхронизации процессов, в том числе и механизм монитора, который был впервые предложен Хоаром и Бринчем Хансеном для организации синхронизации процессов при обращении к общим критическим ресурсам. В данной работе рассматривается методика формального описания алгоритма управления взаимодействующими параллельными процессами при обмене сообщениями с использованием механизма мониторов и кольцевого буфера в качестве общего критического ресурса. С помощью языка СНДА описываются все реализуемые в алгоритме частные события, что позволяет представить алгоритм управления в простой и компактной форме, т.к. описание алгоритма выполняется не в терминах состояний детерминированных автоматов (ДА), а в терминах частных событий
[3]. Такое представление алгоритма управления позволяет просто трансформировать его в языки моделирования аппаратуры, а также верификации реализации на этих моделях [4].
Для проведения экспериментов был разработан специальный блок, реализующий несколько раздельных каналов организованных по принципу FIFO. Каждый канал доступен для любого вычислительного ядра системы, как на запись, так и на чтение. Для того чтобы предотвратить конфликты при доступе к одному и тому же каналу разными процессорами используется механизм мониторов, реализованный недетерминированным автоматом. Блок соединяется с системой посредством интерфейсного модуля, который может быть изменен в зависимости от используемой в системе шины.
Общая структурная схема аппаратного блока FIFO представлена на Рисунке 1.
Рисунок 1 - структурная схема аппаратного блока FIFO
Как показано на схеме блок обладает определенной масштабируемостью. В зависимости от конфигурации системы можно изменять ширину шины данных, количество каналов FIFO и их глубину (емкость).
Для проведения сравнительного тестирования разработанный блок был подключен к системе, состоящей из трех простых восьмибитных ядер PicoBlaze с отдельной памятью программ на каждое
ядро и блоком разделяемой памяти. У каждого процессора в системе своя роль, заданная его программой. Два ядра эмитируют обработку внешней информации, например от каких-либо датчиков. Эта информация записывается в одном случае в разделяемую память в другом в блок FIFO, после чего третье ядро считывает эти данные и производит финальную обработку. Общая схема системы представлена на Рисунке 2.
Рисунок 2 - Схема моделируемой системы
Блок FIFO и модуль разделяемой памяти подключены к блоку коммутации. Этот блок выполняет, во-первых, функцию коммутации нужного процессора с одним из устройств, подключенных к коммутатору и, во-вторых, функцию системного арбитра.
Было произведено моделирование системы с целью измерения временных характеристик процесса обмена информацией между процессорами и блоком FIFO и сравнения этих характеристик с аналогичными у разделяемой памяти. На рисунках 3, 4 и 5 представлены временные диаграммы для каждого случая.
dk
kcpsm5_opcode[ 1:19] procl.state kcpsrr6_opcode( l: 19] proc2_state procl_cfi_nurrtoer{3:0]
P«)c_type[7:0] proc_r«Lrepfyp:0] proc_di_ready[7:0] dil.state
d«v_procl_$tate[7:0]
6ev_proc2_state[7:0] proc_req[7:0] ctu_data_in[7:0] ctil_<Jata_out[7:0] read_count(10:0] sim_s3(7:0]
Рисунок 3 - Временные диаграммы обмена 1-го процессора с блоком FIFO (запись)
На диаграмме видно, что процесс записи начинается с временной точки 65 ns. Процессор начинает записывать информацию в управляющие регистры (код операции, номер канала для обмена). Само занесение информации в канал блока FIFO происходит в 265 ns. Этот момент можно проследить по изменению счетчика read_count указывающего на количество находящихся в канале записей. Завершается же процесс записи в 395 ns, когда процессор выходит из процедуры записи. В итоге общее время записи с учетом потерь на программных участках 330 ns.
jO ns ( AAiArA 6S.lOQns 1100 ns ! 1200 ns j гплАпАпл пл п плплшшлл. 265.000 ПА 1300 ns ! Ш.аП]ЪТГШЛЯП ПП. 395.100 ns! 400 ns iA AAnAlriAr
(TTXri'.'O'.AyDf,".... Tt/.../[AFIVTt5P4ro' гот if7F/'rci,'o,.'M,.,p'/A,.,R,/E’;,,,s,,,4 РЛ inO [аАТсЛГоТХ
( wait state a.У enter ... X wr X...X wat.state
[4:-... У [-0 .. XIT/..-X fC, ’0”, ’M", V, A',*R'ff, XP’.-...XtT/...Xl'Ct...Xn..
( wat.sta e X-X-X enter_irofl x « Х«ИХ...Х wat state
< UUUU X 0000
< UUUUU )UU X UUUUUU1U X UUUUU010
< UUUUl UUU X UUUUUU1U X“V UUUUUU1
< uuuuuuuu “Xuuuuu.Yuuuuu. Yuuuut. ..УиОУХ иииииою "X uuuuuooo
( « ХЛ w X X. , W.
( a 000000 X OOOOQOOl 00000000 : x
( OOOOOOOC X 00000001 00000000
( uuuuu iuu juuuuuou ХЛС-X uuuuuooo
< uuuuuuuu X 00000001
< UUU UUU Ul
< 00000000000 ooooooooc
( 00000000
1 1 1 1
10 ns с« _г1 15.100 ns ( 1100 ns ( 1200 ns | rnrii лл nnnjLi лдллпллл л п лп л 255.000 ns 1300 ns j ьллллллппллгтл 395.100 nsl 1400 ns irtmi 435.00 111 455.100л iiiii
dk period { 1000C PS
кссвггб opcode! 1:191 (£...] :а,.'о',Ауи,",..ха','..ха';...хп;,'...)(г'с,...Уго'...хг'0’...хго'..хгт,'...хгс,'о',м1 P',A','R','E'.'...XfiJ',...Xn,/...Xrc,...Xn',...XrB,t^ :n.y. xny. :rc-, .ШЬХГ
kcosm6 opcode! 1:191 < P...' :n.\■O',Ayoy,v;'6',y/yo'.'oyXH'/...Xri,,' .Xrc...Xr0'...XI'0'.XIT.'. Xrt ,'ОУМУРУА', ■R'.'F,' ХРУ...ХПУ...ХГСУ.. :гз-,...х1т,'...: F~ SvTXfi
bus_datajn(7:0] (F) bus_data_out[7:0) 0 wrte_addr[7:0] |Q) read_addr[7:0) (F) 77777777 ^ 77777777 77777777 77777777 ПР gum <ПП> z DO...) ZZZZZZl (OOOOOO...) i I ZZZ2Z2 i 7777777
rd StfObe!7:01 ( 00000000 XIX 000( Й00
wr strobe(7:0] (, OOOOMOO X. IX 00000000
rd reply[7:0] ( UUUUUUUU X uuuui U1U
wr reofv!7:01 ( uouuuuuu : ! uuuuuuui
procl state ( wat.state X...X wr_memX. .X wat state
proc2 state (~~ wac state ХЛСго .mem Х...ХП< wa state
procl «1 r П
proc2 en [ ;'l
mon r n_l 1
procl addr buff7:0] ( uuuuuuuu X 00000000
proc2 addr buff7:01 ( uuuuuuuu x 00000000
mernen | i 1 i Li
sim s3T7:01 ( 00000000 ; .1110000
тегтогу32(0:31] (ГШД uuuuu.uuuuuuuu<uuuuuuuu,uuuuuuuu,uuuuuuou<uuuuuuuu<uuuuuuuu,uuu...: Г11110000<ШШШШ,ииишиии,ииииииии,1Л uuuuuu.uuu MJUU, JUUUUW
Рисунок 4 - Временные диаграммы обмена 1-го процессора с разделяемой памятью (запись)
elk
dk_.period
kcpsm6_opcode[l: 19]
kcpsm6_opcode[ 1:19]
bus_data_in[7:0]
busj3ata_out[7:0]
wrfte_addr[7:0]
read_addr[7:0]
rd_strobe[7:0]
wr_st robe [7:0]
rd_reply[7:0]
wr_reply[7:0]
proel^state
proc2_state
procl_en
proc2_en
mon
procl_addrj>uf[7:0]
proc2_addr_buf[7:0]
mem_en
sim_s3[7:0]
memory32[0:31]
1500 ns , 565.000 ns| 705.100 ns 755.00 775.100 ns
|600 ns ! M0 ns ] 1800 ns
Lruiiuirm ШЛ4тГШЛЛ4ШГШЛГ .гшшл. irt mniijinj
10000 Ps
r- XnV- XI’cyoyM1, F,'AyRyE','...Xn',...Xny...X['C'...X[T, ...XIR',.. ::po-...x[w...xd! '.„Xl'C , 'O', 'МУРУАУ R'/E',...)
Г- Xl'OV Xl'O' -Xn' ПХгсуоумурудуяуЕу ys'-.-XE^V ■■■ХП'/'— ccxpv-Хру-: 7777777 I'R'...; :['o'...x['o'...xny...>
ZZZZZZZZ (j zzzzzzzz zzzzzzzz <: 77777777 Ton zzzzzzzz (oioF nT> 77777777 (111100...) 1 <010...) (ПИ)
00000000 X4X 00000000
00000000 X У 00000000 ^o<
uuuuu ли
uuuuu JU1
wai... X -Xw_mem)C У wait_state x. nemX-X
wait state X- "X rd_mem Х~У~У wafc_state ХЗЛ
r и 1 1
1 1
r nil J 1
их 111 L0000
00000000 X~ 111 L0000
г_. ь —l_i
11110000 t \,
rilllOOOO.UUUUUU... : :nillOOOO,UUUUUUUU,UUUUUUUU,UUUUUUUU,l JUUUUU.UUUUUUI IU.UUL JUUUU.UUUUUULIU.UL
Рисунок 5 - Временные диаграммы обмена 1-го процессора с разделяемой памятью (запись) продолжение
Процесс записи в разделяемую память включает кроме самой записи информации в определенную ячейку памяти еще один предшествующий первому этап. Заключается он в записи адреса этой ячейки в область памяти, адрес которой известен всем процессорам. Как видно из временной диаграммы только первый предварительный этап требует 380 ns (начиная с точки 15 ns и до точки 395 ns) . Затем начинается второй этап, который заканчивается в 705 ns. Что в сумме дает нам общее время записи информации в разделяемую память равное 690 ns.
Аналогичные результаты получены при сравнении процедуры чтения: 350 и 650 ns соответствен-
но.
Моделирование показало, что аппаратный блок FIFO позволяет снизить время выполнения межпроцессорного обмена почти в 2 раза в сравнении с разделяемой памятью. Это может положительно отразиться на эффективности ее работы, особенно в задачах требующих быстрых реакций системы.
ЛИТЕРАТУРА
1. Эндрюс Г.Р. Основы многопоточного параллельного и распределенного программирования / Г.Р. Эндрюс; пер. с англ. - М.: Издательский дом «Вильямс», 2003. - 512 с.
2. Вашкевич Н.П., Бикташев Р.А., Тараканов А.А. Формализованное описание алгоритма управления взаимодействующими параллельными процессами в задаче «производители-потребители» с использованием согласующего кольцевого буфера / Известия вузов. Поволжский регион. Технические науки. № 4, 2008, с.98-107.
3. Вашкевич Н.П. Недетерминированные автоматы в проектировании систем параллельной обработки: учебное пособие/ Н.П.Вашкевич: - Пенза: изд-во Пенз.гос.ун-та, 2004. - 280 с.
4. Вашкевич Н.П. Аппаратная реализация функций синхронизации параллельных процессов при обращении к разделяемому ресурсу на основе ПЛИС / Н.П.Вашкевич, Р.А.Бикташев, Е.И.Гурин // Известия высших учебных заведений. Поволжский регион. Технические науки. - № 2, 2007, с.3-12.