Ноу Інти, лекція, архітектура мікропроцесора intel і основні чинники, що впливають на його

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

Першим суперскалярні процесором интеловской архітектури був Pentium, і в ньому було реалізовано виконується пристрій U і виконується пристрій V. Одне вміло робити всі операції. а друге - самі простенькі, наприклад, инкрементирование.

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

Спрощена модель процесора

Ноу Інти, лекція, архітектура мікропроцесора intel і основні чинники, що впливають на його

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

Використання векторних інструкцій, векторизация

Типова векторна інструкція виконує елементарну операцію над двома векторними послідовностями в пам'яті або векторними регістрами фіксованої довжини.

Векторизация - процес конвертації комп'ютерної програми з скалярного уявлення, в якому одна операція виконується над парою операндів, в векторне подання, в якому одна операція виконується над парою векторних операндів.

У Pentium III нова технологія SSE (Streaming SIMD Extensions), яка додала в МП 8 128-бітних регістрів (XMM0-XMM7) і 70 нових інструкцій в тому числі для роботи з речовими числами. SSE2, SSE3, SSEE3, SSE4, SSE4 .2, AVX - наступні розширення цієї ідеї.

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

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

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

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

Також можливе виконання зі зміною послідовності операцій (out-of- order execution).

Out-of- order execution - одне з визначальних властивостей архітектури x86. Реалізація цього механізму ускладнює процесор. В якості протилежного прикладу від Інтел можна згадати архітектури Itanium і Atom. На різні архітектури інструкції виконуються в порядку, заданому додатком.

Тобто в мікроархітектури сімейства IA32 реалізовано виконання зі зміною послідовності операцій (out-of-order- execution). Тобто програмісти написали якісь інструкції, подали їх на процесор. а він сам вибрав, в якому порядку їх виконувати. В даному випадку важлива частина роботи - планування інструкцій виконується безпосередньо мікропроцесором.

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

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

Ноу Інти, лекція, архітектура мікропроцесора intel і основні чинники, що впливають на його

Схожі статті