5.3.3.5. Динамічне передбачення переходу
Динамічне передбачення переходу здійснюється в ході обчислень, виходячи з інформації про попередні переходи. Порівняно зі статичним динамічне передбачення має вищу точність, тобто більше припущень є правильними, але є значно складнішим.
При реалізації методів динамічного передбачення створюється таблиця історії переходів.
Найпростішим варіантом є однорозрядна таблиця історії переходів, в якій зберігається результат останнього виконання команди переходу. Якщо ця команда завершилася переходом, то у відповідну комірку таблиці записується одиниця, в іншому випадку -нуль. Передбачення переходу для чергової команди збігається із здійснимим переходом попередньої. Після виконання цієї команди, якщо передбачення не здійснилося, вміст комірки таблиці коригується.
Таблиця історії переходів реалізується в складі буфера адрес переходу (рис. 5.12). Кожен рядок буфера адрес переходу включає адресу команди переходу, прогнозовану адресу наступної команди (адресу переходу) і передісторію команди переходу (рис. 5.18). Біти передісторії є інформацією про виконання або невиконання умов переходу даної команди у минулому. Звернення до буфера адрес переходу (порівняння з полями адрес команд переходу) проводиться за допомогою поточного значення програмного лічильника на етапі вибірки чергової команди. За передісторією команди прогнозується виконання або
186
невиконання умов команди переходу і проводиться вибірка та дешифрування команд із прогнозованої гілки програми. При цьому, якщо виявлений збіг, то дана команда є командою умовного переходу, і адреса переходу має бути використаною в якості наступного значення програмного лічильника, якщо збігу немає, то команда не є командою переходу.
Більш ефективним є використання таблиці історії переходів з більшою розрядністю комірок. Практичне використання знайшли таблиці з дво- та трирозрядними комірками. Вважається, що передісторія переходу, що містить інформацію про два попередні випадки виконання цієї команди, дозволяє прогнозувати розвиток подій з цілком достатньою вірогідністю. При надходженні команди умовного переходу в конвеєр відбувається звернення до таблиці історії переходів та, залежно від вмісту відповідної комірки, робиться прогноз, який визначає подальший порядок читання команд програми. Після визначення фактичного результату переходу до вмісту комірки додається одиниця, якщо перехід відбувся, та віднімається одиниця, якщо перехід не відбувся.
В якості адреси таблиці історії переходів може бути використана адреса команди умовного переходу, вміст регістру локальної історії або регістру глобальної історії, та комбінація вказаних даних. Цим визначається вибрана стратегія динамічного передбачення.
Якщо в якості адреси таблиці історії переходів використовується адреса команди умовного переходу, тобто вміст програмного лічильника, як це показано на рис.5.18, то такий підхід дозволяє враховувати поведінку кожної команди умовного переходу, яка в більшості випадків є, як правило, здійсненною або, зазвичай, нездійсненною. Використання таблиці історії переходів дозволяє розділити команди із здійсненним і з нездійсненним умовним переходом. Функціонування цього способу формування коду передбачення, який має назву однорівневої схеми передбачення, для випадку, коли таблиця історії переходів є кількарозрядною, показано на рис. 5.19а.
187
Вміст комірки, зчитаний з таблиці історії переходів за адресою з програмного лічильника, записується в лічильник, в якому здійснюється додавання або віднімання одиниці. Лічильник працює в режимі насичення, тобто його вміст не змінюється при додаванні одиниці, коли він має максимальне значення, та не змінюється при відніманні одиниці, коли він має нульове значення. В якості передбачення використовується старший розряд лічильника. Якщо він рівний одиниці, то передбачається, що перехід є здійсненний, якщо нуль - нездійсненний. Значення цього розряду надходить в конвеєр для керування вибіркою подальших команд, а вміст лічильника після модифікації повертається за тією ж адресою в таблицю.
Описаний підхід забезпечує високу імовірність передбачення для багатократно виконуваних команд переходу. Однак для одноразово виконуваних команд переходу цей підхід не діє. Тому для таких команд переходу потрібно врахувати результати переходу попередніх команд, оскільки між ними є взаємозалежність, і це дозволяє підвищити кількість правильних передбачень. Для забезпечення врахування результатів переходу попередніх команд до схеми передбачення вводиться регістр глобальної історії, вміст якого відображає історію виконання п останніх команд умовного переходу, де п - роз-рядність регістра. Це є зсувний регістр, вміст якого зсувається на один розряд після кожного виконання команди умовного переходу, а до звільненого розряду заноситься одиниця або нуль залежно від наявності чи відсутності переходу відповідно. Кожному значенню регістра відповідає своя комірка в таблиці історії (рис. 5.196). Вміст цієї комірки модифікується як і в попередньому способі, а її старший розряд передбачає результат команди переходу.
Підвищення точності передбачення досягається одночасним врахуванням як результатів попереднього виконання даної команди переходу, так і результатів виконання інших команд переходу. Це реалізується формуванням адреси таблиці історії переходів
188
шляхом об'єднання адреси команди переходу та вмісту регістру глобальної історії. Для такого об'єднання використовується або операція конкатенації (зчеплення) (рис. 5.19в), або операція додавання за модулем 2. При цьому можуть використовуватися як всі розряди адреси команди переходу та вмісту регістру глобальної історії, так і лише деяка 'їх кількість.
Потрібно відзначити, що в якості таблиці історії переходів зазвичай використовується асоціативна пам'ять, що дозволяє суттєво прискорити пошук коду переходу.
Наведені схеми названі однорівневими, оскільки в них задіяно один рівень таблиць. Такі схеми передбачення використані в наступних комп'ютерах: Alpha 21064 та 21064, AMD K5, R10000, Power PC620, UltraSPARC та інших.
Для врахування конкретних результатів переходів кожної команди переходу часто використовується таблиця локальної історії, яка складається з регістрів, у кожному з яких подібно до регістру глобальної історії фіксуються результати переходів конкретної команди. Дворівнева схема передбачення переходу, яка реалізує цей підхід, показана на рис. 5.20.
Для різних програм різні стратегії передбачення дають різну точність. Тому в ряді комп'ютерів застосовуються гібридні схеми передбачення переходів, коли в кожному конкретному випадку застосовується та схема передбачення, від якої очікується найвища точність передбачення. Структура такої гібридної схеми показана на рис. 5.21.
189
Адресування конкретної схеми передбачення переходу та вибір схеми передбачення переходу здійснюються від програмного лічильника, тобто адресою команди, для якої здійснюється передбачення. Оновлення таблиць історії проводиться за раніше описаним правилом. Такі схеми передбачення є досить складними, але забезпечують найвищу точність передбачення.
5.4. Покращена структура комп'ютера із спрощеною системою команд
На основі проведеного вище аналізу конфліктів у конвеєрі та способів їх мінімізації можна провести покращання структури комп'ютера із спрощеною системою команд. В якості прикладу на рис. 5.22 подано покращену структуру тракту виконання команд комп'ютера DLX.
190
Структура додатково містить:
суматор ADD,який прискорено, вже на сходинці ID,обраховує цільову адресу переходу;
вузол Zeroперенесено на один ярус вперед, щоб прискорити реакцію конвеєра на команду умовного переходу та синхронізувати цю реакцію з обрахуванням цільової адреси переходу. В результаті зменшено на такт затримку переходу;
введено додаткові інформаційні шини, що дозволяють прискорено надсилати до вузлів процесора коди операндів при реалізації випередження. При цьому кількість входів мультиплексорів АЛП збільшено.
Кольорами відтінені відповідності станів вузлів конвеєра командам, які цей конвеєр опрацьовує.
5.5. Особливості запобігання конфліктам в суперскалярних процесорах
В супєрскалярних процесорах, як ми вже бачили з їх розгляду в розділі 5, паралельно працює кілька конвеєрів команд. Тому в цих процесорах, як і в процесорах із простою системою команд, можливі раніше описані конфлікти при конвеєрному виконанні команд. Крім того, в них на додаток можливі конфлікти, які пов'язані з тим, що команди знаходяться в паралельних вітках. Тому тут ускладнюються питання запобігання раніше описаним структурним конфліктам, конфліктам за даними та конфліктам керування, і, крім того, добавляються конфлікти, пов'язані із забезпеченням впорядкованого поступлення команд на виконання та впорядкованого завершення команд.
Під впорядкованим поступленням команд та впорядкованим завершенням команд розуміють таким чином впорядковану черговість поступлення команд на виконання та черговість завершення команд, яка визначена програмою. В іншому випадку говорять про невпорядковане поступлення команд та невпорядковане завершення команд.
В перших супєрскалярних процесорах типу Pentiumбуло реалізоване впорядковане поступлення команд і впорядковане завершення команд. Такий підхід був досить простим, оскільки при виникненні конфліктів у одному з конвеєрів процесора призупинялась робота іншого конвеєра до зняття конфлікту, з тим, щоб не порушувати порядок поступлення та завершення команд. Однак це вимагало великих часових втрат.
Коли в суперскалярному процесорі реалізується стратегія підтримки впорядкованого поступлення команд та невпорядкованого завершення команд, то це дає можливість конвеєрам, в яких не відбулися конфлікти, продовжити опрацювання команд. Це дозволяє підвищити ефективність використання обладнання конвеєра команд. Однак при цьому потрібно забезпечити отримання коректних результатів, оскільки можливі некоректні записи результатів у регістровий файл та в пам'ять.
Іще більше підвищити ефективність використання обладнання конвеєра команд дозволяє реалізація стратегії підтримки невпорядкованого поступлення команд і невпорядкованого завершення команд. За цією стратегією команди подаються на виконання не в порядку їх поступлення в конвеєр, а при їх готовності до опрацювання, тобто коли наявні операнди та вільний функціональний вузол, в якому вони мають бути опрацьовані. Для виконання цієї стратегії необхідно забезпечити коректність результату вико-
197
нання програми. Для цього використовується спосіб, який називається перевпорядку-ванням команд, або відкладенням виконання команд. Для перевпорядкування команд в конвеєр вводиться додаткова буферна пам'ять, яка називається вікном команд. До цієї пам'яті завантажуються всі команди, які пройшли декодування, та, при необхідності запобігання конфліктам команд за даними при запису результатів до регістрового файла, виконується перейменування регістрів (див. п. 5.2.8). Вікно команд забезпечує відкладення передачі команд на виконання до готовності операндів і дозволяє забезпечити потрібну черговість завершення команд.
Буферна пам'ять, яка називається вікном команд, може бути реалізована двома способами - як інтегрована та як розподілена.
Інтегрована буферна пам'ять реалізується на основі асоціативної пам'яті. Вона оперативно виявляє і подає на виконання команди, для виконання яких є всі необхідні опе-ранди та ресурси. Для кожної команди в цій пам'яті виділяється одна комірка. В цій комірці зберігається декодована команда, яка має наступні поля: декодоване поле операції (О), поля операндів (ПО), які вміщують або самі операнди, або адреси їх знаходження, поле, яке вказує місце розміщення результату (ПР), а також поле розрядів достовірності (РД). Для аналізу доступності та виконання розподілу команд до вільних функціональних пристроїв (ФП) в процесорі використовується пристрій диспетчеризації, в якому є регістр зайнятості функціональних пристроїв процесора (рис. 5.23).
Команда зчитується з інтегрованої буферної пам'яті на виконання лише після того, коли в полях операндів ПО1 та П02 присутні значення операндів або їх адрес (тобто в полі розрядів достовірності Рді та РД2 записані одиниці), та коли потрібні для її виконання функціональні пристрої є вільними (тобто в регістрі зайнятості записані одиниці). Результат виконання команди записується до відповідного регістру регістрового файла. Оновлення інформації про зайнятість функціональних пристроїв процесора здійснюється в кожному його циклі.
Якщо вікно команд реалізується як розподілена буферна пам'ять, то на вході кожного функціонального блоку розміщується буфер декодованих команд, який називається блоком резервування (БР). Після вибірки та декодування команди поступають до того блоку резервування, в якому вони будуть виконуватися (рис. 5.24). Робота кожного
192
блоку резервування є аналогічною роботі інтегрованої буферної пам'яті, тобто команда поступає на виконання при готовності операндів та незайнятості функціонального пристрою.
Оскільки метод резервування орієнтований на подання на опрацювання одночасно декількох команд, використання розподіленої буферної пам'яті (вікна команд) для забезпечення перевпорядкуванням команд є значно простішим порівняно з використанням багатопортової інтегрованої буферної пам'яті. Подібну розподілену буферну пам'ять вперше запропонував Р. Томасуло в комп'ютерній системі ІВМ360/91 у 1967 році, тому описаний метод резервування носить його ім'я.
Важливим питанням для забезпечення виконання стратегії невпорядкованого поступлення команд та невпорядкованого завершення команд є підтримання правильної послідовності виконання команд при декількох паралельно працюючих функціональних пристроях. Вирішення цього питання було знайдене в 1988 році Смітом та Плескуном, які запропонували для цього використати буфер відновлення послідовності. До цього буфера команди записуються в порядку, який відповідає заданому програмою порядку 'їх зчитування, а зчитування команди з буфера дозволено тільки після завершення її виконання та коли всі попередні команди вже зчитані з буфера.
5.6. Комп'ютери з довгим форматом команди
Раніше розглянуті суперскалярні процесори характеризуються високою продуктивністю при забезпеченні безконфліктного виконання команд. Але це вимагає значних додаткових затрат обладнання. На рис. 5. 25 показано кристал суперскалярного процесора MIPSR10000,на якому позначені вузли процесора та виділено апаратні засоби пристрою керування, які забезпечують невпорядковане виконання команд. Видно, що ці засоби зайняли більше ЗО відсотків площі кристала.
193
Розглянемо далі архітектури комп'ютерів, у яких відсутні конфлікти команд. До них, зокрема, належать комп'ютери з довгим форматом команди
Архітектура комп'ютерів з довгим форматом команди (КДФК), англійський еквівалент VLIW (Very Long Instruction Word), бере свій початок від паралельного мікрокоду, що застосовувався в комп ютерах CDC6600 і IBM 360/91. У 70-х роках багато комп'ютерних систем оснащувалися додатковими векторними процесорами обробки сигналів, що використовували довгий формат команди. Зокрема, до таких процесорів належали процесори АР-120В, AP-190Lта інші фірми FPS.
Першими універсальними комп'ютерами з архітектурою КДФК стали міні-супер-комп ютери, випущені на початку 1980-х років компаніями MultiFlow,Cullerі Cydrome,але вони не мали комерційного успіху. Наприклад, комп'ютер компанії MultiFlow 7/300 використовував два арифметико-логічні пристрої для цілих чисел, два арифметико-ло-гічні пристрої для чисел з рухомою комою і блок логічного галуження. Його 256-роз-рядний довгий формат команди містить поля для восьми 32-розрядних команд. В цих комп'ютерах були використані планувальник обчислень і програмна конвеєризація, які є основою технологи компілятора КДФК
Архітектура КДФК передбачає наявність багатьох незалежних функціональних пристроїв. Для забезпечення паралельного виконання декілька команд пакуються в один пакет, який в подальшому будемо називати в язанкою команд, та поступають на виконання. В'язанка команд може включати, наприклад, команди над числами з фіксованою та рухомою комою, команду звернення до пам яті та команду переходу, як це показано на рис. 5.26. Така в'язанка команд матиме набір полів команд для кожного функціонального пристрою, що призводить до кратного збільшення її довжини порівняно з однією командою. Як видно з рисунка, кожне з цих полів керує відповідним функціональним пристроєм, а обмін даними між пристроями здійснюється через інтегрований багато-портовий регістровий файл.
194
Завдання ефективного планування паралельного виконання команд в комп'ютері з довгим форматом команди повністю лягає на компілятор. Компілятор з послідовності команд початкової програми генерує в'язанку команд шляхом проглядання програми як в межах, так і за межами лінійних ділянок програми без галужень. Для забезпечення коректності виконання операцій компілятор має бути здатним визначати можливість появи конфліктів при виконанні команд. У певних ситуаціях, коли компілятор не може зробити заключення, що конфлікт не відбудеться, наприклад, у випадку звернення до масиву, коли індекс обчислюється під час виконання програми, операції не можуть плануватися для паралельного виконання. Відповідно це призводить до зниження продуктивності.
Компілятор визначає ділянку програми без циклів, яка стає кандидатом для формування в'язанки команд. Для збільшення розміру тіла циклу широко використовується методика розкручування циклів, що призводить до утворення великих фрагментів програми, що не містять зворотних дуг.
Якщо виконанню підлягає програма, що має тільки переходи вперед, компілятор робить евристичний прогноз вибору умовних гілок. Шлях, що має найбільшу вірогідність виконання (його називають трасою), використовується для оптимізації, що проводиться з врахуванням конфліктів за даними між командами і обмежень за апаратними ресурсами. Під час планування генерується в'язанка команд. Всі команди, які входять до в'язанки команд, видаються одночасно і виконуються паралельно. Після обробки першої траси планується наступний шлях, що має найбільшу вірогідність виконання (попередня траса більше не розглядається). Процес пакування команд послідовної програми у в'язанки команд продовжується до тих пір, поки не буде оптимізована вся програма.
Ключовою умовою досягнення ефективної роботи комп'ютера з довгим форматом команди є коректний прогноз вибору умовних гілок. Відмічено, наприклад, що прогноз умовних гілок для наукових програм часто виявляється точним. Повернення назад є у всіх ітераціях циклу, за винятком останньої. Таким чином, прогноз буде коректний в більшості випадків. Інші умовні гілки, наприклад, гілка обробки переповнення і перевірки граничних умов (вихід за межі масиву), також є надійно передбачуваними.
З погляду архітектурних ідей комп'ютер з довгим форматом команди можна розглядати як розширення архітектури комп'ютера з простою системою команд, Оскільки тут
195
також довжина команди є сталою, апаратні ресурси плануються статично, та віддається перевага програмному вирішенню конфліктів.
В архітектурі комп'ютера з довгим форматом команди, крім того, принцип заміни керування під час виконання програми на планування під час компіляції поширений і на систему пам яті. Для забезпечення зайнятості конвеєрних функціональних пристроїв тут необхідна пам ять з високою пропускною спроможністю. Одним із сучасних підходів до збільшення пропускної спроможності пам яті є використання розшарування пам'яті, причому можливі конфлікти доступу до пам'яті визначає спеціальний модуль компілятора модуль запобігання конфліктам
Таким чином, розпаралелювання у комп'ютерах з довгим форматом команди виконується виключно на етапі компіляції під час формування в язанок команд, тобто статично. Так як неможливо наперед передбачити розв'язання усіх видів залежностей, від-компільовані програми вимагають ретельного налагоджування. Негативно впливають також ефекти невпорядкованого завершення виконання команд. Саме тому надійність виконання програми тут зменшена порівняно з суперскалярним варіантом архітектури комп'ютера. Тобто, цей підхід дозволяє досягти максимуму продуктивності, але є прийнятним лише у певних застосуваннях комп'ютерних засобів. Перевага КДФК в потенційній продуктивності найбільш відчутна в серверних задачах, де паралельно опрацьовують декілька процесів (ниток), в наукових задачах, задачах тривимірної візуалізації та в задачах обробки сигналів (де, зокрема, застосовуються процесори ADSP21XX фірми Analog Devices та TMS320C6X фірми Texas Instruments, які належать до вказаної архітектури).
Архітектуру КДФК запроваджено у новітніх процесорах Alpha фірми DEC та ІА-64 фірми Intel. Останній процесор оптимізовано для виконання серверних задач Як приклад на рис. 5.27 приведено структуру ядра процесора TMS320C6Xфірми TexasInstruments,в якому використано довгий формат команди. В'язанка команд цього процесора складається з восьми 32-розрядних команд. Тут використано два тракти обробки даних А та В, кожний з яких має по 4 функціональні блоки та свій багатопортовий регістровий файл.
Тракти обробки даних А і В є однотипними та мають в своєму складі наступні функціональні пристрої: L- АЛП, S- пристрій зсуву та АЛП, М - перемножувач, D- формувач адрес пам'яті. В'язанка команд зчитується з пам'яті команд (On-Chip Program Memory) та поступає до блоку диспетчеризації (Dispatch Unit), який здійснює розподіл команд у відповідні функціональні пристрої.
196
- 2.6. Формати даних 63
- 3.1. Кодування та виконання команд в комп'ютері 82
- 4.3. Суперконвеєрні процесори 157
- 4.10. Питання до розділу 4 165
- 5.3. Конфлікти керування 177
- 6.1. Логічні операції 204
- 8.3. Пристрій мікропрограмного керування 297
- 9.3. Пам'ять з асоціативним доступом 321
- 9.4. Основна пам'ять 328
- 9.7. Зовнішня пам'ять 339
- 10.1. Ієрархічна організація пам'яті комп'ютера 357
- 10.2. Організація обміну інформацією між процесором і основною пам'яттю
- 10.3. Організація обміну інформацією між основною та зовнішньою пам'яттю 376
- 10.4. Захист пам'яті від несанкціонованих звернень 391
- 12.8. Організація комп'ютерних систем із розподіленою пам'яттю 444
- 12.9. Комунікаційні мережі багатопроцесорних систем 445
- Розділ 1 Сучасний комп'ютер. Основні поняття
- 1.2. Функції, структура та характеристики комп'ютера
- 1.2.1. Функції та основні функціональні вузли комп'ютера
- 1.2.2. Тенденції зміни основних характеристик апаратних засобів комп'ютера
- 1.2.3. Оцінка продуктивності комп'ютера
- 1.2.3.1. Одиниці оцінки продуктивності
- 1.2.3.2. Тестові програми для оцінки продуктивності
- 1.2.4. Організація зв'язків між функціональними вузлами комп'ютера
- 1.3. Архітектура комп'ютера
- 1.3.1. Поняття архітектури комп'ютера
- 1.3.2. Архітектурні принципи Джона фон Неймана
- 1.3.3. Ненейманівські архітектури комп'ютерів
- 1.4. Типи сучасних комп'ютерів
- 1.4.1. Персональні комп'ютери
- 1.4..2. Робочі станції
- 1.4.3. Багатотермінальні системи
- 1.4.4. Сервери
- 1.4.5. Великі універсальні комп'ютерні системи
- 1.4.6. Кластерні комп'ютерні системи
- 1.4.7. Суперкомп'ютери
- 7.4.8. Мікроконтролери
- 1.4.9. Спеціалізовані комп'ютери
- 1.5. Предмет та порядок розгляду матеріалу даної книги
- 1.6. Підсумок розділу
- 1.7. Література для подальшого читання
- 1.8. Література до розділу 1
- 1.9. Питання до розділу 1
- Розділ 2 Представлення даних у комп'ютері
- 2.7, Позиційні системи числення
- 2.2. Двійкові, вісімкові та шістнадцяткові числа
- 2.5. Представлення чисел зі знаком
- 2.5.7. Прямий код
- 2.5.2. Обернений код
- 2.6. Формати даних
- 2.6.1. Способи представлення чисел
- 2.6.2. Числа з фіксованою комою
- 2.6.3. Числа із рухомою комою
- 2.6.4. Стандарт іеее-754
- 2.6.5. Кодування алфавітно-цифрової інформації
- 2.6.5.7. Двійково-кодовані десяткові числа
- 2.6.4.2. Розширений двійково-кодований десятковий код обміну ebcdic
- 2.6.4.3 Американський стандартний код інформаційного обміну ascii
- 2.6.4.4. Стандарт кодування символів Unicode
- 2.7. Короткий зміст розділу
- 2.8. Література для подальшого читання
- 2.9. Література до розділу 2
- 2.10. Питання до розділу 2
- 2.11. Задачі до розділу 2
- Розділ 3 Порядок виконання команд і програм в комп'ютері
- 3.1.1. Кодування команди та програми
- 3.1.2. Порядок виконання команд
- 3.1.3. Виконання команд на рівні регістрів процесора
- 3.2. Типи операцій та команд
- 3.2.1. Класифікація команд за типами операцій
- 3.2.2. Команди обробки даних
- 3.2.3. Команди переміщення даних
- 3.2.4.. Команди передачі керування
- 3.2.4.1. Команди переходу
- 3.2.4.2. Команди пропуску
- 3.2.4.3. Команди звернення до підпрограм
- 3.2.5. Команди введєння-виведення
- 3.2.6. Принципи формування системи команд комп'ютера
- 3.2.7. Конвеєрне виконання команд
- 3.3. Формати команд комп'ютера
- 3.3.1. Класифікація архітектури комп'ютера за типом адресованої пам'яті
- 3.3.2. Порівняльний аналіз форматів команд
- 3.4. Способи адресації операндів
- 3.4.1. Безпосередня адресація
- 3.4.2. Пряма адресація
- 3.4.3. Непряма адресація
- 3.4.4. Способи адресації операндів на основі операції зміщення
- 3.4.4.1. Відносна адресація
- 3.4.4.2. Базова адресація
- 3.4.4.3. Індексна адресація
- 3.4.5. Сторінкова адресація
- 3.4.6. Неявна адресація
- 3.4.7. Стекова адресація
- 3.4.8. Використання стекової адресації
- 3.4.9. Вибір способів адресації операндів
- 3.5. Приклади форматів команд
- 3.5.1. Формати команд комп'ютерної системи ibm 370
- 3.5.2. Формати команд комп'ютера Cyber-70
- 3.5.3. Формати команд сучасного комп'ютера
- 3.6. Вплив технологи компілювання на систему команд комп'ютера
- 3.7. Архітектура системи команд комп'ютера
- 3.7.1. Класифікація архітектури комп'ютера за складом системи команд
- 3.7.2. Комп'ютери із складною та з простою системами команд
- 3.7.3. Особливості архітектури комп'ютера з простою системою команд
- 3.7.4. Архітектура комп'ютера з доповненою системою команд
- 3.7.5. Комп'ютери зі спеціалізованою системою команд
- 3.8. Короткий зміст розділу
- 3.9. Література для подальшого читання
- 3.10. Література до розділу з
- 4.1. Процесор комп'ютера із складною системою команд
- 4.1.1. Одношинна структура процесора
- 4.1.2. Основні операції процесора
- 4.1.2.1. Вибірка слова з пам'яті
- 4.1.2.2. Запам'ятовування слова в пам'яті
- 4.1.2.3. Обмін даними між регістрами
- 4.1.2.4. Виконання арифметичних і логічних операцій
- 4.1.3. Багатошинна структура процесора
- 4.1.4. Приклади виконання операцій в процесорі
- 4.1.4.1. Виконання операції додавання двох чисел
- 4.1.4.2. Виконання операції переходу
- 4.1.5. Особливості побудови процесора комп'ютера із складною системою команд
- 4.2. Процесор комп'ютера з простою системою команд
- 4.2.1. Вимоги до процесора комп'ютера з простою системою команд
- 4.2.2. Базові принципи побудови процесора комп'ютера з простою системою команд
- 4.2.3. Взаємодія процесора з пам'яттю в комп'ютері з простою системою команд
- 4.2.4. Виконання команд в процесорі комп'ютера з простою системою команд
- 4.2.4.1. Фаза вибирання команди
- 4.2.4.3. Фаза виконання та формування ефективної адреси
- 4.2.4.4. Фаза звернення до пам'яті та завершення умовного переходу
- 4.2.4.5. Фаза зворотного запису
- 4.2.5. Конвеєрна структура процесора комп'ютера з простою системою команд
- 4.2.5.1. Конвеєрний процесор
- 4.2.5.2. Мікродії ярусів конвеєрного процесора
- 4.8. Література для подальшого читання
- 4.9. Література до розділу 4
- 4.10. Питання до розділу 4
- 5. 1. Структурні конфлікти
- 5.2. Конфлікти за даними
- 5.2.1. Типи конфліктів за даними
- 5.2.2. Методи зменшення впливу конфліктів за даними на роботу конвеєра команд
- 5.2.3. Призупинення виконання команди
- 5.2,4. Випереджувальне пересилання
- 5.2.5. Статична диспетчеризація послідовності команд у програмі під час компіляції
- 5.2.6. Динамічна диспетчеризація послідовності команд у програмі під час компіляції
- 5.2.7. Перейменування регістрів
- 5.3. Конфлікти керування
- 5.3.1. Типи конфліктів керування
- 5.3.2. Зниження втрат на вибірку команди, до якої здійснюється перехід
- 5.3.3. Зниження втрат на виконання команд умовного переходу
- 5.3.3.7. Введення буфера попередньої вибірки
- 5.3.3.2. Дублювання початкових ярусів конвеєра
- 5.3.3.3. Затримка переходу
- 5.3.3.4. Статичне передбачення переходу
- 5.3.3.5. Динамічне передбачення переходу
- 5.7. Комп'ютери з комбінованою архітектурою
- 5.9. Короткий зміст розділу
- 5.10. Література для подальшого читання
- 5.12. Питання до розділу 5
- 6.1. Логічні операції
- 6.1.1. Операція заперечення
- 6.2. Операції зсуву
- 6.2.1. Логічні зсуви
- 6.2.2. Арифметичні зсуви
- 6.2.3. Циклічні зсуви
- 6.3. Операції відношення
- 6.3.1. Порівняння двійкових кодів на збіжність
- 6.3.2. Визначення старшинства двійкових кодів
- 6.4. Арифметичні операції
- 6.4.1. Додавання двійкових чисел без знаків
- 6.4.2. Додавання двійкових чисел із знаками
- 6.4.3. Віднімання двійкових чисел
- 6,4.4. Множення двійкових чисел
- 6.4.4.7. Множення цілих двійкових чисел без знаків
- 6.4.4.2. Багатомісна операція додавання часткових добутків
- 6.4.4.3. Множення двійкових чисел із знаками
- 6.4.4.4. Прискорене множення двійкових чисел за методом Бута
- 6.4.5. Ділення двійкових чисел
- 6.4.6. Арифметичні операції над двійковими числами у форматі з рухомою комою
- 6.5. Операції обчислення елементарних функцій
- 6.6. Операції перетворення даних
- 6.6.1. Перетворення даних із формату з фіксованою у формат з рухомою комою та навпаки
- 6.6.2. Перетворення даних з двійково-десяткового коду в двійковий та навпаки
- 6.7. Операції реорганізації масивів і визначення їх параметрів
- 6.8. Операції обробки символів та рядків символів
- 6.9. Короткий зміст розділу
- 6.70. Література для подальшого читання
- 6.11. Література до розділу 6
- 6.72. Питання до розділу 6
- Розділ 7
- 7.1. Функції арифметико-логічного пристрою
- 7.2. Способи обробки даних в арифметико-логічному пристрої
- 7.3. Елементарні операції арифметико-логічного пристрою
- 7.4. Складні операції арифметико-логічного пристрою
- 7.5. Використання графа алгоритму при побудові арифметико-логічного пристрою
- 7.6. Виконання складних операцій в арифметико-логічному пристрої
- 7.8. Типи операційних пристроїв
- 7.9. Табличний операційний пристрій
- 7.10. Вагатотактовий операційний пристрій
- 7.11. Однотактовий операційний пристрій
- 7.12. Конвеєрний операційний пристрій
- 7.13. Алгоритмічні операційні пристрої
- 7.13.1. Пристрої додавання і віднімання двійкових чисел з фіксованою комою
- 7.13.2. Пристрої множення двійкових чисел з фіксованою комою
- 7.13.2.1. Багатотактовий пристрій множення двійкових чисел з молодших розрядів множника при нерухомому множеному з зсувом суми часткових добутків
- 7.13.2.2. Багатотактовий пристрій множення двійкових чисел з молодших розрядів при нерухомій сумі часткових добутків з зсувом множеного вліво
- 7.13.2.3. Багатотактовий пристрій множення двійкових чисел з старших розрядів при нерухомій сумі часткових добутків з зсувом множеного вправо
- 7.13.2.4. Багатотактовий пристрій множення двійкових чисел з старших розрядів при нерухомому множеному з зсувом суми часткових добутків вліво
- 7.13.2.5. Багатотактовіш пристрій прискореного множення
- 7.13.2.6. Однотактові пристрої множення двійкових чисел з фіксованою комою
- 7.13.2.7. Конвеєрні пристрої множення двійкових чисел з фіксованою комою
- 7.13.3 Пристрої ділення двійкових чисел з фіксованою комою
- 7.13.3.1. Багатотактові пристрої ділення двійкових чисел з фіксованою комою
- 7.13.3.2. Однотактові та конвеєрні пристрої ділення двійкових чисел з фіксованою комою
- 7.13.4. Пристрої обчислення елементарних функцій методом "цифра за цифрою"
- 7.13.4.1. Багатотактовий пристрій обчислення елементарних функцій методом "цифра за цифрою"
- 7.13.5.2. Пристрої множення та ділення чисел з рухомою комою
- 7.14. Таблично-алгоритмічні операційні пристрої
- 7.15. Короткий зміст розділу
- 7.16. Література для подальшого читання
- 7. Т 7. Література до розділу 7
- 7. 18. Питання до розділу 7
- Розділ 8 Пристрій керування
- 8.1. Функції та методи побудови пристрою керування
- 8.2. Пристрій керування з жорсткою логікою
- 8.2.1. Структура пристрою керування з жорсткою логікою
- 8.2.2. Методи проектування пристрою керування з жорсткою логікою
- 8.2.3.2. Мови опису функціонування автоматів
- 8.2.3.3. Структурний синтез цифрових автоматів
- 8.2.4. Пристрій керування на основі синхронних елементів часової затримки
- 8.2.5. Пристрій керування на основі лічильників
- 8.3. Пристрій мікропрограмного керування
- 8.3.1. Організація роботи пристрою мікропрограмного керування
- 8.3.2. Організація мікропрограм в пам'яті мікрокоманд
- 8.3.3. Горизонтальне та вертикальне мікропрограмування
- 8.4. Порівняння пристроїв керування з жорсткою логікою та пристроїв мікропрограмного керування
- 8.5. Короткий зміст розділу
- 8.6. Література для подальшого читання
- 8.7. Література до розділу 8
- 8.8. Питання до розділу 8
- 9.1. Типи та характеристики пам'яті комп'ютера
- 9.1.1. Багаторівнева структура пам'яті комп'ютера
- 9.1.2. Типи пам'яті
- 9.1.3. Основні характеристики пам'яті
- 9.2 Регістровий файл процесора
- 9.2.1. Типи регістрових файлів
- 9.2.2. Інтегрований багатопортовий регістровий файл
- 9.2.3. Розподілений регістровий файл
- 9.2.3. 1. Кластерний розподілений регістровий файл
- 9.2.3.2. Розподілений регістровий файл з керованою комутацією
- 9.2.3.3. Розподілений регістровий файл з віконною організацією
- 9.2.4. Ієрархічний регістровий файл
- 9.2.5. Динамічна та статична організація збереження даних в регістрових файлах
- 9.3. Пам'ять з асоціативним доступом
- 9.3.1. Організація та типи пам'яті з асоціативним доступом
- 9.3.2. Пам'ять з повним паралельним асоціативним доступом
- 9.3.3. Пам'ять з неповним паралельним асоціативним доступом
- 9.3.4. Пам'ять з послідовним асоціативним доступом
- 9.3.5. Пам'ять з частково асоціативним доступом
- 9.4. Основна пам'ять
- 9.4.1. Структура основної пам'яті
- 9.4.2. Нарощування розрядності основної пам'яті
- 9.4.4. Розшарування пам'яті
- 9.5. Оперативний запам'ятовуючий пристрій
- 9.6. Постійний запам'ятовуючий пристрій
- 9.6.1. Організація роботи постійного запам'ятовуючого пристрою
- 9.6.2. Запрограмований при виготовленні постійний запам'ятовуючий пристрій
- 9.6.3. Одноразово запрограмований після виготовлення постійний запам'ятовуючий пристрій
- 9.6.4. Багаторазово програмований постійний запам'ятовуючий пристрій
- 9.7. Зовнішня пам'ять
- 9.7.1. Магнітні диски
- 9.7.2. Масиви магнітних дисків з надлишковістю
- 9.7.2.1. Базовий тип дискових масивів raid 0
- 9.7.2.2. Базовий тип дискових масивів raid 1
- 9.7.2.3. Базовий тип дискових масивів raid 2
- 9.7.2.4. Базовий тип дискових масивів raid з
- 9.7.2.5. Базовий тип дискових масивів raid 4
- 9.7.2.6. Базовий тип дискових масивів raid 5
- 9.7.2.7. Тип дискових масивів raid 6
- 9.7.2.8. Тип дискових масивів raid 7
- 9.7.2.9. Тип дискових масивів raid 10
- 9.7.3. Оптична пам'ять
- 9.7.3.1. Постійна пам'ять на основі компакт дисків
- 9.7.3.2. Оптичні диски із стиранням
- 9.7.4. Магнітні стрічки
- 9.8. Короткий зміст розділу
- 9.9. Література для подальшого читання
- 9. 1 0. Література до розділу 9
- 9.11. Питання до розділу 9
- Організація пам'яті
- 10.1. Ієрархічна організація пам'яті комп'ютера
- 10.1.1. Різниця між: продуктивністю процесора та пам'яті
- 10.1.2. Властивість локальності за зверненням до пам'яті
- 10.1.3. Принцип ієрархічної організації пам'яті
- 10.1.4. Характеристики ефективності ієрархічної організації пам'яті
- 10.1.5. Ієрархічна пам'ять сучасного комп'ютера
- 10.2. Організація обміну інформацією між процесором і основною пам'яттю через кеш пам'ять
- 10.2.1. Кеш пам'ять в складі комп'ютера
- 10.2.2. Порядок взаємодії процесора і основної пам'яті через кеш пам'ять
- 10.2.3. Забезпечення ідентичності вмісту блоків кеш пам'яті і основної пам'яті
- 10. 0.2.4. Функція відображення
- 10.2.4.1. Типи функцій відображення
- 10.2.4.2. Повністю асоціативне відображення
- 10.2.4.3. Пряме відображення
- 10.2.4.4. Частково-асоціативне відображення
- 10.2.5. Порядок заміщення блоків в кеш пам'яті з асоціативним відображенням
- 70.2.6. Підвищення ефективності кеш пам'яті
- 10.3. Організація обміну інформацією між основною та зовнішньою пам'яттю
- 10.3.1. Статичний та динамічний розподіл пам'яті
- 10.3.2. Розподіл основної пам'яті за допомогою базових адрес
- 10.3.3. Віртуальна пам'ять
- 10.3.4. Сторінкова організація пам'яті
- 10.3.4.1. Основні правила сторінкової організації пам'яті
- 10.3.4.2. Реалізація сторінкової організації пам'яті
- 10.3.4.3. Апаратна реалізація сторінкової таблиці
- 10.3.5. Сегментна організація віртуальної пам'яті
- 10.4. Захист пам'яті від несанкціонованих звернень
- 10.4.1. Задачі захисту пам'яті
- 10.4.2. Захист пам'яті за допомогою регістра захисту
- 10.4.3. Захист пам'яті за граничними адресами
- 10.4.4. Захист пам'яті за значеннями ключів
- 10.4.5. Кільцева схема захисту пам'яті
- 10.5. Короткий зміст розділу
- 10.6. Література для подальшого читання
- 10.7. Література до розділу 10
- 10.8. Питання до розділу 10
- Розділ 11 Організіція введення-виведення
- 11.1. Під'єднаний зовнішніх пристроїв до комп'ютера
- 1 1.2. Розпізнавання пристроїв введення-виведення
- 11.3. Методи керування введенням-виведенням
- 11.4. Програмно-кероване введення-вивєдення
- 11.5. Система переривання програм та організація введення-виведення за перериваннями
- 11.5.1. Функції системи переривання програм
- 11.5.2. Характеристики системи переривання програм
- 11.5.3. Вхід в переривальну програму
- 11.5.4. Пріоритетне обслуговування переривання
- 11.5.5. Організація повернення до перериваної програми
- 11.5.6. Введення-виведення за перериваннями
- 11.6. Прямий доступ до пам'яті
- 11.7. Введення-виведення під керуванням периферійних процесорів
- 11.7.1. Принципи введення-виведення під керуванням периферійних процесорів
- 11.7.2. Причини застосування каналів введення-виведення
- 11.7.3. Функції каналів введення-виведення
- 11.7.4. Керуюча інформація каналу введення-виведення
- 11.7.5. Мультиплексний та селекторний канали введення-виведення
- 11.8. Короткий зміст розділу
- 11.9. Література для подальшого читання
- 11.10. Література до розділу 11
- 11.11. Питання до розділу 11
- Розділ 12
- 12.1. Використання принципів паралельної обробки інформації в архітектурі комп'ютера
- 12.2. Вибір кількості процесорів у багатопроцесорній системі
- 12.3. Багатопотокова обробка інформації
- 12.4. Класифікація паралельних комп'ютерних систем
- 12.4.1. Класифікація Шора
- 12.4.2. Класифікація Фліна
- 12.5. Типи архітектур систем окмд
- 12.6. Типи архітектур систем мкмд
- 12.7. Організація комп'ютерних систем із спільною пам'яттю
- 12.7.1. Типи комп'ютерних систем із спільною пам'яттю
- 12.7.2. Системи з однорідним доступом до пам'яті
- 12.7.3. Системи з неоднорідним доступом до пам'яті
- 12.7.4. Системи лише з кеш пам'яттю
- 12.8. Організація комп'ютерних систем із розподіленою пам'яттю
- 12.9. Комунікаційні мережі багатопроцесорних систем
- 12.9.1. Типи комунікаційних мереж
- 12.9.2. Основні характеристики комунікаційних мереж багатопроцесорних систем
- 12.9.3. Статичні топології комунікаційних мереж: багатопроцесорних систем
- 12.9.4. Шинні динамічні комунікаційні мережі багатопроцесорних систем
- 12.9.5. Комутуючі динамічні комунікаційні мережі багатопроцесорних систем
- 12.9.5.1. Типи комутуючих динамічних комунікаційних мереж
- 12.9.5.2. Координатна мережа
- 12.9.5.3. Матрична одноярусна комутуюча мережа
- 12.9.5.4. Багатоярусні блокуючі комутуючі мереж
- 12.9.5.5. Багатоярусні неблокуючі комутуючі мережі з реконфігурацією
- 12.9.5.6. Багатоярусні неблокуючі комутуючі мережі
- 12.10. Короткий зміст розділу
- 12.11. Література для подальшого читання
- 12.12. Література до розділу 12
- 12.13. Питання до розділу 12
- 43010 М. Луцьк, пр. Волі, 27.