- •Міністерство освіти і науки україни
- •"Організація та функціонування комп'ютерів"
- •І. Теоретичні відомості
- •1.1. Коротка історія розвитку комп’ютерної техніки
- •1.2. Принципи організації комп’ютера фон-Неймана
- •Іі. Опис архітектури навчального комп’ютера DeComp
- •2.1. Організація навчального комп’ютера – симулятора DeComp
- •2.2. Пульт управління навчального комп’ютера
- •Закладка “Документація до “Навчальної еом”
- •2.4 Закладка “Пристрій підготовки даних”
- •2.4.1 Порядок введення інформації на перфострічку
- •III. Вказівки до виконання лабораторних робіт Лабораторна робота № 1
- •1. Теоретична частина
- •1.1 Загальні поняття про системи числення
- •Позиційні системи числення, які застосовуться у комп’ютерах
- •1.2.1 Двійкова система числення
- •Вісімкова система числення
- •Шістнадцяткова система числення
- •1.3. Переведення чисел з однієї позиційної системи числення до іншої
- •1.3.1. Переведення цілих чисел
- •1.3.2 Переведення правильного дробу
- •1.3.3 Особливості переведення вісімкових і шістнадцяткових чисел до двійкової системи числення і навпаки
- •Лабораторна робота № 2
- •1. Теоретичні відомості
- •1.2. Інструкції арифметичних операцій:
- •1.3. Призначення Регістру Ознак
- •1.4. Дослідження виконання інструкцій навчального комп’ютера
- •2. Порядок виконання роботи
- •Вимоги до звіту
- •Лабораторна робота № 3
- •1. Теоретичні відомості
- •1.2. Організація програмних циклів
- •1.3. Особливості виконання операцій зсуву
- •2. Порядок виконання роботи:
- •3. Вимоги до звіту.
- •Лабораторна робота № 4
- •1. Теоретичні відомості
- •1.1. Загальні відомості про логічні функції
- •1.2. Опис логічних інструкцій навчального комп’ютера
- •1.3. Подання від’ємних чисел у комп’ютерах
- •1.3.1. Прямий код
- •1.3.2. Обернений код
- •1.3.3. Доповняльний код
- •1.3.4. Модифіковані коди
- •2. Порядок виконання роботи:
- •3. Вимоги до звіту
- •Лабораторна робота № 5
- •1. Теоретична частина.
- •1.1. Додавання і віднімання двійкових чисел з фіксованою комою
- •1.2. Додавання двійкових чисел у модифікованому доповняльному коді
- •1.3. Додавання двійкових чисел у модифікованому оберненому коді
- •1.4. Переповнення розрядної сітки при додаванні у модифікованих машинних кодах
- •1.5. Множення двійкових чисел без знаку
- •2. Порядок роботи:
- •3. Вимоги до звіту
- •Лабораторна робота № 6
- •1. Теоретична частина
- •1.1. Подання чисел з рухомою комою
- •1.2. Правила додавання (віднімання) двійкових чисел з рухомою комою
- •2. Порядок роботи:
- •3. Вимоги до звіту.
- •Лабораторна робота № 7
- •1. Теоретична частина
- •1.1. Ділення двійкових чисел без знаку
- •1.1.1. Ділення з відновленням залишку
- •1.1.2. Ділення без відновлення залишку
- •1.2. Множення двійкових чисел із знаком
- •1.2.1 Множення чисел у форматі з фіксованою комою
- •1.3. Ділення двійкових чисел у форматі з фіксованою комою.
- •2. Порядок роботи
- •3. Вимоги до звіту.
- •Література.
- •Додаток
1.4. Дослідження виконання інструкцій навчального комп’ютера
Для дослідження алгоритмів і ходу виконання програм за окремими інструкціями існує покроковий режим роботи навчального комп’ютера, з яким ми ознайомилися у лабораторній роботі № 1.
Загальний принцип виконання однієї інструкції ми вже знаємо: спочатку її необхідно прочитати з пам’яті, а потім, у залежності від коду операції, виконати ті або інші необхідні дії. Це і є найбільш спрощений порядок виконання інструкції:
-
вибірка (читання) інструкції (fetch – вибір, виклик). ;
-
виконання інструкції (execution –виконання).
Оскільки більшість інструкцій призначені для виконання різних операцій, для яких необхідні вхідні числа, а також збереження результату, для більшості процесорів комп’ютерів стандартним є такий, більш детальний порядок виконання інструкцій:
-
вибірка інструкції;
-
декодування (розпізнавання) інструкції;
-
вибірка (читання) операндів;
-
виконання операції (арифметичної, логічної чи якоїсь іншої);
-
збереження (запис) результату.
У порівнянні із попереднім, простішим порядком виконання інструкції, у детальнішому порядку етап вибірки інструкції розділився на 2 частини: вибірку та декодування (розпізнавання) інструкції. Дійсно, етап декодування є надзвичайно важливим: він фактично є функцією пристрою керування, який повинен розпізнати (декодувати) інструкцію за її кодом операції, а також згенерувати послідовність керуючих сигналів, які спричинять виконання усіх наступних етапів.
Крім того, 2-й етап – виконання інструкції – розділився на 3 частини: вибірку операндів, виконання операції та збереження результату. При цьому, під читанням та записом маються на увазі операції звертання до пам’яті.
Але насправді виконання інструкції складається з ще більшої кількості етапів.
Для дослідження порядку виконання окремих інструкцій у процесорі призначений 3-й режим роботи навчального комп’ютера – потактовий.
Для прикладу, розглянемо порядок виконання інструкції додавання (ADD) за допомогою потактового режиму роботи навчального комп’ютера. Інструкція додавання обробляє два операнда, які повинні бути заздалегідь підготовлені. Вони можуть бути обидва розміщені у ОЗП, або один з них може бути розміщений безпосередньо у акумуляторі.
Виконаємо цю підготовку. Для цього спочатку за допомогою пульта управління занесемо до 0-ї комірки пам’яті машинний код інструкції ADD 01 - 0010 0000 0000 0001, до 1-ї комірки – число 15 (двійковий код = 0000 0000 0000 1111), а до акумулятора число 240 (двійковий код = 0000 0000 1111 0000). У результаті виконання цієї інструкції у акумуляторі ми повинні отримати суму двох чисел - 15 + 240 – число 255 (машинний код - 0000 0000 1111 1111). Фактично нами складена програма додавання двох чисел, з яких одно знаходиться у комірці пам’яті за адресою 0000 0000 0001, а друге – у акумуляторі, а сама інструкція розміщена у комірці пам’яті з адресою 0000 0000 0000.
Для початку виконання інструкції до ЛАІ - лічильника адреси інструкцій - занесемо адресу розміщення першої інструкції ADD 01, тобто - 0000 0000 0000, а також встановимо потактовий режим роботи симулятора відповідною кнопкою вибору режиму.
Тепер, натискаючи кнопку ПУСК, ми можемо такт за тактом відслідковувати процес проходження інформації по регістрах процесора від початку до закінчення виконання інструкції. Під час здійснення аналізу на панелі процесора синім кольором позначатиметься джерело інформації (вихідний пристрій), а білим – місце призначення (кінцевий пристрій).
Відзначимо, що швидкість виконання одного кроку можна змінювати. Для цього необхідно у самому верху панелі, під синьою стрічкою заголовку вікна програми симулятора, вибрати пункт меню Режими, а у ньому – команду Тривалість підсвітки... У віконечку, що з’явиться, можна вибрати одне із значень затримки від 200 до 4000 мс. Стандартним значенням, яке автоматично встановлюється при запуску симулятора, є 800 мс.
1-й такт. Натиснемо кнопку ПУСК. У результаті спочатку синім кольором засвітиться лічильник адреси інструкції (ЛАІ), а потім білим – регістр адреси пам’яті (РА) і значення ЛАІ опиниться у РА, тобто код розміщення нашої першої (і єдиної) інструкції - 0000 0000 0000. Дійсно, перш ніж прочитати інструкцію з пам’яті, необхідно до РА занести її адресу. Оскільки за адресами інструкцій слідкує ЛАІ, то саме з нього ми беремо потрібну нам адресу: ЛАІ РА. Такий скорочений формат запису цього такту можна тлумачити таким чином: вміст регістру ЛАІ (де розміщена адреса інструкції) переноситься до РА.
2-й такт. Ще раз натиснемо кнопку ПУСК (Власне для виконання кожного такту потрібно натискати ПУСК). Тепер синім кольором засвітиться вікно пам’яті, а білим – регістр даних пам’яті (РД), тобто значення (вміст) виділеної комірки пам’яті (на яку вказує РА) зчитується і записується до РД – у нашому випадку - 0010 0000 0000 0001. Зараз машинний код інструкції вже прочитаний з пам’яті, але поки що знаходиться у регістрі даних:
ПамРА РД.
3-й такт: Синій – РД, білий – регістр інструкції (РІ), тобто ми переносимо машинний код інструкції з РД до спеціального регістра – РІ. Саме з нього процесор може декодувати інструкцію, що і відбувається на цьому ж 3-му кроці. З точки демонстрації дія декодування абсолютно непомітна – це внутрішній процес пристрою управління, але після нього процесор вже точно знає, які саме дії необхідно виконувати саме у цій інструкції:
РД РІ.
4-й такт. Оскільки команда додавання ADD використовує один з операндів, який знаходиться у пам’яті, тому на 4-му кроці значення адреси операнда (тобто 0000 0000 0001) з регістру інструкцій РІ заноситься до РА:
АДР (РІ) РА.
5-й такт. Операнд (тобто, двійковий код числа 1510 - 0000 0000 0000 1111) зчитується з пам’яті і записується до РД:
Пам(РА) РД.
6-й такт. Тепер ми маємо обидва операнди: один попередньо занесений у акумуляторі (0000 0000 1111 0000), а другий – у РД. Відповідно, на 6-му кроці виконується операція додавання і результат записується до акумулятора (0000 0000 1111 1111):
А + РД А.
Відзначимо, що виконання будь-якого етапу закінчується операцією запису якогось проміжного результату до одного з регістрів процесора або пам’яті. Так, сама операція додавання не потребує запису – вона є “наскрізною”: будь-яка зміна чисел (операндів) на входах АЛП призводить до майже миттєвої зміни на його виході. А от запис результату до акумулятора і визначає закінчення 6-го кроку.
7-й такт. Оскільки операція додавання є арифметичною, тому вона впливає на усі 3 прапорці регістру ознак (РО). Внутрішні схеми процесора аналізують у акумуляторі результат виконання операції (у нас – додавання) і включають, при необхідності, відповідний прапорець: Z, S, C (A) РО. (Хоча у нашому випадку жодна з ознак не змінюється).
8-й такт. На цьому виконання нашої інструкції ADD можна вважати закінченим. Залишився один маленький крок, хоча й надзвичайно важливий: підготувати адресу наступної інструкції. Якщо цього не зробити, процесор знову і знову виконуватиме ту ж саму інструкцію ADD:
ЛАІ + 1 ЛАІ.
У нашому випадку, замість інструкції у наступній комірці 0000 0000 0001, виявиться наше число 1510 = (0000 0000 0000 1111)2, але оскільки наша програма складається лише з однієї інструкції, то усе добре. Правильніше було б наш операнд записати до комірки, яка гарантовано не попадає у зону адрес роботи програми.
Отже, виконання інструкції ADD зайняло 8 тактів. У скороченому вигляді мікрокоманди виконання інструкції ADD для нашого прикладу можна було б представити у такому вигляді:
№ |
Мнемонічний запис |
Код, що обробляється |
Коментар |
1 |
ЛАІ РА |
0000 0000 0000 |
вибір адреси 1-ої інструкції і занесення її до Регістра Адреси |
2 |
РА РД |
0010 0000 0000 0001 |
вибір коду інструкції з РА і занесення його до Регістра Даних |
3 |
РД РІ |
0010 0000 0000 0001 |
декодування інструкції у Регістрі Інструкцій |
4 |
РІ РА |
0000 0000 0001 |
вибір адреси 1-го операнда |
5 |
РА РД |
0000 0000 0000 1111 |
вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних |
6 |
А + РД А |
0000 0000 1111 1111 |
виконання операції додавання (2-й операнд – у акумуляторі) |
7 |
ZSC(А) РО |
000 |
встановлення прапорців регістру ознак |
8 |
ЛАІ + 1 ЛАІ |
0000 0000 0001 |
підготовка адреси нової інструкції |
Такий запис мікрокоманд виконання інструкції називають мікропрограмою виконання інструкції. У дужках наведено фактичні значення, які записуються у регістри процесора для нашої інструкції ADD 01.