Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая Вариант 18.docx
Скачиваний:
25
Добавлен:
17.06.2016
Размер:
188.59 Кб
Скачать

Iret 12 тактов

DECODE EXEC ENDOP

IFETCH

X

X

X

X

X

X

X

X

X

X

X

X

CHANGE IP

Одним из путей уменьшения времени выполнения команд является совмещение операций. Используем метод простой предварительной выборки команды, конвейеризация. Когда текущая команда выполняет последнюю часть своей работы в CPU, то можно выбирать очередную команду. При рассмотрении схемы выполнения ADD можно увидеть возможность одновременного выполнения (перекрытия) двух команд без столкновений.

Рассмотрим команды с целью анализа столкновений. Представим область определения каждой команды и результат ее выполнения в виде таблицы.

Команда (функция)

Область определения

Область значений

ADD (тип)

Операнд – ячейки памяти, регистр адреса для исполнительного адреса

Акк, RD, регистр флагов

STORE WR

Ячейки памяти для исполнительного адреса, Акк, RD, RA

Ячейки памяти операнда

Jmp

IP

JS

Условие (флаги)

IP

READ

Операнд – ячейки памяти, ячейки памяти для исполнительного адреса, RA

Акк, RD

INC

RD

RD, OF

IRET

Операнд – ячейки памяти

IP, регистр флагов

t

RAM

CPU

1

1

1

1

1

1

1

1

1

2

2

2

2

2

2

2

1

1

1

1

1

1

1

2

1

1

1

1

1

Предварительная выборка

+ + + + + + + +

2

2

3

3

3

3

3

3

3

2

2

2

2

2

2

3

2

2

2

2

2

базовый цикл латентности

Латентность – это число единиц времени (тактов), разделяющих инициации.

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

Есть три класса таких помех: чтение после записи – RAW, запись после чтения – WAR, запись после записи – WAW. Когда пересекаются действия исполнения команды, то говорят о перекрытии действий.

ADD – базовый цикл латентности 14 тактов

Х

Х

+

+

+

+

+

+

+

Х

Х

Х

Х

Х

+

+

Х

Х

Х

Х

Х

EADDR Изменение IP (RA)

Для обеспечения предварительной выборки нужны дополнительные действия CPU: обновить IP и передать его содержимое в RA.

WR – базовый цикл латентности 15 тактов

Х

Х

+

+

+

+

+

+

+

Х

Х

Х

Х

Х

Х

+

+

Х

Jmp (Перекрытий действий нет) –

базовый цикл латентности 11 тактов

+

+

+

+

+

+

+

Х

Х

Х

+

JS (Перекрытий действий нет. Переход выполняется.) –

базовый цикл латентности 12 тактов

+

+

+

+

+

+

+

Х

Х

Х

Х

+

JS (Перекрытий действий нет. Переход не выполняется.) –

базовый цикл латентности 11 тактов

+

+

+

+

+

+

+

Х

Х

Х

+

READ – базовый цикл латентности 14 тактов

Х

Х

+

+

+

+

+

+

+

Х

Х

Х

Х

Х

+

+

Х

Х

INC – базовый цикл латентности 21 такта

X

X

X

X

+

+

+

+

+

+

+

X

X

X

X

X

X

X

X

X

X

+

+

X

IRET – базовый цикл латентности 12 тактов

+

+

+

+

+

+

+

Х

Х

X

Х

+

Средняя латентность:

Тип команд

Доля общего времени выполнения, коэф.

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

CiXi

ADD

0,3

14

4,2

READ

0,2

14

2,8

WR

0,15

15

2,25

JMP

0,07

11

0,77

Условный переход выполняемый

0,08

12

0,96

Условный переход невыполняемый

0,07

11

0,77

INC

0,05

21

1,05

IRET

0,08

12

0,96

Итого

13,76