2. Архітектура мікропроцесора
Архітектура мікропроцесора містить:
1) структурну схему МП;
2) програмну модель МП (опис функцій регістрів);
3) організацію пам’яті (ємність пам’яті та способи її адресації);
4) опис організації операцій введення-виведення.
Але, як правило, говорячи про архітектуру МП, звичайно мають на увазі його програмну модель, тобто програмно-видимі властивості. Зокрема, 32-розрядні процесори сімейства Іntel х86 мають архітектуру ІA-32 (Іntel Archіtecture 32 bіt).
Під мікроархітектурою МП розуміють внутрішню реалізацію цієї програмної моделі. Тобто, процесори, що мають ті самі програмно-видимі властивості (архітектуру), можуть істотно розрізнятися мікроархітектурними реалізаціями цих властивостей, оскільки розроблювачі МП безупинно прагнуть до максимального підвищення продуктивності, тобто швидкості виконання програм.
Спрощена схема мікропроцесора, містить у собі наступні складові частини:
- арифметико-логічний пристрій,
- пристрій керування,
- блок декодування команд,
- блок внутрішніх регістрів МП,
- пристрій шинного інтерфейсу, що включає в себе блок випереджальної вибірки,
- роздільні блоки буферної пам'яті (кеш-пам'яті) команд і даних.
Рис. 38. Спрощена
схема універсального мікропроцесора.
АЛП – це комбінаційна схема на основі суматора, який сигналами з виходів пристрою керування налагоджується на виконання певної арифметичної або логічної операції над операндами, які пересилаються з пам’яті або регістрів МП.
Пристрій керування відповідно до кодів команд та зовнішніх керуючих сигналів і сигналів синхронізації виробляє сигнали управління для всіх блоків МП.
Внутрішні регістри призначенні для зберігання проміжних результатів обчислень. У складі внутрішніх регістрів виділяється акумулятор – регістр у якому зберігається один з операндів. Після виконання команди в акумуляторі замість операнда розміщується результат операції.
Блок декодування команд формує сигнали для пристрою керування згідно з дешифрованим кодом команди.
Блок випереджальної вибірки самостійно ініціює випереджаючу вибірку кодів команд з пам’яті у чергу команд.
Кеш команд (даних) – буферна статична пам’ять, звернення до якої відбувається на частоті функціонування процесора.
Послідовність функціонування мікропроцесора визначається програмним кодом.
Програмний код – це послідовність команд або інструкцій, кожна з яких певним чином закодована і розташована в цілому числі суміжних байт пам'яті. Кожна інструкція обов'язково має операційну частину, що несе процесорові інформацію про необхідні дії. Операндна частина вказує процесорові, де знаходиться його «предмет праці» - операнди. Операнди – це об’єкти у вигляді значення даних, вмісту регістрів або комірок пам’яті, з яким оперує команда.
Одноядерний процесор фактично може виконувати тільки один процес - передачу керування від інструкції до інструкції відповідно до програми яка виконується. При цьому можуть виконуватися переходи, розгалуження і виклики операцій, але весь цей ланцюжок запрограмований розроблювачем програми. Послідовність виконання інструкцій, запропонована програмним кодом, може бути порушена під впливом внутрішніх або зовнішніх (щодо процесора) причин – виключень і апаратних переривань.
Типова послідовність роботи МП при виконанні якої-небудь команди містить у собі наступні етапи:
- вибірку чергової команди і даних, необхідних для її виконання, з оперативної пам'яті ПК,
- декодування команди,
- власне її виконання,
- запис отриманого результату в оперативну пам'ять.
Щоб зрозуміти, як працює МП, розглянемо крок за кроком, як він виконує нескладну задачу додавання двох чисел (2+3=5). Вирішується вона в чотири етапи.
Етап 1. Введення цифри «2» приводить МП у стан готовності і подає блокові попередньої вибірки сигнал на запит в оперативній пам'яті комп'ютера інструкції у відношенні нових даних, що надійшли, оскільки командна кеш-пам'ять такої інструкції не містить.
Нова інструкція роботи з даними надходить з пам'яті комп'ютера через шинний інтерфейс у МП і записується в командну кеш-пам'ять, де їй привласнюється код «2=X». Слідом за цим блок попередньої вибірки запитує з кеш-пам'яті копію коду «2=X», що направляється для подальшої обробки в блок декодування.
Блок декодування декодує інструкцію «2=X», перетворює її в ланцюжок двійкових символів, що пересилається в керуючий блок і в кеш даних, даючи їм вказівку про те, як з отриманою інструкцією працювати далі.
Оскільки блоком декодування прийняте рішення про збереження цифри 2 у кеш даних, керуючий блок виконує відповідну інструкцію для коду «2=X»: цифрі 2 у кеш-пам'яті даних привласнюється адреса «Х», тут вона і буде знаходитися в очікуванні нових вказівок.
Етап 2. Введення цифри «3». Блок попередньої вибірки одержує команду на запит у системній пам'яті комп'ютера і у командній кеш-пам'яті інструкції про дії у відношенні до нових даних, що надійшли. Оскільки командна кеш-пам'ять таких інструкцій не містить, вони надійдуть з оперативної пам'яті.
Аналогічно команді «2=X», нові інструкції з даних надходять з пам'яті комп'ютера в МП і записуються в командну кеш-пам'ять, де одержують код адресації «3=Y».
Декодувальний блок декодує інструкцію «3=Y», перетворює її в ланцюжок двійкових символів та направляє в керуючий блок і в кеш-пам'ять даних, даючи їй вказівки про те, як з даною інструкцією поводитися далі.
Оскільки декодувальний блок приймає рішення про збереження цифри 3 у кеш-пам'яті даних, то він виконує відповідну інструкцію для коду «3=Y»: цифрі 3 привласнюється в кеш-пам'яті даних адреса «Y», де вона, аналогічно цифрі 2, і буде знаходитися в очікуванні нових вказівок.
Етап 3. Введення команди «+» змушує блок попередньої вибірки запросити з оперативної пам'яті комп'ютера і командної кеш-пам'яті інструкції у відношенні до нових даних, що надійшли. Як і в попередніх випадках, ці інструкції повинні бути отримані з оперативної пам'яті.
Оскільки мова йде про інструкцію, яка не використовувалася раніше, «плюс» надходить у МП із пам'яті комп'ютера і записується в командну кеш-пам'ять із присвоєнням адресного коду «X+Y=Z», що позначає операцію додавання.
Слідом за цим блок попередньої вибірки запитує з командної кеш-пам'яті копію коду «X+Y=Z» і пересилає її блокові декодування для подальшої обробки.
Блок декодування декодує інструкцію «X+Y=Z», перетворює її в ланцюжок двійкових символів, що направляє в керуючий блок і в кеш-пам'ять даних, даючи їм вказівки про те, що з даною інструкцією робити далі. Одночасно арифметико-логічний пристрій одержує вказівки на виконання операції ДОДАВАННЯ.
Блок керування аналізує код, а арифметико-логічний пристрій виконує по команді операцію ДОДАВАННЯ чисел, закодованих як «X» і «Y» і витягнутих з кеш-пам'яті даних. Після цього АЛП, пересилає в блок регістрів отримане число 5 для запису в одну з адрес.
Етап 4. Вивід результату. Блок попередньої вибірки в черговий раз перевіряє командну кеш-пам'ять на предмет наявності інструкцій, що відносяться до нових даних, що надійшли. Як і колись, такі інструкції там відсутні. Інструкція для значка «=» надходить у МП з оперативної пам'яті комп'ютера через шинний інтерфейс і записується в командну кеш-пам'ять, одержавши код адресації «Prіnt Z» (відобразити на екрані символ Z).
Слідом за цим блок попередньої вибірки запитує з командної кеш-пам'яті копію коду «Prіnt Z» і пересилає декодувальному блокові для подальшої обробки.
Декодувальний блок декодує інструкцію «Prіnt Z», перетворює її в ланцюжок двійкових символів, що потім пересилається керуючому блокові з вказівкою на те, як з отриманою інструкцією поводитися далі.
Тепер, коли значення величини, представленої кодом Z, вже обчислене і записано в блоці регістрів, для завершення операції додавання 2+3 залишається виконати команду виводу вмісту регістра на екран дисплея. На цьому робота МП закінчується.