Загальні відомості про інтерфейси
Створення сучасних засобів обчислювальної техніки пов'язано із завданням об'єднання в один комплекс різних блоків ВМ, пристроїв зберігання і відображення інформації, апаратури даних і безпосередньо ЕОМ. Це завдання покладається на уніфіковані системи сполучення - інтерфейси. Під інтерфейсом розуміють сукупність схемотехнічних засобів, що забезпечують безпосередню взаємодію складових елементів обчислювальної системи. Інтерфейс забезпечує взаємозв'язок між складовими функціональними блоками або пристроями системи.
Основним призначенням інтерфейсу є уніфікація внутрішньосистемних і міжсистемних зв'язків та пристроїв сполучення з метою ефективної реалізації прогресивних методів проектування функціональних елементів обчислювальної системи.
Класифікація інтерфейсів:
Машинні інтерфейси призначені для організації зв'язків між складовими елементами ЕОМ, тобто безпосередньо для їх побудови і зв'язки з зовнішнім середовищем.
Інтерфейси периферійного обладнання виконують функції сполучення процесорів, контролерів, запам'ятовуючих пристроїв і апаратурою передачі даних.
Інтерфейси мультипроцесорних систем являють собою в основному магістральні системи сполучення, орієнтовані в єдиний комплекс декількох процесорів, модулів пам'яті, контролерів запам'ятовуючих пристроїв, обмежено розміщених в просторі.
Інтерфейси розподілених нд призначені для інтеграції засобів обробки інформації, розміщені на значній відстані.
Розвиток інтерфейсів здійснюється в напрямку підвищення рівня уніфікації інтерфейсного обладнання та стандартизації умов сумісності, модернізації існуючих інтерфейсів, створення принципово нових інтерфейсів.
Історія створення інтерфейсу SCSI
Інтерфейс SCSI сягає своїм корінням в початок 1960-х років. У той час в широко поширених великих машинах корпорації IBM застосовувалася байтове паралельна шина В/В, звана блок мультиплексний каналом і орієнтована на блокові передачі. Усвідомлюючи необхідність стандартизації інтерфейсів, комітет X3T9. 3 Американського національного інституту стандартів (ANSI) на початку 1980-х років приступив до розробки подібного стандарту. Не дивлячись на широку популярність блок-мультиплексного каналу корпорації IBM, комітет вирішив не приймати його в незмінному вигляді - почасти, можливо, тому, що "це не наше", а частково під тиском конкурентів компанії IBM. Стандарт, який розробляв ANSI, отримав назву інтелектуального периферійного інтерфейсу (IPI). Шина IPI представляла собою по суті функціональний еквівалент блок-мультиплексного каналу з додаванням деяких нових властивостей. В якості альтернативи блок-мультиплексному каналу корпорації IBM інші групи фахівців у той час розробляли власні паралельні шини В/В.
Так фірма Shugart Associates розробила Системний інтерфейс SASI (Shugart Associates System Interface). Ця фірма була одним з провідних виробників дискових накопичувачів, під впливом чого низка інших виробників також застосував цей інтерфейс у своїх виробах. У результаті інтерфейс SASI отримав відносно широке поширення. Компанія Shugart була винятково зацікавлена в тому, щоб комітет прийняв її інтерфейсну шину, а не шину IPI. Коли з'ясувалося, що інтерфейс SASI може програти в цій боротьбі, компанія надала йому нове найменування SCSI і представила в комітет X3T9. 2, який зацікавився проблемами інтерфейсів нижнього рівня, де конкуренція була менш жорсткою.
У 1984 р. комітет ANSI закінчив розробку спеціфікацііSCSI-1, і вона була опублікована у своєму остаточному вигляді в 1986 р. Наступні доповнення та удосконалення привели до створення специфікації SCSI-2.
Концепція SCSI.
Шина SCSI - це шина вводу-виводу, а не системна шина і не інтерфейс приладового рівня. Інтерфейсні засоби типу шини SCSI особливо ефективні для машин, які вимагають підключення декількох дискових накопичувачів або інших ПУ. Інтерфейс SCSI підвищує гнучкість і обчислювальну потужність системи, оскільки він дозволяє підключити до однієї шині кілька різних ПУ, які можуть безпосередньо взаємодіяти один з одним. Швидкість передачі даних по шині безумовно не буде обмежує чинником, оскільки цей показник для шини SCSI в даний час досягає 40Мбайт/с.
Шина SCSI передбачає можливість підключення до восьми пристроїв. На перший погляд це може здатися досить серйозним обмеженням, проте, якщо врахувати, що кожен пристрій може представляти
вісім логічних блоків, а кожен логічний блок - 256 логічних подблоков, то очевидно, що можливості розширення тут більш ніж достатньо.
Кожному з пристроїв шини SCSI повинен бути призначений індивідуальний ідентифікатор ID, значення якого зазвичай задається за допомогою комутаційних перемичок безпосередньо в пристрої. Ідентифікатор ID виконує дві функції: він ідентифікує пристрій на шині і визначає його пріоритет в арбітражі за доступ до шини (чим більше номер пристрою, тим вище його пріоритет).
Кожне з восьми можливих пристроїв шини може грати роль ініціатора (initiator), виконавця (target), або суміщати обидві ці ролі. Ініціатор - це частина хост (головного) адаптера SCSI, який служить для підключення головного комп'ютера до шини SCSI. У типовій системі до одного ініціатору підключається один або декілька виконавців. Система підвищеної складності може містити більше одного хост-адаптера SCSI (багато ініціаторів). У таких системах можуть встановлюватися взаємодія не тільки будь-якого процесора з будь-яким ПУ, але також хост - адаптерів один з одним, оскільки хост - адаптер сам є пристроєм шини SCSI і може грати роль як ініціатора, так і виконавця. Два ПУ (обидва виконавця), однак, не можуть взаємодіяти один з одним, оскільки тільки пара ініціатор - виконавець може вести обмін даними по шині в кожен конкретний момент часу.
Хост - адаптер містить апаратні і програмні засоби для сполучення з ЦП.
Інтерфейс контролера SCSI і системної шини може бути як зовсім простим (будується за принципом програмного опитування каналу В/В), так і більш складним (передбачають високошвидкісні обміни даними в режимі прямого доступу до пам'яті, ПДП). Такі контролери сприймають високорівневі команди і звільняють ЦП від необхідності обробки і контролю сигналів шини SCSI.
Програмне забезпечення головного комп'ютера спрощується, оскільки йому не доводиться враховувати фізичні характеристики конкретного пристрою. Інтерфейс SCSI передбачає використання логічних, а не фізичних адрес для всіх блоків даних.
Фази роботи шини SCSI.
Протокол шини SCSI передбачає вісім окремих фаз:
Bus Free - "Шина вільна"
Arbitration - "Арбітраж"
Selection - "Вибірка"
Reselection - "Зворотній вибірка"
Command - "Команда"
Data - "Дані"
Status - "Стан"
Message - "Повідомлення"
Останні чотири фази називаються фазами передачі інформації. Шина SCSI в кожен конкретний момент часу може знаходиться тільки в одній з цих восьми фаз.
Фаза "Шина вільна" означає, що ні один пристрій в даний момент не працює з шиною SCSI в активному режимі, і шина вільна для звернення. Ця фаза в основному виникає після системного скидання або після скидання шини сигналом RST. Ознакою фази "Шина вільна" є відсутність сигналів зайнятості BSY та вибірки SEL.
Шина переходить у фазу - "Арбітраж", коли яка - або SCSI-пристрій хоче взяти на себе керування шиною, тобто стати ініціатором на шині. Це відбувається у випадках, коли ініціатор хоче вибрати виконавця або виконавець хоче зробити перевиборку запитуючої його раніше ініціатора. У фазу "Арбітраж" шина може переключитися тільки з фази "Шина вільна". Після того, як пристрій визначає, що шина вільна, починається фаза "Арбітраж". Для цього формується сигнал BSY, на відповідну лінію даних
видається ідентифікатор ID SCSI - пристрої (ID - біт). При цьому кожне
з восьми можливих пристроїв шини SCSI може видавати свій ID - біт
тільки на закріплену за ним лінію даних як ознаку своєї участі
в арбітражі. Пристрій з максимальним значенням ідентифікатора ID виграє арбітраж і бере на себе керування шиною.
Фаза "Вибірка" дає можливість ініціатору вибрати виконавця, щоб ініціювати виконання ним відповідної функції, наприклад команди читання READ або запису READ. Згідно з протоколом специфікації SCSI-2 фаза "Вибірка" завжди настає після фази "Арбітраж". У специфікації SCSI-1 передбачається варіант системи з одним ініціатором, де необхідність арбітражу відсутня, і у фазу вибірки можна входити відразу ж після фази "Шина вільна". В обох випадках для вибірки виконавця ініціатор видає його ID-біт на відповідну лінію даних шини SCSI і формує сигнал вибірки SEL.
Необов'язкова фаза перевиборка можлива, коли виконавець хоче відновити зв'язок з тим ініціатором, який раніше послав йому команду. Ця фаза в принципі нагадує фазу "Вибірка", з тим винятком, що разом з сигналом вибірки SEL переходить в активний стан лінія I/O, що дозволяє розрізняти ці дві фази.
Фази "Команда", "Дані", "Статус" і "Повідомлення" утворюють групу фаз передачі інформації, оскільки всі вони використовуються для передачі даних або керуючої інформації по шині даних. Щоб їх розрізняти, використовуються сигнали C/D - управління, I/O - ввід-висновок і MSG - повідомлення, що виробляються виконавцями, який тим самим керує всіма переходами з однієї фази в іншу. Для управління передачею даних між виконавцем і ініціатором в фазах передачі інформації використовуються сигнали ліній
REQ/ACK - запит/підтвердження (у версії SCSI-2 додатково застосовуються лінії REQB/ACKB).
Реальний обмін даними може здійснюватися синхронним і асинхронним способом. В обох випадках для виконання квітірованія використовуються сигнальні лінії ACK і REQ. Для виконавця режим синхронної передачі є необов'язковим. Ініціатор може зажадати, щоб виконавець здійснював синхронну передачу, однак якщо останній відкине цей запит, то буде використовуватися асинхронний режим.
Щоб передати дані ініціатору в асинхронному режимі, виконавець видає їх на лінії даних шини SCSI разом з сигналом REQ. Дані повинні утримуватися на шині до тих пір, поки від ініціатора не буде прийнятий сигнал підтвердження ACK. Після цього на шину видаються такі дані, і процес повторюється. Якщо передача даних повинна відбуватися в протилежному напрямку, виконавець видає сигнал запиту REQ, що говорить про те, що він готовий до прийому даних. Ініціатор видає дані на лінію даних шини SCSI, а за тим формує сигнал ACK. Ініціатор продовжує утримувати дані на шині до тих пір, поки інія REQ, не переключиться в пасивний стан. Потім виконавець скидає сигнал REQ, ініціатор видає нові дані, і процес повторюється.
Якщо у фазі "Повідомлення" пристрою погодилися використовувати синхронний режим обміну, то виконавець не буде чекати надходження сигналу підтвердження ACK перед видачею сигналу REQ для прийому наступних даних. Він може генерувати один або більше імпульсів REQ без очікування відповідних імпульсів ACK (до заздалегідь обумовленого максимуму, званого зсувом REQ/ACK).
При видачі всіх запланованих імпульсів REQ виконавець порівнює число запитів REQ і підтверджень ACK, щоб упевнитися в тому, що кожна група даних прийнята успішно. При підготовці синхронного режиму обміну пристрої задають зсув REQ/ACK і період передачі. Період передачі визначає інтервал часу між закінченням передачі чергового байта і початком передачі наступного.
Додаткові кошти специфікації SCSI-2
Хоча вихідна специфікація SCSI, опублікована в 1986р. (SCSI-1), представляла великий крок вперед, у неї були і деякі серйозні недоліки. Зокрема не Бало чіткої регламентації всіх аспектів, що гарантують сумісність між пристроями були посилання на цілий ряд різних команд, проте насправді вона вимагала обов'язкової реалізації тільки однієї команди REQUEST SENSE ( "уточнити стан"). У результаті різні пристрої підтримували різні команди, що істотно обмежувало кількість контролерів, які могли б працювати в будь-якій SCSI-системі. Фахівці усвідомили це обмеження вже на завершальному етапі вироблення специфікації SCSI-1, тому була створена група з розробки єдиного набору команд (CCS), яка повинна була вирішити дану проблему, запропонувавши розширений набір команд SCSI. Набір команд був розширений з тим, щоб пристрій міг здійснювати і отримувати більш детальну інформацію. Підмножина всіх можливих команд було вибрано таким чином, щоб його могли без особливих зусиль реалізувати виробники ПУ. Обмеження кількості команд, на які має реагувати SCSI-пристрій, збільшує ймовірність того, що всі ці команди будуть реалізовані. Хоча документ CCS включений в специфікацію SCSI-1, він був опублікований, і його принципи були рекомендовані як стандарт де-факто, який повинні наслідувати виробники пристроїв з інтерфейсом SCSI. Завдяки цьому зменшився рівень несумісності SCSI-пристроїв, що не дозволяє використовувати готові ПУ в системі без додаткових доробок.
Принципи SCSI були включені в специфікацію SCSI-2, де команди діляться на три категорії: обов'язкові, факультативні та визначаються виробником. SCSI-пристрої повинні підтримувати як мінімум, всі обов'язкові команди пристроїв свого типу. У специфікації SCSI -2 були описані команди для ПУ безпосереднього доступу (дискових накопичувачів), послідовного доступу (НМЛ), принтерів, процесорів, пристроїв пам'яті з одноразовою записом (оптичних дискових накопичувачів), ПЗУ на базі компакт-дисків, сканерів, пристроїв оптичної пам'яті , пристроїв з автоматичною зміною носія і комунікаційних пристроїв.
У специфікацію SCSI -2 була включена також ще одна концепція, запропонована в документі CCS, а саме - концепція зворотної вибірки, або перевиборкі. Відповідно до протоколу SCSI -1, якщо ініціатор посилає команду виконавцю, він буде займати шину до тих пір, поки виконавець не завершить виконання цієї команди. Коли виконавець виконає команду, він через механізм арбітражу потребують доступу до шини з метою перевиборкі ініціатора, який видав йому цю команду. Операція завершується передачею виконавцем відповідних даних і статусу. Таким чином ініціатору не доводиться чекати, поки виконавець закінчить поточну команду, і він може в принципі посилати команди іншим виконавцям з метою їх паралельного виконання.
Це може бути корисно для системи, що містить більше одного виконавця, однак частіше буває необхідно надіслати наступну команду тому ж самому виконавцеві. Специфікація SCSI-1 передбачає передачу лише однієї команди від ініціатора логічного пристрою SCSI-контролера виконавця. При роботі з дисковими накопичувачами такий режим може бути вельми неефективним. Припустимо, наприклад, що в ЦП є чотири окремі запиту від операційної системи на читання секторів диска, що розміщуються на доріжках 1, 50, 2 і 52. Оскільки ЦП працює c пристроями шини SCSI в термінах логічних блоків даних, він не має уявлення про те, де (або яким чином) ці дані зберігаються у пристрої), і, отже, не в змозі оптимізувати послідовність команд перед їх видачею в SCSI-пристрій . Така можливість, що називається формуванням черги або ланцюжка команд, передбачена в специфікації SCSI-2 (у чергу можуть бути встановлені до 256 команд).
Щоб пристрій міг одночасно стежити за кількома командами, які чекають виконання, кожній команді присвоюється тег черги, що визначає однозначний механізм звернення до неї. Коли пристрій вибрано на шині SCSI і передано повідомлення ідентифікації
IDENTIFY, надсилається багатобайтових повідомлення тега черги QUEUE TAG, яке містить потрібну команду черги та ідентифікатор ініціатора. Коли контролер виконавця виробляє перевиборку ініціатора, це повідомлення з тегом надсилається після ідентифікатора пристрою. Команди, що їх посилають без тега черги, виконуються в порядку надходження, однак при цьому очікувати виконання може тільки одна команда, що регламентується стандартним протоколом SCSI-1.
У специфікації SCSI-2 передбачено також суттєве збільшення сько?? ості передачі даних, максимальне значення якої згідно специфікації SCSI-1 становило 5Мбайт/с. Проблема підвищення швидкості була дозволена двома різними способами. Найбільш простим способом є збільшення числа розрядів шини даних. В даний час широкого поширення набули 16 - і 32 - розрядні процесори, на тлі яких 8 - розрядна шина SCSI -1 виглядає просто примітивно. У зв'язку з цим в с специфікацію SCSI -2 був введений "широкий" багаторозрядних варіант шини (WIDE), що передбачає введення додатково 24 ліній даних, тобто збільшення їх загальної кількості до 32. Для підвищення пропускної здатності шини також було запропоновано збільшити тактову частоту обміну в два рази. Це становить суть "швидкого" (високошвидкісного) варіанти (FAST) шини SCSI -2.
Поєднання швидкого і широкого варіантів реалізації шини SCSI дає можливість передавати дані з максимальною пропускною здатністю 40 Мбайт/с. Це може видатися дуже вражаюча, однак для більшості звичайних додатків шини SCSI настільки висока пропускна здатність просто не потрібно. Зрештою, така швидкість потрібна тільки для дискового накопичувача! Пристрої з інтерфейсом SCSI зазвичай містять буфери пам'яті, так що
ефективність використання шини SCSI визначається об'ємом даних,
приймаються пристроєм з дискової пам'яті свого буферна ЗУ, і інтелектуальністю алгоритму їх обробки. При цьому необхідно також враховувати, з якою швидкістю сама обчислювальна машина здатна приймати дані. Взагалі не має сенсу витрачати зусилля, збільшувати вартість та швидкість шини SCSI, реалізуючи "швидкий" або "широкий" її варіанти, якщо головна система не може скористатися збільшеною пропускною здатністю.
Хост - адаптери
Хост-адаптер реалізує функції сполучення шини SCSI з системними ресурсами, перш за все з системною шиною і операційною системою комп'ютера. Він, як правило виконує роль ініціатора на шині SCSI, хоча в складних (наприклад, у мультипроцесорних і мультімашінних) SCSI-системах може динамічно змінюватися (ініціатор/виконавець).
До числа основних функцій хост-адаптера, що визначають його структуру і характеристики, відносяться:
реалізація протоколу шини SCSI, а також фізичних та електричних специфікацій стандарту;
пару з апаратними та програмними системними ресурсами
Реалізація протоколу шини SCSI, як правило, здійснюється спеціалізованою БІС контролера шини SCSI. Зазвичай ця схема забезпечує і реалізацію електричних специфікацій стандарту.
Сполучення з апаратними системними засобами припускає перш за все узгодження розрядності і пропускної здатності шини SCSI і системної шини хост-системи, а також реалізацію розвинених засобів доступу до системної пам'яті. Структура вузла узгодження розрядності шин залежить від призначення хост-адаптера і використовуваної версії стандарту SCSI (8 розрядів для SCSI-1; 16 або 32 розряду для
SCSI-2). Основним засобом узгодження пропускної здатності системної і SCSI-шин є вивід пам'ять, що реалізується звичайно у вигляді буферу FIFO, або двупортовий ОЗУ. Найбільш поширений алгоритм доступу до системної пам'яті - прямий доступ, що реалізується найчастіше за допомогою контролера ПДП хост-системи.
Сполучення з програмними системами припускає наявність SCSI-драйвера для конкретної ОС.
Характеристики сучасних хост-адаптерів.
Серед використовуваних ВІС SCSI-контролерів для шини AT домінує моделі фірми NCR. Слідом ідуть відомі WD33C93 фірми Western Digital і ALC 6250/60 фірми Adaptec (США). Хост-адаптером найчастіше підтримують як синхронний, так і асинхронний
режими обміну по шині SCSI. Швидкість обміну істотно залежить від типу використовуваного контролера. У простих хост-адаптери вона коливається від 0, 25 до 1 Мбайт/с в ассінхронном режимі і синхронний режимах відповідно.
Розмір буфера даних також варіюється в досить широких межах: від використання внутрішніх буферів БІC SCSI-контролера невеликої ємності, до ОЗП значної ємності (1Мбайт). Наявність великої буфера істотно збільшує вартість хост-адаптера.
Програмна підтримка SCSI пристроїв.
Завдання програмування SCSI систем і пристроїв є багаторівневою і може бути розділена наступні відносно незалежні підзадачі:
Програмування апаратних засобів периферійних пристроїв.
Реалізація протоколів SCSI шини.
Реалізація SCSI команд.
Доступ до SCSI пристроїв ОС і прикладних задач.
На жаль на всіх перерахованих рівнях використовуються на практиці рішення слабо уніфіковані. Багато солідні фірми пропонують свої оригінальні, проте часто не стикуються один з одним підходи. Враховуючи, що в даний час в області програмування SCSI пристроїв стандарт фактично поки що не склався, доцільно розглянути найбільш цікаві рішення на кожному з рівнів.
I. Програмування апаратних засобів периферійних пристроїв.
Кінцевим ланкою засобів програмної підтримки ПУ в силу специфічності фізичних принципів їх реалізації неминуче є вузькоспеціалізовані програми низького рівня. Через те, що програмування на такому рівні складно навіть для загальносистемних, не кажучи вже про прикладних програмістів, є тенденція до підвищення рівня засобів програмування ПУ за рахунок маскування специфіки ПУ на рівні так званого firmware (внутрішнього програмного забезпечення-ВПО). Прикладом може служити маскування функцій безпосереднього управління дисковими накопичувачами на рівні внутрішніх команд дискових контролерів WD2010, 8272 та ін
Однак на рівень регістрів контролерів виходять тільки спеціалізовані програми. В даний час ПУ як правило, програмуються на рівні функцій системної BIOS, а програми більш високого рівня взагалі використовують стандартні функції ОС.
Використання інтерфейсу SCSI ще більше підвищує рівень програмування ПУ за рахунок використання певного стандарту набору команд загального вигляду. Для прикладного програміста використання стандартних функцій BIOS стає при цьому практично неможливим.
Проте як елемент керування пристроєм вони, природно, зберігаються на рівні ВПО контролера ПУ і реалізується або локальний мікропроцесором (МП) контролера, або мікро, вбудованим в базову БІС контролера ПУ.
З метою збереження напрацьованих програмних засобів управління електронікою ПУ, в даний час широко використовується емуляція стандартних інтерфейсів ПУ, що передбачає перетворення логічних адрес SCSI у фізичні адреси конкретного пристрою. Прикладом може служити контролер SmartConnex/ISA фірми Distributed Proccessing Е Technology. Він використовує інтерфейс відомого дискового контролера WD1003 фірми Western Digital, в результаті чого комп'ютер "бачить" контролер як звичайний пристрій, сумісний з інтерфейсом ST-506.
Реально емуляцію інтерфейсу виконує невидимий для користувача драйвер, запам'ятовуються при форматуванні в останньому блоці НМД. Відповідні драйвери є для найбільш поширених ОС (MS-DOS, OS/2, Xenix/Unix, Novell NetWare). Установка контролера SmartConnex в систему здійснюється за допомогою спеціальних утиліт, що поставляється фірмою.
У відомих контролерах WD 33C92/93 фірми Western Digital є навіть вбудована команда перетворення форматів логічних адрес у фізичні.
Таким чином, для реалізації різних ПУ в стандарті SCSI можуть використовуватися фрагменти готових програм, що підтримують такі стандартні функції управління ПУ в MS-DOS, як INT 13, INT 11 та ін
Слід зазначити, що такий підхід, мабуть не в повній мірі відповідає ідеології SCSI, і в перспективі будуть використовуватися спеціальні програми безпосереднього управління SCSI пристроєм на базі SCSI-команд.
II. Реалізація протоколу SCSI-шини
При використанні інтерфейсу SCSI на ВПО хост-адаптера або контролера ПУ покладається також функція підтримки SCSI - операцій.
При цьому ступінь необхідної прграмной підтримки залежить від рівня інтелектуальності використовуваної БІС контролера SCSI-шини. За деякими оцінками, при використанні БІС SCSI-контролерів першого, другого і третього поколінь обсяг необхідного для реалізації SCSI-протоколу ВПО становить близько 400, 2500 і кілька сотень команд відповідно.
Контролери різних поколінь відрізняються числом і складністю покладених на них функцій прийняття рішення щодо ситуацій у SCSI-системі.
Наприклад, контролер першого покоління NCR 5380работает на рівні обробки і формування логічних сигналів SCSI-шини. Функції аналізу ситуацій і прийняття рішень повністю покладаються на ВПО. Такий режим характеризується великим обсягом керуючого коду, високою інтенсивністю переривань на рівні ВПО і, як наслідок, високими накладними витратами на час виконання операції.
Подібна схема використовується в SCSI-підсистемах ПК Macintosh фірми Apple. Для програмування SCSI-підсистем фірмою розроблено спеціальний програмний засіб - Mac's SCSI Manager, що включає
14 програм, які обслуговують різні фази протоколу SCSI шини. Серед них: читання/запис даних в різних режимах, участь в арбітражі, обробка команд, статусу, повідомлень, та ін
Всі перераховані функції реалізуються шляхом безпосереднього програмування апаратних пристроїв SCSI-контролера. Оскільки у всіх комп'ютерах сімейства Mac використовуються хост-адаптери SCSI-шини на базі контролера NCR 5380, ВПО для всіх моделей будується за одним принципом. Проте є нюанси, які є важливими для програмування на нижньому рівні. Наприклад, у різних моделях ПК контролер 5380 має різні адреси. Крім того, по-різному використовуються деякі режими роботи контролера 5380. Зокрема, є відмінність в реалізації
операції читання/запису даних у синхронному режимі, що обумовлено різним ступенем апаратної підтримки процедури "рукостискання" в різних моделях сімейства Мас. Якщо в моделі Мас Plus синхронний режим вимагає повного програмного контролю ліній читання/запису і даних, то а машинах Мас SE і Мас II реалізована повна апаратна підтримка цього режиму. Особливістю моделі Мас IIfx є використання спеціальної замовний БІС - SCSI-контролера ПДП, до складу якої входить контролер 5830.
Схожі функції виконує і програмний інтерфейс ASPI (Advanced SCSI programming interface), пропонований фірмою Adaptec для програмування SCSI-пристроїв в середовищі MS-DOS. Інтерфейс ASPI також забезпечує виконання нижнього рівня протоколу SCSI-штни і включає шість команд, що дозволяють виконати наступні функції:
визначення числа хост-адаптерів у складі системи;
визначення типу периферійного SCSI-пристрої;
визначення операції введення/виводу на SCSI-шині;
преккращеніе виконання SCSI-операції;
скидання пристроїв на SCSI-операції;
установка параметрів хост-адаптера.
У контролерах другого покоління, як правило, в обов'язковому порядку апаратно підтримуються функції арбітражу, управління передачею даних по шині. У деяких моделях вводиться внутрішній набір команд, які, по-перше спрощують процес програмування, а, по-друге, маскують типові для контролерів першого покоління переривання при зміні фаз на SCSI шині.
До третього покоління однокристальних SCSI-когтроллеров можна віднести БІС NCR 53С700 NCR53C710 фірми NCR, в яких впроваджена нова програмна концепція фірми NCR - так званий Script-процесор. Обидва контролера містять потужний вбудований процесор продуктивністю 2 млн. операцій у секунду, що забезпечує автономне керування операціями на SCSI-шині, а також управління ПДП.
Script-алгоритм включає програми управління такими операціями, як Вибір/Перевибори; Від'єднання/Повторне підключення; Зміна фази SCSI-шини; Передача інформації та ін
Реалізація розвинених керуючих алгоритмів, природно, вимагає великого обсягу пам'яті. Якщо цей алгоритм виконується засобами хост-системи (по типу BIOS), він стає залежним від типу системної
шини і, отже втрачає свою інваріантість. Якщо ж він
виконується самим контролером, потрібен великий обсяг внутрішньої пам'яті. Особливістю і незаперечною гідністю контролерів серії 53C7XX є їх здатність безпосередньо працювати з пам'яттю хост-системи, де і може бути розміщений Script-алгоритм.
Набір Script-команд включає три основних типи операцій:
Блокові пересилання, що виконують передачу даних між SCSI шиною і основною пам'яттю. При цьому забезпечується вільний доступ за адресами, а також рівнозначність керуючої інформації на SCSI шині і користувача інформації.
Команди вводу-виводу що виконують різні операції на SCSI шині і безпосередньо адресують вузли SCSI-ядра контролера.
Команди керування дозволяє порівняти вміст внутрішніх регістрів з сигналами на SCSI-шині або з першого байтом переданої послідовності. За результатами порівняння
управління може бути передано за іншою адресою. Таким чином, всі типи переходів (jump, call, return) у Script програмі можуть бути засновані на безпосередньому порівнянні фаз SCSI-шини, що зручно для прийняття рішень в реальному часі.
Потужні Script-команди істотно скорочують накладні витрати SCSI шини. Наприклад, при використанні команд блокової пересилки при роботі з розосередженими блоками даних за одну команду може бути передана сторінка даних для програми користувача.