Сеть потока данных
Иллюстрации
Показать всеИзобретение относится к средствам компьютерной обработки данных. Техническим результатом является повышение быстродействия и увеличение пропускной способности компьютерной системы. Способ обеспечивает соединение процессов программы, выполняемой в компьютерной системе, используя композиционную модель, называемую структурой источник-цель, которая позволяет комбинировать операции процесса с сетями потока данных для формирования сетей процесса. 3 н. и 17 з.п. ф-лы, 15 ил.
Реферат
Уровень техники
Компьютерные системы могут обеспечивать возможность выполнения множества процессов программы одновременно. Одновременное выполнение процессов может обеспечить для программы более быстрое выполнение или более эффективное увеличение пропускной способности компьютерной системы.
В процессах, которые реализуют модель потока управления, логика потока управления описывает набор условий и модификаций состояния программы и может быть организована, например, посредством блок-схемы последовательности операций. Термин «алгебра процесса» используется для ссылки на методологию обоснования того, как процессы связываются друг с другом для взаимодействия при решении общей задачи и как управляется время существования процесса. Хотя алгебра процесса может в значительной степени отличаться от примитивов, модифицирующих внутреннее состояние процесса, обычно существуют точки взаимодействия, где взаимодействие между процессами обеспечивает выполнение внутренней схемы информационных потоков. Такие точки взаимодействия между процессами в некоторых программах могут быть сложными. Сложные точки взаимодействия могут затруднять процесс планирования для одновременного выполнения и могут привести к менее чем оптимальному выполнению программы.
Раскрытие изобретения
Данный раздел «Раскрытие изобретения» предусмотрен для ввода выбора концепций в упрощенной форме, которые дополнительно описаны ниже в разделе «Осуществление изобретения». Данный раздел «Раскрытие изобретения» не предназначен для идентификации ключевых признаков или существенных признаков заявленного объекта изобретения и не предназначен для использования, для ограничения объема заявленного объекта изобретения.
Предоставлена композиционная модель, упоминаемая как структура источник-цель для соединения процессов в сети процессов обобщенным, гибким и расширяемым способом. Модель обеспечивает возможность комбинирования общих структурных компонентов алгебры процессов с сетями потока данных для формирования сетей процесса. Алгебраические операции процесса могут быть выражены в виде композиционной модели для формирования сетей потока данных, которые предоставляют полностью взаимодействующие между процессами алгебраические операции. Модель может быть применена к широкому массиву простых сетей потока данных, а также к более сложным сетям потока данных.
Краткое описание чертежей
Прилагающиеся чертежи включены для обеспечения более полного понимания вариантов осуществления и приведены здесь и составляют часть настоящего описания. На чертежах иллюстрируются варианты осуществления, и вместе с описанием они служат для пояснения принципов вариантов осуществления. Другие варианты осуществления и множество из предполагаемых преимуществ вариантов осуществления будут легко понятны по мере их пояснения со ссылкой на следующее подробное описание изобретения. Элементы чертежей не обязательно представлены в масштабе относительно друг друга. Одинаковыми номерами ссылочных позиций обозначены соответствующие аналогичные части.
На Фиг. 1A-1C показаны блок-схемы, иллюстрирующие варианты осуществления интерфейсов источника и цели, предназначенных для использования в сети потока данных.
На Фиг. 2A-2C показаны блок-схемы, иллюстрирующие варианты осуществления узлов сети потока данных.
На Фиг. 3 показана блок-схема, иллюстрирующая вариант осуществления сети процесса с сетью потока данных, соединенной с процессами.
На Фиг. 4 показана блок-схема, иллюстрирующая вариант осуществления сети процесса с процессом, соединены с сетями потока данных.
На Фиг. 5 показана блок-схема, иллюстрирующая вариант осуществления инициирующего блока, конфигурированного для реализации операции передачи.
На Фиг. 6 показана блок-схема, иллюстрирующая вариант осуществления блока триггера, конфигурированного для реализации операции приема.
На Фиг. 7 показана блок-схема, иллюстрирующая вариант осуществления сети процесса.
На Фиг. 8 показана блок-схема, иллюстрирующая вариант осуществления сети потока данных, конфигурированной для реализации операции выбора и соединения.
На Фиг. 9 показана блок-схема, иллюстрирующая вариант осуществления сети процесса.
На Фиг. 10 показана блок-схема, иллюстрирующая вариант осуществления сети процесса.
На Фиг. 11 показана блок-схема, иллюстрирующая вариант осуществления компьютерной системы, конфигурированной для реализации выполненной среды выполнения программы с планировщиком процесса.
Осуществление изобретения
В последующем детальном описании делается отсылка на приложенные чертежи, которые формируют его часть и на которых показаны в качестве иллюстрации конкретные варианты осуществления, в которых может быть реализовано изобретение. В этом отношении термины, представляющие направление, такие как «верхний», «нижний», «передний», «задний», «ведущий», «замыкающий» и т.д., используются со ссылкой на ориентацию на описываемом чертеже (чертежах). Поскольку компоненты вариантов осуществления могут быть расположены в целом ряде разных ориентаций, терминология направления используется с целью иллюстрации, но не для ограничения. Следует понимать, что могут использоваться другие варианты осуществления и структурные или логические изменения могут быть выполнены без выхода за пределы объема настоящего изобретения. Поэтому следующее подробное описание изобретения не следует рассматривать как ограничение и объем настоящего изобретение определен приложенной формулой изобретения.
Следует понимать, что признаки различных примерных вариантов осуществления, описанных здесь, могут быть скомбинированы друг с другом, если только не будет специально отмечено другое.
На Фиг. 1A показана блок-схема, иллюстрирующая вариант осуществления структуры 10 источник-цель, которая включает в себя интерфейс 12 источника и интерфейс 14 цели, соединенные с помощью соединения 16.
Структура 10 источник-цель обеспечивает набор операций, которые используются для формирования сети потока данных (например, сети 32 потока данных, показанной на Фиг. 3 и 4), которые соединяют любое количество процессов (например, процессы 40, показанные на Фиг. 3 и 4) и программу, выполняемых в компьютерной системе (например, компьютерную систему 100, показанную на Фиг. 11) в сети процесса. Сети потока данных формируют структурные компоненты алгебры процесса, такие как «передать», «принять», «выбрать», «соединить» и их комбинации, для обеспечения передачи данных между процессами. Структура 10 источник-цель обеспечивает протокол для передачи данных между интерфейсом 12 источника и интерфейсом 14 цели и обеспечивает воплощение структурных компонентов алгебры процесса в сетях потока данных.
Структура 10 источник-цель обеспечивает возможность соединения процессов в случае, когда процессы не имеют или имеют минимальную информацию друг о друге. Один процесс может предоставлять данные в другой процесс, используя структуру 10 источник-цель без какой либо информации о другом процессе. Аналогично, один процесс может принимать данные из другого процесса, используя структуру 10 источник-цель без какой либо информации о другом процессе. Каждый процесс включает в себя набор инструкций, сохраненных в считываемом в компьютере носителе информации (например, в системе 104 памяти, как показано на Фиг. 11) и исполняемых компьютерной системой. Данные, передаваемые между процессами, могут включать в себя любой тип данных, включая в себя указатели, адреса или другую структурированную или кодированную информацию.
Интерфейс 12 источника включает в себя инструкции, сохраненные на считываемом компьютером носителе информации (например, в системе 104 памяти, как показано на Фиг. 11) и исполняемые компьютерной системой для воплощения операций «соединение с целью», «отсоединение от цели», «зарезервировать», «отпустить» и «употребить», где каждая из операций интерфейса 12 источника вызывается с помощью одного или более интерфейсов 14 цели. Интерфейс 14 цели включает в себя инструкции, сохраненные на считываемом компьютером носителе записи (например, в системе 104 памяти, как показано на Фиг. 11) и исполняемые компьютерной системой для воплощения операции «предложение», где операция «предложение» интерфейса 14 цели вызывается с помощью одного или более интерфейсов 12 источника.
Операция «соединение с целью» интерфейса 12 источника устанавливает соединение 16 между интерфейсом 12 источника и интерфейсом 14 цели, которую вызывает операция соединения с целью. Операция «отсоединение от цели» интерфейса 12 источника отсоединяет соединение 16 между интерфейсом 12 источника и интерфейсом 14 цели, который вызывает операцию отсоединения от цели. Операция соединения с целью и отсоединения от цели каждая может возвращать индикатор успешного или неудачного выполнения в интерфейс 14 цели, из которого был принят вызов операции, для обозначения, было или нет соединение 16 успешно установлено или разъединено.
После установления соединения 16 между интерфейсом 12 источника и интерфейсом 14 цели, интерфейс 12 источника вызывает операцию «предложение» интерфейса 14 цели, используя соединение 16, чтобы предоставить данные в интерфейс 14 цели. В ответ на операцию «предложение» интерфейс 14 цели возвращает одно из «принято», «отклонено» или «отложено». Интерфейс 14 цели возвращает «принято» для обозначения, что интерфейс 14 цели употребил данные, предложенные интерфейсом 12 источника. Интерфейс 14 цели возвращает «отклонено» для обозначения, что интерфейс 14 цели не заинтересован в данных, предложенных интерфейсом 12 источника. Интерфейс 14 цели возвращает «отложено» для обозначения, что интерфейс 14 цели не готов к употреблению данных, предложенных интерфейсом 12 источника, в этот момент времени.
Интерфейс 12 источника обеспечивает для интерфейса 14 цели возможность запроса данных, которые периодически предлагаются с использованием операции резервирования. Интерфейс 14 цели вызывает операцию резервирования для размещения резервирования для данных, которые были предложены интерфейсом 12 источника, но были отложены интерфейсом 14 цели. Интерфейс 12 источника возвращает индикатор успеха или неудачи в интерфейс 14 цели, из которого был принят вызов на резервирование, для обозначения, было или нет резервирование выполнено успешно.
После резервирования данных интерфейс 14 цели либо вызывает операцию выпуска интерфейса 12 источника для освобождения раннее размещенного резервирования или операцию потребления для потребления зарезервированных данных. После того как интерфейс 12 источника подтвердит резервирование данных для интерфейса 14 цели, предоставляя индикатор успешного выполнения в интерфейс 14 цели, интерфейс 12 источника удерживает данные для интерфейса 14 цели, который разместил резервирование, до тех пор, пока данные не будут либо освобождены, либо употреблены интерфейсом 14 цели, который разместил резервирование.
Как показано на Фиг. 1B, каждый интерфейс 14 цели может быть подключен к любому количеству интерфейсов 12(1)-12(M) источника, вызывая операцию соединения с целью каждого из интерфейсов 12(1)-12(M) для установления соответствующих соединений 16(1)-16(M), где М представляет собой целое число, большее или равное единице и представляет M-ый интерфейс 12 источника и M-ое соединение 16. В соответствии с этим каждому интерфейсу 14 цели могут быть предложены данные из любого количества интерфейсов 12(1)-12(M) источника.
Как показано на Фиг. 1C, каждый интерфейс 12 источника может быть подключен к любому количеству интерфейсов 14(1)-14(N) цели в ответ на вызовы операции соединения с целью из каждого из интерфейсов 14(1)-14(N) цели, которые устанавливают соответствующее соединение 16(1)-16(N), где N представляет собой целое число, большее или равное единице, и представляет N-ый интерфейс 14 цели и N-ое соединение 16. В соответствии с этим каждый интерфейс 12 источника может предлагать данные в любое количество интерфейсов 14(1)-14(N) цели.
На Фиг. 2A-2C показаны блок-схемы, иллюстрирующие варианты 20A, 20B и 20C исполнения соответственно узла 20 сети потока данных. Как показано на Фиг. 2A, узел 20A может включать в себя один или более интерфейсов 12(1)-12(P) источника, где P представляет собой целое число, большее или равное единице, и представляет P-ый интерфейс 12 источника, но не представляет ни один из интерфейсов 14 цели. Узлы 20A, имеющие только интерфейсы 12 источника, формируют инициаторы данных. Узел 20B может включать в себя один или более интерфейсов 14(1)-14(Q) цели, где Q представляет собой целое число, большее или равное единице, и представляет собой Q-ый интерфейс 14 цели, но не представляет собой ни один из интерфейсов 12 источника, как показано на Фиг. 2B. Узлы 20B, имеющие только интерфейсы 14 цели, формируют приемники данных. Кроме того, узел 20C может включать в себя один или более из интерфейсов 12(1)-12(P) источника и один или более интерфейсов 14(1)-14(Q) цели, как показано на Фиг. 2C. Каждый из узлов 20A, 20B и 20C также может включать в себя один или более пассивных модулей обработки (не показаны), выполненных с возможностью преобразования данных по мере их распространения через узлы 20A, 20B и 20C.
Данные распространяются через сеть потока данных путем передачи из одного узла 20 в один или более других узлов 20, используя структуру 10 источник-цель. Каждое соединение двух узлов 20 в сети потока данных представлено как формирование пары из узла 20, воплощающего интерфейс 12 источника (например, узла 20A или узла 20C), и узла, воплощающего интерфейс 14 цели (например, узла 20B или узла 20C).
Любое количество компонентов сети потока данных может быть определено, используя структуру 10 источник-цель, и компоненты могут быть скомбинированы в значительной степени в произвольные сети потоков данных. Примеры сетей потоков данных включают в себя несвязанные буферы, связанные буферы, блоки единичного назначения, буферы производителя/потребителя, приемники данных (вызов метода), преобразование данных, таймеры и процессоры входа-выхода. Сети потока данных также могут быть составлены из более сложных сетей, используя структуру 10 источник-цель. Например, реализация фиксатора блока считывания/записи или реализация монитора могут быть выражены в отношении сетей потока данных, используя структуру 10 источник-цель.
Любое количество процессов могут представлять данные в сеть потока данных, и любое количество процессов могут принимать данные из сети потока данных, как показано на Фиг. 3. На Фиг. 3 показана блок-схема, иллюстрирующая вариант осуществления сети 30 обработки с сетью 32 потока данных, подключенной к процессам 40(1)-40(R) и 40(R+1)-40(S), где R представляет собой целое число, большее или равное единице, S представляет собой целое число, большее или равное двум, R меньше, чем S, и представляет собой R-ый и S-ый процесс 40.
Сеть 32 потока данных формирует пассивный структурный элемент потока данных, выполненный с возможностью распространения данных из процессов 40(1)-40(R) в процессы 40(R +1)-40(S). Сеть 32 потока данных включает в себя набор 34 из одного или более интерфейсов 14 цели, набор 36 из одного или более интерфейсов 12 источника и набор компонентов 38 сети, который включает в себя узлы 20 и пассивные блоки обработки, и взаимно соединяет набор 34 интерфейсов 14 цели с набором 36 интерфейсов 12 источника. Компоненты 38 сети могут включать в себя любой соответствующий тип, количество и/или комбинацию узлов 20 и пассивных блоков обработки, которые соединяют набор 34 интерфейсов 14 цели с набором 36 интерфейсов 12 источника любым соответствующим способом.
Процессы 40(1)-40(R) включают в себя соответствующие наборы 42(1)-42 (R) из одного или более интерфейсов 12 источника, где каждый набор 42 может включать в себя то же или другое количество интерфейсов 12 источника, что и в других наборах 42. Набор 34 интерфейсов 14 цели устанавливает набор 44 соединения 16 между набором 34 интерфейсов 14 цели и наборами 42(1)-42(R) интерфейсов 12 источника. Как показано на Фиг. 1B и 1C, каждый интерфейс 14 цели в наборе 44 может соединяться с любым количеством интерфейсов 12 источника в наборах 42(1)-42(R) и любое количество интерфейсов 14 цели в наборе 44 может соединяться с каждым интерфейсом 12 источника в наборах 42(1)-42(R). Каждый интерфейс 12 источника в наборах 42 (l)-42(R) обеспечивает распространение данных из процессов 40(1)-40(R) в сеть 32 потока данных, предлагая данные в один или более интерфейсов 14 цели в наборе 44, как описано выше со ссылкой на Фиг. 1A. Один или более процессов 40(1)-40(R) также могут включать в себя один или более дополнительных наборов интерфейсов 12 источника (не показаны) и/или один или более наборов интерфейсов 14 цели (не показаны), которые соединяются с одной или более другими сетям 32 потока данных (не показаны).
Процессы 40(R +1)-40 (S) включают в себя соответствующие наборы 46(R+1)-46(S) из одного или более интерфейсов 14 цели, где каждый набор 46 может включать в себя то же или другое количество интерфейсов 14 цели, что и в других наборах 46. Наборы 46(R+1)-46(S) интерфейсов 14 цели устанавливают набор 48 соединения 16 между наборами 46(R +1)-46(S) интерфейсов 14 цели и наборов из 36 интерфейсов 12 источника. Как показано на Фиг. 1B и 1C, каждый интерфейс 14 цели в наборах 46(R+1)-46(S) может подключаться к любому количеству интерфейсов 12 источника в наборе 36 и любое количество интерфейсов 14 цели в наборах 46(R+1)-46(S) могут подключаться к каждому интерфейсу 12 источника в наборе 36. Каждый интерфейс 12 источника в наборе 36 обеспечивает распространение данных из сети 32 потока данных в один или более процессов 40(R+1)-40(S), предлагая данные одному или более интерфейсам 14 цели в наборах 46(R+1)-46(S), как описано выше со ссылкой на Фиг. 1A. Один или более процессов 40(R+1)-40(S) также могут включать в себя один или более дополнительных наборов интерфейсов 14 цели (не показаны) и/или один или более наборов интерфейсов 12 источника (не показаны), которые соединяются с одной или более другими сетями 32 потока данных (не показаны).
Процессы 40(1)-40(R) могут предоставлять данные в процессы 40(R+1)-40(S), используя сеть 32 потока данных без какой-либо информации о процессах 40(R+1)-40(S). Аналогично, процессы 40(R+1)-40(S) могут принимать данные из процессов 40(1)-40(R), используя сеть 32 потока данных без какой-либо информации о процессах 40(1)-40(R).
Процесс может предоставлять данные в любое количество сетей потока данных и принимать данные из любого количества сетей потоков данных, как показано на Фиг. 4. На Фиг. 4 показана блок-схема, иллюстрирующая вариант осуществления сети 50 процесса с процессом 40, подключенным к сетям 32(1)-32(T) потока данных и 32(T+1)-32(V), где T представляет собой целое число, большее или равное единице, V представляет собой целое число, большее или равное двум, T меньше, чем V, и представляет T-ую и V-ую сети 32 потока данных.
Процесс 40 включает в себя набор инструкций программы, которые конфигурированы для приема данных из сетей 32(1)-32(T) потока данных и предоставления данных в сети 32(T+1)-32(V) потока данных. Процесс 40 включает в себя набор 54 из одного или более интерфейсов 14 цели, набора 56 одного или более интерфейсов 12 источника и набор компонентов 58 процесса и взаимно соединяет набор 54 интерфейсов 14 цели с набором 56 интерфейсов 12 источника. Компоненты 58 процесса могут включать в себя любой соответствующий тип, число и/или комбинацию инструкций и/или структур данных, которые соединяют набор 54 интерфейсов 14 цели с набором 56 интерфейсов 12 источника любым соответствующим способом.
Сети 32(1)-32(T) потока данных включают в себя соответствующие наборы 62(1)-62(T) одного или более интерфейсов 12 источника, где каждый набор 62 может включать в себя то же или другое количество интерфейсов 12 источника, что и в других наборах 62. Набор 54 интерфейсов 14 цели устанавливает набор 64 соединения 16 между набором 54 интерфейсов 14 цели и наборами 62(1)-62(T) интерфейсов 12 источника. Как показано на Фиг. 1B и 1C, каждый интерфейс 14 цели в наборе 54 может соединяться с любым количеством интерфейсов 12 источника в наборах 62(1)-62 (T) и любое количество интерфейсов 14 цели в наборе 54 может соединяться с каждым интерфейсом 12 источника в наборах 62(1)-62(T). Каждый интерфейс 12 источника в наборах 62(1)-62(T) обеспечивает распространение данных из сетей 32(1)-32(T) потока данных в процесс 40, предлагая данные в один или более интерфейсов 14 цели в наборе 54, как описано выше со ссылкой на Фиг. 1A. Сети 32(1)-32(T) потока данных каждая включает в себя один или более наборов интерфейсов 14 цели (не показаны), которые соединяются с одним или более другими процессами 40 (не показаны). Сети 32(1)-32 (T) потока данных также могут включать в себя один или более дополнительных наборов интерфейсов 12 (не показаны) и/или один или более наборов интерфейсов 14 цели (не показаны), которые соединяются с одним или более другими процессами 40 (не показаны).
Сети 32 (T+1)-32 (V) потока данных включают в себя соответствующие наборы 66(T+1)-46(F) одного или более интерфейсов 14 цели, где каждый набор 66 может включать в себя то же или другое количество интерфейсов 14 цели, что и другие наборы 66. Наборы 66(T+1)-46(V) интерфейсов 14 цели устанавливают набор 68 соединений 16 между наборами 66(T+1)-46(V) интерфейсов 14 цели и набором 56 интерфейсов 12 источника. Как показано на Фиг. 1B и 1C, каждый интерфейс 14 цели в наборах 66(T+1)-46(V) может соединяться с любым количеством интерфейсов 12 источника в наборе 56, и любое количество интерфейсов 14 цели в наборах 66(T+1)-46(V) может соединяться с каждым интерфейсом 12 источника в наборе 56. Процесс 40 обеспечивает распространение данных в одну или более сетей 32(T+1)-32(V) потока данных, обеспечивая каждым интерфейсом 12 источника в наборе 56 предложение данных в один или более интерфейсов 14 цели в наборах 66(T+1)-46 (V), как описано выше со ссылкой на Фиг. 1 A. Сети 32(T+1)-32(V) потока данных также могут включать в себя один или боле наборов интерфейсов 12 источника (не показаны) и/или один или более наборов интерфейсов 14 цели (не показаны), которые соединяются с одним или более другими процессами 40 (не показаны).
На Фиг. 5 показана блок-схема, иллюстрирующая вариант осуществления блока 70 инициатора, выполненного с возможностью воплощения операции передачи. Блок 70 инициатора включает в себя интерфейс 12 источника, но не включает в себя какой-либо из интерфейсов 14 цели. Блок 70 инициатора включен в процесс 40 и обеспечивает распространение в процессе 40 данных в сеть 32 потока данных. В соответствии с этим блок 70 инициатора воплощает операцию передачи путем приема данных из процесса 40 и предоставления данных в одну или более подключенных сетей 32 потока данных.
Блок 70 инициатора может взаимодействовать или может не взаимодействовать с основным планировщиком процесса, который планирует процессы 40 для выполнения в компьютерной системе. Таким образом, блок 70 инициатора может не включать в себя интерфейс с планировщиком.
На Фиг. 6 показана блок-схема, иллюстрирующая вариант осуществления блока 80 триггера, выполненного с возможностью воплощения операции приема. Блок триггера 80 включает в себя интерфейс 14 цели, но не включает в себя какой-либо из интерфейсов 12 источника. Блок 80 триггера включен в процесс 40 и обеспечивает возможность приема данных в процессе 40 из сети 32 потока данных. Блок 80 триггера действует как конечная точка завершения или одна из любого количества конечных точек для сетей 32 потока данных. В соответствии с этим блок 80 триггера воплощает операцию приема путем приема данных из сети 32 потока данных и предоставления этих данных в процесс 40.
Блок 80 триггера также включает в себя интерфейс 82 планировщика. Интерфейс 82 планировщика взаимодействует с основным планировщиком процесса, который планирует процесс 40 для выполнения в компьютерной системе. В частности, интерфейс 82 планировщика работает с планировщиком, обеспечивая установку паузы в процессе 40 (например, блокирование) в ответ на прием операции, содержащей запуск блока 80 триггера, когда данные не доступны немедленно. Интерфейс 82 планировщика также работает с планировщиком, обеспечивая возобновление процесса 40 (например, разблокирование) в ответ на данные операции приема, включающий в себя достижение блоком 80 триггера блока 80 триггера.
На Фиг. 7 показана блок-схема, иллюстрирующая вариант осуществления сети 90 обработки, которая включает в себя операции «передать» и «принять». На Фиг. 7 процесс 40(1) принимает данные из процесса 40(2) и предоставляет данные в процесс 40(3). Для приема данных из процесса 40(2) блоку 80(1) триггера процесса 40(1) предлагают данные из блока 70(1) инициатора процесса 40(2) и блок 80(1) триггера принимает данные, как обозначено сетью 32A потока данных, которая воплощает операцию приема. Процесс 40(1) выполняет определенное вычисление в отношении данных и передает полученные в результате данные в процесс 40(3). Для передачи данных в процесс 40(3) блок 70(2) инициатор процесса 40(1) предлагает данные в блок 80(2) триггера процесса 40(3) и блок 80(2) триггера принимает данные, как обозначено сетью 32B потока данных, которая воплощает операцию передачи.
На Фиг. 8 показана блок-схема, иллюстрирующая вариант осуществления сетей 32 потока данных, выполненных с возможностью воплощения операции выбора и соединения. Сеть 32 потока данных включает в себя узлы 20(1)-20(W+1), где W представляет собой целое число, большее или равное двум, и представляет W-ый узел 20, W-ый процесс 40 и W-ый блок 70 инициатора. Каждый узел 20(1)-20(W+1) включает в себя интерфейс 12 источника и интерфейс 14 цели. Интерфейсы 14 цели в узлах 20(1)-20(W) принимают данные из соответствующих блоков 70(1)-70(W) инициатора в соответствующих процессах 40(1)-40(W). Интерфейсы 12 источника в узлах 20(1)-20(W) каждый предоставляет данные в интерфейс 14 цели в узле 20(W+1). Интерфейс 12 источника в узле 20(W+1) предоставляет данные в блок 70 триггера в процессе 40(W+1).
Для воплощения операции выбора узел 20(W+1) принимает данные только из первого из узлов 20(1)-20(W), c тем чтобы предложить данные в узел 20(W+1), и отклоняет предложения данных из всех остальных узлов 20(1)-20(W). Узел 20(W+1) предоставляет данные в блок 80 триггера в процессе 40(W+1).
В одном варианте выполнения каждый узел 20(1)-20(W) выполнен с возможностью использования своего соответствующего интерфейса 12 источника для предложения своей идентичности в качестве данных в узел 20(W+1) в ответ на предложение данных из соответствующих блоков 70(1)-70(W) инициатора. Узел 20(W+1) использует свой интерфейс 14 цели с тем, чтобы принять первую идентичность, предложенную из набора узлов 20(1)-20(W), и отклонить все последующие идентичности, предлагаемые из набора узлов 20(1)-20(W). Узел 20(1)-20(W), который принимает ответ о приеме из узла 20(W+1), используя свой интерфейс 12 источника, принимает данные, предложенные из соответствующего блока 70(1)-70(W) инициатора, используя свой интерфейс 14 цели. Узлы 20(1)-20(W), которые принимают ответы-отклонения из узла 20(W+1), используя свои соответствующие интерфейсы 12 источника, отклоняют данные, предложенные из соответствующих блоков 70(1)-70(W) инициатора, используя свои соответствующие интерфейсы 14 цели. Узел 20(W+1) использует свой интерфейс 12 источника с тем, чтобы предложить принятую идентичность как данные в блок 70 триггера в процессе 40(W+1). Блок 70 триггера отвечает путем приема идентичности из узла 20(W+1). Процесс 40(W+1) затем получает данные операции выбора из узла 20(1)-20(W), используя идентичность, принятую из узла 20(W+1).
В другом варианте выполнения могут быть исключены узлы 20(l)-20(W) и узел 20(W+1) может принимать данные непосредственно из блоков 70(1)-70(W) инициатора. В этом варианте выполнения блоки 70(1)-70(W) инициатора предлагают данные в узел 20(W+1). Узел 20(W+1) использует свой интерфейс 14 цели, с тем чтобы принять первые данные, предложенные из набора блоков 70(1)-70(W) инициатора, и отклонить все последующие данные, предложенные из набора блоков 70(1)-70(W) инициатора. Узел 20(W+1) использует свой интерфейс 12 источника для предложения принятых данных в блок 70 триггера в процессе 40(W+1). Блок 70 триггера отвечает, принимая данные из узла 20(W+1) для завершения операции выбора.
В других вариантах выполнения операция выбора может быть воплощена в сети 32C потока данных, используя другие комбинации структуры 10 источник-цель, которая представляет собой интерфейс с другими комбинациями блоков 70 инициатора и/или блоков 80 триггера.
На Фиг. 9 представлена блок-схема, иллюстрирующая вариант осуществления сети 92 процесса, который включает в себя операцию выбора. На Фиг. 9 операция выбора воплощена между процессом 40(4) и процессами 40(5) и 40(6) путем включения сети 32C потока данных. Используя сеть 32C потока данных, процесс 40(4) принимает данные из первого из процессов 40(5) и 40(6), которые предоставляют данные в сеть 32C потока данных. Процесс 40(4) выполняет некоторые расчеты по данным и передает получаемые в результате данные в процесс 40(7), используя сеть 32D потока данных, которая воплощает операцию передачи.
Вариант осуществления, показанный на Фиг. 8, также можно использовать для воплощения операции соединения. Для воплощения операции соединения узел 20(W+1) ожидает приема данных из всех узлов 20(1)-20(W) перед тем, как будут предложены данные из всех узлов 20(1)-20(W) в блок 80 триггера в процессе 40(W+1).
В одном варианте выполнения каждый узел 20(1)-20(W) выполнен с возможностью предложения своей идентичности как части данных, предложенных в узел 20(W+1), используя интерфейс 12 источника в ответ на предложение данных из соответствующих блоков 70(1)-70(W) инициаторов. Узел 20(W+1) отслеживает предложения, принятые, используя свой интерфейс 14 цели, для определения, когда все узлы 20(1)-20(W) предложили свои идентичности. Узел 20(W+1) использует свой интерфейс 14 цели для ответа на все предложения, за исключением последнего предложения, которое было отложено. В ответ на предложения из всех принятых узлов 20(1)-20(W), узел 20(W+1) использует свой интерфейс 14 цели для вызова операции резервирования по всем узлам 20(1)-20(W), за исключением узла 20(1)-20(W), который предоставил последнее предложение. Узел 20(W+1) ожидает ответа в узел 20(1)-20(W), который предоставил последнее предложение, принятое до момента, когда узел 20(W+1) определяет, все ли резервирование было выполнено успешно, или какие-либо из резервирований были неудачными.
Все узлы 20(1)-20(W), которые приняли вызов на резервирование, используют свои соответствующие интерфейсы 14 цели для вызова операции резервирования по соответствующим блокам 70(1)-70(W) инициатора. Блоки 70(1)-70(W) инициатора отвечают на вызовы резервирования, предоставляя индикатор либо успешного, или неудачного выполнения на соответствующий вызов узлов 20(1)-20(W). Если блок 70 инициатора больше не содержит предложенные данные или предложенные данные были зарезервированы другим узлом 20 (не показан), блок 70 инициатора отвечает на вызов резервирования показателем неудачного выполнения. В противном случае блок 70 инициатора отвечает на вызов резервирования показателем удачного выполнения.
Узлы 20(1)-20(W) детектируют неудачное резервирование в ответ на прием индикаторов неудачного выполнения из соответствующих блоков 10(1)-70(W) инициаторов. Узлы 20(1)-20(W) также могут детектировать неудачное резервирование в ответ на отключение блоков 70(1)-70(W) инициаторов от соответствующих узлов 20(1)-20(W). Каждый узел 20(1)-20(W), который детектирует неудачное резервирование, отвечает на вызов резервирования узла 20(W+1) индикатором неудачного выполнения. Каждый узел 20(1)-20(W), который принял индикатор успешного исполнения из соответствующих блоков 70(1)-70(W) инициатора, отвечает на вызов резервирования узла 20(W +1) индикатором успешного выполнения.
Узел 20(W+1) детектирует любое неудачное резервирование в ответ на прием индикаторов неудачного выполнения из узлов 20(1)-20(W) или в ответ на отключение любого из узлов 20(1)-20(W). Если узел 20(W+1) детектирует какое-нибудь неудачное резервирование, узел 20(W+1) использует свой интерфейс 14 цели для вызова операции высвобождения для всех узлов 20(1)-20(W), которые ответили на вызовы резервирования индикаторами успешного выполнения. Узел 20(W+1) также возвращает показатель отложенного выполнения в узел 20(1)-20(W), который представил последнее предложение, принятое узлом 20(W+1). В ответ на прием вызова высвобождения узлы 20(1)-20(W) высвобождают успешно выполненное резервирование и, в свою очередь, вызывают операции высвобождения для соответствующих блоков 70(1)-70(W) инициатора. Блоки 10(1)-70(W) инициатора высвобождают успешное резервирование в ответ на прием вызова на высвобождение из узлов 20(1)-20(W).
Если узел 20(W+1) детектирует, что все резервирования были выполнены успешно, узел 20(W+1) использует свой интерфейс 14 цели для вызова операции потребления для всех узлов 20(1)-20(W), за исключением узла 20(1)-20(W), который предоставил последнее предложение, принятое узлом 20(W+1). Узел 20(W+1) возвращает «принято» в узел 20(1)-20(W), который предоставил последнее предложение, и этот узел 20(1)-20(W), в свою очередь, возвращает «принято» в соответствующий блок 70(1)-70(W) инициатора. Все узлы 20(1)-20(W), которые приняли вызов на потребление, в свою очередь, используют свои соответствующие интерфейсы 14 цели для вызова операции потребления по соответствующим блокам 70(1)-70(W) инициатора. Узел 20(W+1) использует свой интерфейс 12 источника с тем, чтобы предложить комбинированные данные в блок 70 триггера в процессе 40(W +1). Блок 70 триггера отвечает путем приема данных из узла 20(W+1) для завершения совместной операции.
В другом варианте выполнения узел 20(W +1) передает сигналы в блок 70 триггера в процессе 40(W+1), используя булево значение, когда все данные были зарезервированы или приняты в узлах 20(1)-20(W). Блок 70 триггера получает данные из узлов 20(1)-20(W). В этом варианте выполнения узел 20(W+1) возвращает принятые обозначения в последний из узлов 20(1)-20(W), которые предоставляют данные.
В других вариантах выполнения совместная операция может быть воплощена в сети 32C потока данных, используя другие комбинации структуры 10 источник-цель, которая составляет интерфейс с другими комбинациями блоков 70 инициатора и/или блоков 80 триггера.
На Фиг. 10 показана блок-схема, иллюстрирующая вариант осуществления сети 94 процесса, которая включает в себя операцию соединения. На Фиг. 10 операция соединения воплощена между процессом 40(8) и процессами 40(9) и 40(10) путем включения в них сети 32C потока данных. Используя сеть 32C потока данных, процесс 40(4) принимает данные, предоставляемые из каждого из процессов 40(9) и 40(10) в сеть 32C потока данных. Процесс 40(8) выполняет некоторые расчеты, используя данные, и передает полученные в результате данные в процесс 40(11), используя сеть 32E потока данных, которая воплощает операцию передачи.
Такие операции, как «передача», «прием», «выбор» и «соединение», представленные выше со ссылкой на фигуры 5-10, могут быть скомбинированы в более сложные конфигурации в других вариантах выполнения.
На Фиг. 11 показана блок-схема, иллюстрирующая вариант осуществления компьютерной системы 100, которая выполнена с возможностью воплощения исполнительной программной среды, включающей в себя планировщик процесса.
Компьютерная система 100 включает в себя один или более пакетов 102 процессора, систему 104 памяти, ноль или более устройств 106 ввода/вывода, ноль или более устройств 108 дисплея, ноль или более периферийных устройств 110 и ноль или более сетевых устройств 112. Пакеты 102 процессора, система 104 памяти, устройства 106 ввода/вывода, устройства 108 дисплея, периферийные устройства 110 и сетевые устройства 112 связаны между собой, используя набор взаимных соединений 114, которые включают в себя любой соответствующий тип, количество и конфигурацию контроллеров, шин, интерфейсов и/или других проводных или беспроводных соединений.
Компьютерная система 100 представляет любое соответствующее устройство обработки, выполненное с возможностью использования его для общего назначения или специального назначения. Примеры компьютерной системы 100 включают в себя сервер, персональный компьютер, переносной компьютер, планшетный компьютер, карманный персональный компьютер (PDA, КПК), мобильный телефон и аудио/видео устройство. Компоненты компьютерной системы 100 (то есть пакеты 102 процессора, система 104 памяти, устройства 106 ввода/вывода, устройства 108 дисплея, периферийные устройства 110, сетевые устройства 112 и взаимные соединения 114) могут содержаться в общем корпусе (не показан) или в любом соответствующем количестве отдельных корпусов (не показаны).
Пакеты 102 процессора включают в себя аппаратные потоки 116(1)-116(X), где X представляет собой целое число, большее или равное единице, и представляет X-ый аппаратный поток 116. Каждый аппаратный поток 116 в пакетах 102 процессора выполне