Сети процессов Кана
Сеть процессов Кана ( KPN , или сеть процессов ) — это распределенная модель вычислений , в которой группа детерминированных последовательных процессов взаимодействует через неограниченные каналы «первым вошел — первым вышел» . Модель требует, чтобы чтение из канала было блокирующим , а запись неблокируемой . Из-за этих ключевых ограничений результирующая сеть процессов демонстрирует детерминированное поведение , которое не зависит ни от времени вычислений, ни от задержек связи .
Сети процессов Кана изначально были разработаны для моделирования параллельных программ, но оказались удобными для моделирования встроенных систем , высокопроизводительных вычислительных систем, систем обработки сигналов , систем потоковой обработки , языков программирования потоков данных и других вычислительных задач. KPN были представлены Жилем Каном в 1974 году. [1]
Модель исполнения
[ редактировать ]KPN — это распространенная модель для описания систем обработки сигналов , в которых бесконечные потоки данных постепенно преобразуются процессами, выполняющимися последовательно или параллельно. Несмотря на параллельные процессы, многозадачность или параллелизм для выполнения этой модели не требуется .
В KPN процессы взаимодействуют через неограниченные FIFO каналы . Процессы читают и записывают атомарные элементы данных , также называемые токенами , из каналов и в каналы. Запись в канал неблокируется , т. е. она всегда завершается успешно и не останавливает процесс, тогда как чтение из канала является блокирующим , т. е. процесс, считывающий из пустого канала, останавливается и может продолжаться только тогда, когда канал содержит достаточно элементов данных. ( жетоны ). Процессам не разрешено проверять входной канал на наличие токенов, не потребляя их. FIFO не может использоваться несколькими процессами, а также несколько процессов не могут записывать данные в один FIFO. Учитывая определенную историю ввода (токена) для процесса, процесс должен быть детерминированным, чтобы он всегда производил одни и те же выходные данные (токены). Время или порядок выполнения процессов не должны влиять на результат, поэтому тестирование входных каналов на наличие токенов запрещено.
Примечания к процессам
[ редактировать ]- Процессу не обязательно считывать какие-либо входные данные или иметь какие-либо входные каналы, поскольку он может выступать в качестве чистого источника данных.
- Процессу не обязательно записывать какие-либо выходные данные или иметь какие-либо выходные каналы.
- Тестирование входных каналов на пустоту (или неблокирующее чтение ) можно разрешить в целях оптимизации, но это не должно влиять на выходные данные. Может быть полезно и/или возможно сделать что-то заранее, а не ждать канала. Например, предположим, что было два чтения из разных каналов. Если первое чтение застопорилось (ожидание токена), но второе чтение может быть выполнено напрямую, было бы полезно сначала прочитать второе, чтобы сэкономить время, поскольку само чтение часто занимает некоторое время (например, время для выделения памяти или копирования). ).
Семантика запуска процессов как сети Петри
[ редактировать ]Предполагая, что процесс P в приведенной выше KPN сконструирован таким образом, что он сначала считывает данные из канала A , затем из канала B , что-то вычисляет, а затем записывает данные в канал C , модель выполнения процесса можно смоделировать с помощью сети Петри , показанной справа. . [2] Один токен в месте ресурса PE запрещает одновременное выполнение процесса для разных входных данных. Когда данные поступают в канал A или B , токены помещаются в места FIFO A и FIFO B соответственно. Переходы сети Петри связаны с соответствующими операциями ввода-вывода и вычислениями. Когда данные записаны в канал C , ресурс PE снова заполняется своей первоначальной маркировкой, позволяя читать новые данные.
Процесс как конечный автомат
[ редактировать ]Процесс можно смоделировать как конечный автомат, который находится в одном из двух состояний:
- Активный; процесс вычисляет или записывает данные
- Ждать; процесс заблокирован (ожидает) данных
Предполагая, что конечный автомат считывает программные элементы, связанные с процессом, он может считывать токены трех типов: «Вычисление», «Чтение» и «Запись токена». Кроме того, в состоянии ожидания он может вернуться в активное состояние только путем считывания специального «Получить токен», что означает, что канал связи, связанный с ожиданием, содержит читаемые данные.
Характеристики
[ редактировать ]Ограниченность каналов
[ редактировать ]Канал строго ограничен если у него есть максимум неизрасходованные токены для любого возможного исполнения. КПН строго ограничена если все каналы строго ограничены .
Количество неизрасходованных токенов зависит от порядка выполнения ( планирования ) процессов. Спонтанный источник данных может создавать в канал произвольное количество токенов, если планировщик не будет выполнять процессы, потребляющие эти токены.
Реальное приложение не может иметь неограниченных FIFO, поэтому планирование и максимальная емкость FIFO должны быть разработаны на практике. Максимальная емкость FIFO может быть обработана несколькими способами:
- Границы FIFO могут быть определены математически, чтобы избежать переполнения FIFO. Однако это возможно не для всех KPN. Неразрешимой задачей является проверка того, строго ли ограничена КПН . [ нужна ссылка ] Более того, в практических ситуациях граница может зависеть от данных.
- Границы FIFO могут быть увеличены по требованию. [3]
- Блокировку записи можно использовать для блокировки процесса, если FIFO заполнен. К сожалению, этот подход может привести к искусственному тупику, если проектировщик не определит должным образом безопасные границы для FIFO (Parks, 1995). Локальное искусственное обнаружение во время выполнения может быть необходимо, чтобы гарантировать получение правильного результата. [4]
Закрытые и открытые системы
[ редактировать ]не Закрытая КПН имеет внешних входных и выходных каналов. Процессы, не имеющие входных каналов, выступают в качестве источников данных, а процессы, не имеющие выходных каналов, действуют как приемники данных. В открытой КПН каждый процесс имеет хотя бы один входной и выходной канал.
Детерминизм
[ редактировать ]Процессы КПН детерминированы . Для одной и той же истории ввода они всегда должны производить один и тот же результат. Процессы можно моделировать как последовательные программы, которые выполняют чтение и запись в порты в любом порядке и количестве, при условии сохранения свойства детерминизма. Как следствие, модель KPN является детерминированной, поэтому следующие факторы полностью определяют выходные данные системы:
- процессы
- сеть
- начальные жетоны
Следовательно, время процессов не влияет на результаты системы.
Монотонность
[ редактировать ]Процессы КПН монотонны . Чтение большего количества токенов может привести только к записи большего количества токенов. Токены, прочитанные в будущем, могут повлиять только на токены, записанные в будущем. В КПН есть общий порядок событий. [ нужны разъяснения ] внутри сигнала. [ нужны разъяснения ] Однако между событиями в разных сигналах нет отношения порядка. Таким образом, КПН упорядочены лишь частично, что относит их к безвременным моделям.
Приложения
[ редактировать ]Благодаря своей высокой выразительности и краткости KPN, лежащие в основе модели вычислений, применяются в нескольких инструментах академического моделирования для представления потоковых приложений, которые обладают определенными свойствами (например, ориентированы на потоки данных, основаны на потоках).
Платформа Daedalus с открытым исходным кодом [5] поддерживаемый Лейденским исследовательским центром встраиваемых систем Лейденского университета, принимает последовательные программы, написанные на C, и генерирует соответствующий KPN. Этот KPN можно, например, использовать для систематического отображения KPN на платформе на основе FPGA .
Массив Ambric Am2045 процессоров с массовым параллелизмом представляет собой KPN, реализованный в реальном кремнии. [6] Его 336 32-битных процессоров соединены программируемым соединением выделенных FIFO. Таким образом, его каналы строго ограничены блокировкой записи.
Механизм искусственного интеллекта в некоторых версиях AMD Xilinx является строительным блоком сети процессов Кана. [7]
См. также
[ редактировать ]- Синхронный поток данных
- Коммуникация последовательных процессов
- Программирование на основе потока
- Программирование потоков данных
Ссылки
[ редактировать ]- ^ Кан, Г. (1974). Розенфельд, Джек Л. (ред.). Семантика простого языка параллельного программирования (PDF) . Учеб. Конгресс ИФИП по обработке информации. Северная Голландия. ISBN 0-7204-2803-3 .
- ^ Бернардески, К.; Де Франческо, Н.; Ваглини, Г. (1995). «Семантика сетей Петри для сетей потоков данных» . Акта Информатика . 32 : 347–374.
- ^ Паркс, Томас М. (1995). Ограниченное планирование технологических сетей (доктор философии). Калифорнийский университет, Беркли.
- ^ Гейлен, Марк; Бастен, Тван (2003). Дегано, П. (ред.). Требования к выполнению сетей процессов Кана . Учеб. 12-й Европейский симпозиум по языкам и системам программирования (ESOP). Спрингер. стр. 319–334. CiteSeerX 10.1.1.12.7148 .
- ^ http://daedalus.liacs.nl Структура LIACS Daedalus
- ^ Майк Баттс, Энтони Марк Джонс, Пол Уоссон, «Модель структурного объектного программирования, архитектура, чип и инструменты для реконфигурируемых вычислений», Труды FCCM, апрель 2007 г., Компьютерное общество IEEE
- ^ AMD Xilinx UG1076 (v2022.2) 19 октября 2022 г. Инструменты и потоки AI Engine, стр. 11
Дальнейшее чтение
[ редактировать ]- Ли, Э.А.; Паркс, ТМ (1995). «Сети процессов потока данных» (PDF) . Труды IEEE . 83 (5): 773–801. дои : 10.1109/5.381846 . ISSN 0018-9219 . Проверено 13 февраля 2019 г.
- Джозефс, Марк Б. (2005). «Модели для последовательных процессов потока данных». В Абдалле, Али Э.; Джонс, Клифф Б.; Сандерс, Джефф В. (ред.). Коммуникация последовательных процессов. Первые 25 лет: симпозиум по случаю 25-летия CSP, Лондон, Великобритания, 7-8 июля 2004 г. Пересмотренные приглашенные доклады . Конспекты лекций по информатике. Том. 3525. Берлин, Гейдельберг: Springer Berlin Heidelberg. стр. 85–97. CiteSeerX 10.1.1.60.5694 . дои : 10.1007/11423348_6 . ISBN 978-3-540-32265-8 .