
Шины.PCI,.USB.и.FireWire
.pdfбит 11 — Signaled Target Abort — устанавливается целевым устройством, когда оно отвергает транзакцию;
бит 12 — Received Target Abort — устанавливается инициатором, когда он обнаруживает отвергнутую транзакцию;
бит 13 — Received Master Abort — устанавливается ведущим устройством, когда оно отвергает транзакцию (кроме специального цикла);
бит 14 — Signaled System Error — устанавливается устройством, подавшим сигнал SERR#;
бит 15 — Detected Parity Error — устанавливается устройством, обнаружив$ шим ошибку данных.
Регистр Cache Line Size (RW) служит для задания размера строки кэша (0–128, допустимые значения 2n, иные трактуются как 0). По этому параметру инициатор определяет, какой командой чтения воспользоваться (обычное чтение, чтение стро$ ки или множественное чтение). Ведомое устройство использует этот параметр для поддержки пересечения границ строк при пакетных обращениях к памяти. По сбро$ су регистр обнуляется.
Регистр Latency Timer (RW) задает значение таймера, ограничивающего длину транзакции при снятии сигнала GNT# (см. главу 2). Значение указывается в виде числа тактов шины, часть битов может не допускать изменения (обычно младшие три бита неизменны, так что таймер программируется с дискретностью в 8 так$ тов).
Регистр BIST (RW) служит для управления встроенным самотестированием (Built$ In Self Test). Назначение бит регистра:
бит 7 — возможность BIST;
бит 6 — запуск теста: запись единицы инициирует тест, по окончании устрой$ ство сбрасывает бит (тест должен быть завершен не более чем за 2 с);
биты [5:4] — резерв (0);
биты [3:0] — код завершения теста: 0 — тест прошел успешно.
Регистр Card Bus CIS Pointer (необязательный) содержит указатель на струк$ туру описателя Card Bus для комбинированного устройства PCI + Card Bus.
Регистр Interrupt Line (RW) хранит номер входа контроллера прерывания для используемой линии запроса (0–15 — IRQ0–IRQ15, в системах с APIC может иметь и большее значение; 255 — неизвестный вход или не используется).
Регистр Interrupt Pin (RO) задает линию, используемую для запроса прерыва$ ния: 0 — не используется, 1 — INTA#, 2 — INTB#, 3 — INTC#, 4 — INTD#, 5–FFh — резерв.
Регистр Min_GNT (RO) задает минимальное время, на которое ведущему устрой$ ству должно предоставляться управление шиной из расчета на частоту 33 МГц, в интервалах по 0,25 мкс.
Регистр Max_Lat (RO) задает максимально допустимую задержку предоставле$ ния ведущему устройству доступа к шине, в интервалах по 0,25 мкс (0 — нет спе$ циальных требований).
Регистры Subsystem ID (RO, задается производителем) и Subsystem Vendor ID
(RO, производитель получает в PCI SIG) хранят идентификаторы, позволяющие точно идентифицировать карты и устройства (в системе могут быть установлены несколько карт с совпадающими идентификаторами устройства и производителя Device ID и Vendor ID). В поле 2Ch ставится идентификатор производителя кар$ ты PCI (может совпадать со значением в поле 0, если фирма выпускает и микро$ схемы, и карты).
Регистр Capability Pointer (CAP_PTR) содержит указатель на цепочку блоков регистров свойств функции, представленных в конфигурационных регистрах. Каж$ дый блок представляет собой набор регистров, начинающийся с границы двойно$ го слова (в указателе биты [1:0] сброшены). Каждый блок начинается с байта иден$ тификатора типа свойства (CAP_ID, определенный PCI SIG), за которым следует указатель на следующий блок (нулевой указатель является признаком конца списка блоков), после чего расположены байты описаний самих свойств. Через CAP_PTR, например, отыскиваются регистры управления энергопотреблением (если есть), регистры AGP, некоторые регистры хост$контроллера USB 2.0 и ряд других.
Регистры Base Address Registers (BAR) описывают области памяти и портов ввода$вывода. Программными манипуляциями с регистрами можно определить размеры областей. Для областей памяти и портов описания различаются:
область памяти (размером не более 2 Гбайт) описывается следующим об$ разом:
бит 0 = 0 — признак памяти;
биты [2:1] — тип адресации: 00 — 32$битная адресация, 10 — 64$битная (в этом случае регистр расширяется следующим за ним 4$байтным словом, 64$бит$ ная адресация обязательна для PCI$X), 01 и 11 — резерв (01 в прежних вер$ сиях предназначались для памяти в пределах первого мегабайта);
бит 3 (Prefetchable) — признак «настоящей» памяти, то есть допускающей предвыборку;
биты [31:4] — базовый адрес памяти;
область портов (размером до 256 байт) описывается следующим образом:
бит 0 = 1 — признак области портов;
бит 1 = 0 (резерв);
биты [31:2] — базовый адрес блока портов.
Регистр Expansion ROM Base Address управляет адресацией ПЗУ программной поддержки устройства. Размер ПЗУ определяется так же, как и в регистрах базо$ вых адресов (см. выше). Обращение к ПЗУ возможно лишь при разрешенном ис$ пользовании памяти (бит 1 в регистре команд). Назначение бит регистра:
бит 0 — разрешение использования ПЗУ;
биты [1:10] — резерв;
биты [11:31] — базовый адрес.

