Классификация интерфейсов
Объединение отдельных подсистем (устройств, модулей) ЭВМ в единую систему основывается на многоуровневом принципе с унифицированным сопряжением между всеми уровнями — стандартным интерфейсом. Под стандартными интерфейсами понимают такие интерфейсы, которые приняты и рекомендованы в качестве обязательных отраслевыми или государственными стандартами, различными международными комиссиями, а также крупными зарубежными фирмами.
Интерфейсы характеризуются следующими параметрами:
1) пропускной способностью интерфейса — количеством информации, которая может быть передана через интерфейс в единицу времени;
2) максимальной частотой передачи информационных сигналов через интерфейс;
3) информационной шириной интерфейса — числом бит или байт данных, передаваемых параллельно через интерфейс;
4) максимально допустимым расстоянием между соединяемыми устройствами;
5) динамическими параметрами интерфейса — временем передачи отдельного слова или блока данных с учетом продолжительности процедур подготовки и завершения передачи;
6) общим числом проводов (линий) в интерфейсе.
В настоящее время не существует однозначной классификации интерфейсов. Можно выделить следующие четыре классификационных признака интерфейсов:
- способ соединения компонентов системы (радиальный, магистральный, смешанный);
- способ передачи информации (параллельный, последовательный, параллельно-последовательный);
- принцип обмена информацией (асинхронный, синхронный);
- режим передачи информации (двусторонняя поочередная передача, односторонняя передача).
Радиальный интерфейс позволяет всем модулям (М1, . . . , Mn) работать независимо, но имеет максимальное количество шин. Магистральный интерфейс (общая шина) использует принцип разделения времени для связи между ЦМ и другими модулями. Он сравнительно прост в реализации, но лимитирует скорость обмена. Параллельные интерфейсы позволяют передавать одновременно определенное количество бит или байт информации по многопроводной линии, что характеризует разрядность интерфейса. Последовательные интерфейсы служат для последовательной передачи по двухпроводной линии, но как правило, на большей частоте по сравнению с параллельными интерфейсами (из-за наводок в параллельных линиях и проблем синхронизации фронтов сигналов).
В случае синхронного интерфейса моменты выдачи информации передающим устройством и приема ее в другом устройстве должны синхронизироваться, для этого используют специальную линию синхронизации и тактирующий сигнал от генератора импульсов. При асинхронном интерфейсе передача осуществляется по принципу "запрос-ответ". Каждый цикл передачи сопровождается последовательностью управляющих сигналов, которые вырабатываются передающим и приемным устройствами. Передающее устройство может осуществлять передачу данных (байта или нескольких байтов) только после подтверждения приемником своей готовности к приему данных.
Классификация интерфейсов по назначению отражает взаимосвязь с архитектурой реальных средств вычислительной техники. В соответствии с этим признаком в ЭВМ и вычислительных системах можно выделить несколько уровней сопряжений:
- машинные системные интерфейсы;
- локальные шины;
- интерфейсы периферийных устройств (малые интерфейсы);
- межмашинные интерфейсы.
Машинные (внутримашинные) системные интерфейсы предназначены для организации связей между составными компонентами ЭВМ на уровне обмена информацией с центральным процессором, ОП и контроллерами (адаптерами) ПУ.
Локальной шиной называется шина, электрически выходящая непосредственно на контакты микропроцессора, и предназначенная для увеличения быстродействия видеоадаптеров и контроллеров дисковых накопителей. Она обычно объединяет процессор, память, схемы буферизации для системной шины и ее контроллер, а также некоторые вспомогательные схемы. Типичными примерами локальных шин являются VLB и PCI, AGP, PCI-X, PCI-E.
Назначение интерфейсов периферийных устройств (малых интерфейсов) состоит в выполнении функций сопряжения контроллера (адаптера) с конкретным механизмом ПУ (выход видеокарты с монитором, выход аудиокарты с колонками, интерфейсы USB для подключения различных ПУ).
Межмашинные интерфейсы используются в вычислительных системах и сетях (наиболее популярны Ethernet, iSCSI, Fiber Channel).
Все типы интерфейсов имеют свою область применения, так как имеют свои достоинства и недостатки, проистекающие от физических характеристик интерфейсов, такие как разрядность, длина линий, частота синхронизации и передачи данных. В качестве системных шин чаще всего используются многоразрядные (64 бит и более) параллельные синхронные шины, для интерфейсов ввода-вывода чаще всего применяются асинхронные последовательные шины.
С целью снижения стоимости некоторые компьютеры имеют единственную шину (общая шина) для памяти и устройств ввода-вывода. Персональные компьютеры первых поколений, как правило, строились на основе одной системной шины в стандартах ISA, EISA или MCA. Необходимость сохранения баланса производительности по мере роста быстродействия микропроцессоров привела к многоуровневой организации шин на основе использования нескольких системных и локальных шин. В современных компьютерах шины интерфейсов делят на шины, обеспечивающие организацию связи процессора с памятью, и шины ввода-вывода.
Шины процессор-память сравнительно короткие, обычно высокоскоростные и соответствуют организации подсистемы памяти для обеспечения максимальной пропускной способности канала память-процессор на высокой частоте. Шины ввода-вывода могут иметь большую протяженность, поддерживать подсоединение многих типов устройств и обычно следуют одному из шинных стандартов. Обычно количество и типы устройств ввода-вывода в вычислительных системах не фиксируются, что дает возможность пользователю самому подобрать необходимую конфигурацию. Шина ввода-вывода компьютера рассматривается как шина расширения, обеспечивающая постепенное наращивание устройств ввода-вывода. Поэтому стандарты играют огромную роль, позволяя разработчикам компьютеров и устройств ввода-вывода работать независимо.
Архитектура интерфейсов ввода-вывода
Интерфейсы памяти и ввода-вывода связаны с логикой управления шиной. Между ней и интерфейсами находятся только электрические проводники шины; следовательно, интерфейсы должны быть спроектированы для передачи и приема сигналов, совместимых с логикой управления шиной и ее временной диаграммой. При наличии сходства интерфейсов памяти и ввода-вывода между ними имеются и существенные различия.
Интерфейс ввода-вывода должен выполнять следующие функции:
1. Интерпретировать сигналы адреса и выбора между памятью и вводом-выводом, чтобы определить обращение к нему, и в случае такого обращения определить, к каким регистрам происходит обращение.
2. Определять, выполняется ввод или вывод; при выводе воспринять с шины выходные данные или управляющую информацию, а при вводе поместить на шину входные данные или информацию о состоянии.
3. Вводить или выводить данные в подключенное устройство ввода-вывода и преобразовывать параллельные данные в формат, воспринимаемый устройством, или наоборот.
4. Посылать сигнал готовности, когда данные восприняты или помещены на шину данных, информируя процессор о завершении передачи.
5. Формировать запросы прерываний и (при отсутствии в логике управления шиной управления приоритетными прерываниями) принимать подтверждения прерываний и - выдавать тип прерывания.
6. Принимать сигнал сброса и реинициализировать себя и, возможно, подключенное Устройство.
Схема типичного интерфейса ввода-вывода
Главные функции интерфейса сводятся к преобразованию сигналов между системной шиной и устройством ввода-вывода и реализации буферов, необходимых для удовлетворения двух наборов временных ограничений. Значительная часть функций интерфейса выполняется блоком, находящимся на рисунке справа. Часто он реализуется в виде микросхемы, но иногда функции этого блока могут быть разбросаны по нескольким приборам. Очевидно, его функции полностью определяются устройством ввода-вывода, с которым должен взаимодействовать интерфейс.
Интерфейс можно разделить на две части, взаимодействующие с устройством и с системной шиной. Первая из них определяется устройством, а вторые части всех интерфейсов в данной системе довольно похожи, так как они связаны с одной и той же шиной. В них должны быть шинные драйверы и приемники, схемы преобразования интерфейсных сигналов управления в соответствующие квитирующие сигналы и схемы для дешифрирования появляющихся на шине адресов.
Квитирование - установка переключателя в положение, соответствующее полученному сигналу. Квитирование используется для надежной синхронизации работы ЭВМ и периферийного оборудования: между ними осуществляется обмен сигналами управления и сигналами состояния с целью взаимной синхронизации. Метод передачи данных с квитированием позволяет согласовать скорости выполнения операций в медленных УВВ и в быстрых ЦП.
Логику квитирования нельзя спроектировать, не зная управляющих сигналов, необходимых основному интерфейсному устройству, а эти сигналы в различных интерфейсах варьируются. Обычно эта логика должна воспринимать сигналы считывания/записи, определяющие направление передачи, и выдавать для микросхем 8286 сигналы ОЕ (Output Enable) и Т (Transmit). Через эту логику должны также проходить линии запроса прерывания, готовности и сброса. Иногда управляющие линии шины проходят через логику квитирования неизменными (т. е. подключаются прямо к основному интерфейсному устройству).
Архитектура шин
Рассмотрим типичную транзакцию на шине. Шинная транзакция включает в себя две части: посылку адреса и прием (или посылку) данных. Шинные транзакции обычно определяются характером взаимодействия с памятью: транзакция типа "Чтение" передает данные из памяти (либо в ЦП, либо в устройство ввода/вывода), транзакция типа "Запись" записывает данные в память. В транзакции типа "Чтение" по шине сначала посылается в память адрес вместе с соответствующими сигналами управления, индицирующими чтение. Память отвечает, возвращая на шину данные с соответствующими сигналами управления. Транзакция типа "Запись" требует, чтобы ЦП или устройство в/в послало в память адрес и данные и не ожидает возврата данных. Обычно ЦП вынужден простаивать во время интервала между посылкой адреса и получением данных при выполнении чтения, но часто он не ожидает завершения операции при записи данных в память.
В настоящее время используются два типа шин, отличающиеся способом коммутации: шины с коммутацией цепей (circuit-switched bus) и шины с коммутацией пакетов (packet-switched bus), получившие свои названия по аналогии со способами коммутации в сетях передачи данных. Шина с коммутацией пакетов при наличии нескольких главных устройств шины обеспечивает значительно большую пропускную способность по сравнению с шиной с коммутацией цепей за счет разделения транзакции на две логические части: запроса шины и ответа. Такая методика получила название "расщепления" транзакций (split transaction). (В некоторых системах такая возможность называется шиной соединения/разъединения (connect/disconnect) или конвейерной шиной (pipelined bus). Транзакция чтения разбивается на транзакцию запроса чтения, которая содержит адрес, и транзакцию ответа памяти, которая содержит данные. Каждая транзакция теперь должна быть помечена (тегирована) соответствующим образом, чтобы ЦП и память могли сообщить что есть что.
Шина с коммутацией цепей не делает расщепления транзакций, любая транзакция на ней есть неделимая операция. Главное устройство запрашивает шину, после арбитража помещает на нее адрес и блокирует шину до окончания обслуживания запроса. Большая часть этого времени обслуживания при этом тратится не на выполнение операций на шине (например, на задержку выборки из памяти). Таким образом, в шинах с коммутацией цепей это время просто теряется. Расщепленные транзакции делают шину доступной для других главных устройств пока память читает слово по запрошенному адресу. Это, правда, также означает, что ЦП должен бороться за шину для посылки данных, а память должна бороться за шину, чтобы вернуть данные. Таким образом, шина с расщеплением транзакций имеет более высокую пропускную способность, но обычно она имеет и большую задержку, чем шина, которая захватывается на все время выполнения транзакции. Транзакция называется расщепленной, поскольку произвольное количество других пакетов или транзакций могут использовать шину между запросом и ответом.
Выбор типа синхронизации шины
Если шина синхронная, то она включает сигналы синхронизации, которые передаются по линиям управления шины, и фиксированный протокол, определяющий расположение сигналов адреса и данных относительно сигналов синхронизации. Поскольку практически никакой дополнительной логики не требуется для того, чтобы решить, что делать в следующий момент времени, эти шины могут быть и быстрыми, и дешевыми. Однако они имеют два главных недостатка. Все на шине должно происходить с одной и той же частотой синхронизации, поэтому из-за проблемы перекоса синхросигналов, синхронные шины не могут быть длинными. Обычно шины процессор-память синхронные.
Асинхронная шина, с другой стороны, не тактируется. Вместо этого обычно используется старт-стопный режим передачи и протокол "рукопожатия" (handshaking) между источником и приемником данных на шине. Эта схема позволяет гораздо проще приспособить широкое разнообразие устройств и удлинить шину без беспокойства о перекосе сигналов синхронизации и о системе синхронизации. Если может использоваться синхронная шина, то она обычно быстрее, чем асинхронная, из-за отсутствия накладных расходов на синхронизацию шины для каждой транзакции. Выбор типа шины (синхронной или асинхронной) определяет не только пропускную способность, но также непосредственно влияет на емкость системы ввода/вывода в терминах физического расстояния и количества устройств, которые могут быть подсоединены к шине. Асинхронные шины по мере изменения технологии лучше масштабируются. Шины ввода/вывода обычно асинхронные.
Обзор архитектуры шины PCI Express
Локальные параллельные шины себя исчерпали, рано или поздно взоры разработчиков должны были обратиться в сторону последовательных. В результате чего практически все современные индустриальные интерфейсы к настоящему времени перебрались на такой принцип обмена данными.
Наиболее совершенной локальной шиной на данный момент является PCI Express (PCI-E, PCIe).
Основой нового интерфейса, как известно, в общем случае будут являться дифференциальные сигнальные пары контактов, совершающие обмен данными по схеме "точка-точка".
Благодаря новой топологии мы сразу получаем массу положительных моментов: удешевление конструкции, снижение габаритов, более простая разводка печатных дорожек с упрощенными требованиями к борьбе с паразитными излучениями и наводками, и, главное, возможность работы на гораздо более высоких частотах, с поддержкой "горячей" замены периферийных устройств. Уходит в прошлое такой важный для параллельного интерфейса параметр, как нужда в синхронизации сигнальных линий всей шины.
Архитектура шины имеет многоуровневую структуру. Шина поддерживает модель адресации PCI, что позволяет работать с ней всем существующим на данный момент драйверам и приложениям. Кроме того, шина PCI Express использует стандартный механизм PnP, предусмотренный предыдущим стандартом.
Рассмотрим предназначение различных уровней организации PCI-E. На программном уровне шины формируются запросы чтения/записи, которые передаются на транспортном уровне при помощи специального пакетного протокола. Уровень данных отвечает за помехоустойчивое кодирование и обеспечивает целостность данных. Базовый аппаратный уровень состоит из двойного симплексного канала, состоящего из передающей и принимающей пары, которые вместе называются линией. Общая скорость шины в 2,5 Гб/с означает, что пропускная способность для каждой линии PCI Express составляет 250 Мб/c в каждую сторону. Если принять во внимание потери на накладные расходы протокола, то для каждого устройства доступно около 200 Мб/c. Эта пропускная способность в 2-4 раза выше, чем та, которая была доступна для устройств PCI. И, в отличие от PCI, в том случае, если пропускная способность распределяется между всеми устройствами, то она в полном объеме достается каждому устройству.
Увеличивая число каналов, мы получаем большую пропускную способность. На сегодняшний день существует несколько версий стандарта PCI Express, различающихся своей пропускной способностью.
PCIe является полнодуплексным протоколом, т.е. потоки приёма и передачи имеют независимые каналы и одинаковые максимальные скорости. Скорость компьютерных шин принято выражать в гигатранзакциях в секунду. За 1 транзакцию передаётся одно кодовое слово. Во всех высокоскоростных последовательных протоколах (например, гигабитный Ethernet), информация о синхронизации должна быть встроена в передаваемый сигнал. На физическом уровне PCI Express использует метод канального кодирования 8b/10b (8 бит в десяти, избыточность — 20 %) для устранения постоянной составляющей в передаваемом сигнале и для встраивания информации о синхронизации в поток данных. В PCI Express 3.0 используется более экономное кодирование 128b/130b с избыточностью 1,5 %. Для расчёта пропускной способности 1 линии шины необходимо учесть кодировку 8b/10b (англ. 8b/10b encoding) (в каждых 10 битах 8 информационных) (для PCI-E 3.0 и выше - 128b/130b (англ. 128b/130b encoding). Например, пропускная способность линии PCIe 1.0 составляет:
2,5 ГТ/с · 8/10 бит/Т = 2 Гбит/с = 2·109 бит/c = 250 Мбайт/c
Соединение (link) между двумя устройствами PCI Express состоит из одной (x1) или нескольких (x2, x4, x8, x12, x16 и x32) двунаправленных последовательных линий. Каждое устройство должно поддерживать соединение, по крайней мере, с одной линией (x1).
Несмотря на то, что стандарт допускает x32 линий на порт, такие решения физически достаточно громоздки и не выпускаются.
PCI Express пересылает всю управляющую информацию, включая прерывания, через те же линии, что используются для передачи данных. Последовательный протокол никогда не может быть заблокирован, таким образом задержки шины PCI Express вполне сравнимы с таковыми для шины PCI (заметим, что шина PCI для передачи сигнала о запросе на прерывание использует отдельные физические линии IRQ#A, IRQ#B, IRQ#C, IRQ#D).
На электрическом уровне каждое соединение использует низковольтную дифференциальную передачу сигнала (LVDS), приём и передача информации производится каждым устройством PCI Express по отдельным двум проводникам, таким образом, в простейшем случае устройство подключается к коммутатору PCI Express всего лишь четырьмя проводниками.
Рассматривая процессы, протекающие в шине на сигнальном уровне, нельзя не отметить уникальные плюсы PCI Express - значительное снижение затухания в линиях передачи и повышенная чувствительность приемной части интерфейса. Из чего напрашивается вывод о менее критичных требованиях к импедансу входных цепей, а также возможность увеличения длины разводки проводников шины - в нынешней версии стандарта PCI-E они лимитируются 12 дюймами для системных плат, 3,5 дюймами для контроллеров и 15 дюймами для межчиповых соединений. При этом не предъявляется никаких дополнительных требований к технологии разводки печатной платы: могут использоваться как обычные 4-слойные PCB толщиной 0,062 дюйма, так и варианты с шестью и более слоями.