Если свести всё разнообразие таймингов команд процессора 1801ВМ1 в единую "формулу быстродействия", позволяющую точно определить число тактов, необходимых процессору для выполнения любой команды ( при возможном нахождении различных операндов в различных типах памяти ), то формула в самом общем виде будет выглядеть так:
[Время выполнения команды] = [Суммарное время всех циклов шины] + [Суммарное время всех штрафов].
Процессор 1801ВМ1 использует следующие циклы шины Q-Bus:
1. DATI ( Чтение ) - для выборки команд и не модифицируемых данных из памяти.
2. DATO / DATOB ( Запись / Запись байта ) - только в командах MOV и MOVB для записи результата в память.
3. DATIO ( Чтение-Модификация-Запись ) - для доступа ко всем модифицируемым данным в памяти.
Время выполнения циклов процессором 1801ВМ1 зависит от продолжительности периода тактовой частоты T и времени задержки памяти tn:
Код:
DATI : [ 7*T+tn]
DATO : [10*T+tn]
DATIO: [13*T+tn+tn]
В дальнейшем изложении (для простоты) множитель *T упоминаться не будет, поэтому формулы продолжительности циклов шины будут иметь такой вид:
Код:
DATI : [7+tn]
DATO : [10+tn]
DATIO: [13+2tn]
Время задержки памяти (в тактах) для ОЗУ ДВК-1: tn = 6, для ПЗУ ДВК-1: tn = 2.
Поэтому, например - в ОЗУ ДВК-1 цикл чтения ( DATI ) будет выполняться за 7 + 6 = 13 тактов.
...
Теперь рассмотрим какие штрафы быстродействия (в тактах) имеет процессор 1801ВМ1 при выполнении команд:
Код:
1. [Штраф исполнения] = 1 - для всех команд.
2. [Штраф второго операнда] = 1 - для команд, использующих два операнда,
если один из них в памяти.
3. [Штраф отмены предвыборки] = 2 - для команд, выполняющих больше одного
цикла шины.
4. [Штраф префиксной адресации] = 1 - для каждого операнда с
префиксной адресацией.
5. [Штраф невзаимности] = 5 ( для MOV = 4 ) - для команд, у которых
первый операнд не обращается к памяти,
а второй - обращается.
Кроме того, команда MOV имеет при некоторых режимах адресации дополнительные штрафы от 1 до 4 тактов, природа которых пока совсем не понятна.
Теперь попробуем определить при помощи предложенного формализма продолжительность выполнения процессором 1801ВМ1 в ОЗУ ДВК-1 команды 1. Сначала определим используемые циклы шины и их продолжительность: DATI (чтение кода команды) + DATI (чтение смещения к адресу первого операнда) + DATI (чтение адреса первого операнда) + DATI (чтение первого операнда) + DATIO (чтение-модификация-запись второго операнда) = [7+tn]+[7+tn]+[7+tn]+[7+tn]+[13+2tn] = 77 тактов.
2. Теперь определим используемые штрафы: [Штраф исполнения]+[Штраф второго операнда]+[Штраф отмены предвыборки]+[Штраф префиксной адресации ( за второй операнд ) ] = 1+1+2+1 = 5 тактов.
3. Определим суммарную продолжительность выполнения команды: 77 + 5 = 82 такта ( что полностью соответствует измеренной величине ) .