IEEE1284 (SPP, ECP, EPP)

Зміст

Принтерний порт вчора та позавчора

Паралельний порт - невід'ємна характеристика персонального комп'ютера, властива як першим реалізаціям IBM/PC, і сучасним рішенням. Відсутність паралельного порту знижує функціональну привабливість системи і однозначно сприймається як неповноцінність, навіть якщо підключення відповідних пристроїв на порядку денному не стоїть.

Чим привабливі паралельні інтерфейси? Очевидно, не тільки тим, що передача кожного біта виконується одночасно окремими сигнальними лініями. Сильна сторона паралельного інтерфейсу - у способі управління, коли потік інформації, що передається, контролюється за допомогою керуючих сигналів. Така архітектура дозволила створити широкий спектр пристроїв різноманітного призначення з уніфікованим апаратним інтерфейсом та унікальним програмним забезпеченням. Основоположниками паралельної обробки даних були пристрої рядкового друку, а просто принтери. Тому назва Line Printer (LPT) надовго визначила призначення інтерфейсу, а принтерний порт став синонімом існуючої назви.

Іншу назву для паралельного порту, як це часто трапляється, дав один із розробників роз'єму – корпорація Centronics Data Computer. Власне, сам роз'єм розроблений компанією Amphenol Interconnect Products, а Centronics Data Computer, змінивши призначення сигналів, запропонувала широкому колу користувачів. Зараз, коли існують найрізноманітніші пристрої для підключення до порту та застосовується широкий спектр різноманітних роз'ємів, назви Centronics та LPT міцно вкоренилися у термінології фахівців.

Водночас неправильно вважати, що лише трьома портами обмежено можливості ПК. Хорошою ілюстрацією може бути платарозширення KW-508E від Kouwell Electronic, де доступні порти з LPT1 до LPT6. Один із аспектів, пов'язаних із роботою паралельних портів, - використання переривань. Не секрет, що обслуговування переважної більшості принтерів виконується через стандартні регістри принтерного порту - регістри даних, статусу і команд. Це дозволяє виконати прийом та передачу даних без використання переривань роботи центрального процесора. Але надто міцно вкоренився стереотип, що зв'язує воєдино порт і IRQ. Звернувшись до посібника з експлуатації персонального комп'ютера, користувач напевно зустріне таблицю, де з LPT1 буде пов'язаний IRQ7, а порту LPT2 призначається IRQ5. Наголосимо, що використання IRQ диктується особливостями підключених периферійних пристроїв. Якщо з будь-яких причин небажано постійно аналізувати готовність принтера, що працює у фоновому режимі, може знадобитися обслуговування паралельного порту за допомогою переривань. Але, як було сказано вище, здебільшого зовнішній пристрій не вимагає запиту на переривання.

Режими передачі. Історія

Щоб простежити еволюцію паралельного інтерфейсу, корисно звернутись до його історії. У середині 60-х головним ідеологом передачі до принтера була корпорація Centronics Data Computer. Як і запропонований корпорацією роз'єм, так і спосіб приєднання периферійних пристроїв надовго став фактичним стандартом у цій галузі. Сумісність зі "стандартом" Centronics передбачала передачу даних паралельним потоком за восьмибітною схемою і лише в одному напрямку.

Слід зазначити, що слово стандарт не випадково взято в лапки. Справа в тому, що інтерфейс тих років складався також з деяких інших сигналів, що управляють, число яких моглозмінюватись в залежності від тієї чи іншої моделі принтера. З цієї причини всі виробники устаткування паралельної передачі могли собі дозволити модифікувати сигнали управління на власний розсуд. Ось чому, незважаючи на те, що слово Centronics набуло широкого поширення, не існує і не могло існувати однойменного стандарту. Але не можна не відзначити позитивний ефект як поява поняття сумісності.

Більшість питань, пов'язаних із розумінням роботи паралельного порту, висвітлено у документі IEEE1284 "Стандартний метод передачі даних для периферійних пристроїв, підключених до персонального комп'ютера, з використанням двонаправленого паралельного інтерфейсу". Сумісність із Centronics означає, що збігаються всі основні лінії інтерфейсу, а саме:

  • вісім ліній передачі даних від системи до принтера;
  • п'ять статусних ліній передачі інформації від принтера системі;
  • чотири лінії управління передачі керуючої інформації від системи принтеру.

З появою 1981 року перших персональних комп'ютерів IBM/PC сенс сумісності з інтерфейсом Centronics значно розширився, і з'явилося поняття PC-сумісного паралельного інтерфейсу. Підключення принтерів до PC хоч і виконувалося з дотриманням "стандарту" Centronics, але зазнало значних змін, в основному з ініціативи виробників друкувальної техніки.

