Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розглянути практичне питання 327гр АРХ..doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
347.65 Кб
Скачать
  1. Розглянути практичне питання, пов'язане з особливостями реалізації арифметико-логічного пристрою комп'ютера, на прикладі проектування АЛП для множення чисел з фіксованою комою, заданою у прямому коді, із старших розрядів множника.

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

Для кращого розуміння цих питань проведемо синтез арифметичного пристрою, призначеного для виконання тільки однієї операції – множення чисел з фіксованої коми, заданих у прямому коді, зі старших розрядів множника . У ході цього процесу звернемо увагу на особливості використання розглянутих вище основних схемотехнычних елементів ЕОМ.

Синтез АЛП проходить у кілька етапів. Спочатку необхідно вибрати метод, по якому передбачається виконання операції, і скласти алгоритм відповідних дій. Виходячи з алгоритму й формату вихідних даних, слід визначити набір складових АЛП елементів. Потім потрібно визначити зв'язки між елементами, установити порядок функціонування пристрою й тимчасову діаграму керуючих сигналів, які повинні бути подані на АЛП від пристрою керування.

Нехай операнди мають вигляд:

[X]пк = x0x1x2…xn

[Y]пк = y0y1y2…yn

де x0, y0 – знакові розряди.

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

Sign Z = Sign X / Sign Y

|Z| = y1•|X|•2-1+ y2•|X|•2-2 +…+yn•|x|•2-n

[X]пк = 0.1101 ; Sign X = 0

[Y]пк = 1.1011 ; Sign Y = 1

Sign Z = 0/1 = 1

|X| = 0.1 1 0 1

|Y| = 0.1 0 1 1

y1y2y3y4

+0.00000000 |Z| = 0

y1 = 1 0.01101000 1•|X|•2-1

+0.01101000 |Z| = |Z| + |X|•2-1

y2 = 0 0.00000000 0•|X|•2-2

+0.01101000 |Z| = |Z| + 0

y3 = 1 0.00011010 1•|X|•2-3

+0.10000010 |Z| = |Z| + |X|•2-3

y4 = 1 0.00001101 1•|X|•2-4

­0.10001111 |Z| = |Z| + |X|•2-4

  1. Розглянути практичне питання, пов'язане з принципами побудови схемного й мікропрограмного пристроїв керування. Схемний пристрій керування.

Пристрій керування схемного типу (мал. 1.)складається з:

  • датчика сигналів, що виробляє послідовність імпульсів, рівномірно розподілену в часі по своїх шинах (мал. 2.) (n-загальна кількість керуючих сигналів, необхідних для виконання будь-якої операції; m - кількість тактів, за яку виконується сама довга операція);

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

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

Мал. 1.  Функціональна схема схемного пристрою керування

Мал. 2.  Тимчасова діаграма роботи датчика сигналів

Датчик сигналів звичайно реалізується на основі лічильника з дешифратором або на здвиговому регістрі.

  1. Розглянути практичне питання, пов'язане з принципами побудови схемного й мікропрограмного пристроїв керування. Структурна схема мікропрограмного пристрою керування.

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

Мал.1. Функціональна схема мікропрограмного пристрою керування

(УСi - керуючі сигнали, вироблювані пристроєм керування)

Передбачається, що початкова адреса мікропрограми рівна 300, кількість розрядів множника рівно 2, а адресна частина мікрокоманди містить адреса мікрокоманди, яка повинна бути обрана в наступному такті.

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

  1. Розглянути практичне питання, пов'язане з машинною виставою команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Кодування лінійних команд.

Приклад 1.

Обидва операнди перебувають у регістрах загального призначення: (AX)=a; (CX)=b. Для звертання до операндів використовується пряма регістрова адресація.

Символічний запис команди:

ADD AX,CX

Згідно таблиці машинний вигляд цієї команди має вигляд:

000000dw md reg r/m

За умовою операнди займають повнорозрядні регістри довжиною 1 слово, отже, необхідно встановити w=1.

Тому що обідва операнда розташовуються в регістрах загального призначення, та кожної з них можна закодувати в поле reg. Тому команда може мати два різні вигляди в машинному коді. При цьому, якщо в поле reg закодований номер регістру AX, те біт приймача результату d=1. Якщо в поле reg закодований номер регістру CX, то біт приймача результату d=0.

або

Тут і далі в записі команд b означає двійкова вистава, h - 16-е.

Після виконання команди в AX буде записана сума вмісту регістрів AX і CX, а покажчик команди IP збільшиться на довжину виконаної команди (2 байта) і буде вказувати на перший байт наступної команди.

