Вар 2
МІНІСТЕРСТВО ОСВІТИ Укаїни
Московський Державний інститут електроніки та математики
Кафедра обчислювальних систем та мереж
Звіт про лабораторну роботу №1
«Моделювання роботи багатоконвеєрного процесора»
з дисципліни «Організація ЕОМ, комплексів та систем»
студент групи С-31
канд. техн. наук, доцент
Іванова Олена Михайлівна
Москва, 2004 рік
Варіант коду – 2
Кількість конвеєрів – 2
Фрагмент коду на асемблері:
SUB [Const4], [Const2]
Zero: MOV [Const5], CX
Таблиця послідовності виконання мікрооперацій процесором для одного конвеєра:

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


Аналогічно, у зв'язку з очікуванням значення [const2] є затримка фази виконання 26-31 тактах, [const4] - 33-37, CX - 40-42.
Практично повна зупинка конвеєра в 43-49 тактах пов'язана з виконанням операції умовного переходу, яка має дочекатися завершення роботи попередньої команди, щоб визначити результат. У цей час інші операції не виконуються через невизначеність подальших кроків.
Таблиця послідовностей мікрооперацій для двох конвеєрів:


За винятком описаного вище випадку умовного переходу, всі простої пов'язані або з тим, що вибірка операндів проводиться довше, ніж виконання мікрооперації (невеликіпростої), або з тим, що для вибірки операнда процесору необхідно отримати результат роботи іншої мікрооперації, яка виконується на іншому конвеєрі або перед поточною мікрооперацією на даному конвеєрі. Наприклад, простої з 20 по 33 першому конвеєрі, з 14 по 26, з 28 по 38 другого конвеєрі.
Використання конвеєрів теоретично вигідно, оскільки в ідеалі кожні 2-3 такти процесор видаватиме за результатом чергової мікрооперації.
Насправді виявляється, що ефективність такої схеми оптимізації роботи істотно залежить від завдання і програміста/компілятора. Якщо завдання має сильну пов'язаність, то вона погано піддається розпаралелювання, і, отже, ефективність конвеєрної схеми знижується.
Також ефективність істотно залежить від оптимізуючих властивостей компілятора, якщо програма пишеться мовою високого рівня, або від мистецтва програміста, якщо програма пишеться на асемблері вручну.
Загалом, на можливість ефективного розпаралелювання програми здебільшого впливають два фактори: наявність умовних переходів та пов'язаність сусідніх мікрооперацій між собою – залежність результату однієї від результату іншої.
У виконаній роботі виграш від використання конвеєрів виявився незначним – 57 проти 63. Невисокий результат відбувається через сильну пов'язаність мікрооперацій. Ймовірно, для подібного завдання більше підійшла б послідовна обробка, ніж паралельна.
Число тактів (мікрооперацій) для фази виконання операції