Apa perbedaan antara Intel 64 dan AMD64?

29

Adakah yang bisa menjelaskan jika ada perbedaan antara arsitektur intel64 dan amd64?

Aniaya
sumber
3
IA64 = arsitektur Intel / HP Itanium VLIW. AMD64 adalah perpanjangan AMD yang dikembangkan dari set instruksi x86 standar.
6
Pemasaran. AMD mengembangkannya, lalu melisensikannya ke Intel. AMD melisensikan x86 dari Intel, dan Intel melisensikan x64 dari AMD. Ini memastikan bahwa tidak ada yang bisa menuntut yang lain tanpa kehilangan hak untuk menjual seluruh jajaran cpu mereka, karena mereka akan menembak diri mereka sendiri.
1
Apakah maksud Anda x86-64, atau IA64? Sebelumnya sama dengan AMD64 (secara harfiah set instruksi yang sama persis , atau Anda perlu mengkompilasi ulang semua aplikasi untuk satu CPU atau yang lain), dan yang terakhir adalah arsitektur CPU yang sama sekali berbeda.
Terobosan
2
Maksud saya x86-64. Intel awalnya menggunakan nama IA-32e dan EM64T sebelum akhirnya menetapkan Intel 64 untuk implementasinya.
Mayhem

Jawaban:

26

Dari apa yang saya baca, Memory 64-bit Technology (EM64T) yang diperluas adalah implementasi Intel AMD64 AMD dan perbedaan antara Intel64 dan AMD64 adalah:

  • Instruksi BSF dan BSR EM64T bertindak berbeda ketika sumbernya adalah 0 dan ukuran operan adalah 32 bit. Prosesor menetapkan flag nol dan membiarkan 32 bit atas tujuan tidak ditentukan.

  • AMD64 mendukung 3DNow! instruksi. Ini termasuk prefetch dengan opcode 0x0F 0x0D dan PREFETCHW, yang berguna untuk menyembunyikan latensi memori.

  • EM64T tidak memiliki kemampuan untuk menyimpan dan mengembalikan versi keadaan floating-point yang dikurangi (dan dengan demikian lebih cepat) (melibatkan instruksi FXSAVE dan FXRSTOR).

  • EM64T tidak memiliki beberapa register khusus model yang dianggap sebagai arsitektur AMD64. Ini termasuk SYSCFG, TOP_MEM, dan TOP_MEM2.

  • EM64T mendukung pembaruan mikrokode seperti dalam mode 32-bit, sedangkan prosesor AMD64 menggunakan format pembaruan mikrokode yang berbeda dan mengontrol MSR.

  • Instruksi CPUID EM64T sangat spesifik untuk vendor, seperti normal untuk prosesor gaya x86.

  • EM64T mendukung instruksi MONITOR dan MWAIT, yang digunakan oleh sistem operasi untuk menangani Hyper-threading dengan lebih baik.

  • Sistem AMD64 memungkinkan penggunaan aperture AGP sebagai IO-MMU. Sistem operasi dapat memanfaatkan ini untuk membiarkan perangkat PCI DMA normal ke memori di atas 4 GiB. Sistem EM64T membutuhkan penggunaan bouncing buffer, yang lebih lambat.

  • SYSCALL dan SYSRET juga hanya didukung dalam mode IA-32e (tidak dalam mode kompatibilitas) pada EM64T. SYSENTER dan SYSEXIT didukung di kedua mode.

  • Cabang dekat dengan awalan 0 × 66 (ukuran operan) berperilaku berbeda. Satu jenis CPU hanya membersihkan 32 bit teratas, sedangkan tipe lainnya membersihkan 48 bit teratas.

Aniaya
sumber
Dari mana Anda membaca teks itu?
Tamara Wijsman
4
Ya, beberapa forum / blog + wikipedia ( en.wikipedia.org/wiki/EMT64#Intel_64 ). Saya juga memeriksa beberapa manual dari Intel dan AMD.
Mayhem
@Nubok: Silakan tambahkan perbedaan untuk implementasi teknologi via arsitektur (tentu saja versi 64 bit)  !
user2284570
IO-MMU adalah masalah besar - jika kurang berarti Anda harus menyerap memori rendah yang tidak sepele untuk buffering (64MB adalah standar saat ini di Linux). Intel kemudian memperkenalkan sesuatu yang mirip dengan VT-d dan menggunakannya untuk tingkat segmentasi produk yang mengganggu - namun keandalan kode (dan dalam beberapa kasus silikon) cenderung membuatnya tidak digunakan secara default di Linux untuk yang asli. tujuan.
GreenReaper
8

Di halaman x86 Wikipedia Anda dapat membaca

Pada 1999-2003, AMD memperluas arsitektur 32-bit ini menjadi 64 bit dan menyebutnya sebagai x86-64 dalam dokumen awal dan kemudian sebagai AMD64. Intel segera mengadopsi ekstensi arsitektur AMD dengan nama IA-32e yang kemudian dinamai EM64T dan akhirnya Intel 64.

Dengan kata lain, pembeda utamanya adalah pemasaran. Ada ekstensi spesifik Intel dan AMD untuk set instruksi, tetapi selama Anda menulis program di ruang pengguna, Anda umumnya tidak perlu tahu bedanya.

Joachim Isaksson
sumber
3
you don't generally need to know the differenceSalah: bahkan perbedaan kecil pada instruksi generik adalah bug
user2284570
4
Salah: bahkan perbedaan kecil pada instruksi generik sangat penting. Agar adil, (1), katanya, Anda biasanya tidak perlu mengetahui perbedaan-perbedaan ini. Jelas ada kasus-kasus khusus di mana itu bisa menjadi masalah. (2) kebanyakan dari kita tidak menulis kotak pasir mengeras yang harus melindungi setiap dan semua jalur instruksi yang tersedia.
Eric W