Системный контроллер ввода/вывода для сопряжения шин PCI и I

Н. Ракович

Системный контроллер ввода/вывода для сопряжения шин PCI и ISA

Мы уже сообщали о продукции компании Winbond [1], выпускающей широкую гамму разнообразных микросхем, начиная с памяти и микроконтроллеров и заканчивая приборами для мобильных средств связи и распознавания речи. Примерно в середине этого списка находятся ИС для компьютеров. На этот раз рассмотрим контроллеры ввода/вывода W83С553F и W83С554F, которые выполняют функции моста между шинами PCI и ISA. Тема эта должна быть интересна хотя бы уже потому, что смена поколений компьютеров требует от разработчиков встроенных плат с интерфейсом ISA стремительной модернизации оборудования.

Общие сведения

Шина PCI (Peripheral Component Interconnect) - шина соединения периферийных компонентов, являющаяся мостом между системной шиной процессора и шиной ввода/вывода ISA. В каждом обмене по шине (транзакции) участвуют два устройства - инициатор обмена (ведущий шины) и целевое устройство (ведомый шины).

Шина ISA (Industry Standard Architecture) - шина расширения, ставшая промышленным стандартом. Она обеспечивает возможность отображения 8- и 16-разрядных регистров на пространство ввода/вывода и памяти. Абоненты шины могут использовать три 8-бит канала DMA, а на 16-бит шине доступны ещ╦ три 16-разрядных канала. Канал DMA используется для обеспечения арбитража управления шиной, а адаптер Bus-Master формирует все адресные и управляющие сигналы шины.

Системный контроллер ввода/вывода W83С553F/W83С554F с PCI-арбитром (W83С554F полностью аналогичен W83С553F, но поддерживает режим UltraDMA, поэтому в дальнейшем речь пойд╦т об обеих микросхемах) предназначен для использования с микроконтроллерами семейства х86 или PowerPC в любой системе с шиной PCI. Эта микросхема поддерживает все реализации главного (CPU) моста, совместимые с протоколом PCI 2.1, и обеспечивает прямое сопряжение шин PCI и ISA, включая два канала IDE с поддержкой до четыр╦х внешних устройств.

W83С553F является универсальным устройством PCI, которое можно использовать для построения различных видов CPU-PCI моста. Данная ИС имеет 32-разрядную ISA DMA адресацию (что предпочтительнее, чем 24-разрядная) для упрощения применения в устройствах с рекомпилированными версиями 32-разрядных операционных систем (Windows NT, PowerPC, Alpha или иные на базе RISC-процессоров).

В состав контроллера W83С553F входят два 7-канальных 32-разрядных контроллера DMA 82С37А, поддерживающих быструю DMA передачу данных от ISA-шины на изолированную шину PCI через 4-байт линейный буфер. Оба этих контроллера способны выполнять передачу с "разбросанной" записью/чтением со сбором данных из нескольких блоков памяти.

Cистемный контроллер ввода/вывода обеспечивает мост между шиной PCI и шиной расширения ISA. Кроме этого, он имеет встроенный ведущий IDE-контроллер для шины PCI, арбитр шины PCI (который может быть отключен в случае необходимости) и множество функций ввода/вывода для современных систем на базе ISA. В состав W83С553F входит также блок логики полного интерфейса PCI (инициатор и целевое устройство) и интерфейса ISA (ведущий и ведомый). Наличие арбитража PCI и ISA, контроллера прерываний на 14 уровней, 16-разрядного BIOS-таймера, тр╦х программируемых сч╦тчиков-таймеров, логики управления немаскируемого прерывания и регистра управления питанием при сбойных ситуациях позволяет говорить о контроллере W83С553F как о мощном аппаратном средстве.