Специальные регистры устройств PCI X
Устройства PCI$X имеют дополнительные регистры (рис. 5.2), положение кото$ рых определяется через список свойств (Capability ID = 07). Регистры для ECC$ контроля появились только в версии PCI$X 2.0.
Рис. 5.2. Дополнительные регистры PCI X
Регистр PCI-X Command служит для управления новыми свойствами протокола PCI$X:
бит 0 (RW) — Uncorrectable Data Error Recovery Enable, разрешение по$ пытки восстановления после обнаружения неисправимой ошибки. Если бит не установлен, по обнаружении ошибки четности будет формироваться сигнал
SERR#;
бит 1 (RW) — Enable Relaxed Ordering, разрешение установки признака RO в атрибутах транзакции;
биты [3:2] (RW) — Maximum Memory Read Byte Count, предел для счетчика байтов в транзакциях чтения памяти: 0 — 512 байт, 1 — 1024, 2 — 2048, 3 — 4096;
биты [6:4] (RW) — Maximum Outstanding Split Transactions, предельное число незавершенных расщепленных транзакций: 0…7 — 1, 2, 3, 4, 8, 12, 16, 32 транзакции соответственно;
биты [11:7] — резерв;
биты [13:12] (RO) — версия возможностей PCI$X (поддержка ECC):
00 — ECC не поддерживается;
01 — ECC только в Mode 2;
10 — ECC в Mode 1 и Mode 2.
биты [15:14] — резерв.
Регистр PCI-X Status содержит идентификатор функции — ее адрес в иерархии конфигурационного пространства, который устройство «подсматривает» на шине, при выполнении операции конфигурационной записи. Этот идентификатор тре$ буется устройству для передачи его в фазе атрибутов. Кроме того, в регистре име$ ются признаки возможностей устройства, а также индикаторы ошибок, связанных
срасщепленными транзакциями. Назначение битов регистра PCI-X Status:
биты [2:0] (RO) — Function Number, номер функции;
биты [7:3] (RO) — Device Number, номер устройства, который оно узнает по значению AD[15:11] в фазе адреса конфигурационной записи, обращенной к дан$ ному устройству, выбранному линией IDSEL (после сброса устанавливается 1F);
биты [15:8] (RO) — Bus Number, номер шины, который оно узнает по значению AD[7:0] в фазе атрибутов конфигурационной записи, обращенной к данному устройству (после сброса устанавливается FF);
бит 16 (RO) — 64-bit Device, признак 64$битной шины AD;
бит 17 (RO) — 133 MHz Capable, признак поддержки частоты 133 МГц (иначе 66 МГц);
бит 18 (RWC) — Split Completion Discarded, признак отброшенного завер$ шения расщепленной транзакции (запросчик его отверг);
бит 19 (RWC) — Unexpected Split Completion, признак неожиданного полу$ чения завершения расщепленной транзакции;
бит 20 (RO) — Device Complexity, признак сложного устройства (моста);
биты [22:21] (RO) — Designed Maximum Memory Read Byte Count, максималь$ ное число байт в последовательности, инициируемой устройством (его возмож$ ности): 0 — 512 байт, 1 — 1024, 2 — 2048, 3 — 4096;
биты [25:23] (RO) — Designed Maximum Outstanding Split Transactions, предельное число незавершенных расщепленных транзакций: 0…7 — 1, 2, 3, 4, 8, 12, 16, 32 транзакции;
биты [28:26] (RO) — Designed Maximum Cumulative Read Size, максималь$ ный суммарный объем данных чтения памяти, ожидаемых устройством (запро$ сы отправлены, ответы еще не получены): 0…7 — 8, 16, 32…1024 квантов ADQ;
бит 29 (RWC) — Received Split Completion Error Message, признак полу$ чения сообщения об ошибке завершения расщепленной транзакции;
бит 30 (RO) — PCI-X 266 Capable, поддержка режима PCI$X 266 (Mode 2);
бит 31 (RO) — PCI-X 533 Capable, поддержка режима PCI$X 533 (Mode 2).
Регистры ECC$контроля служат для управления контролем и диагностики. Ре$ гистр ECC Control and Status Register служит для управления ECC$контро$ лем: разрешает ECC в Mode 1 (в Mode 2 ECC обязателен) и разрешает исправле$ ние однократных ошибок. В этом же регистре сообщаются признаки обнаружения ошибки, команды и фазы шины, в которой обнаружена ошибка, а также значения синдрома ошибки и атрибутов транзакции. Регистры ECC First Address, ECC Second Address и ECC Attribute Register содержат адрес, при обращении по которому обнаружена ошибка ECC, и атрибуты транзакции.
Расширенное конфигурационное пространство PCI X
В спецификации PCI$X 2.0 введено расширение конфигурационного пространства одной функции до 4096 байт. При этом стандартный 256$байтный набор регистров
и формат заголовка сохраняется, а дополнительное пространство используется для нужд устройства, включая и размещение описаний дополнительных возможнос$ тей. Для доступа к расширенному конфигурационному пространству может ис$ пользоваться как расширенный вариант механизма 1 (см. далее) с передачей до$ полнительных 4 бит номера регистра по линиям AD[27:24], так и отображение конфигурационных регистров на адрес памяти. В случае отображения на адрес памяти иерархический адрес конфигурационных регистров всех устройств PCI отображается на биты A[27:0], базовый адрес (A[63:28]) зависит от реализации системы и сообщается операционной системе. Все конфигурационные регистры всех устройств всех шин PCI требуют для отображения в памяти область разме$ ром 256 Мбайт. Схема отображения простая и логичная:
A[27:20] — Bus[7:0], номер шины;
A[19:15] — Device[4:0], номер устройства;
A[14:12] — Function[2:0], номер функции;
A[11:8] — Extended Register [3:0], расширение номера регистра;
A[7:0] — Register[7:0], номер регистра.
Устройство должно воспринимать и отрабатывать конфигурационные обращения, выполненные любым способом. При этом разработчик устройства должен помнить, что при попадании устройства в систему с обычной шиной PCI программно до$ ступными окажутся лишь первые 256 байт конфигурационного пространства функ$ ции, так что в расширенное пространство следует помещать только те регистры, которые не используются в стандартном режиме работы PCI.
Для расширенного пространства введен и новый формат описания свойств с уче$ том «длинного» (10$битного) адреса регистра. Расширенный список свойств дол$ жен начинаться с адреса 100h (или же там должна быть структура, не позволяю$ щая трактовать этот фрагмент как начало цепочки). Каждое свойство начинается с 32$битного идентификатора, за которым располагаются регистры, описывающие данное свойство. 32$разрядный идентификатор расширенных возможностей — PCI Extended Capability ID имеет следующую структуру:
биты [15:0] — Capability ID, идентификатор свойства;
биты [19:16] — Capability Version Number, номер версии свойства;
биты [31:20] — Next Capability Offset, смещение следующего идентифика$ тора (относительно нулевого регистра).
Конфигурационное пространство мостов PCI
Заголовок конфигурационного пространства мостов PCI$PCI приведен на рис. 5.3. Регистры в диапазоне адресов 00–17h полностью совпадают с регистрами обычно$ го устройства PCI и описывают поведение и состояние моста на первичной шине. Заметим, что бит 2 регистра команд (Bus Master Enable) управляет возможно$

