Архітектура IA-32

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Введення 2

Технологія SIMD 4

Короткий огляд технологій SIMD 5

Технологія MMX 5

SSE 5

SSE2 6

SSE3 6

Мікроархітектура Intel NetBurst 7

Цілі, для яких була розроблена Мікроархітектура Intel NetBurst 7

Огляд конвеєра мікроархітектури Intel NetBurst 7

Блок початкового завантаження 8

Безладна ядро 9

Секція вилучень 9

Огляд блоку початкового завантаження конвеєра 11

Предвибірки 11

Декодер 11

Виконавчий кеш трас 11

Передбачення гілок 11

Огляд виконавчого ядра 13

Затримка інструкцій і продуктивність 13

Виконавчі блоки і вивідні порти 13

14

Кеші 15

Предвибірки даних 16

Плюси і мінуси програмної та апаратної передвибірки 16

Завантаження та зберігання 18

Управління зберіганням 18

Технологія Hyper-Threading 19

Ресурси процесора і технологія Hyper-Threading 20

Реплікованих ресурси 20

Розділені ресурси 20

Ресурси, що розділяються 20

Мікроархітектура конвеєра і технологія НТ 21

Блок початкового завантаження конвеєра 21

Виконавче ядро 21

Витяг 21

Список використаної літератури 22

Введення


У цій роботі проводитися огляд основних моментів необхідних для оптимізації програмного забезпечення для поточного покоління процесорів заснованих на технології IA-32, таких як Intel Pentium 4, Intel Xeon і Intel Pentium M. Робота дає базу для розуміння правильного підходу до кодування для технології IA-32.

Ключові моменти, що підвищують продуктивність процесорів поточного покоління на базі IA-32:

  • Розширення інструкцій SIMD підтримують технологію MMX, потокові розширення інструкцій SIMD (SSE), потокові розширення інструкцій SIMD другій редакції (SSE2) і потокові розширення інструкцій SIMD третьої редакції (SSE3)

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

  • Підтримка технології Hyper Threading

Процесори Intel Pentium 4 і Intel Xeon побудовані на мікроархітектурі NetBurst. Мікроархітектура процесора Intel Pentium M грунтується на балансі продуктивності і низького енергоспоживання.

Технологія SIMD

Один із шляхів до збільшення продуктивності процесора - це використання технології обчислень заснованої на тому, що одна команда оперує багатьма даними (single-instruction, multiple data (SIMD)).

Обчислення за допомогою SIMD (рисунок 1) представлені в архітектурі IA-32 технологією MMX.Технологія MMX дозволяє обчислень SIMD проводитися над упакованими цілими числами у вигляді байтів, слів і подвійних слів. Ці цілі міститися в наборі з восьми 64-бітових регістрах званих MMX регістрами (малюнок 2).

У процесорі Intel Pentium III технологія SIMD була розширена за допомогою потокових розширень SIMD (SSE). SSE дозволяє робити обчислення SIMD над операндами, що містять чотири упакованих елемента з плаваючою точкою одинарної точності. Ці операнди можуть зберігатися як в пам'яті, так і в одному з 128-бітових регістрів званих XMM регістрами (малюнок 2). SSE також розширює обчислювальні здатності SIMD, шляхом додавання додаткових 64-бітних MMX команд.

Малюнок 1 показує типову схему обчислень SIMD. Два блоки по чотири упакованих елемента даних (X 1, X 2, X 3, X 4 і Y 1, Y 2, Y 3, Y 4), що обробляються паралельно з допомогою однієї операцією над кожною парою елементів даних (X 1 і Y 1 , X 2 і Y 2, X 3 та Y 3 і X 4 і Y 4). Результати чотирьох паралельних обчислень сортуються в набір з чотирьох елементів даних.

Малюнок 1. Схема обчислень SIMD


У процесорах Pentium 4 і Intel Xeon модель обчислень SIMD була далі розширена за допомогою SSE2 і SSE3.

