22981

Робота зі співпроцесором

Лекция

Коммуникация, связь, радиоэлектроника и цифровые приборы

Обгрунтування необхідності співпроцесора Хоча мікропроцесор К1810ВМ86 оперує з 16розрядними числами відносна точність його обчислень не дуже висока. Такий допоміжний процесор має назву співпроцесора. Включення співпроцесора Для спільної роботи зі співпроцесором мікропроцесор МП86 слід включити у максимальний режим = 0.

Украинкский

2013-08-04

3.19 MB

7 чел.

Лекція №15

Робота зі співпроцесором

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

Зображення чисел з плаваючою точкою

в електронно-обчислювальних системах

У двійковій формі можна зображати як цілі, так і дробові числа (правильні і неправильні дроби). В дробових числах старший розряд праворуч від точки являє Ѕ , наступний ј , далі 1/8 ,1/16,1/32 тощо. Так наприклад, число 6.7510 у двійковій формі матиме вигляд 110.112 . В даному випадку нам вдалось обмежитися двома дробовими розрядами. У більшості випадків не вдається виразити довільний дріб скінченою кількістю двійкових дробових розрядів. Але ж і в десятковому зображенні такі числа як  1/3 або 1/7 також не можуть бути відображені скінченою кількістю розрядів.

 Додавання дробових чисел виконується звичайним чином, по розрядах. Так наприклад, 6.7510 + 2.2510 = 9.0010. В двійковом у зображенні це матиме вигляд  110.11 + 010.01 = 1001.00  9.0010.   

Такий формат має назву формату з фіксованою точкою. Він зручний для операцій додавання і віднімання.

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

2.5.10-1   2.5.10-2   0.025.101    0.0025.102  тощо.

У експоненційному форматі числа записуються у вигляді МЕП, де М - мантиса (значуще число) з відповідним знаком, а П - порядок числа (також зі знаком). Літера Е розділяє мантису і порядок і означає, що число подано у експоненційному форматі. Так наприклад, наведене вище число 0.25 можна зобразити як +0.25Е00, або як 2.5Е-01, або як 25Е-02, тощо. У двійковому форматі це буде відповідно: +0.01Е00 = (1/4).20, або як 0.1Е-01 = (1/2).2-1, або як 1Е-10 = 1.2-2, або як 10Е-11 = 2.2-3, тощо.

Як видно, тут при зображенні числа існує неоднозначність. Тому звичайно використовується нормалізований двійковий формат зображення чисел. В цьому форматі мантиса повинна бути правильним дробом, старший розряд якого відмінний від нуля. Отже, з усіх наведених вище варіантів нормалізованою формою буде +0.1Е-01.

Класичний формат з плаваючою точкою, який знаходить застосування в ЕОМ, має вигляд

Розряди  SM та SP означають знаки мантиси і порядку (плюс - 0, мінус - 1); мантиса має m двійкових розрядів, а порядок  р. Числа зображаються у нормалізованому експоненційному форматі, причому нуль, що передує точці, опускається. Так наприклад, при  m = 5 і p = 3 число  1 11011 0 101 має зміст:

 - (

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

| x min | =  0 1000.......00  1  111.......11 = .    1)

Наприклад, при р = 6   | x min | =  = 2 -64 -19 ;  при р = 8    | x min |  10 -77.

Максимальне число має найбільшу мантису і найбільший позитивний порядок

x max| = 0  111.......1111  0  111....1111 =    2).

Наприклад, при р = 6    x max  10 19,   а при  р = 8     x max    10 76 .  Тобто, порівняно невелика кількість розрядів порядку достатнья для зображення як дуже малих,  так і  дуже великих чисел. Від  кількості розрядів мантиси діапазон чисел, що можуть бути зображені, не залежить.

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

Нехай наше число буде  х = М.2П; найближче (зверху) до нього число буде  x = ( M+2 - m). 2П; різниця цих чисел х = 2 - m. 2П. Відносна різниця

   =

Величина буде найбільшою для найменшої мантиси М = 100.....00 = 1/2 .    max =

Тобто для     m = 8    max = 2-7 = 1/128 0.008

  m = 16   max = 2-15    3.10-5

  m = 24   max   10-7

  m = 32   max   10-9.

 Як видно, для задовільної точності кількість розрядів мантиси повинна бути досить великою.