стью трансляции транзакций с вторичной шины на первичную. Если этот бит об$ нулен, то мост не должен на вторичной стороне отзываться как целевое устрой$ ство в транзакциях записи/чтения памяти и ввода$вывода, поскольку он не смо$ жет транслировать эти транзакции на первичную шину. Регистры BAR описывают только область специфических (зависящих от реализации) регистров моста, к мар$ шрутизации эти регистры отношения не имеют.
Рис. 5.3. Формат заголовка конфигурационного пространства моста PCI/PCI |
(заголовок типа 1) |
Маршрутизирующие свойства моста определяются следующими регистрами (под$ робности см. в главе 4):
Primary Bus Number — номер первичной шины;
Secondary Bus Number — номер вторичной шины (это и номер моста);
Subordinate Bus Number — максимальный номер подчиненной шины;
I/O Base и I/O Limit — регистры, задающие начальный и конечный адрес про$ странства ввода$вывода устройств, расположенных за мостом. Эти регистры задают только старшие 4 бита 16$битного адреса ввода$вывода, так что грану$ лярность выделения адресов составляет 4 Кбайт;
I/O Limit Upper 16 Bits и I/O Base Upper 16 Bits — регистры старшей части адреса ввода$вывода, если используется 32$битная адресация ввода$вы$ вода (на это указывают установленные биты 0 регистров I/O Base и I/O Limit);
Memory Base и Memory Limit — регистры, задающие начальный и конечный адрес пространства памяти, на которую отображены регистры ввода$вывода устройств, расположенных за мостом. Эти регистры задают только старшие 12 бит 32$битно$ го адреса памяти, так что гранулярность выделения адресов составляет 1 Мбайт;
Prefetchable Memory Base и Prefetchable Memory Limit — регистры, зада$ ющие начальный и конечный адрес «настоящей» (допускающей предвыборку) памяти устройств, расположенных за мостом. Эти регистры задают только стар$ шие 12 бит 32$битного адреса памяти, так что гранулярность выделения адре$ сов составляет 1 Мбайт;
Prefetchable Base Upper 32 Bits и Prefetchable Limit Upper 32 Bits —
регистры старшей части адреса «настоящей» памяти, если используется 64$бит$ ная адресация (на это указывают установленные биты 0 регистров Prefetchable Memory Base и Prefetchable Memory Limit).
Регистр Secondary Status аналогичен обычному регистру состояния (Status), но его признаки относятся ко вторичной шине. Единственное отличие — бит 14 (Received System Error) в Secondary Status несет признак обнаружения сиг$ нала SERR# на вторичном интерфейсе, а не его введения данным устройством.
Регистр Expansion ROM Base Address, как и для обычного устройства, задает положение ПЗУ расширения BIOS (если это ПЗУ присутствует в мосте).
Регистры Interrupt Line и Interrupt Pin относятся к прерываниям, вырабаты$ ваемым мостом (если таковые имеются). К линиям прерывания, транслируемым мостом, эти регистры отношения не имеют.
Регистр Bridge Control служит для управления работой моста и индикации не$ востребованных завершений отложенных транзакций:
бит 0 — Parity Error Response Enable, разрешение мосту сигнализировать на вторичный интерфейс об обнаружении ошибки четности адреса и данных;
бит 1 — SERR# Enable, разрешение трансляции сигнала SERR# со вторичного интерфейса на первичный (для трансляции должен быть установлен и одно$ именный бит в регистре команд);
бит 2 — ISA Enable, разрешение поддержки адресации ввода$вывода для шины ISA (вычеркивания последних 768 байт из каждого килобайта диапазона адре$ сов, заданного регистрами I/O Base и I/O Limit);
бит 3 — VGA Enable, разрешение специальной поддержки VGA;
бит 4 — резерв;
бит 5 — Master-Abort Mode, поведение моста в случае, когда, транслируя транз$ акцию, он не получает ответа от целевого устройства: 0 — игнорировать эту си$ туацию, возвращая при чтении FF…FFh и отбрасывая данные записи; 1 — сообщать инициатору транзакции условием Target Abort, а если это невозмож$ но (в случае отправленной записи), подавать сигнал SERR#;
бит 6 — Secondary Bus Reset, подача сигнала RST# на вторичный интерфейс (когда бит сброшен, RST# на вторичном интерфейсе вырабатывается по RST# на первичном);
бит 7 — Fast Back-to-Back Enable, разрешение генерации быстрых смежных транзакций на вторичном интерфейсе;
бит 8 — Primary Discard Timer, таймер отбрасывания результатов отложен$ ных транзакций, инициированных мастером с первичного интерфейса: 0 — ожи$

