Важливість взаємодії між різними компонентами і пристроями в комп'ютерній техніці складно переоцінити. Без такої взаємодії просто не було б самої комп'ютерної техніки. Але, з самого початку розвитку комп'ютерів кожен виробник вирішував (а подекуди і продовжує вирішувати) ці проблеми по-своєму. Як гриби після дощу зростала кількість всіляких шин і роз'ємів, по яких переганялися дані, як всередині комп'ютера, так і зовні. Але, якщо така різноманітність рішень всередині залізної коробки йшла (і йде) на благо, стимулюючи технічний прогрес, то з периферією все відбувається навпаки. Море різних шин і роз'ємів, якими периферія може підключатися до комп'ютерів не вигідно нікому - ні виробникам самих комп'ютерів, ні виробникам периферії. Стало ясно, що потрібні універсальні шини. І вони з'явилися. На жаль, загальний безлад (коли кожен тягнув ковдру на себе), не минув і цю область. Тому, в середині дев'яностих років, поглянувши на задню стінку комп'ютера, можна було побачити купу різноманітних роз'ємів: COM, LPT, VGA, PS/2 та деякі інші. Кожен з цих роз'ємів мав свої недоліки, вимагав від розробників окремої реалізації і вимагав свою частку аж ніяк не безмежних комп'ютерних ресурсів. Необхідність дійсно універсального роз'єму назріла, і розробники з ентузіазмом взялися за роботу. Так, наприклад, відома фірма Intel з середини дев'яностих років почала агресивно проштовхувати на ринок своє дітище - USB (Universal Serial Bus). У порівнянні з роз'ємами, що існували на той час, USB став справжнім проривом, забезпечуючи здавалося б, все, про що можна було мріяти. Але це тільки здавалося:-) У тіні галасу навколо USB тоді мало хто помітив народження ще одного формату, що використовує послідовну шину (Serial Bus), який вмів не менше (а то й більше), ніж його широко розрекламований конкурент. Це IEEE 1394.
З чого все починалося
Історія IEEE 1394, тепер відомого також як FireWire і як i-Link, почалася ще в 1986 році, коли члени Microcomputer Standards Committee (Комітет зі Стандартів Мікрокомп'ютерів) захотіли об'єднати існуючі в той час різні варіанти послідовної шини (s Новий проект був покликаний об'єднати існуючі на той час напрацювання: IEEE 1014 VME, IEEE 1296 Multibus II, и IEEE 896 FutureBus+®. Завданням розробників стало створення універсального I/O (Input/Output) зовнішнього інтерфейсу, придатного як для роботи з мультимедіа, так і для роботи з накопичувачами даних (Mass Storage Device), не кажучи вже про більш прості речі - на кшталт принтерів, сканерів, тощо. Результатом праці розробників став остаточно затверджений 12 грудня 1995 року 10 мегабайтний документ під назвою 1394-1995.pdf, який описував IEEE 1394. У назві стандарту немає ніякого таємного сенсу - просто це був 1394 за рахунком стандарт, випущений комітетом. Інтерфейс, який описувався в цьому документі був воістину революційним. Він забезпечував просто неймовірні на ті часи швидкості і зручність. Провідну роль у розробці стандату зіграла, була Apple, яка дала йому ім'я FireWire, тому немає нічого дивного в тому, що вона відразу ж зробив ставку на використання цього стандарту в своїх комп'ютерах (як зазвичай, Apple пішов своїм шляхом, і, поки користувачі PC заглядали в рот Intel з USB, що нещодавно з'явився, зробив ставку Хоча і USB не був забутий. Справжньою лебединою піснею для IEEE 1394 стала поява аматорських DV камер. Ще при їх розробці стало ясно, що, крім IEEE 1394 в якості зовнішнього інтерфейсу для них нічого не підходить. Тому Digital VCR Conference (DVC) вирішила використовувати IEEE 1394 як стандартний інтерфейс для цифрових камер. Першою ластівкою стала Sony c DCR-VX1000 і DCR-VX700 цифровими камерами, які вперше мали IEEE 1394 вихід. Але, незабаром за Sony підтягнулися й інші виробники. І сьогодні IEEE 1394 практично монополізував цей ринок, що швидко розвивається. Сьогодні будь-яка, вироблена сьогодні DV камера в обов'язковому порядку оснащується IEEE 1394 інтерфейсом.
Свою лепту в розвиток IEEE 1394 внесла і Texas Instruments, яка організувала масове виробництво дійсно дешевих мікросхем для реалізації IEEE 1394 інтерфейсу, що зіграло величезну роль у бурхливому зростанні кількості IEEE 1394 контролерів у персональних комп'ютерах.
Незважаючи на такий успіх нового стандарту (він виявився затребуваним ще до виходу остаточної специфікації), розробники не стояли на місці. Вже в 2000 році вийшла 1394a-2000 версія протоколу, відразу ж з ентузіазмом сприйнята виробниками. А сьогодні розробляється P1394b.
Що ж такого хорошого в IEEE 1394?
Як вже говорилося, розробники спиралися на випущені раніше стандарти, і в IEEE 1394 увійшло все краще, що існувало на той момент. З головних особливостей IEEE 1394 можна відзначити:
- Послідовна шина замість паралельного інтерфейсу дозволила використовувати кабелі малого діаметру і роз'єми малого розміру.
- Підтримка гарячого з'єднання і вимкнення всього чого завгодно.
- Харчування зовнішніх пристроїв через IEEE 1394 кабель.
- Висока швидкість
- Можливість будувати мережі з різних пристроїв і найрізноманітнішої конфігурації.
- Простота налаштування і широта можливостей. Через IEEE 1394 може працювати найрізноманітніше обладнання, причому користувачеві не доведеться мучитися питанням, як це все правильно підключити.
- Підтримка асинхронної і синхронної передачі даних.
На останньому пункті необхідно зупинитися детальніше.
Асинхронна передача. Asybnchronous, від грецького Asyn - інший і Chronous - час. Це означає, що дані обов'язково будуть доставлені в цілості і збереження, нехай і не завжди в строк. Отримання кожного пакета перевіряється і підтверджується, якщо пакунок не дійшов, передача буде повторена заново.
Синхронна передача. Isochronous, від грецького Iso - той же, такий же і Chronous - час. Це означає, що швидкість і безперервність потоку важливіше, ніж збереження даних. Якщо пакет прийшов з помилкою, або не прийшов взагалі, це навіть не перевіряється, не кажучи вже про те, щоб переслати пакет заново. Цей тип передачі відмінно підходить для мультимедійних додатків, де втрата будь-якої частини інформації менш критична, ніж більша затримка.
Як це все працює?
IEEE 1394 ділиться на кілька рівнів. Виглядає це так:
Внизу знаходиться фізичний рівень (Physical Layer). Апаратна складова, яка відповідає за переклад сигналів, отриманих по кабелях у зрозумілу комп'ютеру форму (і навпаки - за переведення даних в електричні сигнали, що йдуть по кабелях). Ця ж частина відповідає за управління фізичним каналом, тобто визначає, має пристрій займати канал прямо зараз, або має почекати. Крім того, цей же рівень забезпечує інтерфейс для кабелів і роз'ємів і відповідає за такі процеси:
Інтерфейс середовища (Media Interface) - відповідає за стан сигналу, що передається по кабелях.
Арбітраж (Arbitration) - різні IEEE 1394 пристрої, включені в мережу розбираються між собою, хто і в якому порядку може діяти.
Кодування/Декодування (Encode/Decode) - переклад даних в електричні сигнали, які можуть передаватися по кабелях і назад.
Рівнем вище розташований рівень каналу (Link Layer). Сюди доставляються вже готові пакети даних. Саме цей рівень відповідає за пересилання даних вгору і вниз, тут відбуваються наступні процеси:
Приймач пакунків (Packet Receiver) - організовує і відповідає за прийом пакетів даних.
Передавач пакунків (Packet Transmitter) - організовує і відповідає за передачу пакетів даних.
Контроль циклів (Cycle Control) - пакети передаються не поодинці, а циклами. Тут і здійснюється контроль над цими циклами.
Ці два рівні реалізовані в «» залізі «», тобто виконуються апаратно. Вони повністю відповідають за формування сигналу з даних, формування даних з сигналу, і прийом/передачу в потрібний час і в потрібне місце. Тому, тільки цих двох рівнів і вистачає при синхронній передачі, коли ніякого контролю над тим що передається і виходить не потрібно. При асинхронній передачі це не так, і там в дію вступає:
Рівень мережі (Transaction Layer). На цьому рівні відбувається перевірка отриманих даних. Якщо все нормально (жоден пакет не загубився або не пошкодився), дані відправляються споживачеві. Якщо виявлено помилку - повертаємося на фізичний рівень і повторюємо все спочатку, поки дані не будуть отримані без помилок.
Всі рівні (в тому числі і перші два) контролюються firmware, і цей процес називається менеджмент послідовної шини (Serial Bus management).
Такі процеси відбуваються в кожному IEEE 1394 пристрої, і два будь-яких пристрої утворюють між собою з'єднання типу точка-точка (point-to-point). Але, крім цього, IEEE 1394 дозволяє об'єднувати безліч таких пристроїв і з'єднань в одну логічну мережу. Для цього фізичний рівень (physical layer) дозволяє мати більше одного фізичного інтерфейсу на одному пристрої.
Розгляньмо детальніше, як різні пристрої в одній логічній мережі розбираються, хто, коли, і що повинен робити.
Ініціалізація мережі відбувається в кілька етапів:
Скидання (reset) - відбувається щоразу, коли потрібно. Причиною для скидання може стати, наприклад, фізична зміна конфігурації мережі (підключили новий пристрій або вимкнули старий). Зі скидання шини і починається процес ініціалізації мережі. Конфігурація, сформована при цьому, залишається дійсною і незмінною до наступного скидання шини.
Ідентифікація дерева (Tree identification) - підключені пристрої з'ясовують, які з них батьківські, а які дочірні, і формують логічне дерево. Визначається кореневий пристрій для всього дерева.
Примітка: Перше, що визначає пристрій після включення, це скільки підключених портів він має. Один (leaf) або декілька (branch). Потім визначається батьківські (parent) і дочірні (child) пристрої (який до якого підключено). На основі цих даних будується дерево і визначається кореневий пристрій.
Самоідентифікація (Self identification) - кожен з пристроїв отримує свій власний ID вузла всередині дерева, і з'ясовує на яких швидкостях можуть працювати його безпосередні сусіди. Топологія повністю визначена. Для адресації використовуються принципи, описані в IEEE 1212. Це означає 64 бітову пряму адресацію (48 біт на вузол, решта 16 використовуються для ідентифікації шини), що дозволяє організувати ієрархічну адресацію для 63 вузлів на 1023 шинах. Єдине обмеження - між двома пристроями, які хочуть спілкуватися між собою, має бути не більше 16 «» хопів «» (сегментів).
Ініціалізація мережі завершена, в дію вступає нормальний арбітраж - робочий режим роботи мережі. Пристрої обмінюються даними, а кореневий пристрій стежить за тим, щоб вони один одному не заважали. Відбувається це так:
Пристрій, який хоче почати передачу, спочатку надсилає запит своєму батьківському пристрою. Батьківський пристрій, отримавши запит, забороняє передачу всім іншим дочірнім (в один момент обробляється тільки один запит) і, в свою чергу, передає запит далі, своєму батьківському пристрою, де все повторюється. У підсумку запит доходить до кореневого пристрою, який, у свою чергу, дозволяє передачу тому пристрою, чий запит прийшов першим. Всім іншим передача забороняється. Таким чином, якщо два пристрої одночасно пошлють запит на передачу даних, то відповідь залежатиме від того, чий запит першим досягне кореневого пристрою. Воно виграє арбітраж і отримує право почати передачу. Пристрій, який програв. не отримавши дозволу на передачу, змушене чекати, поки виграло не звільнить шину.
Все це відбувається на фізичному рівні (physical layer). Після того, як дозвіл на передачу даних отримано і потрібно почати передачу даних, у справу вступає рівень каналу (link layer). Як вже говорилося, саме він формує пакети і визначає - коли і скільки пакетів має відсилатися. Передача даних починається з запиту готовності до прийому пристрою, для якого призначені дані, і, отримавши підтвердження готовності, починає передачу. Дані йдуть пакетами, між якими є проміжки (gap). Типовий пакет даних 256 байт, або 2048 біт, з яких 160 біт припадає на заголовок. Таким чином, загальна ефективність (скільки в пакеті дійсно даних, а не службової інформації) досить висока і чим більше пакет, тим вища ефективність). Заголовок містить інформацію про відправника, одержувача і CRC. Після пакету йде невеликий проміжок, довжиною менше 0.75 msec (acknowledge gap), після чого одержувач повинен вислати 8-ми бітовий блок даних, що підтверджує, що пакет отримано в цілості і збереження (ack packet). Потім слід більш довгий проміжок, довгий більше 1 msec, що розділяє пакети (subaction gap). І так далі - пакет, acknowledge gap, що підтверджує байт (ack), subaction gap.
Для того, щоб один пристрій, почавши передавати дані, не зайняв весь канал, не залишивши сусідам жодних шансів почати передачу, поки він не закінчить, введено поняття fairness interval. Протягом одного fairness interval кожен пристрій в шині отримує одну можливість передати свої дані. Після того як дозвіл отримано (арбітраж виграний), і порція даних передана, пристрій повинен чекати кінця fairness interval і початку наступного циклу, перш ніж він знову отримає можливість передати наступну порцію даних. Закінчується fairness interval так званим reset gap, який довший за subaction gap, і викликає скидання всієї шини.
Для синхронної передачі використовується дещо інша методика. Дані передаються «пострілами», довжина кожного 125 мsec. Таких пострілів проводиться стільки, скільки дозволяє канал. Навіть на одинарній (98.304 Mbit/sec) швидкості за один такий цикл передається до 1000 байт. Чим вища швидкість, тим більше даних встигає пройти. При цьому, при синхроній передачі абсолютно не важливо, отримав приймаючий пристрій дані чи ні. Пакунки просто йдуть один за одним, розділені subaction gap, ніяких ack packet ніхто не чекає. Для того, щоб пристрій зміг розібратися, де синхронні, а де асинхронні дані, subaction gap при синхронній передачі коротше. Це дозволяє комбінувати в одному сеансі синхронні дані з асинхронними. Однак, в синхроному режимі одному пристрою ніколи не дозволять захопити весь доступний канал. На синхроні дані може припадати не більше 85% доступного каналу, причому один пристрій не може зайняти більше 65%.
Як все це виглядає?
IEEE 1394 дозволяє передавати дані на швидкості 98.304 Mbit/sec. Крім цього, можлива передача в 2-x (196.608 Mbit/sec) і 4-x (393.216 Mbit/sec) режимах.
Спочатку з'явилися чіпи, які здатні працювати тільки на 100 Мбитах (хоча специфікація дозволяла і більше), але 200 і 400-мегабітні чіпи не змусили себе довго чекати. Незважаючи на такий безлад, користувачі не повинні відчувати ні найменших незручностей (це була одна з обов'язкових умов, яка ставилася перед розробниками). Тому IEEE 1394 дозволяє в одній мережі використовувати різні пристрої одночасно. Причому користувачеві не доведеться турбуватися про те, що він може неправильно їх підключити. Підключати можна що завгодно, і в яких завгодно поєднаннях, залізки самі розберуться, хто з ким і на якій швидкості може "розмовляти" ".
Для роботи на таких високих швидкостях потрібні були відповідні кабелі. Кабель для IEEE 1394 досить складна система, і спаяти його самостійно (що можливо для USB) навряд чи можливо. Дані передаються по двох віких парах, кожна з яких окремо екранована. Для нагальної надійності, додатково екранується і весь кабель. Крім двох сигнальних пар, в кабелі передбачені дві живильні жили, які можуть забезпечити будь-який зовнішній пристрій струмом силою до 1.5 А і напругою до 40 V. У розрізі кабель виглядає так:
Вибору роз'єму, до якого повинні підключатися IEEE 1394 пристрої, було приділено найпильнішу увагу, адже від роз'єму в чималій мірі залежить те, наскільки зручно буде користуватися новим інтерфейсом. Роз'єм повинен бути невеликим, але в той же час міцним, повинен забезпечувати надійне з'єднання, але в той же час легко з'єднуватися-від'єднуватися навіть наосліп. Всім вимогам задовольнив роз'єм, який використовується в Nintendo GameBoy.
Як видно з фотографії, всі контакти виведені в середину роз'єму, а зовні захищені товстим ободком з твердої пластмаси. Надійність цієї схеми доведена багатьма GameBoy, нещадно розтерзаними дітьми різного віку.
Але навіть такий просунутий і зручний роз'єм не всіх задовольнив. Справді, навіщо нам тягнути за собою дві живильні жили там, де підключений пристрій має власне харчування. Дійсно нема чого, вирішили розробники і на світ з'явився новий, чотириконтактний роз'єм. Цей новий роз'єм хоч і не забезпечував такого надійного з'єднання як традиційний шестиконтактний, зате дозволяв заощадити місце, що важливо на портативних пристроях. Крім цього, кабель без двох додаткових жив, відповідальних за харчування, можна зробити ще тонше і дешевше. Особливо "до смаку" "чотириконтактні роз'єми припали виробникам компактних DV камер, і саме їх можна побачити на більшості таких камер.
Виробники материнських плат включають у свої останні рішення підтримку обох роз'ємів:
брекет з комплекту материнської плати Asus P4B-533-E
Як це все розвивалося, і що ми маємо сьогодні
Нічого ідеального в світі немає, і IEEE 1394 не вийшов ідеальним. Тому, випустивши першу версію стандарту в 1995 році, команда розробників не стала шанувати на лаврах, а продовжила роботу над наступними версіями стандарту. Так, вже в 2000 році вийшла 1394а версія стандарту.
Наступна сторінка
⇣ Зміст
- Сторінка 1 - Стр.1 - перша
- Сторінка 2 - Стр.2 Стандарти 1394а, 1394b
Коментувати ()
Якщо Ви помітили помилку - виділіть її мишею і натисніть CTRL + ENTER.
Матеріали за темою
Огляд материнської плати GIGABYTE X570 AORUS PRO: час збирати потужні ПК на Ryzen
Огляд материнської плати ASRock Z390 Steel Legend: простота не на шкоду
Огляд ASUS ROG MAXIMUS XI GENE: Micro-ATX вкруту
Материнська плата Gigabyte Z390 Designare: коли потрібно не «шашечки», а їхати
Огляд материнської плати Gigabyte X570 Aorus Xtreme: 16 фаз харчування та пасивне охолодження чіпсету
Огляд материнської плати ASUS ROG Crosshair VIII Археолог: перша Ryzen
"