ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6840
Скачиваний: 22
193
Розглянемо далі архітектури комп'ютерів, у яких відсутні конфлікти команд. До них, зокрема, належать комп'ютери з довгим форматом команди
Архітектура комп'ютерів з довгим форматом команди (КДФК), англійський еквівалент VLIW (Very Long Instruction Word), бере свій початок від паралельного мікрокоду, що застосовувався в комп ютерах CDC6600 і IBM 360/91. У 70-х роках багато комп'ютерних систем оснащувалися додатковими векторними процесорами обробки сигналів, що використовували довгий формат команди. Зокрема, до таких процесорів належали процесори АР-120В, AP-190L та інші фірми FPS.
Першими універсальними комп'ютерами з архітектурою КДФК стали міні-супер-комп ютери, випущені на початку 1980-х років компаніями MultiFlow, Culler і Cydrome, але вони не мали комерційного успіху. Наприклад, комп'ютер компанії MultiFlow 7/300 використовував два арифметико-логічні пристрої для цілих чисел, два арифметико-ло-гічні пристрої для чисел з рухомою комою і блок логічного галуження. Його 256-роз-рядний довгий формат команди містить поля для восьми 32-розрядних команд. В цих комп'ютерах були використані планувальник обчислень і програмна конвеєризація, які є основою технологи компілятора КДФК
Архітектура КДФК передбачає наявність багатьох незалежних функціональних пристроїв. Для забезпечення паралельного виконання декілька команд пакуються в один пакет, який в подальшому будемо називати в язанкою команд, та поступають на виконання. В'язанка команд може включати, наприклад, команди над числами з фіксованою та рухомою комою, команду звернення до пам яті та команду переходу, як це показано на рис. 5.26. Така в'язанка команд матиме набір полів команд для кожного функціонального пристрою, що призводить до кратного збільшення її довжини порівняно з однією командою. Як видно з рисунка, кожне з цих полів керує відповідним функціональним пристроєм, а обмін даними між пристроями здійснюється через інтегрований багато-портовий регістровий файл.
194
Завдання ефективного планування паралельного виконання команд в комп'ютері з довгим форматом команди повністю лягає на компілятор. Компілятор з послідовності команд початкової програми генерує в'язанку команд шляхом проглядання програми як в межах, так і за межами лінійних ділянок програми без галужень. Для забезпечення коректності виконання операцій компілятор має бути здатним визначати можливість появи конфліктів при виконанні команд. У певних ситуаціях, коли компілятор не може зробити заключення, що конфлікт не відбудеться, наприклад, у випадку звернення до масиву, коли індекс обчислюється під час виконання програми, операції не можуть плануватися для паралельного виконання. Відповідно це призводить до зниження продуктивності.
Компілятор визначає ділянку програми без циклів, яка стає кандидатом для формування в'язанки команд. Для збільшення розміру тіла циклу широко використовується методика розкручування циклів, що призводить до утворення великих фрагментів програми, що не містять зворотних дуг.
Якщо виконанню підлягає програма, що має тільки переходи вперед, компілятор робить евристичний прогноз вибору умовних гілок. Шлях, що має найбільшу вірогідність виконання (його називають трасою), використовується для оптимізації, що проводиться з врахуванням конфліктів за даними між командами і обмежень за апаратними ресурсами. Під час планування генерується в'язанка команд. Всі команди, які входять до в'язанки команд, видаються одночасно і виконуються паралельно. Після обробки першої траси планується наступний шлях, що має найбільшу вірогідність виконання (попередня траса більше не розглядається). Процес пакування команд послідовної програми у в'язанки команд продовжується до тих пір, поки не буде оптимізована вся програма.
Ключовою умовою досягнення ефективної роботи комп'ютера з довгим форматом команди є коректний прогноз вибору умовних гілок. Відмічено, наприклад, що прогноз умовних гілок для наукових програм часто виявляється точним. Повернення назад є у всіх ітераціях циклу, за винятком останньої. Таким чином, прогноз буде коректний в більшості випадків. Інші умовні гілки, наприклад, гілка обробки переповнення і перевірки граничних умов (вихід за межі масиву), також є надійно передбачуваними.
З погляду архітектурних ідей комп'ютер з довгим форматом команди можна розглядати як розширення архітектури комп'ютера з простою системою команд, Оскільки тут
195
також довжина команди є сталою, апаратні ресурси плануються статично, та віддається перевага програмному вирішенню конфліктів.
В архітектурі комп'ютера з довгим форматом команди, крім того, принцип заміни керування під час виконання програми на планування під час компіляції поширений і на систему пам яті. Для забезпечення зайнятості конвеєрних функціональних пристроїв тут необхідна пам ять з високою пропускною спроможністю. Одним із сучасних підходів до збільшення пропускної спроможності пам яті є використання розшарування пам'яті, причому можливі конфлікти доступу до пам'яті визначає спеціальний модуль компілятора модуль запобігання конфліктам
Таким чином, розпаралелювання у комп'ютерах з довгим форматом команди виконується виключно на етапі компіляції під час формування в язанок команд, тобто статично. Так як неможливо наперед передбачити розв'язання усіх видів залежностей, від-компільовані програми вимагають ретельного налагоджування. Негативно впливають також ефекти невпорядкованого завершення виконання команд. Саме тому надійність виконання програми тут зменшена порівняно з суперскалярним варіантом архітектури комп'ютера. Тобто, цей підхід дозволяє досягти максимуму продуктивності, але є прийнятним лише у певних застосуваннях комп'ютерних засобів. Перевага КДФК в потенційній продуктивності найбільш відчутна в серверних задачах, де паралельно опрацьовують декілька процесів (ниток), в наукових задачах, задачах тривимірної візуалізації та в задачах обробки сигналів (де, зокрема, застосовуються процесори ADSP21XX фірми Analog Devices та TMS320C6X фірми Texas Instruments, які належать до вказаної архітектури).
Архітектуру КДФК запроваджено у новітніх процесорах Alpha фірми DEC та ІА-64 фірми Intel. Останній процесор оптимізовано для виконання серверних задач Як приклад на рис. 5.27 приведено структуру ядра процесора TMS320C6X фірми Texas Instruments, в якому використано довгий формат команди. В'язанка команд цього процесора складається з восьми 32-розрядних команд. Тут використано два тракти обробки даних А та В, кожний з яких має по 4 функціональні блоки та свій багатопортовий регістровий файл.
Тракти обробки даних А і В є однотипними та мають в своєму складі наступні функціональні пристрої: L - АЛП, S - пристрій зсуву та АЛП, М - перемножувач, D - формувач адрес пам'яті. В'язанка команд зчитується з пам'яті команд (On-Chip Program Memory) та поступає до блоку диспетчеризації (Dispatch Unit), який здійснює розподіл команд у відповідні функціональні пристрої.
196
5.7. Комп'ютери з комбінованою архітектурою
При реалізації архітектури КДФК виникають серйозні проблеми. Компілятор цього комп'ютера повинен в деталях враховувати внутрішні особливості процесора, аж до організації роботи його функціональних пристроїв. Як наслідок, при випуску нової версії комп'ютера з більшою кількістю функціональних пристроїв доводиться радикально переписувати і компілятор. Інша проблема - це за своєю суттю статична природа оптимі-зації, яку забезпечує компілятор КДФК. Важко передбачити, як, наприклад, поведеться компілятор, коли зіткнеться під час компіляції з непередбаченими динамічними ситуаціями, такими як очікування введення/виведення. Тому розробники сучасних швидкодіючих комп'ютерів починають відходити від чистої архітектури КДФК
У 2000 році корпорація Трансмета випустила процесор Crusoe, сумісний із системою команд процесора х86, який характеризується високою продуктивністю та зниженою споживаною потужністю. Покращання характеристик досягнуто шляхом заміни відчутної частки апаратури процесора допоміжною, але обов'язковою, програмною оболонкою Процесор Crusoe складається з апаратного ядра та програмної оболонки, яка формує програмний код для цього ядра. Ядром є нескладний КДФК, здатний виконувати до чотирьох простих команд в кожному такті. Доповнення апаратного ядра програмною оболонкою для формування програмного коду створює ефект присутності повноцінного набору апаратних засобів архітектури х86. Програмну оболонку формування коду називають Code Morphing™ тому, що вона динамічно відбиває ("morphs") зовнішні (складні) команди процесора х86 у внутрішні (спрощені) в'язанки команд апаратного ядра
Технологія Code Morphing™ фірми Трансмета змінює традиційні методи проектування процесорів. Практична апробація того, що серійні процесори можна реалізувати як гібрид програмних і апаратних засобів, суттєво розширила можливості проектувальників по вибору та впровадженню оптимальних рішень. По перше, паралельна робота проектувальників апаратного ядра процесора та системних програмістів, які розробляють програмну оболонку, сприяє скороченню термінів розробки. По друге, зовнішня програмна оболонка формування коду із в язанок команд для ядра процесора забезпечує незалежний від прихованої апаратної архітектури розвиток програмних засобів комп'ютерної системи в цілому тобто системних та прикладних програм
Ядро процесора включає два функціональні пристрої для операцій з фіксованою комою, функціональний пристрій для операцій з рухомою комою, функціональний пристрій звернення до пам'яті (load/store) та функціональний пристрій виконання умовних переходів (рис. 5.28).
197
Тут ADD - операція додавання з фіксованою комою, FADD - операцією додавання з рухомою комою, LD - завантаження подвійного слова, a BRCC - умовний перехід за деякою умовою (Conditional Code Branch).
В'язанка команд процесора Crusoe отримала назву молекули. Вона має довжину 64/128 бітів та вміщує чотири команди (чотири атоми). Усі атоми в межах молекули виконуються паралельно. Формат молекули прямо визначає зв'язок атома із конкретним функціональним пристроєм, що значно і спрощує, і прискорює апаратні засоби. Самі молекули процесор опрацьовує із збереженням черговості, тобто без використання складних апаратних засобів невпорядкованого опрацювання. Для забезпечення ефективного використання процесора мінімізується кількість незаповнених атомів, а у випадках несумісності атомів за паралельністю, на місце відсутнього атома вставляється пуста операція.
Програма Code Morphing є фундаментальною системою динамічної трансляції, що транслює команди однієї архітектури (в даному випадку КССК процесора х86) в команди іншої архітектури (КДФК). Програму Code Morphing розміщено в ПЗП процесора і вона є першою програмою, що виконується при завантаженні процесора. Рис. 5.29 ілюструє зв'язок між кодом процесора х86, програмою Code Morphing та ядром процесора Crusoe.
Завдяки тому, що програма формування коду КДФК, а саме, Code Morphing, ізолює програми процесора х86 (системні та прикладні разом із BIOS і операційною системою) від апаратури процесора Crusoe із притаманною йому системою команд КДФК, цю систему команд можна змінювати без жодного виливу на систему команд процесора х8б. Але при зміні архітектури КДФК певних змін зазнає і програма Code Morphing. Проте зміни до програми формування коду Code Morphing треба виконувати лише один раз на кожну зміну архітектури ядра.
Приховування реальної архітектури рівня машинних команд за шаром фірмової програми Code Morphing дозволяє уникнути проблем, притаманних чистим КДФК. Чисті КДФК змушують розробника компілятора враховувати усі деталі роботи конвеєра. При