PAGE 1 ОГЛАВЛЕНИЕ Порядок изучения материалов по электронному учебному пособию Введение Глава 1. Основные принципы построения систем ввода-вывода и интерфейсов 1.1. Роль и место систем ввода-вывода и интерфейсов в компьютере 1.2. Основные принципы организации передачи информации в вычислительных системах 1.3. Компьютерные коммуникации и интерфейсы 1.4. Системные интерфейсы и шины расширения 1.5. Интерфейсы периферийных устройств 1.6. Структура систем ввода-вывода 1.7. Основные функции и принципы построения интерфейсов. Глава 2 Шины расширения 2.1. Шина ISA 2.2. Шина PCI 2.3. Шина AGP Глава 3 Универсальные интерфейсы периферийных устройств 3.1 Интерфейс SCSI 3.2 Шина USB Глава 4 Компьютерный лабораторный практикум 4.1. Шина ISA 4.2. Шина PCI 4.3. Таймер 4.4. Адаптер параллельного интерфейса 4.5. Адаптер последовательного интерфейса PAGE 2 ПОРЯДОК ИЗУЧЕНИЯ МАТЕРИАЛОВ ПО ЭЛЕКТРОННОМУ УЧЕБНОМУ ПОСОБИЮ Глава I изучается по текстовому файлу INT1.doc. Глава II изучается по информационным и справочным материалам, размещенным в соответствующих компьютерных лабораторных работах (ISA, PCI) в папке ITN3. Компьютерный лабораторный практикум расположен в папке INT2 директория BOOK и в папке INT3 в директориях ISA и PCI. В директории BOOK изучаются лабораторные работы Таймер, Адаптер параллельного интерфейса и Синхронно-асинхронный приемопередатчик. Лабораторные работы изучаются дома, а на кафедре они выполняются, и студент их сдает, отвечая на вопросы, имеющиеся в лабораторных работах, ответы на вопросы контролирует компьютер. Остальные разделы части II курса изучаются по литературе, указанной в методических указаниях. PAGE 3 ВВЕДЕНИЕ При изучении систем ввода-вывода и интерфейсов необходимо представлять основные принципы построения средств вычислительной техники, которые в основном определяются той элементной базой, на которой строятся компьютеры. С этой точки зрения весь период развития вычислительной техники от первого компьютера до современных вычислительных машин можно разбить на два этапа. Первый - это этап до появления современных интегральных схем и микропроцессоров. Второй - после их появления и начала выпуска персональных компьютеров (ПК). На первом этапе компьютеры разрабатывались и изготовлялись на своей собственной элементной базе, их устройства (процессор, ОЗУ, устройства управления и т.п.) имели архитектуру и структуру, присущую только данному компьютеру, связь между устройствами и узлами осуществлялась с помощью интерфейсов, используемых только этим типом вычислительной машины. Стандарты применялись, но в основном касались ПУ, а не внутренних устройств. Поэтому машины разных фирм были не совместимы по элементной базе, устройствам и конструктиву. Это относилось как к большим, так и к малым вычислительным машинам. Это машины типа IBM 360 (370) , DEC PDP-11, БЭСМ-1 (2,6), ЕС ЭВМ-1033 (1040, 1060), СМ-1 (2,3,4), "Урал", "Наири" и т.д. Каждый тип компьютера был в определенной степени уникален. На втором этапе изменился принцип построения вычислительной техники. Она стала основываться на правиле трех "М": модульность, микропрограммируемость и магистральность. Модуль представляет из себя функционально полное и конструктивно законченное устройство, серийно выпускаемое и программно (микропрограммно) управляемое (настраиваемое). Компьютеры собираются на основе этих модулей с помощью стандартных каналов связи - интерфейсов. В этом случае модули (устройства) выпускают одни фирмы, а изготовляют компьютер - другие. Модули конструктивно и функционально разнообразны, но совместимы по своим интерфейсам. Модули выпускаются в виде микросхем различного типа (МП, память, ChipSet), съемных плат (материнская плата, платы расширения), различных типов ПУ. Функционально они соответствуют тем устройствам, которые реализуют преобразование, хранение и передачу информации: процессор, ОЗУ, схема управления, устройства ввода и вывода и т.п. На втором этапе существенно возросла роль стандартизации, без которой разработка и выпуск компьютеров стал невозможен. Роль и значение систем ввода-вывода и интерфейсов в последнее время существенно возросла. Это связано, прежде всего, с быстрым ростом производительности микропроцессоров. Частота их работы имеет значение в сотни мегагерц (Pentium III), увеличивается их разрядность: 32, 64, 128, 256 бита. Растет емкость оперативных запоминающих устройств, достигая сотен мегабайт и гигабайт. Уменьшается время доступа ОЗУ, составляя единицы и доли наносекунд. Увеличивается количество ПУ, подключаемых к компьютеру, растет их скорость работы. Емкость модуля жестких магнитных дисков уже составляет десяток гигабайт. Увеличивается объем графической информации, выводимый на монитор, широко используется 3- мерная графика, "живое видео". Все это требует соответствующего увеличения скорости передачи информации до сотен мегабайт в секунду и более и такой организации взаимосвязи устройств в вычислительной системе, которая бы исключала потери процессорного времени и равномерно загружала бы работой все устройства компьютера. Учебное пособие посвящено рассмотрению роли и места систем ввода-вывода и интерфейсов в вычислительных системах, изложению принципов их построения и функционирования. Оно содержит материалы о наиболее широко используемых интерфейсах ISA, PCI, AGP, SCSI,USB, а также компьютерные лабораторные работы, облегчающие и помогающие изучению этих материалов. Учебное пособие предназначено для студентов, специализирующихся в области вычислительной техники и программирования. Знание интерфейсов позволит разработчику аппаратуры более грамотно подойти к выбору варианта, соответствующего поставленной задаче. Знания материалов этого пособия необходимы системным интеграторам. Без этих знаний они не смогут подобрать требуемый набор устройств и оптимально объединить их в систему. Сведения учебного пособия помогут системным программистам при разработке собственных драйверов ПУ или адаптировать чужие разработки. В основе учебного пособия лежат курсы лекций "Компьютерные коммуникации и периферия", "Система ввода-вывода и интерфейсы", читаемые студентам дневных и вечерних форм обучения МИФИ, а также материалы книги Гук М. "Интерфейсы ПК": Справочник - С.-П.: Питер-Ком,1999 и Web-серверов www.ixbt.ru, www.citforum.ru. ГЛАВА 1. ОСНОВНЫЕ ПРИНЦИПЫ ПОСТРОЕНИЯ И ФУНКЦИОНИРОВАНИЯ СИСТЕМ ВВОДА-ВЫВОДА И КОМПЬЮТЕРНЫХ ИНТЕРФЕЙСОВ 1.1. РОЛЬ И МЕСТО СИСТЕМ ВВОДА-ВЫВОДА И ИНТЕРФЕЙСОВ В КОМПЬЮТЕРЕ Компьютер выполняет три основные функции: преобразование, хранение и передачу информации. В соответствии с этим компьютер условно делится на три части. Процессор, который предназначен для преобразования информации. Память, выполняющую функцию хранения информации. Процессор и оперативную память обычно называют центральным процессором (ЦПр). Средства передачи информации, которые целесообразно разделить на две части: внутренние - систему ввода-вывода и внешние - периферийные устройства (см. рис. 1.1а). Такое разделение средств передачи информации позволяет выделить ту часть вычислительной системы, которая реализует процессы передачи данных и в значительной степени определяет производительность работы компьютера, т.е. определяет его качество. Система ввода-вывода предназначена для обеспечения передачи информации между электронными устройствами при реализации функций преобразования и хранения данных и, главное, для связи этих устройств с периферийными устройствами. Система ввода-вывода реализуется с помощью соответствующих аппаратных и программных средств. Периферийные устройства (ПУ) предназначены для передачи информации между компьютером и внешним миром (см. рис. 1.1а). Их основное назначение заключается в преобразовании многообразия форм представления информации во внешнем мире в электрические сигналы, воспринимаемые устройствами компьютера и обратного преобразования электронного представления информации в формы понятные объектам внешнего мира. ПУ связываются с центральным процессором посредством системы ввода-вывода. Рис.1.1. Информационное взаимодействие компьютера и внешней среды Часто процессы и устройства ввода-вывода сводят к понятию "периферия", в результате из рассмотрения исчезают вопросы организации взаимосвязи устройств в компьютере и роль этой взаимосвязи при оценке его производительности. Вопросам организации ввода-вывода информации в вычислительной системе иногда оказывают недостаточное внимание. Это приводит к тому, что при оценке производительности системы часто используют только оценку производительности центрального процессора, а оценкой системы ввода-вывода пренебрегают. Это противоречит здравому смыслу. Очевидно, одной из наиболее правильных оценок производительности системы является время ответа (время между моментом ввода задания и получения результата), которое учитывает все накладные расходы, связанные с выполнением задания в системе, включая процессы передачи информации, т.е. ввод-вывод. О важности системы ввода-вывода говорит также и то, что в настоящее время стоимость и производительность компьютеров различного ценового класса от персональных компьютеров до суперкомпьютеров (суперсерверов) определяется в основном организацией систем памяти и ввода-вывода (а также количеством процессоров). Производительность процессоров растет со скоростью 50-100% в год. Если одновременно не улучшались бы характеристики систем ввода/вы - вода, то очевидно разработка новых систем зашла бы в тупик. Функции компьютера, описанные выше, реализуются с помощью устройств, которые создаются на базе различных по своему конструктивному выполнению, стандартных, серийно выпускаемых изделий, которые будем для общности рассмотрения называть модулями. Таким образом, модуль - это функционально полное и конструктивно законченное устройство. Примерами таких модулей могут быть следующие. Интегральные микросхемы (микропроцессоры, микросхемы управления, адаптеры, микросхема памяти и т.п.). Внешние запоминающие устройства (ВЗУ), выпускаемые в виде модулей жестких и гибких магнитных дисков, оптических и магнитооптических дисководов. Модули периферийных устройств (см. рис 1.1б): мониторы, клавиатуры, печатающие устройства, сканеры и т.п. В качестве отдельных модулей используются платы расширения, на которых располагаются специальные микросхемы и разъемы для сопряжения с другими модулями компьютера. Основой компьютера является плата, на которой расположены МП, память, основная часть устройств системы ввода-вывода, такую плату называют системной или материнской платой. При изготовлении компьютера модули соединяются между собой с помощью стандартных конструктивных средств. Следует подчеркнуть, что модули по скорости работы очень разнородны, время выполнения ими операций лежит в очень широких пределах - от долей секунды до наносекунд, т.е. меняется на 8 порядков. Если эту скорость измерять временем обработки одного слова, т.е. временем его преобразования, временем доступа к памяти, временем его передачи, временем ввода или вывода, то получим следующие цифры: микропроцессор - от 1 нсек до нескольких наносекунд, ОЗУ - от нескольких до десятков наносекунд, ВЗУ - от сотен наносекунд до сотен микросекунд, Устройства ввода-вывода - от сотен микросекунд до долей секунд. В процессе работы компьютера идет постоянная передача информации между модулями. И время передачи информации от модуля к модулю существенно влияет на производительность работы компьютера, а иногда определяет ее. Огромная разница в скоростях работы взаимосоединяемых модулей создает серьезные трудности для систем ввода-вывода и требует выработки определенных оптимальных решений, обеспечивающих минимизацию простоев центрального процессора и полной загрузки работой других устройств при функционировании вычислительной системы. Конструктивно компьютер, как правило, представляет из себя системный блок, выполненный в виде отдельного корпуса, где располагается системная плата, и нескольких периферийных устройств, подключенных к системному блоку с помощью специальных кабелей и шнуров. Компоновка компьютера, т.е. соединение всех модулей между собой, производится с учетом выполнения трех главных требований: 1. Обеспечения максимальной производительности работы компьютера в целом при малой стоимости с учетом времени передачи информации. 2. Конструктивной простоты и минимальной стоимости средств взаимосоединений модулей. 3. Возможности подключения максимального числа ПУ и простота изменения конфигурации ПУ в период эксплуатации компьютера. Рассмотрим, как реализуется взаимосвязь модулей, с учетом вышеперечисленных требований. Имеются три основных способа соединения модулей между собой (см. рис. 1.2): "каждый с каждым", радиальный и магистральный. Рис. 1.2. Способы соединения модулей При соединении типа "каждый с каждым" взаимосвязь модулей ни чем не ограничена из-за огромного количества линий связи, поэтому легко выполняются требования высокой производительности, но остальные требования реализовать нельзя из-за сложности взаимных соединений. Поэтому этот способ на уровне модулей не используется. Радиальный - при этом способе имеется главный модуль, с которым связаны все остальные и они могут взаимодействовать между собой только через главный модуль, что также снижает производительность, но меньше чем при магистральном способе. Такой способ соединения эффективен для соединения модулей, которые в основном работают только с главным. Достоинство - простота каналов связи каждого модуля, что позволяет увеличивать их длину на много больше, чем у магистральных. Радиальный способ позволяет к одному разъему подключать всего одно ПУ или, при соответствующей организации канала, несколько ПУ. Этот способ также нашел широкое применение в компьютерах. Магистральный - это способ, когда все модули взаимодействуют через общую магистраль. Он является наиболее простым по реализации, но снижает производительность, т.к. все модули делят магистраль между собой. К недостатком этого способа можно отнести также и то, что высокоскоростные магистрали все же дороги и могут быть реализованы только при их ограниченной длине. При определенной организации взаимосвязи, магистральный способ позволяет к одному разъему подсоединить несколько ПУ. Этот способ наиболее широко используется в компьютерах. Взаимосоединение модулей в компьютере, с помощью рассмотренных выше способов, возможно только при определенной унификации этих соединений. Средства и правила, обеспечивающие взаимосвязь модулей между собой, называются интерфейсом. Главное требование к интерфейсам - их стандартизация. Только использование стандартных интерфейсов может обеспечить массовый выпуск компьютеров и их эффективное производство и эксплуатацию. Именно интерфейсы определяют те правила, по которым строятся каналы передачи информации между модулями вычислительной системы. Физически интерфейс реализуется в виде электрических линий для передачи сигналов и набора микросхем, обеспечивающих выполнение основных функций интерфейса. В интерфейсе стандартизируются следующие параметры: 1. Структура интерфейса, т.е. количество и назначение линий интерфейса. 2. Параметры электрических сигналов в линиях. 3. Протоколы обмена информацией в интерфейсах, циклы (команды) интерфейса, реализуемые в виде временных диаграмм сигналов, зависящих от архитектуры и структуры интерфейса. 4. Конструктивные параметры интерфейса. Таким образом, стандартный интерфейс - это совокупность унифицированных аппаратных, программных и конструктивных средств и правил, необходимых для реализации взаимодействия различных функциональных элементов в автоматических системах сбора и обработки информации. В пособии в основном рассматриваются структура и протоколы работы интерфейсов. 1.2. ОСНОВНЫЕ ПРИНЦИПЫ ОРГАНИЗАЦИИ ПЕРЕДАЧИ ИНФОРМАЦИИ В ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМАХ В процессе работы компьютера передача информации по одному и тому же интерфейсу в один и тот же момент времени идет только между двумя устройствами (модулями) по принципу "точка-точка". При этом одно из устройств является активным (ведущим, задатчиком), другое - пассивным (исполнителем, ведомым). Активное устройство начинает процедуру обмена и управляет ею. Пассивное устройство выполняет предписания активного. В компьютере одни устройства всегда является задатчиками (активными), другие только исполнителями (пассивными), третьи в разные моменты времени могут быть как задатчиками, так и исполнителями. Процессор всегда активное устройство, оперативная память (ОЗУ) - пассивное устройство. Периферийные устройства при работе с процессором являются исполнителями, а при работе с ОЗУ (прямой доступ к памяти) - задатчиками. Возможна передача между двумя ПУ, тогда одно - задатчик, другое - исполнитель (см. рис.1.3а). Рис.1.3. Управление обменом информации Таким образом, пассивными устройствами являются либо ОЗУ, либо ПУ. Со стороны процессора средства управления этими двумя типами устройств существенно различны. Это обусловлено тем, что для передач процессор-ОЗУ заранее известны все типы и параметры устройств, которые должны соединяться между собой, т.к. эти устройства однотипны, в то время как ПУ существенно различаются, как по задержке, так и по пропускной способности. Кроме того, процесс управления ПУ намного сложнее и требует большего времени и учета специфики работы. Поэтому управление передачей процессор-ОЗУ реализуется в рамках одной компьютерной команды на уровне микрокоманд (см. рис. 1.3б), а управление процессом ввода-вывода с учетом специфики ПУ с помощью специальной подпрограммы, которая называется драйвером и содержит как команды компьютера, так и команды управления, специфичные для каждого типа ПУ (см. рис.1.3в). Поэтому интерфейс, связывающий устройства при передаче данных должен учитывать эти особенности. Передача информации от задатчика к исполнителю реализуется операцией записи, а обратная - операцией чтения. Процесс передачи между ПУ и ЦПр называют вводом-выводом информации. Ввод реализуется с помощью операции чтения, а вывод - операцией записи. Если на процессор возложить функции управления вводом-выводом, то у него не хватит времени для выполнения своей главной функции - преобразования информации. Это обусловлено широким диапазоном скоростей работы ПУ, сложностью их управления и большим разнообразием и количеством разных ПУ (см. рис.1.1б). Для минимизации загрузки процессора при выполнении процессов ввода-вывода функции управления распределяются на несколько устройств: процессор, главный контроллер (канал) ввода-вывода, контроллер ПУ и блок управления ПУ. Главный контроллер и контроллеры различного типа ПУ вместе с соответствующим программным обеспечением образуют Систему ввода-вывода. Процессор, главный контроллер, контроллеры ПУ находятся в системном блоке, а блок управления ПУ - в самом периферийном устройстве, в ряде случаев контроллер ПУ может находиться в самом ПУ. Такое распределение позволяет оптимизировать загрузку каждого вида устройств присущими ему функциями при мультипрограммном режиме работы компьютера. Это происходит за счет совмещения во времени работы различных по функциям устройств. Функциональная схема передачи информации в компьютере показана на рис.1.4. Рис. 1.4. Функциональная схема организации передачи информации в компьютере 1. Состояние главного контроллера 7. Команда главного контроллера 2. Команда ввода-вывода 8. Состояние периферийных устройств 3. Адрес контроллера ввода-вывода 9. Приказ периферийному устройству 4. Состояние контроллера на выполнение операции ввода-вывода ввода-вывода 5. Адрес вектора прерывания 10.Выполнение операции 6. Команда драйвера ввода-вывода Операцию ввода-вывода начинает процессор, выдавая в главный контроллер ввода-вывода соответствующую команду (2). Предварительно, с помощью слова состояния канала, процессор должен убедиться, что он готов к работе (1). Канал приступает к управлению вводом-выводом с помощью специальной программы канала. После чего процессор отключается от процесса ввода-вывода и функции управления принимает на себя канал. Канал, после анализа слова состояния (4) соответствующего контроллера о его готовности, передает ему управляющий приказ (команду канала) (6,7) и может переходить к работе с контроллером другого ПУ. Контроллер ПУ принимает эстафету управления вводом-выводом, формирует и передает в блок управления ПУ необходимый управляющий код (сигнал) (8,9), получив который ПУ преступает к процессу передачи данных (10). Как следует из рассмотрения (см. рис.1.4), каждый уровень управления вводом-выводом должен иметь регистры управления, состояния и данных для реализации своих действий по передаче информации. При реализации такой многоуровневой системы управления вводом-выводом для связи устройств между собой используется два вида интерфейсов: системные интерфейсы (внутренние) для взаимосвязи модулей в системном блоке и внешние интерфейсы ПУ (интерфейс периферийных устройств) для подсоединения ПУ к системному блоку (см. рис.1.4) Для учета особенностей реализации процессов ввода-вывода и специфики различного типа ПУ используются три режима ввода-вывода информации: программный ввод-вывод, ввод-вывод в режиме прерываний и с прямым доступом к памяти. Интерфейсы должны учитывать возможность реализации всех 3-х режимов ввода-вывода. Программный ввод-вывод. Здесь инициализация и управление процессом ввода-вывода осуществляет процессор. Имеется три способа его выполнения (см. рис.1.5). Рис.1.5. Программный ввод-вывод Первый способ - прямой, используется для синхронных ПУ, т.е. устройств, которые всегда готовы к работе и циклов ожидания не требуется. Второй - условный с занятием цикла, когда при не готовности ПУ, процессор ждет до тех пор, пока наступит его готовность. Третий - условный с совмещением. В отличие от предыдущего, процессор не ждет готовности ПУ, а переходит к продолжению программы с периодической проверкой готовности ПУ. Ввод-вывод в режиме прерываний. В этом случае инициатором начала процесса ввода-вывода является ПУ. Оно, когда готово, подает сигнал процессору "запрос на прерывание". Процессор, если ПУ разрешен такой режим, завершает текущую команду и переходит к выполнению процесса ввода-вывода (см. рис. 1.6). Сначала он осуществляет контекстное переключение, т.е. запоминает свое состояние, чтобы можно было после продолжить программу, идентифицирует ПУ и передает управление драйверу данного ПУ (ПП), который и осуществляет ввод или вывод информации. Идентификация ПУ производится с помощью адреса вектора прерывания, который содержит номер ячейки, где хранится первая команда этого драйвера. Адрес вектора прерывания ПУ передается процессору от контроллера прерываний (см. рис.1.4, сигнал 5). Рис.1.6. Ввод-вывод в режиме прерывания Следует отметить два момента. Во-первых, ПУ должно иметь, предварительно установленное, разрешение на работу в режиме прерываний. Во-вторых, возможны коллизии, когда несколько ПУ выставляют процессору запрос прерывания. Эта коллизия разрешается с помощью механизма задания уровня приоритетов для каждого ПУ. Возможна организация вложенных прерываний, когда ПУ с большим приоритетом прерывает работу ПУ с меньшим приоритетом. Все эти моменты должен учитывать стандарт на интерфейс. Прямой доступ к памяти (см. рис. 1.7). Этот режим используется для высокоскоростных ПУ, имеющих скорость передачи более 50 Кбит/сек. В этом режиме активным устройством является контроллер прямого доступа к памяти (КПДП). Процессор, получив от КПДП заявку на прямой доступ, прерывает свою работу и отключается от интерфейса, передавая его задатчику, т.е. КПДП. Процессор при этом не выполняет контекстного переключения, а может продолжать свою работу, если она не требует интерфейса. Управление интерфейсом переходит к КПДП, который посредством выполнения операций чтения и записи передает информацию между ОЗУ и ПУ с соответствующим заданием адресов памяти. В этом режиме используется механизм задания уровня приоритетов для тех ПУ, которые работают с прямым доступом к памяти. Этот режим также должен быть предусмотрен в интерфейсах. Как следует из вышеизложенного, канал ввода-вывода (главный контроллер) реализует функции управления общие для всех ПУ, а контроллер внешнего интерфейса учитывает специфику интерфейса, связывающего его с соответствующим ПУ. В компьютерах, которые работают с малой интенсивностью ввода-вывода, главный контроллер (канал) ввода-вывода обычно отсутствует, а его функции берет на себя микропроцессор. В этом случае процессор работает непосредственно с контроллером ввода-вывода ПУ, что упрощает структуру компьютера. При работе с высокоскоростным ПУ обычно используется режим прямого доступа к памяти. Для этого режима аппаратно реализуется специальный канал ввода-вывода в виде КПДП. Рис. 1.7. Режим прямого доступа к памяти Изложенный в данном разделе материал, дает возможность понять, почему интерфейсы имеют такую структуру, функции и протоколы работы. 1.3. КОМПЬЮТЕРНЫЕ КОММУНИКАЦИИ И ИНТЕРФЕЙСЫ Интерфейсы, используемые при построении вычислительных систем, весьма разнообразны и различаются между собой по определенным критериям и характеризуются рядом свойств и параметров. В области интерфейсов существует своя терминология, которая задается теми или иными определениями и понятиями, которые с развитием компьютерной техники постоянно трансформируются, что вызывает необходимость рассматривать их в определенной ретроспективе. Кратко остановимся на некоторых понятиях и определениях. Канал - среда передачи информации, представляемой в виде определенных сигналов. Канал реализуется с помощью тех или иных средств, зависящих от физической природы сигналов (ток, напряжение, радиосигнал, оптический сигнал и т.п.). Компьютерный интерфейс является каналом передачи информации с помощью электрических сигналов (импульсов и потенциалов). Линия интерфейса - это электрический проводник (провод, линия печатного монтажа, контакт разъема платы), по которому распространяется электрический сигнал. Магистраль - это совокупность всех линий интерфейса. Шина - группа линий интерфейса, соответствующая определенному функциональному назначению (шина данных, шина адреса и т.п.) В дальнейшем термин "магистраль" стали заменять термином "шина". В свою очередь понятие "шина" стало в определенной мере синонимом термина "интерфейс", хотя понятие шины более узкое, чем общее понятие интерфейса. В компьютерах, по причинам, изложенным выше, система ввода-вывода строится на основе магистральных и радиальных способов соединения модулей (устройств), оформленных в виде стандартных интерфейсов, называемых соответственно магистральными и радиальными. По способу передачи информации интерфейсы делятся на параллельные и последовательные. Разряды данных могут передаваться в интерфейсах одновременно, т.е. параллельно. Такие интерфейсы называются параллельными, и они имеют шину данных из стольких линий, сколько разрядов передается одновременно. При передаче данных по одной линии последовательно разряд за разрядом, интерфейс называют последовательным. Кажется очевидным, что при одной и той же скорости работы линий интерфейса, пропускная способность параллельного интерфейса выше, чем у последовательного. Однако повышение производительности за счет увеличения тактовой частоты передачи и количества линий данных упирается в волновые свойства соединительных кабелей. Задержка сигналов в различных линиях не одинакова, и это особенно сказывается при увеличении длины линий, что требует для надежной передачи данных дополнительных временных и аппаратных затрат, сдерживая этим рост пропускной способности параллельного интерфейса. Кроме того, в параллельных интерфейсах с увеличением числа параллельных линий и их длины труднее реализовать компенсацию помех, наводимых за счет электрического взаимодействия линий между собой. В последовательных интерфейсах есть свои проблемы повышения производительности, но т.к. в них используется меньшее число линий, повышение пропускной способности канала связи обходится дешевле. Поэтому важным параметром интерфейсов является допустимое удаление соединяемых устройств. Оно определяется как частотными свойствами, так и помехозащищенностью используемых каналов связи. Для интерфейса, соединяющего два устройства (модуля), различаются три возможных режима обмена: дуплексный, полудуплексный и симплексный. Дуплексный режим позволяет по одному каналу связи, но имеющему две группы линий "туда" и "обратно", одновременно передавать информацию в обоих направлениях. Он может быть асимметричным, если пропускная способность в направлении "туда" и "обратно" имеет существенно различающееся значения, или симметричным. Полудуплексный режим позволяет передавать информацию по одним и тем же линиям "туда" и "обратно" поочередно в разные моменты времени, при этом интерфейс имеет средства переключения направлений канала. Симплексный (односторонний) режим предусматривает только одно направление передачи информации (во встречном направлении могут передаваться только вспомогательные сигналы интерфейса). Все модули внутри системного блока, а это электронные модули (микропроцессор, оперативная память, контроллеры ввода-вывода и т.д.), соединяются между собой с помощью так называемого внутреннего интерфейса, являющегося параллельным и построенного по магистральному способу. Внутренние интерфейсы предназначены для быстрой связи на короткие расстояния. Причем важна не только высокая пропускная способность, но и малое время доступа активного устройства к исполнителю. ПУ соединяются с системным блоком по радиальным или магистральным интерфейсам, последовательным и параллельным, называемым внешними. Разъем системного блока, предназначенный для подсоединения к нему внешнего интерфейса и соответствующие ему электронные схемы, называют портом ввода-вывода. Так как через внутренний интерфейс соединяются в систему все модули компьютера, этот интерфейс стали называть системным интерфейсом (системной шиной). Хотя в дальнейшем это понятие несколько изменилось, о чем речь пойдет ниже. Внешние интерфейсы стали называть малыми интерфейсами или интерфейсами периферийных устройств (см. рис. 1.4). Важным отличительным свойством интерфейсов является топология соединения модулей (устройств) с шиной интерфейса. Шины внутренних интерфейсов, являясь параллельными и магистральными, размещаются на системной (материнской) плате, а взаимосоединяемые модули являются электронными, изготовленными в виде микросхем или плат расширения (процессор, ОЗУ, ROMBIOS и т.п.), поэтому каждый модуль имеет свое собственное соединение с шиной. Это соединение реализуется разными способами: печатным монтажем, с помощью слотов, сокетов и разъемов. Причем допустимое удаление модулей друг от друга мало и определяется размерами материнской платы. Слот (Slot) представляет собой щелевой разъем, в который вставляется какая-либо печатная плата. Слот расширения (Expansion Slot) - это разъем системной шины, куда вставляется плата или карта расширения (Expansion Card). Платой (картой) расширения называют печатную плату с краевым разъемом, устанавливаемую в слот расширения, платы, обеспечивающие дополнительный интерфейс, называют интерфейсными картами (Interface Card) Сокет (Socket) -гнездо, в которое устанавливается микросхема. Внешние интерфейсы ПУ имеют более разнообразную топологию. Для радиальных интерфейсов - это двухточечная топология: порт системного блока - разъем ПУ (шины RS-232,Centronics) или топология типа дерева (шины USB). Двухточечная топология позволяет к порту подключать только одно ПУ. При древовидной топологии основой (корнем) дерева является порт ввода-вывода компьютера, а ПУ могут быть либо конечным устройством, либо новым центром ветвления. Эта топология позволяет подключать множество устройств к одному порту компьютера. Для магистральных интерфейсов используется шлейфовая топология (шины SCSI). При шлейфовой топологии шина подключается к одному порту компьютера, а от него последовательно проходит по всем ПУ. В ПУ один разъем подключается к предыдущему ПУ (первое - к порту ввода-вывода), а другой разъем шины используется для подключения следующего ПУ, если его нет, то к этому разъему подключается терминатор (согласующая схема). В этом случае, как правило, контроллер внешнего интерфейса размещается в самом ПУ, а шиной SCSI управляет главный контроллер (адаптер), который фактически является каналом ввода-вывода (см. рис. 1.4). 1.4. СИСТЕМНЫЕ ИНТЕРФЕЙСЫ И ШИНЫ РАСШИРЕНИЯ Основой высокой производительности вычислительной машины любого типа является центральный процессор (ЦПр), состоящий из микропроцессора (МП) и оперативной памяти, связанных шиной передачи информации. Из этих трех составляющих определяющим является МП, т.к. он преобразует информацию и управляет передачей данных. Процессор - активное устройство, а ОЗУ и шина - пассивные. Если обозначить скорость работы МП - UМП, ОЗУ - UОЗУ, а шины - UШ, то наилучшим (оптимальным) соотношением скоростей будет UМП ?UОЗУ ?UШ. Пропускная способность шины зависит от ее разрядности, частоты работы и числа синхроимпульсов на передачу одного слова. Поэтому внутренние шины делят на шины, обеспечивающие связь процессора с памятью и шины ввода-вывода. Шины процессор-память сравнительно короткие, обычно высокоскоростные и соответствуют организации системы памяти для обеспечения максимальной пропускной способности канала память-процессор. Такие шины стали называть системными шинами, а бывшие системные - шинами ввода-вывода. Шины ввода-вывода длиннее и могут поддерживать подсоединение многих типов устройств и обычно следуют одному из стандартов. Шины ввода-вывода стали называть шинами расширения, подразумевая то, что эта шина как бы расширяет системную шину с точки зрения количества подключаемых устройств. ПУ подсоединяют к шине ввода-вывода посредством интерфейсов ПУ, которые, как правило, стандартизированы. Шинам процессор-память заранее известны все типы и параметры устройств, которые должны соединяться между собой, шина ввода-вывода имеет дело с устройствами, различающимися по задержке и пропускной способности. Рассмотрим, как изменялась пропускная способность системной шины (МП-память) в зависимости от скоростей работы МП и памяти. В таблице 1 приведены некоторые характеристики микропроцессоров фирмы Intel, расположенных по годам, начиная с 1978г., года появления ПК. ТАБЛИЦА 1 В таблице 2 даны характеристики памяти (время доступа) и системной шины процессор-память (частота шины данных, максимальная и реальная пропускная способность). Под пропускной способностью понимают скорость передачи по шине, измеряемой количеством байт в секунду. Как видно из таблицы 1, тактовая частота МП с 1980г. возросла в 60 раз. За тоже время частота, на которой работает системная память со страничной организацией (FPM), возросла в 5 раз. Применение EDORAM и SDRAM увеличило производительность памяти всего в 10 раз. Таким образом, между производительностью МП и памяти образовался разрыв. ТАБЛИЦА 2 Из этой таблицы также видно, что частота работы системной шины, соединяющей МП и память, возросла в 8 раз и достигла 66 МГц. В перспективе планируется увеличить эту частоту до 100, 133, 200 МГц. Но вместе с тем эти цифры показывают, что имеется постоянный разрыв между частотой работы МП и частотой системной шины, кратность соотношения этих частот, начиная с МП i486 составляет 1,5; 2; 2,5; 3. Для повышения пропускной способности системной шины увеличивают ее ширину, т.е. число одновременно передаваемых байт. За весь период число разрядов шины данных увеличился с 8 до 64. Все эти меры довели пропускную способность системной шины до 528 Мбайт/сек, в перспективе оно возрастет до 800, 1600 и более Мбайт/сек. Это увеличение связано также с появлением новых технологий памяти основанных на синхронных DRAM: SDRAM II (DDR), SLDRAM и принципиально новой архитектуре памяти RAMBUS (RDRAM, Concurrent, RAMBUS, Direct RAMBUS). Чтобы МП не простаивал, используют дополнительную высокоскоростную КЭШ-память на основе SRAM, располагаемую как на кристалле МП (КЭШ-память 1-го уровня), так и вне кристалла (КЭШ-память 2-го уровня). В последних МП типа Pentium II КЭШ-память 2-го уровня располагается в одном корпусе с МП, что позволяет увеличивать частоту работы шины связи этой памяти с ядром МП. Производительность и качество работы компьютера определяется не только высокой скоростью центрального процессора и емкостью ОЗУ, но и скоростью и качеством работы ПУ. Очень важными являются такие параметры, как емкость, время доступа, скорость передачи данных у внешних запоминающих устройств, возможность отображения на экране монитора трехмерной графики со сложными ее преобразованиями в реальном масштабе времени, показ "живого видео" и т.п. Поэтому в компьютере требуется организация оптимального взаимодействия ЦПр и ПУ, чем и занимаются шины ввода-вывода. Рассмотрим их развитие и трансформацию, начиная с первых компьютеров IBM PC. Следует подчеркнуть, что развитие шин ввода-вывода шло таким образом, чтобы сохранить преемственность с ранее разработанными и выпускаемыми аппаратными и программными средствами. Важным свойством интерфейсов ввода-вывода является поддержка режима автоконфигурации (Plug and Play). При конфигурации систем, каждому ПУ задается определенный уровень прерываний и диапазон адресов для регистров этого устройства. Этот процесс требует времени и определенной квалификации пользователя. Введение режима Plug and Play автоматизирует этот процесс, существенно облегчая конфигурирование с подключением нового ПУ. В таблице 3 приведены характеристики шин ввода-вывода (шин расширения), используемых в персональных компьютерах типа IBM PC и др. типа, начиная с начала 80-х годов. В таблице приведена пиковая пропускная способность (теоретически возможная), реальная примерно в 2 раза ниже за счет прерываний, регенерации, протокольных процедур. Пропускная способность зависит от частоты работы шины, разрядности шины данных и количества тактов на передачу одного слова. Шина использует все свои возможности, если слово передается за один синхроимпульс шины. ТАБЛИЦА 3 Одной из первых шин персональных компьютеров была системная шина IBM PC/XT, обеспечивавшая передачу 8 бит данных. Кроме того, эта шина включала 20 адресных линий, которые ограничивали адресное пространство пределом в 1 Мбайт. Для работы с внешними устройствами в этой шине были предусмотрены также 4 линии аппаратных прерываний (IRQ) и 4 линии для требования внешними устройствами прямого доступа к памяти (DMA). При этом системная шина и микропроцессор синхронизировались от одного тактового генератора с частотой 4.77 МГц. Таким образом, теоретическая скорость передачи данных могла достигать немногим более 4 Мбайт/с. Системная шина ISA (Industry Standard Architecture) впервые стала применяться в персональных компьютерах IBM PC/AT на базе процессора i286. В этой системной шине количество адресных линий было увеличено на 4, а данных - на 8, что позволило передавать параллельно 16 бит данных и обращаться к 16 Мбайт системной памяти. Количество линий аппаратных прерываний в этой шине было увеличено до 15, а каналов прямого доступа - до 7. Системная шина ISA полностью включала в себя возможности старой 8-разрядной шины. Шина ISA позволяет синхронизировать работу процессора и шины с разными тактовыми частотами. Она работает на частоте 8 МГц, что соответствует максимальной скорости передачи 16 Мбайт/с. С появлением процессоров i386, i486 и Pentium шина ISA стала узким местом персональных компьютеров. Новая системная шина EISA (Extended Industry Standard Architecture), появившаяся в конце 1988 года, обеспечивает адресное пространство в 4 Гбайта, 32-битовую передачу данных (в том числе и в режиме DMA), улучшенную систему прерываний и арбитраж DMA, автоматическую конфигурацию системы и плат расширения. Устройства шины ISA могут работать на шине EISA. Шина EISA тактируется частотой около 8 МГц и имеет максимальную теоретическую скорость передачи данных 33 Мбайт/с. Шина MCA также обеспечивает 32-разрядную передачу данных, тактируется частотой 10 МГц, имеет средства автоматического конфигурирования и арбитража запросов. В отличие от EISA она не совместима с шиной ISA и используется только в компьютерах компании IBM. Шина PCI (Peripheral Component Interconnect) также поддерживает 32-битовый канал передачи данных между процессором и периферийными устройствами, работает на тактовой частоте 33 МГц и имеет максимальную пропускную способность 132 Мбайт/с. Шина PCI является процессорно независимой (шина VL-bus подключается непосредственно к процессору i486 и только к нему). Ee легко подключить к различным центральным процессорам. В их числе Pentium, Alpha, R4400 и PowerPC. Шина PCI вытеснила шину VLB и стала самой популярной. Она постоянно развивается, вышли версии 2.0; 2.1; 2.2, сейчас готовится версия PCI-Х. Скорость шины возросла до 528 Мбайт/сек при частоте 66 Мгц и использовании 64 разрядной шины. Шина поддерживает режим автоконфигурации, "горячую" замену адаптеров, управление энергопотреблением. Шина РCI не устранила "узкое место" обмена памяти компьютера с видеокартой. Поэтому фирма Intel на базе стандарта PCI 2.1 разработала новую шину AGP (R1.0 затем 2.0). AGP - Accelerated Graphic Port - предназначена для подключения графических адаптеров. Эта шина 32-х разрядная с тактовой частотой 66 МГц, по составу сигналов напоминающая шину PCI. В обычном режиме шина AGP имеет пропускную способность в 256 Мбайт/сек. В версии 1.0 имеется режим AGP2Х, когда за один такт передается два 32-х разрядных слова по фронту и спаду сигнала синхронизации. Этот режим обеспечивает скорость 528 Мбайт/сек. В 1998г. появилась версия 2.0, где за один такт передается 4 слова. Это обеспечивает пропускную способность в 2 Гбайт/сек. Но вместе с тем, шина AGP не заменяет полностью шину PCI, т.к. в ней не поддерживается ряд операций PCI, и она обладает своей рекордной пропускной способностью только в одну сторону от процессора к видеокарте, обратно данные пересылаются со скоростью обычной PCI. Шина VME приобрела большую популярность как шина ввода/вывода в рабочих станциях и серверах на базе RISC-процессоров. Эта шина высоко стандартизована, имеется несколько версий этого стандарта. В частности, VME32 - 32-битовая шина с производительностью 30 Мбайт/с, а VME64 - 64-битовая шина с производительностью 160 Мбайт/с. В однопроцессорных и многопроцессорных рабочих станциях и серверах на основе микропроцессоров SPARC одновременно используются несколько типов шин: SBus, MBus и XDBus, причем шина SBus применяется в качестве шины ввода/вывода, а MBus и XDBus - в качестве шин для объединения большого числа процессоров и памяти. Шина SBus (известная также как стандарт IEEE-1496) имеет 32-битовую и 64-битовую реализацию, работает на частоте 20 и 25 МГц и имеет максимальную скорость передачи данных в 32-битовом режиме равную соответственно 80 или 100 Мбайт/с. Шина предусматривает режим групповой пересылки данных с максимальным размером пересылки до 128 байт. Она может работать в двух режимах передачи данных: режиме программируемого ввода/вывода и в режиме прямого доступа к виртуальной памяти (DVMA). Последний режим особенно эффективен при передаче больших блоков данных. Шина MBus работает на тактовой частоте 50 МГц в синхронном режиме с мультиплексированием адреса и данных. Общее число сигналов шины равно 100, а разрядность шины данных составляет 64 бит. По шине передаются 36-битовые физические адреса. Шина обеспечивает протокол поддержания когерентного состояния кэш-памяти нескольких (до четырех) процессоров, имеет максимальную пропускную способность в 400 Мбайт/с, а типовая скорость передачи составляет 125 Мбайт/с. Отличительными свойствами шины MBus являются: возможность увеличения числа процессорных модулей, поддержка симметричной мультипроцессорной обработки, высокая пропускная способность при обмене с памятью и подсистемой ввода/вывода, открытые (непатентованные) спецификации интерфейсов. Шина MBus была разработана для относительно небольших систем (ее длина ограничивается десятью дюймами, что позволяет объединить до четырех процессоров с кэш-памятью второго уровня и основной памятью). Для построения систем с большим числом процессоров нужна большая масштабируемость шины. Одна из подобного рода шин - XDBus, используется в серверах SPARCserver 1000 (до 8 процессоров) и SPAR Server 2000 (до 20 процессоров) компании Sun Microsystems и SuperServer 6400 компании Cray Research (до 64 процессоров). XDBus представляет собой шину, работающую в режиме расщепления транзакций. Это позволяет ей, имея пиковую производительность в 400 Мбайт/с, поддерживать типовую скорость передачи на уровне более 310 Мбайт/с. В современных компьютерах часто применяются и фирменные (запатентованные) шины, обеспечивающие очень высокую пропускную способность для построения многопроцессорных серверов. Одной из подобных шин является системная шина POWERpath-2, которая применяется в суперсервере Chellenge компании Silicon Graphics. Она способна поддерживать эффективную работу до 36 процессоров MIPS R4400 (9 процессорных плат с четырьмя 150 МГц процессорами на каждой плате) с общей расслоенной памятью объемом до 16 Гбайт (коэффициент расслоения памяти равен восьми). POWERpath-2 имеет разрядность данных 256 бит, разрядность адреса 40 бит, и работает на частоте 50 МГц с пониженным напряжением питания. Она поддерживает методику расщепления транзакций, причем может иметь до восьми отложенных транзакций чтения одновременно. При этом арбитраж шины адреса и шины данных выполняется независимо. POWERpath-2 поддерживает протокол когерентного состояния кэш-памяти каждого процессора в системе. В последующих разделах пособия достаточно подробно рассматриваются шины ISA и PCI, которые являются наиболее распространенными, в них отражаются все основные принципы построения интерфейсов ввода-вывода. 1.5. ИНТЕРФЕЙСЫ ПЕРИФЕРИЙНЫХ УСТРОЙСТВ Шины ввода-вывода взаимодействуют с ПУ не непосредственно, а с помощью внешних интерфейсов (интерфейсов периферийных устройств). В отличие от шин расширения, шины внешних интерфейсов имеют большую длину и позволяют подключать к системному блоку компьютера ПУ, находящиеся на расстоянии до нескольких метров. Внешние интерфейсы ПУ можно разделить на две группы: специализированные интерфейсы и универсальные интерфейсы. Специализированные интерфейсы обслуживают только один тип ПУ. К ним можно отнести: интерфейсы клавиатуры, интерфейс манипуляторов, аудиоинтерфейсы, интерфейсы мониторов, интерфейс игрового адаптера, интерфейс флоппи-дисков. Универсальные интерфейсы позволяют подключать различные типы ПУ (печать, сканер, графопостроитель, видеокамера и т.д.). К этим интерфейсам относятся: последовательные интерфейсы RS-232c, USB, Fire Wire и др., параллельные интерфейсы Centronics (стандарт IEEE1284), SCSI, ATA и др. С развитием шин ввода-вывода и совершенствования самих ПУ изменяются и внешние интерфейсы. Модифицируются старые, появляются новые. Но эволюция интерфейсов ПУ идет меньшими темпами, чем системных интерфейсов и шин расширения. В таблице 4 приведены характеристики наиболее распространенных универсальных интерфейсов ПУ в их ретроспективе, начиная с интерфейсов, использовавшимися в первых ПК. ТАБЛИЦА 4 Практически не изменился за весь период развития ПК интерфейс RS-232, который появился в 1969г. Это наиболее простой и дешевый интерфейс. Он является дуплексным интерфейсом с последовательной передачей данных в асинхронном и синхронном режимах со скоростью до 115 Кбит/сек и топологией "точка-точка". Интерфейс RS-232 чаще всего используется для подключения различного типа манипуляторов, для связи двух компьютеров, подключения принтеров и плоттеров, а также электронных ключей (Security Devices), предназначенных для защиты от нелицензированного использования программного обеспечения. Этот интерфейс позволяет эмулировать специальные терминалы (UT-52, UT-100 и т.д.). Он используется для беспроводных коммуникаций с применением излучателей и приемников инфракрасного диапазона - IR Connection. Centronics - параллельный, симплексный интерфейс с побайтной передачей данных со скоростью до 150 КБайт/сек, предназначенный для подсоединения механических печатающих устройств, имеющий топологию "точка-точка". Он был разработан фирмой Epson в начале 80-х годов. С появлением новых видов ПУ и повышения их быстродействия произошло развитие Centronics. В 1994 году появился стандарт IEEE1284, где определялось три вида портов. SPP - начальный вариант Centronics. EPP - улучшенный параллельный порт. (Enchanted Parallel Port). ECP - порт с расширенными возможностями (Extended Capability Port). Последние варианты портов повысили быстродействие до 4-х Мбайт/сек, сделали интерфейс полудуплексным, что дало возможность использовать его для других видов ПУ, например, плоттеров, сканеров, видеокамер и т.п., а также использовать режим прямого доступа к памяти. Наиболее быстродействующим, но и дорогим, является интерфейс SCSI (Small Computer System Interface), который был стандартизирован в 1986г. Этот интерфейс предназначен для подключений ПУ различных классов: жестких дисков, стримеров, CD-ROM, принтеров, сканеров и т.п. Это параллельный полудуплексный интерфейс со шлейфовой топологией соединения ПУ. С момента его появления прошло три его модификации. В 1994 году появились SCSI-2, а 1997 - SCSI-3. Скорость его возросла с 5 до 80 (160) Мбайт/сек, разрядность стала 8,16, (32) бита. 32-х разрядная шина практически не применяется. SCSI сейчас самый быстрый внешний интерфейс. В последние годы появилась тенденция по созданию последовательных интерфейсов, не уступающих по скорости и количеству подключаемых ПУ SCSI, но имеющий более низкую стоимость. В 1996г. появился последовательный интерфейс USB (Universal Serial Bus), работающий на скорости до 12 Мбит/сек и позволяющий подключать до 128 ПУ. Шина USB имеет древовидную структуру и требует специальные разветвители - хабы. В 1995 был принят стандарт IEEE 1394, основанный на шине Fire Wire. В этом интерфейсе нет хабов и возможно подключение до 63 ПУ, скорость обмена 100 - 400 Мбит/сек. Основные достоинства этого интерфейса по сравнению с USB определяются тем, что Fire Wire ориентирован на интенсивный обмен между любыми подключенными к ней устройствами, а USB - на взаимосвязь ПУ и ПК. Изохронный трафик Fire Wire позволяет передавать "живое видео", высокая скорость обмена позволяет даже на скорости 100 Мбит/сек передавать одновременно два канала видео (30 кадров в секунду), широковещательное качество и стереоаудио сигнал с качеством CD. Возможно использование шины для объединения нескольких ПК и ПУ в локальную сеть. Скорость передачи до 400 Мбит/сек. В настоящее время интенсивно продвигается на рынок шина USB, как дешевый и универсальный интерфейс для любого типа ПУ. Он постепенно захватывает и область специальных интерфейсов. Интерфейс АТА (AT Attachment for Disk Driver), разработанный в 1986-1990 годах для подключения накопителей на жестких магнитных дисках к компьютерам IBM PC AT с шиной ISA . С развитием этого интерфейса сфера его использования стала шире, включив другие виды внешних ЗУ. Развитие АТА шло совместно с появлением новых шин расширения, таких как PCI. В настоящее время существует несколько разновидностей этого интерфейса для подключения устройств IDE (Integrated Device Electronic). Это варианты АТА IDE, E-IDE, АТА-2, Fast АТА-2, АТА-3 и АТА/ АТАPI-4. Наиболее широко распространен интерфейс АТА-2. Специальные интерфейсы реализуются проще, чем универсальные из-за их узкой специализации, т.к. они ориентированы только на один вид ПУ. Для подключения клавиатуры используется последовательный синхронный интерфейс, содержащий 2 обязательных сигнала: данных (КВ-DATA) и импульсов синхронизации (KB-Clock). Клавиатура использует прерывание IRQ2. Интерфейс клавиатуры построен на программируемом контроллере i8042, обеспечивающим двунаправленную передачу информации от клавиатуры и к ней. Интерфейсы манипуляторов зависят от типа устройства. В компьютерах используются три основных вида устройств ввода "мышь"(mouse): Bus Mouse, Serial Mouse, PS/2 Mouse. Ожидается появление мышей с интерфейсом USB. Bus Mouse применялась в первых ПК, в настоящее время практически не используется. Serial Mouse - мышь с последовательным интерфейсом подключается через 25- или 9-штырьковый разъем к последовательному порту (COM-порт), имеет встроенный микроконтроллер, который обрабатывает сигналы от координатных датчиков и кнопок. Каждое событие кодируется по интерфейсу RS-232C. PC/2 Mouse - мышь, появившаяся с компьютерами PS/2. Ее интерфейс и 6-ти штырьковый DIN мини-разъем аналогичен клавиатурному. Контроллер такой мыши входит в контроллер клавиатуры i8042. Для PC/2 Mouse использует прерывание IRQ12. Для реализации аудиоканалов используются три вида интерфейсов: PC Speaker, цифровой аудиоканал и канал MIDI - устройств (Musical Instrument Device Interface). PC Speaker - стандартный однонаправленный канал управления звуком рассчитан на подключение высокоомного малогабаритного динамика. Звук формируется из тонального сигнала от второго канала системного таймера. Роль этого звукового канала сводится к подаче гудков при загрузке, идентификация ошибок во время POST, а также к сопровождению сообщений об ошибках. Цифровой аудиоканал реализуется с помощью средств работы с аудиосигналом, имеющимся на плате Sound Blaster фирмы Creative Labs. Звуковые карты имеют обычно 16 битную шину ISA, PCI или PC Card. Звуковая карта имеет в своем составе цифровой канал записи-воспроизведения моно- и стереофонических сигналов, микшер, синтезатор и MIDI-порт. Цифровой интерфейс музыкальных инструментов MIDI является двунаправленным последовательным асинхронным интерфейсом с частотой передачи 31, 25 Кбит/сек. Этот интерфейс, разработанный в 1983 г., стал фактически стандартом для сопряжения с компьютером, синтезаторов, записывающих и воспроизводящих устройств, микшеров, устройств специальных эффектов и другой электромузыкальной техники. В интерфейсе применяется токовая петля10 ма с гальванической развязкой входной цепи. Токовая петля по принципам передачи информации аналогична интерфейсу RS-232C. Интерфейс видеомониторов между видеоадаптером и монитором может быть как дискретным, так и аналоговым. Для мониторов с высоким разрешением можно использовать только прямую подачу сигналов на входы видеоусилителей базовых цветов - RGB - вход (Red, Green, Blue - красный, зеленый и синий). Дискретный интерфейс RGBTTL использовал преобразователи цифра-аналог, расположенные в самом мониторе. Это ограничивало качество цветного изображения из-за малого числа кодируемых цветов (до 64-х). Поэтому перешли на аналоговый интерфейс. Аналоговый интерфейс RGB перенес цифроаналоговые преобразователи сигналов базовых цветов из монитора на графический адаптер. Такой интерфейс с 8 разрядными ЦАП для каждого цвета позволяет выводить 16,7 миллионов цветов (True Color). Этот интерфейс называется RGB Аналог. Кроме передачи изображения по интерфейсу передают информацию, необходимую для автоматизации согласования параметров и режимов монитора и компьютера. Со стороны компьютера имеется специальный дисплейный адаптер, к которому подключается монитор. С его помощью обеспечивается идентификация монитора, необходимая для автоконфигурации и управления энергопотребления монитора. В настоящее время для передачи управляющей информации используют последовательные интерфейсы I2C (DDC2B) или ACCESS Bus (DDC2AB), которые имеют всего два сигнала данных (DA) и синхронизации (SCL). Для расширения частотного диапазона, учитывая тенденцию к использованию последовательных шин USB и Fire Wire для подключения монитора, предложен новый тип разъема EVC (Enhanced Video Connector). Кроме обычного аналогового интерфейса RGB и канала управления DDC2 этот разъем имеет контакты для видеовхода, входные и выходные стереоаудиосигналы шин USB и Fire Wire. В последующих главах пособия будут рассмотрены только универсальные интерфейсы SCSI и USB. 1.6. СТРУКТУРЫ СИСТЕМ ВВОДА-ВЫВОДА Структура систем ввода-вывода представляет из себя совокупность взаимосвязанных внутренних и внешних интерфейсов (шин), посредством которых все устройства (модули) объединены в единую систему, называемую компьютером. Причем каждая шина имеет определенную скорость передачи информации, и к ней подсоединяются устройства с соответствующим быстродействием. Все шины, как правило, могут работать параллельно, обеспечивая высокую производительность вычислительной системы. Шины соединяются между собой с помощью специальных устройств - мостов. Кроме того, в структуру систем ввода-вывода входят устройства управления шинами и схемы организации процессов передачи информации при различных режимах ввода-вывода. В процессе развития вычислительной техники формировалась структура самого компьютера и его систем ввода-вывода, разрабатывались и внедрялись различные типы интерфейсов. Из поколения в поколение менялась элементная база и архитектура компьютеров. К моменту появления микропроцессоров (МП), больших интегральных схем (БИС) и персональных компьютеров уже сформировались определенные принципы построения и структуры систем ввода-вывода (см. рис.1.8). В больших компьютерах (Мейнфрейм) типа IBM-360(370), ЕС ЭВМ-1033 (1040,1060), работающих в мультипрограммном режиме и имеющих мощный процессор с сопроцессором, большой емкости ОЗУ и много разнообразных ПУ, использовалась многомагистральная структура с выделенными каналами ввода-вывода и каскадно-магистральным подключением ПУ (см. рис. 1.8а). Рис. 1.8. Структура систем ввода-вывода В таких машинах, как правило, использовались два типа аппаратно реализованных каналов ввода-вывода: мультиплексный, работающий с медленными ПУ и селекторный, обслуживающий быстродействующие ПУ. Такая структура позволила максимально использовать вычислительную мощность компьютера за счет одновременного решения нескольких задач и параллельной работы процессора и каналов ввода-вывода. В таких компьютерах аппаратно реализовывались все функции, показанные на рис.1.4. В них система ввода-вывода содержала оптимальный набор из нескольких типов интерфейсов. Высокоскоростные интерфейсы процессора и ОЗУ, через которые взаимодействовали основной процессор, специализированные процессоры, блоки оперативной памяти обеспечивали максимальное использование процессорного времени. Интерфейсы ввода-вывода, аппаратно реализованные каналы ввода-вывода и контроллеры ПУ, освобождали центральный процессор от процедур управления вводом-выводом. Интерфейсы ПУ предназначались для подключения ПУ к компьютеру. В малых вычислительных машинах типа DEC PDP-11, СM-1(2,3,4), которые были намного дешевле больших, система ввода-вывода строилась по одномагистральной структуре с распределенным каналом ввода-вывода и радиально-магистральным подключением ПУ (см. рис.1.8б). Мультиплексный канал, как отдельное устройство, отсутствовал, его функции выполнял процессор. В качестве селекторного канала применялся контроллер прямого доступа к памяти с ограниченными функциями канала. Существовали стандарты на используемые внутримашинные системные шины, например, Unibus фирмы DEC (общая шина). С появлением МП и БИС наступил новый этап развития структур систем ввода-вывода, обусловленный новым принципом построения вычислительных машин на основе модульности, микропрограммируемости и магистральности, о чем говорилось во введении. Новый этап повторял стадии развития предыдущего, но на качественно новой элементной базе и других подходах к компоновке компьютеров. С развитием элементной базы компьютеров, повышением скорости работы микропроцессоров и микросхем памяти, увеличением емкости ОЗУ совершенствовалась и изменилась структура системы ввода-вывода информации, повышалась скорость работы интерфейсов. Развитие интерфейсов и систем ввода-вывода было направлено на минимизацию потерь в производительности компьютера, вызванных задержками в передаче информации между его модулями (устройствами), т.е. передач процессор-ОЗУ, процессор-ПУ, ПУ-ОЗУ. Особенно остро проблемы по увеличению скорости работы интерфейсов и систем ввода-вывода в целом встала в связи с появлением нового поколения МП типа Pentium и с использованием в компьютерах средств мультимедиа. В частности узким местом стало обеспечение качественной 3-х мерной графики и "живого" видео, требующих скоростей передачи более 500 Мбайт/сек. Наиболее наглядно и полно можно проследить и прочувствовать проблемы и тенденции развития систем ввода-вывода при рассмотрении ретроспективы эволюции интерфейсов и структур систем ввода-вывода на примере персональных компьютеров типа IBM PC (см. рис.1.9). В начале эры персональных компьютеров частота работы процессора составляла 10 МГц, при этом на выполнение даже самых простейших операций процессор затрачивал несколько тактов. В таких условиях для обеспечения бесперебойной работы процессора было достаточно всего 4 миллионов обращений к памяти в секунду, что соответствовало циклу работы в 250 нсек. Этим условиям удовлетворяла одношинная структура систем ввода-вывода, когда все устройства компьютера, включая ОЗУ, общались с процессором через общую шину (см. рис.1.9а), которую называли системной. Все интерфейсы ПУ подключались к этой шине. Наиболее распространенной системной шиной в этот период стала сначала 8 разрядная, затем 16 разрядная шина ISA, работающая на частоте 8 МГц. С ростом частоты работы ПК (см. таблицу 3) и изменения времени доступа к ОЗУ пропускная способность шины ISA в 8 Мбайт/сек стала тормозить работу процессора. Решение проблемы нашли в выделении канала передачи данных МП-ОЗУ в отдельную шину, построенную на базе внешнего интерфейса МП, и изолированную от медленной шины ISA посредством контроллера шины данных. Это повысило производительность работы центрального процессора. Все ПУ продолжали взаимодействовать с центральным процессором через системную шину (см. рис. 1.9б). С дальнейшем ростом частоты работы МП тормозом в работе стало ОЗУ. Тогда ввели дополнительную высокоскоростную КЭШ-память (см. рис. 1.9в), что уменьшило простои МП. Все ПУ продолжали работать через системную шину, но кроме ISA появились более скоростные шины EISA и MCA (см. таблицу 3). На определенном этапе развития компьютеров стали широко использовать мультимедиа. Сразу выявилось узкое место во взаимодействии центрального процессора и видеокарты. Потребовалась пропускная способность более 100 Мбайт/сек. Имеющиеся системные шины ISA, ЕISA, МСА не удовлетворяли этим условиям. Их пропускная способность составляла от 16 до 30 Мбайт/сек. Выход был найден с разработкой и внедрением высокоскоростных локальных шин, посредством которых можно было связаться с памятью, на этой же шине работали жесткие диски, что также повышало качество вывода графической информации. Первой такой шиной была шина VL-bus, практически повторявшая интерфейс МП i486. Затем появилась локальная шина РСI. Она была процессорно-независимой и поэтому получила наибольшее распространение для последующих типов МП. Эта шина имела частоту работы 33 МГц и при 32-х разрядных данных обеспечивала пропускную способность в 132 Мбайт/сек (см. рис. 1.9г). Системная шина ISA по-прежнему использовалась в компьютерах, что позволяло применять в новых компьютерах огромное количество ранее разработанных аппаратных и программных средств. В такой системе ввода-вывода различные ПУ подключались к разным шинам. Медленные - к ISA, а высокоскоростные - к РСI. С появление шины РСI стало целесообразным использовать высокоскоростные параллельные и последовательные интерфейсы ПУ (SCSI, ATA, USB). На этом этапе системной стали называть шину МП, через которую он взаимодействовал с ОЗУ. Шина РСI и ISA и подобные другие назвали шинами ввода-вывода или шинами расширения. Действительно, эти шины как бы расширяли число устройств (см. рис. 1.9г), работающих с ЦПр, и их основной функцией стало обеспечение процессов ввода и вывода информации. Рис. 1.9. Эволюция шинной архитектуры Появление шины РСI не сняло всех проблем по качественному выводу визуальной информации для 3-х мерных изображений, "живого" видео. Здесь уже требовались скорости в сотни Мбайт/сек. В 1996г. фирма Intel разработала новую шину AGP, предназначенную только для связи ОЗУ и процессора с видеокартой монитора. Эта шина обеспечивала пропускную способность в сотни Мбайт/сек. Она непосредственно связывала видеокарту с ОЗУ минуя шину РСI. На рис. 1.10 изображена обобщенная структура системы ввода-вывода современного компьютера. Как видно из рисунков 1.9г и 1.10 , через 20 лет снова пришли к многомагистральной структуре ввода-вывода с радиально-магистральными интерфейсами ПУ (см. рис. 1.8). Следует также отметить то, что шина ISA присутствует во всех структурах систем ввода-вывода. Это обусловлено стремлением пользователей сохранить преемственность новых компьютеров с ранее созданными и широко распространенными аппаратными и программными средствами. Хотя фирмам Intel и Microsoft предрекали, что с 1998г. шина ISA исчезнет, и все перейдут на соответствующее устройства для шины РСI, но шина ISA к 2000 году сохранила свои позиции. Все шины систем ввода-вывода объединяются в единую транспортную среду передачи информации с помощью специальных устройств: мостов и контроллеров ввода-вывода. Мост - устройство, применяемое для объединения шин, использующих разные или одинаковые протоколы обмена. Мост - это сложное устройство, которое осуществляет не только коммутацию каналов передачи данных, но и производит управление соответствующими шинами. В структуре компьютера, использующего шину РСI, применяются три типа мостов (см. рис. 1.10). Мост шины (РСI Bridge), производящий подключение шины РСI к другим шинам, например, ISA или ЕISA. Главный мост (Host Bridge), соединяющий шину РСI с системной шиной, кроме того, этот мост содержит контроллер ОЗУ, арбитр и схему автоконфигурации. Одноранговый мост (Peer-to-Peer) для соединения двух шин РСI между собой. Это делается для увеличения числа устройств, подключаемых к шине. Рис. 1.10. Обобщенная структура компьютера Контроллер ввода-вывода управляет обменом информацией с ПУ. Он практически представляет из себя мост между шиной ввода-вывода и интерфейсом ПУ. В контроллер ввода-вывода могут входить специальные схемы-адаптеры, предназначенные для преобразования представления и скорости передачи информации. Примерами таких адаптеров могут служить асинхронные приемопередатчики типа i8250/16450/1656A, используемые в интерфейсах типа RS-232C, адаптер параллельного интерфейса 8255 и др. Для управления шинами и обеспечения выполнения функций интерфейсов, входящих в систему ввода-вывода, применяются специальные контроллеры и схемы. К ним можно отнести контроллеры прерываний 8259А и прямого доступа к памяти 8237А, таймер 8254А, часы реального времени, буферы шин данных, дешифраторы, мультиплексоры, регистры и другие логические устройства. В первых компьютерах, построенных с использованием микропроцессоров, контроллер и другие устройства строились на базе набора интегральных схем малой, средней и большой степени интеграции. Адаптеры, таймер и др. выпускались в виде отдельных микросхем (8250, 8255, 8259, 8237 и т.д.) С повышением производительности компьютеров и увеличением степени интеграции все вышеперечисленные устройства и схемы стали объединяться в микросхемы со сверхбольшой степенью интеграции, образуя специальные наборы интегральных схем, называемых "чипсет" (ChipSet). В настоящее время управление потоками передаваемых данных производится с помощью мостов и контроллеров, входящих в ChipSet. Именно ChipSet определяет основные особенности архитектуры компьютера и, соответственно, достигаемый уровень производительности в условиях, когда лимитирующим фактором становится не процессор, а его окружение - память и система ввода-вывода. Первым серьезным шагом на пути повышения эффективности передачи информации в компьютерах на основе Pentium стал ChipSet третьего поколения 430FX (Triton) фирмы Intel, состоящий из 3-х микросхем. Чипсет первого поколения - 450GX/GX (Orion) был выполнен на 7 микросхемах. В 1999 году фирма Intel приступила к выпуску нового чипсета 440LXAGPset с технологией ускоренного графического порта (AGP), двойной независимой шиной (DIB) процессора Pentium II и поддержкой памяти типа SDRAM. Этот чипсет состоял из 2-х микросхем. Через полгода появился новый чипсет Intel 440BX, предназначенный для материнских плат для процессора Pentium II и поддерживающий частоту системной шины в 100 МГц. На этой частоте работает системная память. Его отличие от чипсет 440LX в основном заключается в поддержке 100-мегагерцовой шины. Он состоит также из 2-х микросхем. Он характеризуется следующими свойствами: - возможностью подключения двух процессоров Pentium II; - поддерживает память типа EDORAM и SDRAM; - 64 битная системная шина, работающая на частоте 66 и 100 МГц; - синхронный интерфейс PCI с частотой 33 МГц; - порт AGP с поддержкой режимов AGP1x/2x с частотой 66/133 МГц; - управление энергопотреблением. Чипсеты 440LX и 440BX предназначены для ПК средней производительности. На рис. 1.11 показана структура системы ввода-вывода на основе чипсета 440LX. Фирма Intel выпустила еще два чипсета, предназначенных для рабочих станций среднего и высокого уровня. Чипсет 440GX AGSet предназначен для компьютеров на основе Pentium II Xeon, поддерживает работу с двум МП и содержит две микросхемы. Чипсет 450NX направлен на достижение максимальной производительности в системе с несколькими процессорами (4 или 8). Он состоит из четырех микросхем. Рис. 1.11. Чипсет Intel i440 LX Сейчас принято называть две главные микросхемы южный мост и северный мост. Северный мост обслуживает системную шину, шину памяти, AGP и является главным контроллером PCI. Южный мост обслуживает работу с ПУ (шины PCI, ISA, IDE). Для компьютеров среднего класса, использующих процессоры Celeron, Pentium II и Pentium III, фирма Intel выпустила чипсет с новой архитектурой i810, состоящий из 3-х микросхем. Особенностями чипсета этого типа являются следующие: - использование хабовой архитектуры, в чипсете имеется три микросхемы - хаба, которые объединяются не с помощью медленной шины PCI, как в предыдущих случаях, а с помощью специальной внутренней шины, работающей на частоте 266 МГц; - встроенное, интегрированное в микросхему 2Д/3Д графическое ядро, с использованием в качестве видеопамяти быстродействующей (800 Мбайт/сек и более) системной памяти, работающей по новым технологиям - Direct AGP и Dynamic Video Memory Technology (D.V.M.T.), что обеспечивает большую пропускную способность по сравнению с обычной шиной AGP, работающей со скоростью 528 Мбайт/сек, это существенно удешевляет стоимость видеокарт; - отсутствие шины PCI, как внутренней шины, для чипсета она является внешней шиной, подобной ISA. На рис.1.12 показана система ввода-вывода на основе чипсета i810. Функции микросхем чипсета следующие: контроллер памяти и видео, контроллер ввода-вывода и хаб фирменного программного обеспечения. Рис. 1.12. Чипсет Intel i810 Этот чипсет имеет следующие характеристики: * поддержка однопроцессорной конфигурации; * системная шина 66 и 100 МГц 64 разряда; * интерфейс памяти SDRAM на 100 МГц; * интегрированное 2Д/3Д графическое ядро; * поддержка шины PCI на 33 МГц, совместимой со спецификацией версии 2.2 с числом слот 4 или 8 ; * управление энергопотреблением; * интегрированный IDE контроллер с поддержкой Ultra ATA/66; * поддержка интерфейса LPC (Low Pin Count), шина 4 бита, 33 МГц, заменяет ISA при подключении контроллера гибкого диска и портов ввода-вывода; * хранение системного и видео BIOS и аппаратный датчик случайных чисел; * отсутствие ISA. Планируется выпуск последующих версий данного типа чипсетов i820 и др. Как следует из вышеизложенного, системы ввода-вывода и соответствующие им чипсеты являются главными средствами, позволяющими реализовать потенциальные возможности центральных процессоров. 1.7. ОСНОВНЫЕ ФУНКЦИИ И ПРИНЦИПЫ ПОСТРОЕНИЯ ИНТЕРФЕЙСОВ Интерфейсы, используемые в вычислительных системах, очень разнообразны (см. Таблицы 3 и 4), но их функции и основы построения являются достаточно общими, поэтому целесообразно остановиться на них, что облегчит в дальнейшем изучение конкретных, стандартных интерфейсов, как внутренних, так и внешних. Для большей конкретности рассматривать все вопросы будем на примере параллельных магистральных интерфейсов, но такой подход не исключает общность рассмотрения, т.к. он в значительной степени может быть распространен и на радиальные последовательные интерфейсы, особенности которых будут по необходимости специально оговариваться. Главная задача интерфейса заключается в организации надежной передачи информации от источника к приемнику в заданный момент времени. К одному интерфейсу с помощью специальных средств (печатного монтажа, слотов, сокетов, разъемов, см. раздел 1.3) физически подключается множество взаимодействующих между собой устройств. В каждый момент времени передача информации идет только между двумя устройствами от источника к приемнику информации (иногда возможна передача от одного источника к нескольким приемникам). Такая передача возможна, если между этими двумя устройствами в данный момент времени существует электрическая цепь (электрическая взаимосвязь), соединяющая выходы источника со входами приемника, по которой передаются электрические сигналы, соответствующие данной информации. Такое соединение обычно называют соединением типа "точка-точка". Другие устройства в этот момент времени должны быть электрически отключены от общей шины с помощью специальных схем. Поэтому говорят, что между устройствами на общей шине существует логическая взаимосвязь, которая может преобразовываться в электрическую типа "точка-точка" для двух конкретных устройств в заданный момент времени. Можно представить на логическом уровне магистральный способ соединения, как логическое соединение устройств способом "каждый с каждым" (см. рис. 1.2а). Таким образом в интерфейсах между двумя взаимосвязанными устройствами постоянно существует логический канал, который преобразуется в заданный момент времени в электрическое соединение между этими устройствами типа "точка-точка". Отсюда следует, что для преобразования логического канала в электрический требуется определенное время. Как правило, передача информации происходит между двумя регистрами. Один из которых находится в источнике, а другой в приемнике. Поэтому при образовании соединений типа "точка-точка", выходы регистра источника соединяются со входами регистра приемника. Все устройства, подсоединенные к общей шине, делятся на два типа: активные, задатчики, главные устройства (muster device) и пассивные, исполнители (target device). Активное устройство захватывает шину, выставляет адрес и управляет шиной, пассивное выполняет задания активного. Шина может иметь несколько задатчиков, если имеется несколько ЦПр или некоторые устройства ввода-вывода могут также являться активными устройствами. При наличии нескольких задатчиков возникают коллизии, когда более одного активного устройства требуют для себя шину. В этом случае необходимо специальное устройство "Арбитр шины", который решает какому устройству ее передать. Если на шине число задатчиков мало, и они фиксированы, т.е. не могут меняться, то специальный арбитр не нужен, его функции выполняет ЦПр. Задатчик, подав запрос на захват шины, получает ее в свое распоряжение не сразу, а через некоторое время, зависящее от времени арбитрации и времени ожидания момента, когда текущий задатчик освободит шину. Это время называют временем доступа к шине. Интерфейс должен предусматривать в своей работе возможность выполнения процесса ввода-вывода информации в трех режимах: программного ввода-вывода, ввода-вывода в режимах прерываний и прямого доступа к памяти. При выполнении ввода-вывода в режиме прерываний или прямого доступа к памяти возможны коллизии при обращении нескольких ПУ к задатчику при их готовности начать процесс передачи информации. В этом случае эти коллизии разрешает сам задатчик, выбирая то ПУ, с которым он будет работать. При обращении к процессору эту функцию выполняет сам процессор совместно с контроллером прерываний, при прямом доступе к памяти это делает контроллер прямого доступа к памяти. Для разрешения коллизий при арбитрации, вводе-выводе в режимах прерываний и прямого доступа к памяти используется механизм задания уровня приоритетов для каждого устройства, участвующего в этих процедурах. В настоящее время применяют многоуровневую систему задания приоритетов с параллельным поиском устройства с наивысшим приоритетом. При передаче информации активное устройство всегда предварительно выставляет адрес того устройства куда записывается или откуда посылаются данные. Любая передача состоит из двух этапов: на первом всегда выдается адрес, на втором передаются сами данные. Передаваться могут или одиночные данные (по одному слову) или блок данных (несколько слов в блоке). Блочную передачу обычно называют шинной транзакцией или просто транзакцией. Транзакция состоит из начального адреса, который стоит вначале транзакции, и данных, располагаемых за ним. В последнее время практически во всех видах интерфейсов используют передачу информации в виде транзакций, т.к. это повышает скорость передачи за счет того, что адрес устанавливается всего один раз. Передача информации между задатчиком и исполнителем реализуется в виде двух операций: операции записи - передача от задатчика к исполнителю и операции чтения - от исполнителя к задатчику. При транзакции типа "Чтение" по шине сначала посылается адрес вместе с соответствующими сигналами управления, идентифицирующими чтение, в ответ исполнитель выставляет на шину данные с соответствующими сигналами управления. Обычно ЦПр вынужден простаивать во время интервала между посылкой адреса и получением данных при выполнении чтения, при транзакции "Запись", ЦПр или другой задатчик после выставления адреса и данных не ожидают возврата данных. В настоящее время, с точки зрения организации транзакций, используется два типа шин: шины с коммутацией цепей (Circuit- Switched bus) и шины с коммутацией пакетов (Packet - Switched bus), получившие свои названия по аналогии со способами коммутации в сетях передач данных. Шины с коммутацией пакетов при наличии нескольких задатчиков на шине (muster bus) обеспечивают значительно большую пропускную способность по сравнению с шиной с коммутацией цепей за счет разделения транзакции на две логические части: запроса шины и ответа. Такая методика получила название "расщепления" транзакций (split transaction). Иногда ее называют шиной соединения/разъединения (connect/disconnect) или конвейерной шиной (pipeling bus). Транзакция называется расщепленной, поскольку произвольное количество других пакетов или транзакций могут использовать шину между запросом и ответом. Транзакция чтения разбивается на транзакцию запроса чтения, которая содержит адрес, и транзакцию ответа исполнителя, которая содержит данные. Каждая транзакция теперь должна быть помечена (тегирована) соответствующим образом, чтобы ЦПр и исполнители могли сообщить, что есть что. Шина с коммутацией цепей не делает расщепления транзакций, любая транзакция на ней есть неделимая операция. Задатчик запрашивает шину, после арбитрация помещает на ней адрес и блокирует шину до окончания обслуживания запроса. При этом большая часть времени обслуживания тратиться не на выполнение операций на шине, а на ожидание, вследствие чего это время просто теряется. Расщепление транзакций делает шину доступной для других задатчиков, пока исполнитель читает слово по запрашиваемому адресу. Но это также означает, что ЦПр должен бороться за шину, чтобы вернуть данные. Шина с расщеплением транзакций имеет более высокую пропускную способность, но обычно имеет и большую задержку доступа к шине, по сравнению с шиной с коммутацией цепей, т.к. эта шина захватывается задатчиком на все время выполнения транзакции. В настоящее время в компьютерах поле памяти, величина которого задается количеством разрядов адреса в команде, разбивается на три адресных пространства: адресное пространство ОЗУ (памяти), адресное пространство ввода-вывода и адресное пространство автоконфигурации. Такое разбиение обусловлено особенностями построения и организации доступа к соответствующим запоминающим устройствам. ОЗУ строится на соответствующих микросхемах памяти (см. таблицу 2), память ввода-вывода реализуется на адресуемых регистрах контроллеров и адаптеров системы ввода-вывода, а память автоконфигурации строится на регистрах автоконфигурации, расположенных в соответствующих ПУ. Интерфейс учитывает эту ситуацию путем создания циклов записи и чтения отдельно для каждого адресного пространства. В частности, при работе с пространством ввода-вывода, обращение идет к портам ввода-вывода. Понятие порта имеет двойной смысл. С одной стороны - это разъем, к которому подключается кабель интерфейса ПУ, с другой стороны порт - это набор адресуемых регистров контроллера ввода-вывода, с которым работают команды компьютера (In Port, Out Port). Каждый контроллер ввода-вывода имеет дешифратор адреса, который работает с диапазоном адресов регистров этого контроллера, и в случае обращения к регистру он выбирает его, а затем этот регистр подключается к шине. Важнейшим моментом в работе интерфейсов является синхронизация передачи информации. Синхронизация - это согласование процессов взаимодействия между устройствами, заключающееся в передаче информации источником и ее приема приемником (одним или несколькими). Существуют два основных принципа синхронизации: синхронный и асинхронный. При синхронном принципе смена состояний источника и приемника взаимонезависимы и выполняются через одинаковые фиксированные интервалы времени. В этом случае приемник должен успеть принять данные до момента времени, когда источник выставит новые данные. Величина фиксированного интервала времени синхронизации (() определяется суммой времен (Т): распространения сигнала в линии связи, распознавания его приемником и временем фиксации данных в приемнике. Если источник взаимодействует с разными приемниками, то его частота работы определяется частотой работы самого медленного устройства, включая сам источник, что естественно замедляет общий процесс передачи данных. Для надежной передачи данных необходимо выполнение условия ( >Тmax, где (- это период следования импульсов синхронизации, задающих моменты переключения сигналов в приемнике и источнике. При асинхронном принципе смена состояний источника и приемника взаимозависимы, момент времени изменения состояния источника зависит от момента времени, когда приемник зафиксирует данные. Рис.1.13. Асинхронный принцип синхронизации Асинхронный принцип реализуется с помощью обратной связи от приемника к источнику (см. рис.1.13). Обратная связь может быть однопроводной и двухпроводной. При однопроводной используется сигнал "готовности приемника" (ГП), при двухпроводной добавляется сигнал "данные приняты" (ДП). На рис.1.13б показана временная диаграмма переключения состояний источника и приемника при однопроводной связи. Сигнал ГП является инверсным. Он имеет низкий уровень, когда приемник свободен и может принимать данные от источника, переход ГП в высокий уровень означает, что приемник зафиксировал данные, поэтому занят, и не может принимать новые данные от источника. В момент t1 источник выставляет данные, через время Т они фиксируются в приемнике, и он устанавливает сигнал ГП в высокое состояние. Источник, получив этот сигнал через время Т, сбрасывает данные и ждет установки ГП в низкое состояние, чтобы выставить новые данные. Приемник через время Т после сброса данных устанавливает ГП в низкое состояние, сигнализируя источнику, что он может выставлять новые данные. Таким образом, для надежной работы источник должен держать данные на шине данных время ( ? 2Т. Период смены информации на выходе источника 2 (, но ( величина переменная, она зависит от характера линии связи и скорости работы приемников. Асинхронный принцип при работе источника со многими приемниками, имеющими широкий диапазон скоростей передачи информации, обеспечивает большую общую пропускную способность, чем синхронный. Асинхронный принцип не означает, что синхронизация отсутствует, при асинхронном принципе период синхронизации является переменным, а при синхронном этот период постоянен и определяется частотой работы самого медленного устройства. Синхронизация может осуществляться не только с помощью импульсов синхронизации, но и программным способом с помощью определенных кодов синхронизации (меток, маркеров и т.д.). В соответствии с используемыми принципами синхронизации интерфейсы могут быть синхронные и асинхронные. Если шина синхронная, то переключение всех сигналов на линиях шины производится по фронту импульсов синхронизации. Эти шины могут быть быстрыми и дешевыми. Но частота работы параллельных интерфейсов ограничивается из-за проблем перекоса сигналов на разных линиях шины, что накладывает серьезные ограничения на длину этих шин. Обычно системные шины синхронные, шины расширения могут быть синхронные (PCI) или асинхронные (ISA). В последовательных интерфейсах такие ограничения существенно меньше. В асинхронных интерфейсах переключение сигналов на линиях шины не привязана к фронтам импульсов синхронизации. Эта шина позволяет гораздо проще приспособить широкое разнообразие устройств и удлинить шину без беспокойства о перекосе сигналов синхронизации и о системе синхронизации. Асинхронная шина легче масштабируется. Следует отметить, что в синхронных и асинхронных шинах могут быть как синхронные, так и асинхронные передачи данных, т.к. система ввода-вывода строится по многошинной архитектуре, то возникают проблемы взаимосинхронизации шин, работающих на разных частотах. Как видно из вышеизложенного, процессы передачи информации между задатчиком и исполнителем на шине весьма сложные. Они включают преобразование логического канала в электрический, захват шины задатчиком, установка адреса, передача данных, синхронизация передачи и др. Все передачи информации на шине оформляются в виде команд или циклов шины. Каждой команде соответствует определенный протокол передачи, состоящий из набора взаимосвязанных сигналов, идущих в определенной последовательности. В этот набор сигналов, кроме сигналов адреса и данных, включаются сигналы управления, идентификации, синхронизации и др. Каждому сигналу отводится определенная линия, а все вместе они образуют определенную структуру линий интерфейса. Имеется две основных структуры: трехшинная и двухшинная структуры. В трехшинной структуре имеется три вида шин: шина адреса, шина данных и шина управления. В двухшинной структуре - две шины: шина адреса/данных и шина управления. В этой структуре адрес и данные передаются по одной и той же шине, но в разные моменты времени. Двухшинный интерфейс проще, но его производительность ниже по сравнению с трехшинным из-за необходимости мультиплексирования шины адреса/данных. На шине адреса линии нумеруются от младшего разряда (А0) до последнего старшего, а на шине данных указывается порядок расположения байт. Поэтому к шине данных примыкают линии, указывающие номера передаваемых по шине байта. Кодирование команд интерфейса производится двумя способами. В первом, каждой команде отводится своя линия интерфейса. Например, линии операций чтения (Read) и записи (Write). Такой подход приемлем при малом числе команд, он используется в шине ISA. Во втором способе, для кода команды отводится определенное небольшое количество линий, с помощью которых формируется код команды. Например, четыре линии позволяют закодировать 16 разных команд, как на шине PCI. В шине управления имеются линии, реализующие асинхронный принцип передачи информации. К ним относятся сигналы готовности (Ready), являющиеся сигналами обратной связи, идущими от приемника. Кроме того, в интерфейсах предусматриваются сигналы арбитрации: сигналы REQi - запроса на захват шины (Request) и GRNi (Grant) - разрешения на захват шины. При прямом доступе к памяти: DRQi - запрос на прямой доступ к памяти (Direct Request) и DACK - разрешение на прямой доступ к памяти (Direct Acknolidge). Для ввода-вывода в режиме прерываний: IRQi - запрос на прерывание (Interrupt Request). Шина управления имеет и другие линии, которые будут рассмотрены в разделах, посвященных конкретным интерфейсам. В настоящее время интерфейсы выполняют следующие основные функции: 1. Проведение синхронизации интерфейса, используя синхронный или асинхронный принципы. 2. Передачу информации между источником и приемником с помощью операций чтения и записи. 3. Арбитрацию активных устройств на шине и селекция ПУ при вводе-выводе в режимах прямого доступа к памяти и прерываний. 4. Контроль передачи информации и функционирования самой шины и устройств на ней. 5. Преобразование информации из параллельного в последовательное представление и обратно. 6. Поддержку режима автоконфигурации. 7. Управление питанием компьютера. 8. Поддержку режима горячего подключения ПУ к системному блоку. Рассмотрим способы реализации функций интерфейсов. Функция синхронизации. Синхронизация является той функцией, которая определяет скорость и надежность передачи информации. Функция синхронизации реализуется либо по синхронному, либо по асинхронному принципу, используя аппаратные или программные средства. При аппаратной синхронизации она осуществляется с помощью специальных сигналов синхронизации (синхронизирующих импульсов, сигналов стробирования). Программная синхронизация использует специальные маркеры и метки, представляющие из себя либо коды синхронизации, либо пакеты-маркеры, содержащие соответствующую информацию. В процесс синхронизации включается механизм стробирования данных. По линии шины данных передаются либо "1" либо "0" или на ней информация отсутствует, что соответствует паузе на шине или, как говорят, "холостому ходу шины". Для того, чтобы приемник надежно различал эти события, используют специальный стробирующий сигнал, который подается одновременно с данными в момент времени, когда на линии устанавливаются действительное значение данных. В качестве стробирующих используют различные сигналы интерфейса, в том числе и импульсы синхронизации. При синхронном принципе стробирующий сигнал подается синхронно с импульсами синхронизации шины, а при асинхронном - он может образовываться не синхронно с этими импульсами. Передача информации от источника к приемнику осуществляется либо последовательно (последовательный интерфейс), либо параллельно (параллельный интерфейс). При последовательной передаче синхронизация производится на уровне бит, символов, транзакций и массивов. Синхронизация на уровне бит осуществляется аппаратным способом путем стробирования каждого бита данных синхроимпульсом. Синхроимпульс либо генерируется специальным генератором, либо используется самосинхронизация. В первом случае передача "1" и "0" может сопровождаться переключением сигнала только для одной из цифр ("1" или "0"), а для другой отсутствовать. В случае самосинхронизации передача "1" и "0" должна сопровождаться переключением сигнала для обеих цифр и "1" и "0", что дает возможность формировать синхроимпульс непосредственно из сигналов информации. Например, код Манчестер II, где "1" изображается током в одном направлении, а "0" - током в обратном направлении (см. рис. 1.14). Синхронизация на уровне символов, транзакций и массивов осуществляется по асинхронному принципу с помощью меток, которые идут в начале и конце информации, между ними располагаются данные. Рис 1.15 Асинхронная передача символа Синхронизация на уровне транзакций производится с помощью специальных маркер-пакетов, которые идут в начале транзакций от источника, за ними идут данные, а завершается транзакция выдачей приемником пакета-квитирования, подтверждающего, что данные приняты. Массив синхронизируется таким же образом. При параллельной передаче информации синхронизация производится на уровне слов (байт) при одновременной передаче всех разрядов слова, а также на уровне транзакций и массивов. Синхронизация передачи на уровне слов производится по синхронному и асинхронному принципам с помощью сигналов стробирования (Strob), и готовности (Ready). При параллельной передаче имеется определенный разброс в установке и снятити сигналов данных на линиях шин.(dt1, dt2) Рис. 1.16. Синхронная параллельная передача данных Стробирующий импульс фиксирует момент времени, когда на всех линиях шины устанавливается действительное значение разрядов слова и по стробу приемник может считывать информацию с линий интерфейса (см. рис. 1.16). При асинхронном принципе передачи приемник выдает сигнал квитирования (готовности, Ready), подтверждающий прием, а строб имеет переменную длительность (см. рис. 1.17). При синхронной передаче строб имеет фиксированную длительность, сигнал квитирования отсутствует (рис. 1.16). Транзакции передаются по асинхронному принципу, начало и конец транзакций фиксируется наличием или отсутствием тех или иных сигналов управления и синхронизации. Передача на уровне массивов производится по асинхронному принципу с помощью пакетов-маркеров. Рис. 1.17. Асинхронная параллельная передача данных Функция передачи информации. Передача информации осуществляется в 3-х режима: программный ввод-вывод, ввод-вывод в режиме прерываний и прямого доступа к памяти. Программный ввод-вывод (PIO) сильно загружает процессор и имеет малую скорость передачи, т.к. все управляющие сигналы и строб формируются процессором программно. В режиме прерываний тип передачи задает подключенное устройство. Это так называемый PIO с аппаратным контролем потока. В частности, этот режим используется в интерфейсе IDE, это режим PIO Mode. Прямой доступ к памяти в наименьшей степени загружает процессор, т.к. он только инициализирует DMA. Но надо отметить, что скорость стандартных каналов DMA ограничен значениями 2/4 Мбайт/сек. Прогрессивные режимы DMA (Ultra DMA) обеспечивают более высокие скорости обмена (33 Мбайта/сек). Передача информации между источником и приемником выполняется в виде циклов (команд) шины. Обычно используется четыре типа циклов обмена: циклы памяти, циклы ввода-вывода, циклы прямого доступа к памяти и цикла автоконфигурации. Управление передачей осуществляет активное устройство. Активное устройство совместно с адресом выдает команду обмена данными. Эти команды различают пространства памяти, ввода-вывода и автоконфигурации. Инструкции ввода-вывода процессора порождают шинные циклы обмена, в которых вырабатываются сигналы IORD (Input-Output read, чтение порта) и IOWR (Input-Output write, запись в порт), которые отличают пространства ввода-вывода от пространства памяти, где вырабатывают соответствующие сигналы чтения и записи MEMRD (Memory Read, чтение памяти) и MEMWR (Memory Write, запись в память). В цикле обмена участвуют сигналы стробирования и квитирования. В случае кодирования команд в виде сигналов на линиях RD (Read) и WR (Write), они являются многофункциональными и обычно указывают направление передачи, адресное пространство и выполняют функции стробирования. Перед передачей данных активное устройство указывает номера байт, передаваемых в цикле обмена, с помощью специальных сигналов и кодов. Сигналы IORD, MEMWR и IOWR, MEMRD вырабатываются и в циклах прямого доступа к памяти. В этом случае активным является контроллер прямого доступа к памяти, он выдает на шину адрес памяти, к которой производится доступ, а адрес порта не выдается. Функции арбитрации и селекции. Функции арбитрации и селекции используются для выбора устройств с наибольшим приоритетом и предоставления им прав работать на шине. Эти функции обслуживают режим работы на шине нескольких активных устройств и ввод-вывод в режиме прерываний и прямого доступа к памяти. Функция селекции при вводе-выводе в режиме прерываний включает также процесс идентификации периферийного устройства, получившего право работать с активным устройством. Задание уровней приоритетов производится двумя способами: на основе одноуровневой и многоуровневой систем задания приоритетов. При одноуровневой системе все запросы на прерывание работы шины (IRQi) подаются по одной линии, а устройство с наибольшим приоритетом выбирается с помощью процесса последовательного поллинга программными (см. рис. 1.18а) или аппаратными (см. рис. 1.18б) средствами. Эта система проще, но требует большего времени на проведение поллинга. Рис. 1.18. Одноуровневая система селекции Многоуровневая система имеет несколько входных линий для запросов. Каждая линия обладает своим уровнем приоритета, который присваивается устройству, подсоединенному к этому уровню. В этом случае производится параллельный поллинг устройства с наивысшем приоритетом, который намного быстрее последовательного (см. рис. 1.19). Рис. 1.19. Многоуровневая система арбитрации Для уменьшения времени доступа к шине устройств с наибольшим приоритетом используют линии разрешения захвата шины или прямого доступа к памяти (GRNi, DACK), идущие от блока арбитрации (селекции) к устройствам. При одноуровневой системе такая линия одна и проходит через все устройства, сигнал разрешения распространяется до первого устройства, подавшего запрос на прерывание. В этом случае уровень приоритета задается местом расположения устройства на шине по отношению к арбитру, ближе всех расположено устройство с наибольшим приоритетом (см. рис. 1.18). В многоуровневой системе каждой линии запроса (IRQi, DRQi) соответствует своя линия разрешения (GRNi, DACK) (см. рис. 1.19а). Могут быть комбинированные системы, использующие как параллельный, так и последовательный способы задания уровней приоритетов (см. рис. 1.19б). При вводе-выводе в режиме прерываний необходимо кроме определения устройства с наивысшем приоритетом произвести его идентификацию. Идентификация реализуется с помощью адреса вектора прерывания, выдаваемого блоком селекции процессору. С помощью этого вектора идет обращение к ячейке памяти, где он хранится и задает номер ячейки первой команды драйвера, управляющего работой данным устройством (см. рис 1.8). Передача вектора прерываний осуществляется по шине данных. Как правило, функции арбитрации и селекции поддерживают режим вложенных прерываний, когда устройство с большим приоритетом может прервать работу текущего устройства, обладающего меньшим приоритетом. Процессы арбитрации и селекции основываются либо на схеме фиксированного приоритета, либо на более "справедливых" схемах с циклическим приоритетом или схеме со случайным выбором активного устройства, требующего шину. Арбитрация реализуется с помощью специальных схем арбитра в главном мосту или с помощью котроллеров прямого доступа к памяти, построенных на микросхемах типа i8237A, имеющих четыре линии запросов ПДП. Функция селекции использует контроллеры прерываний типа i8259A, с 8 линиями запросов прерывания. Функция контроля. Эта функция используется для контроля передачи адреса и данных, контроля выдачи сигналов обратной связи (квитирования) и улучшения ремонтопригодности компьютера при локализации неисправностей. При параллельной передаче адрес и данные контролируются методом проверки на четность (нечетность) ЕСС, для чего вводится специальная линия контрольного разряда. При последовательной передаче, как правило, используется избыточные циклические коды (метод CRC) и каждый блок данных сопровождается контрольным кодом. Контроль выполнения циклов на шине осуществляется методом тайм-аут. При этом методе для каждого контролируемого цикла задается максимально возможное время длительности цикла, если цикл не завершается за это время, выдается сигнал ошибки. Для проведения диагностики работоспособности устройств в интерфейсах используется специальная последовательная шина JTAG, предназначенная для тестирования PCI-устройств с помощью встроенного порта ТАР (Test Access Port). Функция преобразования информации. В компьютерах используются одновременно и параллельные и последовательные интерфейсы, кроме того, применяются ПУ с последовательной записью и считыванием информации на носителе (магнитные и оптические диски, магнитные ленты). Все это приводит к необходимости при передаче информации производить преобразование последовательного ее представления в параллельное и наоборот. Эти функции реализуются в соответствующих контроллерах ввода-вывода. Функция автоконфигурации. Эта функция в интерфейсе реализуется специальными операциями конфигурационного чтения и записи (Configuration Read and Write), сигналами выбора устройств при конфигурации и выделенным адресным пространством автоконфигурации. Сигналы выбора являются индивидуальными для каждого устройства. С их помощью производится последовательная выборка устройств шины, подлежащих автоконфигурации. Конфигурируемые устройства сообщают блоку автоконфигурации о потребностях в ресурсах и возможных диапазонах памяти, эти данные хранятся в регистрах автоконфигурации. После распределения ресурсов, выполняемого программой конфигурирования (во время POST), в устройство передаются параметры конфигурирования, которые записываются в пространство памяти автоконфигурации, расположенной в самих устройствах. ПУ, использующие автоконфигурацию, должны иметь соответствующие средства для проведения этих процедур. Функция управлением питанием. (Power Management) В настоящее время многие компьютеры круглосуточно включены и работают. Поэтому в интерфейсах вводят специальные функции управления электропотреблением, работающие в соответствии со спецификациями ACPI и PC97. Кратко о спецификации ACPI (Advanced Configuration and Power Interface) Задача ACPI обеспечить взаимодействие между операционной системой, аппаратным обеспечением и BIOS системной платы. В полном объеме спецификация ACPI к настоящему времени (2000 год) не реализована. На основе этой спецификации реализуется технология OnNow. С точки зрения ACPI, всего имеется 4 состояния РС: * G0 - обычное рабочее состояние * G1 - suspend, спящий режим * G2 - soft-off, режим, когда питание отключено, но блок питания находится под напряжением, и машина готова включиться в любой момент * G3 - mechanical off - питание отключено напрочь Инициатива OnNow заключается в расширении состояния G1. Вместо простого засыпания, реализованного непонятно как, вводятся 4 режима: * S1: (standby 1) останавливаются тактовые генераторы CPU и всей системы, но при этом состояние памяти остается неизменным. Выход из S1 осуществляется мгновенно. * S2: (standby 2) также останавливаются тактовые генераторы CPU и всей системы, но к тому же отключается питание кэша CPU и , а данные, хранившиеся там, сбрасываются в основную память. Включение также происходит достаточно быстро. * S3: (suspend-to-memory) по замыслу, именно этот режим должен был быть OnNow, но по воле разработчиков пока так не получилось. Должны обесточиваться все компоненты системы, кроме памяти, в которой сохраняются необходимые данные о состоянии CPU и кэша. Включение с восстановлением предыдущего состояния РС действительно происходит Now, т.е. практически сразу. * S3: (suspend-to-disk) то, что реализовано в каком-то виде сейчас. Все компоненты системы обесточиваются, данные о состоянии процессора и содержимое кэша и памяти записываются в специальное отведенное место на жестком диске. При этом пробуждение может занимать значительное время. Функция горячего подключения ПУ. Эта функция позволяет отключать и подключать ПУ без остановки компьютера. При этом происходит автоконфигурирование включенного устройства без участия оператора.