Виконання команд на рівні регістрів процессора. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Виконання команд на рівні регістрів процессора.



Для глибшого розуміння послідовності виконання команди розглянемо детальніше структуру регістрової (надоперативної) пам’яті процесора. Ця пам’ять (рис. 3.3) склада­ється з регістрів з закріпленими операціями, та регістрів зального призначення. Тут РгА, РгК і РгД - відповідно регістри адреси, команд і даних. РгА зберігає адресу даного або команди при зверненні до основної пам’яті. РгД зберігає операнд при його запису або зчитуванні з основної пам’яті. В ролі операнда може бути дане, команда або адреса. РгК зберігає команду після її зчитування з основної пам’яті. ПЛ - програмний лічильник, який підраховує команди та зберігає адресу поточної команди. Комп’ютер з архітекту­рою Джона фон Неймана має один програмний лічильник.

Більшість комп’ютерів мають в складі процесора тригери для зберігання бітів стану процесора, або, як їх іще називають, прапорців. Кожен прапорець має спеціальне при­значення. Частина прапорців вказує на результати арифметичних і логічних операцій: додатній результат (Р), від’ємний результат (ІЯ), нульовий результат (X), перенос (С), арифметичне переповнення (V), і т. д. Б системі команд комп’ютера є команди, які вказу­ють процесору коли встановити чи скинути ці тригери. Інша частина прапорців вказує режими захисту пам’яті. Існують також прапорці, які вказують пріоритети виконува­них програм. Б деяких процесорах додаткові тригери служать для зберігання кодів умов, формуючи регістр кодів умов. Бзяті разом описані прапорці формують слово стану про­грами (ССП), а відповідні тригери - регістр ССП.

Регістри загального призначення (РЗП) є програмно доступними. Зазвичай їх на­зивають регістровим файлом. Вони можуть використовуватись програмістом в якості регістрів для зберігання вхідних та вихідних даних, а також проміжних результатів об­числень, в якості адресних та індексних регістрів при виконанні операцій модифікації адрес. Наприклад, в процесорі ІЛіта.ЯРЛКС II є дві групи регістрових файлів: 32 64-роз- рядні регістри загального призначення та 32 регістри для даних з рухомою комою, які можуть зберігати або 32-розрядні дані одинарної точності, або 64-розрядні дані подвій­ної точності. В процесорі РепПит II є лише 8 32-розрядних та б 16-розрядних регістрів загального призначення.

Зв’язки між вузлами процесора і основною пам’яттю показано на рис. 3.4. Як видно з рисунка, процесор взаємодіє з основною пам’яттю через регістри адрес та даних. Крім того, пристрій керування формує сигнали задання режимів роботи пам’яті.

Виходячи з наведеної вище інформації про вузли процесора та його зв’язки з осно­вною пам’яттю, розглянемо детальніше виконання команд на прикладі виконання опе­рації додавання слова, яке знаходиться в пам’яті за адресою 9, з вмістом регістра РгО регістрової пам’яті процесора, коли результат операції засилається в пам’ять за адресою 9. Програма обчислень знаходиться також в пам’яті. Операцію можна записати наступним чином:

[Комірка 9]:= [Комірка 9] + [РгО].

Послідовність дій при виконанні цієї операції буде наступною:

1. Рг А:= ПЛ. Значення із програмного лічильника, тобто адреса команди, записуєть­ся в регістр адреси РгА.

2. Зчитування із комірки [РгА] основної пам’яті команди додавання двох чисел в регістр даних РгД.

3. Рг К:= Рг Д. Перезапис команди додавання двох чисел з регістра даних в регістр команди РгК.

4. РгА:= [А РгК]. Запис адреси числа із регістра команди до регістра адреси (ця адре­са рівна 9).

5. Зчитування із комірки [РгА] основної пам’яті даного і засилання його в регістр РгД.

6. Рг Д:- [РгД] + [РгО]. Виконання в АЛП операції [РгД] + [РгО] і засилання резуль­тату в РгД.

7. Запис в комірку 9 основної пам’яті даного із регістра РгД.

8. ПЛ:= ПЛ +1. Прирощення на одиницю вмісту програмного лічильника.

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

Конвеєрне виконання команд

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

Т = 1:т + 1:(n - 1) = і(т + n- 1),

де т - кількість виробничих стадій, І - час виконання однієї виробничої стадії, а час, який припадає на виготовлення одного виробу, є рівним:

Тв = і(т + n - 1)/n.

При п >> т час Тв, який припадає на виготовлення одного виробу, наближається до часу 1 виконання однієї виробничої стадії.

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

