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

За складом системи команд комп’ютери можуть бути поділені на наступні типи:

- комп’ютери із складною (комплексною) системою команд (КССК, Complex Instruction Set Computers - CISC);

- комп’ютери з простою (спрощеною) системою команд (КПСК, Reduced Instruction Set Computers - RISC);

- комп’ютери з доповненою системою команд (КДСК, Supplemented Instruction Set Computers - SISC). В таких комп’ютерах складна або проста система команд доповнюється командами, орієнтованими на конкретну область використання. До таких комп’ютерів, зокрема, відносяться програмовані процесори обробки сигналів (Programmable Digital Signal Processors);

- комп’ютери з орієнтованою (спеціалізованою) системою команд (КОСК, Application Specific Instruction Set Computers - ASISC).

Розглянемо ці архітектури більш детально.

    19.1 Комп'ютери із складною системою команд (CISC)

Двома основними архітектурами, які розрізняються за складом системи команд, а відповідно і за іншими елементами, що буде показано в подальшому, та які найширше використовуються комп’ютерною промисловістю на сучасному етапі, є архітектури КССК та КПСК (CISC і RISC). Основоположником архітектури КССК можна вважати компанію IBM з її базовою архітектурою ІВМ/360, ядро якої використовується з 1964 року і дійшло до наших днів, наприклад, в таких сучасних мейнфреймах, як IBM ES/9000.

Лідером в розробці мікропроцесорів на основі архітектури КССК є компанія Intel зі своїми серіями х86 і Pentium. Ця архітектура де-факто є стандартом для ринку мікрокомп’ютерів. Для архітектури КССК характерне порівняно невелике число регістрів загального призначення; велика кількість машинних команд, деякі з яких семантично навантажені аналогічно операторам мов програмування високого рівня і виконуються за багато тактів; велика кількість методів адресації; велика кількість форматів команд різної розрядності; переважання двоадресного формату команд; наявність команд типу регістр-пам’ять.

Основою архітектури сучасних робочих станцій і серверів є архітектура комп’ютерів з простою системою команд КПСК. Зачатки цієї архітектури йдуть своїм корінням до комп’ютерів CDC 6600, розробники яких (Торнтон, Крей та ін.) усвідомили важливість спрощення набору команд для побудови швидких обчислювальних машин. Цю традицію спрощення архітектури С. Крей з успіхом застосував при створенні широко відомої серії суперкомп’ютерів компанії Cray Research. Проте остаточно поняття комп’ютера з простою системою команд в сучасному його розумінні сформувалося на базі трьох дослідницьких проектів комп’ютерів: процесора 801 компанії IBM, процесора RISC університету Берклі та процесора MIPS Стенфордського університету.

Розробка експериментального проекту компанії IBM почалася ще в кінці 70-х років, але його результати ніколи не публікувалися і комп’ютер на його основі в промислових масштабах не виготовлявся. У 1980 році Д. Паттерсон із колегами з університету Берклі почали свій проект і виготовили дві машини, які одержали назви RISC-І і RISC-II. Головними ідеями цих машин було відділення повільної пам’яті від високошвидкісних регістрів і використання регістрових вікон. У 1981 році Дж. Хеннессі із своїми колегами опублікував опис стенфордської машини MIPS, основним аспектом розробки якої була ефективна реалізація конвеєрної обробки за допомогою ретельного планування компілятором його завантаження.

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

Серед інших особливостей архітектури КПСК слід зазначити наявність досить великого регістрового файла (у типовій архітектурі КПСК реалізуються 32 або більша кількість регістрів у порівнянні з 8-16 регістрами в архітектурі КССК), що дозволяє більшому об’єму даних зберігатися в регістрах на кристалі процесора більший час і спрощує роботу компілятора при розподілі регістрів під змінні. Для обробки, як правило, використовуються триадресні команди, що, крім спрощення дешифрування, дає можливість зберігати більшу кількість змінних в регістрах без їх подальшого перезавантаження.

До часу завершення університетських проектів (1983-1984 рр.) відбувся також прорив у технології виготовлення надвеликих інтегральних схем. Простота архітектури та її ефективність, підтверджена цими проектами, викликали великий інтерес в комп’ютерній індустрії, і з 1986 року почалася активна промислова реалізація архітектури КПСК. До теперішнього часу ця архітектура міцно займає лідируючі позиції на світовому комп’ютерному ринку робочих станцій і серверів.

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

Слід зазначити, що в останніх розробках компанії Intel (маються на увазі Pentium Р54С і процесор наступного покоління Р6), а також її послідовників-конкурентів (AMD R5, Cyrix Ml, NexGen Nx586 та ін.) широко використовуються ідеї, реалізовані в архітектурах КССК, так що багато відмінностей між КССК і КПСК стираються.

     19.1.1 Процесор комп’ютера із складною системою команд

Одношинна структура процесора

Почнемо розгляд процесора з аналізу його структури та організації роботи. Однією з найпростіших структур процесора є одношинна структура. Одношинну структуру процесора і його зв’язки з іншими пристроями комп’ютера показано на рис. 19.1. Як бачимо, до складу процесора входять пристрій керування, арифметико-логічний пристрій АЛП з вхідним PrY та вихідним PrZ регістрами, і регістрова пам’ять, до складу якої входять регістр команд РгК, регістр даних РгД, регістр адреси РгА, програмний лічильник ПЛ, та регістровий файл - стек програмно доступних регістрів РгО, Ргі... Рг(п-І). Обмін інформацією між названими пристроями здійснюється через спільну внутрішню шину процесора. Зв’язок процесора з основною пам’яттю проводиться через регістри адрес РгА та даних РгД.

Рисунок 19.1 – Одношинна структура процесора


 

РгА зберігає адресу даного або команди при зверненні до основної пам’яті. РгК зберігає команду після її зчитування з основної пам’яті. РгД зберігає операнд при його запису або зчитуванні з основної пам’яті. ПЛ - програмний лічильник, який підраховує команди та зберігає адресу поточної команди.

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

Різні команди вказують процесору, коли встановити чи очистити ці тригери. Інша частина прапорців вказує режими захисту пам’яті. Існують також прапорці, які вказують пріоритети виконуваних програм. В деяких процесорах додаткові тригери слугують для зберігання кодів умов, формуючи регістр кодів умов. Взяті разом описані прапорці формують слово стану програми (ССП), а відповідні тригери - регістр ССП.

Багатошинна структура процесора

Наведена на рис. 19.1 одношинна структура процесора є достатньо простою. Тому вона широко використовується при побудові процесорів реальних комп’ютерів. Зокрема, за такою схемою побудовано більшість мікроконтролерів, від яких не вимагається висока швидкодія. Якщо ж така вимога існує, то застосовується багатошинна організація процесора, в якій завдяки наявності багатьох шин забезпечується можливість паралельного обміну інформації між функціональними вузлами процесора і, тим самим, суттєво підвищується швидкість опрацювання інформації. Як приклад на рис. 19.2 показано можливий варіант двошинної структури процесора.

Рисунок 19.2 – Двошинна структура процесора


 

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

Розглянемо виконання на цій структурі процесора операції Рг3 : = Рг0 + Рг1:

1)  Pr0out, Prlout, Add, PrZin (подання на шину А числа з регістра Рг1 та на шину В числа з регістра Рг0, виконання в АЛП операції додавання та запис результату до регістра PrZ).

2)  PrZout, Рг3іп (запис числа з регістра PrZ до регістра Рг3 через міст М зв’язку між шинами).

Як видно, для виконання операції додавання тут потрібно лише два такти, тоді як в одношинній структурі процесора було потрібно три такти.

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

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

     19.1.2 Особливості побудови процесорів із складною системою команд

Вище розглядалася структура та організація роботи процесора комп’ютера, який із середини вісімдесятих років минулого століття був віднесений до комп’ютерів з складною системою команд КССК (CISC). Аналізуючи його роботу і розглянуті формати команд та склад системи команд названого комп’ютера, можна прийти до висновку, що для процесора комп’ютера із складною системою команд характерні наступні особливості:

виконання команди за багато тактів, оскільки для цього потрібно здійснити багаторазові операції звернення до основної пам’яті та до програмно-доступних регістрів процесора;

орієнтація АЛП на виконання великої кількості операцій, що пов’язано з розширеним складом системи команд;

складна система розпізнавання команди, що пов’язано з великою кількістю методів адресації та великою кількістю форматів команд різної розрядності;

програмне дешифрування команд з метою зменшення затрат обладнання;

складна організація конвеєризації виконання команд, що пов’язано, в першу чергу, з різнотипністю їх виконання;

орієнтація структури на виконання команд типу регістр-пам’ять та пам’ять-пам’ять.

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

      19.2 Комп’ютери із простою системою команд (RISC)

Відомі ще з початку 80-х років принципи реалізації КПСК є наступними:

- Довільна комп’ютерна команда, незалежно від її типу, має виконуватися за один такт (чи однотактовий цикл).

- Система команд має містити мінімальну кількість спрощених команд, що статистично переважають у програмах.

- Команди обробки даних реалізуються лише у формі «регістр-регістр». Обміни з пам’яттю даних (гарвардська архітектура), з метою модифікації змінних у пам’яті виконуються лише за допомогою команд читання/запису (архітектура load/store).

- Програми, що модифікують власні коди (раніше це було розповсюджено у різних комп’ютерах, зокрема РDP-11/VAX-11) є забороненими. Виходить, що згідно з новою концепцією команди обробки не можуть адресувати нічого, за винятком регістрів процесора.

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

- У системі команд відносно небагато операцій та режимів адресування операндів (способів адресації).

- Високий рівень конвеєризації виконання команд.

- Велика кількість регістрів.

- Застосовується багато рівнів ієрархії пам’яті.

- Склад системи команд має задовольняти вимоги «зручної» компіляції операторів мов високого рівня.

Виходячи з наведених вище принципів, можна прийти до висновку, що проектування КПСК вимагає вирішення наступних завдань:

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

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

- Додавання до отриманого списку інших команд, якщо вони не ускладнюють процесора.

- Застосування цих же принципів у розробленні інших пристроїв комп’ютерної системи.

- Перенесення більшої частини дій з апаратури на програмну частину (компілятор).

Потрібно відзначити, що з часом тлумачення окремих принципів змінилося. Наприклад, вимогу виконання команди за один такт почали розуміти в той спосіб, що результати усіх операцій мають формуватися з темпом «одне слово за такт». Іншими словами, усі процесори обов’язково містять конвеєризовані арифметичні пристрої. Сучасні технології елементної бази дозволили реалізувати замість первісних десятків команд більше сотні (до 150-200). Проте основний принцип архітектури КПСК виконувати операції тільки у межах регістрової структури процесора, аби виключити звертання до пам’яті даних, залишився незмінним.

     19.2.1 Вимоги до процесора комп'ютера з простою системою команд

При розгляді системи команд комп’ютера ми ознайомилися з архітектурою комп’ютерів із простою системою команд КПСК (RISC). Виходячи з основних принципів реалізації цих комп’ютерів, можна виділити наступні вимоги, яких необхідно притримуватися при побудові їх процесора:

- Довільна комп’ютерна команда, незалежно від її типу, має виконуватися за один такт (чи однотактовий цикл).

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

- Команди обробки даних мають реалізуватися лише у формі “регістр- регістр”. Обміни з основною пам’яттю виконуються лише за допомогою команд завантаження/запису (архітектура load/store).

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

- Необхідно забезпечити високий рівень конвеєризації виконання команд.

- Регістрова пам’ять має включати велику кількість програмно-доступних регістрів.

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

     19.2.2 Базові принципи побудови процесора комп'ютера з простою системою команд

Для ілюстрації базових принципів побудови процесора комп’ютера з простою системою команд ми використаємо архітектуру комп’ютера, яка була запропонована для навчальних цілей Джоном Хеннессі та Дейвідом Паттерсоном і отримала назву DLX. Ця архітектура узагальнює особливості архітектур наступних сучасних комп’ютерів: AMD 29000, DEC3100, НР850, ІВМ801, Intel i860, MIPS М/120А, MIPS M/1000, M88000, RISC1, SGI 4D/60, SPAR Cstation-1, SUN-4/110, SUN-4/260.

Регістровий файл процесора комп’ютера DLX вміщує 32 регістри загального призначення (R0...R31) для зберігання цілих чисел, 32 регістри (F0...31) для зберігання даних з рухомою комою. Набір команд цього комп’ютера включає типові арифметичні й логічні операції, операції з фіксованою та рухомою комою, операції пересилання даних, операції керування потоком команд і системні операції. У арифметичних командах використовується триадресний формат, типовий для комп’ютерів з архітектурою КПСК, а дія звернення до пам’яті використовуються операції завантаження і запису вмісту регістрів у пам’ять.

Основою проектування структури процесора комп’ютера з простою системою команд є часова діаграма виконання команд з найбільшою складністю, до числа яких належить, зокрема, команда завантаження слова. Розглянемо цикл виконання команди вибірки з основної пам’яті (завантаження) слова LW R5, 16 (R26). В комп’ютері DLX командний цикл поділений на п’ять фаз. Тому для виконання вказаної команди потрібно виконати наступні фази:

вибрати зазначену команду з основної пам’яті (перша фаза виконання команди із назвою IF (Instruction Fetch);

декодувати команду та вибрати операнди (друга фаза виконання команди із назвою ID (Instruction Detecting);

виконати команду, тобто обрахувати виконавчу адресу операнда 16 + [R26] (третя фаза виконання команди із назвою EX (Execution);

вибрати операнд із основної пам’яті (четверта фаза виконання команди із назвою MEM (Memory);

переслати вибраний з основної пам’яті операнд до регістра R5 регістрового файла (п’ята фаза виконання команди із назвою WB (Write Back).

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

На рис. 19.3 наведена часова діаграма виконання п’ятифазової команди завантаження LW. Залежно від структури процесора ця команда може бути виконаною за різний час, який буде складатися з суми проміжків часу, необхідних для виконання кожної фази. Розглянемо підхід до побудови процесора з тим, щоб задовольнити вимогу, згідно з якою довільна комп’ютерна команда, незалежно від її типу, має виконуватися за один такт (чи однотактовий цикл), яка ставиться до процесорів комп’ютера з простою системою команд.

Рисунок 19.3 – Часова діаграма виконання п’ятифазової команди  завантаження LW


 

Представимо алгоритм виконання команди у вигляді потокового графа, кожна з вершин якого позначає оператор відповідної фази виконання команди (рис. 19.4 а).

Рисунок 19.4   а – Потоковий граф виконання команди; б - структура процесора, орієнтованого на його реалізацію


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

Деталізована структура процесора комп’ютера DLX, яка побудована на основі описаного вище підходу, представлена на рис.19.5.

Рисунок 19.5 – Структура процесора комп’ютера з простою системою команд


 

На цій схемі лініями відділені блоки процесора, показані на рис. 4.5, які виконують відповідну фазу командного циклу потокового графа алгоритму виконання команди. Перший оператор IF виконується на наступних елементах: програмному лічильнику PC (Program Counter), суматорі Adder та двох регістрах NPC і IR. Вміст програмного лічильника PC визначає адресу команди в основній пам’яті. Комбінаційний суматор Adder обраховує адресу наступної за чергою виконання команди. При цьому враховано, що впорядкована послідовність команд (програма) складається з чотирибайтових команд (усі команди мають формати довжиною 32 біти), які розміщено в основній пам’яті за послідовними адресами 0,4, 8, С і т. д. Через це константа зсуву адреси (пересування покажчика на наступну за чергою команду) дорівнює +4. Визначене за допомогою суматора значення адреси вибирання наступної команди зберігається у регістрі NPC (next PC). Зчитаний з основної пам’яті код поточної команди записується до регістра команди IR.

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

Існує ще один тип операнда з назвою “безпосередній” (Imm). Його задають прямо у форматі команди. Як правило, довжина безпосереднього операнда не перевищує половини довжини формату команди. В комп’ютері DLX безпосередній операнд має довжину 32/2 - 16 бітів. У той самий час бажано зафіксувати довжину формату даних такою, що дорівнює довжині формату команди, адже різноманіть довжин форматів суттєво пригальмовує комп’ютер. Якщо усі формати даних, як і формати команд, матимуть довжину 32 біти, тоді безпосередньому операнду не вистачатиме ще 16 бітів, аби бути стандартним за довжиною. Тому тут використаний комбінаційний вузол Sign Extend, який виконує знакове розширення 16-бітового безпосереднього операнда до 32-х бітів. Результат знакового розширення тимчасово зберігають у службовому регістрі Imm.

В цілому можна нарахувати чотири можливі операнди на вході арифметико логічного пристрою ALU процесора: з регістрів А, В, Imm та вміст регістра адреси наступної для виконання команди NPC, над якими виконується функціональний оператор ЕХ. Наперед зазначимо, що операнд – адреса NPC опрацьовується в ALU при виконанні команд умовного переходу, коли на додаток до наступної потрібна ще одна адреса, що утворена додаванням до вмісту NPC деякої константи переходу. Вибирання двох операндів на вхід ALU із чотирьох можливих виконується за допомогою мультиплексорів операндів mux, розташованих на його входах.

Результат операції з ALU тимчасово запам’ятовується у проміжному службовому регістрі ALUout. Якщо результатом операції є число, тоді воно заноситься до комірки регістрового файла. Якщо результатом операції є адреса, тоді ця адреса надсилається до (верхнього на рисунку) мультиплексора вибору адреси mux. За допомогою зазначеного мультиплексора вибирають адресу переходу (чергова чи перехід), яка і надсилається до програмного лічильника PC, аби коректно продовжити виконання програми.

Керування мультиплексором вибору адреси наступної команди покладено на вузол Zero?, де вміст службового регістра А порівнюється із нулем (дорівнює нулю, більше нуля, менше нуля і т. д., залежно від виду виконуваної у поточний час операції умовного переходу). Результат порівняння є бінарним логічним значенням (так або ні). Саме цей бінарний результат керує роботою мультиплексора вибирання адреси наступної команди.

При виконанні фази МЕМ результат-адреса з виходу ALU надсилається до основної пам’яті як отримана адреса комірки цієї пам’яті (для команд збереження/завантаження)

Результатом на виході правого на рисунку мультиплексора може бути або вміст основної пам’яті (при виконанні команди завантаження LW слова з основної пам’яті до регістра регістрового файла), або результат виконання арифметичної, зсувної, логічної чи іншої операції в ALU (наприклад, при виконанні команд ADD, SUB і т. д.). Такий результат в рамках виконання фази WB засобами мікропрограмування зберігають в регістрі регістрового файла. Отже, зазначений мультиплексор, керований регістром поточної команди, комутує на вхід регістрового файла потрібну інформацію.

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

     19.3 Архітектура комп'ютера з доповненою системою команд

Основною вимогою до КДСК є забезпечення високої продуктивності при реалізації алгоритмів з великим обсягом обчислень в реальному масштабі часу. В КДСК ця вимога задовольняється завдяки використанню таких основних принципів:

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

широкому використанню конвеєрного принципу обробки даних;

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

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

- використанню взамін адресного регістра спеціального процесора формування адрес та його структурній орієнтації на роботу з масивами даних та на виконувані алгоритми адресації пам’яті;

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

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

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

- короткому командному циклу.

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

Типова структура комп’ютера з доповненою системою команд наведена на рис. 19.7. Видно, що тут використовується гарвардська архітектура, яка передбачає розподіл пам’яті на пам’ять даних і пам’ять програм, що дає змогу суміщати в часі вибірку і виконання команд. Такий розподіл шин дає змогу створити конвеєр виконання команд і підвищити продуктивність КДСК. В багатьох комп’ютерах з доповненою системою команд, зокрема сім’ї TMS320, використовується модифікована гарвардська архітектура, яка допускає обмін інформацією між пам’яттю даних і пам’яттю команд створенням зв’язку між шиною даних і шиною команд (міст зв’язку шин на рис. 19.6).

Рисунок 19.6 – Типова структура комп’ютера з доповненою системою команд

 

     19.4 Комп’ютери зі спеціалізованою системою команд

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

Одним із таких підходів є створення комп’ютерів із спеціалізованою (орієнтованою) системою команд (КОСК, англійський термін - ASISC - application specific instruction-set computer). КОСК орієнтовані на використання в складних системах, які реалізуються у вигляді НВІС. Використання КОСК як компоненти системи на кристалі забезпечує її програмованість (бажану гнучкість процесу проектування) із збереженням основних переваг спеціалізованих архітектур - можливості підвищення продуктивності та зменшення споживаної потужності. Таким чином, КОСК поєднують в собі переваги двох різних класів архітектур: універсальних та спеціалізованих. КОСК - це комп’ютери, система команд яких орієнтована на конкретне використання, наприклад, мобільний зв’язок, стиснення зображень і т. д. Порівняно з КДСК, КОСК мають вищий рівень спеціалізації.

Зазвичай КОСК мають малий набір команд, який включає:

- набір стандартних арифметичних команд, команди роботи з пам’яттю та команди керування програмним потоком, які необхідні для конкретного використання;

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

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

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

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

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

Зазвичай КОСК мають 16- або 32-розрядний кодований формат команди. Прикладна програма розміщується в пам’яті кристала. Формат команди вибирають узгодженим з розміром паралельного порту даних та стандартних блоків пам’яті, які використовуються для зберігання прикладної програми.

КОСК мають ефективну структуру основної та регістрової пам’яті, які забезпечують високу швидкість обміну між різними блоками тракту даних і між трактом даних та пам’яттю. Такі комп’ютери мають один або два блоки пам’яті даних. Для збільшення продуктивності роботи таких комп’ютерів при їх побудові використовується гарвардська архітектура (розділення пам’яті даних та пам’яті програм).

Більшість КОСК використовують гетерогенну структуру регістрової пам’яті, що дозволяє зменшити кількість розрядів команди, збільшуючи швидкість обміну даними. Це означає, що спеціально організовані регістри та регістрові файли прямо під’єднані до спеціальних портів функціональних блоків. Функціональні блоки можуть вибирати операнди або записувати результати тільки в конкретні регістри. Між елементами комп’ютера є тільки ті зв’язки, які є корисними для ефективної реалізації заданого алгоритму.

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

- Система команд КОСК включає спеціалізовані команди, які дозволяють виконувати критичні ділянки заданих алгоритмів за мінімальну кількість машинних циклів та без засилання в пам’ять проміжних результатів. Структура трактів даних таких процесорів спеціально проектується для конкретних алгоритмів.

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

- КОСК обробки мовних, відео- та аудіосигналів часто включають блоки бітових маніпуляцій. Більше того, ці комп’ютери підтримують кілька типів даних з фіксованою комою (наприклад: 2 різних типи 16-розрядних даних двох доповняльних кодів з різною інтерпретацією бінарних значень, 32-розрядний тип двох доповняльних кодів у акумуляторі та тип 8-розрядного цілого в процесорах формування адрес). Перетворення типів даних підтримуються апаратурою тракту даних.

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