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 залишається виконати команду виводу вмісту регістра на екран дисплея. На цьому робота МП закінчується.