В машине потоков данных перевод команд в состояние готовности к выполнению производится независимо от того, доступны или нет их адресаты. Таким образом, команда может быть выполнена и один или несколько пакетов результата посланы в распределительную сеть до того, как команды – получатели будут способны принять их.
Рис. 7. тупиковая ситуация в распределительной сети
Первой проблемой, порождаемой такими принципами работы машины, может оказаться перезагрузка распределительной и управляющей сетей. Пакет результата, находящийся в распределительной сети, размещается в буфере, связанном с соответствующим селектором и переключателем. Этот пакет будет препятствовать продвижению последующих пакетов через данный участок сети до тех пор, пока находится там. Большое число пакетов, пребывающих в таком состоянии, может привести к блокировке движения в сети.
Второй проблемой является возможность возникновения тупиковых ситуаций. Тупиковая ситуация имеет место в том случае, если пакет результата А задерживает пакет результата В, в то время как пакет В необходим для перевода в состояние готовности той самой команды, для которой предназначен и к которой направлен пакет А. Такая ситуация показана на рисунке 7.
Обе указанные проблемы решаются путем введение сигналов обратной связи между блоками выполнения операций. В дополнение к существующим линиям связи добавляется еще один вид – сигнальные линии. Сигнальная линия обозначается пунктиром и используется для передачи сигнала подтверждения от одного блока выполнения операций к другому, предыдущему. Этот сигнал вырабатывается блоком специального вида, называемым сигнальным блоком (рис. 8). Сигнальный блок переводится в состояние готовности, когда на его входную линию попадает токен любого вида – либо токен данных, либо управляющий токен. Блок «поглощает» такой токен; при этом формируется сигнал подтверждения на выходной линии блока. Описанные выше блоки обратной связи использовался в качестве дополнительного входного сигнала. Пример функционального блока представлен на рис. 8.
Рис. 8. Блоки, оперирующие сигналами подтверждения.
Здесь показан блок с тремя входами: две обычные линии данных и сигнальная линия. Блок переводится в состояние готовности к выполнению, если токены данных поступили на входные линии данных, а сигнальный токен – на сигнальную линию. Блок «поглощает» входную информацию, выполняет необходимые преобразования данных и формирует результат в виде токена данных.
В некоторых случаях объектом функциональных преобразований может служить сам сигнал обратной связи. Блок OR (ИЛИ), показанный на рис. 8, переводится в состояние готовности, когда упомянутый сигнал подается на любую из его входных линий. Блок совпадения (JUN) переводится в состояние готовности, когда сигнальные токены присутствуют на всех его входных линиях. Он «поглощает» эти сигналы и формирует сигнал на выходной линии.
Сигналы обратной связи применяются для предотвращения тупиковых ситуаций следующим образом. Каждый блок, который в принципе может выдать несколько токенов на свою выходную линию (т. е. Может выполнить свою операцию неоднократно), преобразует в подобный же блок вентильного типа, управляемый сигналом обратной связи с выхода следующим за ним блока (или блоков). Если результат операции, выполняемой данным блоком, посылается в несколько пунктов назначения, для формирования общего сигнала подтверждения о доступности всех адресатов, может использоваться блок совпадения.
Достарыңызбен бөлісу: |