Опубликован: 05.04.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Лекция 9:

Кодирование команд (часть 3)

< Лекция 8 || Лекция 9: 12 || Лекция 10 >
Аннотация: Рассматриваются практические вопросы, связанные с машинным представлением команд различных форматов и с различными режимами адресации операндов, с дизассемблированием команд, с оценкой влияния структуры программы на время ее выполнения.

Оценка влияния структуры программы на время ее выполнения

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

Базовые времена выполнения некоторых команд приведены в табл. 9.1. Время вычисления эффективного адреса (ЕА) зависит от режима адресации (табл. 9.2). Последний столбец в табл. 9.1 показывает число обращений к памяти, необходимых для выполнения команды. Чтобы определить время выполнения команды, следует учесть выравнивание операнда, то есть его расположение в оперативной памяти. Обращение к однобайтному операнду не требует дополнительных тактов синхронизации. Время обращения к слову памяти зависит от его адреса. Если слово имеет нечетный адрес, то его передача из оперативной памяти занимает 2 цикла шины, длящихся по 4 такта синхронизации каждый. Следовательно, каждое обращение к слову с нечетным адресом требует четырех дополнительных тактов синхронизации.

Таблица 9.1.
Команды Адресация Число тактов Число обращений к памяти
ADD, SUB, AND, OR

RR

RS

SR

RI, AI

SI

3

9+EA

16+EA

4

16+EA

0

1

2

0

2

MOV

SA, AS

RR

RS

SR

RI

SI

10

2

8+EA

9+EA

4

10+EA

1

0

1

1

0

1

MUL

множитель 8 бит - R

множитель 16 бит - R

множитель 8 бит - S

множитель 16 бит - S

70…77

118…133

(76…83)+EA

(124…139)+EA

0

0

1

1

CMP

RR

RS, SR

RI, AI

SI

3

9+EA

4

10+EA

0

1

0

1

INC, DEC

16 бит - R

8 бит - R

S

2

3

15+EA

0

0

2

Условные переходы, кроме JCXZ

нет перехода

есть переход

4

16

0

0

LOOP

нет перехода

есть переход

5

17

0

0

JMP

короткий

внутрисегментный

прямой

косвенный

регистровый

межсегментный

прямой

косвенный

15

-

15

18+EA

11

-

15

24+EA

0

-

0

1

0

-

0

2

Примечание: R - адресация к регистру; A - к аккумулятору; S - к памяти; I - непосредственная адресация

Таблица 9.2.
Режим адресации Число тактов синхронизации для вычисления эффективного адреса
Прямой 6
Косвенный 5
Относительный 9

Базово-индексный

(BP)+(DI) или (BX)+(SI)

(BP)+(SI) или (BX)+(DI)

-

7

8

Относительный базово-индексный

(BP)+(DI)+disp или (BX)+(SI)+disp

(BP)+(SI)+disp или (BX)+(DI)+disp

-

11

12

Если при вычислении физического адреса производится замена сегментного регистра (вместо заданного по умолчанию используется другой, определенный префиксом замены), то время выполнения команды увеличивается на 2 такта.

Базовое время выполнения некоторых команд зависит также от значения операндов. Типичными примерами этого служат команды умножения и деления (см. табл. 9.1). Так, время выполнения команды умножения, реализованной по алгоритму умножения дополнительных кодов с пропуском такта суммирования, определяется количеством пар соседних несовпадающих разрядов (01 или 10), так как при комбинациях 00 или 11 такт суммирования с нулевым слагаемым отсутствует. Поэтому, например, для 8-разрядных операндов максимальное время умножения будет при значении множителя 01010101, а минимальное - при ненулевом множителе 10000000 (напомним, что числа в персональной ЭВМ представляются в дополнительном коде, поэтому указанный код соответствует числу -128). То есть в первом случае команда умножения будет выполняться на 7 тактов суммирования дольше, что соответствует значениям, приведенным в табл. 9.1.

Для команд условного перехода в табл. 9.1 приведено два времени: меньшее соответствует случаю, когда условие не выполняется и переход не производится, а большее соответствует реализации перехода. Во втором случае учитывается необходимость нового заполнения очереди команд и выборки следующей команды. Это же относится и к командам циклов.

Проиллюстрируем сказанное несколькими примерами. Для всех примеров будем полагать для простоты расчетов, что частота синхронизации равна 100 МГц (длительность такта 10 нс).

Пример 1.

ADD ES:[BX],DX

Команда формата "память-регистр".

Базовое время: 16+EA.

Время вычисления EA (регистровая косвенная адресация): 5 тактов.

Обозначение "ES:" в символической записи команды показывает, что в процессе формирования физического адреса операнда происходит замена сегментного регистра. Вместо используемого по умолчанию при данном режиме адресации сегментного регистра DS используется регистр ES. Эта операция требует 2 тактов синхронизации.

Команда обрабатывает слово. Если слово имеет нечетный адрес, то

Т=16+5+2+2*4=31 (такт)=310 (нс)

Если слово имеет четный адрес, то

Т=16+5+2=23 (такта)=230 (нс)
< Лекция 8 || Лекция 9: 12 || Лекция 10 >
Илья Бекиров
Илья Бекиров
Кирилл Кондратьев
Кирилл Кондратьев
Юрий Коробков
Юрий Коробков
Россия, Москва, МЭИ, 1998