Адресація пристроїв і передача даних 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Адресація пристроїв і передача даних



Кожен пристрій SCSI, підключений до шини, повинно мати свою унікальну адресу, що призначається при конфігуруванні. Для 8-бітної шини діапазон значень адреси 0-7, для 16-бітної - 0-15. Адреса задається попередньою установкою перемикачів або джамперів. Для хост-адаптера можливо програмне конфігурування. Адреса визначає номер тієї лінії шини даних, яка здійснює вибірку даного пристрою. Для ІУ значення ідентифікатора визначає пріоритет пристрою при використанні шини, найбільший пріоритет має пристрій з великим значенням адреси.

Типи периферійних пристроїв. Кожне логічний пристрій (ЛУ), що є абонентом шини SCSI, відноситься до одного з стандартизованих зразків ПУ (див. табл. 3.10). Складне ПУ може представлятися декількома ЛУ SCSI. За характером обміну даних Конфіденційність поділяються на 2 класи - блокові з типами 0, 4, 5, 7 і не блокові з типами 1,2,3, 9.

Пристрої прямого доступу (0) зберігають блоки даних. Кожен блок зберігається за унікальним логічного адресою LBA. Типовий приклад пристроїв прямого доступу - накопичувач на магнітних дисках (вінчестер).

Вінчестер з інтерфейсом SCSI не має власної тривимірної логічної геометрії. У відповідності до системи команд SCSI доступ до його секторам виконується тільки за лінійним логічного адресою LB А.

Пристрої прямого доступу можуть не мати рухомих носіїв, а грунтуватися на пам'яті різної природи: SRAM, DRAM, FRAM, EEPROM, флеш-пам'ять.

Пристрої послідовного доступу (1) мають ряд особливостей, пов'язаних з їх принципом дії. Носій представляє собою магнітну стрічку з многодорожечной, серпантином або похило-рядковим типом запису. Носій завжди змінюваний, з деяким конструктивним обрамленням (котушка, картридж), також називається томом. Том має початок носія BOM (beginning-of-medium) і кінець носія ЕОМ (end-of-medium). При запису ІУ повинен заздалегідь знати про наближення кінця носія, для чого визначається позиція раннього попередження EW (Early Warning) з відповідним маркером. Це дозволяє після запису блоку даних з буфера помістити на носій відповідний кінцевий маркер.

Принтери (2), що підключаються через інтерфейс 8С81, не вимагають особливих команд для управління, оскільки функції реалізуються через потік переданих даних.

Процесорними пристроями (3) в термінології 8С81 є джерела і споживачі пакетів інформації. Прикладами процесорних пристроїв є комп'ютери, що обмінюються повідомленнями одностороннім або двостороннім чином.

Пристрої оптичної пам'яті (7) близькі до пристроїв прямого доступу зі змінними носіями, але мають ряд характерних особливостей.

Велика ємність носія викликає необхідність застосування команд з 12-байтним дескриптором.

Пристрої однократного запису (4), зазвичай оптичні, відрізняються неможливістю перезапису раніше записаного блоку.

Накопичувачі CD-ROM (5) призначаються для роботи з CD.

Сканери (6) передають ІУ дані, що описують растрове зображення об'єкту сканування. Команди дозволяють задавати вікна сканування,

визначаючи в них режим і дозвіл.

Пристрої зміни носіїв (8) призначені для автоматичного маніпулювання змінними носіями - дисками і картриджами з магнітними стрічками.

Комунікаційні пристрої (9) призначені для обміну інформацією з пристроями через зовнішню, по відношенню до шини SCSI, середу передачі даних.

Передача даних. У будь-який момент обмін інформацією із шини може відбуватися тільки між парою пристроїв. Операцію починає ініціатор обміну ВП, а цільовий пристрій ЦУ її виконує. ІУ вибирає ЦУ за його ідентифікатором. Найчастіше ролі пристроїв фіксовані: хост-адаптер є ініціатором (ВП), а періферійное.устройство - цільовим (ЦУ).