Нормалізований формат з плаваючою точкою зручний для операцій множення та ділення. Але для операцій додавання та віднімання доводиться приводити числа до однакового порядку, тобто переходити до формату з фіксованою точкою. В ЕОМ ці переходи здійснюються спеціальними допоміжним підпрограмами, на виконання яких витрачається чималий час.

Обгрунтування необхідності співпроцесора

Хоча мікропроцесор К1810ВМ86 оперує з 16-розрядними числами, відносна точність його обчислень не дуже висока. Оскільки максимально-можлива відносна похибка дорівнює max  = 2 - m+1 (де m - кількість розрядів мантиси), то для m = 16 вона складатиме тут 3.10-5  3). При довгих обчисленнях похибка може накопичуватися і стати неприпустимо великою. Тому при потребі високої точності доводиться працювати з подвійними словами (DWORD, m =32)

повторюючи операції двічі, що істотно знижує швидкодію процесора. Але і це не гарантує достатньої точності.

Крім того, система команд МП-86 не передбачає можливості працювати з плаваючою точкою, що утруднює обробку малих та великих чисел і дробів взагалі. Не передбачено також апаратного переходу від формату з фіксованою точкою до формату з плаваючою точкою і тому доводиться кожного разу викликати відповідну підпрограму, що також сповільнює процес обчислень. Щодо математичних операцій, то МП-86 апаратно виконує лише чотири арифметичні дії з цілими числами. Він не може видобувати корені, логарифмувати і оперувати з тригонометричними функціями. Усе це можна, звичайно, здійснювати спеціальними підпрограмами, але і це призводить до істотного зниження швидкодії.  

Найефективнішим виходом з цього виявляється підключення до МП-86 допоміжного процесора, який не будучи таким універсальним як МП-86, спеціалізувався б на виконанні обчислень з високим ступенем точності. Такий допоміжний процесор має назву співпроцесора.

Для мікропроцесора  К1810ВМ 86  таким математичним співпроцесором є К1810ВМ87 (скорочено ВМ-87). Конструкивно він виконаний за тією ж технологією, як і МП-86 (n - МОН технологія), має 40 виводів і містить 65000 транзисторів, живиться напругою +5В і потребує 1.5Вт потужності.

Формати чисел у співпроцесорі ВМ-87. Його можливості.

Дані в ВМ-87 можуть вводитися і виводитися кількома методами, а саме у вигляді:

цілих двійкових чисел;

цілих двійково-десяткових чисел;

двійкових дійсних чисел з плаваючою точкою.

Цілі двійкові числа можуть мати формати по 16, 32, та 64 розряди (разом зі знаком).

Двійково-десяткові числа мають 18 тетрад. В кожній тетраді записується двійковим кодом розряд десяткового числа (від 0 до 9). Отже, 18 тетрад дозволяють зображати десяткові числа з 18 розрядами.

Дійсні числа зображаються у нормалізованому експоненціальному форматі різної довжини:

а) короткий дійсний формат ( КДФ - на 32 розряди)

б)довгий дійсний формат ( ДДФ - на 64 розряди)

Крім того, ВМ-87 має ще й 80-розрядний внутрішній дійсний формат  ВДФ, в якому і виконуються всі  обчислення. У цьому форматі   x min  = 10 -4932 , x max = 10 4931 та   max   10 -19 .

Знак порядку у цих форматах не передбачений. Співпроцесор працює з так званим зміщеним порядком, так щоб цифра порядку була завжди додатньою.4). Для цього до істиного значення порядку додається константа зміщення. Так наприклад, у форматі КДФ, з його р = 8,  ця константа дорівнює 12710. Отже, коли у розрядах порядку стоятиме нуль, то це насправді є порядок   мінус 127, якщо 127, то істине значення порядку є нуль, а якщо 255, то справжнє значення порядку є +128. У загальному вигляді константа зміщення  дорівнює 2 р - 1 -1;  для ДДФ вона складає 1023, а для ВДФ  це 16383.

Формула для обчислень істиного значення числа має вигляд (для ВДФ)

  х = (-1) Sm. (m 0,m1,m2, . . . . . .m64). 2 П -16383

тут Sm -  знак мантиси, m i - значення і - того розряду мантиси, П - порядок. Аналогічний вигляд мають також формули для КДФ та ДДФ. Слід лише зауважити, що в них опускається член m0, оскільки у нормалізованому експоненційному форматі він завжди дорівнює одиниці 5). Так наприклад. для числа  1 01111110 11000. . . . . 00  в форматі  КДФ    Sm = 1;  m1 = 1; m2 = 1; m3. . . m23 = 0;  m 0  завжди дорівнює одиниці;   П = 12610 . Отже,

 х = (-1)1.( 0.111). 2126 -127 = -(0.875).2-1 = -0.4375 .

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

Співпроцесор ВМ-87 не може працювати самостійно, а тільки разом з МП-86. При цьому команди ВМ-87 можуть розглядатися як розширення списку команд МП-86. Загальна швидкість обробки числових даних в плаваючою точкою у такому тандемі зростає у кілька десятків разів порівняно з одним МП-86. За швидкістю та точністю подібна система стає вже подібною до міні-ЕОМ.

Включення співпроцесора

Для спільної роботи зі співпроцесором мікропроцесор МП-86 слід включити у максимальний режим ( = 0). Шина адреси / даних AD0 -A19 у МП-86  та співпроцесора зєднуються між собою без будь-яких узгоджуючих пристроїв. На обидві ВІС подаються синхронізуючі імпульси CLK від загального ГТІ. Зєднані також виходи слова стану S0 - S2 і лінія . На підставі слова стану системний контролер виробляє керуючі сигнали, , MEMR, MEMW, INTA . Зєднання інших виводів має такі особливості:  

вхід МП-86  зєднано з виходом співпроцесора BUSY, високий

рівень на якому вказує, що співпроцесор робить обчислення. Цим блокуються нові звернення процесора до співпроцесора;

QS0 та QS1 видають слово стану черги команд в МП-86. Для співпроцесора ці сигнали є вхідними і за допомогою них він одержує інформацію про стан справ у черзі команд МП-86;

вивід INT у співпрцесора є виходом і через контролер переривань він може звертатися до мікропроцесора з вимогою переривань, як і будь-який інший зовнішній пристрій;

За допомогою сигналів RG/GT1 та RG/GT2 співпроцесор при потребі здійснює (через МП-86) захоплення шин.

Блок-схема  співпроцесора  К1810ВМ87

Блок-схема співпроцесора К1810ВМ87 подібна до блок-схеми мікропроцесора МП-86 і також складається з трьох частин (рис.15.2):

Блока спряжіння з системною шиною (шинного інтерфейсу);

виконавчого блока;

керуючого пристрою.

Всі ці блоки поєднуються між собою внутрішньою шиною співпроцесора.

До блоку спряжіння входить буферний регістр шини адреси / даних БРШ, блок формування адреси та регістр черги команд.

Основу виконавчого блоку складають вісім 80-розрядних робочих арифметичних  регістрів та арифметичний пристрій, що виконує обчислювальні операції. Арифметичні регістри ST(0) - ST(7) оформлені у вигляді стека; в них записуються вхідні дані та результати виконаних операцій. До них додається показник верхівки стека ST, котрий трьохбітовим числом вказує номер регістра, який на даний момент є верхівкою стека. При запису у стек вміст його верхівки  декрементується (ST = ST - 1), при  видобуванні зі стека  інкрементується (ST = ST +1). Регістри стека зациклені, тобто при ST = 000  наступним записом у стек верхівка переводиться до ST = 111.

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

00 - в регістрі записане скінчене число; 01 - в регістрі  записано нуль; 10 - в регістрі стоїть “не-число” (тобто код, який не відповідає нормалізованому формату); 11 - регістр порожній.

 Теги одслідковують характер чисел в регістрі стека і записуються в 16-розрядний  регістр тегів TR. Теги потрібні для контролювання правильності операцій. У випадку команди, яка спробує записати число у заповнений регістр (тег = 00), видобути число з порожнього регістра (тег = 11), використати “не-число” як операнд (тег = 10) або спробує поділити на нуль (тег = 01), виникне нештатна особлива ситуація, для усунення якої співпроцесор може звернутися по перериванням до МП-86 за консультацією і допомогою. Коди всіх можливих особливих ситуацій записані в 64-розрядному регістрі ЕР і саме з нього інформація про характер особливої ситуації надходить до МП-86.

Крім цих регістрів виконавчий пристрій містить:

Регістр стану SR. Цей регістр має різні поля і флаги, які при роботі співпроцесора автоматично встановлюються відповідно до  дій, що він виконує та результатів цих дій. Отже прочитавши вміст цього регістра можна мати повну інформацію про стан співпроцесора. Саме до цього регістра звертається МП-86 при розвязанні конфліктних ситуацій, читаючи з   слово стану співпроцесора;

