Тема: Арбітраж шини
До цього моменту ми неявно припускали, що існує тільки один пристрій шини, що задає — центральний процесор. У дійсності мікросхеми вводу-виводу можуть ставати пристроєм, що задає, при зчитуванні інформації з пам'яті і запису інформації в пам'ять. Крім того, вони можуть викликати переривання. Співпроцесори також можуть ставати пристроєм шини, що задає. Виникає питання: “Що відбувається, коли задає пристроєм шини можуть стати два чи кілька пристроїв одночасно?” Щоб запобігти хаос, що може при цьому виникнути, потрібний спеціальний механізм — так названий арбітраж шини. Механізми арбітражу можуть бути централізованими чи децентралізованими. Розглянемо спочатку централізований арбітраж. Простий приклад централізованого арбітражу показаний на мал. 7.13, а. У даному прикладі один арбітр шини визначає, чия черга наступна. Часто буває, що арбітр вбудований у мікросхему процесора, але іноді потрібно окрема мікросхема. Шина містить одну лінію запиту (монтажне АБО), що може запускатися одним чи декількома пристроями в будь-який час. Арбітр не може визначити, скільки пристроїв запитують шину. Він може визначати тільки наявність чи відсутність запитів. Коли арбітр бачить запит шини, він запускає лінію надання шини. Ця лінія послідовно зв'язує всі пристрої виводу-вводу-виводу (як у ялинковій гірлянді). Коли фізично найближчий до арбітра пристрій сприймає сигнал надання шини, він перевіряє, немає запиту або шини. Якщо запит є, пристрій користається шиною, але не поширює сигнал надання далі по лінії. Якщо запиту немає, пристрій передає сигнал надання шини наступному пристрою. Це пристрій теж перевіряє, чи є запит, і діє відповідним чином у залежності від наявності або відсутності запиту. Передача сигналу надання шини продовжується доти, поки який-небудь пристрій не скористається наданою шиною. Така система називається системою послідовного опитування. При цьому пріоритети пристроїв залежать від того, наскільки близько вони знаходяться до арбітра. Найближчий до арбітра пристрій має головний пріоритет. Щоб обійти таку систему, у якій пріоритети залежать від відстані від арбітра, у деяких шинах влаштовується кілька рівнів пріоритету. На кожнім рівні пріоритету є лінія запиту шини і лінія надання шини. На мал. 7.13, б зображено 2 рівні (хоча в дійсності шини звичайно містять 4, 8 чи 16 рівнів). Кожен пристрій зв'язаний з одним з рівнів запиту шини, причому, чим вище рівень пріоритету, тим більше пристроїв прив'язано до цього рівня. На мал. 7.13, б можна бачити, що пристрою 1, 2 і 4 використовують пріоритет 1, а пристрою 3 і 5 — пріоритет 2. Якщо одночасно запитується кілька рівнів пріоритету, арбітр надає шину найвищому рівню. Серед пристроїв однакового пріоритету використовується система послідовного опитування. На мал. 7.13, б видно, що у випадку конфлікту пристрій 2 “перемагає” пристрій 4, а пристрій 4 “перемагає” пристрій 3. Пристрій 5 має нижчий пріоритет, оскільки він знаходиться в самому кінці самого нижнього рівня. Лінія надання шини другого рівня необов'язково повинна послідовно зв'язувати пристрої 1 і 2, оскільки вони не можуть посилати на неї запити. Однак набагато простіше провести всі лінії надання шини через усі пристрої, чим з'єднувати пристрої особливим образом у залежності від їхніх пріоритетів. Деякі арбітри містять третю лінію, що запускається, як тільки пристрій приймає сигнал надання шини, і бере шину у своє розпорядження. Як тільки запускається ця лінія підтвердження прийому, лінії запиту і надання шини можуть бути відключені. У результаті інші пристрої можуть запитувати шину, поки перший пристрій використовує її. До того моменту, коли закінчиться поточна передача, що здійснюється, пристрій, що задається, уже буде обрано. Цей пристрій може почати роботу, як тільки відключається лінія підтвердження прийому. З цього моменту починається наступний арбітраж. Така структура вимагає наявності додаткової лінії і більшої кількості логічних схем у кожнім пристрої, але зате при цьому цикли шини використовуються раціональніше. У системах, де пам'ять зв'язана з головною шиною, центральний процесор повинний завершувати роботу з усіма пристроями вводу-виводу практично на кожнім циклі шини. Щоб вирішити цю проблему, можна надати центральному процесору найнижчий пріоритет. При цьому шина буде надаватися процесору тільки в тому випадку, якщо вона не потрібна жодному іншому пристрою. Центральний процесор завжди може почекати, а пристрої вводу-виводу повинні одержати доступ до шини якнайшвидше, щоб не втратити дані. Диски, що обертаються з високою швидкістю, теж не можуть чекати. У багатьох сучасних комп'ютерах пам'ять міститься на одну шину, а пристрою вводу-виводу — на іншу, тому їм не приходиться завершувати роботу, щоб надати доступ до шини. Можливий також децентралізований арбітраж шини. Наприклад, комп'ютер може містити 16 пріоритетних ліній запиту шини. Коли пристрою потрібна шина, він запускає свою лінію запиту. Усі пристрої контролюють усі лінії запиту, тому наприкінці кожного циклу шини кожен пристрій може визначити, чи володіє він в даний момент вищим пріоритетом і, отже, чи дозволено лінії користатися шиною в наступному циклі. Такий метод вимагає наявності більшої кількості ліній, але зате не вимагає витрат на арбітра. Він також обмежує число пристроїв числом ліній запиту. При іншому типі децентралізованого арбітражу використовується тільки три лінії незалежно від того, скільки пристроїв мається в наявності (мал. 7.14). Перша лінія — монтажне АБО. Вона використовується для запиту шини. Друга лінія називається BUSY. Вона запускається поточним пристроєм шини, що задає. Третя лінія використовується для арбітражу шини. Вона послідовно з'єднує всі пристрої. Початок ланцюга зв'язаний із джерелом харчування з напругою 5 В. Коли шина не потрібна жодному з пристроїв, лінія арбітра передає сигнал усім пристроям. Щоб одержати доступ до шини, пристрій спочатку перевіряє, чи вільна шина, і чи встановлений сигнал арбітра IN. Якщо сигнал IN не встановлений, пристрій не може стати пристроєм шини, що задає. У цьому випадку він скидає сигнал OUT. Якщо сигнал IN установлений, пристрій також скидає сигнал OUT, у результаті чого наступний пристрій не одержує сигнал IN і, у свою чергу, скидає сигнал OUT. Отже, усі наступні по ланцюзі пристрої не одержують сигнал IN і скидають сигнал OUT. У результаті залишається тільки один пристрій, у якого сигнал IN установлений, а сигнал OUT скинутий. Він стає пристроєм шини, що задає, запускає лінію BUSY і сигнал OUT і починає передачу даних. Небагато поміркувавши, можна знайти, що з усіх пристроїв, яким потрібна шина, доступ до шини одержує саме лівий. Така система подібна із системою послідовного опитування, тільки в даному випадку немає арбітра, тому вона коштує дешевше і працює швидше. До того ж не виникає проблем зі збоями арбітра.
Контрольні питання: 1. Централізований арбітраж. 2. Децентралізований арбітраж.
|