спискових розкладів [21]. Але в су-час-них МП з ДКС та ПЦОС з ДКС іс-ну-ють архітектурні особливості, що не ви-користовуються стандартною схе-мою генерації коду. Наведемо прик-лади:
ПЦОС має блок помножувача з суматором. Цей суматор звичайно є прецизійним, тому що його розрядність набагато перевищує розрядність ре-зуль-тату множення (при 32-х роз-ряд-них множниках 80-розрядний суматор). Проте в сучасних алгоритмах цей прист-рій використовується дуже рідко, наприклад у фірмовому посібнику з прог-рамування ADSP-21060 [22] у прик-ла-дах програм цей блок взагалі не згадується.
Існують команди, що не ви-ра-жа-ються засобами стандартних МВР. Це численні режими виконання ариф-ме-тичних операцій, наприклад мно-жен-ня з різноманітними режимами ок-руглення.
Переміщення операндів та ре-зультатів з пам’яті у регістри. Довгі команди ADSP_21060 можуть змінювати до 4-х регістрів за такт, тому різко під-вищується навантаження на регіст-ро-вий файл. Доступ до пам'яті стає "пляш-ковою шийкою" всієї системи. Ефек-тивне завантаження пристроїв МП можливе тільки у випадку вико-рис-тання алгоритму, розробленого для МП такого типу.
Проблеми генерації коду мають у своїй основі як мінімум дві причини:
1. Загальна причина по син-так-си-су алгоритму в загальному випадку нічого не можна дізнатися про його се-мантику (теорема Райса в теорії ал-го-рит-мів [23]). Подолання даного об-ме-жен-ня можливе у випадку подання прог-рамістом директив генератору ко-ду або впровадження в генератор коду системи штучного інтелекту, адек-ват-ної людському мозку.
2. Специфічна причина — не-адап-тованість алгоритму до даного МП. Припустимо, для ADSP-TS001 нера-ціо-наль-но застосовувати стандартний ал-го-ритм цифрової фільтрації yj??(ai*xi), тому що він не використовує 75% обчислювальної потужності процесора.
У випадку, коли програмістом по-да-ні необхідні директиви та алгоритм адаптований до наявних ресурсів МП, генерація коду може бути ефективно проведена з використанням таблиці опи-су процесора та таблиці порад.
Опис цільового мікропроцесора
Основна частина налагоджень опи-сує безпосередньо структуру про-це-сора, але, на відміну від описів апа-рат-ної реалізації мовою VHDL, опис про-цесора є високорівневим. Описи про-цесора поділяються на описи ре-гіст-рового файла і зовнішньої пам'яті та описи команд.
Описи регістрового файла і зов-ніш-ньої пам'яті. Таблиці з описами ре-гіст-рів і просторів зовнішньої пам'яті ви-користовуються при зіставленні змін-них ієрархічного графа з конк-рет-ни-ми комірками пам'яті та регістрами і виборі необхідних команд обміну з таб-лиці команд. Простори пам'яті ха-рак-теризуються їх ідентифікатором (у ви-падку архітектур з більш ніж дво-ма просторами), шириною комірки в бі-тах і довжиною простору в комірках.
Описи регістрів складніші, тому що в одному випадку (ADSP-21060) ре-гіст-ровий файл поділяється на частини: операції в складі довгої команди беруть операнди лише з певних частин файла або ж певні засоби адресації, засто-сов-ні тільки до певних регістрів. В іншому випадку є технологічні обмеження — наприклад, у TMS Cx60 не більш 4-х команд можуть використовувати ре-гістр у якості операнда. Найбільш важ-ливим параметром в описі регістрів є тип значення. Тип значення регістра не обмежується цілим числом, числом з плаваючою комою або адресою. Так, для ADSP-21060 введені типи "адреса-ба-зи-буфера", "довжина-буфера", "крок", які використовуються глобальним оп-ти-мізатором. Такий опис регістрів доз-во-ляє легко змінювати опис ар-хі-тек-ту-ри та експериментувати при змінах оп-ти-мізуючого компілятора.
Описи команд мікропроцесора. Для опису довгих команд МП вво-дить-ся ієрархічна структура. Ієрархія скла-да-ється з трьох рівнів: 1) повні ко-ман-ди; 2) секції атомних команд; 3) атомні команди. Для команд надається опис змінюваних ознак МП і зіставлення ознак з умовами. Існує також різновид секцій атомів — списки атомних ко-манд, що не можуть виконуватися од-ночасно.
Атомні команди являють собою опис базових операцій, виконуваних МП. Наприклад, опис операції до-да-ван-ня двох цілих чисел має вигляд:
команда ==+ц о-о-к-о,
ц-ариф-рег, довільний-р-р, ц-ариф-рег, довільний -р-р,
с-плюс, 0, ц-ариф-рег, довільний -р-р, арифм-т,
Опис означає, що команда "???ц" класу "о-о-к-о" має два операнди і один результат, виконує атомну операцію "плюс" над двома будь-якими регіст-ра-ми типу "ц-ариф-рег", повертає ре-зуль-тат у будь-який регістр того ж типу і змі-нює ознаки, маска яких збе-рі-га-ється в "арифм-т". Цей опис є одним з найпростіших серед визначень атом-них команд МП ADSP-21060.
Описи атомних команд не об-ме-жуються арифметичними операторами, окремо виділяються команди звертання
до зовнішньої пам'яті, команди пе-ре-да-чі керування та спеціальні команди: "немає операції", інтегрована команда циклу тощо.
Секція атомних команд являє со-бою опис виконавчого поля команди МП. Залежно від коду поля можуть вико-нуватися різні атомні команди. Наприк-лад, наступний опис є описом операцій, що можуть бути виконані в базовій команді переміщення вмісту універсального регістра в пам'ять для ADSP-21060.
секція-атомів "у-пам’ять"
2, =пд-ру, =дпост-і, 2, =пп-ру, =ппост-і,
1, =пд-ру1, 1, =пп-ру1,
2, =ру-пд, =дпост-і, 2, =ру-пп, =ппост-і,
1, =ру-пд1, 1, =ру-пп1,
0,
Секція складається з ряду пос-лі-дов-ностей команд з позначеною кіль-кіс-тю виконуваних операцій. В об'єк-т-ний код може бути скомпільована тіль-ки одна послідовність.
Повні команди є переліком усіх команд цільового процесора, опис їх зведений до об'єднання кількох списків атомів. Наприклад:
п-команда к21060-3 3,
опція предикат OR, 1,
опція, "обчислення",
0, "у-пам’ять",
Даний опис призначений для ко-ман-ди ADSP_. Команда скла-да-єть-ся з 3-х складових: 1) необов'язкового предиката умовного виконання, 2) не-обо-в'язкової секції атомів "обчислення" 3) обов'язкового звертання в пам'ять. Для ADSP-21060 повний опис команд міс-тить 22 описи.
Відзначимо, що наведені таблиці описів приблизно відповідають базам фактів у Пролог-програмах [24], а про-це-дура обробки описів приблизно від-по-відає Пролог-технології зіставлення зразків із шаблонами.
Крім цих таблиць засто-со-ву-ють-ся зіставлення ознак — для вказівки як умовні вирази, що повертають зна-чен-ня "неправда" або "істина", можуть бу-ти ефективно відтрансльовані в об'єкт-ний код цільового МП. Операції по-рів-нян-ня перетворюються в список ознак і далі визначається, які команди необ-хід-но генерувати.
Окремо описуються недозволені комбінації атомних команд. Так, у ADSP-21060 деякі команди, що пра-цю-ють з адресними генераторами, дають при певних аргументах неправильні ре-зультати [3], що пов'язано