Тут і далі вистава інформації будемо давати в 16-м виді, якщо інше не застережене особливо.

Якщо перед початком виконання команди (AX)=0C34, (CX)=1020, (IP)=0012, то після її виконання (AX)=1C54, (CX)=1020, (IP)=0014.

  1. Розглянути практичне питання, пов'язане з машинною виставою команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Кодування лінійних команд

Приклад 1.

Операнд a перебуває в слові оперативної пам'яті, адреса якого зберігається в регістрі BX, а операнд b - у регістрі AX. У цьому випадку адресація операнда a - регістрова непряма.

Символічний запис команди:

ADD [BX],AX

Машинна вистава:

Якщо перед виконанням команди (AX)=1234, (BX)=3474, [3474]=D7, [3475]=11, (IP)=0012, то в результаті виконання команди відбудуться наступні зміни: [3474]=0B, [3475]=24, (IP)=0014.

Приклад 2.

Операнд a перебуває в AX. Операнд b є елементом масиву, перший елемент якого позначений міткою MAS, а положення операнда b у масиві визначається вмістом регістру BX (мал..1).

Мал. 1.  Організація доступу до операнду при регістровій відносній адресації

Символічний запис команди:

ADD AX,MAS[BX]

При асемблюванні програми мітці ставиться у відповідність зсув відносно початку сегмента. Таким чином, операнд b буде визначатися в цьому випадку за допомогою регістрової відносної адресації (підсумовування значення зсуву й умісту регістру).

Нехай початок масиву MAS має зсув в 3000h байтів від початку сегмента DS. Тоді машинний код команди буде мати вигляд:

Якщо перед виконанням команди (AX)=1234, (BX)=0074, [3474]=E6, [3475]=64, (IP)=0102, то результатом буде: (AX)=771A, (IP)=0106.

Якщо початок масиву розташовується зі зсувом 70h байтів від початку сегмента DS, то програма Асемблера сформує більш короткий машинний код команди:

Якщо вихідний стан елементів зберігання збігається з попереднім, за винятком (BX)=3004, то й результат буде таким же, за винятком (IP)=0105.

  1. Розглянути практичне питання, пов'язане з машинною виставою команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Кодування лінійних команд

Приклад 1.

Операнд a перебуває в регістрі AL. Операнд b є елементом масиву, початкова адреса якого перебуває в регістрі BX. Положення елемента в масиві визначається регістром DI (мал.1).У цьому випадку звертання до операнду b відбувається за допомогою базово-індексної адресації.

Мал.1.  Розташування операнда при базово-індексної адресації

Символічний запис команди має вигляд:

ADD AL,[BX+DI]

Тому що перший операнд перебуває в регістрі AL, те він має довжину 1 байт. Тому в машинній виставі команди w=0, і вона виглядає в такий спосіб:

Якщо до початку виконання команди (AX)=25B7, (BX)=3000, (DI)=0474, [3474]=77, (IP)=2519, то після її виконання відбудуться наступні зміни: (AX)=252E, (IP)=251B. Оборотний увага на те, що вміст регістру AL являє собою молодший байт регістру AX. Тому що операція проводиться над байтами, то перенос у старший байт регістру AX блокується.

Приклад 2.

Операнд a перебуває в оперативній пам'яті по прямій адресі 3474. Адреса операнда b, що також перебуває в оперативній пам'яті, утримується в регістрі SI.

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

MOV AX,[SI]; AX=b

ADD [3474h],AX; a=a+b

Кодування кожної із цих команд проводиться за розглянутими вище правилами.

  1. Розглянути практичне питання, пов'язане з машинною виставою команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Кодування лінійних команд

Приклад 1.

Операнд a перебуває в регістрі AH. Операнд b є елементом двовимірного масиву, перший елемент якого позначений міткою MAS. Довжина (у байтах) від початку масиву до початку рядка, у якому розташований операнд, зберігається в регістрі BX, а в регістрі DI зберігається кількість байт від початку поточного рядка до операнда b (мал.1).

Мал.1.  Розташування операнда при відносній базово-індексної адресації

Символічний запис команди:

ADD AH,MAS[BX+DI]

Машинний код команди буде залежати від того, як далеко відносно початку сегмента розташовується початок масиву (див. приклад 6). Якщо цей зсув займає 2 байта й, наприклад, рівно 1D25, то машинний код команди має вигляд:

Якщо зсув більш короткий і може бути записаний в одному байті, наприклад, 2D, то машинне представлення команди наступне:

