Научная статья на тему 'ВЫБОР И ОПТИМИЗАЦИЯ МЕТОДА ПОИСКА ЗАПИСЕЙ В ОБЪЕКТНОМ СЛОВАРЕ МОДУЛЯ СИСТЕМЫ ВИБРОМОНИТОРИНГА, ИСПОЛЬЗУЮЩЕЙ ПРОТОКОЛ CANOPEN'

ВЫБОР И ОПТИМИЗАЦИЯ МЕТОДА ПОИСКА ЗАПИСЕЙ В ОБЪЕКТНОМ СЛОВАРЕ МОДУЛЯ СИСТЕМЫ ВИБРОМОНИТОРИНГА, ИСПОЛЬЗУЮЩЕЙ ПРОТОКОЛ CANOPEN Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
68
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МЕЖМОДУЛЬНОЕ ВЗАИМОДЕЙСТВИЕ / ОБЪЕКТНЫЙ СЛОВАРЬ / CANOPEN / МЕТОДЫ ПОИСКА / ХЕШ-ФУНКЦИЯ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Плотников Дмитрий Александрович, Лачин Вячеслав Иванович, Алджиязна Висам Камиль Мадлум, Муженко Александр Сергеевич

Рассмотрены основные методы, пригодные для организации поиска данных в объектном словаре устройств, использующих протокол CANopen: метод двоичного поиска, поиск по двоичному дереву, интерполяционный поиск и поиск с использованием хеш-таблицы, выполнен их сравнительный анализ, описаны результаты экспериментальных исследований, направленных на определение фактического быстродействия этих методов в реальных устройствах. На основании полученных результатов установлена целесообразность использования метода хеш-таблицы при объёме словаря от нескольких сотен объектов. Обоснована необходимость правильного выбора хеш-функции для минимизации среднего времени поиска. Предложена хеш-функция и метод выбора её параметров на основе вероятностей обращения к отдельным объектам словаря, обеспечивающий минимизацию среднего времени поиска объекта. Показана практическая значимость полученных результатов на примере применения предложенного метода в программном комплексе моделирования систем вибромониторинга для оптимизации использования вычислительных ресурсов различных модулей системы.

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Плотников Дмитрий Александрович, Лачин Вячеслав Иванович, Алджиязна Висам Камиль Мадлум, Муженко Александр Сергеевич

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

METHOD FOR SEARCHUNG RECORDS IN THE OBJECT DICTIONARY OF THE VIBROMONITORING SYSTEM MODULE, WHICH USES THE CANOPEN PROTOCOL: SELECTION AND OPTIMIZATION

The article discusses the main methods suitable for searching data in the object dictionary of devices using the CANopen protocol: binary search, binary tree search, interpolation search and hash table search, their comparative analysis is carried out, the results of experimental studies are described, aimed at determining the actual speed of these methods in real devices. Based on the results obtained, the expediency of using the hash-table method with a dictionary volume of several hundred objects has been substantiated. The necessity of the hash function correct choice to minimize the average search time is shown. A hash function and a method for selecting its parameters based on the probabilities of accessing individual dictionary objects are proposed, which minimizes the average object search time. The practical significance of the results obtained is shown on the example of the proposed method application in the software complex for modeling vibration monitoring systems to optimize the use of various system modules computing resources.

Текст научной работы на тему «ВЫБОР И ОПТИМИЗАЦИЯ МЕТОДА ПОИСКА ЗАПИСЕЙ В ОБЪЕКТНОМ СЛОВАРЕ МОДУЛЯ СИСТЕМЫ ВИБРОМОНИТОРИНГА, ИСПОЛЬЗУЮЩЕЙ ПРОТОКОЛ CANOPEN»

ISSN 1560-3644 ИЗВЕСТИЯ ВУЗОВ. СЕВЕРО-КАВКАЗСКИЙ РЕГИОН._ТЕХНИЧЕСКИЕ НАУКИ. 2021. № 3

ISSN 1560-3644 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION. TECHNICAL SCIENCE. 2021. No 3

УДК 004.75 DOI: 10.17213/1560-3644-2021-3-14-21

ВЫБОР И ОПТИМИЗАЦИЯ МЕТОДА ПОИСКА ЗАПИСЕЙ В ОБЪЕКТНОМ СЛОВАРЕ МОДУЛЯ СИСТЕМЫ ВИБРОМОНИТОРИНГА, ИСПОЛЬЗУЮЩЕЙ ПРОТОКОЛ CANOPEN

