Jaka jest różnica między Intel 64 a AMD64?

29

Czy ktoś może wyjaśnić, czy istnieje jakaś różnica między architekturami intel64 i amd64?

Okaleczenie
źródło
3
IA64 = architektura VLIW Intel / HP Itanium. AMD64 to rozwinięte przez AMD rozszerzenie standardowego zestawu instrukcji x86.
6
Marketing AMD opracowało go, a następnie udzieliło licencji firmie Intel. AMD licencjonuje x86 od Intela, a Intel licencjonuje x64 od AMD. Zapewnia to, że żaden z nich nie może pozwać drugiego bez utraty prawa do sprzedaży całego składu procesora, ponieważ strzeliliby sobie w stopę.
1
Masz na myśli x86-64 lub IA64? Przeor jest taka sama jak AMD64 (dosłownie dokładny sam zestaw instrukcji, czy będzie trzeba ponownie skompilować wszystkie aplikacje dla jednego procesora lub innego), a drugi jest zupełnie inna architektura procesora.
Przełom
2
Mam na myśli x86-64. Intel początkowo używał nazw IA-32e i EM64T, zanim ostatecznie zdecydował się na Intel 64 do ich implementacji.
Mayhem

Odpowiedzi:

26

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.

Okaleczenie
źródło
Skąd przeczytałeś ten tekst?
Tamara Wijsman,
4
Cóż, niektóre fora / blogi + wikipedia ( en.wikipedia.org/wiki/EMT64#Intel_64 ). Przejrzałem także niektóre instrukcje od Intela i AMD.
Mayhem
@Nubok: Dodaj różnicę w implementacji architektury za pośrednictwem technologii (oczywiście wersja 64-bitowa)  !
user2284570,
IO-MMU to wielka sprawa - brak jej oznacza, że ​​musisz pochłonąć nietrywialną ilość wolnej pamięci do buforowania (64 MB jest obecnie domyślną wartością w Linuksie). Później Intel wprowadził coś podobnego do VT-d i wykorzystał go do irytującego poziomu segmentacji produktu - jednak niezawodność kodu (aw niektórych przypadkach krzemu) zwykle powodowała, że ​​nie był on domyślnie używany w Linuksie w oryginale cele.
GreenReaper
8

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.

Joachim Isaksson
źródło
3
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
user2284570
4
Źle: nawet niewielka różnica w ogólnych instrukcjach jest bardzo ważna Aby być uczciwym (1), powiedział, że ogólnie nie musisz znać tych różnic. Oczywiście istnieją szczególne przypadki, w których może to mieć znaczenie. (2) większość z nas nie pisze utwardzonej piaskownicy, która musi chronić wszelkie dostępne ścieżki instrukcji.
Eric W