SSE2 працює з операндами, що зберігаються в пам'яті або в XMM регістрах. Технологія SSE2 розширює обчислення SIMD для роботи з упакованими елементами даних з плаваючою точкою подвійної точності і 128-бітними упакованими цілими числами. У SSE2 введені 144 додаткові команди для роботи з двома елементами даних з плаваючою точкою подвійної точності або над упакованими цілими числами у вигляді шістнадцяти байтів, восьми слів, чотирьох подвійних слів і двох четверні слів.

SSE3 покращує x87, SSE і SSE2 за допомогою додавання тринадцяти інструкцій, що дозволяють підвищити продуктивність додатків в специфічних областях. Таких як: обробка відео, комплексна арифметика синхронізація потоків. SSE3 доповнює SSE і SSE2 за допомогою команд асиметричною обробки даних SIMD, команд дозволяють горизонтальні обчислення, а так само команд дозволяють уникнути завантаження у кеш розділених ниток.

Повний набір технологій SIMD (MMX, SSE, SSE2, SSE3) в технології IA-32 дає можливість програмісту розробляти алгоритми, що поєднують операції над упакованими 64-бітними і 128-бітними цілими, і операндами з плаваючою точкою одинарної і подвійної точності.

Малюнок 2. Регістри SIMD


SIMD покращує виконання 3D графіки, розпізнавання мови, обробки зображень, наукових програм та програм задовольняють наступним характеристикам:

  • Внутрішня паралельність

  • Рекурсивний доступ до областей пам'яті

  • Локальні рекурсивні операції над даними

  • Контроль над потоком незалежних даних

Інструкції SIMD для роботи з числами з плаваючою точкою повністю підтримують стандарт IEEE 754 «для бінарної арифметики чисел з плаваючою точкою». Вони доступні у всіх режимах роботи процесора.

Технології SSE, SSE2 і MMX - це архітектурні доповнення архітектури IA-32. SSE і SSE2 також включають інструкції кешування і організації пам'яті, які можуть поліпшити використання кешу і продуктивність додатків.

Короткий огляд технологій SIMD

Технологія MMX

Технологія MMX грунтується на:

  • 64-бітових MMX-регістрах

  • підтримки операцій SIMD над упакованими цілими у вигляді байтів, слів і подвійних слів

Інструкції MMX корисні в мультимедійних і комунікаційних додатках

SSE

SSE грунтується на:

  • 128-бітних XMM-регістрах

  • 128-бітних типах даних, що містять чотири упакованих операнда з плаваючою точкою одинарної точності

  • інструкціях передвибірки даних

  • інструкціях зберігання протягом невизначеного терміну та інших інструкцій кешування і впорядкування пам'яті

  • додаткової підтримки 64-бітних цілих SIMD

Інструкції SSE корисні при обробці тривимірної геометрії, 3D-візуалізації, розпізнавання мови, а також для кодування і декодування відео.

SSE2

SSE2 додають наступне:

  • 128-бітний тип даних з двома упакованими операндами з плаваючою точкою подвійної точності

  • 128-бітові типи даних для цілочислових операцій SIMD над цілими у вигляді шістнадцяти байт, восьми слів, чотирьох подвійних слів або двох четверні слів.

  • Підтримку арифметики SIMD над 64-бітними цілочисельними операндами

  • Інструкції для конвертації між новими та існуючими типами даних

  • Додаткова підтримка перемішування даних

  • Додаткова підтримка операцій кешування і впорядкування пам'яті

Інструкції SSE2 корисні для обробки 3D графіки, кодування і декодування відео та шифрування.

SSE3

SSE3 додає наступне:

  • SIMD операції з плаваючою точкою для асиметричних і горизонтальних обчислень

  • Спеціальну 128-бітну завантажувальну посібник для уникнення поділу нитки кешу

  • x87 FPU - інструкцію для конвертації в ціле незалежно від FCW (floating-point control word)

  • інструкції для підтримки синхронізації потоків

Інструкції SSE3 можуть застосовуватися у наукових, відео та багатопоточних додатках.

Мікроархітектура Intel NetBurst

У цьому розділі описуються основні моменти мікроархітектури Intel NetBurst. Він дає технічну базу необхідну для розуміння оптимізаційних рекомендацій і правил кодування процесорів Intel Pentium 4 і Intel Xeon.

Мікроархітектура Intel NetBurst вона спроектована для досягнення високої продуктивності при цілочисельних обчисленнях і обчисленнях операндів з плаваючою точкою на високих частотах. Вона грунтується на наступних моментах:

  • гіперковейерная технологія дозволяє працювати на високих частотах (до 10 ГГц)

  • високопродуктивний, чотириразовий шинний інтерфейс для системної шини мікроархітектури Intel NetBurst

  • швидкісний движок для зниження затримок виконання цілочисельних інструкцій

  • спекулятивне разупорядкований виконання для підтримки паралелізму

  • суперскалярна видача для підтримки паралелізму

  • підтримка апаратного перейменування регістрів для виключення обмежень простору імен

  • 64-байтниє нитки кешу

  • апаратна предвибірки

Цілі, для яких була розроблена Мікроархітектура Intel NetBurst

Цілі, для яких була розроблена Мікроархітектура Intel NetBurst:

  • для забезпечення спадковості додатків IA-32 і додатків заснованих на SIMD на високопродуктивних системах

  • для оперування на високих тактових частотах і для масштабування високої продуктивності і високих тактових частот у майбутньому

Переваги мікроархітектури Intel NetBurst:

  • многоконвейерний дизайн дозволяє працювати на високих тактових частотах (різні частини кристала працюють з різними тактовими частотами)

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

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

Огляд конвеєра мікроархітектури Intel NetBurst

Конвеєр мікроархітектури Intel NetBurst складається з:

  • блоку початкового завантаження упорядкованих команд

  • безладного суперскалярного виконавчого ядра

  • блок вилучення упорядкованих команд

Блок початкового завантаження поставляє інструкцію в програмному порядку в безладне ядро. Воно вибирає і декодує інструкції IA-32. Декодовані інструкції переводяться в мікрокоманди. Основне завдання блоку початкового завантаження полягає в доставлянні безперервного потоку мікрокоманд у виконавче ядро ​​в програмному порядку.

Безладна ядро ​​жорстко переупорядочівает мікрокоманд, так що ті мікрокоманд, чиї вхідні дані готові (і мають доступні виконавчі ресурси) могли б бути виконані як можна швидше. Ядро може видавати кілька мікрооперацій за цикл.

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

Малюнок 3 відображає схему основних функціональних блоків конвеєра мікроархітектури Intel NetBurst. Нижче перераховані розділи проводять огляд кожного з блоків.

Малюнок 3. Мікроархітектура Intel NetBurst


Блок початкового завантаження

Блок початкового завантаження мікроархітектури Intel NetBurst складається з двох частин:

  • Блок вибірки / декодування

  • Виконавчий кеш трас

Він виконує наступні функції:

  • Предвибірки інструкцій IA-32 кращих для виконання

  • Вибірка необхідних інструкцій, які не були предвибрани

  • Декодування інструкцій в мікрокоманд

  • Генерація коду складних інструкцій та коду спеціального призначення

  • Доставка декодованих інструкцій з виконавчого кеша трас

  • Передбачення розгалужень на основі поліпшеного алгоритму

Блок початкового завантаження розроблений для уникнення двох проблем є джерелами затримок:

  • Зменшення часу, необхідного для декодування інструкцій отриманих з джерела

  • Зменшення непотрібного коду пов'язаного з розгалуження або точками розгалуження всередині нитки кешу

Інструкції декодуються і вибираються «переводить» движком. «Переводить» движок потім перетворить декодовані інструкції в послідовності мікрокоманд звані трасами. Далі траси поміщаються у виконавчий кеш трас.

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

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

Безладна ядро

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

