logo
AOM / Мельник А

3.2.6. Принципи формування системи команд комп'ютера

При розробці комп'ютера необхідно враховувати багато особливостей вибору сис­теми команд. З одного боку система команд повинна бути функціонально повною, тоб­то комп'ютер повинен забезпечувати виконання всіх заданих функцій. З іншого боку система команд має бути ортогональною, тобто не повинна бути надлишковою. Для нового комп'ютера, який є розширенням відповідної серії, першочерговою є сумісність програми, які виконуються на одному комп'ютері, повинні виконуватись і на іншому комп'ютері. Для збільшення терміну використання важливим є розширення адресного діапазону та однорідності адресного простору. І, нарешті, важливим є розмір та органі­зація самого формату команди. Розглянемо ці особливості детальніше

Є багато рівнів повноти системи команд. На найнижчому рівні всі комп'ютерні опе­рації можуть бути виконані на базі операції інверсії логічного множення (NAND). Від­повідно команда умовного переходу, яка також зберігає вміст програмного лічильника, забезпечує виконання всіх пересилок в комп'ютері. Тому можна створити повну систему команд на базі цих операцій. Теоретично система команд комп'ютера може включати лише одну команду. Відомий комп'ютер з назвою Single Instruction Computer (SIC), який є прикладом комп'ютера з нижньою межею кількості команд Єдиною командою SIC є команда "відняти та перейти за умови, що отримано негативний результат" (Subtract and Branch if Negative). Зрозуміло, що коли "запрограмувати" цією командою усі інші коман­ди деякої реальної машини, то шляхом повного перебирання можна довести повноту системи команд, яку складено лише з однієї команди sbn.Недоліки SICє зрозумілими, принаймні, на прикладі програмування однією командою операції множення (ділення тощо). Тобто програми на базі простих операцій є дуже складними.

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

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

97

на практиці. Тому кращим є варіант реалізації таких команд на основі інших. Для при­кладу на рис. 3.11 подано середню частоту використання команд передачі керування в різних задачах при обробці даних з фіксованою (темніший колір лінії) та з рухомою ко­мою (світліший колір лінії).

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

Як видно з рисунка, деякі типи команд умовного переходу в вибраних тестових про­грамах не використовуються взагалі (команда „більше ніж" для чисел з фіксованою та рухомою комою, команда „більше ніж або рівне" для чисел з рухомою комою), або ви-

98

користовуються досить рідко. Оскільки ці команди взаємозамінні, немає сенсу реаліза­ції їх всіх і доцільно обмежитись найуживанішими. Подібний аналіз проводиться і для інших типів команд з метою оптимізації системи команд комп'ютера.

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

Існують спеціальні оптимізуючі компілятори, які слідкують за повнотою системи ко­манд та їх ортогональністю.

Сумісність як і повнота та ортогональність має багато рівнів. Це може бути суміс­ність по вихідному коду, або по одному з об'єктних кодів. Близьким до сумісності є по­няття взаємозамінності, тобто можливості виконання тієї ж програми на різних апарат­них засобах.