Комп'ютери з комбінованою архітектурою
При реалізації архітектури КДФК виникають серйозні проблеми. Компілятор цього комп’ютера повинен в деталях враховувати внутрішні особливості процесора, аж до організації роботи його функціональних пристроїв. Як наслідок, при випуску нової версії комп’ютера з більшою кількістю функціональних пристроїв доводиться радикально переписувати і компілятор. Інша проблема - це за своєю суттю статична природа оптимі- зації, яку забезпечує компілятор КДФК. Важко передбачити, як, наприклад, поведеться компілятор, коли зіткнеться під час компіляції з непередбаченими динамічними ситуаціями, такими як очікування введення/виведення. Тому розробники сучасних швидкодіючих комп’ютерів починають відходити від чистої архітектури КДФК
У 2000 році корпорація Трансмета випустила процесор Crusoe, сумісний із системою команд процесора х86, який характеризується високою продуктивністю та зниженою споживаною потужністю. Покращання характеристик досягнуто шляхом заміни відчутної частки апаратури процесора допоміжною, але обов’язковою, програмною оболонкою Процесор Crusoe складається з апаратного ядра та програмної оболонки, яка формує програмний код для цього ядра. Ядром є нескладний КДФК, здатний виконувати до чотирьох простих команд в кожному такті. Доповнення апаратного ядра програмною оболонкою для формування програмного коду створює ефект присутності повноцінного набору апаратних засобів архітектури х86. Програмну оболонку формування коду називають Code Morphing™ тому, що вона динамічно відбиває (“morphs”) зовнішні (складні) команди процесора х86 у внутрішні (спрощені) в’язанки команд апаратного ядра
Технологія Code Morphing™ фірми Трансмета змінює традиційні методи проектування процесорів. Практична апробація того, що серійні процесори можна реалізувати як гібрид програмних і апаратних засобів, суттєво розширила можливості проектувальників по вибору та впровадженню оптимальних рішень. По перше, паралельна робота проектувальників апаратного ядра процесора та системних програмістів, які розробляють програмну оболонку, сприяє скороченню термінів розробки. По друге, зовнішня програмна оболонка формування коду із в язанок команд для ядра процесора забезпечує незалежний від прихованої апаратної архітектури розвиток програмних засобів комп’ютерної системи в цілому тобто системних та прикладних програм
Ядро процесора включає два функціональні пристрої для операцій з фіксованою комою, функціональний пристрій для операцій з рухомою комою, функціональний пристрій звернення до пам’яті (load/store) та функціональний пристрій виконання умовних переходів (рис. 5.28).
Тут 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 із притаманною йому системою команд КДФК, цю систему команд можна змінювати без жодного впливу на систему команд процесора х86. Але при зміні архітектури КДФК певних змін зазнає і програма Code Morphing. Проте зміни до програми формування коду Code Morphing треба виконувати лише один раз на кожну зміну архітектури ядра.
Приховування реальної архітектури рівня машинних команд за шаром фірмової програми Code Morphing дозволяє уникнути проблем, притаманних чистим КДФК. Чисті КДФК змушують розробника компілятора враховувати усі деталі роботи конвеєра. При цьому найменші зміни у конвеєрі вимагають перепроектування компілятора (не звичайний, а оптимізуючий), що є надто складною ресурсомісткою та кропіткою працею. Зазначеної проблеми для процесора Crusoe просто не існує. З погляду системних програм Crusoe виглядає як стандартний процесор х86.
Описана технологія віртуалізації архітектури комп’ютера зі складною системою команд є принципово новим і ефективним методом декомпозиції та вирішення складних завдань проектування сучасних комп’ютерів. Запропонований фірмою Трансмета програмно-апаратний метод проектування забезпечив вдалий розподіл функцій процесора між його програмною та апаратною частинами, і, тим самим, дозволив знайти компроміс між вартістю та складністю, між продуктивністю та споживаною потужністю.
Програма Code Morphing формування коду КДФК транслює групи команд процесора х86, а не кожну відокремлену команду, як у суперскалярному процесорі. Зрозуміло, що опрацювання групи команд розширює діапазон дій програмного транслятора, що дає йому можливість враховувати семантику фрагмента коду, разом із притаманною фрагментові кореляцією поміж сусідніми командами. Саме це обумовлює перевагу трансляційної технологій Crusoe. Більше того, суперскалярний процесор транслює команду кожного разу, як її виконує. Crusoe виконує трансляцію команди одноразово, зберігаючи результат трансляції у так званій трансляційній кеш пам’яті. Коли виконання фрагмента програми процесора х86 повторюється, Crusoe не виконує повторну трансляцію, а забирає потрібне з трансляційної кеш пам’яті. Зрозуміло, що “компільований” фрагмент коду процесора х86 виконується швидше від “інтерпретованого”.
Програмна, а не апаратна, реалізація трансляції відкриває нові можливості. Адже апаратна реалізація складних алгоритмів трансляції збільшує кількість транзисторів на кристалі та споживану потужність. Crusoe виконує лише одноразову повільну трансляцію при першому проході програми, а всі наступні проходи здійснює швидко, що дозволяє значно підвищити складність та ефективність програмно реалізованих алгоритмів трансляції, підвищивши тим самим характеристики комп’ютерної системи.
Зрозуміло, що програма Code Morphing використовує властивість локалізації (locality of reference) вибирань програмних кодів будь-якої універсальної машини. Апаратура процесора Crusoe опрацьовує отриманий від Code Morphing молекулярний код не хаотично, а впорядковано, за природною чергою. Це гарантує впорядковане опрацювання оригінальних команд процесора х86. Саме молекули однозначно визначають паралелізм рівня машинних команд, тому апаратна реалізація процедури паралельного опрацювання спрощується.