Файл: Мельник А. Архітектура комп\'ютера.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.12.2021

Просмотров: 6793

Скачиваний: 22

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

90

r

т ^

кори

стана абревіа'

1 1 „


Тут наведено два типи команд переміщення - зчитування даних (Load) та запам'ято­вування даних (Store). Вказується також розмір даних: character - 8-розрядні дані, half-word - 16-розрядні дані, short - 32-розрядні дані, long - 64-розрядні дані. Для задання номера регістра в регістровому файлі процесора та номера комірки основної пам'яті, при написанні команди ці номери (адреси) записуються справа від мнемонічного коду операції, наприклад L105,R4 означає передачу даного з комірки пам'яті 105 до регістра R4. Потрібно зазначити, що в комп'ютері IBM S/370 є, крім регістрового файлу для ціло­числових даних, також регістровий файл для даних з рухомою комою. Для позначення цих регістрів в табл. 3.2 використана абревіатура РК, що означає "рухома кома".

Для порівняння в табл. 3.3 як приклад наведені команди переміщення даних комп'ю­тера з спрощеною системою команд DLX. Видно, що тут додались команди обміну між регістрами з фіксованою та рухомою комою.

3.2.4.. Команди передачі керування

Як уже зазначалося, кожна команда має дві фази виконання. Перша фаза - це вибір­ка команди. На цій фазі за вмістом ПЛ з пам'яті в РгК вибирається команда. На другій фазі, яка називається виконанням команди, дешифрується код операції і виконується команда, тобто із основної пам'яті вибираються операнди, виконується арифметична чи логічна операція і запам'ятовуються результати обчислень. На другій фазі при послідов­ному виконанні команд вміст ПЛ збільшується на одиницю, та вказує адресу наступної команди. На рис. 3.5 показано виконання операції віднімання від вмісту комірки А осно­вної пам'яті вмісту комірки В з запам'ятовуванням результату в комірці С, тобто (С) := (А) - (В), з використанням двоадресного формату, коли три команди розміщені в послі­довних комірках пам'яті, і їх адреси зростають в порядку виконання команд, починаючи з деякої комірки основної пам'яті і.


91

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

Існує декілька причин необхідності виконання операцій передачі керування. До най­важливіших з них належать наступні:

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

  • Практично всі програми потребують прийняття деякого рішення - комп'ютер по­винен виконати одні дії при наявності одних умов, та інші дії при наявності інших умов.

  • Коректне компонування великих і навіть середнього розміру програм є достат­ньо важкою задачею. Наявність механізму її представлення малими кусками є дуже ко­рисним.

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

3.2.4.1. Команди переходу

Команди переходу мають в якості одного з операндів адресу команди, яка має бути виконана наступною. Є два типи команд переходу - умовного та безумовного. При без­умовному переході відразу здійснюється перехід до вказаної в адресному полі команди. Найчастіше ці команди є командами умовного переходу, тобто перехід здійснюється за


92

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

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

BRP X - перехід до комірки X, якщо результат додатній;

BRN X - перехід до комірки X, якщо результат від'ємний;

BRZ X - перехід до комірки X, якщо результат рівний нулю;

BRO X - перехід до комірки X, якщо відбулось переповнення.

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

BRE R3, R4, X

задає перехід до комірки X, якщо вміст регістра R3 дорівнює вмісту регістра R4.

На рис. 3.6 показано приклад програми, в якій використано безумовний перехід та умовні переходи з застосуванням обох описаних вище шляхів формування умови.

Зауважимо, що перехід може бути як в напрямку збільшення, так і в напрямку змен­шення адреси. Приклад показує, як умовний та безумовний переходи можуть бути ви­користані для створення повторюваних циклів команд. Команди від комірки 202 до ко­мірки 210 будуть виконуватись повторно, аж поки результат віднімання Y від X не стане рівним нулю.


93

Розглянемо приклад виконання задачі додавання п чисел, яку можна виконати шля­хом послідовного виконання команд (рис. 3.7а), або з використанням команд переходів (рис. 3.7b). Tyт Nj (j = 1,2,...,n) - адреса в пам'яті кожного із n чисел, і (і=1,2,...,п) - адреси розміщення команд, S - адреса розміщення результуючої суми.

Використання переходів вимагає введення додаткових команд очистки Clear RO, задання кількості п повторів виконання тіла програми, зменшення вмісту регістра R1, який використовується як лічильник, а також команди аналізу умови. Разом з тим, вико­ристання переходів зменшує об'єм програм, зокрема в наведеному прикладі взамін п+1 команд, де п - кількість чисел в масиві, використано лише 6 команд.

3.2.4.2. Команди пропуску

Команда пропуску включає передбачувану адресу. Типово пропуск передбачає, що одна команда буде пропущена. Ця команда не вимагає наявності адресного поля. Ти­повим її прикладом є команда increment-and-skip-if-zero (ISZ) - приріст на одиницю та перехід якщо нуль. Розглянемо наступний фрагмент програми (рис. 3.8).


94

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

3.2.4.3. Команди звернення до підпрограм

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

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

На рис. 3.9 показано як на основі підпрограм будувати програми.