Встроенный контроллер двунаправленного порта PCI IDE обеспечивает высокую скорость передачи данных между IDE-устройствами и PCI-шиной. Каждое из четыр╦х устройств IDE имеет свои программируемые регистры для выбора скорости конвейерной передачи данных (16 и 32 разряда), систему опережающего чтения и задержки записи. Наличие большого буфера DMA FIFO (64 байт) позволяет избавиться от необходимости введения состояния ожидания при передаче данных через шину PCI. Ведущий шины IDE-устройств значительно повышает общую производительность системы с PCI-конфигурацией со многими инициаторами обмена за сч╦т резкого снижения использования центрального процессора при обращении к ж╦сткому диску или к CD-ROM. При частоте шины 33 МГц может быть обеспечена пакетная передача данных со скоростью 132 Мбайт/с на шине PCI.

В качестве ядра системного контроллера ввода/вывода W83С553F использовано оригинальное ядро Sonata контроллера W83789F с некоторыми изменениями в маршрутизации прерываний. Рассматриваемая ИС полностью совместима с адаптером Bus-Master фирмы Intel и спецификацией SFF8038i. Поддержка BIOS обеспечивается ПО всех ведущих компаний.

Структурная схема контроллера W83С553F приведена на рис. 1.

Рисунок 1.

Архитектура системы

Контроллер W83С553F представляет собой многофункциональное PCI-устройство: "функция 0" - мост PCI-ISA; "функция 1" - IDE-контроллер ведущего шины. Каждая из функций имеет свою собственную область конфигурации PCI и область регистров ввода/вывода.

Шинная иерархия контроллера W83С553F обеспечивает параллельное выполнение операций на всех шинах одновременно и структурирована следующим образом:

шина PCI - первичная шина ввода/вывода; шина ISA - вторичная шина ввода/вывода.

Контроллер принимает циклы (адреса и данных) от шины PCI и преобразует их на шину ISA. Он также запрашивает PCI-мост ведущего для формирования PCI-циклов по запросу IDE DMA-устройства или ведущего шины ISA. Таким образом, интерфейс шины ISA содержит контроллер стандартной шины ISA и схему буферизации данных. Управление ISA-шиной обеспечивает формирование команд ISA, восстановление при сбое ввода/вывода, введение тактов ожидания и маршрутизацию данных в буфере. Дополнительно возможна поддержка пяти слотов ISA без схемы внешней буферизации.

W83С553F инициализирует и выполняет регенерацию стандартной ISA-шины. Формирование команды и адреса регенерации шины ISA выполняет встроенный контроллер. Поскольку регенерация ISA-шины "прозрачна" для шины PCI и цикла DMA, то арбитр моста разрешает любые конфликты между шиной PCI, регенерацией и циклами DMA.

Передача данных устройств IDE выполняется по двум специальным протоколам. Стандартный протокол - выполнение PIO-циклов на PCI-шине и IDE-интерфейсах. Расширенный протокол позволяет W83С553F передавать данные через шину PCI (как ведущего шины) в/из памяти и через IDE-интерфейсы с циклами DMA (единичными или многословными). Этот протокол снижает загрузку процессора при одновременном увеличении пропускной способности шины PCI.

Все передачи данных по протоколу IDE PIO (8-, 16- или 32-разрядная) автоматически определяются и поддерживаются. Для любого отдельного прибора при операциях чтения ввода/вывода возможен режим опережающего чтения. Как следствие этого, контроллер может выполнять дополнительные IDE-циклы чтения, в то время как процессор завершает предыдущий цикл записи в память. Аналогично, для каждого прибора возможен режим задержанной записи, который позволяет IDE-контроллеру завершать текущий цикл записи при выполнении процессором следующей операции чтения системной памяти. Вс╦ это значительно повышает производительность дисковой подсистемы при одновременном снижении загрузки системы.

Поддержка передачи данных/команд выполняется в соответствии со спецификацией "Programming Interface for Bus Master IDE Controller" ред.1.0 (SFF8038i). Как следствие, системному процессору нет необходимости заниматься передачей данных между контроллером IDE и системной памятью (что требуется при использовании стандартного протокола PIO). Кстати, при многозадачном режиме процессор может заниматься другими задачами (при этом производительность шины PCI будет максимальной), а передачей данных займ╦тся W83С553F (W83С554F).