дание 215 тактов шины, 1 — 210. Отсчет начинается, когда результат отложенной транзакции подходит к голове очереди. Если результат не будет забран масте$ ром (повтором транзакции) за указанное время, результат отбрасывается;
бит 9 — Secondary Discard Timer, таймер отбрасывания результатов отложен$ ных транзакций, инициированных мастером с вторичного интерфейса (анало$ гично предыдущему);
бит 10 — Discard Timer Status, признак отбрасывания отложенных транзак$ ций на любом интерфейсе;
бит 11 — Discard Timer SERR# Enable, разрешение генерации SERR# (на пер$ вичном интерфейсе) по срабатыванию таймера отбрасывания;
биты [12:15] — резерв.
Регистр Secondary Latency Timer управляет поведением моста как мастера на вторичной шине, когда у него отбирают управление шиной (правда, отбирает он сам у себя, поскольку арбитр — часть моста).
Для больших систем с шасси расширения мост может иметь возможность нумера ции шасси и слотов, для чего он должен иметь свойство с Capabilities ID = 04 (рис. 5.4).
Рис. 5.4. Структура нумерации шасси и слотов
Регистр Expansion Slot характеризует положение и вторичную шину моста:
биты [4:0] — Expansion Slots Provided, число слотов на вторичной шине моста;
бит 5 — First in Chassis, признак первого моста в шасси расширения. Указы$ вает и на наличие шасси и, следовательно, использование регистра номера шас$ си. Если в шасси имеется несколько мостов, то первым является либо мост с минимальным номером первичной шины (остальные будут для него подчинен$ ными), либо с минимальным номером устройства (остальные будут того же ранга, но их вторичные шины будут иметь большие номера);
биты [7:6] — резерв.
Регистр Chassis Number задает номер шасси, в котором находится данный мост (0 — шасси, на котором находится процессор, выполняющий конфигурирование).
Программная генерация конфигурационных и специальных циклов
Поскольку конфигурационное пространство PCI обособлено, в главный мост при$ ходится вводить специальный механизм доступа к нему командами процессора, инструкции которого «умеют» обращаться только к памяти или вводу$выводу. Этот же механизм используется и для генерации специальных циклов. Для PC$совме$