регістр керування CR. Вводячи до цього регістра значення певних бітів, можна наказувати співпроцесорові виконувати ті чи інші дії.

Керуючий пристрій керує за допомогою мікрокоманд усіма описаними блоками.

Як працює співпроцесор?

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

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

Для того щоб МП-86 мав час перевірити стан на своєму вході  = BUSY команді ESC обовязково передує команда WAIT - тобто команда що переводить МП-86 у стан очікування. Одержавши цю команду мікропроцесор перевіряє стан свого входу , і якщо  = 1, продовжує перебувати у стані очікування, аж доки співпроцесор не розблокує його виставивши BUSY=0.6)

 Але починати свою роботу співпроцесор може лише тоді, коли МП-86 закінчить виконання всіх команд, що передували команді ESC і були включені у чергу команд. Тому співпроцесор відслідковує  стан черги команд за ознаками черги  команд QS0 та QS1. Коли за цими ознаками видно, що команда, яка передувала команді ESC вже виконана, співпроцесор починає діяти. Через свій вихід BUSY він подає до МП-86, на його вхід , сигнал високого рівня і блокує роботу МП-86 доти, доки не закінчить свою роботу і не зніме сигнал BUSY.

 Якщо для виконання команди співпроцесорові  треба звертатися до памяті для зчитування або запису даних, в команді ESC передбачаються вказівки на адресу відповідних комірки памяті. За цією адресою МП-86 (до того як він буде заблокований сигналом BUSY) обчислює фізичну адресу комірки памяті і активізує її на запис або читання. Далі в обмін з памяттю вступає співпроцесор, котрий сприймає дані з памяті або записує їх у память.

Коли за характером команди співпроцесор має зчитати з памяті більш одного слова, або коли він має записати у память будь-які дані, співпроцесор робить запит на захоплення шини. Він це робить сигналом /0 (еквівалент сигналy HOLD) і одержує дозвіл сигналом  /1(еквівалент сигналу HLDA).

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

Поняття про програмування співпроцесора

Система команд співпроцесора складається з 69 базових команд, які можуть мати по кілька різновидів. Ця  система команд являє собою начебто доповнення до системи команд МП-86. Всі команди співпроцесора мають свою мнемоніку і вкючаються програмістом у загальну програму складену мовою Асемблера. Мнемонічною ознакою команд співпроцесора є те, що вони всі починаються з літери F. Далі йде мнемонічна назва команди, яка здебільша збігається з мнемонікою МП-86, наприклад, FADD, FSUB, FVUL, FDIV, FCOMP. Літера І, що стоїть інколи після F, означає що операндами є цілі числа (напр., FIADD або FICOMP). Значна кількість команд не має прототипів у системі команд МП-86, наприклад, FSQRT - видобування квадратного кореня або FPTAN - обчислення тангенса, FLDZ  - обнулення верхівки стека ST(0), FST  - пересилання зі стека співпроцесора до основної памяті.

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

   FADD  DWORD  PTR  ARRAY[SI].

 Ця команда означає: додати до вмісту регістра, що є верхівкою стека, подвійне (чотирьохбайтне) слово з масиву ARRAY; номер елемента масиву знаходиться у індексному регістрі SI.

Розглянемо як приклад програму підсумовування  N елементів масиву з імям ARRAY. Числа в масиві задані  у КДФ (тобто як 32-розрядні, чотирьохбайтові числа); сума у форматі ДДФ записується в основну память за адресою  SUM у вигляді вісьмибайтного слова (QWORD)

 MOV CX,N   ;підготовка лічильника

 FLDZ    ;підготовка місця для суми -

                ;обнулення регістра стека ST(0)

 XOR SI,SI   ;обнуленняя індексного регістра

MORE: FADD  DWORD  PTR  ARRAY[SI]

;до вмісту ST(0) додати елемент ;масиву

ADD SI,4   ;формування номера наступного

   елемента масиву 7 

 LOOP  MORE  ;утворення циклу

 FST  QWORD  PTR  SUM

;результат (слово з вісьми байтів) ;пересилається зі стека до адреси SUM

    

 RET    ;вихід з підпрограми

Машинні коди команд співпроцесора можуть складати від двох до чотирьох байтів. Тут можуть бути дві ситуації: операнди знаходяться у регістрах стека, або один з них знаходиться в стеці, а другий  - у пам’яті. У загальному випадку код команди має вигляд:

В першому байті обовязково є пять бітів команди ESC. Поле X в першому байті та поле Y у другому містять код операції. Якщо один з операндів знаходиться в памяті, то його ефективна адреса формується звичайним шляхом;  поле MOD вказує на розмір зміщення, а поле R/M - на регістри, які приймають участь у формуванні адреси. Саме зміщення записується у третьому та четвертому байтах команди. Розглянемо як приклад команду

FLD  DWORD  PTR  [SI+2AB9]

завантажити у стек  подвійне слово з адресою, заданою шляхом непрямої адресації через регістр SI зі зміщенням 2АВ9. Якщо вважати що подвійне слово задане в форматі КДФ, то код операції буде X = 001; Y = 000; MOD = 10; R/M = 100. Отже, перші два байти будуть 11011001 та 10000100 і загальний код команди становитиме D9 84 B9 2A.

Якщо операція виконується над одним операндом (наприклад, видобування квадратного кореня), то він завжди розташовується у верхівці стека ST(0). При цьому поле MOD = 11, а поле R/M служить для задавання коду операції, тобто є начебто продовженням поля Y

Якщо ж обидва операнди містяться у стеці (один в його  верхівці ST(0), а другий в регістрі ST(і), то MOD = 11, а в полі R/M записується номер регістра  і.

Повний список команд співпроцесора можна знайти у довідниках, зокрема в книзі В.К.Злобин, В.Л.Григорьев Программирование арифметических операций в микропроцессорах. М. Высшая школа 1991.

   

 

1 Сума геометричної прогресії 1+2+4+8.. , що складається з р членів, дорівнює 2 р - 1.

2 (1-2 -m) є сума геометричної прогресії  і при великому m прямує до одиниці.

3 При цьому ми не врахували, що кілька розрядів треба  зарезервувати ще й на знак числа та означення порядку.

4 Цим вдається заощадити один розряд - розряд знаку.

5 Це дає можливість заощадити ще один розряд.

6 В асемблерній програмі команда WAIT може не фігурувати у явному вигляді.


Вона автоматично встановлюється перед командою ESC при асемблювання програми.

7 Адже кожний з елементів масиву займає по 4 комірки пам’яті.


 

А также другие работы, которые могут Вас заинтересовать

23762. Признак делимости на 9 43 KB
  – А зачем нам нужны признаки делимости – Что бы быстрее определять делится ли число на данное или нет. Будет ли число представленное выражением d 235 делиться на5 – Всё зависит от того какое значение принимает d потому что если каждое слагаемое делится на 5 то и вся сумма разделится на 5 ели одно слагаемое делится на 5 а другое не делится на 5 то вся сумма не разделится на 5. 2 Будет ли число представленное выражением 271k делится на 2 –Всё зависит какое значение принимает k т. по свойству делимости произведения...
23763. Признаки делимости на 10, на 2, на 5 87.5 KB
  1 Выберите из множества A = числа кратные: а 2 б 5 в 10 г и 2 и 5 и 10. Кратные 2: 110; 300; 404; 706 т. П1 Кратные 5: 110; 215; 300 т. На доске: П2 Кратные 10: 110; 300 т.
23764. Признаки делимости на 10, на 5, на 2 42 KB
  – Выясните делится ли: 1 на 10; – Делится на 10 т. 10 делится на 10 а произведение делится на число если один из множителей делится на число. 2 100a 10b на 5; – Делится на 5 т. 100 делится на 5 а значит 100a делится на 5 10 делится на 5 а значит 10b делится на 5 следовательно вся сумма делится на 5 по свойству делимости суммы на число.
23765. Отрицание общих высказываний 39 KB
  – Что вы ещё знаете о высказываниях Высказывания бывают разного вида. – Какие бывают высказывания Высказывания бывают общие высказывания о существовании и высказывания не относящиеся ни к одному ни к другому виду. Индивидуальное задание: – Постройте отрицание следующего высказывания: Сумма простого числа и составного является составным числом. то его можно отнести к высказываниям о существовании.
23766. Отрицание общих высказываний 38.5 KB
  Основные цели: –тренировать способность к построению отрицания общих высказываний; повторить и закрепить приёмы устных и письменных вычислений с десятичными дробями приближения чисел с точностью до данного разряда с недостатком и избытком признаки делимости. – Здравствуйте ребята Какую тему мы начали изучать Отрицание общих высказываний. – Сегодня мы продолжим работать с отрицанием высказываний.