logo search
AOM / Мельник А

5. 1. Структурні конфлікти

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

168

нана в конвеєрному режимі через причини браку ресурсів, то говорять, що в комп'ютері є структурний конфлікт.

Існує дві групи структурних конфліктів. До першої групи належать структурні кон­флікти, які виникають через потребу порушення тактової частоти роботи конвеєра. До другої групи належать структурні конфлікти, які виникають у зв'язку з необхідністю очікування на звільнення ресурсів комп'ютера.

Найбільш типовим прикладом комп'ютерів, у яких можлива поява структурних конфліктів першої групи, є комп'ютери з не повністю конвеєрними функціональними пристроями. Час виконання операції в такому пристрої може складати декілька тактів синхронізації конвеєра. В цьому випадку послідовні команди, які використовують да­ний функціональний пристрій, не можуть надходити до нього в кожному такті. При­кладом такого не повністю конвеєрного функціонального пристрою може бути пристрій додавання-множення на основі одного суматора, в якому додавання виконується за один такт, а множення з метою економії обладнання реалізується шляхом ітераційного виконання операції додавання. Такий підхід є виправданим при нечастому виконанні операції множення.

Можлива також інша, але досить подібна за впливом на конвеєр ситуація, коли в останньому включений пристрій, затримка в якому більша одного такту конвеєра. На­приклад, це може бути паралельний однотактовий поділювач двійкових чисел, затримка в якому перевищує такт конвеєра, а його конвеєризація є невиправдано дорогою із-за причини маловживаності цієї операції.

Поява структурних конфліктів першої групи викликає необхідність призупинення роботи конвеєра до закінчення роботи функціонального пристрою, звернення до якого викликало конфлікт. Кількість тактів простою конвеєра рівна відношенню часу вико­нання операції в функціональному пристрої до величини такту конвеєра. На рис. 5.1 наведено діаграму виконання на симуляторі WinDLXнижче приведеного фрагмента де­якої програми

addf f6,f5,f4

хог г1,гЗ,г4

andr5,r6,r7,

у якій виник структурний конфлікт першої групи, викликаний наявністю в програмі команди додавання чисел з рухомою комою addf.Фаза виконання ЕХ цієї команди є дов­шою в три рази, ніж такт роботи конвеєра. Тому фази MEM команд addf та and співпали, тобто вимагається одночасний доступ до ресурсів фази MEM, що і стало причиною кон­флікту. Через те виконання команди andпризупиняється (Stall- зупинка). Час призупинен­ня визначається алгоритмом та структурою пристрою додавання чисел з рухомою комою.

169

Друга група структурних конфліктів пов'язана з недостатньою кількістю деяких ре­сурсів (функціональних блоків, портів і т. д.), що перешкоджає виконанню довільної по­слідовності команд в конвеєрі без його призупинення. Наприклад, процесор може мати тільки один порт запису в регістрову пам'ять, але при певних обставинах конвеєру може виникнути необхідність виконати два записи в регістрову пам'ять в одному такті. Це призводить до структурного конфлікту. Коли послідовність команд натрапляє на такий конфлікт, виконання однієї з команд призупиняється до тих пір, поки не стане доступ­ним необхідний пристрій.

На рис. 5.2 показано приклад такого конфлікту для наступного фрагмента програми:

cvti2ff1, fl

cvti2f f2,f2multff5,f4,f8

multf f6,f3,f4.

Структурний конфлікт виникає на такті -8, коли відбувається звернення до при­строю множення для виконання фази ЕХ команди multff'6,f3,f4.В цей час пристрій множення зайнятий виконанням фази ЕХ попередньої команди множення, яка триває 5 тактів. Щоб зняти цей конфлікт, потрібно просто призупинити конвеєр на 4 такти, поки відбувається одночасне звернення до пристрою множення (S-stall- структурна зу­пинка). Подібне призупинення часто називається конвеєрною булькою, оскільки булька проходить по конвеєру, займаючи місце, але не виконуючи ніякої корисної роботи. По­трібно відзначити, що якби множення виконувалось за один такт, структурний конфлікт не виникнув би.

Структурні конфлікти другої групи виникають також при одночасному зверненні до пам'яті даних, наприклад, при необхідності читання операнда для однієї команди та за­пису результату для другої. Такі конфлікти виникають і в комп'ютерах з однією пам'ят­тю команд і даних. У цьому випадку, коли одна команда, яка знаходиться в конвеєрі, здійснює звернення до пам'яті за даними, воно конфліктуватиме з вибіркою пізнішої в черзі команди, яка вибирається з тієї ж пам'яті. В комп'ютері DLXможливий конфлікт, наприклад, при одночасному зверненні до основної пам'яті з боку кеш пам'яті даних та

команд.

Зрозуміло, що комп'ютер, в якому забезпечена підтримка конвеєрного виконання команд без структурних конфліктів, завжди матиме вищу продуктивність порівняно з комп'ютером із структурними конфліктами. Виникає питання: чому розробники допус­кають наявність структурних конфліктів? Цьому є дві причини. По-перше, ряд струк­турних конфліктів принципово дуже важко або й неможливо ліквідувати для всіх ви-падківроботи конвеєра, наприклад, вирішити питання одночасного доступу до пам'яті

170

даних. По-друге, конвеєризація всіх функціональних пристроїв може виявитися дуже дорогою. Комп'ютери, які допускають два звернення до пам'яті в одному такті, повинні мати пам'ять, яка характеризується подвоєною пропускною спроможністю, наприклад, це може бути досягнуто шляхом використання окремих блоків кеш пам'яті для команд і даних. Аналогічно, повністю конвеєрний пристрій ділення з рухомою комою вимагає значної кількості вентилів. Якщо структурні конфлікти не виникатимуть дуже часто, то не завжди варто платити за те, щоб їх обійти. Тому розробляється скалярний, або не повністю конвеєрний пристрій, що має меншу загальну затримку, ніж повністю кон­веєрний. Наприклад, розробники пристроїв з рухомою комою комп'ютерів CDC7600 і MIPS R2010 вважали за краще мати меншу затримку виконання операцій замість повної їх конвеєризації.