Московский государственный университет путей сообщения
Опубликован: 22.12.2006 | Доступ: свободный | Студентов: 2218 / 464 | Оценка: 4.07 / 4.02 | Длительность: 16:07:00
ISBN: 978-5-9556-0071-0
Специальности: Разработчик аппаратуры

Лекция 7: Оптимальное программирование в архитектуре управления каждым тактом

< Лекция 6 || Лекция 7: 123 || Лекция 8 >

Имитируя изменение текущего времени t и определяя состояние вычислительного процесса (на рис. 7.5 отражено изменение матрицы S в процессе компоновки программы), начнем формирование оптимизированной программы с первого командного слова.

Матрица следования после первого шага компоновки команд

Рис. 7.5. Матрица следования после первого шага компоновки команд

  1. t = 0, R = {1, 2, 3, 10, 11, 12}, \{ \tau _{2j\in R}(12)\}  = \{ 3, 1, 1, 3, 5, 5\}, \{ \theta _{j\in R}\}  = \{ 11, 15, 13, 10, 8, 8\}. После переупорядочения (по неубыванию значений \tau _{2j}(12), а для равных указанных значений — по невозрастанию значений \{ \theta _{j\in R}\}  = \{ 2, 3, 1, 10, 11, 12\}. В первое командное слово записываем инструкцию 2. Ее номер заносим в множество \alpha — множество назначенных, но не выполненных инструкций; каждая инструкция в нем снабжена счетчиком времени выполнения, который уменьшается при моделировании изменения времени. Равенство счетчика нулю свидетельствует о выполнении инструкции. Т.к. в командное слово записана инструкция обмена, и в R отсутствует информация об основных инструкциях, которые можно записать в это же слово, то после перебора всех элементов R полагаем t = 1 и переходим к заполнению следующего командного слова. Исключаем из матрицы S строку и столбец, соответствующие инструкции 2, т.к. к новому моменту времени она будет выполнена.

  2. t = 1, R = {1, 3, 4, 10, 11, 12}. После упорядочения по \tau _{2j\in  R} и \theta _{j\in R} R = {3, 4, 1, 10, 11, 12}. Запишем во второе командное слово инструкцию 3. После исключения ее номера из R вновь найдем инструкцию 4, готовую к выполнению. Ее записываем в это же командное слово. Так как инструкция обмена в командное слово уже записана, а основных в R больше нет, перейдем к заполнению третьего командного слова. Положим t = 2 и исключаем из матрицы S строку и столбец, соответствующие выполненной к этому моменту времени инструкции 3 (рис. 7.5). Назначенные для выполнения, но не выполненные к данному моменту времени инструкции (отмеченные в \alpha будем отмечать знаком *.

  3. t = 2, R = {1, 5, 10, 11, 12}. После упорядочения по \tau _{2j\in  R} и \theta _{j \in  R} R = {5, 1, 10, 11, 12}. Запишем в третье командное слово инструкции 5 и 1. Положим t = 3, преобразуем матрицу следования S, исключив из нее строки и столбцы, соответствующие назначенным инструкциям.

  4. t = 3, после упорядочения R = {5, 10, 11, 12}. Запишем в четвертое командное слово последовательно инструкции 10, 13. Положим t = 4, исключим из S строки и столбцы, соответствующие выполненным к данному моменту времени инструкциям 5 и 10 (рис. 7.6).

    Матрица следования после второго шага компоновки команд

    Рис. 7.6. Матрица следования после второго шага компоновки команд

  5. t = 4, R = \{ 6, 7, 11, 12\} ,\{ \tau _{2j\in R}(12)\}  = \{ 5, 5, 5,5\} , \{ \theta _{j\in R\} }\}  = \{ 10, 10, 8, 8\}. После упорядочения R = {6, 7, 11, 12}. Запишем в пятое командное слово инструкции 6, 7, 11. Полагаем t = 5, исключаем из S строки и столбцы, соответствующие выполненным к этому моменту времени инструкциям 13 и 11.

  6. t = 5, R = {12, 14}. Инструкции 12 и 14 запишем в шестое командное слово. Положим t = 6, исключаем из матрицы S строки и столбцы, соответствующие выполненным к этому моменту времени инструкциям 6, 7 и 12 (рис. 7.7).

    Матрица следования после третьего шага компоновки команд

    Рис. 7.7. Матрица следования после третьего шага компоновки команд

  7. t = 6, R = {8, 15}. Инструкции 8 и 15 записываем в седьмое командное слово. Т.к. инструкция обмена в ней не записана и существуют инструкции, находящиеся в процессе выполнения, продолжим компоновать седьмое командное слово, положив t = 7. Исключим из S строку и столбец, соответствующие инструкции 14 (рис. 7.8).

    Матрица следования после четвёртого шага компоновки команд

    Рис. 7.8. Матрица следования после четвёртого шага компоновки команд

  8. t = 7,  R = \varnothing. Продолжим (в соответствии с приоритетом при выполнении!) попытку заполнения седьмого командного слова. Положим t = 8, исключим из S строки и столбцы, соответствующие инструкциям 8 и 15 (рис. 7.9).

    Матрица следования после пятого шага компоновки команд

    Рис. 7.9. Матрица следования после пятого шага компоновки команд

  9. t = 8, R = {9, 16, 17}. В седьмое командное слово записываем инструкцию обмена 9. Положим t = 9, исключим из матрицы S строку и столбец, соответствующие инструкции 9.

  10. t = 9, R = {16, 17}. В восьмое командное слово запишем инструкции 16 и 17. Так как инструкция обмена не записана и \alpha  \ne  \varnothing, продолжим попытку заполнения восьмого командного слова. Положим t = 10. К этому моменту времени не заканчивается выполнение ранее назначенных инструкций, матрица следования сохраняет прежний вид (рис. 7.10).

    Матрица следования после шестого шага компоновки команд

    Рис. 7.10. Матрица следования после шестого шага компоновки команд

    Положим t = 11. К этому моменту времени выполняются инструкции 16 и 17. Исключим из матрицы S строки и столбцы, соответствующие этим инструкциям (рис. 7.11).

    Матрица следования после седьмого шага компоновки команд

    Рис. 7.11. Матрица следования после седьмого шага компоновки команд

  11. t = 11, R = {18}. Запишем инструкцию 18 в девятое командное слово. Полагаем t = 12. К этому моменту нет инструкций, выполнение которых закончено, а R = \varnothing. Полагаем t = 13, продолжаем попытку заполнения девятого командного слова. К этому моменту заканчивается выполнение инструкции 18. Исключим строку и столбец, соответствующие этой инструкции, из матрицы S.

  12. t = 13, R = {19}. Инструкцию обмена 19 запишем в девятое командное слово. Матрица следования исчерпана, составление программы (рис. 7.12) заканчивается, через один такт t = 14 заканчивается и ее выполнение.

    Программа в окончательном виде

    увеличить изображение
    Рис. 7.12. Программа в окончательном виде

    Перебор возможных вариантов убеждает в том, что полученное время выполнения скомпонованной программы минимально. На рис. 7.13 представлена диаграмма выполнения программы.

    Временная диаграмма выполнения программы

    Рис. 7.13. Временная диаграмма выполнения программы

    Однако длина программы может быть уменьшена на одно командное слово хотя бы за счет записи инструкции 8 в шестое командное слово со смещением всех последующих инструкций.

< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Вадим Козлов
Вадим Козлов
Россия, Москва
Тимофей Маханько
Тимофей Маханько
Россия