Майже всі досягнення швидкості роботи на комп’ютері відбуваються з одного з таких напрямків:
Менші транзистори
Дві речі зумовлені зменшенням транзисторів:
- Вони фізично ближче один до одного, тому час, необхідний для руху електричного сигналу від джерела до місця призначення, менший. Тож хоча електричні сигнали рухаються не швидше, ніж 50 років тому, зараз вони часто проїжджають на більш короткі відстані .
- На мікросхемі може бути включено більше транзисторів, а це означає, що одночасно можна виконати більше «роботи». Чим більше додано транзисторів, тим важче знайти для них корисну роботу, але застосовується багато хитромудрих хитрощів (див. Нижче).
Більше "корисної роботи" за інструкцію
Наприклад, деяким процесорам не вистачає інструкцій для множення чи ділення цілих чисел; замість цього завдання потрібно виконувати за допомогою повільних програмних процедур. Додавання інструкцій по множенню та діленню значно прискорює роботу. Додавання інструкцій з плаваючою комою може пришвидшити програмне забезпечення, яке вимагає чисел з плаваючою комою.
Важливим способом виконання більше «корисної роботи» за інструкцію є збільшення розміру слова . Процесори, які можуть виконувати операції над 32-бітовими номерами, часто вимагають набагато менших інструкцій для виконання того ж завдання, що і 16-бітні або 8-бітні процесори.
Деякі процесори підтримують інструкції, які виконують кілька дій одночасно, зокрема інструкції, які виконують одну й ту ж операцію з декількома елементами даних ( SIMD ).
Більше інструкцій за цикл
"Тактовий цикл" - це те, як процесор переходить від поточного стану до наступного стану. У певному сенсі це найменша одиниця роботи, яку може виконувати процесор за один раз. Однак кількість тактових циклів, які займає конкретна інструкція, залежить від конструкції процесора.
З появою конвеєрних процесорів з'явилася можливість "перекриватись" окремими інструкціями, тобто починатись до завершення попереднього. Однак певні вказівки можуть визнати недійсними наступну інструкцію, яка не буде відома, поки наступна інструкція частково не буде виконана, тому все може ускладнитися. (Трубопровідні процесори включають логіку, щоб переконатися, що все працює добре, але характеристики продуктивності складніші.)
Надскалярні процесори піднімають це на наступний рівень, буквально дозволяючи виконувати дві інструкції одночасно, а виконання поза замовлення робить його ще на крок далі, дозволяючи виконувати інструкції поза порядком. Ці функції вимагають аналізу потоку інструкцій, відпрацювання яких інструкцій не стикаються між собою.
Хоча є й інші подібні хитрощі (наприклад, передбачення гілок , спекулятивне виконання ), що важливіше - загальна картина:
- кожна інструкція потребує певної кількості годинних циклів (не обов'язково постійних)
- але кілька інструкцій можуть бути виконані одночасно
- тому є вимірювані " інструкції за цикл ", які> 1 для процесорів високого класу
- але це дуже сильно залежить від навантаження
Більше циклів в секунду
Іншими словами, більша тактова частота . Збільшення тактової частоти не тільки збільшує вироблене тепло, але й вимагає значно більш дисциплінованої конструкції мікросхем, оскільки існує менший часовий обмеження для стабілізації ланцюга. У нас було багато пробігу від цього до 2000-х, коли ми досягли певних практичних меж.
Дані в потрібному місці в потрібний час
Хоча компоненти всередині процесора стають все ближче та ближче один до одного через зменшення транзисторів, процесор і оперативна пам’ять все ще знаходяться на відстані 5-10 см один від одного. Якщо інструкція потребує чогось із оперативної пам’яті, ця інструкція не потребує 5 або 6 циклів для завершення, це займе близько 200. Це проблема з вузьким місцем фон Неймана .
Наша основна зброя проти цього - кеш . Нещодавно доступ до даних з більшою ймовірністю буде доступ до них знову, тому вони зберігаються в спеціальній пам'яті (так званій кеш-пам'яті), що знаходиться в мікросхемі процесора, що робить його набагато швидшим доступом.
Однак інші методи (такі як конвеєрне прогнозування та прогнозування гілок ) допомагають, дозволяючи процесору виконувати корисну роботу під час очікування надходження даних, а також прогнозуючи, які дані незабаром можуть знадобитися.
Кілька та / або спеціалізованих процесорів
Написати програмне забезпечення для одного процесора набагато простіше, ніж для декількох процесорів. Однак іноді переваги продуктивності / вартості / споживання електроенергії роблять це вартим.
Також певні процесори особливо добре підходять до певних завдань. Наприклад, графічні процесори спеціально розроблені для розрахунків, необхідних для візуалізації 2D та 3D графіки та ефектів.
Багатоядерні процесори - це по суті декілька процесорів на одному чіпі.