Системы управления,связи и безопасности № 3. 2016
Systems of Control, Communication and Security sccs.intelgr.com
УДК 004.021
Расширенное микширование аудиопотоков для многопроцессорных устройств в телекоммуникациях
Колпаков А. А., Кропотов Ю. А., Белов А. А., Холкина Н. Е.
Постановка задачи: В работе рассмотрены вопросы расширенного микширования аудиопотоков для их обработки на графических процессорах, в которых комбинируются множество потоков путем использования двухпроходного рендера, что существенно снижает время переключения между буферами. Методом экспериментальных компьютерных сравнительных исследований было осуществлено оценивание производительности разработанного алгоритма. Целью работы является разработка эффективного алгоритма микширования аудиопотоков для обработки на графических процессорах. Новизна: элементами новизны представленного алгоритма является использование в его составе двухпроходного рендера. Используемые методы: метод переноса операций вычислений на графические процессоры с применением шейдерных программ. Результат: результаты исследований показали, что применение разработанного алгоритма приводит к существенному увеличению производительности вычислений. Практическая значимость: представленное решение предполагается реализовать в виде программного обеспечения многопроцессорных устройств в системах телекоммуникаций.
Ключевые слова: двухпроходной рендер, алгоритм повышения производительности, параллельные вычисления, гетерогенные вычислительные системы, графические процессоры, микширование аудио данных.
Введение
С развитием современных компьютерных сетей такие мультимедиа Ш:егпе1-приложения, как удаленная работа по сети, совместные разработки и видео конференции, прочно вошли в повседневную жизнь. Согласно исследованиям [1] 75% межпользовательского общения по сети приходится на голосовой трафик. Поскольку голосовое общение играет такую важную роль, нельзя исключать и голосовые конференции с несколькими участниками.
Простейший сценарий организации голосовой коммуникации заключается в том, что каждый источник звука шлет свой аудиопоток каждому приемнику независимо. Такой метод прост и удобен, но требует высокой пропускной способности сети, что не всегда можно обеспечить. Поэтому лучшим методом может служить микширование аудио, что означает комбинирование аудиопотоков от каждого источника в один. Исходя из возможности звуковых волн накладываться друг на друга, данный метод может обеспечивать приемлемое качество звука, при этом обеспечивая снижение загруженности сети. Однако, применение данного метода может существенно увеличить нагрузку на центральный процессор сервера, что может негативно сказываться на производительность системы в целом. Выходом из данной ситуации может стать применение графических процессоров для решения данной задачи.
Системы управления,связи и безопасности № 3. 2016
Systems of Control, Communication and Security sccs.intelgr.com
Проблемы использования графических процессоров для аудио
микширования
Хотя графические процессоры достаточно производительны, существует несколько проблем в использовании их для аудио микширования, которые связаны с архитектурой и ограниченностью функционала [2].
Первая проблема - это пропускная способность шины между графическим процессором и основной памятью, которая меньше, чем между основным процессором и основной памятью. Например, чипсет Intel 975X обеспечивает теоретическую пропускную способность для CPU 10.7 ГБ/с, а для GPU только 8 ГБ/с. Практика показывает, что отсутствие поддержки асинхронного ввода/вывода требует больших временных затрат для дополнительных операций, таких как блокировка/разблокировка буфера. Поскольку общие вычисления на GPU базируются на 3D рендеринге, скорость записи обычно выше, чем скорость чтения. Такая асимметрия делает процедуру считывания результата достаточно продолжительной [3, 4].
Во-вторых, общие вычисления на GPU базируются на 3D моделях, различные задачи требуют различных настроек GPU, таких как 3D модели, трансформирующие матрицы и программы шейдеров. Во время загрузки настроек вычислительные потоки GPU не задействованы. Хуже всего то, что GPU не сообщает CPU о завершении выполнения задания, поэтому CPU вынужден периодически проверять статус GPU. Это довольно времязатратная операция, так как она нарушает параллелизм между GPU и CPU.
В-третьих, недостатком GPU является производительность в логических операциях. Как известно, CPU отслеживает ветвления, GPU же работает по-другому: каждая ветка ветвления сначала выполняется, а потом уже выбирается нужный результат. Это делает распараллеливание легче, но требует больше ресурсов.
И наконец, набор инструкций GPU несовместим с CPU. Кроме того, время выполнения и длина кода лимитированы. Все это делает сложным перенос существующих алгоритмов на графические процессоры [5].
Структура разрабатываемого алгоритма
Базовый алгоритм аудио микширования состоит из пяти этапов. Первый шаг - это суммирования аудио семплов от различных источников, что может быть представлено следующей формулой [6,7]:
__n
Mt Uk j , (1)
к=0
где Uk,t - вектор семпла, т.е. вектор отсчетов, полученных микрофоном к за время t;
Mt - итоговый вектор микширования.
Второй этап - это эхокомпенсация, которая в базовом виде заключается в исключении семпла /-го устройства из итогового вектора [8]. Данный этап представляется в виде
Systems of Control, Communication and Security
sccs.intelgr.com
Mit = Mt - Uit, (2)
где Mit - итоговый вектор микширования для /-го устройства;
Uit - семпл /-го устройства.
Для корректности итогового вектора Mit необходимо, чтобы его размерность была равна размерности входящих векторов. Однако, после
проведения этапов 1 и 2 вектор Mit может быть переполнен, что приведет к нежелательным шумам [9]. Для того, чтобы использовать изначально вектор
Mi,t больших размеров, необходимо проводить его сжатие для дальнейшего использования. Это делается на третьем этапе по формуле
Mit = Mit • itt, (3)
где lit - коэффициент ослабления для /-го устройства. Этот коэффициент
необходимо вычислять автоматически, исходя из максимального сжатого семпла. Поиск максимума среди сжатых семплов происходит на четвертом этапе, а корректировка коэффициента ослабления - на пятом.
Блок-схема базового алгоритма микширования представлена на рис. 1.
Для лучшего описания алгоритма, возможности GPU представляются в виде f - функции текстуры X и координат пикселя p, представленной формулой
f(X, P) = {у | Vfi g Piyi = f(X, Pi )}, (4)
где yi - проекция пикселя pi на текстуру X;
P - проекция BD-модели.
Для каждого пикселя в проекции 3D модели P будет рассчитана функция (4) и затем результат будет записан в буфер рендера.
Из формулы (4) видно, что образец вычислений на GPU может быть представлен как A=(X, P, f).
Пусть n обозначает общее количество источников звука в сессии, а L -длину одного аудио семпла. Каждый из трех первых шагов микширования (накопление семплов, эхокомпенсация и сжатие) выдает n последовательностей по L байт. В то же время два последних шага (поиск максимального семпла и адаптация коэффициента затухания) выдают только n целых чисел. Поскольку первые три шага могут быть выполнены в рамках одной проекции для вычислений на GPU, они могут быть скомбинированы в один шаг, как показано ниже
m =
• I
(5)
х ^ -и
У
Поскольку четвертый шаг использует другое измерение, отличное от первых трех, он не может быть объединен в рамках формулы (5). Блок-схема расширенного алгоритма микширования представлена на рис. 2.
Системы управления,связи и безопасности № 3. 2016
Systems of Control, Communication and Security sccs.intelgr.com
Обработка исходных семплов
Цикл обработки семплов i = [0...и]
Рис. 1. Блок-схема базового алгоритма микширования
Systems of Control, Communication and Security
sccs.intelgr.com
Цикл обработки семплов i = [0...и]
^^_
Вывод исходного вектора
J
Рис. 2. Блок-схема расширенного алгоритма микширования
Обычно вычисления, проекции которых не совпадают и не имеют пересечений, могут быть объединены по общим признакам. Поэтому если эти вычисления обозначить как Л\=(Х\, Р\,/\) и Л2=(Х2, Р2,/2), то их можно объединить, как показано ниже.
Х =<Х1,Х2),Р = л ^ /«Х1,Х2),р) =|р),ре ^ (6)
Как видно из (6) основным алгоритмом является проверка координаты каждого пикселя для выбора функции выполнения модуля. Так как GPU выполняет все ветви до выбора нужной, каждая ветвь будет выполнена для каждого пиксела, что займет много времени.
В разрабатываемом алгоритме представлен альтернативный метод выполнения большого количества функций, который выводит в один буфер
Systems of Control, Communication and Security
sccs.intelgr.com
рендера выходные данные различной длины с помощью многопотокового рендеринга. Здесь основным правилом является перемещение проекции путем модифицирования проекционной матрицы, чтобы вычислительная площадь каждой функции ограничивалась необходимой областью, а не всем буфером.
В зависимости от пикселя на него может приходиться разный объем информации без потери универсальности. Обозначим через w общее число пикселей, необходимое для хранения Ь байт. Таким образом, буфер рендера может быть представлен как (^+1)п. 3D модель разрабатываемого алгоритма представляет собой прямоугольник, который лежит на плоскости 2. Он имеет размеры: 2w/(w+1) единиц по ширине и 2 единицы по высоте. Координаты вершин - (-1,-1,0), (1-2/^+1),-1,0), (-1,1,0), (1-2/^+1),1,0).
При первом проходе рендеринга в качестве матрицы проецирования выбирается единичная матрица. Это обеспечивает проекции совпадение с 3D моделью. После преобразования видимой области, в этом проходе для выполнения первых трех шагов микширования применяется формула (5). Преобразования 3D-модели, производимые в первых трех шагах, представлены на рис. 3.
/ Текстура
Текстура P1 X = ( Xx, X2) P = P u P2 r « x„ x,)=ffX ^ - L/2(X2> p), P e P2
/
Рис. 3. Первый проход алгоритма
Записываемая "область-
Текстура P2 / / 1 /
Текстура P1 X = ( Xi, x2) P = Pi u P2 r « xuX 2U)ePp \MX2, p), P e P2
/
Сдвиг на L пикселей Рис. 4. Второй проход алгоритма
Системы управления,связи и безопасности № 3. 2016
Systems of Control, Communication and Security sccs.intelgr.com
Во втором проходе рендеринга проекция смещается влево на L пикселей. В то же время программа шейдера переключается в режим поиска максимального семпла. В этом проходе может быть записана только одна колонка, поскольку большинство частей проекции лежат вне буфера рендера и будут автоматически игнорированы GPU. Так как отсечение проекции было выполнено в начале рендера, этот метод вызывает функцию только для корректных пикселей, а не для всего буфера. Действия, производимые на втором проходе алгоритма, представлены на рис. 4.
Использование алгоритма с одной текстурой
Как замечено выше, оба прохода алгоритма в качестве входных данных требуют n последовательностей семплов каждый. Для каждой последовательности должна быть выделена своя уникальная текстура. Всего требуется n текстур размерностью L. Такая многотекстурная технология не подходит для аудио микширования. Во-первых, для каждого источника звука требуется своя текстура. Поэтому могут потребоваться дополнительные проходы. Во-вторых, загрузка множества маленьких текстур гораздо медленнее, чем загрузка одной большой.
В разрабатываемом алгоритме предлагается загрузка единой текстуры. В качестве примера представлен первый проход алгоритма. Входные данные содержат n семплов последовательностей размером L байт и n коэффициентов затухания. Используется два текстурных буфера формата RGBA. Текстура T1 имеет размерность [L/4]n и хранит все семплы последовательностей в линию. Текстура T2 имеет размерность и хранит коэффициенты затухания. Координаты всех текстур приведены в таблице 1 .
Таблица 1 - Координаты текстур, используемых в разработанном алгоритме
Вершины Координаты Координаты
текстуры T1 текстуры T2
(-1,-1, 0) (1/2w, 1) (0.5, 1)
(1-2/(w+1),-1, 0) (1, 1) (0.5, 1)
(-1, 1, 0) (1/2w, 0) (0.5, 0)
(1-2/(w+1), 1, 0) (1, 0) (0.5, 0)
Аудио микширование производится независимо для каждого пикселя. Текстурные координаты пикселя (х, у) рассчитываются путем интерполяции текстурных координат вершин. Исходя из таблицы 1, текстурная координата для Т1 должна быть (X, У), а для Т2 - (0.5,7). Т1 указывает на семпл, для которого производятся текущие преобразования микширования, данный семпл назовем «точкой прицеливания». Для исключения появления эха другая текстурная координата рСиг ограничена по доступу Т1. Составляющая х текстуры рСиг идентична текстуре Т1, а составляющая у рассчитывается из циклической переменной, которая обозначает каждый источник звука. В цикле регистр положения V используется, чтобы пропустить «точку прицеливания». Наконец, коэффициенты затухания считываются из текстуры Т2. Поскольку
Системы управления,связи и безопасности № 3. 2016
Systems of Control, Communication and Security sccs.intelgr.com
коэффициент хранится в первом байте, выборка производится только по синей составляющей.
Экспериментальное исследование разработанного алгоритма
Тестовые входные данные для микширования представляют собой последовательности по 320 семплов. Все семплы сгенерированы случайно. В качестве тестового стенда использован компьютер с процессором Intel Core i3-4130, 4 ГБ оперативной памяти, графическая карта NVIDIA GeForce GT730. Варьировалось количество последовательностей M. Результаты для базового и разработанного алгоритмов на выходе идентичны. Результаты экспериментального исследования зависимости времени выполнения микширования t от количество последовательностей Mприведены на рис. 5.
1,4
t, мс
1,2
1
0,8 0,6 0,4 0,2 0
2 4 8 16 M
Рис. 5. Результаты экспериментального исследования зависимости времени выполнения микширования t от количество последовательностей M
Как видно из результатов тестирования, представленных на рис. 5, применение расширенного алгоритма аудио микширования позволяет увеличить производительность компьютерной системы в 5-6 раз [10, 11].
В таблице 2 приведены результаты измерения среднего времени работы алгоритма t для 8 случайных последовательностей по 320 семплов. В ходе измерения было проведено 1000 циклов обработки, для каждого из которых генерировались новые случайные последовательности семплов. Для полученных результатов рассчитана дисперсия выходных последовательностей, значения которой также приведены в таблице 2.
Таблица 2 - Результаты исследования алгоритма расширенного микширования _аудиопотоков для 8 последовательностей семплов_
Применяемый алгоритм Среднее время работы алгоритма, мс Дисперсия выходных последовательностей
Базовый алгоритм 1,351 3,757
Разработанный алгоритм 2,226 ■ 10-1 1,426 ■ 10-3
-Базовый алгоритм
— -Расширенный алгоритм
Системы управления,связи и безопасности № 3. 2016
Systems of Control, Communication and Security sccs.intelgr.com
Как видно из результатов тестирования, представленных в таблице 2, дисперсия выходных последовательностей для базового алгоритма существенно выше, чем для разработанного. Это связано с тем, что для вычислений в графическом процессоре применяются 32-битные числа, тогда как для вычислений на центральном процессоре - 64-разрядные. Применение разработанного алгоритма в гетерогенной компьютерной системе уменьшает время на обработку данных до 0,2226-10-3 с вместо 1,351 ■ 10-3 с - временем обработки данных базовым алгоритмом.
Заключение
В данной работе представлен алгоритм расширенного микширования аудиопотоков для вычислений на графических процессорах. Главное его достоинство - это комбинирование множества этапов микширования путем использования двухпроходного рендера, что существенно снижает время переключения между буферами. Использование для расчетов одной текстуры повышает эффективность операций ввода/вывода. Хотя операции ввода/вывода занимают приблизительно половину времени вычислений, экспериментальные исследования разработанного алгоритма показали увеличение производительности до 6 раз.
Литература
1. Lindholm E., Nickolls J., Oberman S., Montrym J. NVIDIA Tesla: A unified graphics and computing architecture // IEEE Micro. 2008. Vol. 2. No. 28. С. 39-55.
2. Luebke D., Harris M., Kruger J., Purcell T., Govindaraju N., Buck I., Woolley C., Lefohn A.. GPGPU: general purpose computation on graphics hardware // The 31st international conference on computer graphics and interactive techniques. 2004. С. 33.
3. Колпаков А. А. Аспекты оценки увеличения производительности вычислений при распараллеливании процессоров вычислительных систем // Методы и устройства передачи и обработки информации. 2011. № 1 (13). С. 124-127.
4. Колпаков А. А. Теоретическая оценка роста производительности вычислительной системы при использовании нескольких вычислительных устройств // В мире научных открытий. 2012. № 1. С. 206-209.
5. Колпаков А. А. Оптимизация генетических алгоритмов при использовании вычислений на графических процессорах на примере задачи нулевых битовых векторов // Информационные системы и технологии. 2013. № 2 (76). С. 22-28.
6. Кропотов Ю. А. Экспериментальные исследования закона распределения вероятности амплитуд сигналов систем передачи речевой информации // Проектирование и технология электронных средств. 2006. Т. 4. С. 37-42.
7. Кропотов Ю. А. Статистические параметры сигналов при проектировании оперативно-командных телекоммуникационных систем // В мире научных открытий. 2010. № 6-1. С. 39-44.
Системы управления,связи и безопасности № 3. 2016
Systems of Control, Communication and Security sccs.intelgr.com
8. Кропотов Ю. А., Быков А. А. Аппроксимация закона распределения вероятности отсчетов сигналов акустических помех // Радиотехнические и телекоммуникационные системы. 2011. № 2. С. 61-63.
9. Ермолаев В. А., Кропотов Ю. А. О корреляционном оценивании параметров моделей акустических эхо-сигналов // Вопросы радиоэлектроники. 2010. Т. 1. № 1. С. 46-50.
10. Кропотов Ю. А., Проскуряков А. Ю., Белов А. А., Колпаков А. А. Модели, алгоритмы системы автоматизированного мониторинга и управления экологической безопасности промышленных производств // Системы управления, связи и безопасности. 2015. № 2. С. 184-197.
11. Кропотов Ю. А., Белов А. А., Проскуряков А. Ю., Колпаков А. А. Методы проектирования телекоммуникационных информационно-управляющих систем аудиообмена в сложной помеховой обстановке // Системы управления, связи и безопасности. 2015. № 2. С. 165-183.
References
1. Lindholm E., Nickolls J., Oberman S., Montrym J.. NVIDIA Tesla: A unified graphics and computing architecture. IEEE Micro, 2008, vol. 2, no. 28, pp. 39-55.
2. Luebke D., Harris M., Kruger J., Purcell T., Govindaraju N., Buck I., Woolley C., Lefohn A.. GPGPU: general purpose computation on graphics hardware.
The 31st international conference on computer graphics and interactive techniques, 2004, pp. 33.
3. Kolpakov A. A. Kropotov Y. A. Aspects of the assessment increase performance of computations in parallel processors of the computing system. Metody i ustroistva peredachi i obrabotki informatsii, 2011, vol. 13, no. 1, pp 124-127 (in Russian).
4. Kolpakov A. A. Theoretical evaluation of growth performance computing systems from the use of multiple computing devices. V mire nauchnykh otkrytii, 2012, no. 1, pp 206-209 (in Russian).
5. Kolpakov A. A. Optimizing the use of genetic algorithms for computing graphics processors for the problem of zero bit vector Informatsionnye sistemy i tekhnologii, 2013, no. 2(76), pp. 22-28 (in Russian).
6. Kropotov Y. A. Experimental study of the law of distribution of probability of amplitudes of signals of systems of transmission of voice information Proektirovanie i tekhnologiia elektronnykh sredstv, 2006, vol. 4, pp. 37-42 (in Russian).
7. Kropotov Y. A. The statistical parameters of the signals in the design of command-operational telecommunications systems. Vmire nauchnykh otkrytii, 2010, no. 6-1, pp. 39-44 (in Russian).
8. Kropotov Y. A. Bykov A. A. Approximation of the law of distribution of probability of samples of the acoustic noise signals. Radiotekhnicheskie i telekommunikatsionnye sistemy, 2011, no. 2, pp. 61-63 (in Russian).
Системы управления,связи и безопасности № 3. 2016
Systems of Control, Communication and Security sccs.intelgr.com
9. Ermolaev V. A., Kropotov Y. A. On the correlation estimation of parameters of models of acoustic echo-signals. Voprosy radiojelektroniki, 2010, vol. 1, no. 1, pp. 46-50 (in Russian).
10. Kropotov Y. A., Proskuryakov A. Y., Belov A. A., Kolpakov А. А. Models, Algorithms System of Automated Monitoring and Management of Ecological Safety Industrial Plants. Systems of Control, Communication and Security, 2015, no. 2, pp. 184-197. Available at: http://journals.intelgr.com/sccs/archive/2015-02/08-Kropotov.pdf (accessed 24 September 2016) (in Russian).
11. Kropotov Y. A., Belov A. A., Proskuryakov A. Y., Kolpakov А. А. Methods of Designing Telecommunication Information and Control Audio Exchange Systems in Difficult Noise Conditions. Systems of Control, Communication and Security, 2015, no. 2, pp. 165-183. Available at: http://journals.intelgr.com/sccs/archive/2015-02/07-Kropotov.pdf (accessed 24 September 2016) (in Russian).
Статья поступила 7 сентября 2016 г.
Информация об авторах
Колпаков Александр Анатольевич - кандидат технических наук. Доцент кафедры «Электроники и вычислительной техники». Муромский институт (филиал) «Владимирского государственного университета имени Александра Григорьевича и Николая Григорьевич Столетовых». Область научных интересов: параллельные и распределенные вычислительные системы. Тел.: +7 492 347 72 72. E-mail: [email protected]
Кропотов Юрий Анатольевич - доктор технических наук, профессор, зав. кафедрой «Электроники и вычислительной техники». Муромский институт (филиал) «Владимирского государственного университета имени Александра Григорьевича и Николая Григорьевич Столетовых». Область научных интересов: телекоммуникационные информационно-управляющие системы. Тел.: +7 492 347 72 72. E-mail: [email protected]
Алексей Анатольевич Белов - кандидат технических наук, доцент, доцент кафедры «Электроники и вычислительной техники». Муромский институт (филиал) ФГБОУ ВПО «Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевич Столетовых». Область научных интересов: телекоммуникационные системы мониторинга и прогнозирования, обработка информации. Тел.: +7 492 347 72 72. E-mail: [email protected]
Наталья Евгеньевна Холкина - доцент кафедры «Электроники и вычислительной техники». Муромский институт (филиал) ФГБОУ ВПО «Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевич Столетовых». Область научных интересов: модели и алгоритмы анализа устной речи, обработка информации. Тел.: +7 492 347 72 72. E-mail: [email protected]
Адрес: Россия, 602264, г. Муром, ул. Орловская, д. 23.
Системы управления,связи и безопасности № 3. 2016
Systems of Control, Communication and Security sccs.intelgr.com
Advanced Mixing of Audio Streams for Multi-Processor Devices
in Telecommunications
A. A. Kolpakov, Y. A. Kropotov, A. A. Belov, N. E. Kholkina
Purpose. This paper presents an algorithm enhanced mixing of audio streams for computation on GPUs. The algorithm combines multiple stages of mixing by using two-pass rendering, which significantly reduces time switching between buffers. The purpose of the present paper is development of the efficient algorithm for mixing audio streams for processing on GPUs. Methods. In algorithm to uses transfers operations computing on graphics processors with the use of Shader programs. Novelty. Novel features of presented solutions is using in algorithm with the two-pass rendering. Results. The results showed that the application of the developed algorithm leads to an increase in computational performance up to 6 times. Practical relevance. Presented solution can be implemented as software in the telecommunications multiprocessor systems.
Key words: two-pass rendering, algorithm of performance improving, parallel computing, heterogeneous computing system, graphics processors, mixing the audio data.
Information about authors
Alexsandr Anatolievich Kolpakov - Ph.D. of Engineering Sciences, Associate Professor at the Department of Electronics and Computer Science. Murom Institute (branch) of the Vladimir State University named after Alexander and Nickolay Stoletovs. Field of research: parallel and distributed computing systems. Ph.: +7 492 347 72 72. E-mail: [email protected]
Yurij Anatolievich Kropotov - Dr. habil. of Engineering Sciences, professor, Head of Chair «Electronics and Computer Science». Murom Institute (branch) of the Vladimir State University named after Alexander and Nickolay Stoletovs. Field of research: telecommunication information and control systems. Ph.: +7 492 347 72 72. E-mail: [email protected]
Alexey Anatolievich Belov - Ph.D. of Engineering Sciences, Associate Professor, Associate Professor at the Department of «Electronics and Computer Science». Murom institute (branch) of the «Vladimir State University named after Alexander and Nickolay Stoletovs». Field of research: telecommunications monitoring and forecasting system, information processing. Ph.: +7 492 347 72 72. E-mail: [email protected]
Natal'ia Evgen'evna Kholkina - Associate Professor at the Department of Electronics and Computer Science. Murom institute (branch) of the Vladimir State University named after Alexander and Nickolay Stoletovs. Field of research: models and algorithms of speech analysis, information processing. Ph.: +7 492 347 72 72. E-mail: [email protected]
Address: Russia, 602264, Murom, st. Orlovskaya, h. 23.