Wiem, że x87 ma wyższą wewnętrzną precyzję, która jest prawdopodobnie największą różnicą, jaką ludzie widzą między nią a operacjami SSE. Ale muszę się zastanowić, czy jest jakaś inna korzyść z używania x87? Mam nawyk wpisywania -mfpmath=sse
automatycznie w każdym projekcie i zastanawiam się, czy brakuje mi czegoś innego, co oferuje FP7 x87.Korzyści z x87 przez SSE
Odpowiedz
x87 ma pewne instrukcje, które nie istnieją w zestawie instrukcji SSE.
Z głowy to wszystko trygonometryczne rzeczy, takie jak fsin, fcos, fatan, fatan2 i niektóre elementy wykładnicze/logarytmiczne.
Jeśli twój kod spędza większość czasu na trygonometrii, możesz zauważyć lekkie zwiększenie wydajności, jeśli używasz x87. Niektóre algorytmy DSP należą do tej kategorii.
Jednak w przypadku kodu matematycznego, w którym spędzasz większość czasu, robiąc dodatki, multiplikacje itp. SSE jest zwykle szybsze.
- Jest obecny na naprawdę starych maszynach.
EOF
Istnieje znaczne dziedzictwo i mała kompatybilność systemu z x87: SSE to stosunkowo nowa funkcja procesora. Jeśli twój kod ma działać na wbudowanym mikrokontrolerze, istnieje spora szansa, że nie będzie obsługiwał instrukcji SSE.
Nawet systemy, które nie mają zainstalowanej jednostki FPU, często będą zapewniały emulatory 80x87, co spowoduje, że kod będzie działać w sposób przezroczysty (mniej więcej). Nie znam żadnych emulatorów SSE - na pewno jeden z moich systemów nie ma żadnych, więc najnowsze wersje elementów Adobe Photoshop nie działają.
Instrukcje 80x87 mają dobre cechy działania równoległego, które zostały dokładnie zbadane i przeanalizowane od czasu ich wprowadzenia w 1982 roku. Różne klony x86 mogą blokować instrukcje SSE.
Twój wynik jest następujący: (a) x87 ma dobrą starszą obsługę (b) x87 został dobrze przebadany. –
I (c) ustalono x87. – asdf
Nie jestem w 100% pozytywny, ale wierzę, że na wielu 32-bitowych procesorach bez FPU, matematyka zmiennoprzecinkowa mogłaby być wykonana szybciej na wartościach 80-bitowych niż wartości 64-bitowe [a 53-bitowa mantysa i 12 -bit wykładnik nie jest szybszy do pracy niż 64-bitowy mantysa i 16-bitowy wykładnik, ale wymaga dodatkowego czasu na spakowanie i rozpakowanie].Zastanawiam się, dlaczego format 80-bitowy przez ostatnie kilka dekad nie dawał sobie spokoju, ponieważ jako format * computation * wydaje się lepszy pod każdym względem niż 64-bitowe podwójne. – supercat
instrukcje FPU są mniejsze niż instrukcji SSE, dzięki czemu są idealne do demoscenowych rzeczy
Nie kupuję tego; z pewnością poważni programiści sceny demo kompresują swoje strumienie instrukcji; specyficzne dla domeny narzędzia kompresujące powinny być w stanie kompresować instrukcje SSE tak samo dobrze jak instrukcje x87. –
@StephenCanon (nieskompresowany), ale twój punkt jest właściwy, jeśli używasz jakiejkolwiek kompresji – Quonux
Konwersja między float
i double
jest szybciej x87 (zwykle za darmo) niż z SSE. W przypadku x87 można załadować i zapisać do stosu rejestrów lub z niego jeden zestaw, a następnie można go przekonwertować do lub z rozszerzonej precyzji bez dodatkowych kosztów. W przypadku SSE wymagane są dodatkowe instrukcje, aby wykonać konwersję typu, jeśli typy są mieszane, ponieważ rejestry zawierają wartości float
lub . Te instrukcje konwersji są dość szybkie, ale zajmują więcej czasu.
Prawdziwą poprawką jest powstrzymanie się od nadmiernego mieszania float
i , aby nie używać x87, oczywiście.
- 1. SSE powrót rejestr z SSE niepełnosprawnych
- 2. Błąd SSE Uncaught: SECURITY_ERR: DOM Exception 18 z serwerem udostępniającym zdarzenia wysłane przez serwer (SSE)
- 3. SSE (SIMD): pomnóż wektor przez skalarną
- 4. Jak dekompilować obliczenia zespołu x87?
- 5. SSE z podziałem całkowitym?
- 6. Pierwsze kroki z SSE
- 7. Nieznajoma SSE z funkcjami
- 8. Czy korzystasz z Rejestrujących wysyłane przez serwer HTML5 (SSE)?
- 9. Korzyści z używania konstruktora?
- 10. Korzyści z asertywnego programowania
- 11. Korzyści z generycznych konstruktorów
- 12. Korzyści z Plugin FailSafe Maven
- 13. Korzyści z MVC nad MVP
- 14. Jakie są korzyści z curry?
- 15. C++ SSE SIMD framework
- 16. Jakiekolwiek korzyści związane z wydajnością przy przekazywaniu typów pierwotnych przez odniesienie zamiast zwracania przez wartość?
- 17. Logarytm z SSE lub przejście na FPU?
- 18. 64 SSE typy danych
- 19. SSE, wewnętrzne i wyrównanie
- 20. Multiply-odejmować w SSE
- 21. Interpolacja dwuliniowa SSE
- 22. Neonowy odpowiednik SSE intrinsics
- 23. Redukcja SSE wektora zmiennoprzecinkowego
- 24. Instrukcje SSE: Bajt + krótki
- 25. 128-bitowy licznik SSE?
- 26. SSE 4.2 Przetwarzanie pliku CSV
- 27. Korzyści z używania podmodulatorów Bower over Git
- 28. Korzyści z wydajności natywnych złączy Apache Tomcat
- 29. Korzyści z 64-bitowej platformy Java
- 30. Jakieś korzyści z używania CHAR nad VARCHAR?
@LiraNuna naprawdę? Nie jestem świadomy żadnego opcode'a, który bezpośrednio oblicza grzech lub cos z zestawu instrukcji SSE. –
Podaj źródło, Quonux. – asdf
http://gruntthepeon.free.fr/ssemath/ – MickLH