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

3.2.7. Конвеєрне виконання команд

Конвеєрне виконання команд подібне до роботи конвеєра складальної лінії на за­воді, наприклад автомобільному. На складальній лінії вироби проходять через однако­ві виробничі стадії. Одночасно на лінії знаходиться кількість виробів, рівна кількості виробничих стадій. Проходячи через всі виробничі стадії, виріб приймає кінцеві пара­метри. Час виготовлення одного виробу є рівним часу його проходження через всі ви­робничі стадії, але при виготовленні багатьох виробів, скажемо п, час, який припадає на виготовлення всіх виробів, є рівним:

T = tm + t(n- l) = t(m + n- 1),

де m - кількість виробничих стадій, t - час виконання однієї виробничої стадії, а час, який припадає на виготовлення одного виробу, є рівним:

Тв = t(m+ п - 1)/п.

При n>>mчас Тв, який припадає на виготовлення одного виробу, наближається до часу tвиконання однієї виробничої стадії.

Подібно до виготовлення виробу, команда також має кілька послідовних стадій ви­конання, як це показано на рис. 3.2. Тому логічним виглядає використання і тут прин­ципу конвеєра.

Для початку розглянемо поділ процесу виконання команди на дві стадії: вибірку та виконання. В процесі стадії виконання команди є проміжки часу, коли немає звернень до пам'яті. Цей час може бути використаним для вибірки наступної команди паралельно з виконанням поточної команди. На рис. 3.13 показано цей підхід.

99

Конвеєр має два незалежних яруси. Перший ярус виконує операцію вибірки та буфе-ризації (короткотермінового запам'ятовування) команди. Коли другий ярус звільняєть­ся від роботи, перший ярус передає йому буферизовану команду. Коли в другому ярусі виконується команда, в першому ярусі вибирається наступна команда. Така операція називається попередньою вибіркою команди (instruction prefetch) або суміщенням ви­бірки (fetch overlap).

Зрозуміло, що описаний процес прискорює виконання команди. Якби операції ви­бірки та виконання мали однаковий час виконання, то цикл виконання команди міг би бути зменшеним вдвоє. Однак це не зовсім так через наступні причини:

  1. Стадія виконання значно довша стадії вибірки, оскільки вона вимагає виконання операцій зчитування та запису операндів та самої операції. Тому перший ярус повинен чекати деякий час, поки звільниться його буфер.

  2. При появі команди умовного переходу адреса наступної команди до завершення поточної команди невідома. Тому перший ярус змушений чекати до завершення роботи другого ярусу. Після цього вже другий ярус повинен чекати на завершення роботи пер­шим ярусом.

Час, який втрачається через другу причину, може бути зменшений шляхом викорис­тання механізму передбачення. Тут може бути використане наступне правило: коли ко­манда умовного переходу поступає з ярусу вибірки на ярус виконання, в ярусі вибірки проводиться вибірка із пам'яті наступної команди після команди умовного переходу. Тоді в випадку відсутності умовного переходу втрат часу не буде. Коли ж буде умовний перехід, то вибрана команда повинна бути знехтувана і вибрана нова команда.

Хоча розглянуті дві причини знижують потенційну ефективність двоярусного кон­веєра, в цілому виграш незаперечний. Для подальшого підвищення продуктивності по­трібно збільшувати кількість ярусів конвеєра. Розглянемо поділ виконання команди на наступні стадії:

При такому поділі час тривалості різних стадій виконання команди буде приблизно рівним. Тоді, як видно з табл. 3.5, шестиярусний конвеєр може зменшити час виконання 9 команд з 54 тактів до 14 тактів.

Таблиця 3.5

Номер такту

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Команда 1

ВК

ДК

ВА

ВО

KB

ЗР

Команда 2

ВК

ДК

ВА

ВО

KB

ЗР

Команда 3

ВК

дк

ВА

ВО

KB

ЗР

100

Команда 4

ВК

ДК

ВА

ВО

KB

ЗР

Команда 5

ВК

ДК

ВА

ВО

KB

ЗР

Команда 6

ВК

ДК

ВА

ВО

KB

ЗР

Команда 7

ВК

ДК

ВА

ВО

KB

ЗР

Команда 8

ВК

ДК

ВА

ВО

KB

ЗР

Команда 9

ВК

ДК

ВА

ВО

KB

ЗР

Часова діаграма в табл. 3.5 показує, що кожна команда виконується шляхом прохо­дження через 6 ярусів конвеєра. Разом з тим, не для кожної команди це потрібно Напри­клад, команда вибірки не вимагає виконання операції ЗО. Однак при її виконанні можна зробити шостий ярус конвеєра прозорим

Також на діаграмі показано, що всі стадії виконуються паралельно. В першу чергу тут прийнято, що не виникає конфліктів при зверненні до пам'яті. Наприклад, операції ВК, ВО та ЗО передбачають звернення до пам'яті. Діаграма допускає, що всі ці звернення можуть здійснюватись одночасно. Більшість систем пам'яті цього не допускають, тому звернення розносяться в часі. Іноді потрібне число може знаходитись в кеш пам'яті, а стадії ВО та ЗО відсутні. Тому конфлікти при зверненні до пам'яті не завжди сповільню­ють конвеєр

Декілька інших факторів обмежують ріст продуктивності за рахунок використання конвеєра

Табл. 3.6 відображає вплив умовного переходу при виконанні тих же операцій, що й в табл. 3.5.

Таблиця 3.6

Номер такту

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Команда 1

ВК

ДК

ВА

ВО

KB

ЗР

Команда 2

ВК

ДК

ВА

ВО

KB

ЗР

Команда 3

ВК

ДК

ВА

ВО

KB

ЗР

Команда 4

ВК

ДК

ВА

ВО

Команда 5

ВК

ДК

ВА

Команда 6

ВК

ДК

Команда 7

ВК

Команда15

ВК

ДК

ВА

ВО

KB

ЗР

Команда 16

ВК

ДК

ВА

ВО

KB

ЗР

Тут прийнято, що команда 3 є умовним переходом до команди 15. Поки команда З виконується, неможливо взнати, яка команда буде наступною. Конвеєр буде вибирати наступні команди (4,5,6,7) і виконувати їх. Наявність умовного переходу визначиться в кінці сьомого такту. Після цього конвеєр повинен звільнитись від непотрібних команд (очиститись). На 8 такті команда 15 поступить в конвеєр і дальше він почне заповнюва­тись знову. При цьому від 9 до 12 тактів не буде завершено виконання жодної команди. Це є розплата ефективністю за причини неможливості передбачити перехід.

101

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

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

Таким чином, конфлікти конвеєра можуть бути трьох типів:

" Конфлікт ресурсів, наприклад, одночасна потреба доступу до пам'яті. Цей кон­флікт вирішується шляхом розділення доступу до ресурсу в часі, або шляхом введення додаткового ресурсу, наприклад, кількох блоків пам'яті.

102

В наступних розділах питання підвищення ефективності використання конвеєрної обробки буде розглянуто детальніше.