Пример 4.

Пример 3.

Пример 2.

Пример 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 (нс)

MUL [BX]

Умножение без знака содержимого AL на операнд, адрес которого задан в команде. Операнд находится в памяти.

Базовое время: (76...83)+EA.

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

Т=(76...83)+5 = (81...88) тактов = (810...880) нс

JZ MET ; перейти на MET, если "ноль"

Базовое время: 4 такта, если нет перехода, и 16 тактов, если переход выполняется.

Других затрат времени нет.

Т=4 такта=40 нс перехода нет.

Т=16 тактов=160 нс переход выполняется.

JMP dword ptr [SI+15] ; межсегментный косвенный переход.

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

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

Имеются 2 обращения к памяти за новыми значениями IP и CS.

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

Т=24+9=33 (такта)=330 (нс).

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

Т=24+9+2*4=41 (такт)=410 (нс).

Время выполнения линейного участка программы равно сумме времен выполнения всех команд этого участка.

Оценим время выполнения ветвящейся программы на примере следующей задачи:

Ниже представлен текст соответствующей программы в предположении, что A, B и y - переменные длиной 1 байт, имеющие идентификаторы MA, MB и MY соответственно. Здесь и далее полагаем, что используемые адреса в сегменте данных - четные. Рядом с каждой командой указано количество тактов синхронизации, необходимое для ее выполнения (идентификаторы соответствуют прямому режиму адресации):

MOV BL,5 ; 4

MOV AL,MA ; 10

CMP AL,MB ; 15

JG OUT ; 4/16

INC BL ; 3

OUT: MOV MY,BL ; 15

Таким образом, если A>B, то программа выполняется за 60 тактов, в противном случае - за 51 такт.

Если оба случая равновероятны, то

Тср = (Т1+Т2)/2 = 55.5 (такта).

В общем случае для данной программы

Тср = 4+10+15+16*p1+(4+3)*p2+15=44+16*p1+7*p2.

где p1 и p2 - вероятности перехода в команде JG в случае выполнения и невыполнения условия соответственно (p1+p2=1).

Если известна количественная или хотя бы качественная оценка соотношения p1 и p2, то можно минимизировать среднее время выполнения данного фрагмента программы.

Пусть известно, что A>B при 90% различных исходных данных. Тогда для рассмотренной программы:

Тср = 44+0.9*16+0.1*7=59.1 (такта).

При обратном соотношении, то есть при p1=0.1:

Тср = 44+0.1*16+0.9*7=51.9 (такта).

Следовательно, при p1=0.1 быстрее будет выполняться программа, меняющая условие перехода:

MOV BL,6 ; 4

MOV AL,MA ; 10

CMP AL,MB ; 15

JNG OUT ; 4/16

DEC BL ; 3

OUT: MOV MY,BL ; 15

Она дает то же самое среднее время выполнения программы при p1=p2, но выигрыш при p1>p2 и проигрыш при p1<p2.

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

Рассмотрим это положение на следующем примере. Пусть необходимо вычислить произведение двух целых положительных чисел длиной в слово (S=M*N), не используя команду умножения. Предполагаем, что операнды располагаются в памяти по эффективным адресам, вычисляемым как [SI+2A] и [1148h], а результат также не превышает одного слова и должен быть записан в память по адресу [BX+SI]. Предполагаем также, что все адреса в сегменте данных четные.

Решать задачу будем по следующей схеме:

Рассмотрим несколько возможных вариантов решения.

Вариант 1.

MOV [BX+SI],0 ; 17

MOV AX,[1148h] ; 10

CYCLE: ADD [BX+SI],AX ; 23

DEC [SI+2A] ; 24

JNZ CYCLE ; 4/16

Вариант 2.

MOV AX,[1148h] ; 10

MOV CX,[SI+2A] ; 17

SUB DX,DX ; 3

CYCLE: ADD DX,AX ; 3

DEC CX ; 2

JNZ CYCLE ; 4/16

