3D teraz! -3DNow!

AMD 3DN teraz!
3dnow-logo.svg
Firma projektowa Zaawansowane Mikro Urządzenia
Wprowadzono 1998
Rodzaj architektura zestawu instrukcji

3D teraz! jest rozszerzeniem zestawu instrukcji x86 opracowanym przez Advanced Micro Devices (AMD). Dodaje pojedyncza instrukcja wielu danych (SIMD) instrukcje do zestawu instrukcji x86 bazowej, co pozwala na wykonywanie przetwarzania wektorowego z zmiennoprzecinkowych Wektor operacji za pomocą Vector rejestrów , co poprawia wydajność wielu wymagających graficznie aplikacji. Pierwszym mikroprocesorem, który zaimplementował 3DNow był AMD K6-2 , który został wprowadzony w 1998 roku. Gdy aplikacja była odpowiednia, zwiększało to prędkość około 2–4 razy.

Jednak zestaw instrukcji nigdy nie zyskał dużej popularności, a AMD ogłosiło w sierpniu 2010 r., że wsparcie dla 3DNow zostanie porzucone w przyszłych procesorach AMD, z wyjątkiem dwóch instrukcji ( instrukcji PREFETCHi PREFETCHW). Te dwie instrukcje są również dostępne w procesorach Bay-Trail Intel.

Historia

3DNow powstał w czasie, gdy grafika 3D stawała się głównym nurtem multimediów i gier na PC. Wyświetlanie grafiki 3D w czasie rzeczywistym w dużym stopniu zależało od jednostki zmiennoprzecinkowej (FPU) procesora hosta, która wykonywała obliczenia zmiennoprzecinkowe , zadanie, w którym procesor AMD K6 z łatwością przewyższał swojego konkurenta, Intel Pentium II.

Jako rozszerzenie zestawu instrukcji MMX, zestaw instrukcji 3DNow rozszerzył rejestry MMX SIMD o obsługę typowych operacji arytmetycznych (dodawanie/odejmowanie/mnożenie) na danych zmiennoprzecinkowych o pojedynczej precyzji (32-bity). Oprogramowanie napisane pod kątem korzystania z 3DNow AMD zamiast wolniejszego FPU x87 może działać do 4 razy szybciej, w zależności od kombinacji instrukcji.

Wersje

3D teraz

Pierwsza implementacja technologii 3DNow zawiera 21 nowych instrukcji obsługujących operacje zmiennoprzecinkowe SIMD . Format danych 3DNow jest spakowany , zmiennoprzecinkowy o pojedynczej precyzji . Zestaw instrukcji 3DNow obejmuje również operacje na liczbach całkowitych SIMD, wstępne pobieranie danych i szybsze przełączanie MMX na zmiennoprzecinkowe. Później Intel doda podobne (ale niezgodne) instrukcje do Pentium III , znanego jako SSE (Streaming SIMD Extensions).

Instrukcje zmiennoprzecinkowe 3DNow są następujące:

  • PI2FD – Zapakowane 32-bitowe liczby całkowite na konwersję zmiennoprzecinkową
  • PF2ID – Konwersja pakietów zmiennoprzecinkowych na 32-bitowe liczby całkowite
  • PFCMPGE – Upakowane porównanie zmiennoprzecinkowe, większe lub równe
  • PFCMPGT – Upakowane porównanie zmiennoprzecinkowe, większe
  • PFCMPEQ – Upakowane porównanie zmiennoprzecinkowe, równe
  • PFACC – Pakiety zmiennoprzecinkowe akumulują
  • PFADD – Zapakowane dodawanie zmiennoprzecinkowe
  • PFSUB – Upakowane odejmowanie zmiennoprzecinkowe
  • PFSUBR – Upakowane zmiennoprzecinkowe odejmowanie odwrotne
  • PFMIN – Zapakowane minimum zmiennoprzecinkowe
  • PFMAX – Upakowane maksimum zmiennoprzecinkowe
  • PFMUL – Zapakowane mnożenie zmiennoprzecinkowe
  • PFRCP – Upakowane zmiennoprzecinkowe przybliżenie odwrotne
  • PFRSQRT – Upakowany zmiennoprzecinkowy odwrotność aproksymacji pierwiastka kwadratowego
  • PFRCPIT1 – Zapakowany zmiennoprzecinkowy odwrotność, pierwszy krok iteracji
  • PFRSQIT1 – Upakowany zmiennoprzecinkowy odwrotność pierwiastka kwadratowego, pierwszy krok iteracji
  • PFRCPIT2 – Upakowany zmiennoprzecinkowy odwrotność/odwrotność pierwiastka kwadratowego, drugi krok iteracji

