4551
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
Строка 68: | Строка 68: | ||
Вторая | Вторая команда не так проста. Если <math>\neg P3 \;</math>, иначе говоря, если существует другая допустимая ресинхронизация <math>\langle r', t' \rangle \;</math>, такая, что max(t) > max(t'), тогда на любой вершине v, для которой выполняется t[v] = max(t), должно выполняться соотношение t'[v] < t[v]. Для этих вершин известно следующее свойство: | ||
<math>\forall v \in V: t'[v] < t[v] => (\exist u \in V: r[u] - r[v] > r'[u] - r'[v]) \;</math>, | |||
что означает, что если время прибытия вершины v меньше при другой ресинхронизации <math>\langle r', t' \rangle \;</math>, тогда должна существовать вершина u, такая, что r' обеспечивает больше регистров между u и v. Фактически одной такой вершиной u является начальная вершина самого длинного комбинационного пути к v, дающего задержку t[v]. | |||
Для сокращения длительности цикла переменную r необходимо изменить, сделав ее ближе к | |||
Для сокращения длительности цикла переменную r необходимо изменить, сделав ее ближе к r'. Следует отметить, что в контексте ресинхронизации важны не абсолютные значения r, но их разности. Если <math>\langle r, t \rangle \;</math> является решением задачи ресинхронизации, то <math>\langle r + c, t \rangle \;</math>, где <math>c \in \mathbb{Z} \;</math> – произвольная константа, также будет являться решением. Следовательно, r может быть сделана «ближе» к r' за счет размещения большего количества регистров между u и v, то есть либо за счет уменьшения r[u], либо за счет увеличения r[v]. Отметим, что v можно легко определить из соотношения t[v] = max(t). Независимо от того, какое значение (r[v] или r[u]) выбрано для изменения, изменение должно быть единичным, поскольку r не следует чрезмерно корректировать. Таким образом, после корректировки будут по-прежнему выполняться соотношения <math>r[v] - r[u] \le r'[v] - r'[u] \;</math> или, что эквивалентно, <math>r[v] — r'[v] \le r[u] — r'[u] \;</math>. Поскольку v легко определить, выберем для увеличения r[v]. Время прибытия t[v] можно незамедлительно уменьшить до d[v]. Это позволяет уточнить второе условие: | |||
:P3 Л P2 Л 9v 2 V: t[v] = max(t) !r[v];t[v] :=r[v] + 1;d[v]: | :P3 Л P2 Л 9v 2 V: t[v] = max(t) !r[v];t[v] :=r[v] + 1;d[v]: | ||
правка