MOV [BX+SI],DX ; 16

Вариант 3.

MOV AX,[1148h] ; 10

MOV CX,[SI+2A] ; 17

SUB DX,DX ; 3

CYCLE: ADD DX,AX ; 3

LOOP CYCLE ; 15/17

MOV [BX+SI],DX ; 16

Вариант 1 использует минимальное общее количество команд. В варианте 2 обработка идет в регистрах общего назначения, но не используется специальная команда цикла, которая использована в варианте 3.

Сравнительные характеристики этих вариантов представлены в табл. 7.4

Таблица 7.4.
Вариант Количество команд Длина программы, (байт) Время выполнения, (такт)
63N+15
21N+34
20N+34

Таким образом, даже несмотря на некоторое увеличение длины, программа, реализованная в вариантах 2 и 3, при достаточно больших N выполняется почти втрое быстрее, чем реализованная в варианте 1.

Так как время выполнения этих программ зависит от величины лишь одного сомножителя, то в том случае, когда известны относительные величины сомножителей, это время можно минимизировать, используя в качестве счетчика наименьший из сомножителей.

 

 

 


 

 

 

 

 

 
Учебники к курсу
  1. Гуров В.В., Чуканов В.О. Основы теории и организации ЭВМ Интернет-университет информационных технологий - ИНТУИТ.ру, 2006
  2. Богданов А.В., Корхов В.В., Мареев В.В., Станкова Е.Н. Архитектуры и топологии многопроцессорных вычислительных систем Интернет-университет информационных технологий - ИНТУИТ.ру, 2004
  3. Новиков Ю.В., Скоробогатов П.К. Основы микропроцессорной техники Интернет-университет информационных технологий - ИНТУИТ.ру, 2006
Список литературы
 
  1. Аванесян Г.Р., Лёвшин В.П.
    Интегральные микросхемы ТТЛ, ТТЛШ: Справочник
    М.: Машиностроение, 1993
  2. Атовмян И.О.
    Архитектура вычислительных систем
    М.: МИФИ, 2002
  3. Борковский А.
    Англо-русский словарь по программированию и информатике (с толкованиями)
    М.: Русский язык, 1990
  4. Бродин В.Б., Шагурин И.И.
    Микропроцессор i486.Архитектура, программирование, ин­терфейс
    М.:ДИАЛОГ-МИФИ,1993
  5. Гуров В.В.
    Синтез комбинационных схем в примерах
    М.: МИФИ, 2001
  6. Гуров В.В., Ленский О.Д., Соловьев Г.Н., Чуканов В.О.
    Архитектура, структура и организация вычислительного процесса в ЭВМ типа IBM PC
    М.: МИФИ, 2002. Под ред. Г.Н. Соловьева
  7. Каган Б.М.
    Электронные вычислительные машины и системы
    М.: Энер­го­атом­из­дат, 1991
  8. Казаринов Ю.М., Номоконов В.Н., Подклетнов Г.С. и др.
    Микропроцессорный ком­п­лект К1810: Структура, программирование, применение
    М.: Высшая школа, 1990. Под ред. Ю.М. Казаринова
  9. Корнеев В.В., Киселев А.В.
    Современные микропроцессоры
    М.: Нолидж, 1998
  10. Лю Ю-Чжен, Гибсон Г.
    Микропроцессоры семейства 8086/8088
    М.:Радио и связь, 1987
  11. Майоров С.А., Новиков Г.И.
    Структура электронных вычислительных машин
    Л.: Машиностроение, Ленингр.отд-ие, 1979
  12. Никитин В.Д., Соловьев Г.Н.
    Операционнные системы
    М.:Мир, 1989
  13. Савельев А.Я.
    Прикладная теория цифровых автоматов
    М.: Высшая школа, 1987
  14. ГОСТ 15133-77. Приборы полупроводниковые, термины и определения
  15. ГОСТ 17021-75.Микроэлектроника, термины и определения