КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Конвеєрне виконання команд
Конвеєрне виконання команд подібне до роботи конвеєра складальної лінії на заводі, наприклад автомобільному. На складальній лінії вироби проходять через однакові виробничі стадії. Одночасно на лінії знаходиться кількість виробів, рівна кількості виробничих стадій. Проходячи через всі виробничі стадії, виріб приймає кінцеві параметри. Час виготовлення одного виробу є рівним часу його проходження через всі виробничі стадії, але при виготовленні багатьох виробів, скажемо п, час, який припадає на виготовлення всіх виробів, є рівним: Т = tm + t(n - 1) = t(m + n - 1), де т - кількість виробничих стадій, t - час виконання однієї виробничої стадії, а час, який припадає на виготовлення одного виробу, є рівним: Тв = t(m + n - 1)/n. При n>> m час Тв, який припадає на виготовлення одного виробу, наближається до часу t виконання однієї виробничої стадії. Подібно до виготовлення виробу, команда також має кілька послідовних стадій виконання, як це показано на рис. 3.2. Тому логічним виглядає використання і тут принципу конвеєра. Для початку розглянемо поділ процесу виконання команди на дві стадії: вибірку та виконання. В процесі стадії виконання команди є проміжки часу, коли немає звернень до пам’яті. Цей час може бути використаним для вибірки наступної команди паралельно з виконанням поточної команди. Нарис. 3.13 показано цей підхід. Рис. 3.13. Двоярусний конвеєр виконання команд Конвеєр має два незалежних яруси. Перший ярус виконує операцію вибірки та буферизації (короткотермінового запам’ятовування) команди. Коли другий ярус звільняється від роботи, перший ярус передає йому буферизовану команду. Коли в другому ярусі виконується команда, в першому ярусі вибирається наступна команда. Така операція називається попередньою вибіркою команди (instruction prefetch) або суміщенням вибірки (fetch overlap). Зрозуміло, що описаний процес прискорює виконання команди. Якби операції вибірки та виконання мали однаковий час виконання, то цикл виконання команди міг би бути зменшеним вдвоє. Однак це не зовсім так через наступні причини: 1. Стадія виконання значно довша стадії вибірки, оскільки вона вимагає виконання операцій зчитування та запису операндів та самої операції. Тому перший ярус повинен чекати деякий час, поки звільниться його буфер. 2. При появі команди умовного переходу адреса наступної команди до завершення поточної команди невідома. Тому перший ярус змушений чекати до завершення роботи другого ярусу. Після цього вже другий ярус повинен чекати на завершення роботи першим ярусом. Час, який втрачається через другу причину, може бути зменшений шляхом використання механізму передбачення. Тут може бути використане наступне правило: коли команда умовного переходу поступає з ярусу вибірки на ярус виконання, в ярусі вибірки проводиться вибірка із пам’яті наступної команди після команди умовного переходу. Тоді в випадку відсутності умовного переходу втрат часу не буде. Коли ж буде умовний перехід, то вибрана команда повинна бути знехтувана і вибрана нова команда. Хоча розглянуті дві причини знижують потенційну ефективність двоярусного конвеєра, в цілому виграш незаперечний. Для подальшого підвищення продуктивності потрібно збільшувати кількість ярусів конвеєра. Розглянемо поділ виконання команди на наступні стадії: - Вибірка команди (ВК): зчитування в буфер очікуваної наступною команди. - Дешифрування команди (ДК): визначення типу вибраної команди та специфікаторів операндів. - Визначення адрес даних (ВА): обчислення адрес даних, необхідних для виконання команди з врахуванням можливості використання різних способів адресації. - Вибірка операндів (ВО): зчитування даних із пам’яті в регістри процесора. - Виконання команди (КВ): виконання вказаної операції та, при наявності, запам’ятовування результату в визначеному регістрі. - Запис результату (ЗР): запам’ятовування результату в пам’яті. При такому поділі час тривалості різних стадій виконання команди буде приблизно рівним. Тоді, як видно з табл. 3.5, шестиярусний конвеєр може зменшити час виконання 9 команд з 54 тактів до 14 тактів. Таблиця 3.5
Часова діаграма в табл. 3.5 показує, що кожна команда виконується шляхом проходження через 6 ярусів конвеєра. Разом з тим, не для кожної команди це потрібно Наприклад, команда вибірки не вимагає виконання операції ЗО. Однак при її виконанні можна зробити шостий ярус конвеєра прозорим Також на діаграмі показано, що всі стадії виконуються паралельно. В першу чергу тут прийнято, що не виникає конфліктів при зверненні до пам’яті. Наприклад, операції ВК, ВО та ЗО передбачають звернення до пам’яті. Діаграма допускає, що всі ці звернення можуть здійснюватись одночасно. Більшість систем пам’яті цього не допускають, тому звернення розносяться в часі. Іноді потрібне число може знаходитись в кеш пам’яті, а стадії ВО та ЗО відсутні. Тому конфлікти при зверненні до пам’яті не завжди сповільнюють конвеєр Декілька інших факторів обмежують ріст продуктивності за рахунок використання конвеєра: - неоднаковість часу шести стадій виконання команди приводить до простою деяких з них, як це мало місце в двоярусному конвеєрі; - поява команди умовного переходу може звести нанівець декілька вибірок команд * подібною до команди умовного переходу є команда переривання Табл. 3.6 відображає вплив умовного переходу при виконанні тих же операцій, що й в табл. 3.5.
Таблиця 3.6
Тут прийнято, що команда 3 є умовним переходом до команди 15. Поки команда З виконується, неможливо взнати, яка команда буде наступною. Конвеєр буде вибирати наступні команди (4,5,6,7) і виконувати їх. Наявність умовного переходу визначиться в кінці сьомого такту. Після цього конвеєр повинен звільнитись від непотрібних команд (очиститись). На 8 такті команда 15 поступить в конвеєр і дальше він почне заповнюватись знову. При цьому від 9 до 12 тактів не буде завершено виконання жодної команди. Це є розплата ефективністю за причини неможливості передбачити перехід. На рис. 3.14 показано блок-схему виконання команди в шестиярусному конвеєрі з врахуванням переходів та переривань. Рис. 3.13. Шестиярусний конвеєр виконання команд
В шестиярусному конвеєрі команд появляється й інша проблема, якої не було в двоярусному конвеєрі. Стадія ВА може залежати від вмісту регістра, який змінюється попередньою командою, що знаходиться в конвеєрі. З’являється новий конфлікт, для усунення якого необхідна відповідна логіка. Таким чином, конфлікти конвеєра можуть бути трьох типів: - Конфлікт ресурсів, наприклад, одночасна потреба доступу до пам’яті. Цей конфлікт вирішується шляхом розділення доступу до ресурсу в часі, або шляхом введення додаткового ресурсу, наприклад, кількох блоків пам’яті. - Залежність між даними, коли результат виконання деякої команди, яка іще не завершена, є операндом для наступної команди. Для подолання даного конфлікту існує декілька шляхів. Це може бути введення „пустої” операції пор (яка не виконує дій, але дозволяє ліквідувати конфлікт), введення зв’язків між ярусами конвеєра, що прискорює доступ до потрібного операнда, а також застосування компілятора, здатного передбачати такого типу конфлікти та перевпорядковувати команди програми. - Наявність умовних переходів. В сучасних комп’ютерах для зменшення впливу на ефективність конвеєра цього конфлікту використовується спеціальна логіка передбачення переходу, яка дозволяє знайти вітку, якою програма піде після переходу. Інший підхід - виконання обох віток переходу до того часу, поки напрям переходу стане відомим. В наступних розділах питання підвищення ефективності використання конвеєрної обробки буде розглянуто детальніше.
Дата добавления: 2014-11-06; Просмотров: 2746; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |