В чем разница между Intel 64 и AMD64?


29

Может кто-нибудь объяснить, есть ли разница между архитектурами intel64 и amd64?


3
IA64 = архитектура Intel / HP Itanium VLIW. AMD64 - это расширение, разработанное AMD для стандартного набора команд x86.

6
Маркетинг. AMD разработала его, а затем лицензировала Intel. AMD лицензирует x86 от Intel, а Intel лицензирует x64 от AMD. Это гарантирует, что ни один из них не сможет подать в суд на другого без потери прав на продажу всей линейки своих процессоров, поскольку они будут стрелять себе в ногу.

1
Вы имеете в виду x86-64 или IA64? До такого же , как AMD64 (буквально точного и того же набора инструкций, или вам необходимо будет пересобрать все заявки на один процессор или другой), а второе представляет собой совершенно другая архитектура процессора.
Прорыв

2
Я имею в виду x86-64. Изначально Intel использовала имена IA-32e и EM64T, прежде чем окончательно остановилась на Intel 64 для их реализации.
Mayhem

Ответы:


26

Из того, что я прочитал, 64-разрядная технология расширенной памяти (EM64T) является реализацией AMD AMD64, и различия между Intel64 и AMD64 заключаются в следующем:

  • Инструкции EM64T BSF и BSR действуют по-разному, когда источник равен 0, а размер операнда составляет 32 бита. Процессор устанавливает нулевой флаг и оставляет верхние 32 бита места назначения неопределенными.

  • AMD64 поддерживает 3DNow! инструкции. Это включает в себя предварительную выборку с кодом операции 0x0F 0x0D и PREFETCHW, которые полезны для сокрытия задержки памяти.

  • EM64T не имеет возможности сохранять и восстанавливать сокращенную (и, следовательно, более быструю) версию состояния с плавающей запятой (включая инструкции FXSAVE и FXRSTOR).

  • В EM64T отсутствуют некоторые специфичные для модели регистры, которые считаются архитектурными для AMD64. К ним относятся SYSCFG, TOP_MEM и TOP_MEM2.

  • EM64T поддерживает обновление микрокода, как и в 32-битном режиме, тогда как процессоры AMD64 используют другой формат обновления микрокода и управляют MSR.

  • Инструкция CPUID EM64T очень зависит от производителя, как это обычно для процессоров в стиле x86.

  • EM64T поддерживает инструкции MONITOR и MWAIT, которые используются операционными системами для лучшей работы с Hyper-threading.

  • Системы AMD64 позволяют использовать апертуру AGP в качестве IO-MMU. Операционные системы могут воспользоваться этим, чтобы позволить обычным устройствам PCI DMA в памяти выше 4 ГБ. Системы EM64T требуют использования отказов буфера, которые медленнее.

  • SYSCALL и SYSRET также поддерживаются только в режиме IA-32e (не в режиме совместимости) на EM64T. SYSENTER и SYSEXIT поддерживаются в обоих режимах.

  • Близкие ветви с префиксом 0 × 66 (размер операнда) ведут себя по-разному. Один тип ЦП очищает только верхние 32 бита, а другой тип очищает верхние 48 бит.


Откуда вы прочитали этот текст?
Тамара Вийсман

4
Ну, некоторые форумы / блоги + Википедия ( en.wikipedia.org/wiki/EMT64#Intel_64 ). Также я просмотрел несколько руководств от Intel и AMD.
Mayhem

@Nubok: Пожалуйста, добавьте разницу для реализации архитектуры через технологии (конечно, 64-битная версия)  !
user2284570

IO-MMU представляет собой большую проблему - его отсутствие означает, что для буферизации необходимо использовать нетривиальный объем памяти (64 МБ - текущее значение по умолчанию в Linux). Позже Intel представила нечто похожее на VT-d и использовала его для раздражающего уровня сегментации продукта - однако надежность кода (а в некоторых случаях и кремний), как правило, приводила к тому, что он не использовался по умолчанию в Linux для оригинального цели.
GreenReaper

8

На странице x86 Википедии вы можете прочитать

В 1999-2003 гг. AMD расширила эту 32-разрядную архитектуру до 64-разрядных и назвала ее x86-64 в ранних документах, а затем - AMD64. Вскоре Intel приняла архитектурные расширения AMD под названием IA-32e, которое впоследствии было переименовано в EM64T и, наконец, в Intel 64.

Другими словами, дифференциатором является в основном маркетинг. Существуют специфичные для Intel и AMD расширения набора инструкций, но пока вы пишете программы в пространстве пользователя, вам обычно не нужно знать разницу.


3
you don't generally need to know the differenceНеправильно: даже незначительная разница в общих инструкциях очень важна. Bugs.chromium.org/p/nativeclient/issues/detail?id=2010
user2284570

4
Неправильно: даже незначительная разница в общих инструкциях очень важна. Чтобы быть справедливым, (1) он сказал, что вам обычно не нужно знать эти различия. Очевидно, есть конкретные случаи, когда это может иметь значение. (2) большинство из нас не пишут защищенную песочницу, которая должна защищать все возможные пути инструкций.
Eric W
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.