Instrukcje dotyczące liczb całkowitych 3DNow są następujące:

  • PAVGUSB – Pakowane uśrednianie 8-bitowych liczb całkowitych bez znaku
  • PMULHRW – Pakowane pomnożenie 16-bitowej liczby całkowitej z zaokrągleniem

Instrukcje dotyczące zwiększania wydajności 3DNow są następujące:

  • FEMMS – Szybsze wejście/wyjście ze stanu MMX lub zmiennoprzecinkowego
  • PREFETCH/PREFETCHW – Wstępnie pobierz przynajmniej 32-bajtową linię do pamięci podręcznej danych L1 (jest to nieaktualna instrukcja)

Rozszerzenia 3DNow

Niewiele lub wcale nie ma dowodów na to, że drugiej wersji 3DNow oficjalnie nadano nazwę handlową. Doprowadziło to do zamieszania w dokumentacji, która odnosi się do tego nowego zestawu instrukcji. Najpopularniejsze terminy to Extended 3DNow , Enhanced 3DNow i 3DNow+ . Wyrażenie „Enhanced 3DNow” można znaleźć w kilku miejscach na stronie AMD, ale pisownia „Enhanced” wydaje się być albo czysto gramatyczna, albo używana w celu podkreślenia procesorów, które mogą mieć te rozszerzenia lub nie (z których najbardziej godne uwagi odwołuje się do strony testowej dla K6-III-P, która nie ma tych rozszerzeń).

To rozszerzenie zestawu instrukcji 3DNow zostało wprowadzone w procesorach Athlon pierwszej generacji . Athlon dodał 5 nowych instrukcji 3DNow i 19 nowych instrukcji MMX. Później K6-2+ i K6-III+ (oba przeznaczone na rynek mobilny) zawierały 5 nowych instrukcji 3DNow, pomijając 19 nowych instrukcji MMX. Dodano nowe instrukcje 3DNow w celu wzmocnienia DSP . Nowe instrukcje MMX zostały dodane, aby przyspieszyć strumieniowanie mediów .

19 nowych instrukcji MMX stanowi podzbiór zestawu instrukcji Intel SSE1. W instrukcjach technicznych AMD, AMD oddziela te instrukcje od rozszerzeń 3DNow. Jednak w literaturze dotyczącej produktów AMD ta segregacja jest mniej jasna, gdy korzyści wszystkich 24 nowych instrukcji przypisuje się ulepszonej technologii 3DNow. Skłoniło to programistów do wymyślenia własnej nazwy dla 19 nowych instrukcji MMX. Najczęstszym wydaje się być Integer SSE ( ISSE ). SSEMMX i MMX2 można również znaleźć w dokumentacji filtrów wideo z sektora domeny publicznej. ISSE może również odnosić się do Internet SSE, wczesnej nazwy SSE.

Instrukcje DSP rozszerzenia 3DNow są następujące:

  • PF2IW – Konwersja spakowanych słów zmiennoprzecinkowych na liczby całkowite z rozszerzeniem znaku
  • PI2FW – Spakowane słowo całkowite na konwersję zmiennoprzecinkową
  • PFNACC – Upakowane zmiennoprzecinkowe ujemne akumulują
  • PFPNACC – Upakowane zmiennoprzecinkowe mieszane dodatnio-ujemne akumulują
  • PSWAPD – Spakowane podwójne słowo swap

Instrukcje rozszerzenia MMX (Integer SSE) są następujące:

  • MASKMOVQ – Przechowywanie strumieniowe (omijanie pamięci podręcznej) za pomocą maski bajtowej
  • MOVNTQ – Przechowywanie strumieniowania (cache bypass)
  • PAVGB – Spakowana średnia z unsigned byte
  • PAVGW – Spakowana średnia niepodpisanego słowa
  • PMAXSW – Spakowane maksymalne podpisane słowo
  • PMAXUB – Spakowany maksymalny bajt bez znaku
  • PMINSW – Spakowane minimum podpisane słowo
  • PMINUB – Spakowany minimalny bajt bez znaku
  • PMULHUW – Pakowane pomnożyć wysokie słowo bez znaku
  • PSADBW – Spakowana suma bezwzględnych różnic bajtów
  • PSHUFW – Spakowane słowo losowe
  • PEXTRW – Wyodrębnij słowo do rejestru liczb całkowitych
  • PINSRW – Wstaw słowo z rejestru liczb całkowitych
  • PMOVMSKB – Przenieś maskę bajtów do rejestru liczb całkowitych
  • PREFETCHNTA – Wstępne pobieranie przy użyciu referencji NTA
  • PREFETCHT0 – Wstępne pobieranie za pomocą referencji T0
  • PREFETCHT1 – Wstępne pobieranie za pomocą referencji T1
  • PREFETCHT2 – Wstępne pobieranie za pomocą referencji T2
  • SFENCE – Ogrodzenie sklepu