По-друге, кількість ліній управління, що надходять від системи до принтера, було доповнено двома дуже важливими – Select In та Autofeed. Призначення трьох статусних ліній, якими надходила інформація від принтера до системи, було перевизначено.

І по-третє, змінилися часові характеристики сигналу Acknowledge. Його активна фаза була зрушена вактивну фазу сигналу Busy, і перехід обох сигналів пасивний стан виконувався одночасно. Але через те, що PC інтерфейс залишався сумісним з Centronics, співвідношення сигналів Acknowledge і Busy ігнорувалося, а передача даних виконувалася тільки відповідно до стану сигналу Acknowledge.

Режими передачі. Стандарт

Розглянемо, як виконується взаємодія хост-системи та пристрою, підключеного до неї за паралельним інтерфейсом. Початковий стан інтерфейсу такий, що обмін можливий лише одному напрямку. Сумісність пристроїв визначається саме підтримкою цього режиму, який отримав назву Compatibility.

У режимі Compatibility здійснюється ініціалізація як системного контролера введення-виводу, і периферійних пристроїв - принтерів, сканерів, плотерів тощо. Мета процедури проста: визначити можливості кожного з учасників обміну, щоб вибрати прийнятний режим роботи. Відомі такі комунікаційні режими:

  • режим SPP (Standard Printer Port);
  • Режим ECP (Extended Capabilities Port);
  • Режим EPP (Enhanced Parallel Port).

Допитливий погляд читача може помітити, у списку немає вже згаданого режиму Compatibility. З цього не випливає, що його немає в самому стандарті. Просто реалізація стандарту настільки апаратно залежить, що вибір перерахованих вище комунікаційних режимів визначається елементною базою та BIOS материнської плати. Тому користувач у CMOS Setup системного BIOS виявить лише три режими або їх комбінацію. Вибір однієї установки регламентуватиме роботу паралельного порту до того моменту, поки не буде призначено інший режим.

Як не дивно, але у згаданому вище документі немає жодної згадки про режимSPP. Насправді, виробники BIOS для материнських плат під абревіатурою SPP розуміють групу режимів, регламентованих стандартом. До цього числа, крім односпрямованого режиму Compatibility, входить також двонаправлений режим Nibble, що забезпечує реверсивну передачу даних за 4-бітною схемою. Зупинимося докладніше кожному з перелічених режимів.

Як сказано вище, цей режим призначений для передачі даних в одному напрямку від системного контролера паралельного порту до периферійного пристрою. Для керування принтером контролер задіює також чотири додаткові лінії Strobe, Autofeed, Initialize, Select In, якими передаються управляючі команди.

Відповідно до стандарту, режим Compatibility забезпечує сумісність усіх пристроїв, які працюють із паралельним інтерфейсом. Під цим розуміється те, що саме з цього режиму починаються всі фази ініціалізації старших режимів. Крім того, повернення до режиму Compatibility відбувається як у разі неможливості проініціалізувати "старший" режим, так і при помилках двонаправленої передачі даних.

Односпрямованість режиму Compatibility зовсім не означає, що принтер або інший пристрій не можуть передавати інформацію хост-контролеру. Для цієї мети призначено п'ять статусних ліній - так званий зворотний або реверсивний канал, що забезпечує систему інформацією стан підключеної периферії.

Значення зворотного каналу важко переоцінити. Саме його наявність дозволяє перевести роботу паралельного порту з режиму Compatibility у двонаправлений режим передачі - Nibble.

Цей режим дозволяє на програмно-апаратному рівні реалізувати зворотний (реверсивний) канал передачі даних від периферійного пристрою до хост-контролера черезстатусні лінії паралельного порту. Зворотна передача даних виконується чотирибітними посилками, а упаковку даних з двох посилок байт виконує драйвер паралельного порту, який ініціював такий режим передачі. Як то кажуть повільно, але впевнено.

Як і Compatibility, режим двонаправленої передачі даних Nibble використовує сигнальні лінії без перепризначення напрямку передачі та вважається канонічним серед розробників периферійних пристроїв. Незважаючи на те, що існує комунікаційний протокол Byte, що забезпечує більш ефективну передачу даних реверсивним каналом, режим Nibble залишається актуальним до цього дня і підтримується програмно всіма сучасними операційними системами.