Для початку розглянемо поділ процесу виконання команди на дві стадії: вибірку та виконання. В процесі стадії виконання команди є проміжки часу, коли немає звернень до пам’яті. Цей час може бути використаним для вибірки наступної команди паралельно з виконанням поточної команди. На рис. 3.13 показано цей підхід.


 

Конвеєр має два незалежних яруси. Перший ярус виконує операцію вибірки та буфе- ризації (короткотермінового запам’ятовування) команди. Коли другий ярус звільняєть­ся від роботи, перший ярус передає йому буферизовану команду. Коли в другому ярусі виконується команда, в першому ярусі вибирається наступна команда. Така операція називається попередньою вибіркою команди (instruction prefetch) або суміщенням ви­бірки (fetch overlap).

Зрозуміло, що описаний процес прискорює виконання команди. Якби операції ви­бірки та виконання мали однаковий час виконання, то цикл виконання команди міг би бути зменшеним вдвоє. Однак це не зовсім так через наступні причини:

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

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

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

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

■ Вибірка команди (ВК): зчитування в буфер очікуваної наступною команди.

■ Дешифрування команди (ДК): визначення типу вибраної команди та специфіка­торів операндів.

* Визначення адрес даних (ВА): обчислення адрес даних, необхідних для виконан­ня команди з врахуванням можливості використання різних способів адресації.

■ Вибірка операндів (ВО): зчитування даних із пам’яті в регістри процесора.

* Виконання команди (КВ): виконання вказаної операції та, при наявності, запам’я­товування результату в визначеному регістрі.

* Запис результату (ЗР): запам’ятовування результату в пам’яті.

При такому поділі час тривалості різних стадій виконання команди буде приблизно рівним. Тоді, як видно з табл. 3.5, шестиярусний конвеєр може зменшити час виконання

команд з 54 тактів до 14 тактів

Часова діаграма в табл. 3.5 показує, що кожна команда виконується шляхом прохо­дження через 6 ярусів конвеєра. Разом з тим, не для кожної команди це потрібно Напри­клад, команда вибірки не вимагає виконання операції ЗО. Однак при її виконанні можна зробити шостий ярус конвеєра прозорим

Також на діаграмі показано, що всі стадії виконуються паралельно. В першу чергу тут прийнято, що не виникає конфліктів при зверненні до пам’яті. Наприклад, операції ВК, ВО та ЗО передбачають звернення до пам’яті. Діаграма допускає, що всі ці звернення можуть здійснюватись одночасно. Більшість систем пам’яті цього не допускають, тому звернення розносяться в часі. Іноді потрібне число може знаходитись в кеш пам’яті, а стадії ВО та ЗО відсутні. Тому конфлікти при зверненні до пам’яті не завжди сповільню­ють конвеєр

Декілька інших факторів обмежують ріст продуктивності за рахунок використання конвеєра

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

■ поява команди умовного переходу може звести нанівець декілька вибірок команд

■ подібною до команди умовного переходу є команда переривання

Табл. 3.6 відображає вплив умовного переходу при виконанні тих же операцій, що й в табл..

Тут прийнято, що команда 3 є умовним переходом до команди 15. Поки команда З виконується, неможливо взнати, яка команда буде наступною. Конвеєр буде вибирати наступні команди (4,5,6,7) і виконувати їх. Наявність умовного переходу визначиться в кінці сьомого такту. Після цього конвеєр повинен звільнитись від непотрібних команд (очиститись). На 8 такті команда 15 поступить в конвеєр і дальше він почне заповнюва­тись знову. При цьому від 9 до 12 тактів не буде завершено виконання жодної команди. Це є розплата ефективністю за причини неможливості передбачити перехід.

 

На рис. 3.14 показано блок-схему виконання команди в шестиярусному конвеєрі з врахуванням переходів та переривань.


 

В шестиярусному конвеєрі команд появляється й інша проблема, якої не було в дво­ярусному конвеєрі. Стадія ВА може залежати від вмісту регістра, який змінюється по­передньою командою, що знаходиться в конвеєрі. З’являється новий конфлікт, для усу­нення якого необхідна відповідна логіка.

Таким чином, конфлікти конвеєра можуть бути трьох типів:

■ Конфлікт ресурсів, наприклад, одночасна потреба доступу до пам’яті. Цей кон­флікт вирішується шляхом розділення доступу до ресурсу в часі, або шляхом введення додаткового ресурсу, наприклад, кількох блоків пам’яті.

■ Залежність між даними, коли результат виконання деякої команди, яка іще не завершена, є операндом для наступної команди. Для подолання даного конфлікту існує декілька шляхів. Це може бути введення „пустої” операції пор (яка не виконує дій, але дозволяє ліквідувати конфлікт), введення зв’язків між ярусами конвеєра, що прискорює доступ до потрібного операнда, а також застосування компілятора, здатного передбача­ти такого типу конфлікти та перевпорядковувати команди програми.

