Вступ 3
Технологія SIMD 4
Короткий огляд технологій SIMD 5 p>
Технологія MMX 5 p>
SSE 5 p>
SSE2 6 p>
SSE3 6
Мікроархітектура Intel NetBurst 7 p>
Цілі, для яких була розроблена Мікроархітектура Intel NetBurst 7 p>
Огляд конвеєра мікроархітектури Intel NetBurst 7 p>
Блок початкового завантаження 8 p> < p> Безладна ядро 9 p>
Секція вилучень 9
Огляд блоку початкового завантаження конвеєра 11 p>
предвибірки 11 p>
Декодер 11 p>
Виконавчий кеш трас 11 p>
Передбачення гілок 11
Огляд виконавчого ядра 13 p>
Затримка інструкцій і продуктивність 13 p>
Виконавчі блоки і вивідні порти 13
Кеші 15
Предвибірки даних 16 p>
Плюси і мінуси програмної та апаратної предвибірки 16
Завантаження і зберігання 18 p>
Управління зберіганням 18
Технологія Hyper-Threading 19
Ресурси процесора і технологія Hyper-Threading 20 p>
реплікованих ресурси 20 p>
Розділені ресурси 20 p>
Ресурси, що розділяються 20
Мікроархітектура конвеєра і технологія НТ 21 p>
Блок початкового завантаження конвеєра 21 p>
Виконавче ядро 21 p>
Витяг 21
Список використаної літератури 22 p>
Введення p>
У цій роботі проводиться огляд основних моментів необхідних дляоптимізації програмного забезпечення для поточного покоління процесорівзаснованих на технології IA-32, таких як Intel Pentium 4, Intel Xeon і
Intel Pentium M. Робота дає базу для розуміння правильного підходу докодування для технології IA-32. p>
Ключові моменти, що підвищують продуктивність процесорів поточногопокоління на базі IA-32: p>
. Розширення інструкцій SIMD що підтримують технологію MMX, потокові розширення інструкцій SIMD (SSE), потокові розширення інструкцій p>
SIMD другій редакції (SSE2) і потокові розширення інструкцій SIMD третій редакції (SSE3) p>
. Мікроархітектури що дозволяють виконання більшої кількості інструкцій на високих тактових частотах, ієрархія високошвидкісних p>
кешей і можливість одержувати дані з високошвидкісної системної шини p>
. Підтримка технології Hyper Threading p>
Процесори Intel Pentium 4 і Intel Xeon побудовані на мікроархітектурі
NetBurst. Мікроархітектура процесора Intel Pentium M грунтується набалансі продуктивності та низького енергоспоживання. p>
Технологія SIMD p>
Один із шляхів до збільшення продуктивності процесора - цевикористання технології обчислень заснованої на тому, що одна командаоперує багатьма даними (single-instruction, multiple data (SIMD )). p>
Обчислення за допомогою SIMD (малюнок 1) представлені в архітектурі IA-32технологією MMX.Технологія MMX дозволяє обчислень SIMD проводитися надупакованими цілими числами у вигляді байтів, слів і подвійних слів. Ці ціліутримуватися в наборі з восьми 64-бітових регістрах званих MMXрегістрами (малюнок 2). p>
У процесорі Intel Pentium III технологія SIMD була розширена за допомогоюпотокових розширень SIMD (SSE). SSE дозволяє робити обчислення SIMDнад операндами, що містять чотири упакованих елемента з плаваючою точкоюодинарної точності. Ці операнди можуть зберігатися як у пам'яті, так і водному з 128-бітових регістрів званих XMM регістрами (малюнок 2). SSEтакож розширює обчислювальні здатності SIMD, шляхом додаваннядодаткових 64-бітових MMX команд. p>
Малюнок 1 показує типову схему обчислень SIMD. Два блоки по чотириупакованих елемента даних (X1, X2, X3, X4 і Y1, Y2, Y3, Y4),оброблюваних паралельно за допомогою однієї операцією над кожною пароюелементів даних (X1 і Y1, X2 і Y2, X3 і Y3 і X4 і Y4). Результати чотирьохпаралельних обчислень сортуються в набір з чотирьох елементів даних. p>
p>
Малюнок 1. Схема обчислень SIMD p>
В процесорах Pentium 4 і Intel Xeon модель обчислень SIMD була далірозширена за допомогою SSE2 і SSE3. p>
SSE2 працює з операндами, що зберігаються в пам'яті або в XMM регістрах.
Технологія SSE2 розширює обчислення SIMD для роботи з упакованимиелементами даних з плаваючою точкою подвійної точності і 128-бітнимиупакованими цілими числами. У SSE2 введені 144 додаткові команди дляроботи з двома елементами даних з плаваючою точкою подвійної точності абонад упакованими цілими числами у вигляді шістнадцяти байтів, восьми слів,чотирьох подвійних слів і двох четверні слів. p>
SSE3 покращує x87, SSE і SSE2 за допомогою додавання тринадцяти інструкцій,що дозволяють підвищити продуктивність додатків в специфічних областях.
Таких як: обробка відео, комплексна арифметика синхронізація потоків.
SSE3 доповнює SSE і SSE2 за допомогою команд асиметричною обробки даних
SIMD, команд дозволяють горизонтальні обчислення, а так само команддозволяють уникнути завантаження у кеш розділених ниток. p>
Повний набір технологій SIMD (MMX, SSE, SSE2, SSE3) в технології IA-32дає можливість програмісту розробляти алгоритми, що поєднують операціїнад упакованими 64-бітними і 128-бітними цілими, і операндами з плаваючоюточкою одинарної і подвійної точності. p>
p>
Малюнок 2. Регістри SIMD p>
SIMD покращує виконання 3D графіки, розпізнавання мови, обробкизображень, наукових програм та програм задовольняють наступнимхарактеристиками: p>
. Внутрішня паралельність p>
. Рекурсивний доступ до областей пам'яті p>
. Локальні рекурсивні операції над даними p>
. Контроль над потоком незалежних даних p>
Інструкції SIMD для роботи з числами з плаваючою точкою повністюпідтримують стандарт IEEE 754 «для бінарної арифметики чисел з плаваючоюточкою ». Вони знаходяться у всіх режимах роботи процесора. P>
Технології SSE, SSE2 і MMX - це архітектурні додатки архітектури IA-
32. SSE і SSE2 також включають інструкції кешування і організації пам'яті,які можуть поліпшити використання кешу і продуктивність додатків. p>
Короткий огляд технологій SIMD p>
Технологія MMX p>
Технологія MMX грунтується на: p>
. 64-бітових MMX-регістрах p>
. підтримки операцій SIMD над упакованими цілими у вигляді байтів, слів і подвійних слів p>
Інструкції MMX корисні в мультимедійних і комунікаційних додатках p>
SSE p>
SSE грунтується на: p>
. 128-бітових XMM-регістрах p>
. 128-бітових типах даних, що містять чотири упакованих операнда з плаваючою точкою одинарної точності p>
. інструкціях предвибірки даних p>
. інструкціях зберігання протягом невизначеного терміну та інших інструкцій кешування і впорядкування пам'яті p>
. додаткову підтримку 64-бітних цілих SIMD p>
Інструкції SSE корисні при обробці тривимірної геометрії, 3D-рендеринга,розпізнавання мови, а також для кодування та декодування відео. p>
SSE2 p>
SSE2 додають наступне: p>
. 128-бітний тип даних з двома упакованими операндами з плаваючою точкою подвійної точності p>
. 128-бітові типи даних для цілочисельних операцій SIMD над цілими у вигляді шістнадцяти байт, восьми слів, чотирьох подвійних слів або двох четверні слів. P>
. Підтримку арифметики SIMD над 64-бітними цілочисельними операндами p>
. Інструкції для конвертації між новими та існуючими типами даних p>
. Додаткова підтримка перемішування даних p>
. Додаткова підтримка операцій кешування і впорядкування пам'яті p>
Інструкції SSE2 корисні для обробки 3D графіки, кодування ідекодування відео та шифрування. p>
SSE3 p>
SSE3 додає наступне: p>
. SIMD операції з плаваючою точкою для асиметричних і горизонтальних обчислень p>
. Спеціальну 128-бітну завантажувальну інструкцію для уникнення поділу нитки кеша p>
. x87 FPU - інструкцію для конвертації в ціле незалежно від FCW p>
(floating-point control word) p>
. інструкції для підтримки синхронізації потоків p>
Інструкції SSE3 можуть застосовуватися в наукових, відео та багатопоточнихдодатках. p>
Мікроархітектура Intel NetBurst p>
У цьому розділі описуються основні моменти мікроархітектури Intel
NetBurst. Він дає технічну базу необхідну для розумінняоптимізаційних рекомендацій і правил кодування процесорів Intel Pentium
4 і Intel Xeon. P>
Мікроархітектура Intel NetBurst вона спроектована для досягнення високоїпродуктивності при цілочисельних обчисленнях і обчисленнях операндів зплаваючою точкою на високих частотах. Вона грунтується на наступнихмоментах: p>
. гіперковейерная технологія дозволяє працювати на високих частотах p>
(до 10 ГГц) p>
. високопродуктивний, чотириразовий шинний інтерфейс для системної шини мікроархітектури Intel NetBurst p>
. швидкісний движок для зниження затримок виконання цілочисельних інструкцій p>
. спекулятивне разупорядоченное виконання для підтримки паралелізму p>
. суперскалярна видача для підтримки паралелізму p>
. підтримка апаратного перейменування регістрів для виключення обмежень простору імен p>
. 64-байтним нитки кеша p>
. апаратна предвибірки p>
Цілі, для яких була розроблена Мікроархітектура Intel NetBurst p>
Цілі, для яких була розроблена Мікроархітектура Intel NetBurst: p>
. для забезпечення спадковості додатків IA-32 та програм заснованих на SIMD на високопродуктивних системах p>
. для операції на високих тактових частотах і для масштабування високої продуктивності і високих тактових частот в майбутньому p>
Переваги мікроархітектури Intel NetBurst: p>
. многоконвейерний дизайн дозволяє працювати на високих тактових частотах (різні частини кристала працюють з різними тактовими частотами) p>
. конвеєр, оптимізований для обробки часто виконуваних інструкцій (часто виконувані інструкції при звичайних умовах ефективно декодуються і виконуються з меншими затримками) p>
. впровадження спеціальних технік для виправлення зависання конвеєра. p>
Серед них: паралельне виконання, буферизація і спекуляція. p>
Мікроархітектура виконує інструкції динамічно і безладно, так що час, який необхідний для виконання кожної окремої інструкції не завжди може бути визначено. p>
Огляд конвеєра мікроархітектури Intel NetBurst p>
Конвеєр мікроархітектури Intel NetBurst складається з: p>
. блоку початкового завантаження впорядкованих команд p>
. безладного суперскалярної виконавчого ядра p>
. блок вилучення впорядкованих команд p>
Блок початкового завантаження поставляє інструкцію в програмному порядку вбезладне ядро. Воно вибирає і декодує інструкції IA-32.
Декодувати інструкції переводяться в мікрокоманд. Основне завдання блокупочаткового завантаження полягає в доставлених безперервного потокумікрокоманд у виконавче ядро в програмному порядку. p>
Безладна ядро жорстко переупорядочівает мікрокоманд, так що тімікрокоманд, чиї вхідні дані готові (і мають доступні виконавчіресурси) могли б бути виконані як можна швидше. Ядро може видаватикілька мікрооперацій за цикл. p>
Секція вилучення переконується, що результати обробки виробились вправильному порядку і що правильні архітектурні режими поновлені. p>
Малюнок 3 відображає схему основних функціональних блоків конвеєрамікроархітектури Intel NetBurst. Нижче перераховані розділи проводять оглядкожного з блоків. p>
p>
Малюнок 3. Мікроархітектура Intel NetBurst p>
Блок початкового завантаження p>
Блок початкового завантаження мікроархітектури Intel NetBurst складається з двохчастин: p>
. Блок вибірки/декодування p>
. Виконавчий кеш трас p>
Він виконує такі функції: p>
. Предвибірки інструкцій IA-32 бажаних для виконання p>
. Вибірка необхідних інструкцій, які не були предвибрани p>
. Декодування інструкцій в мікрокоманд p>
. Генерація коду складних інструкцій та коду спеціального призначення p>
. Доставка декодувати інструкцій з виконавчого кешу трас p>
. Передбачення розгалужень на основі поліпшеного алгоритму p>
Блок початкового завантаження розроблений для уникнення двох проблем які єджерелами затримок: p>
. Зменшення часу необхідного для декодування інструкцій отриманих з джерела p>
. Зменшення непотрібного коду пов'язаного з розгалуження або точками розгалуження всередині нитки кеша p>
Інструкції декодуються і вибираються «переводять» движком. «Переводить»движок потім перетворить декодувати інструкції в послідовностімікрокоманд звані трасами. Далі траси поміщаються у виконавчийкеш трас. p>
Виконавчий кеш трас зберігає мікрокоманд на шляху виконання потокупрограми, де результати розгалужень у коді вже інтегровані в ту ж нитку
Кеша. Це збільшує потік інструкцій з кеша і дозволяє використовуватиОб'єм кешу більш ефективно, тому що немає необхідності зберігати в ньомуінструкції, які відгалузилися і ніколи не будуть опрацьовані. p>
Кеш трас може доставляти до трьох мікрокоманд до ядра за такт.
Виконавчих кеш трас і «переводить» движок мають кооперованихмеханізм пророкування гілок. Точки розгалужень передбачається на основі їхлінійного адреси (використовуючи логіку пророкування розгалужень і вибірок) такскоро, як це можливо. Точки розгалужень беруться з виконавчого кешутрас, якщо вони були кешовані, або з ієрархії пам'яті. Інформація
«Переводить» движка про розгалуження використовується при формуванні трас понайкращим маршрутами. p>
Безладна ядро p>
Можливість ядра виконувати інструкції без порядку - ключовий фактор дляпідтримки паралелізму. Цей блок дозволяє процесору переупорядочіватьінструкції так, що якщо один мікрокоманд очікує дані або необхіднуресурс, інша мікрокоманд, що з'явилася пізніше, у програмі може бутивиконана. Це тягне за собою те, що коли частина конвеєра вимушенозатримується, ця затримка може бути перекрита за рахунок інших операцій,виконуються паралельно, чи виконанням мікрокоманд з черги в буфері. p>
Ядро спроектовано так, щоб організувати паралельне виконання. Вономоже відправляти до шести мікрокоманд в порти виводу за цикл (малюнок 4).
Зазначимо, що шість мікрокоманд перевершують потужність кешу трас та блокувилучення. Велика потужність ядра зроблена, щоб не звертати увагу нанавантаження більше трьох мікрокоманд і для досягнення більшої продуктивностівидачі з допомогою гнучкості при видачі мікрокоманд в різні виконавчіпорти. p>
Більшість виконавчих блоків ядра можуть починати виконання новоїмікрокоманд кожен цикл, так що декілька інструкцій можуть бути виконаніодночасно в кожному блоці конвеєра. Деякі з інструкцій арифметико -логічного пристрою (ALU) можуть виконуватися двічі за цикл, багато зінструкцій обробки даних з плаваючою точкою обробляються за два цикли.
Нарешті, мікрокоманд можуть бути розпочаті виконуватися поза програмногопорядку, як тільки їх вхідні дані готові і доступні ресурси. p>
Секція вилучень p>
Секція вилучень отримує результати виконаних мікрокоманд звиконавчого ядра і вибудовує їх у відповідності з оригінальнимпорядком у програмі. Для семантично правильного виконання, результатиінструкцій IA-32 повинні бути відновлені в оригінальному порядку перед їхвитягом. p>
Коли мікрокоманд завершена і її результати записані за призначенням, вонавитягується. За цикл можуть бути вилучені три мікрокоманд.
Переупорядочівающій буфер (ROB) - це блок в процесорі якийбуферізірует завершені мікрокоманд, оновлює їх архітектурний вигляд івиробляє впорядкування у виняткових ситуаціях. p>
Секція вилучення так само спостерігає за розгалужень і відсилає оновленуінформацію про точки розгалуження в буфер точок розгалужень (BTB). Це дозволяєоновлювати історію розгалужень. Малюнок 3 відображає шляхи часто го виконанняусередині мікроархітектури Intel NetBurst, такі як виконавчі цикли,взаємодіють з ієрархією рівнів кешу і системною шиною. p>
Наступні розділи дають більш детальний опис операцій блоку початковійзавантаження та виконавчого ядра. p>
Огляд блоку початкового завантаження конвеєра p>
Наступна інформація про роботу блоку початкового завантаження буде корисна длязабезпечення програмного забезпечення можливостями предвибірки,пророкування розгалужень та операціями для виконавчого кешу трас. p>
предвибірки p>
Мікроархітектура Intel NetBurst використовує наступні механізмипредвибірки: p>
. Апаратний виборщик інструкцій, автоматично предвибірающій інструкції p>
. Апаратний механізм, який автоматично вибирає дані та інструкції і поміщає їх в уніфікований кеш другого рівня p>
. Механізм вибірки тільки даних складається з двох частин: p>
1. апаратний механізм для вибірки суміжних ниток кеша в 128 - байтним секторі, що містить дані, необхідні у разі збою нитки, або необхідні для предвибірки ниток кеша p>
2. програмно контрольований механізм, що вибирає дані і поміщають їх у кеш, який використовує інструкції предвибірки p>
Апаратний виборщик інструкцій читає інструкції по шляху, передбаченимв буфері точок розгалуження (BTB), в потокові буфери інструкцій. Данізчитуються в 32-байтним блоки, починаючи з а?? реса точки. Другий і третіймеханізм будуть розглянуті пізніше. p>
Декодер p>
Блок початкового завантаження мікроархітектури Intel NetBurst має одиндекодер, який декодує інструкції з максимальною частотою в однуінструкцію за такт. Деякі складні інструкції повинні підтримуватися здопомогою ROM-мікрокоду. Операції декодера пов'язані з кешем трас. P>
Виконавчий кеш трас p>
Виконавчий кеш трас (TC) - це основний кеш інструкцій умікроархітектурі Intel NetBurst. Кеш трас зберігає декодувати інструкції
(мікрокоманд) IA-32. p>
У реалізації процесорів Intel Pentium 4 і Intel Xeon, кеш трас можезберігати до 12 тисяч мікрокоманд і видавати до трьох мікрокоманд за цикл. Кештрас не зберігає всі мікрокоманд необхідні для обробки у виконавчомуядрі. За певних обставин, виконавчому ядра необхідно виконатипотік мікрокоду, замість трас мікрокоманд, що зберігаються в кеші трас. p>
Процесори Intel Pentium 4 і Intel Xeon оптимізовані для виконаннячасто-використовуваних IA-32 інструкцій, у той час як тільки деякіінструкції втягують у процес декодування ROM-мікрокоду. p>
Передбачення гілок p>
Передбачення гілок дуже важливо для продуктивності процесорів звеликим конвеєром. Це дозволяє процесору почати роботу задовго до тогояк буде прискіпливо відомий результат розгалуження. Затримка при розгалуження --це розплата за неправильне пророкування розгалуження. Для процесорів Intel
Pentium 4 і Intel Xeon затримка при правильному прогнозі може бутинульовий. Затримка ж при неправильному прогнозі може бути безлічциклів, звичайно вона дорівнює глибині конвеєра. p>
Передбачення гілок в мікроархітектурі Intel NetBurst торкається всіхближні розгалуження (умовні виклики, безумовні виклики, повернення ітупикові гілки). Але не зачіпає далекі переходи (дальні виклики,невизначені повернення, програмні переривання). p>
Механізми впроваджені для більш точного передбачення гілок і витрат на їхобробку: p>
. Можливість динамічно пророкувати напрям і точку розгалуження, заснована на лінійному адресу інструкції, використовуючи буфер точок розгалуження (BTB) p>
. Якщо немає можливості динамічного передбачення або воно не правильне, то існує можливість статичної пророкування результату заснованого на заміні цілі: задня гілка береться за основну, а основна не береться. P>
. Можливість передбачення адрес повернень, за допомогою 16-розрядного стека адрес повернень p>
. Можливість будувати траси інструкцій по всій взятої гілки для уникнення розплати за неправильно пророкування p>
Статичний провісник. Як тільки інструкція розгалуження декодувати,напрям галузі (вперед або назад) ставати відомим. Якщо BTB немаєзгадок про це розгалуження, статичний провісник робитьпрогноз, грунтуючись на напрямку гілки. Механізм статичнихпророкувань пророкує задні умовні цілі (наприклад, з негативнимпереміщенням, такі як гілки закінчуються циклом) як основні. Впередспрямовані гілки передбачається як не основні. p>
Для використання переваг передніх-не-основних і задніх-основнихстатичних прогнозів, код повинен бути впорядкований так, щобнебажані цілі знаходилися в передніх гілках. p>
Буфер точок розгалужень. Якщо доступна історія розгалужень, процесор можепередбачити підсумок розгалуження навіть раніше, ніж інструкція розгалуження будедекодувати. Процесор використовує таблицю історій розгалужень і BTB дляпророкування напрямку розгалужень, грунтуючись на лінійному адресуінструкції. Як тільки гілку вилучена, BTB оновлює адреси пунктів. P>
Стек повернення. Повернення відбуваються завжди. Але з тих пір, як процедураможе бути викликана з кількох місць, технологія передбачення однієї точкине задовольняє потреби. Процесори Intel Pentium 4 і Intel Xeon стекповернень, який може передбачати адреса повернення, для декількох місцьвиклику процедури. Це збільшує вигоду від використання розгорнутихциклів містять виклики функції. Це так само послаблює необхідністьвикористання ближніх процедур, тому що зменшена розплата за повернення здалеких процедур. p>
Навіть якщо напрямок і адреса розгалуження правильно передбачені, взятагілка може знизити паралелізм в звичайних процесорах. Провісникрозгалужень дозволяє гілки та її цілі співіснувати в одній нитки кешу трас,максимізуючи доставку інструкцій з блоку початкового завантаження. p>
Огляд виконавчого ядра p>
Виконавче ядро розроблено для оптимізації загальної продуктивностішляхом більш ефективного управління виконанням простих ситуацій.
Апаратне забезпечення спроектовано для виконання частих операцій впростих випадках як можна швидше, за рахунок нечасто виконуваних операцій.
Деякі частини ядра можуть припускати, що поточний стан зберігаєтьсядля можливості швидкого виконання подібних операцій. Якщо б цього небуло, машина б гальмуватися. Прикладом такої конструкції може служитиуправління зберіганням-для-завантаження (store-to-load). Якщо завантаженняпередбачена залежною від зберігання, вона отримує дані з цього сховища іпопередньо виконується. Якщо ж завантаження не залежить від зберігання,завантаження затримується до отримання реальних даних з пам'яті, потім вонавиконується. p>
Затримка інструкцій і продуктивність p>
суперскалярної виконавче ядро містить апаратні ресурси, якіможуть виконувати безліч мікрооперацій паралельно. Можливості ядра привикористанні доступного паралелізму виконавчих блоків можуть бутиполіпшені підтримкою програмним забезпеченням наступних можливостей: p>
. Вибір IA-32 інструкцій так, щоб вони були декодувати менше ніж у чотири мікрокоманд та/або мали менші затримки p>
. Упорядкування IA-32 інструкцій для збереження доступного паралелізму за допомогою мінімізірованія ланцюжків довгою залежності і перекриття затримок довгих інструкцій p>
. Упорядкування інструкцій так, щоб їх операнди були готові і їх виконавчі блоки і вивідні порти були вільні до моменту досягнення ними диспетчера p>
Цей розділ розглядає розподіл портів, затримки виробленнярезультатів і затримок висновку (так само пов'язані з продуктивності).
Ці концепції формують основу для допомоги програмного забезпечення ввпорядкування інструкцій для збільшення паралельно виконуванихмікрокоманд. Порядок команд що поставляються в ядро процесора далі надходитьу відання ресурсів машинного диспетчера. p>
Виконавче ядро - це блок, який реагує на постійно змінюєтьсяситуацію в машині, реорганізуємо мікрокоманд для більш швидкої обробки абовідкладаючи їх через зайнятість або обмеженості ресурсів.
Переупорядочівающіе інструкції в програмному забезпеченні дозволяють більшефективно використовувати апаратні засоби. Деякі блоки не маютьконвеєрів (мається на увазі, що мікрокоманд не можуть бути розміщені впослідовних циклах і їх продуктивність менше однієї мікрокомандза цикл). Кількість мікрокоманд асоційованих з кожною інструкцієюдозволяє вибирати інструкції для генерації. Всі мікрооперації,виробляються ROM-мікрокоду, викликають екстрену навантаження. p>
Виконавчі блоки і вивідні порти p>
На кожному циклі ядро може посилати мікрокоманд в один або декілька зчотирьох портів виводу. На мікроархітектурном рівні операції зберіганняділяться на дві групи: p>
1. операції зберігання даних p>
2. операції зберігання адрес p>
Чотири порти, через які мікрокоманд виводяться у виконавчі блокиі службовці для операцій завантаження і зберігання показані на малюнку 4.
Деякі порти можуть виводити до двох мікрокоманд за такт. Вони позначеніяк виконавчі блоки подвійної швидкості. p>
Порт 0. У першій половині циклу, нульовий порт може вивести або однузсувне мікрокоманд з плаваючою точкою (зсув стека для плаваючої точки,обмін між операндами з плаваючою точкою або збереження даних з плаваючоюкрапкою), або одну з мікрокоманд арифметико-логічного пристрою
(арифметичні, логічні, розгалуження або збереження даних). У другійполовині циклу порт може вивести схожу мікрокоманд АЛП. p>
Порт 1. У першій частині цикли перше порт може вивести або одну звиконавчих операцій з плаваючою точкою (всі виключні зсувнеоперації з плаваючою точкою, всі операції SIMD), або одну арифметичну
АЛУ мікрокоманд. У другій частині циклу порт може вивести одну схожумікрокоманд АЛП. p>
Порт 2. Цей порт забезпечує висновок однієї завантажувальної операції за цикл. P>
Порт 3. Цей порт забезпечує висновок однієї операції збереження адреси зацикл. p>
Загальна вивідні потужність може варіюватися від нуля до шести мікрокомандза цикл. Кожен конвеєр складається з декількох виконавчих блоків.
Мікрокоманд поміщається в блок конвеєра, що відповідає правильному типуоперацій. Наприклад, цілочисельний АЛУ і блок виконання операцій зплаваючою точкою (суматор, множник чи дільник) можуть розділяти одинконвеєр. p>
p>
Малюнок 4. Виконавчі блоки і порти безладного ядра p>
кеші p>
Мікроархітектура Intel NetBurst підтримує до трьох рівнів вбудованого
Кеша. По крайней мере, два рівні кеша вбудовані в процесори, засновані намікроархітектурі Intel NetBurst. Процесори Intel Xeon MP можуть міститикеш третього рівня. p>
Кеш першого рівня (найближчий до виконавчого ядра) складається зроздільних кешей інструкцій і даних. Вони включають кеш даних першимрівня і кеш трас (покращений кеш інструкцій першого рівня). Всіінші кеші діляться між інструкціями та даними. p>
Рівні в ієрархії кешу НЕ взаімовключающіе. Факт того, що ниткаперебувати на рівні N не означає, що вона так само перебувати на рівні
N 1. Всі кеші використовують алгоритм замін псевдо-НЧІ (найменш частовикористовуються). p>
Таблиця 1 наводить порівняльні параметри кешей всіх рівнів процесорів
Pentium 4 та Xeon. P>
Таблиця 1. Параметри кеша процесорів Pentium 4 і Intel Xeon p>
p>
На процесорах без кешу третього рівня, промах кеша другого рівняініціює транзакцію через інтерфейс системної шини в підсистему пам'яті.
На процесорах з трьома рівнями кеша, промах кеша третього рівняініціює транзакцію через системну шину. Транзакція запису через шинузаписує 64 байти в Кешована пам'ять, або роздільні восьми байтнимконтейнери, якщо місце призначення не кешується. Транзакція читання черезшину з Кешована пам'яті витягує дві нитки даних кеша. p>
Інтерфейс системної шини підтримує роботу з масштабованою частотоюшини і досягає ефективної швидкості в чотири рази перевищує швидкістьшини. Маршрут від входу в шину і назад займає дванадцять процесорнихциклів, і від шести до дванадцяти циклів для доступу до пам'яті, якщо шина неперевантажена. Кожен цикл шини відповідає кільком циклів процесора.
Відношення тактової частоти процесора до масштабованої тактовою частотоюсистемної шини, якщо один цикл шини. Наприклад, один цикл шини з частотою
100 МГц еквівалентний п'ятнадцяти циклом процесора в 1,5 ГГц процесорі. P>
предвибірки даних p>
Процесори Intel Xeon і Pentium 4 мають два механізми предвибірки даних:програмно керована предвибірки і автоматична апаратна предвибірки. p>
Програмно керована предвибірки включається за допомогою чотирьохінструкцій предвибірки (PREFETCHh) представлених у SSE. Програмнокерована предвибірки не обов'язкова для предвибірки кодів. Їївикористання може призвести до великих проблем у багатопроцесорнихсистемах, якщо код розділений між процесорами. p>
Програмно керована предвибірки даних може принести вигоду внаступних ситуаціях: p>
. коли блок команд доступу до пам'яті в додатку дозволяє програмісту перекрити затримки доступу до пам'яті p>
. коли точний вибір може бути зроблений, грунтуючись на знанні кількості ниток кеша до вибору надалі перед виконання поточної нитки p>
. коли вибір може бути зроблений, грунтуючись на знанні того, яку предвибірки необхідно використовувати p>
Інструкції предвибірки SSE мають різні характери поведінки взалежно від рівня кеша та реалізації процесора. Наприклад, у процесоріможе бути реалізована постійна предвибірки, шляхом повернення даних врівень кешу, найближчий до ядра процесора. Такий метод призводить донаступного: p>
. мінімізує порушення часових даних в інших рівнях кеша p>
. попереджає необхідність доступу до внекрістальним КЕШам, що може збільшити реалізовану потужність щодо неправильної завантаження, що перевантажує дані у всі рівні кеша p>
Ситуації, в яких не бажано використовувати програмно керованупредвибірки: p>
. у випадках, коли запити визначені, предвибірки призводить до збільшення вимог запитів p>
. у разі предвибірки далеко вперед, вона може призвести до витіснення кешованих даних з кеша раніше, ніж вони будуть використані p>
. дуже близька предвибірки може знизити можливість до перекриття затримок доступу до пам'яті і виконання p>
Програмні предвибірки споживають ресурси в процесорі, і використаннязанадто багатьох предвиборок може обмежити їх ефективність. Приклади такихпредвиборок включають предвибірки даних у циклі для не залежно відінформації що знаходиться поза циклу і предвибірки в основних блоках, якічасто виконуються, але які рідко використовують її не залежно від цілейпредвибірки. p>
Автоматична апаратна предвибірки - механізм, реалізований впроцесорах Intel Xeon та Intel Pentium 4. Вона заносить нитки кеша вуніфікований кеш другого рівня, заснований на ранніх незалежнихмоделях. p>
Плюси і мінуси програмної та апаратної предвибірки p>
Програмна предвибірки має наступні характеристики: p>
. обробляє незвичайні моделі доступу, які не перехоплюються апаратним предвиборщіком p>
. обробляє предвибірки коротких масивів і не має апаратної початкової затримки перед ініціацією вибірок p>
. повинна бути додана в кожен новий код, так що вона не відноситься до вже запущених застосунків p>
Апаратна предвибірки має наступні характеристики: p>
. працює з уже існуючими додатками p>
. не вимагає доброго знання інструкцій предвибірки p>
. вимагає постійних моделей доступу p>
. попереджає перевантаження інструкцій і вивідних портів p>
. має початкову затримку на налаштування апаратного предвиборщіка і початок ініціації вибірок p>
Апаратний предвиборщік може обробляти безліч потоків, як упрямому, так і в зворотному напрямку. Початкова затримка і «вибірка-на -перед »має більший ефект на коротких масивах, коли апаратнапредвибірки генерує запит на дані вже наприкінці обробки масиву
(взагалі-то в цих випадках вона навіть не починається). Апаратна затримказменшується при обробці більш довгих масивів. p>
Завантаження та зберігання p>
У процесорах Intel Xeon і Pentium 4 реалізовані наступні механізмизбільшення швидкості обробки операцій з пам'яттю: p>
. спекулятивне виконання завантажень p>
. реорганізація завантажень з урахуванням завантаження та зберігань p>
. буферизація записів p>
. керування потоком даних зі сховищ в залежні завантаження продуктивність може бути збільшена не за допомогою ширини каналу виводупам'яті, а буферизацією ресурсів надаються процесором. За однієюоперації завантаження та зберігання може бути видано зі станції резервуванняпортів пам'яті за цикл. Для того, щоб бути вміщеній у станцію зберігання,для кожної операції з пам'яттю повинен бути доступний буферізірованний вхід.
Є 48 завантажувальних і 24 зберігають буфера. Ці буфера містятьмікрокоманд та адресну інформацію до тих пір, поки операція не виконана,вилучено та переміщена. p>
Процесори Intel Pentium 4 і Intel Xeon спроектовані для виконанняоперацій пам'яті в хаотичному режимі щодо інших інструкцій іщодо один одного. Завантаження можуть виконуватися спекулятивно, тобтодо того, як знайдені результати всіх розгалужень. Незважаючи на це,спекулятивні завантаження не можуть викликати помилку сторінки. p>
Реорганізація завантажень відносно один одного може запобігти невірну завантаження з більш пізніх (передбачених). Реорганізація завантаженьщодо інших завантажень і сховищ за різними адресами дозволяєбільше паралелізму, що в свою чергу дозволяє машині виконуватиоперації, як тільки готові їх вхідні дані. Запис у пам'ять завждивиконується спекулятивно в оригінальному порядку для виключення помилок. p>
Промах кеша для завантаження не запобігає інші завантаження від видачі тазавершення. Процесварки Intel Xeon і підтримують до 4 (8 для Intel Xeon і
Pentium 4 з сигнатурою CPUID що відносяться до сімейства 15, моделі 3)виняткових промаху завантаження, вироблених, як кешем в кристалі, такі пам'яттю. p>
зберігають буфера покращують продуктивність, дозволяючи процесорупродовжувати виконання інструкцій, не затримуючись поки запис в кеш абопам'ять буде завершена. Запис зазвичай не проводитися на практичнихшляхах залежних ланцюжків, так що звичайно краще відкласти запис для більшефективного використання пам'яті. p>
Управління зберіганням p>
Завантаження може бути зрушена щодо зберігання, якщо не передбаченезавантажувати за тим же лінійному адресою, що й зберігання. Якщо вонидійсно виробляють читання за тим же лінійному адресою, вони повиннідочекатися поки збережені дані не стануть доступними. Незважаючи на це, їмне потрібно чекати, поки сховище зробить запис у ієрархію пам'яті ізакінчить роботу. Дані зі сховища можуть бути спрямовані безпосередньо, якщовиконуються наступні умови: p>
. Черговість: дані, які направляються до завантаження, згенеровані програмно раніше виконаним зберіганням p>
. Розмірність: завантажувані байти повинні бать підмножиною (включаючи правильне підмножина, що одне й те саме) байтів сховища p>
. Вирівнювання: сховище не може обертатися всередині кордонів нитки кеша, і лінійний адреса завантаження повинен бути ідентичний адресою сховища p>
Технологія Hyper-Threading p>
Технологія Intel Hyper-Threading (HT) підтримується специфічними членамисімейств Intel Xeon (Nocona) і Intel Pentium (Prescott). ТехнологіяЗавдяки цьому браузер користуватися перевагами паралелізму,що подаються на рівні завдань або потоків декількома логічнимипроцесорами всередині однієї фізичної. У своїй першій реалізації впроцесорі Intel Xeon, НТ представляла один фізичний процесор як двілогічних. Ці два логічних процесора мають повний набір архітектурнихрегістрів, розділяючи ресурси одного фізичного процесора. Маючи архітектурудвох процесорів, НТ вбудована в процесор виглядає як два процесори длядодатків, операційних систем і програмного коду. p>
За допомогою розподілу ресурсів, при пікових запитах, між двомалогічними процесорами, НТ добре підходить для багатопроцесорних систем,виробляючи додаткове збільшення потужності в порівнянні зі звичайнимибагатопроцесорними системами. p>
Малюнок 6 показує типову шинно-засновану симетричнубагатопроцесорну систему (SMP), засновану на процесорах підтримуютьтехнологію НТ. Кожний логічний процесор може виконувати програмнийпотік, дозволяючи двом потокам виконуватися одночасно в одному фізичномупроцесорі. p>
У технології НТ фізичні ресурси діляться, а архітектурна модельдублюється для кожного логічного процесора. Це мінімізує втрати відмертвих зон, при досягненні цілей багато потокових додатків абобагатозадачних платформ. p>
p>
Малюнок 5. Технологія Hyper-Threading на SMP p>
Продуктивний потенціал НТ грунтується: p>
. на факті, що операційна система і призначені для користувача Особисте