Бажання досягти рівних швидкостей у прийомі та передачі даних за паралельним інтерфейсом призвели до створення режиму Byte. На відміну від режиму Nibble, обмін даними в обох напрямках виконується по тих самих лініях, а механізм перемикання напрямку будується на підставі аналізу стану статусних сигналів.

На жаль, у цьому режимі на апаратному рівні не передбачено захисту від неправильного вибору напряму передачі. Турбота про злагоджену роботу каналу зв'язку лягає на програмне забезпечення. З цієї причини Byte не набув належного поширення і обмежено підтримується операційними системами. Наприклад, у Windows 9x немає вбудованих драйверів паралельного порту, орієнтованих підтримку режиму Byte. Можливо, певну роль зіграло походження цього комунікаційного протоколу, що вперше з'явився у системах IBM PS/2. Принаймні в операційній системі OS/2, у розробці якої компанія Microsoft брала участь на початковому етапі, така підтримка є.

Історичне коріння визначило і другеназва - PS/2 Bidirectional Parallel Port (BPP), яка хоч і не згадується у стандарті, проте не втратила актуальності досі. Принаймні драйвери сторонніх виробників підтримують режим Byte і оперують цими поняттями.

Іншою особливістю режиму стала можливість мінімізувати функції управління, необхідні при передачі даних. На відміну від протоколів Compatibility, Nibble та Byte, коли драйверу необхідно було визначити статус периферійного пристрою, його готовність, забезпечити передачу даних та отримати підтвердження про доставку, у режимі EPP все значно спростилося.

Завдяки апаратному управлінню потоком даних (Flow Control) робота драйвера зводиться до визначення готовності пристрою та обміну даними. Всю роботу, пов'язану із затримками, стробами та перевірками, яку в нижчих протоколах виконує програмне забезпечення, бере на себе апаратна частина хост-контролера.

Цей спосіб передачі був розроблений компаніями Hewlett-Packard і Microsoft. Зважаючи на те, що в розробці брали участь провідні фахівці в галузі апаратного забезпечення та реалізації операційних середовищ, протокол вийшов потужним та ефективним. Саме тому він набув такого широкого поширення і відразу був включений до IEEE1284, ставши тим самим стандартом de facto для високошвидкісної передачі даних через периферійний паралельний інтерфейс комп'ютера.

На жаль, така велика кількість можливостей і складність апаратної реалізації часто призводить до того, що багато розробників периферійних пристроїв відмовляються від підтримки ECP на користь менш швидкісних, але простих протоколів із сімейства SPP. Слід зазначити також, що у сучасних реалізаціях мікросхем Super I/O який завжди підтримується вся сукупністьможливостей ECP-протоколу.

Розглядаючи високошвидкісні протоколи, потрібно не забути про таку складову передачі як спосіб обміну даними чіпсету з мікросхемами введення-виведення. Якщо протокол простий і відносно низькошвидкісний (як Compatibility, Nibble або Byte), то обмін здійснюється за давнім рівнем, командами IN і OUT. У цьому випадку потрібна мінімальна драйверна підтримка з боку операційної системи, а швидкість обміну з паралельним інтерфейсом залежить лише від часу доступу до шини, з якою "пов'язана" мікросхема введення-виводу.

При підключенні Super I/O до шини ISA максимальний час доступу до портів варіюється від 2 до 2.5 мікросекунд, використання LPC збільшує це значення до 3.5 мікросекунд, для шини PCI – від 0.5 до 0.7 мікросекунд. Враховуючи те, що передача даних відбувається не за одну команду введення-виводу, швидкість передачі становить 200-500 KBps для ISA та LPC і від 600 KBps до 2 MBps для PCI. Для більшості периферійних пристроїв - це принтери, сканери, програматори, пристрої захисту даних - а також для надзвичайної множини дивовижних пристроїв з паралельним інтерфейсом цих швидкостей вистачає навіть з надлишком.

Що ж до високопродуктивних периферійних пристроїв (принтерів для малої поліграфії, повноформатних сканерів, пристроїв стеження та інших машин для "перемелювання" даних), то тут без ECP не обійтися.

Під час передачі потоків даних зі швидкістю 1 MBps і від стає актуальним відсоток завантаження центрального процесора. Для його зменшення зазвичай використовують три взаємно не виключають механізму: додаткові буфери FIFO, спосіб обміну даними з використанням DMA каналу, використання більш продуктивної системної шини. Це ускладнює драйверну підтримку, але значнозбільшує швидкість обміну. У найбільш швидкодіючих реалізаціях паралельних інтерфейсів пікова швидкість може досягати 25-30 MBps, що ставить цей спосіб передачі на одну планку з його сучасними побратимами.