Критерії розробки форматів команд.

План

Контрольні питання

1. Поясните розташування рівня архітектури команд.

2. Якими властивостями має рівень архітектури команд?

3. Дайте пояснення призначення завдань рівня команд.

 

1. Критерії розробки форматів команд.

2. Формати команд.

 

Якщо розроблювачам потрібно вибрати формати команд для їхньої машини, вони повинні взяти до уваги ряд факторів. Не можна недооцінювати складність цього

розв'язку. Якщо комп'ютер з комерційної точки зору виходить удалим, набір команд може існувати протягом 20 років і більш. Має величезне значення можливість протягом деякого часу додавати нові команди й інші елементи, але тільки в тому випадку, якщо архітектура (і компанія, що створила цю архітектуру) простягне досить довго.

Ефективність конкретної архітектури команд залежить від технології, яка застосовувалася при розробці комп'ютера. За тривалий період часу ця технологія значно зміниться, і деякі характеристики архітектури команд виявляться (якщо оглянутися років на 20 назад) невдалими. Наприклад, якщо доступ до пам'яті здійснюється швидко, те підійде стековая архітектура ( як в IJVM), але якщо доступ до пам'яті повільний, тоді бажане мати безліч регістрів ( як в Ultrasparc III). Тем читачам, які вважають, що вибір зробити просто, ми пропонуємо побрати аркуш паперу й записати наступні припущення:

? Яка буде типова частота тактового генератора через 20 років?

? Яке буде типовий час доступу до ОЗУ через 20 років?

Акуратно складете цей аркуш паперу й сховайте його в надійному місці, а через 20 років розгорніть і прочитайте, що на ньому написане. Ті з вас, хто прийняв цей виклик, можуть, щоб не бруднити папір, виставити свої пророцтва в Інтернеті.

Навіть далекоглядні розроблювачі не завжди можуть зробити правильний вибір. А якби й змогли, то проробили б недовго, оскільки якщо пропонована ними архітектура команд виявиться дорожче, чим у конкурентів, компанія довго не протримається.

Якщо мова йде про однакові машини, то краще мати короткі команди, чому довгі. Програма, що полягає з п 16-розрядних команд, займає у два рази менше простору пам'яті, чому програма з п 32-розрядних. Оскільки ціни на пам'ять постійно падають, цей фактор не мав би значення в майбутньому, але, на жаль, програмне забезпечення розростається набагато швидше, чим знижуються ціни.

Більше того, мінімізація розміру команд може ускладнити їхнє декодування й перекриття. Отже, прагнення зменшити розмір команд повинне врівноважуватися прагненням скоротити час їх декодування й виконання.

Є ще одна дуже важлива причина мінімізації довжини команд, і вона стає усе важливіше зі збільшенням швидкості роботи процесорів: пропускна здатність пам'яті (число битов у секунду, яке пам'ять може надавати). Значне підвищення швидкодії процесорів за останнє десятиліття не відповідає збільшенню пропускної здатності пам'яті. Обмеження тут пов'язані з нездатністю системи пам'яті передавати команди й операнды з тою же швидкістю, з якої процесор може їх обробляти. Пропускна здатність пам'яті залежить від технології розробки. Що зустрічаються на цьому шляху труднощів мають відношення не тільки до основної пам'яті, але й до всіх видів кеш-пам'яті.

Якщо пропускна здатність кеш-пам'яті команд становить t біт/з, а середня довжина команди — r біт, то кеш-пам'ять здатна передавати якнайбільше

t/r команд у секунду. Відзначимо, що це — верхня межа швидкості, з якої процесор може виконувати команди, хоча в цей час уживають спроби подолати даний бар'єр. Ясно, що швидкість, з якої можуть виконуватися команди ( тобто швидкодія процесора), може обмежуватися довжиною команд. Чим коротше команди, тем швидше працює процесор. Оскільки сучасні процесори здатні виконувати кілька команд за один цикл, то виклик декількох команд за цикл обов'язковий. Цей аспект застосування кеш-пам'яті команд робить розмір команд важливим критерієм, який потрібно враховувати при розробці.

Ще один критерій — достатній обсяг простору у форматі команди для вистави всіх необхідних операндов. Машина, що підтримує 2п операцій і довжину команди менш п біт, неможлива. У цьому випадку в коді операції було б недостатньо місця для того, щоб указати, яка потрібна команда. До того ж історія знову й знову доводить, що обов'язково потрібно залишати велику кількість вільних кодів операцій для майбутніх доповнень набору команд.

Третій критерій пов'язаний із числом битов в адресному полі. Розглянемо проект машини з 8-розрядними символами й основною пам'яттю, яка повинна містити 232символів. Розроблювачі вільні були приписати послідовні адреси блокам по 8, 16, 24 або 32 біта.

Представимо, що б трапилося, якби команда розроблювачів розбилася на дві воюючі групи, одна з яких затверджує, що основною одиницею пам'яті повинен бути 8-розрядний байт, а інша вимагає, щоб основною одиницею пам'яті було 32-розрядне слово. Перша група запропонувала б пам'ять із 232 байт із номерами 0, 1, 2, 3,4 294 967 295. Друга група запропонувала б пам'ять із 230 слів з номерами 0, 1, 2, 3, 1 073 741 823.

Перша група скаже, що для того, щоб зрівняти два символи при організації по 32-розрядним словам, програмі доводиться не тільки викликати з пам'яті слова символи, що містять ці, але й виділяти відповідний символ з кожного слова для порівняння. А це зажадає додаткових команд і, отже, додаткового простору. 8-розрядна організація, навпаки, забезпечує адресацію кожного символу, що значно спрощує процедуру порівняння.

Прихильники 32- розрядної організації скажуть, що їх проект вимагає всього лише 230окремих адрес, що дає довжину адреси всього 30 біт, тоді як при 8-розрядній організації потрібно цілих 32 битка для звертання до тієї ж самої пам'яті. Якщо адреса коротка, то й команда буде більш короткою. Вона займе менше простору в пам'яті, і до того ж для її виклику буде потрібно менше часу. У якості альтернативи вони можуть зберегти 32-розрядну адресу для звертання до пам'яті в 16 Гбайт замість якихось там 4 Гбайт.

Цей приклад демонструє, що для одержання оптимальної дискретності пам'яті потрібні більш довгі адреси й, отже, більш довгі команди. Одна крайність — це організація пам'яті, при якій адресується кожний біт (наприклад, Burroughs В1700). Інша крайність — це пам'ять, що полягає з дуже довгих слів (наприклад, серія CDC Cyber містила 60-розрядні слова).

Сучасні комп'ютерні системи прийшли до компромісу, який, у якімсь змісті, об'єднав у собі гірші якості обох варіантів. Вони вимагають, щоб адреси були в окремих байтів, але при звертанні до пам'яті завжди зчитуються одне, два, а іноді навіть чотири слова відразу. У результаті зчитування одного байта з пам'яті на машині Ultrasparc III одноразово викликаються мінімум 16 байт, а іноді й увесь рядок кеш-пам'яті розміром 64 байта.