link700 link701 link702 link703 link704 link705 link706 link707 link708 link709 link710 link711 link712 link713 link714 link715 link716 link717 link718 link719 link720 link721 link722 link723 link724 link725 link726 link727 link728 link729 link730 link731 link732 link733 link734 link735 link736 link737 link738 link739 link740 link741 link742 link743 link744 link745 link746 link747 link748 link749 link750 link751 link752 link753 link754 link755 link756 link757 link758 link759 link760 link761 link762 link763 link764 link765 link766 link767 link768 link769 link770 link771 link772 link773 link774 link775 link776 link777 link778 link779 link780 link781 link782 link783 link784 link785 link786 link787 link788 link789 link790 link791 link792 link793 link794 link795 link796 link797 link798 link799 link800 link801 link802 link803 link804 link805 link806 link807 link808 link809 link810 link811 link812 link813 link814 link815 link816 link817 link818 link819 link820 link821 link822 link823 link824 link825 link826 link827 link828 link829 link830 link831 link832 link833 link834 link835 link836 link837 link838 link839

PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

PCI и PCI-X

Взаимодействие устройств

С программной точки зрения устройство PCI может иметь следующие компоненты: 

  • конфигурационные регистры, используемые для идентификации и начального конфигурирования устройства при инициализации системы. Для всех устройств предусмотрен обязательный набор конфигурационных регистров, остальные регистры могут использоваться для текущего управления;
  • операционные регистры (необязательные), отображенные на пространство памяти и/или ввода/вывода; эти регистры используются для текущего управления и взаимодействия с устройством;
  • локальная память (необязательная), отображенная на выделенные области физических адресов системной памяти;
  • источники запросов на прерывания;
  • мастер шины, обеспечивающий прямой доступ к системной памяти (DMA) и взаимодействие с другими устройствами.

С устройством PCI, когда оно является целевым, можно взаимодействовать несколькими способами:

  • командами обращения к памяти и портам ввода/вывода; эти команды адресуются к областям, выделенным устройству при конфигурировании;
  • командами обращения к конфигурационным регистрам; эти команды адресуются по идентификатору — номеру шины, устройства и функции (компонента многофункционального устройства PCI);
  • специальными широковещательными сообщениями, передаваемыми для всех устройств выбранной шины;
  • командами пересылки сообщений; команды адресуются по идентификатору устройства (эта возможность появилась в PCI-X 2.0);

Для обращений к пространству памяти используется 32-битная или 64-битная адресация, причем разрядность адресации не зависит от разрядности шины. Таким образом, шина позволяет адресовать до 232 (4 Гбайт) или 264 (более 16 тыс. Пбайт) байт памяти. На шине PCI фигурирует физический адрес памяти. Для адресации портов ввода/вывода используется 32-битная адресация; в компьютерах на базе процессоров x86 из них используются только 16 младших бит. В системе адресации ввода/вывода имеется поддержка особенностей, связанных с адресацией портов в PC-совместимых компьютерах с шиной ISA. Для устройств PCI и PCI-X рекомендуется по возможности избегать использования портов ввода/вывода; операционные регистры устройств рекомендуется отображать на пространство памяти (Memory-Mapped I/O).

Конфигурационные регистры устройств PCI расположены в обособленном пространстве адресов (отдельном от пространства адресов памяти и ввода/вывода). Каждому устройству (точнее, каждой функции сложного устройства) выделяется 256-байтный блок конфигурационных регистров; в спецификации PCI-X 2.0 размер блока увеличен до 4096 байт. Частью этого блока является обязательный набор конфигурационных регистров, с помощью которых осуществляются идентификация устройств, их конфигурирование и управление их свойствами. В конфигурационных регистрах, в частности, указываются адреса, отведенные устройству (как целевому); через них разрешается работа в роли инициатора и целевого устройства, конфигурируются прерывания. Конфигурационные регистры обеспечивают возможность автоматической настройки всех устройств шины PCI. К этим регистрам система обращается на этапе конфигурирования — переучета обнаруженных устройств, выделения им неперекрывающихся ресурсов (областей памяти и пространства ввода/вывода) и назначения номеров аппаратных прерываний. При дальнейшей регулярной работе взаимодействие прикладного ПО с устройствами осуществляется преимущественно путем обращений по назначенным в процессе конфигурирования адресам памяти и ввода/вывода. Конфигурационные же регистры в регулярной работе используются для системных целей: настройки параметров, описывающих поведение устройства на шине, обработки ошибок, идентификации источника прерываний.

Обращения к регистрам и памяти устройств PCI выполняются командами шины PCI. Команды может подавать любой инициатор: как хост (главный мост) по командам центрального процессора, так и рядовое устройство PCI. Возможность распространения ряда команд зависит от взаимного расположения инициатора и целевого устройства на «ветвях» дерева шин PCI. Однако хост может безусловно подавать любую команду любому устройству PCI. Только хост всегда (и по начальному включению) имеет доступ к конфигурационным регистрам всех устройств (и мостов), поэтому он и должен заниматься конфигурированием. После конфигурирования любое устройство PCI может безусловно обратиться к системной памяти, то есть реализовать прямой доступ к памяти (DMA).

Устройства PCI могут вырабатывать запросы аппаратных прерываний:

  • обычных маскируемых — для сигнализации событий в устройстве; эти прерывания могут сигнализироваться как традиционным способом — по специальным сигнальным линиям, так и передачей сообщений (MSI);
  • немаскируемых — для сигнализации о серьезных ошибках;
  • прерываний системного управления (SMI) — для сигнализации о событиях в системе управления энергопотреблением и некоторых системных целей (например, эмуляции работы стандартного контроллера клавиатуры с помощью устройств USB).
     

Наиболее эффективно возможности шины PCI используются при применении активных устройств — мастеров шины (PCI Bus Master). Только эти устройства могут обеспечить скорость передачи данных, приближающуюся к декларированной пиковой пропускной способности. Максимальная производительность обменов по шине PCI достигается только в пакетных транзакциях значительной длины. Транзакции по инициативе программы, исполняемой на ЦП, проводимые главным мостом, как правило, являются одиночными (или очень короткими пакетными). По этой причине программно-управляемый обмен данными с устройствами PCI по производительности значительно уступает обмену, выполняемому устройством-мастером. Таким образом, применение активных устройств дает двойной эффект: разгружает центральный процессор и обеспечивает лучшее использование пропускной способности шины.