Czy ktoś może wyjaśnić, czy istnieje jakaś różnica między architekturami intel64 i amd64?
Czy ktoś może wyjaśnić, czy istnieje jakaś różnica między architekturami intel64 i amd64?
Odpowiedzi:
Z tego co przeczytałem Rozszerzona technologia pamięci 64-bitowa (EM64T) to implementacja AMD AMD64 AMD. Różnice między Intel64 i AMD64 są następujące:
Instrukcje BSF i BSR EM64T działają inaczej, gdy źródłem jest 0, a wielkość argumentu to 32 bity. Procesor ustawia flagę zerową i pozostawia niezdefiniowane górne 32 bity miejsca docelowego.
AMD64 obsługuje 3DNow! instrukcje. Obejmuje to pobieranie wstępne z kodem operacji 0x0F 0x0D i PREFETCHW, które są przydatne do ukrywania opóźnień pamięci.
EM64T nie ma możliwości zapisania i przywrócenia zmniejszonej (a tym samym szybszej) wersji stanu zmiennoprzecinkowego (obejmującej instrukcje FXSAVE i FXRSTOR).
EM64T nie ma niektórych rejestrów specyficznych dla modelu, które są uważane za architektoniczne dla AMD64. Należą do nich SYSCFG, TOP_MEM i TOP_MEM2.
EM64T obsługuje aktualizację mikrokodu, tak jak w trybie 32-bitowym, podczas gdy procesory AMD64 używają innego formatu aktualizacji mikrokodu i kontrolują MSR.
Instrukcja CPUID EM64T jest bardzo specyficzna dla dostawcy, co jest normalne w przypadku procesorów w stylu x86.
EM64T obsługuje instrukcje MONITOR i MWAIT, używane przez systemy operacyjne do lepszego radzenia sobie z Hyper-Threading.
Systemy AMD64 pozwalają na użycie otworu AGP jako IO-MMU. Systemy operacyjne mogą to wykorzystać, aby pozwolić zwykłym urządzeniom PCI na DMA do pamięci powyżej 4 GiB. Systemy EM64T wymagają użycia buforów odbijających, które są wolniejsze.
SYSCALL i SYSRET są również obsługiwane tylko w trybie IA-32e (nie w trybie zgodności) na EM64T. SYSENTER i SYSEXIT są obsługiwane w obu trybach.
W pobliżu gałęzi z prefiksem 0 × 66 (rozmiar argumentu) zachowują się inaczej. Jeden typ procesora usuwa tylko górne 32 bity, podczas gdy drugi typ usuwa 48 górnych bitów.
Na stronie Wikipedii x86 możesz przeczytać
W latach 1999-2003 AMD rozszerzyło tę 32-bitową architekturę do 64 bitów i we wczesnych dokumentach nazywało ją x86-64, a później AMD64. Intel wkrótce przyjął rozszerzenia architektoniczne AMD pod nazwą IA-32e, które później przemianowano na EM64T, a na końcu Intel 64.
Innymi słowy, wyróżnikiem jest głównie marketing. Istnieją pewne rozszerzenia specyficzne dla Intel i AMD, ale dopóki piszesz programy w przestrzeni użytkownika, zazwyczaj nie musisz znać różnicy.
you don't generally need to know the difference
Źle: nawet niewielka różnica w ogólnych instrukcjach to bardzo ważne błędy. Chromium.org/p/nativeclient/issues/detail?id=2010