Мікроархітектура
Мікроархітекту́ра (англ. microarchitecture; іноді скорочується до μarch або uarch) — це спосіб, яким дана архітектура системи команд реалізована в процесорі. Кожна АСК може бути реалізована за допомогою різних мікроархітектур. Реалізації можуть змінюватись залежно від цілей даного дизайну або в результаті змін у технологіях. Архітектура комп'ютера є комбінацією мікроархітектури, мікрокода і АСК.
Зв'язок з мікрокодом та архітектурою системи команд
Архітектура системи команд — це приблизно те ж саме, що і модель програмування, з точки зору програміста на мові асемблера або творця компілятора. АСК, в числі іншого, включає модель виконання, регістри процесора, формати адрес і даних, в той час, як мікроархітектура включає складові частини процесора і способи їх взаємозв'язку і взаємодії для реалізації АСК.
Однак у багатьох випадках робота елементів мікроархітектури контролюється мікрокодом, вбудованим в процесор. У разі наявності шару мікрокода в архітектурі процесора він виступає своєрідним інтерпретатором, перетворюючи команди рівня АСК в команди рівня мікроархітектури. При цьому різні системи команд можуть бути реалізовані на базі однієї мікроархітектури.
Мікроархітектура машини зазвичай представляється як більш-менш детальні діаграми, що описують взаємозв'язки різних мікроархітектурних елементів, які можуть бути чим завгодно: від окремих вентилів і регістрів до цілих АЛП і навіть більш великих елементів. На цих діаграмах зазвичай виділяють тракт даних (де розміщені дані) і тракт управління (який керує рухом даних) .
Машини з різною мікроархітектурою можуть мати однакову АСК і, таким чином, бути придатними для виконання тих же програм. Нові мікроархітектури та/або схемотехнічні рішення разом з прогресом в напівпровідниковій промисловості є тим, що дозволяє новим поколінням процесорів досягати більш високої продуктивності, використовуючи ту ж АСК.
Аспекти мікроархітектури
Конвеєрний тракт даних є найбільш широко використовуваним в сучасних мікроархітектурах. Ця техніка використовується в більшості сучасних мікропроцесорів, мікроконтролерів і цифрових сигнальних процесорів. Конвеєрна архітектура дозволяє декільком інструкціям перекриватися у виконанні, що нагадує складальну лінію. Конвеєр включає кілька різних стадій, вибір яких є фундаментальним при розробці мікроархітектури. Деякі з цих стадій включають вибір інструкцій, декодування інструкцій, виконання і запис результату. Деякі архітектури включають інші стадії, такі як доступ до пам'яті. Дизайн конвеєра — один з центральних питань проектування мікроархітектури.
Пристрої виконання також є ключовими для мікроархітектури. Вони включають арифметико-логічні пристрої, пристрої обробки чисел з рухомою комою, пристрої вибірки та зберігання, прогнозування розгалуження, паралелізм на рівні даних (SIMD). Ці блоки виробляють операції або обчислення процесора. Вибір числа блоків виконання, їх затримок, пропускної здатності та способу з'єднання пам'яті з системою також є мікроархітектурними рішеннями.
Проектні рішення рівня системи, такі як включати чи ні периферійні пристрої типу контролерів пам'яті, можуть вважатися частиною процесу розробки мікроархітектури, оскільки вони містять рішення за рівнем продуктивності і способам з'єднання цих периферійних пристроїв.
На відміну від архітектурного дизайну, де досягнення певного рівня продуктивності є головною метою, проектування мікроархітектури приділяє більшу увагу іншим обмеженням. Оскільки дизайн мікроархітектури прямо впливає на те, що відбувається в системі, увага повинна бути приділена наступним проблемам:
- Площа / вартість чипа
- Споживання енергії
- Складність логіки
- Простота з'єднань
- Технологічність
- Простота налагодження
- Тестованість.
Концепції мікроархітектури
У загальному випадку, всі ЦПУ, одночіпові мікропроцесори і багаточіпових реалізації виконують програми, виробляючи наступні кроки:
- Читання інструкції та її декодування
- Пошук всіх пов'язаних даних, необхідних для обробки інструкції
- Обробка інструкції
- Запис результатів
Ця послідовність виглядає просто, але ускладнюється тим фактом, що ієрархія пам'яті (де розташовуються інструкції і дані), яка включає в себе кеш, основну пам'ять та енергонезалежні пристрої зберігання, такі як жорсткі диски, завжди була повільніше самого процесора. Крок (2) часто привносить тривалі (за мірками ЦПУ) затримки, поки дані надходять з комп'ютерної шині. Значна частина досліджень присвячена розробкам, які дозволяють уникати таких затримок, наскільки це можливо. Протягом багатьох років головною метою було виконувати більше інструкцій паралельно, збільшуючи таким чином ефективну швидкість виконання програм. Ці зусилля викликають ускладнення логіки і структури схем. Спочатку ці техніки могли бути реалізовані тільки на дорогих мейнфреймах і суперкомп'ютерах внаслідок великого обсягу схем, необхідного для цього. У міру того, як напівпровідникова промисловість розвивалася, все більша кількість цих технік могло бути реалізовано в єдиному напівпровідниковому чипі.