Інформація по шині даних передається побайтно (послівний) асинхронно, використовуючи механізм запитів (REQ) і підтверджень (АСК). Кожен байт контролюється на непарність (крім фази арбітражу), але контроль може бути вимкнений. Інтерфейс має можливість синхронної передачі даних.

Шина може перебувати в одній з наступних фаз:

- Спокій (Bus Free) - шина знаходиться в стані спокою;

- Арбітраж (Arbitration) - пристрій може отримати право на керування шиною. Дочекавшись спокою шини (Bus Free), пристрій вводить сигнал запиту і свої ідентифікатор. Якщо ідентифікатори виставили кілька пристроїв одночасно, то право на керування шиною отримує пристрій з найбільшим адресою, а інші пристрої відключаються до наступного звільнення шини. Пристрій, що виграло арбітраж, переходить у фазу Selection або Reselection;

- Вибір ІУ (Selection) - ІУ, яке виграло арбітраж, вводить на шину даних результат логічної функції АБО від пари ідентифікаторів - свого і ЦУ, супроводжуючи його бітом паритету. Адресований ЦУ відповідає, якщо запит коректний. Якщо за заданий час ЦУ не відповіло, спрацьовує тайм-аут, ІУ звільняє шину;

- Повторний вибір (Reselection) - аналогічна попередньої, але її вводить ЦУ в тому випадку, коли ЦУ на час виконання команди відключалося від шини. По завершенні внутрішньої операції це пристрій, вигравши арбітраж, викликатиме програму, з якою раніше розпочато

операція. Умови відповіді і тайм-аут аналогічні попередній фазі;

- В фазах передачі даних (Data OUT, Data IN), команд (Command), стану (Status) та повідомлень (Message OUT, Message IN) по шині даних передається інформація, фази ідентифікуються відповідними сигналами, якими управляє ІУ.

В асинхронному обміні передача кожного байта супроводжується взаємозалежної парою сигналів REQ # / ACK #. При передачі від ВП до ЦУ (Data OUT), ІУ супроводжує кожен байт даних стробом REQ #, а ЦУ фіксує прийняті дані по негативному перепаду сигналу REQ # і

підтверджує правильність прийому сигналом АСК #. ІУ вважає передані дані дійсними по негативному перепаду прийнятого сигналу АСК #, і починає новий цикл обміну. При передачі від ЦУ до ІУ (Data IN), призначення сигналів змінюється (ACK # - строб, REQ # - підтвердження). Асинхронний обмін підтримується усіма пристроями для всіх фаз передачі інформації.

Фази передачі даних Data OUT і Data IN можуть виконуватися і в синхронному режимі обміну. При узгодженні синхронного режиму визначаються мінімальні тривалості і періоди керуючих імпульсів ACK # і REQ #, а також дозволене відставання підтверджень від запитів. ІУ передає серію даних, супроводжуваних стробами REQ #, в темпі, обмеженому встановленими часовими параметрами. ЦУ фіксує прийняті дані по негативному перепаду сигналу REQ #, але відповідати на них сигналом ACK # може з деяким запізненням. Як тільки відставання числа прийнятих сигналів ACK # від числа посланих REQ # досягне обумовленого граничного значення, ВП призупинить обмін до приходу чергового підтвердження АСК #. Операція буде вважатися завершеною, коли число прийнятих підтверджень співпаде з числом посланих запитів.

Кожен процес введення / виводу складається з наступної послідовності фаз шини: зі стану Bus Free через фазу Arbitration перехід до фази Selection або Reselection. Далі йдуть фази передачі інформації (Command, Data, Status, Message). Завершальною фазою є Message In, в якій передається повідомлення Disconnect або Command Complete (див. нижче), після чого шина переходить у стан спокою Bus Free.

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

Система повідомлень (Message System) служить для управління ішерфейсом. Обмін повідомленнями між ІУ і ЦУ відбувається в фазах Message IN / OUT, в одній фазі може передаватися кілька повідомлень. Формати повідомлень стандартизовані; кожне повідомлення починається з коду. Існують однобайтні (коди OOh, 02h - lFh, 30h - FFh), двухбайтного (коди 20h - 2Fh) і

