Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПТ_L_к.doc
Скачиваний:
13
Добавлен:
27.08.2019
Размер:
20.33 Mб
Скачать

5. Структурні елементи мікропроцесора

5.1. Поняття машинного слова, регістрів

В МП інформація опрацьовується порціями, які називаються словами. Машинне слово – це базова одиниця інформації конкретного мікропроцесора і залежить від його будови. Машинним словом називається група двійкових чисел, які обробляються мікропроцесорі одночасно. Кількість двійкових чисел (або кажуть розрядів) із яких складається це слово називається довжиною слова. Машинне слово пов’язують також з такою кількістю інформації, яка може бути записана в память регістрів мікропроцесора чи прочитана із пам’яті, за один цикл звертання до неї. Типова довжина слів - 4, 8, 12, 16 та 32 двійкових розрядів. Найменша одиниця інформації – один двійковий розряд, як ми відмітили раніше, називається біт (скорочення від англійської «binary digit» - двійкова цифра). Найбільше розповсюджена довжина слова у 8 біт (розрядів), яку називають – байт

Фізично машинне слово в мікропроцесорах зберігається в регістрах (назва від латинського слова «registrum» - внесене, записане). Регістри це електронні схеми, які являють собою упорядочену послідовність (ланцюг) з’єднаних за відповідною схемою тригерів і які призначені для зберігання машинних слів та виконання мікрооперацій над ними. Регістр характеризується одим числом – кількістю біт інформації, які можуть в ньому зберігатись, тобто, число тригерів у регістрі дорівнює числу двійкових розрядів в слові і для 8-ми розрядного МП зображується так: : В7 В6 В5 В4 В3 В2 В1 В0.

Розрізняють синхронні та асинхронні регістри. В синхронних – мікрооперації виконуються тільки по тактовому сигналу (рис.2.11). В асинхронних – тактовий вхід відсутній.

На регістрах виконуються мікрооперації: занесення (запису) та читання

слова в паралельному або послідовному коді, зсуву слова вліво або вправо, а також установлення вихідного (як правило нульового) стану.

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

зберігається в регістрі.

5.2. Формати надання чисел в мікропроцесорах

В залежності від специфіки використання мікропроцесорів числа в них можуть бути надані в різних форматах.

1) В простих випадках використання МПС широко використовується формат надання цілих чисел без знака в двійковому коді. Так, наприклад, для 8-ми розрядного процесора таке надання має вид:

В7 В6 В5 В4 В3 В2 В1 В0

0 0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1 +255

Межі надання чисел не великі і складають від 0 до 2 – 1 , тобто складають тільки 256 різних чисел, які не повторюються. Відповідно у 12-розрядному процесорі в слові можна записати без знаку число 4095.

При необхідності суттєвого збільшення меж надання чисел у восьми розрядних мікропроцесорах використовують багатобайтові коди даних, або використовують більш потужний по розрядності мікропроцесор (16-ти чи 32-х розрядні). Наприклад, межі надання двійкових чисел в двох байтах 8-ми розрядного процесора або в 16-ти розрядному сягають від 0 до 65535

десяткової системі числення.

2) В МП, які орієнтовані на обробку даних, в яких, крім логічних операцій,

виконуються алгебраїчні операції (додавання та віднімання), використовується

формат надання чисел зі знаком.

Для того, щоб надати від’ємні і позитивні числа в будь-якій системі числення можна використовувати два способи.

Перший спосіб (звичайний) – це надання числа із знаком у прямому коді, коли спочатку надається знак числа, а потім саме число. Використовування даного способу для надання від’ємних чисел в мікропроцесорній техніці значно ускладнює структуру мікропроцесора для виконання ним математичної операції віднімання. В цьому випадку необхідно виконати не менше трьох операцій: 1) спочатку визначити, яке із двох чисел, що віднімаються, більше; 2) виконати саму операцію віднімання – від більшого відняти менше; 3) присвоїти результату знак більшого числа.

Для більш оптимального виконання операцій віднімання в

мікропроцесорній техніці застосовується другий спосіб - від’ємні числа надають у вигляді доповнюючого коду (у вигляді доповнення до основи системи числення і символ “-“(мінус) для їх ідентифікації не використовується), що дозволяє замінити операцію віднімання окремим видом додавання.

Доповненням D для n розрядного числа Е називають різницю:

D = q - Е,

де qоснова системи числення; q - кількість різних чисел (комбінацій), що не повторюються і знаходяться в діапазоні від 0 до q ;

n кількість розрядів (позицій) числа.

При цьому способі надання чисел із знаком із загальної кількості чисел q , половину чисел, а саме від 0 до (q /2 – 1) використовують як позитивні, а

іншу половину – як від’ємні і як доповнення до першої половини чисел.

Наприклад, розглянемо чотирьох розрядне число в десятковій системі числення : q =10; n =4; і відповідно q = 10000. В цьому діапазоні позитивні та від’ємні числа у формі прямого коду та їх відповідні доповнення до основи числення можуть бути записані так:

Прямий код Доповнюючий код

- 5000 +5000

- 4999 +5001

- 4998 +5002

……. …….

-3 +9997

-2 +9998

-1 +9999

0 0000

+1 0001

+2 0002

+3 0003

……. ……

+4998 4998

+4999 4999

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

Легко перевірити правильність отриманних доповнень в приведеному вище переліку. Для цього треба додати число із нижньої половини (нижче значення 0000) правого стобчика з його доповненням, що розташоване на такій же відстані, але над кодом нуля (0000). Результатом такого додавання будуть числа 10 = 10000. Так як розрядність числа нами обмежена до чотирьох, то одиниця отриманого результату в п’ятому розряді «вивалюється » за розрядну сітку і не враховується нами, а результат дорівнює нулю. Н., 0003 + 9997 = 1 0000, де 0003 – позитивне число, а 9997 – від’ємне в доповнюю чому коді.

Перепишемо формулу для визначення доповнення числа до основи числення таким чином:

D = q - Е = [ (q - 1) – Е] + 1,

де (q -1) - це число, яке складається тільки із старших символів (цифр) системи числення, в якій записується число.

Отримана формула показує, що доповнення числа D можна отримати і без

безпосереднього віднімання самих чисел q та Е, а шляхом утворення спочатку доповнення [(q - 1) – Е], тобто, визначенням доповнення для кожного символу (кожної цифри) в усіх розрядах числа до максимального символу (старшої цифри) системи числення. А шукане доповнення D отримати шляхом додавання до отриманого числа 1 (одиниці).

Наприклад, отримати доповнення до десяткового числа: 1234.

1. Знаходимо доповнення в кожному розряді до старшої цифри (до 9) : 8765

2. Додаємо до отриманого числа одиницю 1

3. Шукане значення доповнюючого коду до числа 1234 є число 8766.

Перевіряємо, чи вірно виконане перетворення: 1234 + 8766 = 1 0000

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

Виконання таких операцій в двійковій системі є особливо простим. Так як доповненням до 1 є 0, а доповненням до 0 є 1, то можна сформулювати правило отримання доповнення двійкових чисел:

доповнення D для двійкового числа знаходять заміною в кожному розряді вихідного двійкового числа 0 на 1, а 1 на 0 , тобто, виконують порозрядну інверсію числа (таку операцію називають знаходженням оберненого коду і вона виконується в МП дуже просто) і добавляють до числа, яке дістали, ще одиницю.

Наприклад, отримати доповнюючий код до двійкового числа 1010:

вихідне число - 1010, проводимо його порозрядну інверсію і дістаємо число

0101, до якого добавлямо 1. Результат дорівнює :

0110.

Використовуємо визначення, що: доповнення числа до 2 ( або кажуть доповнюючий код двійкового числа) – це число, при додаванні якого до вихідного числа дістають всі нулі в розрядах, які відповідають розрядам вихідного числа, і 1 - в наступному по старшинству розряді, який відсутній в вихідному числі.

Перевіряємо, чи вірно виконане перетворення:

1010 (вихідне двійкове число)

+ 0110 (доповнючий код двійкового числа 1010)

= 1 0000 (результат додавання).

Необхідно відмітити ще одну особливість доповнюючого коду двійкових чисел: - їх старший біт у байті виконує функцію знаку числа і він відводиться під знак «s» числа. Якщо s = 1, то число від’ємне і знаходиться в доповнюючому коді, а якщо s = 0 – то число позитивне і знаходиться у регістрі в прямому коді. Тому старший біт В7 в байті таких чисел, що зберігаються в регістрах або в комірках пам”яті, називають знаковим розрядом.

Таким чином, в мікропроцесорах позивні числа надаються модулем, або

кажуть в прямому коді, а від’ємні – у вигляді доповнення (доповнюючим кодом).

В одному байті 8-ми розрядного МП може бути розміщено число із знаком в таких межах (від’ємні – у вигляді доповнення):

S

B7 B6 В5 В4 В3 В2 В1 В0 Десяткове

1 0 0 0 0 0 0 0 -128

1 1 1 1 1 1 1 1 -1

0 0 0 0 0 0 0 0 0

0 1 1 1 1 1 1 1 +127.

3) В тих випадках, коли МПС вимагає ще більшого розширення меж надання чисел, використовують багатобайтові коди.

Наприклад, надання числа подвійної довжини (двобайтові числа). Знаковий розряд знаходиться при цьому в старшому розряді В7 старшого байту. Відповідно межа надання чисел розширюється від -2 = 32768 .. до ..+2 -1 = 32767.

Приклад розміщення в пам’яті 32-бітного двійкового цілого зі знаком.