© 2021 г. Д.А. Плотников, В.И. Лачин, В.К.М. Алджиязна, А.С. Муженко

Южно-Российский государственный политехнический университет (НПИ) имени М.И. Платова, г. Новочеркасск, Россия

METHOD FOR SEARCHUNG RECORDS IN THE OBJECT DICTIONARY OF THE VIBROMONITORING SYSTEM MODULE, WHICH USES THE CANOPEN PROTOCOL: SELECTION AND OPTIMIZATION

D.A. Plotnikov, V.I. Lachin, W.K.M. Aljeazna, A.S. Muzhenko

Platov South-Russian State Polytechnic University (NPI), Novocherkassk, Russia

Плотников Дмитрий Александрович - канд. техн. наук, доцент, кафедра «Автоматика и телемеханика», ЮжноРоссийский государственный политехнический университет (НПИ) имени М.И. Платова, г. Новочеркасск, Россия. E-mail: dpl68@mail.ru

Лачин Вячеслав Иванович - д-р техн. наук, профессор, кафедра «Автоматика и телемеханика», Южно-Российский государственный политехнический университет (НПИ) имени М.И. Платова, г. Новочеркасск, Россия. E-mail: lachinv@mail.ru

Алджиязна Висам Камиль Мадлум - аспирант, кафедра «Автоматика и телемеханика», Южно-Российский государственный политехнический университет (НПИ) имени М.И. Платова, г. Новочеркасск, Россия. E-mail: wessamengineer@gmail.com

Муженко Александр Сергеевич - аспирант, кафедра «Автоматика и телемеханика», Южно-Российский государственный политехнический университет (НПИ) имени М.И. Платова, г. Новочеркасск, Россия. E-mail: muzhenko97@mail.ru

Plotnikov Dmitriy A. - Candidate of Technical Sciences, Assistant Professor, Department «Automation and Telemechanics», Platov South-Russian State Polytechnic University (NPI), Novocherkassk, Russia. E-mail: dpl68@mail.ru

Lachin Vyacheslav I. - Doctor of Technical Sciences, Professor, Department «Automation and Telemechanics», Platov South-Russian State Polytechnic University (NPI), Novocherkassk, Russia. E-mail: lachinv@mail.ru

Aljeazna Wisam Kamil Madhloom - Graduate Student, Department «Automation and Telemechanics», Platov South-Russian State Polytechnic University (NPI), Novocherkassk, Russia. E-mail: wessamengineer@gmail.com

Muzhenko Alexander S. - Graduate Student, Department «Automation and Telemechanics», Platov South-Russian State Polytechnic University (NPI), Novocherkassk, Russia. E-mail: muzhenko97@mail.ru

Рассмотрены основные методы, пригодные для организации поиска данных в объектном словаре устройств, использующих протокол CANopen: метод двоичного поиска, поиск по двоичному дереву, интерполяционный поиск и поиск с использованием хеш-таблицы, выполнен их сравнительный анализ, описаны результаты экспериментальных исследований, направленных на определение фактического быстродействия этих методов в реальных устройствах. На основании полученных результатов установлена целесообразность использования метода хеш-таблицы при объёме словаря от нескольких сотен объектов. Обоснована необходимость правильного выбора хеш-функции для минимизации среднего времени поиска. Предложена хеш-функция и метод выбора её параметров на основе вероятностей обращения к отдельным объектам словаря, обеспечивающий минимизацию среднего времени поиска объекта. Показана практическая значимость полученных результатов на примере применения предложенного метода в программном комплексе моделирования систем вибромониторинга для оптимизации использования вычислительных ресурсов различных модулей системы.

Ключевые слова: межмодульное взаимодействие; объектный словарь; CANopen; методы поиска; хеш-функция.

ISSN 1560-3644 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION. TECHNICAL SCIENCE. 2021. No 3