3DNow Profesjonalny

3DNow Professional to nazwa handlowa używana do wskazania procesorów, które łączą technologię 3DNow z kompletnym zestawem instrukcji SSE (takimi jak SSE1, SSE2 lub SSE3). Athlon XP był pierwszym procesorem nosić nazwę handlową 3DNow Professional i był pierwszym produktem z rodziny Athlon wspierać kompletny SSE1 zestaw instrukcji (w sumie: 21 oryginalnych instrukcji 3DNow, pięć 3DNow instrukcji rozszerzenie DSP; 19 MMX instrukcje rozszerzające oraz 52 dodatkowe instrukcje SSE zapewniające pełną zgodność z SSE1).

3DNow i Geode GX/LX

Geode GX i Geode LX dodane dwa nowe instrukcje 3DNow, które są aktualnie nieobecny we wszystkich innych procesorów.

3DNow "profesjonalne" instrukcje unikalne dla Geode GX/LX są następujące:

  • PFRSQRTV – Odwrotność aproksymacji pierwiastka kwadratowego dla pary 32-bitowych elementów pływających
  • PFRCPV – Odwrotność aproksymacji dla pary 32-bitowych pływaków

Zalety i wady

Jedną z zalet 3DNow jest możliwość dodawania lub mnożenia dwóch liczb, które są przechowywane w tym samym rejestrze . W SSE każdy numer może być łączony tylko z numerem na tej samej pozycji w innym rejestrze. Ta funkcja , znana jako pozioma w terminologii Intela, była głównym dodatkiem do zestawu instrukcji SSE3 .

Wadą 3DNow jest to, że instrukcje 3DNow i instrukcje MMX współdzielą ten sam plik rejestrów, podczas gdy SSE dodaje 8 nowych niezależnych rejestrów ( XMM0XMM7).

Ponieważ rejestry MMX/3DNow są współdzielone przez standardowe FPU x87 , instrukcje 3DNow i instrukcje x87 nie mogą być wykonywane jednocześnie. Jednakże, ponieważ jest on powiązany z FPU x87, stany rejestrów 3DNow i MMX mogą być zapisywane i przywracane przez tradycyjne x87 F(N)SAVEi F(N)RSTORinstrukcje. Ten układ umożliwił systemom operacyjnym obsługę 3DNow bez wyraźnych modyfikacji, podczas gdy rejestry SSE wymagały wyraźnej obsługi systemu operacyjnego, aby prawidłowo zapisywać i przywracać nowe rejestry XMM (za pomocą dodanych FXSAVEi FXRSTORinstrukcji).

Instrukcje FX* są uaktualnieniem do starszych instrukcji zapisywania i przywracania x87, ponieważ mogą one zapisywać nie tylko stany rejestrów SSE, ale także te stany rejestrów x87 (co oznacza, że ​​mogą również zapisywać rejestry MMX i 3DNow).

Na rdzeniach AMD Athlon XP i K8 (tj. Athlon 64 ) programiści asemblerowi zauważyli, że możliwe jest łączenie instrukcji 3DNow i SSE w celu zmniejszenia nacisku rejestrów , ale w praktyce trudno jest poprawić wydajność ze względu na instrukcje wykonywane na współdzielonych jednostki funkcjonalne.

Procesory obsługujące 3DNow

  • Wszystkie procesory AMD po K6-2 oparte na architekturze rodzin K6, Athlon, Athlon 64 i Phenom. Nieobsługiwane w procesorach architektury Bulldozer, Bobcat i Zen oraz ich pochodnych.
  • Ostatnim procesorem AMD APU obsługującym 3DNow jest A8-3870K.
  • National Semiconductor Geode , później AMD Geode.
  • Rdzenie VIA C3 (znane również jako Cyrix III) „Samuel”, „Samuel 2”, „Ezra” i „Eden ESP”.
  • Wciągarka IDT 2

Bibliografia

Dalsza lektura

Zewnętrzne linki