Обробка таких багатобайтових чисел, розміщених в сміжних комірках, виконується в МП побайтно, починаючи з молодшого байту, шляхом виклику відповідної підпрограми обробки та 3-х разової модифікації (інкрементування) показника даних.

Пам’ять: Адреса

А Байт 0 Розміщення

А+1 Байт 1 чотирьохбайтного

А+2 Байт 2 (32 – бітного) числа в пам”яті МПС

А+3 s/Байт 3

4) Якщо в МПС потрібно виконувати операції над числами за правилами десяткової арифметики використовується так званий десятковий двійково-кодований упакований формат, або двійково- десяткова система числення. В цій системі десяткові цифри від 0 до 9 надаються 4-х розрядними двійковими комбінаціями від 0000 до 1001, тобто, двійковими еквівалентами десяти перших шістнадцяткових цифер. Перетворення виконується прямою заміною чотирьох розрядів двійкового числа одною десятковою цифрою і навпаки. Дві двійково - десяткові цифри складають байт, який умовно розбивається на дві тетради, в кожній із яких кодується десяткове число. Тобто, за допомогою 1 байта можна надати десяткове число від 0 до 99, а не від 0 до 255 або від 0 до FF, як при використовуванні двійкового 8-ми розрядного числа чи 2-х розрядів шістнадцяткового числа.

0 0 0 0 0 0 0 0 0

0 1 0 1 0 1 0 1 55

1 0 0 0 0 1 1 1 87

1 0 0 1 1 0 0 1 99

Старша цифра Молодша цифра

Використовуючи 1 байт для надання кожних 2-х десяткових чисел, можна утворювати двійково-десяткове число з будь-яким необхідним числом десяткових розрядів: н, (9538)10 = (1001 0101 0011 1000)2-10.

5) Якщо в МПС необхідно виконувати операції з багатобайтовими числами

зі знаком за правилами десяткової арифметики, то для кодування знака

числа використовується старша тетрада старшого байту, а (залишки) інші тетради зберігають двійові коди десяткових чисел. При цьому позитивне число в знаковій тетраді кодується 4-ма нулями (0000), а від”ємне – кодується 1001 (дев’яткою), що означає знак – “мінус”.

Наприклад: розміщення позитивного числа +9678348 в 4-х байтах:

А Тетрада 1 Тетрада 2 9 6 7 8 3 4 8

А+1 Тетрада 3 Тетрада 4 (0000 1001 0110 0111 1000 0011 0100 1000 )

А+2 Тетрада 5 Тетрада 6 (7 6 5 4 3 2 1 )

А+3 s s s s Тетрада 7 знак ( всього сім тетрад )

Позитивне число надається прямим кодом, а від”ємне – в доповюючому коді.

Н., від’ємне число: - 538 (його доповнюючий код: 462) буде записано 2-х байтах:

1001 0100 0110 0010

знак 4 6 2

6) Для надання дробових чисел в МП використовується формат з плаваючою комою, а саме число займає довжину в 32 розряди (4 байти ) . Як правило , при цьому три молодших байти відводяться для надання мантиси m, а старший байт використовується для надання порядку числа та його знаку. Порядок “Р” надається зміщеним кодом “Рсм” зі зміщенням 64 та займає біти В6....В0. При цьому біт В6 задає знак порядку: В6=1 при позитивному порядку, та В6=0 – при від”ємному порядку. Значення порядку лежить в межах від +63 до –64. Старший біт В7 в старшому байті задає знак числа: В7=0 – відповідає плюсу (позитивному числу), а В7=1 – мінусу (від’ємному).

Мантиса m надається прямим (при позитивному числі) та доповнюючим (при від’ємному) кодом і повинна бути нормалізована, тобто, мати значущу цифру старшу цифру, яка знаходиться по модулю в диапазоні від 2 до 1. Якщо в процесі обчислень мантиса денормалізується, то число результату знову нормалізується, тобто, виконується зсув мантиси вліво (або вправо) з одночасним зменшенням (збільшенням) порядку. Число з плаваючою комою визначається як: а = m * 2 , що дозволяє перекривати діапазон чисел від 2 до 2 .

Наприклад, розміщення у мікропроцесорі цілого відємного числа ( - 1234) у форматі з плаваючою комою.

Число спочатку нормалізується, тобто, записується у вигляді: - 0,1234 Е +4, тобто, дорівнює - 0,1234 * 10 , де Е – символ порядку числа, а сам порядок дорівнює 4 і його знак (+).

В двійковому еквіваленті число (-1234) буде записано в чотирьох байтах так:

в старшому В7 розряді старшого байту буде записана 1, так як вихідне число відємне;

в розряді В6 буде записана 1, так як порядок нормалізації позитивний;

в розрядах від В5 до В0 цього ж старшого байту буде записано двійковий

еквівалент числа 4 ( значення порядку нормалізації), тобто, 000100;

в молодших трьох байтах буде розміщено безпосередньо саме число (1234) в двійковій системі числення, як мантиса.