РЕЦЕНЗИИ
Гук М. Шины PCI, USB и FireWire. Энциклопедия. - СПб.: Питер, 2005. - 540 с.
В книгах, посвященных устройству и программированию современных ПК, в том числе написанных на достаточно глубоком уровне (например, в публикациях В. Кулакова "Программирование на аппаратном уровне" и "Программирование дисковых подсистем" - см. PC Week/RE, N 19/2003, c. 35), весьма значительное внимание уделяется процессору, памяти и различным внешним устройствам (клавиатуре, видеоконтроллеру, контроллерам дисков и т. п.), но о шинах говорится вскользь. Между тем без понимания принципов функционирования современных шин нельзя по-настоящему разобраться, как работает механизм plug-and-play, как запросы прерываний достигают процессора, как осуществляется прямой доступ к памяти, - а без этого полноценное "программирование на аппаратном уровне" невозможно. И только с появлением рецензируемой книги этот пробел был восполнен.
Книга М. Гука, посвященная как системным шинам семейства PCI, так и периферийным USB и FireWire, состоит из введения и 27 глав. Во введении речь идет об общих вопросах организации интерфейсов: структуре компьютера, иерархии подключений, последовательных и параллельных шинах, особенностях взаимодействия ПК с периферийными устройствами.
Шинам PCI и PCI-X, лежащим в основе почти всех современных ПК, посвящены шесть начальных глав. Первая из них является вводной, во второй обсуждаются протоколы, команды и транзакции этих шин, в третьей - организация прерываний. Четвертая глава описывает мосты, позволяющие объединить в систему несколько шин, пятая - механизмы конфигурирования устройств и предоставляемые для этой цели сервисы BIOS. В шестой главе приведены сведения об электрических характеристиках и конструктивном исполнении шин PCI и PCI-X.
Седьмая глава посвящена шине AGP, которая во многом похожа на обычную PСI, но имеет и ряд существенных отличий, направленных на достижение максимальной скорости работы графического контроллера.
В восьмой главе автор говорит о перспективной последовательной шине PCI Express, идущей на смену нынешнему стандарту PCI.
Следующие восемь глав (9-16) посвящены шине USB, пожалуй, наиболее популярному на сегодня способу подключения к ПК самых разнообразных устройств. В главе 9 описывается общая организация этой шины, в главе 10 - ее протокол. В одиннадцатой главе рассматриваются вопросы пропускной способности USB, разделения ее между несколькими устройствами, организации изохронных передач. Физический интерфейс USB - тема двенадцатой главы. В главе 13 рассматриваются устройства USB, в главе 14 - хабы (концентраторы), в главе 15 - хост-контроллеры. Шестнадцатая глава посвящена применению шины USB для подключения различных видов устройств - принтеров, хранилищ данных, человеко-машинного интерфейса, аудиоустройств.
Главы 17-26 рассказывают о высокоскоростной периферийной шине IEEE 1394 (FireWire). Автор сначала касается общих вопросов (глава 17), организации передачи данных (глава 18), арбитража и распределения времени шины (глава 19). Вопросы конфигурирования и управления шиной являются темой глав 20 и 21. Физический уровень FireWire описывается в главах 22 и 23. Применение FireWire изучается в главе 24, интерфейс открытого хост-контроллера (OHCI) этой шины - в главе 25. В 26-й главе рассматривается протокол SBP-2, описывающий транспортировку команд, данных и информации о состоянии между устройствами, подключенными к шине FireWire с использованием расщепленных транзакций.
Последняя, 27-я глава книги посвящена вопросам разработки и подключения к ПК нестандартных устройств.
Издательство, обозначив на обложке уровень потенциальных читателей как "опытные пользователи и профессионалы", несколько погорячилось: излагаемый здесь материал окажется недоступным (и ненужным) не только простым пользователям ПК независимо от их опыта, но и многим профессиональным программистам, не имевшим дела с "ручным" программированием аппаратуры ПК. Но дело не в недостатках публикации, а в сложности и специфическом характере материала. Эти сведения необходимы исключительно разработчикам нестандартных устройств, BIOS и низкоуровневых компонентов операционных систем, непосредственно работающих с аппаратурой, - а данная категория читателей, без сомнения, обладает необходимыми знаниями.
Пользу рецензируемого издания для указанной выше аудитории трудно переоценить. Дело в том, что значительная часть приводимых автором сведений "простым смертным" недоступна. Например, спецификациями PCI, опубликованными организацией PCI SIG, без ограничений могут воспользоваться только члены этой организации; все же остальные за приобщение к "высшему знанию" должны выложить весьма приличную сумму. Конечно, фирмы, профессионально занимающиеся разработкой нестандартной аппаратуры, могут раскошелиться и приобрести требуемую документацию, однако имеется и немало любителей системного программирования (к коим смею отнести и себя), которые лишены подобной возможности. Книга М. Гука заполняет этот пробел и фактически является первым изданием такого рода (можно, правда, назвать пару неплохих изданий, посвященных шине USB, - см., например, рецензию в PC Week/RE, N 31/2005, c. 29; но доступной литературы ни о PCI, ни о FireWire мне ранее не попадалось).
К недостаткам книги рискну отнести отсутствие примеров. Впрочем, объем издания ограничен, и на примеры там просто нет места, ну а читатели достаточно квалифицированны, чтобы неясные моменты выяснить самостоятельно. Кроме того, можно пожаловаться на довольно скудное описание перспективной шины PCI Express. В целом же книга содержит массу полезной информации и может быть рекомендована профессиональным разработчикам устройств для ПК и всем, кто занимается системным программированием.