розширені повідомлення (код Olh). У двухбайтного повідомленні другий байт є аргументом повідомлення. У розширених повідомленнях другий байт

задає довжину, а наступні байти несуть код та аргументи повідомлення. Коди повідомлень наведено в табл. 3.11.

 

 

Для встановлення зв'язку з конкретним логічним пристроєм або з конкретною цільовою програмою, а також для надання права розриву з'єднання служать повідомлення Identify. У байті їх кодів біти 2-0, залежно від біта 5 (LUNTAR), задають номер логічного пристрою (LUNTAR = 0) або програми (LUNTAR == 1). Одиничним значенням біта 6 (DiscPriv) при передачі повідомлення ІУ наділяє ЦУ правом розриву з'єднання. Розрив з'єднання виконується повідомленням Disconnect.

За допомогою повідомлень узгоджуються параметри синхронного режиму (повідомлення Synchronous Data Transfer Request із зазначенням допустимого періоду циклу і відставання REQ / ACK) і розрядність даних (повідомлення Wide Data Transfer Request). Узгоджені режими будуть діяти до скидання пристроїв за повідомленням Bus Device Reset або "жорсткого" скидання.

 

Система команд

Система команд SCSI включає загальні команди, що застосовуються для пристроїв всіх класів і специфічні для кожного класу. Як загальні, так і специфічні набори команд містять обов'язкові, додаткові та

фірмові команди. Будь SCSI-пристрій повинен підтримувати обов'язкові команди загального набору і свого класу, чим забезпечується високий рівень сумісності. Команда передається ІУ в ЦУ через блок дескриптора команди, який надсилається у фазі Command Деякі команди супроводжуються блоком параметрів, наступним за блоком дескриптора в фазі Data. Формати блоків стандартизовані, довжина блоку (6, 10 або 12 байт) визначається кодом операції (перший байт блоку). Структура блоків дескрипторів команд наведена на рис. 3.10.

Блок містить наступні поля:

- OpCode - код операції. Біти 7-5 визначають групу, а біти 4-0 код команди. У групі 0 блок дескриптора має довжину 6 байт, в групах 1 та 2 - 10 байт, у групі 5-12 байт. Групи 3 і 4 зарезервовані, групи 6 і 7 віддані на розсуд розробників.

- LUN - номер ЛУ (біти 7-5 байта 1). Якщо для ідентифікації використовуються повідомлення Identify, то це поле ігнорується (встановлюється LUN = 0).

- LBA - адреса логічного блоку, 21 біт для 6-байтних блоків і 32 біта для 10-і 12-байтних блоків. У ряді команд поле не використовується.

Length - довжина (кількість блоків або байтів) переданих даних або блоку параметрів. У ряді команд поле не використовується.

Control - байт управління. Біти 7-6 використовуються на розсуд розробника, біти 5-2 зарезервовані, біт 1 - Flag (при Flag = l повідомлення

Linked Command Complete (With Flag) викликатиме переривання між командами ланцюжка), біт 0 - Link (одиничне значення служить ознакою ланцюжка команд).

У полях LBA і Length першими передаються старші байти, потім молодші. Зарезервовані поля для сумісності з майбутніми стандартами повинні мати нульові значення

Виконання команди завершується у фазі Status передачею байта стану Status Byte. У байті стану використовують тільки біти 5-1, можливі стану наведено в табл. 3.12 (біти 7,6, 0 зарезервовані).

Набір команд для пристроїв класів 0-9 наведено у Додатку Д. Будь ЦУ SCSI-2 зобов'язана підтримувати чотири команди: Inquiry, Request Sense, Send Diagnostic, Test Jnit Ready. Вони використовуються для конфігурування системи, тестування пристроїв, а також повідомлень про помилки і виняткових ситуаціях. Команда Inquiry дозволяє отримати інформацію про ЛУ через стандартизований блок даних довжину 96 байт (тип підключеного ПУ, можливість зміни носія, підтримка 32 - або 16-бітного розширення, синхронного обміну, відносної адресації, ланцюжків команд, черг і повідомлення про асинхронних події).