Активное состояние

В активном состоянии W83С553F (W83С554F) контролирует все такты на шине PCI и реагирует на циклы конфигурации и ввода/вывода, прич╦м для конфигурирования необходима непосредственная адресация, а для ввода/вывода используются данные из внутренних регистров конфигурации. Циклы ввода/вывода используются для передачи команды/состояния и данных к/от IDE-устройствам, в соответствии с данными в регистрах ведущего шины.

Одной из особенностей системного контроллера фирмы Winbond является наличие четыр╦х каналов передачи данных (табл. 1). Первый канал - функции синхронизации и управления для 8-разрядных циклов ввода/вывода IDE-устройств, второй - такие же функции, но для 16- и 32-разрядных циклов ввода/вывода и используемые для передачи данных по PIO-протоколу. Третий канал передачи данных используется для доступа к внутренним регистрам конфигурации и ведущего шины IDE-прибора. Последний путь - протокол передачи данных ведущего шины. Помимо этих каналов, блок логики разделяет 8-разрядные и 16/32-разрядные циклы для управления IDE-интерфейсом и синхронизации, а также для управления упаковкой и распаковкой данных при обмене между буфером IDE и буфером PCI.

Таблица 1. Каналы передачи адреса и данных для основных циклов

Цикл Канал передачи адреса Канал передачи данных Чтение данных ISA - PCI Адрес/данные PCI W83C553F фиксация и адресация ISA ISA данные W83C553F адрес/данные PCI Запись данных PCI - ISA Адрес/данные PCI W83C553F фиксация и адресация ISA Адрес/данные PCI W83C553F данные ISA Чтение DMA W83C553F адрес/данные PCI, W83C553F фиксация и адресация ISA Адрес/данные PCI W83C553F данные ISA Запись DMA W83C553F адрес/данные PCI, W83C553F фиксация и адресация ISA ISA данные W83C553F адрес/данные PCI Регенерация ISA W83C553F адресация ISA   Мост PCI-ISA

Системный контроллер W83C553F выполняет функции интерфейса шины PCI, обеспечивая работу как инициатора обмена, так и целевого устройства. Когда установлен сигнал PIBGNT#, ведущий на основе состояния адресного декодера ISA передает ISA или DMA-цикл на шину PCI. Если PIBGNT# снят, то ведомый принимает эти циклы, инициированные от шины PCI, и направляет во внутренние регистры W83C553F или на ISA-шину. Декодер адреса шины PCI поддерживает целевое устройство при обработке циклов инициализации PCI, которые затем направляются на шину ISA.

В том случае, когда шина PCI выступает в роли целевого устройства, контроллер W83C553F отвечает за транзакции и ввода/вывода и памяти. Он всегда устанавливается как ведомый после первой фазы данных пакетной передачи. W83C553F преобразует также отдельный цикл прерывания в два для встроенных контроллеров прерываний 82С59.

Работа интерфейса IDE

Управление работой интерфейса IDE осуществляется конфигурационными регистрами. Порт 0 (первичный порт) и порт 1 (вторичный) обладают идентичными свойствами и параметрами настройки. Все 8-разрядные временные интервалы предустановлены (табл. 2). 16-разрядные временные интервалы хотя и программируются, но в основном тоже имеют фиксированные значения. Установка адреса, удержание адреса и данных (при записи) имеют те же значения, что и 8-разрядные. Длительность установки адреса равна длительности команды включения записи. Это позволяет пользователю запрограммировать только команды включения-отключения для выбора режимов работы по протоколу PIO или DMA (большинство из которых также фиксированы).

Таблица 2. 8-разрядные интервалы

Параметр Интервал (в тактовых импульсах) Включение 10 Отключение 10 Установка адреса 3 Удержание адреса 1 Установка данных (при записи) 3 Удержание данных (при записи) 1 Время цикла 20 Передача данных по протоколу PIO

