13 АРХІТЕКТУРА ТИПОВОГО ПРОЦЕСОРА
13 АРХІТЕКТУРА ТИПОВОГО ПРОЦЕСОРА
Для опису архітектури та функціонування процесора зазвичай використовується його подання у вигляді сукупності програмно-доступних регістрів, що утворюють регістрову або програмну модель. У цих регістрах містяться оброблювані дані (операнди) і керуюча інформація. Відповідно, до регістрової моделі входить група регістрів загального призначення, що служать для зберігання операндів, і група службових регістрів, що забезпечують управління виконанням програми та режимом роботи процесора, організацію звернення до пам’яті (захист пам’яті, сегментна і сторінкова організація тощо).
Регістри загального призначення (РЗП) утворюють внутрішню регістрову пам’ять процесора. Склад та кількість службових регістрів визначається архітектурою процесора (рис.13.1). Зазвичай до їх складу входять:
1. Програмний лічильник PC;
2. Регістр стану SR (або ЕFLAGS)',
3. Регістри управління режимом роботи процесора CR (Control Register);
4. Регістри, що реалізують сегментну і сторінкову організацію нам’яті;
5. Регістри, що забезпечують налагодження програм і тестування процесора.
Крім того, різні моделі процесорів містять ряд інших спеціалізованих регістрів. Склад пристроїв і блоків, що входять до структури процесора і реалізують механізми їх взаємодії, визначаються функціональним призначенням та областю застосування процесора.
Рисунок 13.1 – Склад та кількість службових регістрів процесора 8086
Архітектура та структура процесора тісно взаємопов’язані. Реалізація тих чи інших архітектурних особливостей вимагає введення в структуру процесора необхідних апаратних засобів (пристроїв і блоків) і забезпечення відповідних механізмів їх спільного функціонування. У сучасних процесорах реалізуються наступні варіанти архітектур.
RISC (Reduced Instruction Set Computer — комп’ютер із скороченим набором команд) — архітектура відрізняється використанням обмеженого набору команд фіксованого формату. Сучасні процесори зазвичай реалізують близько 100 команд, які мають фіксований формат довжиною 4 байти. Також значно скорочується число використовуваних способів адресації. Зазвичай в RISC-процесорах всі команди обробки даних виконуються тільки з регістровою або безпосередньою адресацією.
CISC (Complex Instruction Set Computer — комп’ютер із повним набором команд) — архітектура реалізована у багатьох типах процесорів, що виконують великий набір різноформатних команд з використанням численних способів адресації. Вони виконують понад 200 команд різного ступеня складності, які мають розмір від 1 до 15 байт і забезпечують більше 10 різних способів адресації. Таке велике різноманіття виконуваних команд і способів адресації дозволяє програмісту реалізувати найбільш ефективні алгоритми вирішення різних завдань.
VLIW (Very Large Instruction Word — комп’ютер із дуже довгим набором команд) — архітектура з’явилася відносно недавно. Її особливістю є використання дуже довгих команд (до 128 біт і більше), окремі поля яких містять коди, що забезпечують виконання різних операцій. Таким чином, одна команда викликає виконання відразу декількох операцій паралельно в різних операційних пристроях, що входять до структури процесора.
Крім набору виконуваних команд і способів адресації важливою архітектурною особливістю процесорів є варіант реалізації пам’яті і організація вибірки команд і даних. За цими ознаками розрізняються процесори з нейманівською і гарвардською архітектурою.
Поняття архітектури мікропроцесора визначає його складові частини, а також зв’язки та взаємодію між ними.
Архітектура містить:
1) структурну схему самого МП;
2) програмну модель МП (опис функцій регістрів);
3) інформацію про організацію пам’яті (ємність пам’яті та способи її адресації);
4) опис організації процедур введення-виведення.
Існують два основні типи архітектури - фоннейманівська та гарвардська. Фоннейманівську архітектуру (рис. 13.2, а) запропонував 1945 року американський математик Джо фон Нейман.
Рисунок 13.2 - Основні типи архітектури процесорів: а - фоннейманівська; б – гарвардська
Особливістю цієї архітектури є те, що програма і дані знаходяться у спільній пам’яті, доступ до якої здійснюється по одній шині даних і команд.
Гарвардську архітектуру вперше реалізовано 1944 року в релейній обчислювальній машині Гарвардського університету (США). Особливістю цієї архітектури є те, що пам’ять даних і пам’ять програм розділені та мають окремі шину даних і шину команд (рис. 13.2, б), що дозволяє підвищити швидкодію МП системи.
Структурні схеми обох архітектур містять: процесорний елемент, пам’ять, інтерфейси введення-виведення (ІВВ) і ПВВ. Пам’ять і ІВВ для різних типів МП можуть бути як внутрішніми, тобто розміщуватися на тому ж кристалі, що і процесорний елемент, так і зовнішніми. Процесорний елемент містить регістри, арифметико-логічний пристрій (АЛП), пристрій керування і виконує функції обробки даних та керування процесами обміну інформацією. Пам’ять забезпечує зберігання кодів команд програми і даних. Інтерфейси призначені для зв’язку з ПВВ (наприклад, з клавіатурою, дисплеєм, друкувальними пристроями, датчиками інформації). Усї елементи структурної схеми з’єднані за допомогою шин.
Розширену структурну схему з процесором фоннейманівської архітектури показано на рис. 13.3.
Рисунок 13.3 - Структурна схема з процесором фоннейманівської архітектури
Схема процесора містить пристрій керування, АЛП і регістри: адреси, даних, команд, стану, а також акумулятор, лічильник команд та вказівник стека.
Пристрій керування відповідно до кодів команд та зовнішніх керувальних сигналів і сигналів синхронізації виробляє керувальні сигнали для всіх блоків структурної схеми МП, а також керує обміном інформацією між МП, пам’яттю і ПВВ. Пристрій керування реалізує такі функції:
1. Функція початкового встановлення МП. Зовнішній сигнал початкового встановлення процесора RESET формується при ввімкненні джерела живлення МП або при натисканні кнопки RESET. У разі появи цього сигналу пристрій керування забезпечує завантаження нульового значення у програмний лічильник, що ініціює вибирання з пам’яті байта команди з нульовою адресою. Наприкінці вибирання вміст лічильника команд збільшується на одиницю і вибирається байт команд з наступною адресою. Таким чином виконується вся записана у пам’яті програма.
2. Функція синхронізації. Згідно із зовнішніми керувальними сигналами і сигналами синхросигналізації пристрій керування синхронізує роботу всіх блоків МП.
3. Функція переривань. Із надходженням сигналу переривання пристрій керування ініціює роботу підпрограми обробки відповідного пере- ривання. Потреба у реалізації функцій переривань виникає тоді, коли під час виконання основної програми треба перевести МП на розв’язання іншої задачі, наприклад, обробки аварійної ситуації або роботи з ПВВ.
4. Функція узгодження швидкодії модулів мікропроцесорної системи. Під час обслуговування пам’яті та ПВВ із значно меншою швидкодією, ніж МП, узгодження швидкодії вирішується генерацією тактів очікування МП, а під час обслуговування пристроїв з більшою швидкодією, ніж МП, використовується режим безпосереднього доступу до пам’яті.
Арифметико-логічний пристрій (АЛП) являє собою комбінаційну схему на основі суматора, який сигналами з виходів пристрою керування налагоджується на виконання певної арифметичної або логічної операції: додавання, віднімання, ЛОГІЧНЕ І, ЛОГІЧНЕ АБО, ЛОГІЧНЕ НЕ, ВИКЛЮЧНОГО АБО, зсуву, порівняння, десяткової корекції. Отже, АЛП виконує арифметичні або логічні операції над операндами, які пересилаються з пам’яті і(або) регістрів МП.
Операнд - це об’єкт у вигляді значення даних, вмісту регістрів або вмісту комірки пам’яті, з яким оперує команда, наприклад, у команді додавання операндами є доданки. Операнд може задаватися у команді у вигляді числа або знаходитися в регістрі чи комірці пам’яті. Одержаний після виконання команди в АЛП результат пересилається в регістр або комірку пам’яті.
Регістри призначені для зберігання m-розрядного двійкового числа. Вони являють собою n тригерів зі схемами керування читанням/записом та вибірки. Регістри створюють внутрішню пам’ять МП і використовуються для зберігання проміжних результатів обчислень.
Акумулятор - це регістр, у якому зберігається один з операндів. Після виконання команди в акумуляторі замість операнда розміщується результат операції. У 8-розрядних процесорах акумулятор бере участь в усіх операціях АЛП. У 16-розрядних МП більшість команд виконуються без участі акумулятора, але в деяких командах (введення, виведення, множення, ділення) акумулятор діє так само, як і у 8-розрядних МП, тобто зберігає один з операндів, а після виконання команди - результат операції.
Вказівник команд, або програмний лічильник, призначений для зберігання адреси комірки пам’яті, яка містить код наступної команди. Програму дій МП записано в пам’яті у вигляді послідовності кодів команд. Для переходу до наступної команди вміст лічильника збільшується на одиницю у момент вибирання команди з пам’яті. Наприкінці виконання команди в лічильнику команд зберігається адреса наступної команди. Вказівник стека - це регістр, який зберігає адресу останньої зайнятої комірки стека. Стеком або стековою пам’яттю називається область пам’яті, організованої за принципом «останній прийшов - перший пішов».
Регістр команд зберігає код команди протягом усього часу виконання команди.
Регістр адреси і регістри даних призначені для зберігання адрес і даних, використовуваних під час виконання поточної команди у МП.
Регістр стану або регістр прапорців (ознак) призначений для зберігання інформації про результат операції в АЛП і являє собою декілька тригерів, які набувають одиничних або нульових значень. Наприклад, прапорець нуля встановлюється в одиницю при нульовому результаті операції.
Утім, для розробника мікропроцесорних систем інформація про тонкості внутрішньої структури процесора не надто важлива. Розробник повинен розглядати процесор як "чорний ящик", який у відповідь на вхідні і керуючі коди робить ту або іншу операцію і видає вихідні сигнали. Розробникові необхідно знати систему команд, режими роботи процесора, а також правила взаємодії процесора з зовнішнім світом або, як їх ще називають, протоколи обміну інформацією. Про внутрішню структуру процесора треба знати тільки те, що необхідно для вибору тієї чи іншої команди, того чи іншого режиму роботи.
Процесор звичайно являє собою окрему чи мікросхему ж частина мікросхеми (у випадку мікроконтролера). В колишні роки процесор іноді виконувався на комплектах з декількох мікросхем, але зараз від такого підходу вже практично відмовилися. Мікросхема процесора обов'язково має виводи трьох шин: шини адреси, шини даних і шини управління. Іноді деякі сигнали і шини мультиплексуються, щоб зменшити кількість виводів мікросхеми процесора.
Найважливіші характеристики процесора - це кількість розрядів його шини даних, кількість розрядів його шини адреси і кількість керуючих сигналів у шині управління. Розрядність шини даних визначає швидкість роботи системи. Розрядність шини адреси визначає припустиму складність системи. Кількість ліній управління визначає розмаїтість режимів обміну й ефективність обміну процесора з іншими пристроями системи.
Крім виводів для сигналів трьох основних шин процесор завжди має вивід (чи два виводи) для підключення зовнішнього тактового сигналу чи кварцового резонатора (CLK), тому що процесор завжди є тактованим пристроєм. Чим більша тактова частота процесора, тим він швидше працює, тобто тим швидше виконує команди. Утім, швидкодія процесора визначається не тільки тактовою частотою, але й особливостями його структури. Сучасні процесори виконують більшість команд за один такт і мають засоби для паралельного виконання декількох команд. Тактова частота процесора не зв'язана прямо і жорстко зі швидкістю обміну магістраллю, тому що швидкість обміну магістраллю обмежена затримками поширення сигналів і спотвореннями сигналів на магістралі. Тобто тактова частота процесора визначає тільки його внутрішню швидкодію, а не зовнішню. Іноді тактова частота процесора має нижню і верхню межі. При перевищенні верхньої межі частоти можливе перегрівання процесора, а також збої, причому, що саме неприємне, такі, що виникають не завжди і нерегулярно. Так що зі зміною цієї частоти треба бути дуже обережним.
Ще один важливий сигнал, що є в кожному процесорі, - це сигнал початкової ініціалізації RESET. При увімкненні живлення, при аварійній ситуації чи зависанні процесора подача цього сигналу приводить до ініціалізації процесора, змушує його приступити до виконання програми початкового запуску. Аварійна ситуація може бути викликана завадами колами живлення і "землі", збоями в роботі пам'яті, зовнішніми іонізуючими випромінюваннями і ще безліччю причин. У результаті процесор може втратити контроль над виконуваною програмою і зупинитися на якійсь адресі. Для виходу з цього стану саме і використовується сигнал початкової ініціалізації. Цей же вхід може використовуватися для оповіщення процесора про те, що напруга живлення стала нижчою за встановлену межу. У такому випадку процесор переходить до виконання програми збереження важливих даних. По суті, цей вхід - це особливий різновид радіального переривання.
Іноді в мікросхеми процесора існує ще один-два входи радіальних переривань для обробки особливих ситуацій (наприклад, для переривання від зовнішнього таймера).
Шина живлення сучасного процесора звичайно має одну напругу живлення (+5В чи +3,3В) і загальний провід ("землю"). Перші процесори нерідко вимагали декількох напруг живлення. У деяких процесорах передбачений режим зниженого енергоспоживання. Узагалі, сучасні мікросхеми процесорів, особливо з високими тактовими частотами, споживають досить велику потужність. У результаті для підтримки нормальної робочої температури корпуса на них нерідко приходиться встановлювати радіатори, чи вентилятори навіть спеціальні мікрохолодильники.
Для підключення процесора до магістралі використовуються буферні мікросхеми, що забезпечують, якщо необхідно, демультиплексування сигналів і електричне буферизування сигналів магістралі. Іноді протоколи обміну системною магістраллю і шинами процесора не збігаються між собою, тоді буферні мікросхеми ще і узгоджують ці протоколи один з одним. Іноді в мікропроцесорній системі використовується кілька магістралей (системних і локальних), тоді для кожної з магістралей застосовується свій буферний вузол. Така структура характерна, наприклад, для персональних комп'ютерів.
Після увімкнення живлення процесор переходить на першу адресу програми початкового пуску і виконує цю програму. Дана програма попередньо записана в постійну (енергонезалежну) пам'ять. Після завершення програми початкового пуску процесор починає виконувати основну програму, що знаходиться в постійній чи оперативній пам'яті, для чого вибирає по черзі всі команди. Від цієї програми процесор можуть відволікати зовнішні переривання чи запити на ПДП. Команди з пам'яті процесор вибирає за допомогою циклів читання магістраллю. При необхідності процесор записує дані в пам'ять чи у пристрої вводу/виводу за допомогою циклів запису або ж читає дані з пам'яті чи з пристроїв вводу/виводу за допомогою циклів читання.
Таким чином, основні функції будь-якого процесора наступні:
- вибірка (читання) виконуваних команд;
- ввід (читання) даних з чи пам'яті пристрою вводу/виводу;
- вивід (запис) даних у чи пам'ять у пристрої вводу/виводу;
- обробка даних (операндів), у тому числі арифметичні операції над ними;
- адресація пам'яті, тобто завдання адреси пам'яті, з яким буде відбуватися обмін;
- обробка переривань і режиму прямого доступу.
Основні функції показаних вузлів наступні:
Схема управління вибіркою команд виконує читання команд із пам'яті і їхню дешифрацію. У перших мікропроцесорах було неможливо одночасне виконання попередньої команди і вибірка наступної команди, тому що процесор не міг поєднувати ці операції. Але вже в 16-розрядних процесорах з'являється так званий конвеєр (черга) команд, що дозволяє вибирати кілька наступних команд, поки виконується попередня. Два процеси йдуть паралельно, що прискорює роботу процесора. Конвеєр - це невелика внутрішня пам'ять процесора, у яку при найменшій можливості (при звільненні зовнішньої шини) записується кілька команд, які слідують за тією, що виконується. Читаються ці команди процесором у тому ж порядку, що і записуються в конвеєр (це пам'ять типу FIFO, First In - First Out, перший увійшов - перший вийшов). Правда, якщо виконувана команда припускає перехід не на наступну комірку пам'яті, а на видалену (з меншою чи більшою адресою), конвеєр не допомагає, і його приходиться скидати. Але такі команди зустрічаються в програмах порівняно рідко.
Розвитком ідеї конвеєра стало використання внутрішньої кеш-пам'яті процесора, що заповнюється командами, поки процесор зайнятий виконанням попередніх команд. Чим більший об'єм кеш-пам'яті, тим менша ймовірність того, що її вміст прийдеться скинути при команді переходу. Зрозуміло, що обробляти команди, які знаходяться у внутрішній пам'яті, процесор може набагато швидше, ніж ті, котрі розташовані в зовнішній пам'яті. У кеш-пам'яті можуть зберігатися і дані, що обробляються в даний момент, це також прискорює роботу. Для більшого прискорення вибірки команд у сучасних процесорах застосовують поєднання вибірки і дешифрації, одночасну дешифрацію декількох команд, кілька паралельних конвеєрів команд, прогнозування команд переходів і деякі інші методи.
Арифметико-логічний пристрій (АЛП чи ALU) призначений для обробки інформації відповідно до отриманого процесором командою. Прикладами обробки можуть служити логічні операції (типу логічного "І", "АБО", "Рівнозначність" і т.д.) тобто побітові операції над операндами, а також арифметичні операції (типу додавання, віднімання, множення, ділення і т.д.). Над якими кодами відбувається операція, куди поміщується її результат - визначається виконуваною командою. Якщо команда зводиться усього лише до пересилання даних без їхньої обробки, то АЛП не бере участі у її виконанні.
Швидкодія АЛП багато в чому визначає продуктивність процесора. Причому важлива не тільки частота тактового сигналу, яким тактується АЛП, але і кількість тактів, які необхідні для виконання тієї чи іншої команди. Для підвищення продуктивності виробники прагнуть довести час виконання команди до одного такту, а також забезпечити роботу АЛП на можливо більш високій частоті. Один зі шляхів рішення цієї проблеми полягає в зменшенні кількості виконуваних АЛП команд, створення процесорів зі зменшеним набором команд (так звані RISC-процесори). Інший шлях підвищення продуктивності процесора - використання декількох паралельно працюючих АЛП.
Що стосується операцій над числами з крапкою, що плаває, і інших спеціальних складних операцій, то в системах на базі перших процесорів їх реалізували послідовністю більш простих команд, спеціальними підпрограмами, однак потім були розроблені спеціальні обчислювачі - математичні сопроцесори, що заміняли основний процесор на час виконання таких команд. У сучасних мікропроцесорах математичні сопроцесори входять у структуру як складова частина.
Регістри процесора являють собою по суті осередки дуже швидкої пам'яті і служать для тимчасового збереження різних кодів: даних, адрес, службових кодів. Операції з цими кодами виконуються гранично швидко, тому, у загальному випадку, чим більше внутрішніх регістрів, тим краще. Крім того, на швидкодію процесора сильно впливає розрядність регістрів. Саме розрядність регістрів і АЛП називається внутрішньою розрядністю процесора, що може не збігатися з зовнішньою розрядністю.
Стосовно призначення внутрішніх регістрів існує два основних підходи. Першого дотримується, наприклад, компанія Intel, що кожному регістру відводить строго визначену функцію. З одного боку, це спрощує організацію процесора і зменшує час виконання команди, але з іншого боку - знижує гнучкість, а іноді і сповільнює роботу програми. Наприклад, деякі арифметичні операції й обмін із пристроями вводу/виводу проводяться тільки через один регістр - акумулятор, у результаті чого при виконанні деяких процедур може знадобитися кілька додаткових пересилань між регістрами. Другий підхід полягає в тому, щоб усі (чи майже усі) регістри зробити рівноправними, як , наприклад, у 16-розрядних процесорах Т-11 фірми DEC. При цьому досягається висока гнучкість, але необхідне ускладнення структури процесора. Існують і проміжні рішення, зокрема, у процесорі MC68000 фірми Motorola половина регістрів використовувалася для даних, і вони були взаємозамінні, а інша половина - для адрес, і вони також взаємозамінні.
Регістр ознак (регістр стану) займає особливе місце, хоча він також є внутрішнім регістром процесора. Інформація, що міститься в ньому - це не дані, не адреса, а слово стану процесора (ССП, PSW - Processor Status Word). Кожен біт цього слова (прапор) містить інформацію про результат попередньої команди. Наприклад, є біт нульового результату, що встановлюється в тому випадку, коли результат виконання попередньої команди - нуль, і очищається в тому випадку, коли результат виконання команди відмінний від нуля. Ці біти (прапори) використовуються командами умовних переходів, наприклад, командою переходу у випадку нульового результату. У цьому ж регістрі іноді містяться прапори керування, що визначають режим виконання деяких команд.
Схема управління перериваннями обробляє запит, що надходить на процесор, переривання, визначає адресу початку програми обробки переривання (адресу вектора переривання), забезпечує перехід до цієї програми після виконання поточної команди і збереження в пам'яті (у стеці) поточного стану регістрів процесора. По закінченні програми обробки переривання процесор повертається до перерваної програми з відновленими з пам'яті (зі стека) значеннями внутрішніх регістрів. Докладніше про стек буде розказано в наступному розділі.
Схема управління прямим доступом до пам'яті служить для тимчасового відключення процесора від зовнішніх шин і припинення роботи процесора на час надання прямого доступу до пам'яті системи того пристрою, який його запросив.
Логіка управління організує взаємодію усіх вузлів процесора, перенаправляє дані, синхронізує роботу процесора з зовнішніми сигналами, а також реалізує процедури вводу і виводу інформації.
Таким чином, у ході роботи процесора схема вибірки команд вибирає послідовно команди з пам'яті, потім ці команди виконуються, причому в разі потреби обробки даних підключається АЛП. На входи АЛП можуть подаватися оброблювані дані з пам'яті чи з внутрішніх регістрів. В внутрішніх регістрах зберігаються також коди адрес оброблюваних даних, розташованих у пам'яті. Результат обробки в АЛП змінює стан регістра ознак і записується у внутрішній регістр чи у пам'ять (як джерело, так і приймач даних вказується в складі коду команди). При необхідності інформація може переписуватись з пам'яті (чи з пристрою вводу/виводу) у внутрішній регістр чи із внутрішнього регістра в пам'ять (чи в пристрій вводу/виводу).
Внутрішні регістри будь-якого мікропроцесора обов'язково виконують дві службові функції:
• визначають адреси в пам'яті, де знаходиться виконувана в даний момент команда (функція лічильника команд чи показника команд);
• визначають поточну адресу стеку (функція показника стека).
У різних процесорах для кожної з цих функцій може виділятися один чи два внутрішніх регістри. Ці два покажчики відрізняються від інших не тільки своїм специфічним, службовим, системним призначенням, але й особливим способом зміни вмісту. Їхній уміст програми можуть змінювати тільки у випадку крайньої необхідності, тому що будь-яка помилка при цьому грозить порушенням роботи комп'ютера, зависанням і псуванням умісту пам'яті.
Уміст показника (лічильника) команд змінюється в такий спосіб: На початку роботи системи (при увімкненні живлення) у нього заноситься раз і назавжди встановлене значення. Це перша адреса програми початкового запуску. Потім після вибірки з пам'яті кожної наступної команди значення покажчика команд автоматично збільшується (інкрементується) на одиницю (чи на два в залежності від формату команд і типу процесора). Тобто наступна команда буде вибиратися з наступної по прядку адреси пам'яті. При виконанні команд переходу, що порушують послідовний перебір адрес пам'яті, у покажчик команд примусово записується нове значення - нова адреса в пам'яті, починаючи з якої адреси команд знову будуть перебиратися послідовно. Така ж зміна вмісту покажчика команд відбувається при виклику підпрограми і поверненні з неї чи при початку обробки переривання і після його закінчення.
Основна функція будь-якого процесора, заради якої він і створюється, - це виконання команд. Система команд, виконуваних процесором, являє собою щось подібне до таблиці істинності логічних елементів чи таблиці режимів роботи більш складних логічних мікросхем. Тобто вона визначає логіку роботи процесора і його реакцію на ті чи інші комбінації зовнішніх подій.
Написання програм для мікропроцесорної системи - найважливіший і часто найбільш трудомісткий етап розробки такої системи. А для створення ефективних програм необхідно мати хоча б саме загальне уявлення про систему команд використовуваного процесора. Самі компактні і швидкі програми і підпрограми створюються мовою Асемблер, використання якого без знання системи команд абсолютно неможливо, адже мова Асемблер - символьний запис цифрових кодів машинної мови, кодів команд процесора. Звичайно, для розробки програмного забезпечення існують усілякі програмні засоби. Користатися ними звичайно можна і без знання системи команд процесора. Найчастіше застосовуються мови програмування високого рівня, такі як Паскаль і Сі. Однак знання системи команд і мови Асемблер дозволяє в кілька разів підвищити ефективність деяких найбільш важливих частин програмного забезпечення будь-якої мікропроцесорної системи - від мікроконтролера до персонального комп'ютера.