Представлення даних в ЕОМ
Вся інформація в ЕОМ зберігається у вигляді наборів біт, тобто комбінацій 0 і 1. Числа представляються двійковими комбінаціями відповідно до числовими форматами, прийнятими для роботи в даній ЕОМ, а символьний код встановлює відповідність букв та інших символів двійковим комбінаціям.
Для чисел є три числових формату:
- двійковий з фіксованою крапкою;
- двійковий з плаваючою комою;
- двійковій-кодований десятковий (BCD).
У двійковому форматі з фіксованою точкою числа можуть бути представлені без знака (коди) або зі знаком. Для представлення чисел зі знаком в сучасних ЕОМ в основному застосовується додатковий код. Це призводить до того, що, як показано раніше, негативних чисел при заданій довжині розрядної сітки можна уявити на одне більше, ніж позитивних. Хоча операції в ЕОМ здійснюються над двійковими числами, для запису їх в мовах програмування, в документації і відображення на екрані дисплея часто використовують більш зручне вісімкове, шестнадцатеричное і десяткове подання.
У двійковій-кодованому десятковому форматі кожна десяткова цифра представляється у вигляді 4 бітного довічного еквівалента. Існують дві основні різновиди цього формату: упакований і неупакований. В упакованому BCD-формат ланцюжок десяткових цифр зберігається у вигляді послідовності 4-бітних груп. Наприклад, число 3904 представляється у вигляді двійкового числа 0011 1001 0000 0100. В упакованому BCD-формат кожна десяткова цифра знаходиться в молодшій тетраде 8-бітної групи (байті), а вміст старшої тетради визначається використовуваної в даній ЕОМ системою кодування, і в даному випадку несуттєво. Те ж число 3904 в упакованому форматі буде займати 4 байти і мати вигляд:
xxxx0011 xxxx1001 xxxx0000 xxxx0100.
Числа з плаваючою комою обробляються на спеціальному співпроцесор (FPU - floating point unit), який, починаючи з МП I486, входить до складу БІС мікропроцесора. Дані в ньому зберігаються в 80-розрядних регістрах. Керуючи настройками співпроцесора, можна змінювати діапазон і точність представлення даних цього типу ( табл. 14.1 ).
Таблиця 14.1. Тип даних Розмір (біт) Діапазон Оброблювальний блок Цілі без знака 1 байт
1 слово
1 подвійне слово
8
16
32
0 ... 255
0 ... 65535
0 ... 4294967295
АЛУ Цілі зі знаком 1 байт 8 -128 ... + 127 АЛУ 1 слово 16 -32768 ... + 32767 FPU 1 подвійне слово 32 -2147483648 ... + 2147483647 1 учетверенное слово 64 (0.92 * 1019) Числа з плаваючою комою дійсне число 32 (1 + 8 + 23) (0.34 * 1039) FPU з подвійною точністю 64 (1 + 11 + 52) (0.18 * 10309) зі збільшеною точністю 80 (1 + 15 + 64) (0.12 * 104933) Двійково-десяткові числа 1 байт неупаковані 8 0 ... 9 АЛУ 1 байт упаковане 8 0 ... 99 АЛУ 10 байт упаковане 80 0 ... (99 ... 99) 18ціфр FPU
Організація оперативної пам'яті
ОП є основною пам'яттю для зберігання інформації. Вона організована як одновимірний масив осередків пам'яті розміром в 1 байт. Кожен з байтів має унікальний 20 бітний фізичну адресу в діапазоні від 00000 до FFFFFh (тут і далі для запису адрес використовується шістнадцяткова система числення, ознакою якої є символ h в кінці коду). Таким чином, розмір адресного простору ОП становить 220 = 1 Мбайт. Будь-які два суміжних байта в пам'яті можуть розглядатися як 16-бітове слово. Молодший байт слова має менший адреса, а старший - більший. Так шістнадцяткове число 1F8Ah, що займає слово, в пам'яті буде розташовано в послідовності 8Ah, 1Fh. Адресою слова вважається адреса його молодшого байта. Тому 20 бітову адресу пам'яті може розглядатися і як адреса байта, і як адреса слова.
Команди, байти і слова даних можна розміщувати по будь-якою адресою, що дозволяє економити пам'ять внаслідок її більш повного заповнення. Однак для економії часу виконання програм доцільно розміщувати слова даних в пам'яті, починаючи з парного адреси, так як мікропроцесор передає такі слова за один цикл роботи шини. Слово з парних адресою називається вирівняним по межі слів. Невирівняні слова даних з непарною адресою допустимі, але для їх передачі потрібно два цикли шини, що знижує продуктивність ЕОМ. Зауважимо, що необхідну кількість циклів зчитування слова даних ініціюється процесором автоматично. Слід мати на увазі, що при операціях зі стеком слова даних повинні бути вирівняні, а покажчик стека ініційований на парний адресу, так як в таких операціях беруть участь тільки слова даних.
Потік команд розділяється на байти при заповненні черзі команд усередині мікропроцесора. Тому вирівнювання команд практично не впливає на продуктивність і не використовується.
Адресний простір ОП ділиться на сегменти. Сегмент складається з суміжних осередків ОП і є незалежною і окремо адресується одиницею пам'яті, яка в базовій архітектурі персональної ЕОМ має фіксовану ємність 216 = 64К байт. Кожному сегменту призначається початковий (базовий) адреса, що є адресою першого байта сегмента в адресному полі ОП. Значення фізичної адреси осередку складається з адреси сегмента і зміщення комірки пам'яті відносно початку сегмента (внутрисегментного зміщення). Для зберігання значень адреси сегмента і зміщення використовуються 16-бітові слова.
Щоб отримати 20-бітовий фізичну адресу, мікропроцесор автоматично здійснює такі операції. Значення базового адреси сегмента множиться на 16 (зрушення на 4 розряду вліво) і підсумовується зі значенням зміщення в сегменті ( Мал. 14.3 ). В результаті виходить 20-бітове значення фізичної адреси. При підсумовуванні може виникнути перенесення з старшого біта, який ігнорується. Це призводить до того, що ОП виявляється як би організованою по кільцевому принципом. За осередком з максимальним адресою FFFFFh слід осередок з адресою 00000h.
Мал.14.3.
Схема отримання фізичної адреси
Сегменти фізично не прив'язані до конкретної адреси ОП, і кожна комірка пам'яті може належати одночасно кільком сегментам, так як базова адреса сегмента може визначатися будь-яким 16-бітовим значенням. Сегменти можуть бути суміжними, що не перекриваються, частково або повністю перекриваються. Разом з тим, відповідно до алгоритму обчислення фізичної адреси, початкові адреси сегментів завжди кратні 16.