Ядро спроектовано так, щоб організувати паралельне виконання. Воно може відправляти до шести мікрокоманд в порти виведення за цикл (малюнок 4). Зауважимо, що шість мікрокоманд перевершують потужність кеша трас і блоку вилучення. Велика потужність ядра зроблена, щоб не звертати увагу на навантаження більше трьох мікрокоманд і для досягнення більшої продуктивності видачі з допомогою гнучкості при видачі мікрокоманд в різні виконавчі порти.

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

Секція вилучень

Секція вилучень отримує результати виконаних мікрокоманд з виконавчого ядра і вибудовує їх у відповідності з оригінальним порядком у програмі. Для семантично правильного виконання, результати інструкцій IA-32 повинні бути відновлені в оригінальному порядку перед їх отриманням.

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

Секція вилучення так само спостерігає за розгалуження і відсилає оновлену інформацію про точки розгалуження в буфер точок розгалужень (BTB). Це дозволяє оновлювати історію розгалужень. Малюнок 3 відображає шляху часто го виконання всередині мікроархітектури Intel NetBurst, такі як виконавчі цикли, що взаємодіють з ієрархією рівнів кешу і системною шиною.

Наступні розділи дають більш детальний опис операцій блоку початкового завантаження і виконавчого ядра.

Огляд блоку початкового завантаження конвеєра

Наступна інформація про роботу блоку початкового завантаження буде корисна для забезпечення програмного забезпечення можливостями передвибірки, передбачення розгалужень та операціями для виконавчого кеша трас.

Предвибірки

Мікроархітектура Intel NetBurst використовує наступні механізми передвибірки:

  • Апаратний вибірник інструкцій, автоматично предвибірающій інструкції

  • Апаратний механізм, який автоматично вибирає дані та інструкції і поміщає їх в уніфікований кеш другого рівня

  • Механізм вибірки тільки даних складається з двох частин:

    1. апаратний механізм для вибірки суміжних ниток кеша в 128-байтним секторі, що містить дані необхідні у разі збою нитки, або необхідні для передвибірки ниток кешу

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

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

Декодер

Блок початкового завантаження мікроархітектури Intel NetBurst має один декодер, який декодує інструкції з максимальною частотою в одну інструкцію за такт. Деякі складні інструкції повинні підтримуватися за допомогою ROM-мікрокоду. Операції декодера пов'язані з кешем трас.

Виконавчий кеш трас

Виконавчий кеш трас (TC) - це основний кеш інструкцій у мікроархітектурі Intel NetBurst. Кеш трас зберігає декодовані інструкції (мікрокоманд) IA-32.

У реалізації процесорів Intel Pentium 4 і Intel Xeon, кеш трас може зберігати до 12 тисяч мікрокоманд і видавати до трьох мікрокоманд за цикл. Кеш трас не зберігає всі мікрокоманд необхідні для обробки у виконавчому ядрі. У деяких ситуаціях, виконавчому ядру необхідно виконати потік мікрокоду, замість трас мікрокоманд, що зберігаються в кеші трас.

Процесори Intel Pentium 4 і Intel Xeon оптимізовані для виконання часто-використовуваних IA-32 інструкцій, у той час як тільки деякі інструкції втягують у процес декодування ROM-мікрокоду.

Передбачення гілок

Передбачення гілок дуже важливо для продуктивності процесорів з великим конвеєром. Це дозволяє процесору почати роботу задовго до того як буде прискіпливо відомий результат розгалуження. Затримка при розгалуження - це розплата за неправильне передбачення галуження. Для процесорів Intel Pentium 4 і Intel Xeon затримка при правильному прогнозі може бути нульовою. Затримка ж при неправильному пророкуванні може бути безліч циклів, зазвичай вона дорівнює глибині конвеєра.

Передбачення гілок в мікроархітектурі Intel NetBurst зачіпає всі ближні розгалуження (умовні виклики, безумовні виклики, повернення і тупикові гілки). Але не зачіпає далекі переходи (далекі виклики, невизначені повернення, програмні переривання).


