Системная шина, или 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 - обозначают выполнение команды в случае соот- ветственно истинности или ложности условия.