Времена выполнения команд процессора MC68020, страница 4

+---------(5)-------+--------------(8)--------------+

счет тактов

Обозначения:

#1  -  MOVE.L  D4,(A1)+

#2  -  ADD.L   D4,D5

#3  -  MOVE.L  (A1),-(A2)

#4  -  ADD.L   D5,D6

Рис. 8-6. Действия процессора в примере 4

Приведенные примеры демонстрируют сложность вычисления  времени выполнения команд MC68020. Невозможно предсказать точное  время выполнения отдельной команды в тактах, так как  перекрытие  выполнения зависит от последовательности команд, расположения  их в памяти, а также от числа циклов задержки памяти. В этом можно убедиться, сравнивая времена выполнения команд по отдельности и в совокупности на Рис.8-3,...,8-6. Эти данные собраны воедино в

Таблице 8-1, из которой видно, как время  выполнения  отдельной команды варьируется в зависимости от контекста.

Таблица 8-1. Сравнение времен выполнения команд для тестового потока команд

-----------T--------------T-------------T----------T----------¬

¦команда   ¦   пример 1   ¦   пример 2  ¦ пример 3 ¦ пример 4 ¦

¦          ¦              ¦             ¦          ¦ ненулевая¦

¦          ¦невыровненные ¦ выровненные ¦команды в ¦ задержка,¦

¦          ¦   команды    ¦   команды   ¦кэш-памяти¦ команды в¦

¦          ¦              ¦             ¦          ¦кэш-памяти¦

+----------+--------------+-------------+----------+----------+

¦MOVE.L    ¦      6       ¦     4       ¦    4     ¦     5    ¦

¦D4,(A1)+  ¦              ¦             ¦          ¦          ¦

+----------+--------------+-------------+----------+----------+

¦ADD.L     ¦      0       ¦     3       ¦    0     ¦     0    ¦

¦   D4,D5  ¦              ¦             ¦          ¦          ¦

+----------+--------------+-------------+----------+----------+

¦MOVE.L    ¦      9       ¦     6       ¦    7     ¦     8    ¦

¦(A1),-(A2)¦              ¦             ¦          ¦          ¦

+----------+--------------+-------------+----------+----------+

¦ADD.L     ¦      1       ¦     3       ¦    1     ¦     0    ¦

¦   D5,D6  ¦              ¦             ¦          ¦          ¦

+----------+--------------+-------------+----------+----------+

¦всего     ¦              ¦             ¦          ¦          ¦

¦  тактов  ¦      16      ¦     16      ¦    12    ¦     13   ¦

L----------+--------------+-------------+----------+----------8.2 ТАБЛИЦЫ ВРЕМЕН ВЫПОЛНЕНИЯ КОМАНД

Ниже приведены таблицы времен выполнения команд  для  следующих предположений:

1) Все операнды - длинные слова, выровненные как в стеке,

2) Используется 32-битная шина данных,

3) Используется память с нулевой задержкой

(чтение/запись за 3 такта).

Для каждой команды и каждого способа адресации приведено по три значения времени выполнения (в тактах):

1) Для наилучшего случая (ЛС), когда  команда  находится  в кэш-памяти, и когда перекрытие с другими командами  максимально.

2) Для случая "только кэш-памяти" (ТК), когда команда находится в кэш-памяти, но выполняется без всякого  перекрытия.

3) Для наихудшего случая (ХС), когда команда не находится в кэш-памяти или кэш-память отключена и, кроме  того,  команда выполняется без всякого перекрытия.

Размер операндов влияет на скорость выполнения команд только  в том случае, когда используются непосредственные операнды.  Если не оговорено обратное, время выполнения команд при  непосредственных байтовых и словных операндах одинаково.

Далее в таблицах для характеристики времени выполнения  команды в каждой конкретной ситуации используются группы из четырех чисел, три из которых заключены в скобки. Число вне скобок -  это общее число тактов, отводимых  на  выполнение  команды.  Первая цифра в скобках представляет собой число  выполняемых  командой циклов чтения операндов. Вторая цифра представляет собой  число выполняемых  командой выборок командных слов, включая все предвыборки, заполняющие конвейер  элементами  последующих  команд.

Третья цифра представляет собой число выполняемых командой циклов  записи. Рассмотрим пример табличной характеристики времени выполнения команды:

24 (2/3/0)

^   ^ ^ ^

общее число тактов   ---------------   ¦ ¦ ¦

число циклов чтения  ------------------- ¦ ¦

число циклов выборки командных слов ------ ¦

число циклов записи   ---------------------Общее число тактов занятости шины в  этом  случае  определяется следующим образом:

(2 цикла_чтения * 3 такта/цикл_чтения) +

+ (3 цикла_выборки_команд * 3 такта/цикл_выборки) +

+ (0 циклов_записи * 3 такта/цикл_записи) =

= 15 тактов занятости шины

24 такта - 15 тактов(занятости шины) = 9 внутренних тактов

Пример, использованный здесь, заимствован из колонки "наихудший случай" для выборки по исполнительному адресу при способе адресации ([d{32},B],I,d{32}). Колонка "наилучший случай"  при  том же  способе  адресации  содержит группу чисел 17(2/0/0). В этой ситуации выборка командных слов не происходит, поскольку команды находятся в кэш-памяти и для  секвенсора  нет  необходимости обращаться к внешней памяти.

Первые несколько таблиц содержат данные только по  времени  вычисления исполнительных адресов, времени выборки по этим  адресам, а также по времени выборки непосредственных операндов. Подобная организация таблиц обусловлена тем обстоятельством,  что некоторые команды не требуют вычисления исполнительных  адресов или выборки. Например, для команды CLR <ИА>, чтобы получить общее время выполнения команды, необходимо прибавить к числу тактов, указанному для нее в Таблице 8.2.11 Однооперандные  команды, число тактов, требуемое для вычисления исполнительного  адреса одного операнда (поскольку выборки операнда не требуется).

Эта команда осуществляет только запись в  память  или  регистр.

Для ряда команд, использующих определенные  способы  адресации, приводимые характеристики времени выполнения не учитывают  затрат времени на вычисление адресов или выборку операндов. В этих случаях в сноске указано, какие дополнительные таблицы требуются для подсчета времени.