The article discusses the main methods suitable for searching data in the object dictionary of devices using the CANopen protocol: binary search, binary tree search, interpolation search and hash table search, their comparative analysis is carried out, the results of experimental studies are described, aimed at determining the actual speed of these methods in real devices. Based on the results obtained, the expediency of using the hash-table method with a dictionary volume of several hundred objects has been substantiated. The necessity of the hash function correct choice to minimize the average search time is shown. A hash function and a method for selecting its parameters based on the probabilities of accessing individual dictionary objects are proposed, which minimizes the average object search time. The practical significance of the results obtained is shown on the example of the proposed method application in the software complex for modeling vibration monitoring systems to optimize the use of various system modules computing resources.

Keywords: intermodular interaction; object dictionary; CANopen; search methods; hash function.

Введение

Особенностью модульных систем вибромониторинга (СВМ) турбоагрегатов является необходимость взаимодействия модулей друг с другом для реализации некоторых алгоритмов сигнализации и защиты. Эффективным средством организации такого взаимодействия является CANopen [1] - коммуникационный протокол высокого уровня на основе интерфейса CAN. Спецификация CANopen описывает общие подходы к организации взаимодействия, логические модели устройств, определения интерфейсов и детали реализации для различных типовых применений. Протокол используется в самых разных отраслях промышленности, особенно широко в промышленной автоматизации [2].

Одним из основных понятий CANopen является объектный словарь [3] (далее - словарь), который представляет собой таблицу, содержащую параметры конфигурации и текущие данные устройства или процесса. Каждая запись словаря (объект) имеет 16-разрядный индекс; в рамках одного объекта может быть определено до 255 подобъектов, обращение к которым выполняется с использованием восьмиразрядного субиндекса. Устройства в сети CANopen взаимодействуют друг с другом путём обращений к словарю своего контрагента. Например, запись одним устройством значения «Истина» в какой-либо объект словаря другого устройства может интерпретироваться другим устройством как разрешающий сигнал для получения данных с соответствующего аналогового входа. И наоборот, считывая информацию из словаря, можно получить накопленные данные или сведения о текущем состоянии устройства.

Постановка задачи исследований

Индексы и субиндексы объектов при обращении к словарю могут задаваться либо прямо (при использовании службы SDO), либо косвен-

но с помощью предварительной разметки (при использовании службы PDO). Более подробно эти механизмы описаны в [3], здесь важно отметить лишь то, что в процессе функционирования СВМ в любом случае многократно выполняется поиск объектов в словарях её модулей по индексам и субиндексам. При малом количестве объектов поиск не вызывает затруднений и может быть реализован даже методом простого перебора. Если же количество объектов и подобъектов в словаре велико, а обращения к ним выполняются часто, то использование неоптимального алгоритма поиска может существенно повысить требования к вычислительным ресурсам модулей СВМ, что приведёт к их удорожанию, увеличению энергопотребления и тепловыделения.

Несмотря на широкое распространение протокола CANopen, вопросы его алгоритмической и программной реализации рассматриваются в литературе весьма поверхностно и упрощённо. Так, например, в работе [4] описано представление словаря в виде односвязного списка, что предполагает использование только малоэффективного метода последовательного поиска. В [5] предлагается использовать более быстрый двоичный поиск в массиве идентификаторов, но не приводятся аргументы в пользу этого выбора. В [6] задача оптимизации взаимодействия решается путём упаковки данных с целью более эффективного использования пропускной способности интерфейса, однако вопросу поиска данных уделено недостаточно внимания. Таким образом, задача сравнительного анализа эффективности методов поиска и выбор наиболее подходящего для использования в устройствах, реализующих протокол CANopen, является актуальной.

Сравнительный анализ методов поиска

Необходимость решения описанной задачи возникла перед авторами в процессе разработки одного из модулей СВМ, отличительными осо-

ISSN 1560-3644 ИЗВЕСТИЯ ВУЗОВ. СЕВЕРО-КАВКАЗСКИЙ РЕГИОН._ТЕХНИЧЕСКИЕ НАУКИ. 2021. № 3

ISSN 1560-3644 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION. TECHNICAL SCIENCE. 2021. No 3

бенностями которого являлись, во-первых, сравнительно большой объём словаря (более 2000 объектов и подобъектов), а во-вторых - высокая интенсивность обращений к нему (до 20 000 обращений в секунду). Количество объектов и их индексы были известны на этапе разработки и в процессе работы СВМ не изменялись, что характерно для устройств СА^рвп и позволяет упорядочить объекты в соответствии с требованиями того или иного метода поиска.

Согласно работе [7], для поиска в упорядоченных структурах данных наиболее эффективны следующие методы:

1. Метод двоичного поиска в массиве, упорядоченном по возрастанию ключевых значений, заключается том, что вначале искомое значение к сравнивается с ключевым значением к, среднего элемента массива. При совпадении поиск завершается, в противном случае если к < кг-, то поиск аналогичным образом продолжается в левой половине массива, иначе - в правой. Временная сложность алгоритма - O(log(n)), где п - число элементов массива. Объекты словаря можно хранить в виде пар «ключ, данные», при этом дополнительный расход памяти отсутствует.

2. Метод поиска в двоичном дереве похож на предыдущий, но данные должны быть организованы не в виде массива, а в виде дерева. Каждый узел дерева содержит не только полезные данные и ключевое значение, но и пару указателей - на левое и правое поддеревья, т.е. имеет структуру «ключ, данные, указатель Л, указатель П». При этом в левом поддереве собраны узлы с меньшими ключевыми значениями, а в правом - с большими. При поиске искомое значение к сравнивается с ключом к корневого узла. В случае совпадения поиск завершается, в противном случае если к < кг-, то поиск аналогичным образом продолжается в левом поддереве, иначе - в правом. При корректной реализации метод будет работать быстрее предыдущего из-за отсутствия необходимости многократного вычисления индекса среднего элемента массива, однако это достигается за счет увеличения требований к памяти на 2хр^хп, где ps - размер указателя. Временная сложность при использовании сбалансированного по высоте дерева, как и в предыдущем случае, логарифмически зависит от числа узлов дерева.

3. Интерполяционный поиск напоминает двоичный, но на каждом этапе искомое значение к сравнивается с ключевым значением не сред-

него элемента, а элемента, индекс i которого вычисляется как

i = l + L(k - kl )(Г - l)/(kr - kl )J ,

где l и r — индексы левого и правого элементов рассматриваемого фрагмента массива; ki и kr — ключевые значения соответствующих элементов. Время поиска сильно зависит от распределения ключевых значений и при равномерном распределении оценивается как O(log(log(n))), но в худшем случае может достигать O(n). Дополнительный расход памяти отсутствует.

4. Поиск с использованием хеш-таблицы основан на том, что ключевые значения объектов поиска k с помощью так называемой хеш-функции h(k) преобразуются в целые числа h 6 {0, 1, 2, ..., m — 1}, где m — размер хеш-таблицы. Каждый объект с ключом ki размещается в ячейке массива H с индексом h(ki), в результате поиск объекта с ключом k сводится к вычислению индекса h(k) и к проверке совпадения ключевого значения объекта, хранящегося в ячейке H[h(k)], с искомым значением k. В идеальном случае временная сложность алгоритма оценивается как O(1), но это достигается лишь при условии, что каждому значению хеш-функции h(k) соответствует только одно значение ключа k. Если же возможны ситуации, когда h(ki) = h(kj) при ki Ф kj, возникают так называемые коллизии, разрешение которых требует дополнительных затрат времени. Количество коллизий зависит от используемой хеш-функции и соотношения n/m, называемого коэффициентом заполнения хеш-таблицы: чем он меньше, тем проще подобрать функцию, обеспечивающую минимальное число коллизий. Дополнительный расход памяти зависит от выбранного метода разрешения коллизий, которые описаны в [7]. При использовании метода цепочек в массиве H хранятся указатели на объекты, а сами объекты организованы в виде списков (цепочек) из структур «ключ, данные, указатель на следующий элемент списка». Каждая цепочка содержит объекты с разными ключами, но с совпадающими значениями h(k). Можно показать, что дополнительный расход памяти в этом случае составит (m + n)*ps. Метод открытой адресации авторами не рассматривался, поскольку он может заметно увеличить время поиска в случае коллизии, особенно при большом коэффициенте заполнения n/m.

Результаты предварительного анализа рассмотренных методов поиска данных в словаре приведены в табл. 1.

ISSN 1560-3644 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION.

Таблица 1 / Table 1 Предварительный анализ методов поиска / Preliminary analysis of search methods

Метод Временная сложность Доп. расход памяти

1. Двоичный поиск O(log(n)) 0

2. Двоичное дерево O(log(n)) 2xpsxn

3. Интерполяционный поиск O(log(log(n))) * 0

4. Хеш-таблица O(1) ** (m+n)xps

