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

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

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

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

Добавлен: 24.12.2021

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

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

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

87

  1. Описати діапазони представлення чисел при використанні форматів з фіксованою і ру­хомою комою

  2. Вибрати формат представлення даних який забезпечує точність до 8 десяткової цифри та динамічний діапазон від 10-25 до 1025. Тут число в дужках показник степеня

  3. Приведіть діапазони представлення чисел при використанні відмінної від 2 основи по­рядку для формату з рухомою комою

  4. Показати як в форматі ІЕЕЕ-754 з рухомою комою можуть бути представлені наступні числа: +1; -1; 356*233

  5. Вибрати формат представлення даних, який забезпечує точність до 12 десяткової цифри та динамічний діапазон від 10-22 до 1022. Тут число в дужках показник степеня

  6. Декодувати наступний лист в 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. Порядок виконання команд

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

  1. Вибірка чергової команди із основної пам'яті.

  2. Визначення типу вибраної команди, тобто її дешифрування.

  3. Визначення адрес даних, необхідних для виконання цієї команди.

  4. Виконання операцій пересилання даних (зчитування даних із пам'яті в регістри процесора).

  5. Виконання операції відповідно до її коду в полі коду операції команди.

  6. Визначення адрес, за якими запам'ятовуються результати.

  7. Запам'ятовування результатів.

  8. Підготовка до виконання наступної команди, тобто обчислення її адреси.


На рис. 3.2 показана діаграма циклу виконання команди, причому в нижній стрічці наведені операції, які виконуються всередині процесора, а в верхній стрічці - операції запису та вибірки із основної пам'яті. Операції 3 та 4 можуть повторюватись стільки