Виконання команд. При виконанні одиночної команди (наприклад команда читання Read), ВП має активний набір покажчиків і кілька збережених наборів, по одному на кожен з процесів. ІУ відновлює покажчики процесу в активний набір і, вигравши арбітраж, вибирає ЦУ. Як тільки ЦУ вибрано, воно бере на себе управління процесом. У фазі Selection ІУ вводить сигнал ATN #, повідомляючи про намір послати повідомлення Identify із зазначенням адресується ЛУ. Таким чином встановлюється зв'язок ІУ з даним процесом і його набором покажчиків. ЦУ переходить у фазу Command і приймає блок дескриптора команди.

Інтерпретувавши команду, ЦУ переходить у фазу Data IN, передає дані, потім переводиться в фазу Status і посилає стан Good Потім у фазі Message IN пристрій посилає повідомлення Command Complete, після чого звільняє шину (фаза Bus Free).

Якщо пристрій, отримавши команду, визначить, що для одержання витребуваних даних необхідно багато часу, воно звільнить шину, надіславши повідомлення Disconnect. Як тільки необхідні дані готові в ЦУ, воно, вигравши арбітраж, вибере ІУ (у фазі Reselect) і у фазі Message IN пошле йому повідомлення Identify. ІУ відновить відповідний набір покажчиків в активний і продовжить виконання процесу, як описано вище. Якщо ЦУ хоче від'єднатися, коли частина даних вже передана (наприклад, головка дійшла до кінця циліндра і потрібен час на позиціонування), воно посилає повідомлення Save Data Pointer а потім Disconnect. Після повторного з'єднання передача даних відновиться з точки, визначеної останнім збереженим значенням покажчика. Якщо сталася помилка чи винятки ЦУ може повторити обмін даними, надіславши повідомлення Restore Pointers або від'єднати без повідомлення Save Data Pointers

У разі використання ланцюжка команд, після успішного завершення кожної команди, ЦУ автоматично переходить до виконання наступного. Усі команди ланцюжка адресуються до однієї і тієї ж зв'язку і є частиною одного процесу. Команди не є повністю незалежними - при використанні біта відносної адресації останній блок, адресований попередньою командою, доступний для наступної (наприклад команда Search Data знаходить на диску потрібний блок, а пов'язана з нею команда читання Read читає цей блок або блоки із зазначеним зсувом щодо знайденого. За виконання пов'язаних команд ЦУ посилає повідомлення Linked Command Complete (можливо, з прапором), а ІУ оновлює набір збережених покажчиків (вказують на чергову команду ланцюжка).

Команди можуть виконуватися з використанням черг. ЦУ можуть підтримувати немарковані та марковані черги. Підтримка немаркованих черг, визначена ще в SCSI-1, дозволяє будь-якому ЛУ (LUN) або цільовій програмі (TRN), зайнятим процесом від одного ІУ, приймати команди (починати процес) з іншими ІУ. Маркіровані черги визначені в SCSI-2 для ЛУ (LUN, але не TRN). Для кожної з цим існує своя чергу розміром до 256 процесів.

Постановка в чергу виконується через механізм повідомлень. Процес, поставлений в чергу з повідомленням Head Of Queue Tag, буде виконуватися

відразу після завершення поточного активного процесу (поза чергою). Процеси, поставлені в чергу з повідомленням Simple Queue Tag, виконуються ЦУ в порядку, який вона вважає оптимальним, а процес, поставлений в чергу з повідомленням Ordered Queue Tag, виповнюється останнім. ІУ може видалити процес з черги. Зміна порядку команд у черзі не стосується порядку в ланцюжку команд, оскільки ланцюжок належить одному процесу.

 



Поделиться:


Последнее изменение этой страницы: 2016-08-01; просмотров: 212; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.150.59 (0.022 с.)