* - зависит от равномерности распределения ключей; ** - зависит от выбора хеш-функции.

Из таблицы следует, что аргументированный выбор метода поиска на текущем этапе можно сделать только на основании величины дополнительного расхода памяти. Однако одного этого параметра недостаточно, так как методы двоичного и интерполяционного поиска, требующие минимального количества памяти, обладают не лучшим быстродействием. Кроме того, оценка быстродействия приведена лишь с точностью до некоторого постоянного множителя, отличающегося для разных методов и определяемого особенностями выбранного языка программирования, используемого компилятора, архитектуры МПС. Так, например, ранее отмечено, что метод 2 обладает более высоким быстродействием, чем метод 1, несмотря на одинаковую оценку временной сложности O(log(n)), а хорошие оценки методов 3 и 4 в наиболее неблагоприятном случае могут ухудшиться до O(n). Следовательно, для принятия обоснованного решения о выборе подходящего метода поиска необходимы дальнейшие исследования, учитывающие указанные факторы.

Экспериментальное исследование методов поиска

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

- для метода интерполяционного поиска -выяснить фактическое быстродействие при имеющемся распределении ключевых значений;

- для метода поиска по хеш-таблице - выяснить влияние выбора хеш-функции и размера хеш-таблицы на быстродействие;

- для всех методов - сравнить быстродействие в идентичных условиях.

В качестве аппаратной платформы для исследований использовалось устройство-прототип на основе однокристального микроконтроллера (ОМК) STM32F101CT6, работающего на частоте 36 МГц. Разработанное на языке Си тестовое

TECHNICAL SCIENCE. 2021. No 3

программное обеспечение (ПО) имитировало в ПЗУ ОМК объектный словарь реального устройства, содержащий 291 объект и 1713 подобъек-тов, и выполняло поиск в нём каждой из имеющихся 2004 записей различными методами.

Для метода, использующего хеш-таблицу, перед началом исследований был выполнен предварительный выбор функции h(k) и размера таблицы m. К хеш-функции предъявлялись два требования: малое время вычисления и минимальное количество коллизий. Исходя из этих требований была выбрана функция h(k) = k mod m, где mod - операция нахождения остатка от деления. Она проста в реализации, гарантирует соблюдение условия 0 < h(k) < m для любого k и, согласно [7], обеспечивает равномерное распределение значений при равномерном распределении ключей, что в общем случае способствует уменьшению числа коллизий.

Выбор размера таблицы m осуществлялся исходя из компромисса между уменьшением числа коллизий NK и увеличением дополнительного расхода памяти при увеличении m. Поскольку значение NK существенно зависит от конкретного набора ключей, для его определения вычислялись h-значения h(k) для каждого индекса из словаря при заданном m и подсчиты-валось общее число совпадений h-значений. Кроме того, отдельно подсчитывалось число совпадений двух h-значений (коллизий первого уровня), трёх h-значений (коллизий второго уровня) и так далее. Описанные действия выполнялись для нескольких последовательных значений m, начиная с m = n. Результаты исследования хеш-функции приведены на рис. 1.

70 _ _Уровень 3

^ - .........Уровень 2

60 Wil -----Уровень 1

1 |'Д -Всего

--к- ""•'ft. .А

