Применение операции векторизации состояний для синтеза цифровых автоматов
Использование реконфигурируемых вычислительных систем для решения задач поиска шаблонов в потоке данных. Эффективная разработка цифрового автомата, решающего задачу поиска шаблонов с масками "*" и "?". Основная идея метода векторизации состояний автомата.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 30.05.2017 |
Размер файла | 298,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru//
Размещено на http://www.allbest.ru//
Применение операции векторизации состояний для синтеза цифровых автоматов
Д.Н. Ильченко
Использование реконфигурируемых вычислительных систем (РВС) [1,2,3] для решения задач поиска шаблонов в потоке данных является одним из перспективных направлений. Одной из важнейших функций при решении подобного класса задач является возможность использования масок при формировании шаблонов. В качестве таких масок применяются специальные метасимволы `?', обозначающий произвольный один символ, и `*', обозначающий множество произвольных символов.
Одним из наиболее эффективных с точки зрения реализации на программируемых логических интегральных схемах (ПЛИС) и быстродействия классических алгоритмов поиска шаблонов является автоматный алгоритм Ахо-Корасик [4,5]. Однако использование масок при формировании шаблонов приведет к созданию автомата, синтез которого будет затруднен, поскольку граф такого автомата будет содержать большое количество вершин состояний автомата, для каждой из которых необходимо определить функции переходов и выходов [6]. При реализации таких автоматов на ПЛИС компиляторы систем автоматического проектирования (САПР), осуществляющие синтез автоматов, не выполняют оптимизацию графов, а лишь оптимизируют размещение элементов на кристалле, при этом все состояния автомата будут синтезированы классическим способом, при котором будут учтены все возможные функции переходов для всех состояний, представленных на графе автомата [7,8,9]. Все это усложняет синтез автомата, и использование такого автомата будет неоптимальным решением.
Необходимы новые методы, позволяющие упростить синтез таких автоматов и, по возможности, снизить используемый ресурс на их реализацию.
Метасимвол `*' в маске шаблона может иметь бесконечный размер, однако в реальной жизни поиск шаблонов бесконечной длины не является актуальной задачей. Поэтому более осмысленным и целесообразным является поиск шаблонов, содержащих символов в маске. Это будет равносильно замене шаблона с `*' на множество шаблонов, включающих в себя следующий набор масок . Также возможны более сложные комбинации при задании масок в шаблонах. Например, `*' может определяться как набор , где n - минимальное количество любых символов шаблона, m - максимальное количество любых символов шаблона, при этом . Такая запись подразумевает возможность попадания в шаблон любых символов в количестве от n до m. Это будет равносильно замене `*' на комбинации шаблонов, включающих в себя следующий набор масок .
Очевидно, что использование таких масок в шаблонах приводит к избыточности графа автомата, решающего задачу поиска шаблонов. При этом автомат содержит множество состояний, функции переходов между которыми являются идентичными, но сами состояния не являются эквивалентными. Такая избыточность графа усложняет логическую структуру автомата и, следовательно, усложняется его синтез, поскольку каждому такому состоянию автомата необходимо определять функцию перехода и функцию выхода.
Эффективная разработка цифрового автомата, решающего задачу поиска шаблонов с масками `*' и `?', заключается прежде всего в минимизации затрат на логическую структуру автомата, что приводит к упрощению его синтеза.
Задачу поиска большого числа шаблонов можно решить двумя способами. Первый способ - это реализация тривиального метода (наивный алгоритм или алгоритм "грубой силы" [10]), который заключается в прямом сравнении шаблона и входного потока данных. Фактически такая реализация будет представлять собой некоторый автомат, состоящий из множества недетерминированных автоматов, каждый из которых в темпе поступления входных воздействий осуществляет поиск отдельного шаблона. Такой вариант будет неоптимальным, поскольку объем ресурса на его реализацию, а именно, количество регистров, будет находиться в прямой зависимости от количества состояний.
Вторым способом является построение автомата, который будет менять свои состояния в зависимости от входных воздействий, при этом количество регистров на хранение и кодирование состояний будет определяться по формуле
(1)
где - количество возможных состояний автомата.
Этот метод является более предпочтительным с точки зрения аппаратных затрат, однако использование масок усложняет синтез такого автомата.
Для упрощения синтеза цифрового автомата, решающего задачу поиска шаблонов с масками, применяется операция векторизации состояний автомата. Применение векторизации позволяет провести декомпозицию структуры автомата и вынести часть состояний автомата из основного графа, объединив эти состояния в вершины-массивы состояний. При этом автомат разбивается на группу автоматов. Операция векторизации дает возможность упростить реализацию автомата.
Основная идея метода векторизации состояний автомата заключается в том, что в исходном графе определяются вершины, соответствующие состояниям автомата, в которые он последовательно переходит при любых входных воздействиях. Например, это состояния автомата, соответствующие маске шаблона, которая подразумевает под собой группу любых символов, в данном случае не важно, в какое состояние перейдет автомат при попадании в маску шаблона, важно лишь условие, которое выведет автомат в строго определенное состояние, соответствующее конкретно-определенному символу шаблона, либо переведет автомат в начальное состояние. Такие состояния автомата заменяются вершиной-массивом состояний. При переходе автомата в вершину-массив состояний управление состояниями осуществляется некоторым управляющим автоматом, например, счетчиком, состояния которого соответствуют состояниям автомата в вершине-массиве. После перехода управляющего автомата в конечное состояние формируется сигнал выхода из вершины-массива, либо в процессе перехода по состояниям управляющего автомата и определенного входного воздействия, которое соответствует символу шаблона после маски, формируется сигнал перехода из вершины-массива состояний в следующую вершину.
Метод векторизации состояний автомата не уменьшает количество его состояний, но при этом существенно упрощается его структура, поскольку множество последовательных состояний автомата, имеющих идентичные функции переходов, будет объединено в одну вершину-массив состояний.
Следует отметить, что при использовании *[0,?) в маске шаблона наиболее эффективным является использование всего одного состояния автомата - состояния ожидания автомата. В этом случае при переходе в состояние, соответствующее данной маске шаблона, автомат ожидает на входе следующего значимого символа после маски. Однако такой вариант шаблона в реальной жизни не актуален и не имеет никакого смысла, ведь шаблоны, как правило, имеют некоторый конечный размер, а поиск бесконечного шаблона может привести к неопределенности и зацикливанию программы. Корректное использование маски `*' должно подразумевать либо некоторый конечный размер символов в маске, либо задание маски граничными значениями.
В качестве примера рассмотрим шаблон "a*b", где *[1..10]. Граф автомата для поиска этого шаблона представлен на рис.1. Синтез автомата, представленного данным графом и решающего задачу поиска довольно простого шаблона, сложен, поскольку необходимо определить функции переходов, функции возвратов и выхода для тринадцати вершин графа, соответствующих состояниям автомата.
Рис. 1. - Невекторизированный граф автомата поиска шаблона
векторизация автомат шаблон поиск
Применяя операцию векторизации состояний, автомат будет представлен в виде подграфа, в котором счетчик выполняет функцию автомата управления. Векторизированный граф автомата поиска шаблона - "a*b", где *[1..10] показан на рис.2.
Рис. 2 - Векторизированный граф автомата поиска шаблона
Вершины 2,3,4,...11, представленные на невекторизированном графе, заменяются вершиной-массивом состояний с номером 2-11. Переход в эту вершину передает управление счетчику, и дальнейшие состояния автомата определяются состояниями этого счетчика. Диапазон работы счетчика соответствует количеству состояний в вершине-массиве, т.е. 1..10. При значении счетчика, равном 10, формируется выходная функция .
Очевидно, что синтез такого подграфа будет проще, поскольку необходимо задать функции переходов, возвратов и выхода только для 4-х вершин графа, одна из которых будет являться вершиной-массивом состояний. Синтез счетчика тривиален и не зависит от графа основного автомата. Общее количество состояний автомата при векторизации не меняется.
Таким образом, векторизация состояний автомата не снижает общего количества состояний, но за счет объединения состояний в вершину-массив состояний упрощается адресация к этим состояниям и, следовательно, синтез автомата становится проще.
Для оценки эффективности метода векторизации состояний с точки зрения используемого количества триггеров и логических элементов («И» и «ИЛИ»), выведем формулу оценки ресурсов. Необходимое количество логических элементов при синтезе автомата можно оценить как
,(2)
где - количество возможных состояний автомата.
Количество триггеров, необходимых для хранения и кодирования состояний, определяется по формуле (1). Формулы (1) и (2) используются при оценке невекторизированного графа.
При оценке векторизированного графа автомата используемое количество триггеров и логических элементов будет определяться совокупностью элементов и триггеров основного автомата и счетчика, выступающего в роли управляющего автомата.
Синтез счетчика [11] является тривиальной задачей. Количество используемых триггеров определяется по формуле (1), а количество логических элементов определяется количеством триггеров счетчика и дополнительно 2-х логических элементов на реализацию функции выхода и функции инициализации счетчика. При этом количество состояний счетчика соответствует количеству состояний в вершине-массиве состояний и определяется как количество символов в маске шаблона, т.е.
В общем случае количество логических элементов, используемых для реализации синтезируемого автомата, будет определяться по формуле
,(3)
где - общее количество состояний невекторизированного автомата,
- количество состояний, объединенных в вершину-массив состояний, с учетом замены этих состояний одной вершиной в графе,
- количество состояний счетчика управления.
Количество триггеров, используемых для хранения и кодирования состояний, в общем виде может быть рассчитано по формуле
.(4)
При использовании формул (3) и (4) для оценки невекторизированного графа составляющие счетчика и не учитываются.
Если выразить состояния автомата и счетчика через общее количество символов в шаблоне и количество символов в маске шаблона , то формулы (3) и (4) будут выглядеть следующим образом:
.
График количества используемого ресурса в зависимости от степени векторизации графа при фиксированном размере шаблона представлен на рис. 3.
Рис. 3 - График зависимости количества логических элементов от степени векторизации состояний автомата при его синтезе
Для примера шаблон задан как "a*b", размер шаблона . При граф не векторизирован. Минимальное количество векторизируемых вершин определим равным , максимальное - , т.е. при минимальной степени векторизации - *[1..3], при максимальной - *[1..98].
При минимальной степени векторизации состояний автомата количество используемых логических элементов практически неизменно, но с увеличением степени векторизации количество элементов логики существенно уменьшается.
Метод векторизации состояний автомата упростил синтез автомата, а также позволил существенно сократить количество используемых логических элементов. Таким образом, данный метод может быть эффективно применен при синтезе автоматов для решения задач сигнатурного анализа, например, при реализации аппаратного антивируса.
Литература:
1. Каляев А.В., Левин И.И. Модульно-наращиваемые многопроцессорные системы со структурно-процедурной организацией вычислений. - М.: Янус-К, 2003. - 380 с.
2. Строцев А.А., Андреев А.А. Оценка нахождения реконфигурируемой вычислительной системы в состояниях эффективного функционирования [Электронный ресурс] // «Инженерный вестник Дона», 2012, №4 - Режим доступа: http://www.ivdon.ru/magazine/archive/n4p1y2012/1212 (доступ свободный) - Загл. с экрана. - Яз. рус.
3. Андреев А.А. Методика выбора базовой архитектуры реконфигурируемой вычислительной системы на основе методов теоретико-игровой оптимизации [Электронный ресурс] // «Инженерный вестник Дона», 2013, №1 - Режим доступа: http://ivdon.ru/magazine/archive/n1y2013/1569 (доступ свободный) - Загл. с экрана. - Яз. рус.
4. Alfred V. Aho and Margaret J. Corasick Efficient String Matching: An Aid to Bibliographic Search [Электронный ресурс] // Режим доступа: http://www.ece.ncsu.edu/asic/ece792A/2009/ECE792A/Readings_files/p333-aho.pdf (доступ свободный) - Загл. с экрана. - Яз. англ.
5. Гасфилд Д. Строки, деревья и последовательности в алгоритмах: Информатика и вычислительная биология / Пер. с англ. И.В. Романовского. -- СПб.: Невский Диалект; БХВ-Петербург, 2003. -- 654 с.
6. Поликарпова Н.И., Шалыто А.А. Автоматное программирование - СПб.: СПбГПУ, 2008. - 227с.
7. Строганов А. Проектирование комбинационных схем в базисе ПЛИС [Электронный ресурс] // «Компоненты и технологии», 2008, №5 - Режим доступа: http://www.kit-e.ru/articles/plis/2008_5_148.php (доступ свободный) - Загл. с экрана. - Яз. рус.
8. Соловьев В., Климович А. Синтез на ПЛИС совмещенных моделей конечных автоматов [Электронный ресурс] // «ChipNews», 2003, №3 - Режим доступа: http://www.chip-news.ru/archive/chipnews/200303/4.html (доступ свободный) - Загл. с экрана. - Яз. рус.
9. Соловьев В. Структурные модели конечных автоматов при их реализации на ПЛИС [Электронный ресурс] // «ChipNews», 2002, №9 - Режим доступа: http://www.chip-news.ru/archive/chipnews/200209/1.html (доступ свободный) - Загл. с экрана. - Яз. рус.
10. Apostolico A., Galil Z. Pattern Matching Algorithms - New York: Oxford University Press; 1997. - 377 p.
11. Глушков В.М. Синтез цифровых автоматов - М.: Физматгиз; 1962. - 476 с.
Размещено на Allbest.ru
...Подобные документы
Разработка управляющего автомата, ориентированного на выполнение заданной микрооперации. Разработка алгоритма работы управляющего автомата. Листинг программы. Выбор оптимального варианта кодирования состояний автомата. Синтез функции возбуждения.
курсовая работа [506,9 K], добавлен 26.12.2012Синтез автомата для преобразования двоично-десятичного кода. Кодировка алфавитов и состояний. Построение булевых функций, минимизация. Разметка вход-выходных слов для автомата Мили и автомата Мура. Реализация на элементах малой степени интеграции.
контрольная работа [141,5 K], добавлен 14.10.2012Понятие автомата как дискретного преобразователя информации, особенности его состояний. Синтез конечных автоматов, их задания и структурных анализ. Построение синтеза функций возбуждения элементарных автоматов. Комбинационный синтез конечных автоматов.
курсовая работа [336,4 K], добавлен 01.06.2014Проектирование цифрового автомата для выполнения арифметической операции деления двоичных чисел, алгоритм работы. Числа с плавающей запятой. Типы элементов памяти управляющего автомата JK-триггер, не имеющего запрещенных состояний на основных входах.
курсовая работа [747,4 K], добавлен 25.03.2012Синтез цифрового автомата с комбинационной частью на логических элементах. Реализация спроектированного автомата в виде иерархического блока со схемой замещения на библиотечных компонентах в режиме SPICE–проектов. Разработка абстрактных символов.
курсовая работа [831,2 K], добавлен 23.09.2013Разработка управляющего автомата процессора с жесткой логикой в САПР Quartus II. Построение схемы функциональной микропрограммы команды "Исключающее ИЛИ" в размеченном виде. Унитарное кодирование состояний автомата. Запись функций переходов и выходов.
курсовая работа [671,3 K], добавлен 04.11.2014Построение математической модели программы, одноленточного автомата над алфавитом, допускающего различные множества слов. Алфавит терминальных символов, множество состояний и переходов. Определение начального и конечного состояний. Понятие сети Петри.
контрольная работа [294,8 K], добавлен 17.09.2013Разработка функциональной схемы управляющего микропрограммного автомата. Построение графов автомата для модели Мили и Мура. Кодирование состояний для модели Мура на D-триггерах. Алгоритм умножения чисел в дополнительном коде с простой коррекцией.
курсовая работа [764,0 K], добавлен 27.08.2012Назначение и классификация методов поисковой оптимизации. Эффективность поискового метода. Методы поиска нулевого порядка: исходные данные, условия, недостатки и применение. Структура градиентного метода поиска. Основная идея метода наискорейшего спуска.
лекция [137,8 K], добавлен 04.03.2009Содержание и особенности этапов синтеза дискретного автомата. Граф переходов-выходов автомата Мура, кодирование входных и выходных сигналов. Построение функциональной схемы автомата Мура на RS–триггерах и элементах И-НЕ в программе Electronic WorkBench.
курсовая работа [964,2 K], добавлен 20.07.2015Последовательность выполнения задания и рекомендации по проектированию. Проектирование несложных дискретных устройств (цифрового автомата), структурная схема и алгоритм функционирования. Применение синхронного триггера и его отличия от асинхронного.
методичка [258,6 K], добавлен 28.04.2009Общая схема D-триггера и цифрового автомата Мили. Построение входных и выходных преобразователей в соответствии с таблицами кодирования входных и выходных сигналов. Составление таблиц переходов и выхода состояния автомата Мили. Выбор серии микросхем.
курсовая работа [525,4 K], добавлен 04.11.2012Поиск как основа функционирования СОЗ. Стратегии; эвристического поиска и управления выводом. Циклическая работа интерпретатора. Вывод на знаниях в продукционных системах. Методы поиска в глубину и ширину. Формализация задач в пространстве состояний.
презентация [741,2 K], добавлен 14.08.2013Минимизация абстрактного автомата Мили, моделирование его работы. Синтез схемы конечного автомата, микропрограммного автомата и счетчика числа микрокоманд. Разработка цифровой линии задержки. Построение граф-схем исходного и оптимизированного автоматов.
курсовая работа [823,8 K], добавлен 19.07.2012Изучение принципа работы цифрового автомата для сложения двоичных чисел, представленных в форме с фиксированной запятой, на базисе алгебры Буля. Правила построения операционных и функциональных схем отдельных устройств, логических систем и функций.
курсовая работа [1,2 M], добавлен 24.01.2014Методика минимизации абстрактного автомата. Порядок построения графа полученного минимизированного автомата. Синтез на элементах ИЛИ-НЕ и Т-тригерах. Составление таблицы переходов. Разработка микропрограммного автомата, реализующего микропрограмму.
курсовая работа [997,7 K], добавлен 28.03.2011Классы задач P и NP, их сводимость. Примеры NP-полных и NP-трудных задач. Сущность метода поиска с возвратом. Алгоритмы решения классических задач комбинаторного поиска. Решение задачи о восьми ферзях. Поиск оптимального решения методом ветвей и границ.
презентация [441,5 K], добавлен 19.10.2014Понятие, последовательность построения и схемная реализация цифрового автомата. Описание форм представления функций алгебры логики. Принципы минимизации функций выходов и переходов автомата, их перевода в базис. Сведенья о программе Electronics Workbench.
курсовая работа [2,0 M], добавлен 27.10.2010Разработка сетевого ресурса для ОАО "МРСК Урала" для облегчения роботы персонала. Описание интерфейса, правил поиска и пользования документами, особенностей их редактирования и удаления. Пример создания нового документа на основе готовых шаблонов.
контрольная работа [24,8 K], добавлен 08.06.2017Эвристические и теоретические методы прямого поиска. Алгоритм поиска значения по симплексу и по образцу. Основная идея метода сопряженных направлений Пауэлла. Ознакомление с преимуществами и недостатками методов безусловной многопараметровой оптимизации.
презентация [862,9 K], добавлен 30.10.2013