Механізми впроваджені для більш точного передбачення гілок і витрат на їх обробку:

  • Можливість динамічно пророкувати напрям і точку розгалуження, заснована на лінійному адресу інструкції, використовуючи буфер точок розгалуження (BTB)

  • Якщо немає можливості динамічного передбачення або воно не правильне, то існує можливість статичного передбачення результату заснованого на заміні мети: задня гілка береться за основну, а основна не береться.

  • Можливість передбачення адрес повернень, за допомогою 16-розрядного стека адрес повернень

  • Можливість будувати траси інструкцій по всій взятої гілки для уникнення розплати за неправильно передбачення

Статичний провісник. Як тільки інструкція розгалуження декодована, напрям гілки (вперед або назад) ставати відомим. Якщо BTB немає згадок про це розгалуження, статичний провісник робить пророцтво, грунтуючись на напрямку гілки. Механізм статичних пророкувань пророкує задні умовні цілі (наприклад, з негативним переміщенням, такі як гілки закінчуються циклом) як основні. Вперед спрямовані гілки передвіщаються як не основні.

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

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

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

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

Огляд виконавчого ядра

Виконавче ядро ​​розроблено для оптимізації загальної продуктивності шляхом більш ефективного управління виконанням простих ситуацій. Апаратне забезпечення спроектовано для виконання частих операцій в простих випадках як можна швидше, за рахунок нечасто виконуваних операцій. Деякі частини ядра можуть припускати, що поточний стан зберігається для можливості швидкого виконання схожих операцій. Якби цього не було, машина б гальмуватися. Прикладом такої конструкції може служити управління зберіганням-для-завантаження (store-to-load). Якщо завантаження передбачена залежною від зберігання, вона отримує дані з цього сховища і попередньо виконується. Якщо ж завантаження не залежить від зберігання, завантаження затримується до отримання реальних даних з пам'яті, потім вона виконується.

Затримка інструкцій і продуктивність

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

  • Вибір IA-32 інструкцій так, щоб вони були декодовані менше ніж у чотири мікрокоманд та / або мали менші затримки

  • Упорядкування IA-32 інструкцій для збереження доступного паралелізму з допомогою мінімізірованія ланцюжків довгою залежності і перекриття затримок довгих інструкцій

  • Упорядкування інструкцій так, щоб їх операнди були готові і їх виконавчі блоки і вивідні порти були вільні до моменту досягнення ними диспетчера

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

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

Виконавчі блоки і вивідні порти

На кожному циклі ядро ​​може посилати мікрокоманд в один або декілька з чотирьох портів виведення. На мікроархітектурном рівні операції зберігання діляться на дві групи:

  1. операції зберігання даних

  2. операції зберігання адрес

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

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

Порт 1. У першій частині циклі перший порт може вивести або одну з виконавчих операцій з плаваючою точкою (всі виключні зсувні операції з плаваючою точкою, всі операції SIMD), або одну арифметичну АЛУ мікрокоманду. У другій частині циклу порт може вивести одну схожу мікрокоманду АЛП.

Порт 2. Цей порт забезпечує висновок однієї завантажувальної операції за цикл.

Порт 3. Цей порт забезпечує висновок однієї операції збереження адреси за цикл.

Загальна вивідна потужність може варіюватися від нуля до шести мікрокоманд за цикл. Кожен конвеєр складається з декількох виконавчих блоків. Мікрокоманда поміщається в блок конвеєра, що відповідає правильному типу операцій. Наприклад, цілочисельний АЛУ і блок виконання операцій з плаваючою точкою (суматор, множник або дільник) можуть розділяти один конвеєр.

Малюнок 4. Виконавчі блоки і порти безладного ядра

Кеші

Мікроархітектура Intel NetBurst підтримує до трьох рівнів вбудованого кешу. Принаймні, два рівні кеша вбудовані в процесори, засновані на мікроархітектурі Intel NetBurst. Процесори Intel Xeon MP можуть містити кеш третього рівня.

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

