ору. Наприклад, операції, що мають по кілька розгалужень, можуть входити в одну довгу інструкцію і, отже, виконуватиметься за один машинний такт. Тому виконання умовних операцій, які залежать від результатів попередніх, може бути реалізовано програмним способом, а не апаратним. Ціна, яку доводиться платити за збільшення швидкодії VLIW-процесора, набагато менше вартості компіляції. Саме тому основні витрати припадають на компілятори. <В
4.4 Труднощі реалізації VLIW
При реалізації архітектури VLIW виникають і інші серйозні проблеми: VLIW-компілятор повинен в деталях "знати" внутрішні особливості архітектури процесору, опускаючись до внутрішнього устрою самих функціональних модулів. Як наслідок, при випуску нової версії VLIW-процесора з великою кількістю обробних модулів (або навіть з тією ж кількістю, але іншим швидкодією) все старе програмне забезпечення, швидше за все, зажадає повної перекомпіляції. Чи треба було при переході, скажімо, на процесор 486 позбавлятися від наявного ПЗ для процесора 386? Звичайно, немає, а от при переході від одного VLIW-процесора до іншого доведеться, і цей розробник повинен врахувати при плануванні своїх витрат - потрібні додаткові кошти на перекомпіляцію. Прихильники VLIW-архітектури на виправдання пропонують розділити процес компіляції на дві стадії. Все програмне забезпечення повинне готуватися в апаратно-незалежному форматі з використанням проміжного коду, який остаточно транслюється в машинно-залежний код тільки після установки на машині користувача. Приклад такого підходу демонструє фонд OSF зі своїм стандартом ANDF (Architecture-Neutral Distribution Format). Але крос-платформенне програмне забезпечення поки ще тільки бажане, а в дійсності розробники ПЗ для ПК найчастіше досить інертні стосовно прийняттю радикально нових технологій. Інша складність - це за своєю суті статична природа оптимізації, яку забезпечує VLIW-компілятор. Як поведе себе програма, коли зіткнеться під час компіляції з непередбачуваними динамічними ситуаціями, такими як, наприклад, очікування введення-виведення? Архітектура VLIW виникла у відповідь на вимоги з боку науково-технічних організацій, де при обчисленнях особливо необхідна велика швидкодія процесора, але для об'єктно-орієнтованих і керованих по подіям програм вона менш підходить, адже саме такі програми складають зараз більшість в світі ПК. Але і це ще не все: а як можна перевірити, що компілятор виконує такі складні перетворення надійно і правильно? Поки ніяк. Ось чому VLIW-компілятори називають "річчю в собі". Однак вирішення складної задачі забезпечення взаємодії апаратного та програмного забезпечення в архітектурі VLIW вимагає серйозних попередніх досліджень. p> Таким чином, гідності VLIW полягають у наступному. По-перше, компілятор може більш ефективно досліджувати залежності між командами і вибирати паралельно виконувані команди, ніж це робить апаратура суперскалярного процесора, обмежена розміром вікна виконання.
друге, VLIW процесор має більш простий пристрій управління і потенційно може мати вищу тактову частоту.
Однак у VLIW процесорів є серйозний чинник, що знижує їх продуктивність. Це команди розгалуження, що залежать від даних, значення яких стають відомі тільки в динаміку обчислень. Вікно виконання VLIW-процесора не може бути дуже великим зважаючи на відсутність у компілятора інформації про залежності, формованих динамічно, в процесі виконання. Цей недолік перешкоджає можливості переупорядочивания операцій у VLIW процесор. Крім того, VLIW реалізація вимагає великого розміру пам'яті імен, багатовхідних реєстрових файлів, великого числа перехресних зв'язків. Можливий також останов, коли під час виконання виникла ситуація, що відрізняється від стану в момент генерації плану виконання (приміром, у час виконання сталося невдале звернення в кеш-пам'ять).
5 Передбачення переходів
Команди, поміщені у вікно виконання, можуть бути залежні за даними. Ці залежності обумовлені використанням одних і тих же ресурсів пам'яті (регістрів, осередків пам'яті) в різних командах. Тому для правильного виконання програми необхідно використання цих ресурсів у приписуваному програмою порядку.
Оскільки при суперскалярной обробці необхідно витягувати з пам'яті декілька команд за один такт для завантаження паралельно працюючих функціональних пристроїв, підвищені вимоги пред'являються до пропускної здатності інтерфейсу В«процесор-пам'ятьВ». У сучасних процесорах застосовуються багаторівневі роздільні кеш-пам'яті даних і команд.
Для зменшення втрат процесорних тактів, пов'язаних з промахами при зверненні до кеш-пам'яті в разі виконання команд розгалуження, до складу системи кешування вводяться засоби передбачення переходів, основне призначення яких - підвищити ймовірність наявності в кешпамяті необхідної команди.
Виконання умовних розгалужень складається з наступних етапів:
- розпізн...