При передаче данных по протоколу PIO циклы чтения/записи для ввода/вывода выполняются на интерфейсе IDE, а передача данных выполняется на шине PCI. При этом адрес IDE-устройства и сигналы выбора кристалла будут изменяться только в том случае, когда на PCI-шине определ╦н цикл декодирования. Это уменьшает помехи от переключения IDE-интерфейса и электромагнитные помехи.

Для повышения быстродействия передачи данных по протоколу PIO в W83C553F реализован алгоритм работы с опережающим чтением и задержанной записью. Циклы чтения или записи выполняются до тех пор, пока буфер опережающего чтения не будет заполнен или буфер задержанной записи не освободится. В результате, в начало и конец блока передаваемых данных добавится только установка адреса и время удержания.

16-байт буфер PIO FIFO позволяет передавать данные одновременно по двум каналам без потери данных между ними.

Любой доступ к регистрам конфигурации и любой 8-разрядный IDE доступ выполняются в реальном времени (опережающее чтение и задержанная запись не используются). Режим опережающего чтения и задержанной записи поддерживается только 16- и 32-разрядными циклами в регистре данных IDE-устройства.

Передача 32-разрядных данных

Для уменьшения загрузки системы и повышения производительности в W83C553F реализована возможность передачи 32-разрядных данных. При использовании стандартного протокола PIO за один цикл ввода/вывода и один цикл памяти между устройством IDE и памятью переда╦тся 2 байт. Чтобы передать 4 байт данных, требуется, соответственно, два цикла ввода/вывода и два цикла памяти. Такую передачу можно выполнить за один 32-разрядный цикл ввода/вывода и один цикл памяти. Цикл процессора уменьшится вдвое, а опережающее чтение и задержанная запись улучшат производительность системы как при чтении, так и при записи данных.

Передача данных инициатором обмена

Когда устройства DMA выступают в качестве инициатора обмена на шине PCI, то циклы DMA выполняются на интерфейсе IDE. В этом режиме регистр управления инициатора шины устанавливает W83C553F в состояние запрета выбора для данного порта и обращается к DRQ. Если прерывание выставляется на интерфейсе IDE, то оно будет задержано при передаче данных от IDE-устройства в память до тех пор, пока буфер FIFO не освободится (содержимое перепишется в память). Для увеличения пропускной способности шины PCI, буфер FIFO инициатора шины независим от буферов PIO FIFO. Его "глубина" составляет 64 байт, что позволяет системному контроллеру передавать 8 двойных слов.

Если в режиме инициатора обмена находятся два порта, то они будут совместно использовать один и тот же буфер FIFO. Для обеспечения "справедливой" передачи данных каждым из портов применяется арбитраж.

Применение этого протокола для передачи данных позволяет снизить загрузку центрального процессора в среднем на 90%, поскольку ему необходимо только передать команду целевому IDE-устройству, вызвать таблицу PRD-инициатора и запрограммировать его регистры. Таким образом, на обслуживание одной команды необходимо только одно прерывание, в отличие от команд протокола PIO, где одно прерывание требуется на сектор или блок секторов, а процессор должен "вручную" предавать все данные. Помимо этого, по сравнению с протоколом PIO, почти на 90% сокращается загрузка PCI-шины: вне зависимости от скорости передачи данных IDE-устройством, передача одного сектора данных занимает не более 6 мкс. Протокол PIO позволяет передать такой же объ╦м данных за 150 мкс.

Контроллер прерываний 82С59А

В состав системного контроллера фирмы Winbond входят два контроллера прерываний, включенные каскадом на получение 15 каналов прерываний. IRQ0 подключен на выход OUT0 сч╦тчика/таймера 82С54. Обычно прерывание формируется по нарастающему фронту сигнала прерывания IRQ. Однако, прерывания IRQ8 и IRQ13 фиксируются по спаду, разрешая прямое подключение прерывания часов реального времени (IRQ8#) или сигнала ошибки операций с плавающей точкой процессора Pentium. Для снижения уровня шумов все внешние линии прерываний нагружены через встроенные резисторы. Порт ввода/вывода и параметры каналов соответствуют требованиям IBM PC/AT.

Контроллер DMA 82С37А

В контроллер W83C553F интегрированы два 4-канальных контроллера DMA. Каждый из них формирует адреса памяти и сигналы управления, необходимые для передачи информации между внешним устройством и памятью без участия центрального процессора. Контроллеры включены так, чтобы обеспечить передачу данных по четыр╦м каналам DMA для 8-разрядных периферийных устройств и по тр╦м каналам - для 16-разрядных. Соответствие требованиям IBM PC/AT аналогичны контроллеру прерываний 82С59А.

Системный контроллер W83C553F поддерживает A-, B- и F-типы циклов передачи. Оба контроллера DMA работают с полной 32-разрядной адресацией и обладают возможностью передачи с "разбросанной" записью/чтением со сбором данных из нескольких блоков памяти.

Счетчик-таймер 82С54

Для встроенного в W83C553F тр╦хканального программируемого сч╦тчика-таймера 82С54 используется кварц частотой 14,31818 МГц и делитель на 12, что да╦т стандартную входную частоту 1,19318 МГц. Назначение сч╦тчика-таймера оста╦тся без изменений:

генерация прерываний от системных часов; генерация запросов на регенерацию памяти; генерация звуковых сигналов. PCI-арбитр

Контроллер W83C553F содержит программируемый PCI-арбитр на 8 инициаторов обмена, который может быть адаптирован для любых системных требований. В активном состоянии такими инициаторами являются два внутренних моста (ISA и IDE), системный процессор, а также доступные системному разработчику REQ#/GNT#[4:0].

После подачи питания по умолчанию арбитр устанавливает схему кругового обслуживания, предоставляющую всем инициаторам обмена равный доступ к шине PCI. При необходимости приоритетного доступа для любой пары REQ/GNT возможно задание через регистр управления приоритетом (PCI Priority Control Register) "1" по индексу 80h функции 0 области конфигурации шины PCI.

Прерывания

В число прерываний, обслуживаемых W83C553F, входят IRQ0-IRQ15, DRQ0-DRQ7, SERR#, ISA IOCHK#, INTR и немаскируемые прерывания центрального процессора (NMI). Разработчики прикладных устройств могут программировать функцию 0 регистров конфигурации PCI 60h-63h выбором отдельных IRQ и DRQ в качестве прерываний. Использование этих регистров позволяет контроллеру W83C553F работать в схеме полного управления питанием с внешним блоком управления питанием (как, например, в устройствах CPU-PCI) ("зел╦ные" ПК).

Режимы процессора (Х86 или PowerPC)

Особенностью W83C553F является наличие двух режимов процессора, которые изменяют функциональное назначение некоторых выводов микросхемы. В режиме х86 поддерживаются Intel-совместимые процессоры, включая Pentium, AMD K6, Cyrix M1, Intel P6 и другие. Режим PowerPC предназначен для процессоров IBM/Apple/Motorola PowerPC, а также для RISK-процессоров, таких как DEC Alpha, Sun SPARC и MIPS R4xxx, то есть системный контроллер ввода/вывода может формировать все необходимые сигналы сброса для микропроцессора, шины PCI и шины ISA.

Итоги

Применение системных контроллеров ввода/вывода W83C553F и W83C554F для сопряжения шин PCI и ISA позволяет решать любые задачи по построению высокопроизводительных мостов PCI-ISA. Чтобы убедиться в этом, достаточно сравнить продукцию Winbond () с аналогичными изделиями других фирм (, ).

Компанией Winbond производится ряд микросхем (контроллеров, памяти и пр.), использование которых, совместно с контроллерами ввода/вывода, позволит разработать широчайшую гамму устройств различного назначения ().

Фирма Rainbow Technologies является дистрибьютором компании Winbond, потребители могут получить консультации и разместить свои заказы в наших офисах.

Литература

Ракович Н.Н. Продукция Winbond Elecnronics // Chip News. 2001. ╧ 3. С. 4-7.







Рекомендуемый контент




Copyright © 2010-2018 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.