Instruction_Timings
svofski edited this page Mar 14, 2015
·
1 revision
Системная шина, или 3МГц: миф или реальность?
Справочное пособие для системных программистов на "Вектор"-
подобных машинах
(C) Copyright 1994 by Spase corp. All rights reserved.
Омск, (3812) 655730 Шашков Вячеслав Александрович.
I. Работа системной шины.
Толчком к написанию этой статьи послужили работы Омского центра
программирования по установке в "Вектор"-подобные машины процессора Zilog
Z-80. Естественно, при этом хотелось повысить быстродействие компьютера за
счет того, что Z80 может работать на тактовой частоте вплоть до 12 МГц. Для
этого необходимо было понять, как в "Векторе" решена проблема взаимодействия
процессора и видеоадаптера при обращении к ОЗУ.
Для обеспечения взаимодействия ОЗУ, ПЗУ, микропроцессора и видеоа-
даптера служит системная шина. В первом приближении это - комплекс проводов,
передающих различные сигналы, и устройство управления. Именно оно определяет
эффективность использования ресурсов машины.
Работа системной шины в "Векторе" организована по циклам. Различают
два вида цикла шины: цикл с обращением процессора и цикл без обращения про-
цессора. Каждый цикл разбивается на 4 такта, а такт, в свою очередь, на 4
четверти. Длительность одного такта составляет 1 период тактовой частоты
процессора (3 МГц на "Векторе"). Рассмотрим работу системной шины по тактам.
Первый такт любого цикла шины - такт обращения видеоадаптера. Уст-
ройство управления вырабатывает сигнал переключения шины так, что на ад-
ресные входы ОЗУ приходит адрес, сформированный видеоадаптером. В конце так-
та информация, считанная из ОЗУ, заносится в регистры сдвига и затем точка
за точкой выводится на экран в течение всего цикла шины.
Второй такт цикла шины служит для приведения ее в исходное состояние
для обращения процессора. В конце такта процессор, в случае обращения к ОЗУ,
выдает сигнал MREQ. В ответ на это устройство управления формирует сигнал
ПЕР, который выбирает тип остальных тактов цикла как тактов с обращением
процессора. Если же сигнал MREQ не был выставлен, то шина отрабатывает цикл
без обращения процессора.
Во время 3-го и 4-го такта цикла без обращения процессора шина отра-
батывает холостые такты, никакие операции не производятся.
Во время 3-го такта цикла с обращением процессора (это соответствует
второму такту микропроцессора) на микросхемы ОЗУ выдается адрес, сформиро-
ванный процессором. На первой четверти 4-го такта происходит передача данных
между процессором и ОЗУ. Затем шина подготавливается к выдаче байта видеоа-
даптеру.
Все происходит нормально, если начало цикла памяти процессором сов-
падет по времени с тактом 2 цикла шины. В прочих случаях устройство управле-
ния выставляет процессору сигнал READY=0, в ответ на что процессор, начиная
со следующего такта своего цикла, перейдет в состояние ожидания, в котором
будет находиться до тех пор, пока шина не начнет выполнять третий такт. Сле-
довательно, если процессор выставил запрос на обращение к ОЗУ, например, в
3-м такте цикла шины, то он будет находиться в состоянии ожидания в течение
4-го, 1-го и 2-го тактов цикла шины.
При выполнении процессором последовательности 4-тактных команд, т.е.
команд, цикл которых состоит из 4-х тактов, например, NOP, ADD R, CMA, XCHG,
все циклы процессора оказываются согласованными с циклами шины, и дополни-
тельные такты ожидания не появляются. В остальных случаях работа шины приво-
дит к тому, что на выполнение любого машинного цикла требуется кратное 4-м
число тактов. Например, команда MOV R1,R, чей цикл занимает 5 тактов, в
действительности требует 8 тактов.
Установка процессора Z80, все циклы которого не длиннее 4-х тактов,
приведет к тому, что одна из наиболее употребляемых команд - MOV, будет ра-
ботать вдвое быстрее, что повысит общее быстродействие ПК примерно на
15-20%.
II. Таблица команд МП Intel 8080 (КР580ВМ80)
1-я колонка - время выполнения в тактах i8080;
2-я колонка - время выполнения на "Вектор"-подобных ПК.
MOV R1,R 5 8 MOV R,M 7 8 MVI R,D8 7 8
MVI M,D8 10 12 STAX RP 7 8 LDAX RP 7 8
STA ADR 13 16 LDA ADR 13 16
LXI RP,D16 10 12 SHLD ADR 16 20 LHLD ADR 16 20
PUSH RP 11 16 POP RP 10 12 SPHL 5 8
XCHG 4 4 XTHL 18 24
CMC 4 4 STC 4 4 CMA 4 4
DAA 4 4 INR R 5 8 INR M 10 12
DCR R 5 8 DCR M 10 12 INX RP 5 8
DCX RP 5 8
ADD R 4 4 ADD M 7 8 SUB R 4 4
SUB M 7 8 ADC R 4 4 ADC M 7 8
SBB R 4 4 SBB M 7 8 ANA R 4 4
ANA M 7 8 ORA R 4 4 ORA M 7 8
XRA R 4 4 XRA M 7 8 ADI D8 7 8
ACI D8 7 8 SUI D8 7 8 SBI D8 7 8
ANI D8 7 8 ORI D8 7 8 XRI D8 7 8
CMP R 4 4 CMP M 7 8 CPI D8 7 8
DAD RP 10 12
RRC 4 4 RLC 4 4 RAL 4 4
RAR 4 4
EI 4 4 DI 4 4 NOP 4 4
HLT 7 8
IN # 10 12 OUT # 10 12
PCHL 5 8 JMP ADR 10 12 J* ADR 10 12
CALL ADR 17 24 C* ADR /Y 17 24 C* ADR /N 11 16
RST N 11 16 RET 10 12 R* /Y 11 16
R* /N 5 8
III. Команды Z80, имеющие другое время выполнения.
(по материалам НТЦ "ЭЛИС", г. Москва)
ADD HL,RP DAD RP 11 12 CALL *,ADR C* ADR /N 10 12
DEC RP DCX RP 6 8 DEC REG DCR R 4 4
EX (SP),HL XTHL 19 24 INC (HL) INR M 11 16
DEC (HL) DCR M 11 16 INC RP INX RP 6 8
DEC R DCR R 4 4 JP (HL) PCHL 4 4
LD R1,R MOV R1,R 4 4 LD SP,HL SPHL 6 8
OUT #,A OUT # 11 12 IN A,# IN # 11 12
Примечание. Знаки /Y, /N - обозначают выполнение команды в случае соот-
ветственно истинности или ложности условия.