v\ Лг^л 1 f U \l /1 Л {'

V w 1

a vv...М/ Д ..... ,

•-ifllTlrtNrnOlrth-'-lilOlrtK'-OJlrtNT-lilOlrtNrinffl См C*J CM гО fj гО п rO PJ fl i*J rt rj A W (О f*» Й ■г1': P"J (*> t*> r"J П

Размер таблицы, т

Рис. 1. Зависимость количества коллизий от размера хеш-таблицы / Fig. 1. Dependence of the collisions number on the hash table size

Из графика видно, что устойчивое уменьшение числа коллизий NK с ростом размера таблицы наблюдается только до m = 330, дальнейшее увеличение размера вплоть до m = 400 к

ISSN 1560-3644 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION.

TECHNICAL SCIENCE. 2021. No 3

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

Для всех исследуемых методов были разработаны функции поиска, получающие индекс Idx и субиндекс Subldx искомого объекта и возвращающие указатель на данные этого объекта или 0 в случае неудачи. Функция находила соответствующим методом объект по Idx, получала адрес начала данных объекта BaseAddr, проверяла наличие подобъекта Subldx и в случае успеха возвращала адрес BaseAddr+Subldx^SoD, где SoD - размер данных подобъекта. Время работы функции при каждом вызове измерялось с помощью аппаратного таймера ОМК с разрешением 1 / (3,6-107) с, после чего по результатам 2004 измерений вычислялось среднее время поиска. Результаты измерений и вычислений приведены в табл. 2.

Таблица 2 / Table 2 Время поиска / Search time

Метод Время поиска, мкс Доп. расход памяти, Кбайт

Мин. Средн. Макс.

1. Двоичный поиск 1,44 4,55 5,58 0

2. Двоичное дерево 1,17 3,88 4,72 2,3

3. Интерполяционный поиск 1,94 39,21 119,67 0

4. Хеш-таблица 1,39 1,47 1,83 2,4

На основании полученных результатов можно сделать следующие выводы:

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

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

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

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

Разработка метода выбора параметров хеш-функции

Приведённые выше значения среднего времени поиска справедливы лишь в случае равной вероятности обращений к каждому объекту словаря. В реальных условиях эксплуатации СВМ эти вероятности различны: например, считывание текущей величины виброскорости, измеренной модулем, будет выполняться значительно чаще, чем чтение номера версии ПО этого модуля. Для определения вероятности обращения к тому или иному объекту выполнили имитационное моделирование работы СВМ с помощью разработанного программного комплекса, описанного в [8, 9]. На основании полученных данных подсчитали количество обращений к каждому 7-му объекту словаря (7 6 [0, п-1]) в течение некоторого промежутка времени, после чего вычислили вероятности обращения:

Рг = q

j n—i

Z qx

x=0

Затем с использованием измеренных ранее величин времени поиска каждого объекта определили среднее время поиска ¿ср:

n—1

^ = Z ¡гРг ,

"ср

(1)

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

г=0

где ¿7 - время поиска объекта словаря с ключом (индексом) к7.

В результате для первых трёх методов (табл. 2) величина ¿ср, зависящая только от распределения ключевых значений, изменилась незначительно и составила 4,56; 3,53 и 34,54 мкс соответственно. Повлиять на распределение ключевых значений невозможно, поскольку индексы объектов формируются по определённым правилам, а иногда прямо задаются нормативными документами, вследствие чего их произвольное изменение недопустимо. В силу указанных обстоятельств дальнейшее исследование методов двоичного поиска, поиска по дереву и интерполяционного поиска не выполнялось.

Для метода, использующего хеш-таблицу, ¿ср возросло на 15 % (с 1,47 до 1,69 мкс), что свидетельствовало о неудачном распределении записей в таблице: коллизии возникали для объек-

ISSN 1560-3644 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION.

TECHNICAL SCIENCE. 2021. No 3

тов, вероятность обращения к которым высока. Поэтому авторы исследовали другие быстро вычисляемые хеш-функции, распределяющие записи иначе. Функции вида h(k) = (ak+b) mod m в данном случае оказались неэффективны, так как изменение целочисленных параметров a и b никак не влияет на количество коллизий и множество ключей, для которых они возникают, а изменение m в разумных пределах приводит к увеличению числа коллизий (рис. 1). Чтобы рассредоточить совпадающие записи хеш-таблицы, было решено выполнить умножение k на дробный коэффициент, представленный с целью повышения быстродействия в формате с фиксированной точкой [10]. В этом случае хеш-функция будет иметь вид: h(k) = {k*a/216}*m, где a, k и m — целые 16-разрядные числа. Операция выделения дробной части {°} в сочетании с умножением на a/216 позволяет ограничить диапазон хеш-значений и более равномерно распределить их. Число a/216 - это целое число a, интерпретируемое как дробный коэффициент в формате (0,16), произведение k*a/216 имеет формат (16,16), отбросив старшие 16 разрядов его целой части и умножив дробную часть на m, получим дробное число формата (16,16) в диапазоне [0, m). Хеш-значение в диапазоне [0, m - 1] формируется путём отбрасывания дробной части результата. Все упомянутые операции являются целочисленными, современные 32-разрядные процессоры выполняют их достаточно быстро, поэтому существенного снижения быстродействия за счёт усложнения хеш-функции не произойдёт.

Описанная хеш-функция имеет два параметра: a и m, для выбора оптимальных значений которых необходимо минимизировать функцию (1), полагая ti = f (k, a, m), a e [1, 216—1], n < m < mmax, при этом максимальный размер хеш-таблицы mmax выбирается исходя из допустимого дополнительного расхода памяти. Функцию f (k, a, m) аналитически описать не удалось, поэтому для получения значений ti при заданных a и m формировалась хеш-таблица и определялось наличие и уровень коллизии для каждого ключа ki. Из описания алгоритма поиска следует, что при отсутствии коллизии время ti для некоторого ki будет равно постоянной величине To, в случае коллизии первого уровня ti возрастёт на постоянную величину Ti, для коллизии второго уровня ti = To+2Ti и так далее. Таким способом вычислялось время поиска ti для каждого ключа ki, а затем по формуле (1) подсчитывалось среднее время поиска ^р. Значения To и Ti были получены

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

Функция (1) в описанных условиях имеет множество локальных экстремумов, а задача её минимизации является задачей целочисленного нелинейного программирования. В общем случае для поиска решения можно использовать, например, алгоритм имитации отжига [11], однако он, как и другие подобные алгоритмы, не гарантирует получение наилучшего результата. Поэтому с учетом сравнительно небольшого числа комбинаций значений параметров а и т, а также с целью дополнительного исследования поведения функции, её минимум был найден путём простого перебора. При этом для каждого т е [п, ттах] перебором значений параметра а определялся промежуточный минимум 7срт, а также количество коллизий разного уровня, соответствующее этому минимуму. Полученные результаты приведены на рис. 2.

Размер тэбпицы т

Рис. 2. Зависимость оптимального среднего времени поиска и числа коллизий от размера хеш-таблицы / Fig. 2. Dependence of the optimal average search time and the number of collisions on the hash table size

На графиках видно, что в результате подбора коэффициента a среднее время поиска tсрm при любом размере хеш-таблицы m находится в диапазоне [1,3901, 1,3918] мкс, что мало отличается от минимально возможного 1,39 мкс (см. табл. 2) и на 17,6 % меньше среднего времени, полученного без оптимизации хеш-функции. Следовательно, при наличии жестких ограничений по объёму памяти можно использовать таблицу минимального размера. Если же ограничений нет, то целесообразно выбрать такой размер таблицы, при котором число коллизий и их уровень минимальны: это позволит сохранить малое среднее время поиска в нетипичных режимах работы устройства (например, при тестирова-

ISSN 1560-3644 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION.

нии). На рис. 2 видны три таких размера: 320, 333 и 347. Во всех трёх случаях возникают коллизии только первого уровня, их количество невелико, а среднее время поиска близко к минимальному.

Практическая значимость полученных результатов

С использованием результатов исследований разработан дополнительный модуль к программному комплексу [9], реализующий следующий метод оптимизации поиска в объектном словаре:

1. Средствами комплекса описывается конфигурация СВМ, объектные словари её модулей, параметры служб, межмодульные связи, характер изменения входных сигналов.

2. Путём имитационного моделирования работы СВМ определяются вероятности обращения к каждому объекту словаря оптимизируемого модуля.

3. Задаётся максимальный размер хеш-таблицы затем для каждого т 6 [п, mmax] программа подбирает множитель а хеш-функции И(к) = {£*а/216}*т, обеспечивающий минимум целевой функции (1), и определяет количество коллизий разного уровня.

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

5. С использованием выбранных параметров т и а формируется описание хеш-таблицы на языке Си, включаемое в ПО модуля СВМ.

Применение предложенного метода оптимизации поиска в сочетании с разработанными программными средствами позволило авторам обоснованно заменить использовавшийся ранее в ПО СВМ метод двоичного дерева более быстродействующим методом хеш-таблицы, что освободило от 5 до 10 % вычислительных ресурсов в различных модулях СВМ в зависимости от объёма словаря, интенсивности обращений к нему и вычислительной мощности используемого ОМК.

TECHNICAL SCIENCE. 2021. No 3

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

Заключение

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

Литература

1. CANopen. The standardized embedded network. URL: https: //www.can-cia.org/canopen/ (дата обращения 23.04.2021).

2. The Basics of CANopen. © 2021 National Instruments Corp. URL: http://www.ni.com/white-paper/14162/en/#toc2 (дата обращения 23.04.2021).

3. CANopen application layer and communication profile. Version: 4.2.0 21 February 2011 / CAN in Automation e. V. 2011. 158 p. URL: http://www.can-cia.org (дата обращения 23.04.2021).

4. Radoslav Bortel. CANopen Master and Node Software // Faculty of Electrical Engineering, Czech Technical University, Prague, 2002. 19 р.

5. Kubicka M. CANopen implementation. University of West Bohemia in Pilsen, 2011. 63 p.

6. Park Kiejin A Frame Packing Mechanism Using PDO Communication Service within CANopen. 2021. URL: https:// www.researchgate.net/publication/267229249_A_Frame_Pac king_Mechanism_Using_PDO_Communication_Service_wit hin_CANopen (дата обращения 02.06.2021).

7. Кнут Д. Искусство программирования. Т. 3: Сортировка и поиск. М.: Диалектика, 2019. 832 с.

8. Плотников Д.А., Лачин В.И, Алджиязна В.К.М., Соло-менцев К.Ю. Разработка модели межмодульного взаимодействия в системах контроля вибрации на базе протокола CANopen // Изв. вузов. Электромеханика. 2020. Т. 63, № 2-3. С. 68-75.

9. Свид. о гос. рег. прогр. для ЭВМ 2020610500 РФ. Моделирование межмодульного взаимодействия в системах на базе протокола CANopen (CanOpenAnalyzer) / Д.А. Плотников, В.К.М. Алджиязна; Роспатент. № 2019667012; заявлено 19.12.19, зарег. 15.01.20.

10. Fixed Point Arithmetic on the ARM. © Advanced RISC Machines Ltd (ARM) 1996. 14p. URL: https://developer. arm.com/documentation/dai0033/a/ (дата обращения 02.06.2021).

11. KirkpatrickS., Gelatt C.D., VecchiM.P. Optimization by simulated annealing. // Science. Vol. 220. 1983. P. 671-680.

References

1. CANopen The standardized embedded network. Available at: https://www.can-cia.org/canopen/ (accessed 23.04.2021).

2. The Basics of CANopen. © 2021 National Instruments Corp. Available at: http://www.ni.com/ white-paper/14162/en/#toc2 (accessed 23.04.2021).

ISSN 1560-3644 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION. TECHNICAL SCIENCE. 2021. No 3

3. CANopen application layer and communication profile. Version: 4.2.0 21 February 2011 / CAN in Automation e. V. 2011. 158 p. Available at: http://www.can-cia.org (accessed 23.04.2021)

4. Radoslav Bortel. (2002) CANopen Master and Node Software. Faculty of Electrical Engineering, Czech Technical University, Prague, 002. 19 р.

5. Kubicka M. (2011) CANopen implementation. University of West Bohemia in Pilsen, 2011. 63 p.

6. Park Kiejin (2021) A Frame Packing Mechanism Using PDO Communication Service within CANopen. 2021. Available at: https:// www.researchgate.net/ publication/ 267229249_A_Frame_Packing_Mechanism_Using_PDO_Communication_Service_ within_CANopen (accessed 02.06.2021).

7. Donald Knuth. (2019) The Art of Computer Programming. Vol. 3. Sorting and Searching. Moscow, Dialectics, 2019. 832 p. (In Russian).

8. Plotnikov D.A. Lachin V.I., Aljeazna W.K.M., Solomentsev K.Y. (2020) Intermodular interaction model design for vibration monitoring systems based on the CANopen protocol. Russian Electromechanics, 2020, vol. 63, no. 2-3, рp. 68 — 75. (In Russian).

9. Cert. of state reg. of a comp. program 2020610500 RU. Intermodular interaction modeling in systems based on the CANopen protocol (CanOpenAnalyzer). D.A. Plotnikov, W.K.M. Aljeazna. (In Russian).

10. Fixed Point Arithmetic on the ARM. © Advanced RISC Machines Ltd (ARM) 1996. 14 p. Available at: https://developer.arm.com/ documentation/dai0033/a/ (accessed: 02.06.2021)

11. Kirkpatrick S., Gelatt C.D., Vecchi M.P. (1983) Optimization by simulated annealing. Science, 1983, vol. 220, pp. 671-680.

Поступила в редакцию /Received 08 июля 2021 г. / July 08, 2021

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