Шины PCI, USB и FireWire
Шрифт:
В плане взаимодействия с остальными компонентами компьютера процессор ничего не умеет, кроме как обращаться к ячейке (читать или писать байт, слово, двойное слово) пространства памяти или пространства ввода/вывода, а также реагировать на аппаратные прерывания. Таким образом, любое периферийное устройство должно представляться процессору набором регистров (ячеек) и, возможно, служить источником прерываний.
Иерархия и организация подключений Компоненты компьютера соединяются друг с другом иерархией средств подключения, наверху которой стоят интерфейсы системного уровня подключения. Эта группа интерфейсов характерна тем, что в их транзакциях фигурируют физические адреса пространства памяти и (если есть) пространства ввода/вывода. Группа связанных между собой интерфейсов системного уровня образует логическую системную шину компьютера. Системную шину образуют следующие физические интерфейсы:
• шина подключения центрального
• шина подключения контроллеров памяти, оперативной и постоянной. Собственно шина памяти (Memory Bus) системной уже не является, поскольку в ней фигурируют не системные адреса, а адреса физических банков памяти;
• шины ввода/вывода, обеспечивающие связь между центральной частью компьютера и периферийными устройствами.
Типичные представители шин ввода/вывода в IBM PC – шина ISA (отмирающая) и шина PCI (развивающаяся в PCI–X и далее). Через шины ввода/вывода проходят все обращения ЦП к периферии. К шинам ввода/вывода подключаются контроллеры и адаптеры[2] периферийных устройств или их интерфейсов. Часть ПУ совмещена со своими контроллерами (адаптерами), как, например, сетевой адаптер Ethernet, подключенный к шине PCI. Другие же ПУ подключаются к своим контроллерам через промежуточные периферийные интерфейсы, являющиеся нижним уровнем иерархии подключений. Периферийные интерфейсы – самые разнообразные из всех аппаратных интерфейсов. К периферии, подключаемой через промежуточные интерфейсы, относится большинство устройств хранения (дисковые, ленточные), устройств ввода/вывода (дисплеи, клавиатуры, мыши, принтеры, плоттеры), ряд коммуникационных устройств (внешние модемы). Для взаимодействия с ПУ процессор обращается к регистрам контроллера, «представляющего интересы» подключенных к нему устройств.
По назначению периферийные интерфейсы можно разделить на специализированные и универсальные, выделенные и разделяемые:
• специализированные интерфейсы ориентированы на подключение устройств определенного узкого класса, и в них используются сугубо специфические протоколы передачи информации. Примеры – популярнейший интерфейс мониторов VGA, интерфейс накопителя на гибких дисках, традиционные интерфейсы клавиатуры и мыши, IDE/ATA и ряд других;
• универсальные интерфейсы имеют более широкое назначение, их протоколы обеспечивают доставку данных, не привязываясь к специфике передаваемой информации. Примеры – коммуникационные порты (COM), SCSI, USB, FireWire;
• выделенные интерфейсы позволяют подключить к одному порту (точке подключения) адаптера (контроллера) лишь одно устройство; число подключаемых устройств ограничено числом портов. Примеры – COM-порт, LPT-порт в стандартном режиме, интерфейс VGA-монитора, порт AGP, Serial SCSI;
• разделяемые интерфейсы позволяют подключить к одному порту адаптера множество устройств. Варианты физического подключения разнообразны: шина (жесткая, как ISA или PCI; кабельная шина SCSI и IDE/ATA), цепочка (daisy chain) устройств (SCSI, LPT-порт в стандарте IEEE 1284.3), логическая шина на хабах (USB) или встроенных повторителях (IEEE 1394 FireWire).
Параллельные и последовательные интерфейсы Для компьютеров и связанных с ним устройств наиболее распространенной является задача передачи дискретных данных, и, как правило, в значительных количествах (не один бит). Самый распространенный способ представления данных сигналами – двоичный: например, условно высокому (выше порога) уровню напряжения соответствует логическая единица, низкому – логический ноль (возможно и обратное представление). Для того чтобы передавать группу битов, используются два основных подхода к организации интерфейса:
• параллельный интерфейс – для каждого бита передаваемой группы используется своя сигнальная линия (обычно с двоичным представлением), и все биты группы передаются одновременно за один квант времени. Примеры: параллельный порт подключения принтера (LPT-порт, 8 бит), интерфейс ATA/ATAPI (16 бит), SCSI (8 или 16 бит), шина PCI (32 или 64 бита);
• последовательный интерфейс – используется лишь одна сигнальная линия, и биты группы передаются друг за другом по очереди; на каждый из них отводится свой квант времени (битовый интервал). Примеры: последовательный коммуникационный порт (COM-порт), последовательные шины USB и FireWire, PCI Express, интерфейсы локальных и глобальных сетей.
На первый взгляд организация параллельного интерфейса проще и нагляднее и этот интерфейс обеспечивает более быструю передачу данных, поскольку биты передаются сразу пачками. Очевидный недостаток параллельного интерфейса – большое количество проводов и контактов разъемов в соединительном кабеле (по крайней мере по одному на каждый бит). Отсюда громоздкость и дороговизна кабелей и интерфейсных цепей устройств, с которой мирятся ради вожделенной
Теперь подробнее разберемся со скоростью передачи данных. Очевидно, что она равна числу бит, передаваемых за квант времени, деленному на продолжительность кванта. Для простоты можно оперировать тактовой частотой интерфейса – величиной, обратной длительности кванта. Это понятие естественно для синхронных интерфейсов, у которых имеется сигнал синхронизации (clock), определяющий возможные моменты возникновения всех событий (смены состояния). Для асинхронных интерфейсов можно воспользоваться эквивалентной тактовой частотой – величиной, обратной минимальной продолжительности одного состояния интерфейса. Теперь можно сказать, что максимальная (пиковая) скорость передачи данных равна произведению тактовой частоты на разрядность интерфейса. У последовательного интерфейса разрядность 1 бит, у параллельного она соответствует числу параллельных сигнальных цепей передачи битов данных. Остаются вопросы о достижимой тактовой частоте и разрядности. И для последовательного, и для параллельного интерфейсов максимальная тактовая частота определяется достижимым (при разумной цене и затратах энергии) быстродействием приемопередающих цепей устройств и частотными свойствами кабелей. Здесь уже очевидны выгоды последовательного интерфейса: для него, в отличие от параллельного интерфейса, затраты на построение высокоскоростных элементов не приходится умножать на разрядность.
В параллельном интерфейсе существует явление перекоса (skew), существенно влияющее на достижимый предел тактовой частоты. Суть его в том, что сигналы, одновременно выставленные на одной стороне интерфейсного кабеля, доходят до другого конца не одновременно из-за разброса характеристик цепей. На время прохождения влияет длина проводов, свойства изоляции, соединительных элементов и т. п. Очевидно, что перекос (разница во времени прибытия) сигналов разных битов должен быть существенно меньше кванта времени, иначе биты будут искажаться (путаться с одноименными битами предшествующих и последующих посылок). Вполне понятно, что перекос ограничивает и допустимую длину интер-фейсных кабелей: при одной и той же относительной погрешности скорости распространения сигналов на большей длине набегает и больший перекос. Перекос сдерживает и увеличение разрядности интерфейса: чем больше используется параллельных цепей, тем труднее добиться их идентичности. Из-за этого даже приходится «широкий» (многоразрядный) интерфейс разбивать на несколько «узких» групп, для каждой из которых используются свои управляющие сигналы. В 90-х годах в схемотехнике приемопередающих узлов стали осваиваться частоты в сотни мегагерц и выше, то есть длительность кванта стала измеряться единицами наносекунд. Достичь соизмеримо малого перекоса можно лишь в пределах жестких компактных конструкций (печатная плата), а для связи отдельных устройств кабелями длиной в десятки сантиметров пришлось остановиться на частотах, не превышающих десятков мегагерц. Для того чтобы ориентироваться в числах, отметим, что за 1 нс сигнал пробегает по электрическому проводнику порядка 20–25 см. Наносекунда – это период сигнала с частотой 1 ГГц.
Для повышения пропускной способности параллельных интерфейсов с середины 90-х годов стали применять двойную синхронизацию DDR (Dual Data Rate). Ее идея заключается в выравнивании частот переключения информационных сигнальных линий и линий стробирования (синхронизации). В «классическом» варианте данные информационных линий воспринимаются только по одному перепаду (фронту или спаду) синхросигнала, что удваивает частоту переключения линии синхросигнала относительно линий данных. При двойной синхронизации данные воспринимаются и по фронту, и по спаду, так что частота смены состояний всех линий выравнивается, что при одних и тех же физических параметрах кабеля и интерфейсных схем позволяет удвоить пропускную способность. Волна этих модернизаций началась с интерфейса ATA (режимы UltraDMA) и прокатилась уже и по SCSI (Ultra160 и выше), и по памяти (DDR SDRAM). Кроме того, на высоких частотах применяется синхронизация от источника данных (Source Synchronous transfer): сигнал синхронизации, по которому определяются моменты переключения или действительности (валидности) данных, вырабатывается самим источником данных. Это позволяет точнее совмещать по времени данные и синхронизующие импульсы, поскольку они распространяются по интерфейсу параллельно в одном направлении. Альтернатива – синхронизация от общего источника (common clock) – не выдерживает высоких частот переключения, поскольку здесь в разных (пространственных) точках временные соотношения между сигналами данных и сигналами синхронизации будут различными.