Книга: Аппаратные интерфейсы ПК. Энциклопедия
5.1.3. Протокол шины
5.1.3. Протокол шины
Назначение сигналов параллельной шины раскрывает табл. 5.8. Все сигналы являются L-активными: активному состоянию и логической единице соответствует низкий потенциал, что в данной книге отмечено символом «#» после мнемоники цепи. Обратные (парафазные) цепи обозначаются знаком «+».
Таблица 5.8. Назначение сигналов шины SCSI
Сигнал | Назначение |
---|---|
BSY# | Busy — шина занята |
SEL# | Select — выбор ЦУ инициатором (Select) или инициатора целевым устройством (Reselect) |
C/D# | Control/Data — управление (низкий уровень)/данные (высокий уровень) |
I/O# | Input/Output — направление передачи относительно ИУ: вводу в ИУ соответствует низкий уровень. Используется для различия прямой (Select) и обратной (Reselect) выборки: фазе Selection соответствует низкий уровень |
MSG# | Message — передача сообщения |
DB[0:31]# | Data Bus — инверсная шина данных |
DP[0:3]# | Data Parity — инверсные биты паритета, дополняют количество единичных битов байта до нечетного. DP0# относится к DB[0:7], …, DP3# — к DB[24:31]. В фазе арбитража не действуют |
TERMPWR | Terminator Power — питание терминаторов |
ATN# | Attention — внимание (намерение ИУ послать сообщение) |
REQ# | Request — запрос от ЦУ на пересылку данных |
ACK# | Acknowledge — подтверждение передачи (ответ на REQ#) |
RST# | Reset — сброд |
DIFFSENS | Признак дифференциального (LVD) интерфейса: ниже 0,7 В — линейный SE; 0,9–1,9 В — дифференциальный LVD; выше 2,4 В — дифференциальный HVD |
Каждое устройство SCSI, подключенное к шине, должно иметь свой уникальный адрес, назначаемый при конфигурировании. Для 8-битной шины диапазон значений адреса 0–7, для 16-битной — 0-15. Адрес задается предварительной установкой переключателей или джамперов. Для хост-адаптера возможно программное конфигурирование. Адресация устройств на шине в фазах выборки осуществляется через идентификатор SCSI ID, представляющий адрес в позиционном коде. Адрес определяет номер той линии шины данных, которая осуществляет выборку данного устройства. Устройство с нулевым адресом выбирается низким уровнем на линии DB0#
(SCSI с адресом 7 — на линии DB7#
(SCSI Для ИУ значение идентификатора определяет приоритет устройства при использовании шины; наибольший приоритет имеет устройство с большим значением адреса. Понятия адрес и идентификатор часто путают, но это всего лишь две различные формы представления одного и того же параметра.
В любой момент обмен информацией по шине может происходить только между парой устройств. Операцию начинает инициатор обмена ИУ (initiator), а целевое устройство ЦУ (target) ее исполняет. ИУ выбирает ЦУ по его идентификатору. Чаще всего роли устройств фиксированы: хост-адаптер является инициатором (ИУ), а периферийное устройство — целевым (ЦУ). Возможны комбинированные устройства, выступающие в роли и ИУ, и ЦУ. В ряде случаев роли устройств меняются: ЦУ может, пройдя фазу арбитража, выполнить обратную выборку (Reselect) ИУ для продолжения прерванной операции. При выполнении команды копирования (Сору) ИУ дает указание ведущему устройству копирования (Copy Master) на обмен данными, который может производиться и с другим ЦУ (для которого ведущее устройство копирования выступит в роли ИУ).
Информация по шине данных передается побайтно (пословно) асинхронно, используя механизм запросов (REQuest) и подтверждений (ACKnowledge). Каждый байт контролируется на нечетность (кроме фазы арбитража), но контроль может быть отключен. Интерфейс имеет возможность синхронной передачи данных, ускоряющей обмен (в SCSI-1 синхронного режима не было).
Шина может находиться в одной из перечисленных ниже фаз. Роли источников сигналов между ИУ и ЦУ описаны в табл. 5.9.
Таблица 5.9. Источники сигналов SCSI
Фаза шины | Сигнал | ||||
---|---|---|---|---|---|
BSY# | SEL# | REQ#, C/D#, I/O#, MSG# | ACK#, ATN# | DBx#, DBPx# | |
Bus Free | - | - | - | - | - |
Arbitration | AA1 | WA2 | - | - | SID3 |
Selection | I4, T5 | I | - | I | I |
Reselection | I, T | T | T | I | T |
Command | T | - | T | I | I |
Data IN | T | - | T | I | T |
Data OUT | T | - | T | I | I |
Status | T | - | T | I | T |
Message IN | T | - | T | I | T |
Message OUT | T | - | T | I | I |
1 AA: источник сигнала — устройство, активное в арбитраже;
2 WA: источник сигнала — устройство — победитель в арбитраже;
3 SID: каждое устройство управляет только битом данных, соответствующим значению его SCSI ID;
4 I: источник сигнала — ИУ;
5 T: источник сигнала — ЦУ.
В фазе Bus Free шина находится в состоянии покоя — нет никаких процессов обмена; она готова к арбитражу. Признаком является пассивное состояние линий BSY#
и SEL#
.
В фазе Arbitration устройство может получить право на управление шиной. Дождавшись покоя шины (Bus Free), устройство вводит сигнал BSY#
и свой идентификатор SCSI ID. Если идентификаторы выставили несколько устройств одновременно, то право на управление шиной получает устройство с наибольшим адресом, а остальные устройства отключаются до следующего освобождения шины. Устройство, выигравшее арбитраж, вводит сигнал SEL#
и переходит в фазу Selection или Reselection.
В фазе Selection ИУ, выигравшее арбитраж, вводит на шину данных результат логической функции ИЛИ от пары идентификаторов — своего и ЦУ, — сопровождая его битом паритета. Установкой сигнала ATN#
ИУ указывает, что следующей фазой будет Message OUT
. ИУ снимает сигнал BSY#
. Отсутствие сигнала I/O#
отличает данную фазу от Reselection. Адресованное ЦУ отвечает сигналом BSY#
, если паритет корректный и на шине данных присутствует только пара идентификаторов (его и ИУ). На некорректные значения данных устройства отвечать не должны. Если за заданное время ЦУ не ответило, срабатывает тайм-аут, ИУ освобождает шину или вводит сигнал сброса RST#
.
Фаза Reselection аналогична предыдущей, но ее вводит ЦУ. Фаза появляется в том случае, когда ЦУ на время исполнения команды отключалось от шины. По завершении внутренней операции это устройство, выиграв арбитраж, будет вызывать ИУ, которое ранее породило исполнение операции. ЦУ снимает сигнал BSY#
, активность сигнала I/O#
отличает данную фазу от фазы Selection
. Адресованное ИУ отвечает сигналом BSY#
, условия ответа и тайм-аут аналогичны предыдущей фазе.
В фазах Command, Data, Status и Message по шине данных передается информация, фазы идентифицируются сигналами MSG#
, C/D#
и I/O#
(табл. 5.10), которыми управляет ЦУ. ИУ может потребовать посылки сообщения (фаза Message OUT) введением сигнала ATN#
, а ЦУ может освободить шину, сняв сигналы MSG#
, C/D#
, I/O#
и BSY#
.
Таблица 5.10. Информационные фазы SCSI
Сигнал | Фаза | Направление | ||
---|---|---|---|---|
MSG# | C/D# | I/O# | ||
0 | 0 | 0 | Data OUT | I?T |
0 | 0 | 1 | Data IN | I?T |
0 | 1 | 0 | Command | I?T |
0 | 1 | 1 | Status | I?T |
1 | 0 | 0 | Зарезервировано | |
1 | 0 | 1 | Зарезервировано | |
1 | 1 | 0 | Message OUT | I?T |
1 | 1 | 1 | Message IN | I?T |
Временные диаграммы асинхронного обмена приведены на рис. 5.5. Здесь передача каждого байта сопровождается взаимосвязанной парой сигналов REQ#
/ACK#
. ИУ фиксирует принимаемые данные, получив сигнал REQ#
(по отрицательному перепаду). ЦУ считает принимаемые данные действительными по отрицательному перепаду сигнала ACK#
. Асинхронный обмен поддерживается всеми устройствами для всех фаз передачи информации.
Рис. 5.5. Временные диаграммы асинхронного обмена (DI — данные от ИУ, DT — данные от ЦУ)
Фазы передачи данных Data OUT и Data IN по предварительной «договоренности» устройств могут выполняться и в синхронном режиме обмена, диаграммы которого приведены на рис. 5.6. При согласовании синхронного режима определяются минимальные длительности и периоды управляющих импульсов ACK#
и REQ#,
а также допустимое отставание подтверждений от запросов (REQ/ACK offset agreement). ЦУ передает серию данных, сопровождаемых стробами REQ#
(рис. 5.6, а), в темпе, ограниченном установленными временными параметрами. ИУ фиксирует принимаемые данные по отрицательному перепаду сигнала REQ#
, но отвечать на них сигналом ACK#
может с некоторым опозданием. Как только отставание числа принятых сигналов ACK#
от числа посланных REQ#
достигнет оговоренного предельного значения (в данном примере — 2), ЦУ приостановит обмен до прихода очередного подтверждения ACK#
. Операция считается завершенной, когда число принятых подтверждений совпадет с числом посланных запросов. При приеме данных ЦУ механизм согласования остается тем же, но данные фиксируются по отрицательному перепаду сигнала ACK#
(рис. 5.6, б).
ВНИМАНИЕ
В спецификации SCSI-1 момент возобновления передачи после устранения отставания описан нечетко, в результате разработчики могли посчитать, что очередной запрос (и данные) может последовать лишь после окончания (положительного перепада) сигнала ACK#
. Устройство, на это рассчитанное, может терять данные: для него последний сигнал REQ#
(и данные) является неожиданным и выглядит как превышение согласованного смещения.
Рис. 5.6. Временные диаграммы синхронного обмена: а — передача; б — прием
Обмен при разрядности 16 бит происходит аналогично. Если в последней фазе данных используются не все байты, передатчик обязан снабдить корректным битом паритета и неиспользуемые байты.
При описании фаз передачи данных не говорилось о временных задержках. Они определяются спецификацией так, чтобы возможный «перекос» — неодновременный приход сигналов, вызванный задержкой как в электронных схемах, так и в разных проводах кабеля, — не влиял на устойчивость протокола. В асинхронном режиме обмена на скорость передачи информации влияет и длина кабеля, поскольку изменения состояний участников обмена привязываются к сигналам, распространяющимся по кабелю с ограниченной скоростью. Если в широкой шине имеется пара кабелей (А и В, что на практике встречается редко), то в каждом из них используется своя пара управляющих сигналов (REQ#
/ACK#
и REQB#
/ACKB#
), поскольку эти кабели могут иметь разную длину.
В фазе Command ЦУ запрашивает от ИУ команду. В фазе Status ЦУ делает запрос на передачу ИУ информации о своем состоянии. В фазах Data IN и Data OUT ЦУ делает запросы на передачу данных к ИУ и от него соответственно. Фазы Message IN и Message OUT служат для передачи сообщений. Фазу Message OUT ЦУ вводит в ответ на условие Attention, порождаемое ИУ сигналом ATN#
, когда оно нуждается в посылке сообщения ЦУ. Фазу Message IN ЦУ вводит при необходимости посылки сообщения ИУ.
Между фазами передачи информации сигналы BSY#
, SEL#
, REQ#
и ACK#
должны оставаться в неизменном состоянии, меняться могут только значения сигналов C/D#
, I/O#
, MSG#
и шины данных.
Сигналы ATN#
и RST#
могут порождать условия Attention и Reset соответственно, причем асинхронно по отношению к фазам шины. Эти условия могут привести к изменению предопределенного порядка фаз. Сигнал ATN#
вводится ИУ во время любой фазы, кроме арбитража и состояния покоя шины. Сигнал RST#
вводится в любой момент любым устройством, и по условию Reset все устройства должны немедленно освободить шину. В зависимости от настройки, принятой для всех устройств конкретной системы, возможно выполнение одного из двух вариантов сброса. «Жесткий» сброс переводит устройства в состояние, принятое по включению питания, сбрасывая все текущие процессы, очереди и т. п. В случае «мягкого» сброса после освобождения шины устройства пытаются завершить начатые операции, сохраняя текущие значения настроек.
Каждый процесс ввода-вывода состоит из следующей последовательности фаз шины: из состояния Bus Free через фазу Arbitration переход к фазе Selection или Reselection. Далее следуют фазы передачи информации (Command, Data, Status, Message), Завершающей фазой является Message In, в которой передается сообщение Disconnect или Command Complete, после чего шина переходит в состояние покоя Bus Free.
Архитектура SCSI обеспечивает для каждого процесса ввода-вывода сохранение набора из трех указателей (saved SCSI pointers): для команды, состояния и данных. ИУ имеет текущий набор указателей (только один), в который копируется сохраненный набор для текущего процесса. Текущие указатели указывают на очередной байт команды, состояния и данных, которые будут передаваться между памятью ИУ и ЦУ. Сохраненные указатели команды и состояния всегда указывают на начала блоков дескрипторов команд и состояния. Сохраненный указатель данных указывает на начало блока данных до тех пор, пока ЦУ не пришлет сообщение Save Data Pointer. По его приему будет сохранен текущий указатель данных. Когда ЦУ отключается от шины, информация о текущем процессе ввода-вывода содержится в сохраненном наборе указателей. При возобновлении процесса ЦУ сообщением Restore Pointers может потребовать у ИУ скопировать сохраненный набор в текущий и продолжить выполнение команд данного процесса ввода-вывода.
ВНИМАНИЕ
Поскольку указатель данных может быть модифицирован ЦУ до завершения ввода-вывода, определение реального количества переданных данных с помощью указателя дает ненадежные результаты.
- 4.1.3. Протокол
- 4.2.2. Протокол IEEE 1394
- 6.2.2. Протокол шины PCI
- 11.1. Последовательные шины на базе I?C
- Улучшенный протокол локальных соединений (XNET)
- 3.5 Проблемы доступа при использовании нескольких протоколов
- 4.6 Протокол Fibre Channel
- 5.8 Протокол NDMP
- 7.5 Программные интерфейсы приложений для адаптеров шины
- Глава 2 Виртуальные машины Virtual PC 2004
- Глава 3 Виртуальные машины VMware Workstation
- Глава 4 Виртуальные машины Parallels Workstation