Чому новіші покоління процесорів швидші з однаковою тактовою частотою?


38

Чому, наприклад, двоядерний Core i5 2,66 ГГц буде швидшим, ніж 2,66 ГГц Core 2 Duo, який також є двоядерним?

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

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



Вау як прориви, так і Девід - чудові відповіді ... Я не знаю, які вибрати як правильні: P
agz

Також кращий набір інструкцій і більше регістрів. наприклад, MMX (дуже старий зараз) та x86_64 (Коли AMD винайшов x86_64, вони додали деякі покращення сумісності, коли вони перебувають у 64-бітному режимі. Вони зрозуміли, що порівнянність все одно буде порушена).
ctrl-alt-delor

Для дійсно великих вдосконалень архітектури x86 потрібен новий набір інструкцій, але якби це було зроблено, це вже не буде x86. Це був би PowerPC, mips, Alpha,… або ARM.
ctrl-alt-delor

Відповіді:


30

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

  1. Великі кеші означають менше витраченого часу на очікування пам'яті.

  2. Більше одиниць виконання означає менший час очікування для початку роботи за інструкцією.

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

  4. Вдосконалення блоку виконання означають менший час очікування виконання інструкцій.

  5. Коротші трубопроводи означають, що трубопроводи заповнюються швидше.

І так далі.


Я вважаю, що в архітектурі Core є трубопровід 14-15 ступенів ( ref ), а місто Nehalem / Sandy має приблизно 14-17 ступінчастий трубопровід ( ref ).
Прорив

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

Це я маю на увазі, я думаю, що сама глибина трубопроводу залишилася колишньою або збільшилася . Також у посібниках з розробників Intel 64 та IA-32 SW остання згадка про зміну конвеєра є у Vol. 1, гол. 2.2.3 / 2.2.4 (мікроархітектури Intel Core / Atom).
Прорив

2
Намагання підвищити тактову швидкість призвели до більш тривалих трубопроводів. Це стало смішним (аж 31 етап!) До кінця ери NetBurst. У наші дні це делікатне інженерне рішення з перевагами та недоліками в обох напрямках.
Девід Шварц

також поліпшення прогнозування галузей, впорядкування / оптимізація інструкцій / вдосконалення оснащення мюкс, мініатюризація (зменшення тепла) та штампування (покращені контури / схеми з одним штампом тощо), ...
Shaun Wilson

40

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

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

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

  • З дуже високою тактовою частотою стає необхідним значне збільшення напруги в ядрі процесора . Оскільки TDP збільшується з площею V- сердечника , ми зрештою досягаємо точки, коли надмірне споживання енергії, тепловіддача та охолодження запобігають подальшому збільшенню тактової частоти. Ця межа була досягнута в 2004 році, в часи Пентіума 4 Прескотта . Хоча останні покращення енергоефективності допомогли, значне збільшення тактової частоти вже неможливо. Дивіться: Чому виробники процесорів припинили збільшувати тактову швидкість своїх процесорів?

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

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

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

  • Хоча програма може просто складатися з серії інструкцій для виконання одна за одною, ці вказівки або їх частини дуже часто можуть виконуватися одночасно. Це називається паралелізмом рівня інструкцій (ILP) . Експлуатація ILP життєво важлива для досягнення високої продуктивності, а сучасні процесори використовують численні методи для цього.

Трубопроводи розбивають інструкції на більш дрібні шматки, які можна виконувати паралельно.

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

  • Класичний трубопровід RISC містить п'ять етапів: FETCH інструкції, інструкція декодування, виконання інструкцій, доступ до пам'яті і зворотного запис. Сучасні процесори розбивають виконання на набагато більше кроків, створюючи більш глибокий конвеєр з більшою кількістю ступенів (і збільшуючи досяжну тактову частоту, оскільки кожна стадія менша і потрібно менше часу на завершення), але ця модель повинна забезпечити базове розуміння того, як працює конвеєр.

Схема п'ятиступеневого конвеєра інструкцій
Джерело зображення

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

  • Оскільки різні частини кожної інструкції виконуються одночасно, можливі конфлікти, які заважають правильному виконанню. Вони називаються небезпеками . Існує три типи небезпек: дані, структурні та контрольні.

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

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

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

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

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

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

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

Кеші використовуються для прискорення доступу до пам'яті.

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

  • Через обмежений простір, доступний на штампі процесора, кеші мають дуже обмежений розмір. Щоб максимально використати цю обмежену ємність, кеші зберігають лише останні або часто доступні дані ( часова локальність ). Оскільки доступ до пам’яті, як правило, кластеризується в певних областях ( просторова локалізація ), блоки даних, що знаходяться поблизу недавно отриманого доступу, також зберігаються в кеші. Див.: Місцевість довідки

  • Кеші також організовані в кілька рівнів різного розміру для оптимізації продуктивності, оскільки більші кеші, як правило, повільніше, ніж менші кеші. Наприклад, процесор може мати кеш рівня 1 (L1), який має розмір лише 32 КБ, тоді як кеш рівня 3 (L3) може бути великим на кілька мегабайт. Розмір кешу, а також асоціативність кешу, що впливає на те, як процесор управляє заміною даних на повний кеш, суттєво впливають на підвищення продуктивності, які отримуються за допомогою кешу.

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

  • Не кожна інструкція в потоці інструкцій залежить одна від одної. Наприклад, хоча a + b = cповинно бути виконано до того c + d = e, a + b = cі d + e = fє незалежними і можуть бути виконані одночасно.

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

