Інтелектуалізація векторизуючих компіляторів для мікропроцесорів з довгим командним словом
Розглядаються питання інтелектуалізації компіляції програм для мікропроцесорів з довгим командним словом. Розглянуто експертну систему оригінального век-то-ри-зую-чого компілятора. Наведено приклади інтелектуальних настроювань компілятора та можливостей інтелектуалізованого генератора коду. Розглядаються подальші перс-пек-тиви розвитку програмної системи.
Вступ
У зв'язку з бурхливим розвитком мікроелектроніки та мікропроцесорної тех-ніки зараз з'являється чимало роз-ро-бок мікропроцесорів (МП), що ма-ють архітектуру з довгим командним словом (ДКС), які інакше називаються суперскалярними МП. Залежно від принципу побудови процесора МП з ДКС можна умовно розділити на два класи за типом генерації машинного коду:
з оптимізацією послідовного ко-ду — МП виконують послідовну прог-раму внаслідок сумісності із ста-ри-ми моделями, але мають на кристалі внутрішню логіку для векторизації пос-лідовної машинної програми та її ви-конання;
з векторизованим кодом — МП виконують вже векторизовану ком-пілятором програму машинною мовою.
У першому випадку, наприклад МП Pentium [1, ], який є супер-ска-ляр-ним з довжиною командного слова два, функцію векторизації виконують кіль-ка мільйонів транзисторів, що дає пе-ре-ваги в сумісності коду, проте не-до-лі-ком є зниження ефективності і під-ви-щен-ня енергоспоживання. Компілятор ге-нерує оптимізований послідовний код [2], уникаючи складних інструкцій та розташовуючи певним чином еле-мен-тарні інструкції.
В другому випадку, наприклад МП ADSP-21060 [3], необхідний спе-ціа-лі-зований векторизуючий компілятор, що генерує векторизований машинний код. Часто такого компілятора з мови високого рівня немає і тому доводиться програмувати мовою асемблера [4]. Останнє стосується спеціалізованих МП, призначених для цифрової обробки сиг-налів (ПЦОС), а зараз і ПЦОС з ДКС. Відсутність векторизуючого ком-пі-лятора згубно позначається на про-су-ван-ні МП на ринку — перспектива прог-рамування на асемблері означає, що буде витрачений великий час і ре-сур-си на програмування, а у випадку пе-реходу на іншу платформу програму доводиться переписувати.
Розробка компілятора для певної серії МП проблеми не вирішує через великі відмінності в архітектурах різ-них МП та через тенденції до роз-роб-ки оригінальних МП на базі прог-ра-мо-ва-них логічних матриць (ПЛМ) для ок-ре-мих застосувань.
У статті розглядається побудова векторизуючого компілятора для МП ADSP-21060 [2], який може бути легко настроєний на інші моделі процесорів з архітектурою, що відрізняється від ADSP-21060. Векторизуючий ком-пі-ля-тор є основною частиною системи ав-то-матизації розробки програмного за-без-печення для МП з ДКС «Святогор».
Мета розробки системи «Святогор»
Досягнення сучасної електроніки дозволяють у домашніх умовах ство-рю-ва-ти складні цифрові пристрої на базі ПЛМ, зводячи розробку цифрового елект-ронного пристрою до написання прог-рами мовою VHDL [5] або Verilog та налагодження структури пристрою в інтерактивному середовищі, без необ-хід-ності купівлі цифрових інтегральних мікросхем та налагодження пристроїв за допомогою цифрових логічних ана-лі-заторів. Фірми-виробники Altera і Xilinx поставляють на ринок ПЛМ з кіль-кістю вентилів від двох тисяч до двох мільйонів. Характеристики таких ПЛМ дозволяють проектувати прист-рої, за функціональністю аналогічні ПЦОС провідних виробників Analog Devices та Texas Instruments, які за пі-ко-вою обчислювальною потужністю пе-реважають фабричні моделі. Пікова обчислювальна потужність особливо ве-лика в МП з ДКС, де вона прямо про-порційна довжині команди МП.
Пікова обчислювальна по-туж-ність не характеризує цілком швид-ко-дію процесора в реальних умовах. Швид-кодія значно знижується при не-об-хідності частих звертань до пам'яті або наявності ділянок, які не можуть бути векторизовані. Проте найбільшою проблемою є необхідність мати спе-ціаль-не програмне забезпечення — се-ре-довище розробки, що включає ком-пі-лятор, асемблер, складальник (лін-кер), набір системних бібліотек, на-ла-год-жувач, емулятор. Якщо створення асемблера, налагоджувача і емулятора достатньо тривіальне, то створення век-торизуючого компілятора є над-зви-чай-но складним завданням, особливо для МП з архітектурою ДКС з роз-ши-ре-ною системою команд, призначених для цифрової обробки. До того ж, часто певна конфігурація МП приз-на-че-на для ефективного розв'язання ок-ре-мих завдань, а деякі МП мають ори-гі-нальні функціональні пристрої, необ-хід-ні для спеціальних обчислень. Таким чином, проблема відсутності прог-рам-но-го забезпечення стає важливішою роз-робки самого МП — розробка но-во-го може стати невигідною.
Зазначимо, що ця проблема при-та-манна цілій низці моделей ПЦОС ві-до-мих фірм — наприклад, компілятор для серії ADSP-21k фірми Analog Devices ігнорує специфіку архітектури процесора.
Проблема відсутності век-то-ри-зую-чого компілятора може вирі-шу-ва-ти-ся налагодженням програми мовою ви-сокого рівня на персональній ЕОМ, а потім ручним її кодуванням на асемб-ле-рі цільового процесора або ж прог-ра-му-ванням завдання тільки на асемблері цільового процесора. Виробники ПЦОС пропонують розширені варіанти мов високого рівня з макросами, що транс-лю-ються в асемблерні інструкції від-по-від-ного ПЦОС [3]. Але таке рішення приз-водить до немобільності програми, написаної мовою високого рівня.
При розробці системи "Свя-то-гор" малися на меті:
побудова векторизуючого ком-пі-лятора для нових МП з ДКС;
спрямованість системи на під-трим-ку ПЦОС;
можливість настроювання сис-те-ми на різні архітектури, а не тільки на певну серію процесорів, як, на-прик-лад, у проекті "Trimaran" [6];
можливість підтримки кількох мов високого рівня;
створення бази для по-даль-шо-го розширення базового компілятора модулями розпаралелювання для муль-ти-процесорних машин із спільною па-м'яттю (кластера ADSP-21060, TI Cx80, NM 6403), модулями аналізу програм
та ін.
Архітектура компілятора системи "Святогор" описана в [7].
Необхідність інтелектуальної ге-нерації коду для сучасних МП з ДКС
Звичайні МП із ДКС та ПЦОС із ДКС дещо відрізняються між собою за внутрішньою архітектурою. По-перше, це пов'язано з фон-нейманівскою ар-хі-тек-турою звичайних МП та гар-вард-сь-кою архітектурою ПЦОС [1, 3], струк-ту-рою внутрішнього регістрового фай-ла, специфікою використання регіст-рів, можливостями предикатного ви-ко-нан-ня команд, різноманітними особ-ли-вос-тями команд передачі керування. Тому при розробці векторизуючого ком-пілятора вирішено орієнтуватися на клас МП, що підтримують ДКС і мають супероперативну пам'ять у вигляді файла регістрів з довільним доступом. Розробка системи "Святогор" у першу чергу спрямована на підтримку но-віт-ніх МП з архітектурою з ДКС та спе-ціа-лізованих