Рівні в ієрархії кешу не взаімовключающіе. Факт того, що нитка знаходитися на рівні N не означає, що вона так само знаходитися на рівні N +1. Всі кеші використовують алгоритм замін псевдо-НЧІ (найменш часто використовувані).

Таблиця 1 наводить порівняльні параметри кешей всіх рівнів процесорів Pentium 4 і Xeon.

Таблиця 1. Параметри кешу процесорів Pentium 4 і Intel Xeon


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

Інтерфейс системної шини підтримує роботу з масштабованої частотою шини і досягає ефективної швидкості в чотири рази перевищує швидкість шини. Маршрут від входу в шину і назад займає дванадцять процесорних циклів, і від шести до дванадцяти циклів для доступу до пам'яті, якщо шина не перевантажена. Кожен цикл шини відповідає кільком циклам процесора. Ставлення тактової частоти процесора до масштабованої тактовій частоті системної шини, якщо один цикл шини. Наприклад, один цикл шини з частотою 100 Мгц еквівалентний п'ятнадцяти циклом процесора в 1,5 ГГц процесорі.

Предвибірки даних

Процесори Intel Xeon і Pentium 4 мають два механізми передвибірки даних: програмно керована предвибірки і автоматична апаратна предвибірки.

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

Програмно керована предвибірки даних може принести вигоду в наступних ситуаціях:

  • коли блок команд доступу до пам'яті в додатку дозволяє програмісту перекрити затримки доступу до пам'яті

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

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

Інструкції передвибірки SSE мають різні характери поведінки в залежності від рівня кешу і реалізації процесора. Наприклад, в процесорі може бути реалізована постійна предвибірки, шляхом повернення даних в рівень кеша, найближчий до ядра процесора. Такий метод призводить до наступного:

  • мінімізує порушення тимчасових даних в інших рівнях кешу

  • попереджає необхідність доступу до внекрістальним кешах, що може збільшити реалізовану потужність щодо неправильного завантаження, яка перевантажує дані у всі рівні кешу

Ситуації, в яких не бажано використовувати програмно керовану предвибірки:

  • у випадках, коли запити визначені, предвибірки призводить до збільшення вимог запитів

  • у разі передвибірки далеко вперед, вона може призвести до витіснення кешованих даних з кеша раніше, ніж вони будуть використані

  • занадто близька предвибірки може знизити можливість до перекриття затримок доступу до пам'яті та виконання

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

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

Плюси і мінуси програмної та апаратної передвибірки

Програмна предвибірки має такі характеристики:

  • обробляє незвичайні моделі доступу, які не перехоплюються апаратним предвиборщіком

  • обробляє предвибірки коротких масивів і не має апаратного початкової затримки перед ініціацією вибірок

  • повинна бути додана в кожен новий код, так що вона не відноситься до вже запущених застосунків

Апаратна предвибірки має такі характеристики:

  • працює з уже існуючими додатками

  • не вимагає доброго знання інструкцій передвибірки

  • вимагає постійних моделей доступу

  • попереджає перевантаження інструкцій і вивідних портів

  • має початкову затримку на налаштування апаратного предвиборщіка і початок ініціації вибірок

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

Завантаження та зберігання

У процесорах Intel Xeon і Pentium 4 реалізовані наступні механізми збільшення швидкості обробки операцій з пам'яттю:

  • спекулятивне виконання завантажень

  • реорганізація завантажень з урахуванням завантажень і зберігань

  • буферизація записів

  • керування потоком даних зі сховищ в залежні завантаження

продуктивність може бути збільшена не за допомогою ширини каналу виведення пам'яті, а буферизацією ресурсів надаються процесором. За однією операції завантаження та зберігання може бути видано зі станції резервування портів пам'яті за цикл. Для того, щоб бути вміщеній в станцію зберігання, для кожної операції з пам'яттю повинен бути доступний буферізірованний вхід. Є 48 завантажувальних і 24 зберігають буфера. Ці буфера містять мікрокоманд та адресну інформацію до тих пір, поки операція не виконана, вилучено та переміщена.

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

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

