
- •Вказівки до виконання лабораторних робіт 3 і 4
- •1 Лист 6 . Обчислювальна система з буферною пам'яттю даних.
- •1.1. Опис системи.
- •1.2. Робота обчислювальної системи з буферною пам'яттю даних.
- •1.3. Алгоритми обслуговування буферної пам'яті даних.
- •2 Лист 6 . Обчислювальна система з асоціативною пам'яттю.
- •2.1. Опис системи.
- •2.2. Робота обчислювальної системи з асоціативною пам'яттю.
- •3. Формати слів даних
- •4. Опис команди і набір команд.
- •1. Арифметичні команди, призначені безпосередньо для обчислення.
- •2. Команди управління, призначені для організації циклів і галужень.
- •5. Графічне представлення команд
- •6. Асемблер обчислювальної системи
- •6.1 Команди і їх опис
- •6.2 Формальний опис мови програмування:
- •6.3 Приклад програми на асемблері циклів і умовних переходів з прикладу
- •7. Приклад програмування послідовно-паралельних алгоритмів
- •Приклад
- •8. Приклад програмування циклів і умовних переходів
- •Приклад
- •9. Лабораторний практикум
- •9 Лист 6 .1 Завдання на лабораторну роботу №3.
- •9 Лист 6 .2 Завдання на лабораторну роботу №4.
- •Кількість ітерацій
- •Пристрій виводу
Приклад
Виконаємо програмування функції f=(-b+sqrt(b2-4ac)) /2a. ЯПФ цієї функції матиме вигляд (суміщені перші два етапи):
Програма представлена у файлі прикладу «Example.alg».
8. Приклад програмування циклів і умовних переходів
Програмування циклів на обчислювальній системі під управління потоком даних пов'язане з поряд особливостей. Розглянемо їх на приведеному нижче прикладі.
Команда в обчислювальній системі готова до виконання якщо для неї готові керуюче слово і обидва операнди. Програмування циклів пов'язане з повторюваністю виконання певних команд. Операнди команд тіла циклу можна розбити на два класи. Перший клас – операнди, що обчислюються на попередній ітерації, до них так само відноситься і змінна циклу (у прикладі – i, f). На першому кроці операнди поступають з пристроїв введення, а потім з кожної наступної ітерації. Так, для команди 4 (порівняння змінної циклу з кінцевим значенням) з пристрою введення поступає початкове значення змінної циклу i=1, а наступні змінною поступають з попередньої ітерації. Другий клас операндів – константи, значення яких не міняється в циклі. До таких операндів відносяться кількість ітерацій циклу, константи для виконання операцій. Під час вступу команди на обчислювальний блок операнди з відповідних елементів пам'яті операндів/асоциативній пам'яті віддаляються за винятком констант. Вони вводяться спочатку з пристрою введення і знаходяться у відповідному елементі пам'яті. Константи на малюнку нижче позначені зірочкою, а в програмі поле «Константа» такого операнда повинно містити «1». Необхідно пам'ятати, що двох констант у однієї команди бути не може, інакше це приведе до постійного виконання однієї і тієї ж команди, яка весь час знаходитиметься в стані готовності.
Крім того, константи можуть не тільки вводитися з пристроїв введення, але і обчислюватися (наприклад в команді 3 обчислюється константа – кількість ітерацій циклу)
Кожна команда повинна мати операнди з різними номерами (поле «Номер операнда»). Причому в більшості випадках важливий порядок операндів. Наприклад команда «віднімання» виконує операцію «Операнд№0»–«Операнд№1». А для команд управління операнд з номером 1 є службовим (наприклад у вентиля він повинен бути рівний TRUE або FALSE, тобто «1» або «0»).
Результатом операцій «2-Розмножувач» і «N-Розмножувач» є група операндів з різними адресами і однаковими значеннями полів «Номер операнда». Тому команди, для яких призначалися ці операнди повинні їх приймати на однакові входи (наприклад команда №11 обчислює операнди з номером «0» для команд 13 и 7).
Як видно з рисунку цикл містить 3 незалежних гілки: виведення результату, накопичення результату і інкрементування змінної циклу. Важливим елементом циклу є синхронізація незалежних гілок, інакше (див. приклад) при великому об'ємі обчислень в тілі циклу змінна циклу може бути інкрементована кілька разів, і результат обчислень буде невірним. Роль синхронізації виконує «Повторювач» або в прикладі команда №15. Ця команда «затримує» ініціалізацію нової ітерації циклу до тих пір, поки не буде виконано тіло циклу на поточній ітерації.
Команда №14 є допоміжною, служить для перетворення поля «Номер операнда» (див. пункт 3), оскільки команда №12 результатом має операнд з номером «0», а для команди №15 потрібний операнд з номером «1».