ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6786
Скачиваний: 22
87
-
Описати діапазони представлення чисел при використанні форматів з фіксованою і рухомою комою
-
Вибрати формат представлення даних який забезпечує точність до 8 десяткової цифри та динамічний діапазон від 10-25 до 1025. Тут число в дужках показник степеня
-
Приведіть діапазони представлення чисел при використанні відмінної від 2 основи порядку для формату з рухомою комою
-
Показати як в форматі ІЕЕЕ-754 з рухомою комою можуть бути представлені наступні числа: +1; -1; 356*233
-
Вибрати формат представлення даних, який забезпечує точність до 12 десяткової цифри та динамічний діапазон від 10-22 до 1022. Тут число в дужках показник степеня
-
Декодувати наступний лист в 7-розрядному ASCII коді без біта парності: 1001010 1001111 1001000 10011100100000 1000100 1000101
Розділ 3
Порядок виконання команд
і програм в комп'ютері
В цьому розділі розглядаються формати і типи команд, способи кодування та виконання команд в комп'ютері, включаючи конвеєризацію виконання команд - один з типів паралелізму на рівні команди, який може підвищити продуктивність виконання послідовності команд при відсутності конфліктів в конвеєрі. Наводиться класифікація архітектури комп'ютера за типом адресованої пам'яті: стекова, акумуляторна, та на основі регістрів загального призначення. Для кожної архітектури аналізуються переваги і недоліки, які розглядаються в контексті застосування запропонованої архітектури. Розглядаються різні способи адресації, включаючи безпосередню, пряму, непряму, базову, індексну, сторінкову і стекову. Наявність множини способів забезпечує гнучкість і зручність для програміста.
Архітектура комп'ютера розглядається на рівні системи команд, який видимий програмісту, що працює на мові асемблера та розробнику компіляторів, що дозволяє встановити межу між апаратним і програмним забезпеченням. Проводиться поділ комп'ютерів за складом системи команд на наступні типи: комп'ютери з складною, з простою, з доповненою та спеціалізованою системою команд.
3.1. Кодування та виконання команд в комп'ютері
Більшість сучасних комп'ютерів працюють за принципом програмного керування, згідно з яким над даними виконуються операції, тип яких вказується командами, які зберігаються в тій же пам'яті, що і дані. Послідовність команд, за яким виконується задача, називається програмою. Для того, щоб виконати на комп'ютері задачу, необхідно:
■ забезпечити вибірку команд програми
із його пам'яті в заданій
послідовності,
організувавши звернення
до неї за відповідними адресами;
-
забезпечити розпізнавання типів виконуваних операцій;
-
організувати звернення до пам'яті за відповідними адресами для вибірки необхідних для виконання кожної команди даних;
-
організувати виконання над даними операцій відповідно до вказівок команд;
-
запам'ятати результати обчислень.
Розглянемо як це відбувається в комп'ютері детальніше.
83
3.1.1. Кодування команди та програми
Команда в комп'ютері зберігається в двійковій формі. Вона вказує тип операції, яка має бути виконаною, адреси операндів, над якими виконується операція, та адреси розміщення результатів виконання операції. Відповідно до цього команда складається з двох частин, як це показано на рис. 3.1: коду операції та адресної частини.
Поле коду операції (КОП) займає k розрядів. Ним може бути закодовано до N = 2kрізних операцій. Кількість двійкових розрядів, які відводяться під код операції, вибирається таким чином, щоб ними можна було закодувати всі виконувані в даному комп'ютері операції. Якщо деякий комп'ютер може виконувати Nc різних операцій, то мінімальна розрядність поля коду операції k визначається наступним чином: k = [log2Nc], де вираз в дужках означає заокруглення до більшого цілого.
Поле адреси (адресна частина) займає m розрядів. В ньому знаходяться адреси операндів. Кожна адреса займає mi розрядів, де і - номер адреси (і=1,2,...1), 1 - кількість адресних полів. Кожною адресою можна адресувати пам'ять ємністю 2mi слів. Детальна інформація про зв'язок між ємністю пам'яті та розрядністю адреси наведена в розділі 9, в якому описана будова пам'яті.
Розмір команди k + m повинен бути узгодженим з розміром даних, тобто бути з ним однаковим або кратним цілому числу, що спрощує організацію роботи з пам'яттю. Як правило, розмір команди рівний 8, 16, 32 біти.
При написанні програми крім двійкової можуть використовуватись й інші форми представлення команд: вісімкова, шістнадцяткова, символьна (мнемонічна).
Використання вісімкового і шістнадцяткового кодування дозволяє скоротити записи і спростити роботу програміста. Як відомо 3 двійкових розряди (тріада) замінюються на 1 вісімковий, а 4 двійкових розряди (тетрада) - на 1 шістнадцятковий. Приклад: (000011111111)2 = (0377)8 = (0FF)16
Мнемонічне кодування спрощує процес написання, читання і відлагодження програми. Основний принцип такого кодування - кожна команда представляється 3-х або 4-х буквеним символом, який показує назву команди. Деякі приклади мнемонічного кодування:
ADD - додати (add),
SUB - відняти (subtract),
MPY - перемножити (multiply),
DIV - поділити (divide),
LOAD - зчитати дані з пам'яті (load data from memory),
STORE - записати дані в пам'ять (store data to memory).
84
Операнди також представляються символічно. Наприклад команда ADD R, Y означає додавання вмісту комірки пам'яті Y до вмісту регістра R. Зауважимо, що операція виконується над вмістом, а не над адресою комірки пам'яті та регістра.
Таким чином, з'являється можливість написання машинних програм в символічній формі. Повний набір символічних назв і правила їх використання утворюють мову програмування, відому як асемблерна мова. Символічні імена називаються мнемонічними, а правила їх використання для створення команд і програм називаються синтаксисом
МОВИ.
Програма, яка переводить із мнемонічного коду асемблерної мови в машинний, називається асемблером. Команди, які використовуються для переводу вихідної програми в асемблерну, називаються командами асемблера. Ці команди вказують як інтерпретувати назви, де розмістити програму в пам'яті, яка кількість комірок пам'яті необхідна для зберігання даних.
Асемблерна мова є дуже далекою від мови людини і заставляє програміста думати виходячи з принципів побудови комп'ютера. Тому були створені мови високого рівня та компілятори, які переводять програми з цих мов на мову асемблера. Використання мов високого рівня має цілий ряд переваг в порівнянні з використанням асемблера. По-перше, програміст пише програми на мові, близькій до його мови спілкування. Більше того, мови високого рівня орієнтуються на класи вирішуваних задач. По-друге, скорочується час написання програм. І по-третє, мови високого рівня є незалежними від типу та архітектури комп'ютера, що дозволяє використовувати написані на цих мовах програми на всіх комп'ютерах, а програміста звільнити від знання 'їх структури та організації роботи.
Разом з тим, хоча більшість програм сьогодні пишуться на мовах високого рівня, асемблерна мова є корисним засобом для написання машинних команд завдяки близькості до машинної мови, наочності та компактності, і ми також будемо її для цього використовувати.
3.1.2. Порядок виконання команд
Команди зберігаються в основній пам'яті комп'ютера за відповідними адресами. Для того, щоб виконати команду та здійснити обробку даних, команду та дані потрібно зчитати з основної пам'яті та заслати до відповідних регістрів процесора. Комп'ютер виконує кожну команду як послідовність простих операцій:
-
Вибірка чергової команди із основної пам'яті.
-
Визначення типу вибраної команди, тобто її дешифрування.
-
Визначення адрес даних, необхідних для виконання цієї команди.
-
Виконання операцій пересилання даних (зчитування даних із пам'яті в регістри процесора).
-
Виконання операції відповідно до її коду в полі коду операції команди.
-
Визначення адрес, за якими запам'ятовуються результати.
-
Запам'ятовування результатів.
-
Підготовка до виконання наступної команди, тобто обчислення її адреси.
На рис. 3.2 показана діаграма циклу виконання команди, причому в нижній стрічці наведені операції, які виконуються всередині процесора, а в верхній стрічці - операції запису та вибірки із основної пам'яті. Операції 3 та 4 можуть повторюватись стільки