Лекция 7: Оптимальное программирование в архитектуре управления каждым тактом
Имитируя изменение текущего времени t и определяя состояние вычислительного процесса (на рис. 7.5 отражено изменение матрицы S в процессе компоновки программы), начнем формирование оптимизированной программы с первого командного слова.
-
t = 0, R = {1, 2, 3, 10, 11, 12},
,
. После переупорядочения
(по неубыванию значений
, а для равных указанных
значений — по невозрастанию значений
.
В первое командное слово записываем инструкцию 2. Ее номер заносим в множество
— множество назначенных, но не выполненных инструкций; каждая инструкция в нем снабжена счетчиком
времени выполнения, который уменьшается при моделировании изменения времени. Равенство
счетчика нулю свидетельствует о выполнении инструкции. Т.к. в командное слово
записана инструкция обмена, и в R отсутствует информация об
основных инструкциях, которые можно записать в это же слово, то после перебора всех элементов R полагаем t = 1 и переходим к заполнению
следующего командного слова.
Исключаем из матрицы S строку и столбец, соответствующие инструкции 2, т.к.
к новому моменту времени она будет выполнена. -
t = 1, R = {1, 3, 4, 10, 11, 12}. После упорядочения по
и
R = {3, 4, 1, 10, 11, 12}.
Запишем во второе командное слово инструкцию 3. После
исключения ее номера из R вновь найдем инструкцию 4, готовую к
выполнению. Ее записываем в это же командное слово. Так как инструкция обмена в командное
слово уже записана, а основных в R больше нет, перейдем к заполнению
третьего командного слова. Положим t = 2 и исключаем из матрицы S строку
и столбец, соответствующие выполненной к этому моменту времени инструкции 3 (рис. 7.5).
Назначенные для выполнения, но не выполненные к данному моменту времени инструкции (отмеченные
в
будем отмечать знаком *. -
t = 2, R = {1, 5, 10, 11, 12}. После упорядочения по
и
R = {5, 1, 10, 11, 12}. Запишем
в третье командное слово инструкции 5 и 1. Положим t = 3, преобразуем матрицу следования S, исключив
из нее строки и столбцы, соответствующие назначенным инструкциям. -
t = 3, после упорядочения R = {5, 10, 11, 12}. Запишем в четвертое командное слово последовательно инструкции 10, 13. Положим t = 4, исключим из S строки и столбцы, соответствующие выполненным к данному моменту времени инструкциям 5 и 10 (рис. 7.6).
-
. После упорядочения R =
{6, 7, 11, 12}. Запишем в пятое командное
слово инструкции 6, 7, 11. Полагаем t = 5, исключаем из S строки и столбцы,
соответствующие выполненным к этому моменту времени инструкциям 13 и 11. -
t = 5, R = {12, 14}. Инструкции 12 и 14 запишем в шестое командное слово. Положим t = 6, исключаем из матрицы S строки и столбцы, соответствующие выполненным к этому моменту времени инструкциям 6, 7 и 12 (рис. 7.7).
-
t = 6, R = {8, 15}. Инструкции 8 и 15 записываем в седьмое командное слово. Т.к. инструкция обмена в ней не записана и существуют инструкции, находящиеся в процессе выполнения, продолжим компоновать седьмое командное слово, положив t = 7. Исключим из S строку и столбец, соответствующие инструкции 14 (рис. 7.8).
-
. Продолжим (в соответствии с
приоритетом при выполнении!) попытку заполнения седьмого командного слова. Положим t = 8,
исключим из S строки и столбцы, соответствующие инструкциям 8 и 15 (рис. 7.9). -
t = 8, R = {9, 16, 17}. В седьмое командное слово записываем инструкцию обмена 9. Положим t = 9, исключим из матрицы S строку и столбец, соответствующие инструкции 9.
-
t = 9, R = {16, 17}. В восьмое командное слово запишем инструкции 16 и 17. Так как инструкция обмена не записана и
, продолжим попытку заполнения
восьмого командного слова. Положим t = 10. К этому моменту
времени не заканчивается выполнение ранее назначенных инструкций, матрица следования
сохраняет прежний вид (рис. 7.10).Положим t = 11. К этому моменту времени выполняются инструкции 16 и 17. Исключим из матрицы S строки и столбцы, соответствующие этим инструкциям (рис. 7.11).
-
t = 11, R = {18}. Запишем инструкцию 18 в девятое командное слово. Полагаем t = 12. К этому моменту нет инструкций, выполнение которых закончено, а
. Полагаем t = 13, продолжаем
попытку заполнения девятого командного слова. К этому моменту заканчивается выполнение инструкции 18. Исключим строку и
столбец, соответствующие этой инструкции, из матрицы S. -
t = 13, R = {19}. Инструкцию обмена 19 запишем в девятое командное слово. Матрица следования исчерпана, составление программы (рис. 7.12) заканчивается, через один такт t = 14 заканчивается и ее выполнение.
Перебор возможных вариантов убеждает в том, что полученное время выполнения скомпонованной программы минимально. На рис. 7.13 представлена диаграмма выполнения программы.
Однако длина программы может быть уменьшена на одно командное слово хотя бы за счет записи инструкции 8 в шестое командное слово со смещением всех последующих инструкций.