■ Наявність умовних переходів. В сучасних комп’ютерах для зменшення впливу на ефективність конвеєра цього конфлікту використовується спеціальна логіка передба­чення переходу, яка дозволяє знайти вітку, якою програма піде після переходу. Інший під­хід - виконання обох віток переходу до того часу, поки напрям переходу стане відомим.

24. Класифікація архітектури комп'ютера за типом адресованої пам'яті.

Як видно з рис. 3.1, крім коду операції до складу команди входить адресна частина. Цією частиною визначається місце знаходження даних, над якими виконується опера­ція, задана кодом операції. Даних може бути декілька, і, крім того, вони можуть знахо­дитись в основній пам’яті, в регістрах процесора чи в запам’ятовуючих елементах інших вузлів комп’ютера. Тому і формати команд в цих випадках будуть різними. Можна здій­снити класифікацію архітектури комп’ютера за типом адресованої пам’яті. Залежно від того, який тип пам’яті адресується, розрізняють наступні типи архітектур комп’ютера: стекова, акумуляторна, на основі регістрів загального призначення.

В стековій архітектурі (рис. 3.15) операнд завжди знаходиться в вершині стека - спе­ціальному регістрі пам’яті, з якого загружається в регістр процесора, або через нього результат операції загружається в пам’ять. Стек представляє собою пам’ять з детермі­нованою вибіркою, яка працює за принципом „останній прийшов - перший вийшов” (LIFO - Last In First Out). Стек виконує дві операції: push - вштовхування даних в стек, pop - виштовхування даних з стеку

Рис. 3.15. Стекова архітектура

Інформація може бути занесеною в вершину стека з пам’яті або з регістра АЛП про­цесора. Перевага стекової архітектури - відсутність в команді адресної частини. З іншо­го боку, стекова архітектура не передбачає довільного доступу до комірок пам’яті, тому часто важко створити для неї ефективну програму. Крім того, стек не дозволяє підвищи­ти продуктивність комп’ютера за рахунок розпаралелення, оскільки наявна лише одна вершина стека.

Стекова архітектура була реалізована в наступних комп’ютерах: В5500, В6500 фірми Burroughs, НР2116Р, НРЗ 000/70 фірми Hewlett-Packard, JEM 1, JEM 2 фірми ajile Systems.

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

спеціальному регістрі процесора. В цей же регістр записується і результат операції.

- Оскільки адреса одного із операндів визначена, в команді достатньо вказати лише адре­су другого операнда. Перевага даної архітектури - короткі команди. Вона була реалізо­вана в комп’ютерах IBM 7090, DEC PDP-8 та інших.

Рис. 3.16. Акумуляторна архітектура

Архітектура на основі регістрів загального призначення може мати такі різновид­ності як: архітектура типу пам’ять-пам’ять, регістр-пам’ять та регістр-регістр.

В архітектурі типу пам’ять:пам’ять (рис. 3.17) операнди поступають на вхідні ре­гістри АЛП процесора прямо з пам’яті. Результат операції також записується прямо в пам’ять. Оскільки час звернення до пам’яті є більшим часу звернення до регістрів, ця ар­хітектура характеризується низькою швидкодією. Прикладом таких комп’ютерів є сім’ї IBM System/370 та DEC VAX.


Архітектура типу регістр-пам’ять (рис. 3.18) передбачає вибірку та подачу в АЛП одного із операндів з пам’яті, а іншого - з регістра, тому характеризується вищою швид­кодією ніж попередня. Тут в процесорі наявна регістрова пам’ять, причому регістри є програмно доступними.

В архітектурі типу регістр-регістр (рис. 3.19) дані в АЛП поступають лише з регі­стрів процесора, результати виконання операцій також записуються в регістри, а обмін між цими регістрами і пам’яттю здійснюється паралельно з роботою АЛП. Ця архітек­тура характеризується високою швидкодією, оскільки операції виконуються в АЛП з їх читанням-записом до регістрів, які є значно швидшими пам’яті. Крім того, для цієї архітектури характерною є фіксована довжина команд та однакова кількість тактів для виконання всіх команд.

Рис. 3.19. Архітектура типу регістр-регістр

Будь-який із регістрів загального призначення може бути використаний в якості акумулятора, адресного регістра, індексного регістра, стекового регістра, а в деяких машинах навіть в якості програмного лічильника. Більшість сучасних комп’ютерів побу­довані на основі описаної архітектури. Це, зокрема, комп’ютерігРепІіит, SPARC, Power PC, ARM та інші.

