Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Шини

Описані в попередньому розділі порти передачі даних сполучають один з одним два пристрої. Проте часто виявляється доцільно підключити до одного порту передачі даних декілька пристроїв, причому необов'язково однотипних. Кожна передавана по такому порту порція даних зобов'язана супроводитися вказівкою, якому з підключених пристроїв вона призначена — адресою або селектором пристрою. Такі багатоточкові порти називаються шинами (bus) (мал. 9.14). Як і двоточкові порти передачі даних, шини бувають синхронні і асинхронні, а також послідовні і паралельні. При описі шин терміни "синхронний" і "асинхронний" використовує в іншому значенні, чим при описі портів. Асинхронними називають шини, в яких ведений пристрій не виставляє (або не зобов'язано виставляти) сигнал завершення операції, а синхронними, відповідно, шини, де ведений зобов'язаний це робити.

Мал. 9.14. Шина

Підключення N пристроїв двоточковими портами вимагає, щоб центральний процесор мав N приймачів, використання ж багатоточкового порту дозволяє обійтися одним. Зокрема, за рахунок цього Удається зменшити кількість виводів мікросхеми процесора або периферійного контроллера. Крім того, при вдалому розміщенні пристроїв Можна отримати значний виграш в спільній довжині дротів і, таким чином, наприклад, зменшити кількість провідників на друкарській платі. У багатьох випадках це призводить до настільки значного зниження спільної вартості системи, що виявляється доцільним змиритися з ускладненням протоколу передачі даних і іншими недоліками, властивими шинній архітектурі.
Основний недолік шин полягає в тому, що в кожен момент часу лише одне пристрій на шині може передавати дані. Якщо біля двоточкових портів часто опиняється доцільним реалізувати полподуплексний обмін даними за допомогою двох комплектів ліній (один прийом, інший на передачу, як в описаному вище Rs232), то в разі шинної топології це неможливо. Тому шини бувають лише напівдуплексні або сімплексні.
Неможливість паралельно здійснювати обмін з двома пристроями може привести до падіння продуктивності в порівнянні з власним портом обміну даними в кожного пристрою. Якщо пристрої не займають пропускну спроможність каналів передачі повністю, програш виявляється не так вже великий. Завдяки цьому шини широко використовуються навіть в ситуаціях, коли лише одне пристрій має можливість ініціювати обміни даними.
Якщо передачу даних можуть ініціювати декілька пристроїв (як, наприклад, в разі системної шини з декількома процесорами і контроллерами ПДП), шинна топологія виявляється найбільш природним вибором. Така конфігурація вимагає вирішення ще однієї проблеми: забезпечення арбітражу доступу до шини з боку можливих ініціаторів обміну — задатчиков шини (мал. 9.15). Методи арбітражу відрізняються великою різноманітністю.

Мал. 9.15. Шина з декількома задатчикамі

Дозвіл колізій в I2З
Синхронна послідовна шина I2З (Inter-integrated Circuit — [протокол з'єднання] між інтегральними схемами) широко застосовується для з'єднання цифрових мікросхем у вбудовуваних застосуваннях [Paret-fenger 1997]. Шина складається з двох ліній, строба і даних (мал. 9.16). Передбачається, що всі підключені до шини пристрої мають спільні шини живлення і нуля. Хоч би один з пристроїв шини має бути ведучим (master).

Мал. 9.16. Тимчасова діаграма шини I2З

Провідний пристрій генерує стробовий сигнал і ініціює всі передачі даних по шині. Частота строба може складати 100 або 400 кгц або 1 Мгц. Всі передачі починаються з того, що ведучий передає адресу цільового пристрою. Залежно від конфігурації адреса може складатися з семи або десяти біт. Восьмий або, відповідно, одинадцятий біт адреси містить вказівка на типа запиту: читання або запис. Почувши свою адресу, ведений пристрій генерує на лінії стробового сигналу імпульс підтвердження.
Імпульсу підтвердження може не послідувати не лише за відсутності пристрою з такою адресою, але і, наприклад, якщо відповідний пристрій не готовий прийняти або передати дані.
Якщо підтвердження все-таки послідувало, починається передача даних. Дані складаються з восьми біт. Якщо запит був на читання, дані передає ведений пристрій, якщо на запис — що веде.
Специфікації I2З допускають конфігурацію з декількома ведучими. Щоб уникнути конфліктів, що веде пристрій генерує стробовий сигнал лише під час передач даних, що ініціюються ним, в останній же час тихо слухає лінію і може, при запиті іншого ведучого, стати веденим.
Через те, що сигнал поширюється по шині з кінцевою швидкістю, та і внутрішня логіка провідних пристроїв спрацьовує не миттєво, можлива ситуація, коли два ведучих з невеликим інтервалом спробують захопити шину. Ця ситуація називається колізією (collision — дослівно, зіткнення). Протоколи арбітражу більшості інших шин вважають колізією будь-яку спробу двох пристроїв одночасно вести передачу. I2 З пропонує слабкіше визначення колізії — відповідно до специфікацій цієї шини, колізія відбувається, лише коли ведучі намагаються виставити на шині даних різні значення. Таким чином, якщо два (або навіть більше!) ведучих відправлять один і той же запит одному і тому ж веденому, це не вважатиметься колізією!
Механізм арбітражу, використовуваний I2З, відрізняється крайньою простотою.Ведучий, що намагається виставити на лінії даних 1 в той час, як інший ведучий намагається виставити там же 0, вважається програвшим арбітраж. Він повинен зупинити передачу і діждатися, поки переможець завершить обмін і визволить шину.
Поважно підкреслити, що протокол арбітражу не може просто оголосити обом пристроям, що мов, трапилася колізія — якщо обидва пристрої припинять передачу і, не зробивши більш ні за що, зроблять другу спробу, ми отримаємо живе блокування! Дивне, на перший погляд, визначення колізії прийняте в I2 З, дає переможцеві арбітражу можливість продовжити передачу після виявлення колізії, унеможливлюючи, таким чином, для нього повторної колізії після повторної спроби передачі, і, відповідно, виключаючи небезпеку живого блокування.
Видно, що специфікації I2З допускають ситуацію, коли два пристрої намагаються встановити на шині різну напругу. Щоб уникнути при цьому великих струмів, стандарт встановлює декілька незвичайний спосіб підключення пристроїв до шини (рис, 9.17). Пристрій, що намагається виставити 1, повинен просто відключити свої вихідні каскади — тоді через резистор Rp (для живлення 5 В його опір повинно бути не менше 1,7 ком) конденсатор Сb буде заряджений до напруги живлення. Лише при спробі виставити нуль пристрій повинен пропускати через себе струм.

Мал. 9.17. Схема приймачів I2З

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

Мал. 9.18. Комутатор з декількома внутрішніми шинами

Таким чином, комутована магістраль дозволяє зменшити продуктивності, породжувані колізіями, і підвищити реальну пропускну спроможність магістралі. Проте комутована магістраль значно підвищує спільну вартість системи і далеко не завжди виправдана цієї точки зору.
Застосовуються також гібридні топології, коли все або деякі пристрої підключаються до комутатора напівдуплексним портом або короткі ділянкою шини — при цьому можливі локальні колізії, але їх значно менше, чим при єдиній шині. Гібридна топологія дозволяє використовувати пристрої з одними і тими ж приймачами як в звичайній шинній, так і в комутованій топології (мал. 9.19). Зокрема, саме такий гібридну топологію мають описані в разд. Багатопроцесорна архітектура багатопроцесорні системи IBM NUMA-Q і SGI Origin — процесори і пам'ять підключаються до локальної шини процесорного модуля, а самі модулі з'єднуються комутованою мережею.
Гібридна топологія також дозволяє понизити вартість системи в порівнянні з повністю комутованою мережею — комутатори можна встановлювати лише в тих ділянках шини, де відстані або велика кількість колізій стають проблемою. У таких мережах часто використовуються двопортові комутатори, звані мостами (bridge). Так само називаються і адаптери, використовувані для з'єднання двох шин з різними протоколами.

Мал. 9.19. Гібридна топологія

У всіх перерахованих випадках зберігається логічна шинна топологія: кожен потенційний задатчик шини може звертатися за адресою до будь-якого іншого пристрою, тому розробникам програмного забезпечення не завжди цікаві деталі реалізації фізичного підключення пристроїв.
Шини (як фізичні, так і логічні) знаходять щонайширше вживання в обчислювальній техніці. Зокрема, один з найважливіших мережевих протоколів канального рівня, Ethernet, починав свою кар'єру як послідовна шина з поєднанням синхросигналу і даних, та і сучасні реалізації цього протоколу, хоча фізично і є комутованими або, все рідше і рідше гібридну мережу, з логічної точки зору як і раніше є шиною.
Зв'язок центральних процесорів з банками ОЗУ і зовнішніми пристроями в переважній більшості сучасних комп'ютерів здійснюється паралельними стробованими шинами.
У обчислювальних системах спільного призначення найчастіше використовується топологія з двома або більш шинами. Процесори і пам'ять зв'язані системною шиною. До цієї шини також приєднано один або декілька адаптерів периферійних шин до яких і підключаються зовнішні пристрої (мал. 9.20). Основна перевага такого рішення полягає в тому, що одні і ті ж периферійні пристрої можуть використовуватися в обчислювальних системах з різними системними шинами. Високошвидкісні пристрої, наприклад дискові адаптери FC-AL в серверів або графічні контроллери в персональних комп'ютерів, інколи під'єднуються до системної шини безпосередньо.

Мал. 9.20. Системна і периферійні шини

Шина PCI
Шина Pc/ (Peripherial Component Interconnect), розроблена фірмою Intel в даний час використовується в обчислювальних системах різного рівня, починаючи від персональних комп'ютерів з архітектурою х86 і Powermac і закінчуючи старшими моделями серверів Sun Fire. У конструктиві PCI виконується безліч різних периферійних устройств— мережеві карти, адаптери Scs/, графічні і звукові карти, плати відеовведення і відеовиводу і лр [РС Guide PCI].
PCI не розрахована на використання як системна шина. Напроти специфікації шини передбачають її підключення до процесорів і пам'яті через спеціальний пристрій, міст системної шини (host-to-pci bridge) (мал. 9.21). Це дозволяє використовувати PCI в системах, заснованих на різних процесорах, таких, як х86, Power, SPARC.

Мал. 9.21. Міст системної шини

PCI передбачає як монтаж пристроїв на материнську плату системи, так і їх виконання у вигляді плат розширення. Шина допускає підключення не більше 4 пристроїв. По вихідних специфікаціях, не більше трьох з них може підключатися через зовнішні роз'єми, проте це не заважає багатьом постачальникам устаткування виготовляти плати з чотирма зовнішніми роз'ємами без мостів. Передбачений стандартом спосіб обходу вказаного обмеження полягає в установці в системі декількох адаптерів PCI, через власні мости системної шини або через Pci-to-pci bridge. Допустимі також мости, що підключають інші периферійні шини, наприклад ISA, USB і т. д (мал. 9.22).
Кожен пристрій на шині зобов'язаний мати набір конфігураційних регістрів, що адресуються географічно (по номерах шини і роз'єму). Ці регістри містять інформацію про виготівника і модель пристрою. Крім того, пристрій може мати до шести базових адресних регістрів, вказуючих на пов'язані з пристроєм об'єкти, що адресуються, — блоки регістрів введення-виводу і буфери, що відображують на адреси ОЗУ (мал. 9.23). Адреси цих об'єктів визначаються динамічно під час ініціалізації системи завантажувальним монітором. Як правило, ці адреси також розподіляються за географічним принципом.

Мал. 9.22. Мости Pci-to-pci і Pci-to-isa

Пристрій може працювати в пасивному режимі (передаючи дані по запитах процесорів) або через ПДП в режимі задатчика шини. У другому випадку міст системної шини перетворить адреси PCI, що виставляються пристроєм, в адреси системної шини. Сучасні специфікації шини (т.з. Pci64) допускають 32-розрядну адресацію для регістрів пристроїв і 32- або 64-бітову адресацію для буферів, що відображують в пам'ять, і при роботі по ПДП.

Шина SCSI
Серед інших практично важливих вживань шин необхідно згадати стандарт Scs/ (Small Computer System Interface — системний інтерфейс малих комп'ютерів), найбільш відомий як інтерфейс для підключення жорстких дисків, але використовуваний для підключення широкого спектру високошвидкісних пристроїв (таблиця. 9.3), у тому числі і що не є пристроями пам'яті, наприклад, сканерів [Гук 2000].

Мал. 9.23. Конфігураційні і робочі регістри пристрою PCI

Сучасні специфікації SCSI по структурі аналогічні специфікаціям мережевих протоколів і складаються з трьох рівнів: команд, протоколу і з'єднань. Рівень команд визначає формат і семантику команд і відповідей на них, тобто приблизно відповідає тому, що в мережевих протоколах називається прикладним рівнем. Рівень протоколу визначає спосіб передачі команд і відповідей і відповідає канальному рівню мережевих протоколів. І, нарешті, рівень з'єднань визначає фізичну реалізацію ліній передачі даних (спосіб кодування даних, допустимі струми і напругу, конструкцію роз'ємів і т. д.), тобто відповідає фізичному рівню [www.t10.org architecture, Friedhelm/shmidt 1997]. Мережевий (спосіб адресації пристроїв, що в даному випадку описує) і транспортний рівні в специфікаціях SCSI також присутні, хоча і в рудиментарному вигляді.

Таблиця 9.3. Типи пристроїв SCSI, повертані командою INQUIRY, цит. по [www.t10.org commands]

Код Опис
00h Пристрій прямого доступу (наприклад, магнітний диск)
01h Пристрій послідовного доступу (наприклад, магнітна стрічка)
02h Друкуючий пристрій
03h Процесорний пристрій
04h Пристрій однократного запису (наприклад, деякі оптичні диски)
05h CD-ROM
06h Сканер
07h Оптичний пристрій, що запам'ятовує (наприклад, деякі оптичні диски)
08h Пристрій з автоматичною заміною носія (наприклад, jukebox)
09h Комунікаційний пристрій
0ah-0bh Визначене ASC It8
0ch Контроллер масиву пристроїв, що запам'ятовують (наприклад, RAID)
0dh Пристрій enclosure services (міст до шини іншого типа)
0eh-1eh Зарезервовано
1fh Невідомий або невизначений тип пристрою

На фізичному рівні SCSI є паралельною шиною з 8-у або 16-у (так звана Wide SCSI) лініями передачі даних. Сучасні реалізації стандарту забезпечують швидкості передачі даних до 160 Мбіт/с. Стандартом SCSI III передбачені також реалізації у вигляді послідовної шини IEEE 1394 або волоконно-оптичних кілець FC-AL (Fiber Channel Arbitrated Loop — волоконно-оптичний канал [у вигляді] арбітріруємого кільця). Fiber Channel допускає об'єднання декількох кілець комутаторами, підключення до 127 пристроїв, спільна довжина мережі, вимірювана декількома сотнями метрів і швидкості передачі до 1гбіт/с.
Обмін даними по шині відбувається не байтами і навіть не словами, а кадрами, які можуть містити команди, інформацію про достаток пристрою (sense data) або власне дані. Формат кадрів і спосіб дозволу колізій залежить від використовуваного типа з'єднань — в цьому сенсі розділення рівня з'єднань і рівня протоколу не реалізоване повною мірою. Кожен кадр містить адреси відправника і одержувача. Кожен пристрій має власна адреса, званий SCSI target ID. В старих версій протоколу ця адреса була 3-бітовим, допускаючи адресацію восьми пристроїв, в сучасної версії (ULTRA-SCSI або SCSI III) адреса 4- або 5-бітовий. Адаптер, через який шина SCSI підключається до системної або периферійної шини комп'ютера, — НВА (Host Bus Adapter— адаптер системної шини) — також вважається пристроєм і зазвичай має ID, рівний, залежно від розрядності адреси, 7, 15 або 127.
Пристрій, що має один target IDможе містити декілька логічно пристроїв, логічних пристроїв, що ідентифікуються номерами (LUN — Logjc Unit Number). Специфікації протоколу передбачають два байти для код рованія LUN але реальне число логічних пристроїв, підтримуваних практиці, зазвичай невелике.
Пристрої SCSI діляться на двох типів: ініціатори (initiator) і цільові ройства (target). Ініціатор посилає команди, а цільовий пристрій їх полняєт. Специфікація допускає, що в різних актах обміну даними ініціатор може ставати цільовим пристроєм і навпаки, але в межах однієї операції ці ролі задані однозначно. Як правило, НВА може виступати лише в ролі ініціатора, а периферійні пристрої — лише в ролі цільових.
Блоки команд — CDB (Command Descriptor Block — блок опису команди) — невеликі за розміром і можуть містити 6, 8, 10, 12 або 16 байт. Відмінність в довжині обумовлена розміром використовуваних в команді адрес: 6-байтова команда використовує 21-бітовий адреса блоку на пристрої і 8-бітове поле для довжини необхідного блоку даних, 8-байтова — 32-розрядний адреса і 16-бітове поле довжини, а довші команди— 32-розрядні адресу і довжину. 16-байтова форма команди містить, окрім 32-розрядних адреси і довжини, також і 32-бітове поле параметра. Крім того, команда обов'язково містить код операції і поле управління. Під код операції відводиться байт. Старші три біта цього байта кодують формат SCB. Деякі команди використовують лише один формат SCB, інші допускають вживання різних форматів (зазвичай з адресами і полем довжини різної розрядності). Окрім перерахованих в таблиці. 9.4, різних типів пристроїв мають власні команди.
Блоки даних, на відміну від команд, мають практично необмежену довжину. Багато команд інтерпретують поле довжини CDB як вказане в блоках. При розмірі блоку 512 байт це дозволяє передати за одну операцію до 2 Тбайт (1 Тбайт= 1024 Гбайт) даних. На практиці, пакет даних, передаваних за одну операцію шини, обмежений розмірами буферів пристроїв, тому запити на передачу великих об'ємів даних обробляються в неськолькр прийомів. Команда може або приймати, або передавати дані. Як дані можуть передаватися або блоки параметрів і відповідей, або власне дані. Існування команд, здатних і передавати, і приймати дані, явно заборонено специфікаціями, тому в CDB передбачена лише одна група полий описи буфера. Втім, операція може виконуватися у вигляді послідовності команд і тому може передбачати двосторонній обмін даними.
Більшість команд вимагають від пристрою більш менш тривалих підготовчих операцій (переміщення голівки, перемотування стрічки), тому передача даних не може слідувати негайно за командою. З цієї причини більшість сучасних пристроїв підтримують черги команд. Щоб пов'язати команду з відповіддю, що прийшла на неї, команди можуть забезпечуватися тегом завдання. Пристрій здатний паралельно виконувати декілька завдань, а в рамках одного завдання може бути виконана послідовність команд.

Таблиця 9.4. Список команд SCSI, підтримуваних всіма пристроями, цит. по www.t10.org commands]

Ім'я команди Код Тип Опис
CHANGE DEFIKTTION 40h O Змінити версію протоколу, використовуваного пристроєм
COMPARE 39h O Порівняти дані
COPY 18h O Копіювати дані усередині пристрою або
між пристроями
COPY AND VERIFY 3ah O Копіювати дані з перевіркою
INQUIRY 12h M Перевірити наявність пристрою, його типа і підтримувані ним операції
LOG SELECT 4ch   Включити збір статистики
LOG SENSE 4dh O Рахувати зібрану статистику
MODE SELECT(6) 15h Z Вибір режиму роботи пристрою
MODE SELECT(10) 55h Z  
MODE SENSE(6) 1ah Z Прочитування режиму роботи
MODE SENSE(10) 5ah Z  
MOVE MEDIUM ATTACHED A7h Z Для пристроїв з автоматичною зміною носія
PERSISTENT RESERVE IN 5eh Z Управління режимом блокування пристрою
PERSISTENT RESERVE
OUT
5fh Z  
PREVENT ALLOW MEDIUM REMOVAL 1eh 0 Заблокувати змінний носій в пристрої
READ BUFFER 3ch 0 Читання даних
READ ELEMENTSTATUS ATTACHED B4h Z Для пристроїв з автоматичною зміною носія
RECEIVE DIAGNOSTIC RESULTS 1ch O Отримати результати самотестірованія пристрою
RELEASE (6) 17h Z Розблокування (звільнення) пристрою
RELEASE (10) 57h z  
REPORT LUNS A0h O Прочитування списку логічних пристроїв
REQUEST SENSE 03h М-код Прочитування статусу пристрою
RESERVE(6) 16h Z Блокування (захват) пристрою
RESERVE(10) 56h Z  
SEND DIAGNOSTIC 1dh M Запит самотестірованія пристрою
TEST UNIT READY 00h M Перевірка готовності пристрою
WRITE BUFFER 3bh O Запис даних

Тут:

  • M — реалізація команди обов'язкова;
  • O— реалізація команди можлива (може бути реалізована, а може і не бути);
  • Z— реалізація і семантика команди залежить від типа пристрою.
 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017