При (AX)=84A3, [(BX)+(DI)+disp8]=3474, [3474]=77, (IP)=0110 результат буде (AX)=FBA3, (IP)=0114 у першому випадку й (IP)=0113 у другому.

  1. Розглянути практичне питання, пов'язане з машинною виставою команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Кодування команд переходів

Приклад 1.

Команда JMP short L здійснює передачу керування команді, позначеної міткою L.

Нехай ця команда переходу записано за адресою 010A. Тоді якщо мітці L відповідає, наприклад, адреса 011A, той зсув у команді переходу буде рівно:

011A - (010A+2)=011A-010C=011A+FEF4=0E

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

Машинна вистава команди наступна:

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

Якщо команда, позначена міткою L, розташовується за адресою 00C1, то зсув буде рівно:

00C1-010C=00C1+FEF4=FFB5

Отриманий зсув має довжину 2 байта, що неприпустимо для даного формату команди. Але тому що старший байт являє собою знакове розширення молодшого байта (FFB5h = 11111111 10110101b), той цей зсув можна закодувати в 1 байті, і команда буде мати машинне представлення: EBB5h.

Якщо мітці L відповідає адреса 0224, то необхідна величина зсуву, рівна 0224-010C=0118, не може бути записана в 8-розрядному форматі. Отже, за допомогою команди короткого переходу здійснити перехід на зазначену адресу неможливо.

  1. Розглянути практичне питання, пов'язане з машинною виставою команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Кодування команд переходів

Приклад 1.

Нехай команда JMP near L має машинне представлення E964A6h. Тоді якщо вона розташовано за адресою 310A, те керування буде передано на команду з адресою:

(310A+3)+A664=D771

Якщо команда переходу перебуває за адресою C224, то керування буде передано на команду з адресою 688B (C224+3+A664 з урахуванням ігнорування переносу за межі 16- розрядної сітки).

У першому випадку перехід відбувся убік більших, а в другому - убік менших адрес.

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

Внутрішнсегментну пряму адресацію часто називають відносною адресацією, тому що тут зсув обчислюється щодо поточного значення IP.

При внутрішньосегментному непрямому переході вміст IP заміняється значенням 16-розрядного регістру або слова пам'яті, які адресуються полями md і r/m постбайта за допомогою будь-якого режиму адресації, крім безпосереднього. Схема цієї дії представлена на мал.1.

Мал. 1.  Схема внутрішньо-сегментного непрямого переходу

  1. Розглянути практичне питання, пов'язане з машинною виставою команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Кодування команд переходів

Приклад 1.

Нехай необхідно здійснити передачу керування на команду, позначену міткою L, що й розташовується в іншому програмному сегменті з наступними координатами: (CS)=AA66, (IP)=11C2. Символічний запис такої команди переходу буде наступною:

JMP far L

а її машинна вистава:

При міжсегментному непрямому переході нові значення IP і CS утримуються не в самій команді, а у двох суміжних словах оперативної пам'яті. Адреса цієї області пам'яті визначається постбайтом команди переходу в будь-якому режимі адресації, крім безпосереднього й прямого регістрового. Схема виконання команди представлена на мал.1.

Мал.1.  Схема міжсегментного непрямого переходу

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

У сумнівних випадках тип переходу може задаватися явно за допомогою префіксів word ptr і dword ptr відповідно для внутрішнсегментного й міжсегментного переходів.

  1. Розглянути практичне питання, пов'язане з машинною виставою команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Кодування команд переходів

Приклад 1.

Нехай (BX)=24A4, [24A4]=11, [24A5]=12, [24A6]=13, [24A7]=5A.

Тоді команда JMP dword ptr [BX] має машинне представлення

і передає керування команді, розташованої в кодовому сегменті (CS)=5A13 зі зсувом (IP)=1211.

Команда JMP word ptr [BX] має машинне представлення

і передає керування команді, розташованої в тому ж кодовому сегменті зі зсувом (IP)=1211.

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

Приклад 2

Нехай команда JZ L розташовано за адресою 2010h, а мітка L відповідає адресі 2072h. Одержимо машинне представлення цієї команди.

Зсув буде рівно:

2072 - (2010+2)=2072+DFEE=0060

Це число зі знаком може бути закодоване в 1 байті, отже, такий перехід можливий. Використовуючи код команди з табл. 1., одержимо машинне представлення цієї команди: 7460 h.