стимых компьютеров предусмотрено два механизма, из которых в спецификации PCI 2.2 оставлен только первый (Configuration Mechanism #1) как более прозрач$ ный. Номер механизма, которым пользуется конкретная системная плата, можно узнать путем вызова PCI BIOS. Для доступа к расширенному конфигурационно$ му пространству устройств PCI$X эти механизмы непригодны (доступ к нему воз$ можен только через прямое отображение на память, см. ранее).
Конфигурационные циклы адресуются к конкретному устройству (микросхеме PCI), расположенному на шине с известным номером. Декодированием номера шины и устройства, для которого должен быть сформирован сигнал выборки IDSEL (единичное значение), занимаются мосты. Номер функции и адрес регистра деко$ дируется самим устройством.
Для работы механизма № 1 в пространстве ввода$вывода зарезервированы 32$бит$ ные порты с адресами 0CF8h и 0CFCh, входящие в главный мост. Для обращения к конфигурационному пространству в порт CONFIG_ADDRESS (RW, адрес CF8h) заносят 32$разрядный адрес, декодируемый в соответствии с рис. 5.5. После зане$ сения адреса обращением к порту CONFIG_DATA (RW, адрес CFCh) можно прочи$ тать или записать содержимое требуемого конфигурационного регистра. В регистре CONFIG_ADDRESS бит 31 является разрешением формирования конфигурационных и специальных циклов. В зависимости от номера шины, указанного в этом регист$ ре, главный мост генерирует конфигурационные циклы одного из двух типов:
для обращения к устройству, находящемуся на нулевой шине (подключенной к главному мосту), используется цикл типа 0 (см. рис. 2.2, а–в на с. 51). В этом цикле в фазе адреса на линии AD[31:11] мост помещает позиционный код выбо
ра устройства, на AD[10:8] — номер функции, на AD[7:2] — адрес регистра, а биты 1:0 = 00 являются признаком цикла типа 0. В PCI$X в фазе адреса на линии AD[15:11] помещается номер устройства; расширенное конфигурационное про$ странство через данный механизм не доступно;
для обращения к устройству, находящемуся на ненулевой шине, используется цикл типа 1. Здесь главный мост передает всю адресную информацию из CONGIG_ADDRESS (номер шины, устройства, функции и регистра) на нулевую шину PCI, обнуляя старшие биты (31:24) и устанавливая в битах 1:0 признак типа «01» (рис. 2.2, г).
Рис. 5.5. Формат адреса в регистре CONFIG_ADDRESS
Специальный цикл генерируется при записи в CONFIG_DATA, когда в регистре CONGIG_ADDRESS все биты [15:8], единичные, а биты [7:0] — нулевые; номер шины, на которой формируется цикл, задается битами [23:16]. В специальном цикле ад ресная информация не передается (он широковещательный), но путем задания но$ мера шины можно управлять его распространением. Если хост генерирует специ$ альный цикл, указав нулевой адрес шины, то этот цикл будет выполнен только на

главной шине и всеми остальными мостами распространяться не будет. Если ука$ зан ненулевой адрес шины, то главный мост сформирует цикл конфигурационной записи типа 1, который в специальный цикл будет преобразован только мостом на шине назначения. Специальный цикл, генерируемый ведущим устройством шины, действует только на шине этого устройства и не распространяется через мосты. Если требуется сгенерировать этот цикл на другой шине, то ведущее устройство может это сделать посредством записей в регистры CONGIG_ADDRESS и CONFIG_DATA1.
Для работы устаревшего и неудобного механизма № 2 в пространстве ввода$выво$ да зарезервированы два 8$битных порта с адресами 0CF8h и 0CFAh, входящие
вглавный мост. Этот механизм использует отображение конфигурационного про$ странства устройств PCI на область C000–CFFF пространства ввода$вывода. По$ скольку этой области (4096 портов) недостаточно для отображения конфигура$ ционного пространства всех устройств всех шин PCI, формирование адреса выполняется весьма замысловатым образом. В регистре CSE (Configuration Space Enable) с адресом 0CF8h биты 7:4 являются ключом разрешения отображения, а би$ ты [3:1] несут номер функции, к пространству которой адресуются обращения. Бит 0 (SCE — Special Cycle Enable) при единичном значении вместо конфигурацион$ ных циклов вызывает формирование специального цикла. При нулевом ключе область портов C000–CFFFh остается нормальной частью пространства ввода$ вывода, а при ненулевом на нее отображаются конфигурационные пространства указанных функций 16 возможных устройств2. При обращении к конфигурацион$ ному пространству устройств нулевой шины чтение или запись двойного слова
впорт по адресу C000–CFFCh генерирует конфигурационный цикл, в котором из адреса порта биты [2:7] поступают на шину AD[2:7] как индекс регистра конфигу$ рационного пространства, а биты [11:8] декодируются в позиционный код выбора устройства (линии IDSEL) на линиях AD[31:16]. Номер функции на линии AD[10:8] поступает из регистра CSE, линии AD[1:0] нулевые. Для обращения к устройствам ненулевой шины служит регистр перенаправления (Forward Register) с адресом 0CFAh, в который помещают номер шины (по сбросу этот регистр обнуляется). Если номер шины ненулевой, то генерируется цикл типа 1, в котором номер функ$ ции поступает из регистра CSE, младшие 4 бита номера устройства поступают с би$ тов адреса (AD15 = 0), а номер шины — из регистра перенаправления (биты AD[1:0] = = 01 и AD[31:24] = 0 формируются аппаратно).
Для генерации специального цикла по этому механизму в регистре CSE устанавли$ вается ненулевой ключ, номер функции 111 и SCE = 1, после чего выполняется запись по адресу порта CF00h. В зависимости от содержимого регистра перена$ правления будет сгенерирован специальный цикл или конфигурационный цикл типа 1, который на целевой шине будет преобразован в специальный.
1Это наводит на крамольные мысли о возможности конфигурирования устройств PCI не только хос$ том, пользуясь данным конфигурационным механизмом. Однако такие действия возможны только после конфигурирования мостов, так что начальное конфигурирование остается все же прерогативой хоста.
2Логичнее было бы отобразить все функции одного устройства, для чего потребовалась бы даже вдвое меньшая область.