Быстродействие ПК8002

(первый вариант 23.03.2010, последняя правка 04.04.2010)

Данный раздел составлен по результатам тестов, которые выполнил на своем ПК8002 observer-k, за что ему большое спасибо!
Тесты разработал Иван Городецкий, которому также объявляется благодарность :)
Отдельное спасибо Дмитрию Целикову за интерпретацию результатов теста турбо-режима.

Процессор: КР580ВМ80 2,5 МГц
2 режима работы:
1. "Нормальный" (не турбо) - торможение процессора постоянно и не зависит от того, какая часть кадра сейчас выводится на экран (при отключенных спрайтах).
2. Турбо - торможение процессора при выводе бордюра становится значительно менее жестким (поэтому самый быстрый вариант турбо - 50 Гц при 192 строках, а самый медленный - 60 Гц при 212 строках).
Характеристики развертки:
1. При кадровой частоте 50 Гц - в кадре 312 строк по 160 тактов.
2. При кадровой частоте 60 Гц - в кадре 260 (именно 260, а не 262) строк по 160 тактов.
Активных строк 192 или 212.

Растактовка почти всех команд. Для сравнения также приведено паспортное число тактов на команду для КР580ВМ80.

Команды
По документации на КР580ВМ80
ПК8002 (не турбо)
ПК8002 бордюр (турбо)
Aci D8
7
8
8
Adc R
4
4
4
Adc M
7
8
8
Adi D8
7
8
8
Add R
4
4
4
Add M
7
8
8
Ana R
4
4
4
Ana M
7
8
8
Ani D8
7
8
8
C* Adr (N)
11
16
12
C* Adr (Y)
17
32
22
Call Adr
17
32
22
Cma
4
4
4
Cmc
4
4
4
Daa
4
4
4
Dad RP
10
12
10
Dcr R
5
8
5,33 (*)
Dcr M
10
16
12
Dcx RP
5
8
5,33 (*)
Di
4
4
Ei
4
4
In D8
10
12
12
Inr R
5
8
5,33 (*)
Inr M
10
16
12
Inx RP
5
8
5,33 (*)
J* Adr (N)
10
12
12
J* Adr (Y)
10
12
12
Jmp Adr
10
12
12
Lda Adr
13
16
16
Ldax RP
7
8
8
Lhld Adr
16
20
20
Lxi RP,D16
10
12
12
Mov R,R
5
8
5,33 (*)
Mov M,R
7
12
10
Mov R,M
7
8
Mvi R,D8
7
8
8
Mvi M,D8
10
16
12
Nop
4
4
4
Ora R
4
4
4
Ora M
7
8
8
Ori D8
7
8
8
Out D8
10
16
12
Pchl
5
8
Pop RP
10
12
12
Push RP
11
20
16
R* (N)
5
8
5,33 (*)
R* (Y)
11
16
12
Ral
4
4
4
Rar
4
4
4
Ret
10
12
12
Rlc
4
4
4
Rrc
4
4
4
Rst N
11
20
Sbb R
4
4
4
Sbb M
7
8
8
Sbi D8
7
8
8
Shld Adr
16
28
20
Sphl
5
8
5,33 (*)
Sta Adr
13
20
16
Stax RP
7
12
10
Stc
4
4
4
Sub R
4
4
4
Sub M
7
8
8
Sui D8
7
8
8
Xchg
4
4
4
Xra R
4
4
4
Xra M
7
8
8
Xri D8
7
8
8
Xthl
18
32
24

Примечание (*) - не стоит понимать количество тактов на команду 5,33 буквально. Конечно, число тактов для каждой отдельно взятой команды целое. Дробное "в среднем" значение в данном случае соответствует соотношению две пятитактных команды на одну шеститактную. Почему не пять пятитактных на одну семитактную или другие подобные соотношения - см. ниже комментарии по турбо-режиму.

Комментарий по "нормальному" (не турбо) режиму.
Из таблицы видно, что если команда только читает из памяти (или порта), то растактовка аналогична Вектору-06Ц (циклы по 4 такта, один из них - для чтения процессора). При записи в память или порт есть дополнительная задержка (похоже на ПК8000, но там задержка есть и при чтении).

Комментарий по турбо-режиму.
В турбо-режиме на бордюре (под бордюром в данном случае подразумеваются строки до и после активной области изображения, а также 32 из 160 тактов каждой строки активной области) торможение становится значительно более "щадящим" - процессору доступны 7 тактов из каждых 8-ми. Запись, как и в "нормальном" (не турбо) режиме происходит с дополнительной задержкой.

Отдельно стоит отметить, что отключение изображения в турбо-режиме позволяет выполнить за прерывание всего на 1-2 команды больше, чем при включенном изображении. Т.е. в активной области изображения видеоконтроллер продолжает производить выборки из памяти практически в обычном режиме. Причина имеющегося минимального различия быстродействия при включенном и выключенном отображении картинки пока неизвестна.