Розглянута команда передасть керування за адресою 2072, якщо до моменту її виконання ZF=1. При стані ознаки ZF регістру прапорів, рівному нулю, керування буде передано наступній команді, тобто за адресою 2012.

  1. Розглянути практичне питання, пов'язане з машинною виставою команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Кодування команд переходів

Приклад 1.

Представити символічний запис команди, що має наступну машинну форму: 81475D398B h.

Переходимо до двійкового прелставлення команди:

Перший байт, згідно з таблицею машинного представлення команд, відповідає команді додавання з безпосереднім операндом. Постбайт у цьому випадку кодує місце розташування лише одного операнда, яке визначається полями md і r/m: (BX)+disp8, а середнє поле постбайта є розширенням коду операції.

Адресація операнда вимагає вказівки в команді 8-розрядного зсуву. Воно міститься відразу ж за постбайтом. Останні байти команди кодують безпосередній операнд. Значення sw=01 у першому байті команди вказує на те, що безпосередній операнд - 16-розрядний. Враховуючи, що при кодуванні в команді двухбайтовых величин спочатку записується їхній молодший байт, одержимо наступний символічний запис команди:

ADD [BX+5D],8B39h

Приклад 2.

Нехай машинна форма вистави команди наступна: 0445h. Тоді її двійковий вид:

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

Тому що w=0, те безпосередній операнд має довжину 1 байт, а в якості акумулятора використовується регістр AL. При цьому команда має такий вигляд: ADD AL,45h

  1. Розглянути практичне питання, пов'язане з машинним представленням команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання.

    Оцінка впливу структури програми на час її виконання

Приклад 1.

ADD ES:[BX],DX

Команда формату " пам'ять-регістр".

Базовий час: 16+EA.

Час обчислення EA (регістрова непряма адресація): 5 тактів.

Позначення "ES:" у символічному записі команди показує, що в процесі формування фізичної адреси операнда відбувається заміна сегментного регістру. Замість використовуваного за замовчуванням при даному режимі адресації сегментного регістру DS використовується регістр ES. Ця операція вимагає 2 тактів синхронізації.

Команда обробляє слово. Якщо слово має непарну адресу, то

Т=16+5+2+2*4=31 (такт)=310 (нс)

Якщо слово має парну адресу, то

Т=16+5+2=23 (такту)=230 (нс)

Приклад 2.

MUL [BX]

Множення без знака вмісту AL на операнд, адреса якого заданий у команді. Операнд перебуває в пам'яті.

Базовий час: (76...83)+EA.

Час обчислення EA (регістрова непряма адресація): 5 тактів.

Т=(76...83)+5 = (81...88) тактів = (810...880) нс

  1. Розглянути практичне питання, пов'язане з машинним представленням команд різних форматів і з різними режимами адресації операндів, з дизасемблюванням команд, з оцінкою впливу структури програми на час її виконання

    Оцінка впливу структури програми на час її виконання

Приклад 1.

JZ MET ; перейти на MET, якщо "нуль"

Базовий час: 4 такту, якщо немає переходу, і 16 тактів, якщо перехід виконується.

Інших витрат часу немає.

Т=4 такту=40 нс переходу немає.

Т=16 тактів=160 нс перехід виконується.

Приклад 2.

JMP dword ptr [SI+15] ; міжсегментний непрямий перехід.

Базовий час: 24+EA.

Час обчислення EA (регістрова відносна адресація): 9 тактів.

Є 2 звертання до пам'яті за новими значеннями IP і CS.

Якщо адреса слова парна, то

Т=24+9=33 (такту)=330 (нс).

Якщо адреса слова непарна, то

Т=24+9+2*4=41 (такт)=410 (нс).

Час виконання лінійної ділянки програми дорівнює сумі часу виконання всіх команд цієї ділянки.

Оцінимо час виконання розгалудженої програми на прикладі наступного завдання:

Нижче представлений текст відповідної програми в припущенні, що A, B і y - змінні довжиною 1 байт ідентифікатори, що мають, MA, MB і MY відповідно. Тут і далі вважаємося, що використовувані адреси в сегменті даних - парні. Поруч із кожною командою зазначена кількість тактів синхронізації, необхідне для її виконання (ідентифікатори відповідають прямому режиму адресації):

MOV BL,5 ; 4

MOV AL,MA ; 10

CMP AL,MB ; 15

JG OUT ; 4/16

INC BL ; 3

OUT: MOV MY,BL ; 15

Таким чином, якщо A>B, те програма виконується за 60 тактів, а якщо ні, то - за 51 такт.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]