
-
NS16C550-совместимый универсальный асинхронный приемо-передатчик (UART, Universal Asynchronous Receiver-Transmitter), 2 шт.;
-
многорежимный двунаправленный параллельный порт (режимы: стандартный IBM и Centronics-совместимый (SPP, Standard Parallel Port); EPP, Enhanced Parallel Port; ECP, Extended Capabilities Port);
-
контроллер дисковода гибких дисков (16-байтный буфер данных FIFO);
-
часы реального времени (RTC, Real Time Clock) и CMOS RAM, емкостью 128 байт (14 байт для часов, 114 — для установок программы SETUP);
-
8042-Совместимый контроллер клавиатуры.
В состав многих последующих чипсетов входило всего две микросхемы:
-
контроллер-концентратор памяти (MCH, Memory Controller-Hub), т. н. северный мост, выполняет функции интерфейса с памятью и графической подсистемой;
-
контроллер-концентратор ввода-вывода (ICH Input-Output Controller-Hub), т. н. южный мост, выполняет функции интерфейса со всеми остальными устройствами.
Вместе с ними также использовалась еще одна микросхема, которую можно назвать контроллером ввода-вывода, в состав которой входили основные порты, интерфейсы и контроллеры самого низкого уровня, например, параллельный и последовательный порты.
Сейчас, когда контроллер памяти и графический процессор интегрированы на одном кристалле или в одном корпусе с центральным процессором, в составе чипсета осталась только одна микросхема — контроллер-концентратор платформы (PCH, Platform Controller-Hub).
Таким образом, в области архитектуры персональных компьютеров действует общая тенденция, характерная для микроэлектроники в целом — повышение степени интеграции и, соответственно, уменьшение числа микросхем в системе. Нетрудно увидеть, что в недалеком будущем, в ходе этого процесса будет достигнута конечная точка — персональный компьютер на одном кристалле, и идея микроконтроллера (микрокомпьютера) получит новое воплощение на очередном витке спирали развития. В принципе, она и сейчас уже проявляется в архитектуре ARM.
ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОРА С ОСТАЛЬНЫМИ УСТРОЙСТВАМИ ЭВМ. ФОРМИРОВАНИЕ ШИН ЭВМ
Множество выводов и сигналов процессора
Классификация выводов процессора
Все устройства ЭВМ связаны между собой посредством проводников, по которым передаются сигналы. Проводники и передаваемые по ним сигналы делятся на три группы: шину адреса, шину данных и шину управления. Большинство сигналов ЭВМ формируется на основе сигналов процессора.
Процессор связан с другими элементами системы посредством выводов. Выводы процессора можно классифицировать следующим образом:
-
Информация (сигналы) или энергия (питание).
-
По типу шины системы: данные, адрес, управление.
-
По направлению передачи информации (сигналов): входы, выходы, двунаправленные.
-
Для выходных выводов количество состояний: два (0 или 1) или три (0, 1, Z (высокое сопротивление)). Состояние высокого сопротивления означает просто отключение вывода от шины, что требуется для исключения возможности конфликта уровней сигналов при объединении различных устройств по выходам.
Назначение выводов процессора Intel8080
Принципиальное представление о том, посредством каких сигналов процессор взаимодействует со своим окружением, можно получить из описания классических процессоров Intel8080 и Intel8086.
Полное представление о сигналах процессора можно получить, посмотрев, как менялось множество входных-выходных сигналов в процессорах Intel.
Рис. Условное графическое обозначение
процессора Intel8080
Процессор Intel8080 имеет сорок выводов (тип корпуса — DIP-40).
Назначение выводов процессора Intel8080 (рис.) таково:
-
Питание:
-
UCC1, UCC2, UIO — +5В, +12В, -5В соответственно.
-
GND (Ground) — земля.
-
Входы-выходы:
-
D0-D7 — данные. Принимаемые данные интерпретируются процессором в зависимости от машинного цикла и кода операции выполняемой команды. В первом машинном цикле любой команды данные интерпретируются как код операции команды. Данные, принимаемые в следующих циклах, воспринимаются как операнды или адреса операндов в памяти или внешних устройствах. При этом надо учесть, что операнды в силу специфики действия, выполняемого командой, тоже могут быть адресами. Такими командами являются, например, команды перехода. Передаваемые данные интерпретируются в зависимости от такта. В первом такте каждого машинного цикла процессор выводит по линиям данных информацию, представляющую собой т. н. байт состояния, значение которого определяет тип машинного цикла (табл.), в последующих — операнды.
-
Входы:
-
RDY (Ready) — готовность. Если сигнал на входе RDY переходит на нижний уровень, то процессор ожидает готовности внешнего устройства (переходит в состояние ожидания).
-
HLD (Hold) — захват. Этот сигнал используется для передачи функций по управлению системой от процессора к внешнему устройству. В частности этот сигнал используется для предоставления внешнему устройству прямого доступа к памяти. В этом случае формирование и выдачу адресов, формирование сигналов записи и чтения осуществляет внешнее устройство.
-
INT (Interrupt) — запрос прерывания. Используется для того, чтобы сообщить процессору о том, что внешнему устройству требуется его внимание для ввода-вывода информации.
-
С1, С2 — тактовые импульсы.
-
SR (Set/Reset) — сброс. Сигнал установки процессора в начальное состояние.
-
Выходы:
-
A0-A15 — 16 адресных линий (процессор адресует 64 КБайта памяти).
-
HLDA (Hold Available) — подтверждение захвата, устанавливается в ответ на сигнал HLD.
-
WI (Waiting) — сигнал ожидания, устанавливается при переходе RDY на низкий уровень.
-
INTE (Interrupt Enable) — разрешение прерывания. Если на этом выходе единичка, то прерывания разрешены.
-
RC (Receive) — прием (чтение, RD, R). Процессор устанавливает высокий уровень этого сигнала, если необходимо провести чтение данных из памяти или ввод данных из внешнего устройства.
-
TR# (Transmit) – передача (запись, WR#, W#). Используется для записи данных в память или для вывода данных во внешнее устройство.
-
SYN — синхронизация. Процессор выдает этот сигнал в начале каждого машинного цикла.
Прим. Знак # означает, что активный уровень сигнала — низкий.
Формат байта состояния и типы машинного цикла процессора Intel8080
Разрядам байта состояния, выдаваемого по линиям данных в первом такте каждого машинного цикла, соответствуют следующие сигналы:
-
D7 — MR, Memory Read — чтение памяти;
-
D6 — INP, Input — ввод;
-
D5 — M1 — цикл М1, прием первого байта команды;
-
D4 — OUT, Output — вывод;
-
D3 — HLTA, Halt Available — подтверждение останова;
-
D2 — STACK — стек;
-
D1 — WO#, Write-Output — запись-вывод;
-
D0 — INTA, Interrupt Available — подтверждение прерывания.
Поскольку в третьем такте машинного цикла по шине данных происходит обмен информацией между процессором и его окружением, байт состояния должен быть зафиксирован (защелкнут) в специальном или общем устройстве — системном контроллере или регистре общего назначения для формирования необходимых управляющих сигналов.
Табл. Соответствие типов машинного цикла
конкретным значениям байта состояния
Тип машинного цикла |
Байт состояния |
|||||||
D7 MR |
D6 INP |
D5 M1 |
D4 OUT |
D3 HLTA |
D2 STACK |
D1 WO# |
D0 INTA |
|
Выбор команды |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
Чтение памяти |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Запись в память |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Чтение стека |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
Запись в стек |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
Ввод |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Вывод |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Прерывание |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
Останов |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
Прерывание при останове |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
Здесь можно отметить, что ограничение на количество выводов корпуса процессора является весьма существенным. Поэтому имеет место своеобразное уплотнение сигналов — одному выводу может соответствовать более одного сигнала. В процессоре Intel8080 таким примером являются выводы данных. По второму признаку приведенной выше классификации они относятся и к шине данных, и к шине управления. Такое уплотнение мы будем наблюдать и в последующих процессорах.
Развитие множества сигналов в процессорах Intel
Назначение выводов процессора Intel8085
Процессор Intel8085 также был выпущен в корпусе DIP-40 (рис.).
Рис. Выводы процессора Intel8085
Однако, несмотря на то, что количество выводов осталось прежним, количество сигналов значительно увеличилось. Изменения были таковы:
-
шина данных объединена с младшей половиной адресной шины. Для того чтобы информировать окружение о типе информации, находящейся в данный момент на этой шине, введен выходной сигнал ALE (STB), разрешение захвата адреса;
-
сделаны отдельные выводы для сигналов состояния, определяющих тип машинного цикла (IO/M# (ввод-вывод, память), S1, S0):
-
001 — запись;
-
010 — чтение;
-
101 — вывод;
-
110 — ввод;
-
011 — чтение КОП;
-
111 — подтверждение запроса на прерывание;
-
Z00 — останов (Z — третье состояние);
-
ZXX — ожидание (X — любое значение);
-
ZXX — сброс;
-
сделаны выводы для ввода-вывода последовательных данных: вход SID и выход SOD;
-
добавлены четыре входа запросов прерывания: TRAP (запрос немаскированного прерывания), RST7.5, RST6.5, RST5.5 (приведены по порядку убывания приоритета). В отличие от входа INTR, запросы, принимаемые по этим входам, не требуют приема процессором команды вызова подпрограммы по шине данных. Вызов подпрограммы происходит по фиксированным адресам: 24H, 3CH, 34H, 2CH соответственно;
-
сделан отдельный вывод подтверждения запроса прерывания INTA#;
-
введен выходной сигнал RESET OUT, информирующий окружение об окончании сброса процессора;
-
из выводов питания остались только два: Vcc (+5В) и Vss (земля);
-
убраны выходы подтверждения состояния ожидания WI и разрешения прерывания INTE.
Назначение выводов процессора Intel8086
В процессоре Intel8086 множество входных и выходных сигналов продолжало совершенствоваться, хотя количество выводов оставалось прежним — 40 (корпус DIP-40) (рис.).
В скобках на рис. приведены сигналы, использующиеся только в максимальном режиме.
Рис. Выводы процессора Intel8086
Описание сигналов i8086:
Входы-выходы:
-
A/D15-A/D0 — мультиплексированный канал адреса-данных;
-
RQ#/GT1#, RQ#/GT0# — запрос-подтверждение (Request/Grant) на управление шиной (максимальный режим) вместо сигналов HLD и HLDA.
Входы:
-
NMI — немаскируемый запрос прерывания;
-
INT — маскируемый запрос прерывания;
-
С — тактовый сигнал;
-
SR — установка-сброс;
-
RDY — готовность;
-
TEST# — проверка. Сигнал, используемый совместно с командой WAIT. Выполняя ее, процессор проверяет уровень этого сигнала. Если он активный, то процессор переходит к выполнению следующей команды. В противном случае он вводит холостые такты и остается в состоянии ожидания. Это расширяет возможности по синхронизации работы процессора и других устройств;
-
MN/MX# — минимальный/ максимальный режим. Определяет один из двух режимов работы процессора: минимальный или максимальный. В минимальном режиме управляющие сигналы генерирует процессор, а в максимальном — системный контроллер. Назначение восьми выводов процессора зависит от режима;
-
HLD — захват.
Выходы:
-
HLDA — подтверждение захвата;
-
A19-A16 — канал адреса;
-
BHE# — разрешение старшего байта. Означает, что 8-разрядные данные передаются по старшей половине шины адреса-данных A/D15-A/D8. Это позволяет подключать одну часть однобайтных устройств к младшей половине этой шины, а другую — к старшей;
-
RD# — чтение;
-
WR# — запись;
-
M/IO# — память/устройство ввода-вывода;
-
DT/R# — передача-прием данных;
-
DEN# — разрешение передачи-приема данных;
-
ALE — стробирующий сигнал адреса;
-
INTA# — подтверждение прерывания;
-
SA7-SA3, SA2# - SA0# — состояние:
-
SA5 — разрешение-запрещение прерываний.
-
SA4-SA3 — сегментный регистр, по которому формируется физический адрес:
-
00 — ES, сегмент дополнительных данных;
-
01 — SS, сегмент стека;
-
10 — CS, сегмент команд;
-
11 — DS, сегмент данных.
-
SA2# - SA0# — цикл шины (максимальный режим):
-
000 — подтверждение прерывания;
-
001 — ввод;
-
010 — вывод;
-
011 — останов;
-
100 — извлечение кода операции команды;
-
101 — чтение;
-
110 — запись.
-
LOCK# — блокировка шины (максимальный режим). Вырабатывается по команде LOCK и информирует другие устройства о том, что они не должны пытаться запрашивать шину.
-
QS1, QS0 — состояние очереди команд (максимальный режим):
-
00 — в последнем такте ничего не выбрано;
-
01 — выбран последний байт;
-
10 — очередь реинициализирована;
-
11 — выбран текущий байт.
Расширение множества выводов процессоров x86
В последующих процессорах семейства x86 множество выводов увеличивалось от модели к модели с ростом разрядности, расширением возможностей отладки, мониторинга производительности, правильности функционирования, управления питанием, построения многопроцессорных систем, синхронизации работы различных устройств ЭВМ, появлением новых архитектурных особенностей: внутреннего кэша, встроенного математического процессора и контроллера прерываний.
Так, например, процессор Pentium имеет 296 выводов, через которые выдаются и принимаются 177 сигналов, разделенных на 29 групп (табл.). Количество выводов питания — 106.
Как видим, разность между количеством адресных выводов (29) и разрядностью шины адреса (32) составляет 3, выводы A0-A2 отсутствуют. Это связано с тем, что шина данных процессора 64-разрядная. Однако помимо выводов А31-А3 к шине адреса процессора относятся выводы BE7#–BE0#, определяющие размер вводимых данных.
Табл. Классификация сигналов процессора
Pentium по функциональному назначению
Функция |
Сигналы |
Синхронизация (Clock) |
CLK |
Инициализация (Initialization) |
RESET, INIT, BF1–BF0 |
Шина адреса (Address Bus) |
A31-A3, BE7#–BE0# |
Маска адреса (Address Mask) |
A20M# |
Шина данных (Data Bus) |
D63-D0 |
Четность адреса (Address Parity) |
AP, APCHK# |
Поддержка APIC (APIC Support) |
PICCLK, PICD0-1 |
Четность данных (Data Parity) |
DP7-DP0, PCHK#, PEN# |
Внутренняя ошибка четности (Internal Parity Error ) |
IERR# |
Системная ошибка (System Error) |
BUSCHK# |
Определение цикла шины (Bus Cycle Definition) |
M/IO#, D/C#, W/R#, CACHE#, SCYC, LOCK# |
Управление шиной (Bus Control) |
ADS#, ADSC#, BRDY#, BRDYC#, NA# |
Кэширование страниц (Page Cacheability) |
PCD, PWT |
Управление кэшированием (Cache Control) |
KEN#, WB/WT# |
Обращение к кэшу/ сохранение кэша (Cache Snooping/Consistency) |
AHOLD, EADS#, HIT#, HITM#, INV |
Обновление кэша (Cache Flush) |
FLUSH# |
Упорядочение записи (Write Ordering) |
EWBE# |
Арбитраж шины (Bus Arbitration) |
BOFF#, BREQ, HOLD, HLDA |
Частное управление шиной в двухпроцессорных системах (Dual Processing Private Bus Control) |
PBGNT#, PBREQ#, PHIT#, PHITM# |
Прерывания (Interrupts) |
INTR, NMI |
Сообщения об ошибках операций с плавающей точкой (Floating Point Error Reporting) |
FERR#, IGNNE# |
Режим управления системой (System Management Mode) |
SMI#, SMIACT# |
Проверка функционального резерва1 (Functional Redundancy Checking1) |
FRCMC#, (IERR#) |
TAP порт (TAP Port) |
TCK, TMS, TDI, TDO, TRST# |
Мониторинг контрольных точек, производительности (Breakpoint/Performance Monitoring) |
PM0/BP0, PM1/BP1, BP3-2 |
Управление питанием (Power Management) |
STPCLK# |
Вспомогательные функции для двухпроцессорных систем (Miscellaneous Dual Processing) |
CPUTYP, D/P# |
Отладка (Debugging) |
R/S#, PRDY |
Детектирование напряжения (Voltage Detection) |
VCC2DET#2 |
Примечания:
-
Проверка функционального резерва не поддерживается процессором Pentium MMX. Вывод FRCMC# определен только для процессора Pentium (75/90/100/120/133/150/166/200). Для Pentium MMX этот вывод должен быть оставлен свободным (NC, No connect) или подключен к VCC3 через внешний нагрузочный резистор.
-
Вывод VCC2DET# определен только для процессора Pentium MMX. Этот вывод для процессора Pentium (75/90/100/120/133/150/166/200) трактуется как INC (Internal No Connect).
-
TAP — Test Access Port, порт доступа к тестированию, спецификация IEEE 1149.1.
Далее у новых процессоров стремительно растет тактовая частота, а, следовательно, и рассеиваемая мощность. Поэтому остро встает вопрос о величине напряжения питания и мощности, обеспечиваемой источником питания.
У процессоров Pentium II, Pentium III, Celeron появляются сигналы VID (Voltage Identification, идентификация напряжения), которые автоматически программируют регулятор напряжения на требуемый уровень. Выводы питания VCC должны обеспечивать процессор напряжением, определяемым сигналами VID.
Pentium 4 имеет 111 выводов питания VCC, 112 выводов VSS (земля) и 5 выводов идентификации напряжения VID[4:0]. 32 возможные комбинации задают 32 уровня напряжения: от 1,850 В при 0 (VID[4:0]=00000) до 1,100 В при 30 (VID[4:0]=11110) с шагом в 0,025 В. Последняя комбинация (VID[4:0]=11111) отключает регулятор напряжения.
Сигналы адресной шины являются двунаправленными и многофункциональными.
Множество сигналов становится все более абстрактным, например у Pentium 4 мы уже не видим знакомых сигналов приема-передачи, а тип транзакции определяют сигналы адресной шины и сигналы req[4:0]#, во многом оно расширено сигналами, обеспечивающими надежность функционирования компьютера, а также экономию питания.
Интерфейс процессора с памятью
Интерфейс процессора с ПЗУ
Интерфейс процессора с ПЗУ показан на рис.
Рис. Интерфейс процессора с ПЗУ.
Здесь:
-
RC — сигнал чтения;
-
OE (Output Enable) — разрешение выхода;
-
CS (Crystal Select) — выбор кристалла.
Интерфейс процессора с ОЗУ
Интерфейс процессора с ОЗУ показан на рис.
Рис. Интерфейс процессора с ОЗУ.
Здесь:
-
TR# — сигнал передачи процессора;
-
RC — сигнал приема процессора;
-
OE — сигнал разрешения выхода;
-
R/W# — сигнал чтения/записи микросхемы ОЗУ;
-
CS# — сигнал выбора микросхемы.
Интерфейс процессора с матричным ОЗУ
Существует еще один тип ОЗУ, к которому относятся модули памяти персональных компьютеров SIMM и DIMM — матричное ОЗУ. В нем ячейки расположены в виде матрицы, по строкам и столбцам. При такой организации адрес, поступающий к памяти делится на две части. Одна определяет адрес строки, другая — адрес столбца. В таких микросхемах вместо сигнала CS используются сигналы RAS (Rоw Address Strobe, строб адреса строки) и CAS (Column Address Strobe, строб адреса столбца). Причем сигналов и RAS, и CAS может быть несколько, в зависимости от количества матриц ячеек памяти. Например, в 30-контактных модулях SIMM по одному сигналу RAS и CAS. В 72-контактных — по четыре.
Соотношение разрядностей шин данных процессора и памяти
Минимальная ячейка памяти персонального компьютера с логической и физической точки зрения имеет размер в один байт. Однако шина данных процессора может иметь и большую разрядность. Например, Pentium имеет 64-разрядную шину данных и может одновременно прочитать или записать 8 байтов (рис.).
Рис. Взаимодействие процессора Pentium
с 64-разрядной памятью
Однако среди типов данных Pentium есть и байты, и слова, и двойные слова. Соответственно, существует возможность задания необходимой разрядности памяти (рис.).
Рис. Адресация 32-, 16- и 8-разрядной памяти процессором Pentium
Взаимодействие процессора с устройствами ввода-вывода. Логика формирования управляющих сигналов ЭВМ
Формирование управляющих сигналов в ЭВМ как логических функций атомарных сигналов
Все управляющие сигналы в ЭВМ представляют собой логические функции, операндами (аргументами) которых являются атомарные (неделимые, непредставимые в виде логических функций) сигналы: сигналы процессора и другие сигналы, которые может инициировать, например, пользователь. Эти логические функции формируются логическими и другими цифровыми микросхемами ЭВМ.
Формирование сигнала записи (WR#) параллельного порта
Рассмотрим в качестве примера параллельный порт платы расширения М1 УМК-80 (рис.).
Рис. Схема подсистемы ввода-вывода УМК-80 через плату М1
Надо отметить один важный момент. Кружок в условном графическом обозначении микросхемы и черта или значок диеза (#) в обозначении сигнала говорят о том, что активный уровень данного сигнала низкий. Черта или диез для таких сигналов являются неотъемлемой частью обозначения сигнала. Ее ни в коем случае нельзя удалять, в том числе при преобразованиях логических выражений, в которых фигурируют данные сигналы. Иначе может произойти путаница при анализе логики функционирования системы.
Данная схема получена с помощью двух операций: объединения и выделения (селекции) над множеством схем отдельных плат, входящих в состав УМК. Поэтому в обозначении микросхемы присутствует название платы.
На вход WR# параллельного порта (программируемого параллельного интерфейса, микросхемы D6 платы М1) поступает системный управляющий сигнал IOWC#, логическая функция которого такова:
WR#D6M1 = IOWC# = P3D11 = (P1D11 P2D11)# = (P4D8 Q4D4)# = (P3D8# OUT)# = P3D8 OUT# = WR# OUT#.
Здесь:
-
PiDj — i-й вывод (pin) элемента Dj;
-
XDj — сигнал X элемента Dj;
-
WR#D6M1 — сигнал записи программируемого параллельного интерфейса;
-
IOWC # —сигнал записи в устройство ввода-вывода системной шины;
-
WR# — сигнал записи процессора;
-
OUT — сигнал вывода процессора;
-
D6M1 — КР580ВВ55А — программируемый параллельный интерфейс;
-
D11 — К155ЛА3 — логический элемент "И-НЕ";
-
D8 — К155ЛН1 — логический элемент "НЕ";
-
D4 — К589ИР12 — многорежимный 8-разрядный универсальный буферный регистр.
Прим. Поскольку номера микросхем разных плат на полученной схеме не повторяются, то в формуле для сокращения записи названия плат в индексах опущены.
Таким образом, сигнал записи параллельного порта включает информацию о направлении передачи данных и о типе устройства, с которым в данном цикле взаимодействует процессор.
Таблица истинности такова:
WR# |
OUT |
WR#D6M1 |
|
0 |
0 |
1 |
|
1 |
0 |
1 |
|
0 |
1 |
0 |
активный уровень |
1 |
1 |
1 |
|
Из таблицы истинности видно, что активный уровень сигнала IOWC# формируется, если процессор передает данные в устройство ввода-вывода, о чем говорят активные уровни сигналов WR# и OUT соответственно.
Надо учесть, что в таких таблицах возможны не все комбинации входных сигналов, поскольку между ними могут быть зависимости. Так, последняя строка этой таблицы истинности не реализуется, т. к. при выводе информации всегда WR# = 0.
Формирование сигнала выбора микросхемы (CS#). Дешифрация адреса
Сигнал CS# параллельного порта платы М1 не подключен. Подключив его к нужному выводу дешифратора (который на рисунке не изображен) можно назначить параллельному порту требуемый диапазон адресов.
Для пояснения логики формирования диапазона адресов памяти или устройств ввода-вывода в адресном пространстве процессора используем другой пример — параллельный порт DD3 платы интерфейса 2 УЦО. Для сигнала CS# данного параллельного порта имеем:
CS#DD3 = CS1XP1 = P6DD11.
Здесь
CS1XP1 — сигнал CS1 разъема ХР1 системной шины УЦО,
P6DD11 — вывод (pin) 6 микросхемы DD11 (К555ИД4) — сдвоенного дешифратора-демультиплексора.
Прим. В данном примере микросхема DD3 расположена на плате интерфейса 2 УЦО, а остальные — на плате процессора. Микросхема DD3 платы процессора в формировании исследуемого сигнала не участвует. Поэтому в индексах сигналов для сокращения записи используется только номер микросхемы, а наименование платы опускается.
Микросхема DD11 в УЦО выполняет функцию дешифратора 3-8. Обозначения входных и выходных сигналов этой микросхемы неинформативны и отличаются в разных источниках, поэтому мы использовали в формуле обозначение контакта, а не сигнала.
Воспользуемся таблицей истинности данной микросхемы:
Вход |
Выход |
||||||||||
P2 (P14) |
P1 (P15) |
P3 |
P13 |
P4 |
P5 |
P6 |
P7 |
P12 |
P11 |
P10 |
P9 |
1 |
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Поскольку активный уровень сигнала CS# низкий, нас интересует строка, в которой P6DD11 равен нулю. По этой же причине используем конъюнктивную форму логической функции данного сигнала:
P6DD11 = P13#DD11 P3DD11 P1#DD11 P2DD11 .
P13#DD11 = A10#DD8 .
P3DD11 = A11DD8 .
P1#DD11 = A12#DD8 .
P2DD11 = P6DD12 = P4DD12 P5DD12 = P3DD12 P5DD12 = P1DD12 P2DD12 P5DD12 = A13DD8 A14DD8 A15DD8 .
Здесь
DD8 — процессор КР580ВМ80А (i8080),
А — адресный сигнал процессора,
DD12 — микросхема логического ИЛИ К555ЛЛ1.
Окончательно имеем:
CS#DD3 = A15DD8 A14DD8 A13DD8 A12#DD8 A11DD8 A10#DD8.
Таким образом, мы видим, что шесть старших адресных сигналов процессора формируют сигнал выбора параллельного порта через два элемента ИЛИ и дешифратор. Непосредственно на порт поступают младшие адресные сигналы А1 и А0. Поскольку адреса портов ввода-вывода в системе команд процессора i8080 восьмиразрядные, то при выполнении команд ввода-вывода адрес порта дублируется на старшей и младшей половинах адресной шины. Поэтому A15 = А7, A14 = А6, A13 = А5, A12 = А4, A11 = А3, A10 = А2, A9 = А1, A8 = А0.
Отсюда имеем следующую таблицу истинности:
A15 A7 |
A14 A6 |
A13 A5 |
A12 A4 |
A11 A3 |
A10 A2 |
A9 A1 |
A8 A0 |
CS#DD3 |
0 |
0 |
0 |
1 |
0 |
1 |
Х |
Х |
0 |
и следующие адреса портов параллельного интерфейса в шестнадцатеричном формате:
14h — канал A,
15h — канал B,
16h — канал C,
17h — регистр управляющего слова.
Тот же самый принцип дешифрации адреса имеет место и для других элементов ЭВМ: памяти, различных портов и контроллеров ввода-вывода, а иногда и микросхем низкой степени интеграции, например, триггеров.
ФУНКЦИОНИРОВАНИЕ ЭВМ
Последовательность действий процессора при выполнении программы
Цикл "извлечь — выполнить"
Процессор в течение своего функционирования постоянно выполняет следующий цикл: чтение команды, ее дешифрацию и выполнение. Об этом цикле известный программист, один из создателей АЛГОЛа Алан Перлис (Alan Perlis, 1922-1990) говорил: "Иногда я думаю, что единственным универсальным понятием в компьютерной области является цикл "извлечь — выполнить" (fetch-execute cycle)".
Источники команд в ЭВМ
Команды программы в соответствии с принципами архитектуры фон Неймана процессор читает из памяти команд. Однако из этого правила могут быть исключения. Например, процессор i8080 при обработке аппаратного прерывания для перехода к подпрограмме обработчика обязательно должен прочитать и выполнить команду вызова подпрограммы CALL или RST. В памяти команд ее быть не может, потому что аппаратное прерывание — асинхронное событие. Поэтому на шину данных для последующего чтения ее процессором команду вызова подпрограммы должен выставить контроллер прерываний или сформировать аппаратная логика.
Интерпретация информации, принимаемой процессором
Процессор, принимая информацию по шине данных, интерпретирует ее определенным образом. Варианты здесь следующие:
-
Код операции команды, в т. ч. вся необходимая информация для определения местоположения операндов (способа адресации). Например, в командах i8080 информация о способе адресации полностью находится в коде операции. В командах процессоров IA-32 могут присутствовать дополнительные байты: ModR/M и SIB — уточняющие местонахождение операндов.
-
Адрес ячейки памяти, адрес порта ввода-вывода.
-
Собственно данные, предназначенные для обработки (операнд).
Последовательность выполнения команды непосредственной передачи данных
Рассмотрим сказанное на примере команды непосредственной передачи данных в аккумулятор процессоров i8080 и i8085 MVI A, data. Последовательность выполнения команды MVI A, data процессором такова:
-
Адрес первого байта команды (Аddr) — кода операции (Opcode) — передается из счетчика команд — регистра IP (PC) — через буфер адреса (ABuf) на шину адреса (ABus):
.
-
Дешифратор адреса (DC) декодирует адрес (старшую часть адресных линий) — на определенном выходе дешифратора (O, Output) появляется 0, который подается на вход CS# микросхемы памяти (MEM, Memory):
.
-
Активизируется выход RC процессора (CPU), активный уровень сигнала RC подается на вход R/W# микросхемы памяти:
.
-
Счетчик команд инкрементируется: [IP]=[IP]+1 (Addr++) — теперь в IP содержится значение Addr+1.
-
Память из ячейки с указанным адресом Addr выдает КОП команды (Opcode) на шину данных (DBus):
.
-
КОП с шины данных через буфер данных и внутреннюю шину поступает в регистр команд (IR):
.
-
КОП, находящийся в регистре команд, декодируется дешифратором команд.
-
Адрес второго байта команды (Аddr+1) — непосредственных данных (data) — передается из счетчика команд через буфер адреса на шину адреса:
-
Дешифратор адреса декодирует адрес (старшую часть адресных линий) — на определенном выходе дешифратора (O, Output) появляется 0, который подается на вход CS# микросхемы памяти (MEM, Memory):
.
-
Активизируется выход RC процессора (CPU), активный уровень сигнала RC подается на вход R/W# микросхемы памяти:
.
-
Счетчик команд инкрементируется: [IP]=[IP]+1 (Addr++) — теперь в IP содержится значение Addr+2.
-
Память из ячейки с адресом Addr+1 выдает непосредственные данные (data) на шину данных (DBus):
.
-
Непосредственные данные с шины данных через буфер данных и внутреннюю шину поступают в аккумулятор (A):
Надо отметить, что процессор i8080 вместе с выдачей адреса на шину адреса осуществляет выдачу на шину данных байта состояния, по которому формируются многие управляющие сигналы.
Временная диаграмма выполнения команды
Во времени последовательность действий процессора при выполнении команд иллюстрируют временные диаграммы. На рис. приведена временная диаграмма выполнения команды MVI r, data.
Рис. Временная диаграмма выполнения команды MVI r, data
Машинный такт, машинный цикл (цикл шины, транзакция), цикл команды
Процессор выполняет программу по командам, команды по машинным циклам, а машинные циклы по тактам.
Команда MVI r, data выполняется за два машинных цикла или семь машинных тактов. Коротко это записывается так — 2-7.
Машинный такт — это наименьший временной интервал системы, один период тактовой частоты.
Машинный цикл (цикл шины, транзакция) — следующий по величине временной интервал системы. Для процессора i8080 машинный цикл может содержать от трех до пяти тактов. Цикл шины i8086 содержит, как минимум, четыре такта.
У процессора i8080 циклы шины, относящиеся к одной команде, следуют друг за другом и соответствуют действиям, выполняемым АЛУ, устройством управления и другими внутренними элементами процессора. Поэтому для цикла шины i8080 используется название машинный цикл. В процессоре i8086 циклы шины, относящиеся к одной команде, благодаря наличию устройства шинного интерфейса и очереди команд, могут и не следовать друг за другом, а перемежаться с циклами шины других команд.
Далее по порядку возрастания временных интервалов системы идет цикл команды. Для i8080 он может содержать от одного до пяти машинных циклов.
RISC-процессор выполняет команду за один такт, т. е. для этого типа процессоров понятия цикла команды, машинного цикла и такта совпадают.
Последовательность действий процессора i8080 в пределах машинного цикла
Вначале каждого машинного цикла процессор вырабатывает сигнал синхронизации, который выдается через выход SYN. В такте T1 процессор выдает на шину адреса адрес ячейки памяти (порта ввода-вывода), к которой производится обращение. Источником адреса могут быть регистры PC, HL, SP, BC, DE, WZ. В этом же такте на шину данных выдается байт состояния, который может быть защелкнут во внешнем регистре по сигналу SYN. В такте T2 анализируется состояние сигнала на входе RDY и сигнала подтверждения останова. В зависимости от состояния этих сигналов МП переходит в состояние ожидания, останова или к выполнению такта Т3. В такте Т3 процессор принимает (передает) информацию по шине данных, анализирует состояние сигнала на входе HLD и если этот сигнал в состоянии высокого уровня, то по окончании такта Т3 процессор переходит в состояние захвата. В зависимости от кода операции выполняемой команды и типа машинный цикл завершается после выполнения такта Т3, Т4 или Т5. В цикле M1 в такте Т3 с приходом С1 КОП с шины данных поступает в регистр команд, в Т4 процессор дешифрует КОП, определяет местоположение операндов и тем необходимость для выполнения команды дополнительных циклов. Если операнды расположены во внутренних регистрах процессора, то команда выполняется в такте Т4 или тактах Т4 и Т5. В конце машинного цикла снова анализируется состояние сигнала на входе HLD. При низком уровне сигнала проверяется, окончено ли выполнение команды. Если команда не закончена, то процессор выполняет следующий машинный цикл. Если команда окончена, то проверяется состояние сигнала на входе INT. Если сигнал на этом входе высокого уровня и прерывания разрешены, то процессор переходит к выполнению машинного цикла прерывания. Иначе выполняется первый машинный цикл новой команды.
Информация о состоянии процессора и тип машинного цикла
Действия, производимые процессором в конкретном машинном цикле определяются типом машинного цикла. Тип машинного цикла определяется информацией о состоянии процессора. Информация о состоянии процессора может выдаваться по отдельным, "выделенным" выводам, как в Intel8086, или по выводам, разделяемым с другими сигналами процессора.
В Pentium4 тип транзакции определяют адресные сигналы A[35:3]# и сигналы запроса команды REQ[4:0]#.
В Intel8080 информация о состоянии процессора содержится в байте состояния, который выдается по линиям данных в такте Т1 каждого машинного цикла (табл.).
Табл. Соответствие типов машинного цикла
конкретным значениям байта состояния
Тип машинного цикла |
Байт состояния |
|||||||
D7 MR |
D6 INP |
D5 M1 |
D4 OUT |
D3 HLTA |
D2 STACK |
D1 WO# |
D0 INTA |
|
Выбор команды |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
Чтение памяти |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Запись в память |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Чтение стека |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
Запись в стек |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
Ввод |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Вывод |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Прерывание |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
Останов |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
Прерывание при останове |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
Формат байта состояния:
D0 — INTA, Interrupt Available — подтверждение прерывания;
D1 — WO#, Write-Output — запись-вывод;
D2 — STACK — стек;
D3 — HLTA, Halt Available — подтверждение останова;
D4 — OUT, Output — вывод;
D5 — M1 — цикл М1, прием первого байта команды;
D6 — INP, Input — ввод;
D7 — MR, Memory Read — чтение памяти.
Байт состояния используется для выработки управляющих сигналов системы: обращения к запоминающим устройствам, внешним устройствам, организации различных режимов работы процессора и системы в целом.
Например, чаще всего стек занимает часть основной оперативной памяти системы. Однако можно под стек выделить отдельное физическое оперативное запоминающее устройство, сигналы обращения к которому можно формировать, объединяя сигнал STACK байта состояния с сигналами RC и TR# в соответствии с логическими функциями:
.
,
где
— сигнал чтения
микросхемы памяти стека;
— сигнал записи
микросхемы памяти стека.
Правила определения числа циклов и тактов в команде
Можно сформулировать следующие правила, касающиеся числа циклов и тактов в команде.
Правило 1. Количество циклов в команде определяется числом обращений к памяти или внешним устройствам по шине данных. Это число в свою очередь определяется логикой команды и зависит от способа адресации.
Из этого правила, как обычно, есть исключения. Для процессора i8080 это команда сложения с удвоенной точностью — DAD rp. Она выполняется за 3 цикла или 10 тактов.
Правило 2. Число циклов в команде не может быть меньше числа байтов в команде.
И из этого правила есть исключения. Команды условного перехода процессоров i8080 и i8085 имеют длину три байта. Процессор i8080 даже в случае невыполнения условия перехода читает все три байта, т. е. выполняет команду за три цикла, хотя во втором и третьем байтах находится заведомо ненужный адрес перехода. В i8085 такой неэкономный расход времени был исправлен. Он выполняет команду условного перехода при невыполнении условия за два цикла.