Remove ads
З Вікіпедії, вільної енциклопедії
3DNow! — розширення для набору інструкцій платформи x86, яке розробила компанія Advanced Micro Devices (AMD). Це розширення додає SIMD інструкції до базового набору інструкцій x86, що дозволяє йому виконувати прості векторні операції, що в сумі підвищувало продуктивність багатьох графічних застосунків. Перший мікропроцесор із підтримкою 3DNow! — AMD K6-2, був представлений в 1998 році.
У серпні 2010 року оголошено, що підтримка 3DNow! буде відсутня у майбутніх процесорах AMD, за винятком двох інструкцій.[1]
3DNow! спочатку було розроблено як розширення для команд MMX. Оригінальна ідея для створення розширення полягала в розширенні обробки із дійсних на всі математичні числа, а також прискорення розрахунків з рухомою комою.
Особливо необхідними для AMD стратегічною та маркетінговою ціллю було впровадження 3D розрахунків із рухомою комою. Тому, що процесори K6 були не дуже добре конкурентноздатними для обрахунків математичних даних із рухомою комою, в порівнянні з процесорами Intel Pentium II.
Набір команд 3DNow! було створено наприкінці 1990-х, коли набувала популярності 3D графіка в 3D-іграх, і саме 3D-ігри в значній мірі використовували обрахунки з рухомою комою.
На початку 1990-х переважна більшість програмного забезпечення використовували обрахунки на основі цілих чисел, і компанія AMD могли легко обійтися процесорами, обмежившись обрахунками з рухомою комою. Але такий процесор, як AMD K6, став значно кращим, зважаючи на значний розвиток 3D-ігор і прогресивного мультимедійного контенту, і досить швидко змінив перспективи ринку.
Перша реалізація технології 3DNow! містила 21 нову інструкцію, які підтримують SIMD операції з рухомою комою. Набір команд 3DNow! включає також операції над цілими SIMD-наборами команд, попередню вибірку даних, та швидше перемикання між MMX та обрахунками з рухомою комою. Пізніше Intel хотіли додати аналогічні (але несумісні) команди до процесору Pentium III, нині відомі як набір інструкцій SSE, які надають потокового розширення SIMD.
Інструкції 3DNow! з рухомою комою
Цілочисельні інструкції 3DNow!
Інструкції підвищення продуктивності 3DNow!
Існує мало або взагалі немає доказів того, що друга версія 3DNow! колись офіційно мала свою торгову марку. Це призвело до деякої плутанини в документації, яка посилається на цей набір інструкцій. Найпоширеніші терміни — Extended 3DNow!(розширений 3DNow!), Enhanced 3DNow!(розширення 3DNow!) та 3DNow!+. Фразу «Enhanced 3DNow!» можна знайти в кількох місцях на сайті AMD, але узагальнення значення «розширеного» ні до чого не призводить, і, мабуть, використовуються виключно для виділення процесорів, які можуть мати або навіть не мати цього розширення (найпомітнішим з яких посилання вказується на сторінку процесору K6-III-P, який насправді не має цього розширення).[2][3]
Це розширення набору команд 3DNow! було впроваджено в перше покоління процесорів Athlon. В Athlon додали 5 нових інструкцій 3DNow! і 19 MMX. Пізніше у процесори K6-2+ та K6-III+ (які орієнтовані на мобільний ринок) додали 5 нових інструкцій 3DNow!, залишивши 19 нових інструкцій MMX. Нові інструкції 3DNow! були додані для підвищення цифрової обробки сигналу. Нові інструкції MMX були додані до підвищення обробки потокового мультимедіа контенту.
Розширення до 3DNow! чи MMX?
19 нових інструкцій MMX, насправді є підмножиною набору інструкцій SSE1 для процесорів Intel. Але в технічному посібнику AMD, компанія відокремлює один від одного ці інструкції від розширень 3DNow!.[2] У інструкції для споживача від AMD, цей поділ не настільки очевидний, тому що всі 24 нові інструкції, зараховуються на рахунок технології розширення 3DNow!.[4] Це призвело до того, що програмісти придумували свою назву для 19 нових інструкцій MMX. Найчастіше вживається Integer SSE (ISSE).[5] Також присутні назви SSEMMX і MMX2, які було знайдено у документації відеофільтрів. [Також варто зазначити, що назва ISSE могла мати відношення до терміну Internet SSE, рання назва SSE.]
Розширення інструкцій 3DNow! для DSP
Розширення інструкцій MMX (Integer SSE)
3DNow! Professional насправді не є розширенням набіру інструкцій 3DNow!, а фірмовою назвою технології, створеної для позначення процесорів, які поєднують технології 3DNow! з повними наборами інструкцій SSE (наприклад SSE1, SSE2 та SSE3).[6] Перший процесор, який відповідає цьому опису був Athlon XP. До Athlon XP додали інструкції, до повного набору SSE1, які були відсутні в ранніх процесорах Athlon (загальна кількість: 21 оригінальні інструкцій 3DNow!; 5 наборів 3DNow! інструкцій для розширення DSP функціональності; 19 інструкцій для розширення MMX; а також 52 додаткових інструкцій SSE для повної сумісності із SSE1).[7]
У процесори Geode GX і Geode LX додані дві нові інструкції 3DNow!, які зараз відсутні у всіх інших процесорах.
Унікальні інструкції 3DNow! Professional для процесорів AMD Geode GX/LX
Однією з переваг 3DNow! є те, що можна додати або помножити два числа, які зберігаються в тому ж регістрі. У SSE кожне число може бути поєднаним з іншим, яке розташоване в тому ж положенні іншого реєстру. Ця здатність, відома як горизонталь в термінології Intel, була важливим доповненням до набору інструкцій SSE3.
Недолік 3DNow! в порівнянні з SSE, є те, що вона зберігає тільки два номери в регістрі, на відміну від чотирьох в SSE. 3DNow! також поділяє ті ж фізичні регістри, що і MMX, в той час як SSE має свій власний незалежний регістр. Оскільки обидва набори регістрів, MMX і 3DNow!, також використовують стандартні значення x87 FPU, то інструкції 3DNow! та x87 не можуть бути виконані одночасно. Тим не менше 3DNow! і MMX регістри можуть бути збережені і відновлені традиційними інструкціями x87: F(N)SAVE і F(N)RSTOR. Використання вже існуючих регістрів x87 означає, що будь-які зміни в сучасних операційних систем спрямовуватимуться на підтримку 3DNow!.
З іншого боку, для збереження і відновлення стану SSE регістрів потрібно використання нових додаткових інструкцій FXSAVE та FXRSTOR; використання інструкцій FX*, які були оновленням до старішого x87 — збереження та відновлення. Тому інструкції могли зберігатися не тільки для станів SSE, а і для x87 станів регістра (а звідси випливало, що могли зберегтися регістри MMX та 3DNow! також).
На процесорах AMD Athlon XP, та подальших процесорах, основаних на ядрі K8 (наприклад Athlon 64), програмісти асемблеру помітили, що можна реально використовувати як 3DNow!, так і SSE одночасно. Хоча і можна використовувати одночасно одні і ті ж функціональні блоки, і це могло б призвести до більш високої продуктивності уникаючи деякого тиску в розподілі регістрів, але виявилося, що на практиці це важко здійснити.[8]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.