Промах кеша для завантаження не запобігає інші завантаження від видачі і завершення. Процесори Intel Xeon і підтримують до 4 (8 для Intel Xeon і Pentium 4 з сигнатурою CPUID відносяться до сімейства 15, моделі 3) виняткових промаху завантаження, вироблених, як кешем в кристалі, так і пам'яттю.

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

Управління зберіганням

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

  • Черговість: дані, які направляються до завантаження, згенеровані програмно раніше виконаних зберіганням

  • Розмірність: завантажувані байти повинні бать підмножиною (включаючи правильне підмножина, що одне і те ж) байтів сховища

  • Вирівнювання: сховище не може обертатися всередині кордонів нитки кешу, і лінійний адреса завантаження повинен бути ідентичний адресою сховища

Технологія Hyper-Threading

Технологія Intel Hyper-Threading (HT) підтримується специфічними членами сімейств Intel Xeon (Nocona) і Intel Pentium (Prescott). Технологія дозволяє додаткам користуватися перевагами паралелізму, що подаються на рівні завдань або потоків декількома логічними процесорами всередині одного фізичного. У своїй першій реалізації в процесорі Intel Xeon, НТ представляла один фізичний процесор як два логічних. Ці два логічних процесора мають повний набір архітектурних регістрів, розділяючи ресурси одного фізичного процесора. Маючи архітектуру двох процесорів, НТ вбудована в процесор виглядає як два процесори для додатків, операційних систем і програмного коду.

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

Малюнок 6 показує типову шинно-засновану симетричну багатопроцесорну систему (SMP), засновану на процесорах підтримують технологію НТ. Кожний логічний процесор може виконувати програмний потік, дозволяючи двом потокам виконуватися одночасно в одному фізичному процесорі.

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

Малюнок 5. Технологія Hyper-Threading на SMP

Продуктивний потенціал НТ грунтується:

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

  • Можливості до використання виконавчих ресурсів кристала на більш високому рівні, ніж коли один потік споживає всі виконавчі ресурси

Ресурси процесора і технологія Hyper-Threading

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

Реплікованих ресурси

Архітектурна модель дублюються для кожного логічного процесора. Архітектурна модель складається з регістрів використовуються операційною системою і програмного коду контролюючого взаємодію програм і зберігання даних для обчислень. Ця модель включає вісім регістрів спеціального призначення, контролюючі регістри, регістри налагодження і т.д. За винятком MTRRs - регістрів (memory type range registers) і ресурсів моніторингу за продуктивністю

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

На додаток реплицируются кілька буферів (наприклад, двох вхідні буфери потокових інструкцій), для зниження навантаження.

Розділені ресурси

Кілька буферів діляться навпіл між процесорами. Вони відносяться до розділеним ресурсів. Причини цього поділу:

  • Операційна рівнодоступність

  • Можливість операцій одного логічного процесора не залежати від завислих операцій іншого логічного процесора

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

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

У разі буферів завантаження та зберігання, розподіл так само проводитися в легкому варіанті, для отримання реорганізації пам'яті для кожного логічного процесора і для визначення помилок організації пам'яті.

Ресурси, що розділяються

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

Мікроархітектура конвеєра і технологія НТ

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

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

Блок початкового завантаження конвеєра

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

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

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

Виконавче ядро

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

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

Витяг

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

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

Список використаної літератури

  1. IA-32 Intel ® Architecture Optimization Reference Manual

  2. www.intel.com

  3. www.iXTB.com

  4. www.allintel.ru

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
81.1кб. | скачати


Схожі роботи:
Архітектура
Архітектура ЕОМ
Архітектура Нідерландів
Рекреаційна архітектура
Архітектура Росії
Архітектура Берліна
Архітектура мостів
Архітектура Візантії
Китайська архітектура
© Усі права захищені
написати до нас