Діаграма виконання поза замовленнями
Джерело зображення

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

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

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

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

  • У суперскалярному процесорі інструкції заплановані, як у дизайні поза замовленням, але зараз є порти декількох випусків , що дозволяють видавати та виконувати різні інструкції одночасно. Розширена схема декодування інструкцій дозволяє процесору читати кілька інструкцій одночасно у кожному тактовому циклі та визначати взаємозв'язки між ними. Сучасний високопродуктивний процесор може запланувати до восьми інструкцій за тактовий цикл, залежно від того, що робить кожна інструкція. Ось так процесори можуть виконати кілька інструкцій за тактовий цикл. Дивіться: Двигун виконання Haswell на AnandTech

Схема двигуна виконання Haswell
Джерело зображення

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

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

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

  • Для виконання цих складних операцій сучасні процесори використовують мікрооперації (μops) . Складні інструкції розшифровуються в послідовності мкоп, які зберігаються всередині виділеного буфера і плануються для виконання окремо (настільки, наскільки це дозволяє залежність від даних). Це забезпечує більше місця для процесора для використання ILP. Для подальшого підвищення продуктивності спеціальний кеш-пам'ять μop може бути використаний для зберігання нещодавно декодованих мкоп, так що мкоп для нещодавно виконаних інструкцій можна швидко шукати.

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


То як ці методи покращують продуктивність процесора з часом?

  • З роками трубопроводи стали довші, скорочуючи кількість часу, необхідний для завершення кожного етапу, і, отже, забезпечуючи більш високу тактову частоту. Однак, серед іншого, довші трубопроводи збільшують штраф за неправильне прогнозування гілки, тому трубопровід не може бути занадто довгим. Намагаючись досягти дуже високих тактових частот, процесор Pentium 4 використовував дуже довгі трубопроводи, до 31 етапу в Прескотті . Щоб зменшити дефіцит продуктивності, процесор намагатиметься виконувати інструкції, навіть якщо вони можуть вийти з ладу, і продовжуватиме намагатися, поки їм це не вдасться . Це призвело до дуже високого споживання електроенергії та знизило продуктивність, отриману від гіпер-різьблення . Нові процесори більше не використовують трубопроводи так довго, тим більше, що масштабування тактової частоти досягло стіни;Haswell використовує трубопровід, який варіюється між 14 та 19 етапами, а архітектури з меншою потужністю використовують більш короткі трубопроводи (Intel Atom Silvermont має від 12 до 14 ступенів).

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

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

  • Новіші процесори краще використовувати переваги ILP за допомогою більш досконалої логіки виконання суперскаліру та «ширших» конструкцій, що дозволяють дешифрувати та виконувати більше інструкцій одночасно. Архітектура Haswell може декодувати чотири інструкції та відправляти 8 мікрооперацій за цикл годин. Збільшення бюджетів транзисторів дозволяє включити до ядра процесора більше функціональних одиниць, таких як цілі ALU. Ключові структури даних, що використовуються у виконанні поза замовлення та надскалярного виконання, такі як станція резервування, буфер замовлення та файл реєстру, розширені в нових конструкціях, що дозволяє процесору шукати більш широке вікно інструкцій щодо використання їх ILP. Це головна рушійна сила підвищення продуктивності в сучасних процесорах.

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

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


6
Це може зробити хороший пост у блозі.
Мокубай

Поліпшення енергоефективності також є фактором, що враховує енергетичну стіну.
Пол А. Клейтон

Справа вже не в тому, наскільки швидкий годинник, це більше про те, скільки вказівок за цикл годин може бути оброблено. Якщо процесор має пропускну здатність для обробки в 4 рази більше даних з пам'яті в кеш, цей процесор ефективно в 4 рази швидше, навіть якщо він мав повільніший тактовий час. Ось чому AMD відчуває стільки проблем, намагаючись відповідати продуктивності продуктів Intel
Ramhound

18

Абсолютна остаточна посилання - посібники для розробників програмного забезпечення для архітектури Intel 64 та IA-32 . Вони детально описують зміни між архітектурами, і вони є чудовим ресурсом для розуміння архітектури x86.

Я рекомендую завантажити комбіновані томи від 1 до 3С (перше посилання для завантаження на цій сторінці). Том 1 Розділ 2.2 містить потрібну інформацію.


Деякі загальні відмінності, які я бачу, перераховані в цій главі, ідучи від Ядра до мікроархітектури Нехалем / Піщаний міст, є:

  • покращене прогнозування галузей, швидше одужання від помилок
  • Технологія HyperThreading
  • інтегрований контролер пам'яті, новий кеш-пам'ять
  • швидше керування винятком з плаваючою комою (лише Sandy Bridge)
  • Поліпшення пропускної здатності LEA (лише Sandy Bridge)
  • Розширення інструкцій AVX (лише Sandy Bridge)

Повний список можна знайти за посиланням, поданим вище (т. 1, гл. 2.2).


0

Все сказане раніше - правда, але певною мірою. Моя відповідь коротка: процесори нового покоління "швидші" насамперед тому, що вони мають більші та краще організовані кеші . Це головний фактор продуктивності комп'ютера. Більш кількісні міркування див. У розділі " Журнал Linux: Що сприяє продуктивності в HPC "

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

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


-1

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.