Разом з тим, за регістрами можуть бути закріплені конкретні функції - один набір служить в якості індексних регістрів, інший призначений для зберігання арифметичних операндів і т. д. Таким чином організовані регістри в комп’ютерах сім’ї CDC 6000/7000.

 

25. Безпосередня адресація. Пряма адресація. Непряма адресація.

Безпосередня адресація

При безпосередній адресації операнд знаходиться безпосередньо в адресній частині команди (рис. 3.22), розрядність якої рівна розрядності операнда.

Це найшвидший спосіб знаходження операнда, оскільки для його отримання потріб­не лиш одне звернення до пам’яті. Він використовується для задания констант, наперед відомих чисел або початкових значень змінних. Недоліком є те, що розрядність операнда обмежується розрядністю поля адреси в команді, яке в більшості випадків є значно мен­шим розрядності даних.

Пряма адресація

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

В першому випадку адреса А комірки основної пам’яті із адресної частини АЧ ко­манди поступає на адресні входи основної пам’яті ОП (рис. 3.23 а) і у вказану комірку в режимі запису записується операнд із регістра даних РгД, а в режимі зчитування зчиту­ється операнд в регістр даних РгД.

В другому випадку адреса К регістра регістрового файлу процесора із адресної частини АЧ команди поступає на адресні входи регістрового файлу процесора (рис. 3.23 Ь), і у вка­заний регістр в режимі запису записується операнд із регістра даних РгД, а в режимі зчитування зчитується операнд в регістр даних РгД.

 

 

Якщо основна пам’ять може зберігати М слів, то, використовуючи двійкове кодуван­ня, необхідно т біт для представлення адрес всіх комірок пам’яті, де ш =]Ц? М[. Зна­чення в дужках означає більше ціле. Якщо регістровий файл має N регістрів, то, вико­ристовуючи двійкове кодування, необхідно п біт для представлення адрес всіх регістрів, де п -]1о§ 2 КГ[. Оскільки число регістрів значно менше кількості комірок пам’яті, то і роз- рядність адреси для їх адресації буде значно меншою, а відповідно значно меншою буде і розрядність команди в цілому. Нехай для прикладу кількість виконуваних в комп’ютері команд рівна 256, тобто розрядність коду операції рівна 8 бітів, ємність основної пам’яті рівна 1ГБ, тобто розрядність адреси рівна ЗО бітів, а кількість регістрів регістрового фай­лу процесора рівна 64, тобто розрядність адреси рівна 6 бітів. На рис. 3.24 показано формати двоадресних команд при прямій адресації основної пам’яті та регістрового файлу про­цесора для наведеного прикладу.

Як видно з рисунка, в першому випадку розрядність команди рівна 68 бітів, тоді як в другому випадку розрядність команди рівна 20 бітів, тобто менша в 3,4 рази.

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

Непряма адресація

При непрямій адресації в адресному полі вказується місце розміщення адреси опе­ранда, а виконавча адреса знаходиться наступним чином: А = [А1], де А1 - адреса комірки пам’яті, в якій зберігається виконавча адреса. Адреса А із адресної частини АЧ команди поступає на адресні входи основної пам’яті ОП (рис. 3.26), з відповідної комірки основної пам’яті ОП вибирається адреса операнда, по якій в відповідну комірку або регістр в режимі запису записується операнд із регістра даних РгД, а в режимі зчитування зчиту­ється операнд в регістр даних РгД. Якщо пам’ять може зберігати М слів, то, використо­вуючи двійкове кодування, необхідно ш біт для представлення всіх адрес, де т =]1о§2М[. Значення в дужках означає більше ціле. Для вибірки операнда необхідно здійснити два звернення до ОП.

АЧ Рис. 3.26. Непряма адресація основної пам’яті, яка вимагає здійснення двох звернень

 

Для зберігання адрес операндів можна використати регістровий файл процесора (рис. 3.27). Якщо регістровий файл може зберігати N слів, то, використовуючи двійкове кодування, необхідно п біт для представлення непрямої адреси в адресній частині ко­манди, де п =]к^ М[, а розрядність регістрів буде рівною т =]к^,М[. Значення в дуж­ках означає більше ціле. Для вибірки операнда необхідно здійснити одне звернення до регістрової пам’яті і одне звернення до основної пам’яті ОП. Такий підхід дозволяє при малій розрядності адресної частини команди п звертатися до пам’яті великої ємності маючи велику розрядність регістрів т.

АЧ Рис. 3.27. Непряма адресація основної пам’яті з використанням регістрового файлу процесора

 

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

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

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

 



Поделиться:


Последнее изменение этой страницы: 2016-08-01; просмотров: 700; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.202.224 (0.042 с.)