x86-64

Поделись знанием:
(перенаправлено с «X64»)
Перейти к: навигация, поиск

x86-64 (также AMD64/Intel64/EM64T) — 64-битное расширение, набор команд для архитектуры x86, разработанное компанией AMD, позволяющее выполнять программы в 64-разрядном режиме.

Это расширение архитектуры x86 с почти полной обратной совместимостью.

Корпорации Microsoft и Oracle используют для обозначения этого набора инструкций термин «x64», однако каталог с файлами для архитектуры в 64-разрядных Microsoft Windows называется «amd64» («i386» для архитектуры x86).

Набор команд x86-64 в настоящее время поддерживается:





Название технологии

Существует несколько вариантов названий этой технологии, которые иногда приводят к путанице.

  • x86-64 — первоначальный вариант. Именно под этим названием фирмой AMD была опубликована первая предварительная спецификация.
  • x64 — официальное название версий операционных систем Windows и Solaris, также используемое как название архитектуры фирмами Microsoft и Oracle.
  • AA-64 (AMD Architecture 64) — так архитектуру назвал популярный неофициальный справочник sandpile.org (внеся информацию практически сразу после публикаций первой предварительной спецификации) по аналогии с IA-64.
  • Hammer Architecture — название по первым ядрам процессоров, её поддерживавшим — AMD Clawhammer (гвоздодёр) и AMD Sledgehammer (кувалда).
  • AMD64 — после выпуска первых Clawhammer и Sledgehammer в названии архитектуры появилось название фирмы-разработчика AMD. Сейчас является официальным для реализации AMD.
  • Yamhill Technology — первое название реализации технологии компанией Intel. Иногда упоминалось название CT (Clackamas Technology).
  • EM64T — первое официальное название реализации Intel. Расшифровывалось как Extended Memory 64 Technology.
  • IA-32e — иногда встречалось совместно с EM64T, чаще для обозначения длинного режима, который в документации Intel называется «режимом IA-32e».
  • Intel 64 — текущее официальное название архитектуры Intel. Постепенно Intel отказывается от наименований IA-32, IA-32e и EM64T в пользу этого названия, которое теперь является единственным официальным для этой архитектуры со стороны компании Intel.

На сегодняшний день наиболее распространёнными являются «x64», «x86-64» и «AMD64». Иногда упоминание AMD вводит пользователей в заблуждение, вплоть до того, что они отказываются использовать дистрибутивы родных версий операционной системы, мотивируя это тем, что на их процессоре Intel версия для AMD не будет работать. На самом деле распространители ПО используют название amd64 лишь потому, что именно AMD была пионером в разработке этой технологии. Часто пользователи путают архитектуру x86-64 с IA-64, ошибочно скачивая ПО для этой архитектуры, и затем обнаруживают, что программа не запускается. Во избежание подобных ошибок следует помнить, что Intel 64 и IA-64 — это совершенно разные, несовместимые между собой микропроцессорные архитектуры. Представители Intel 64 — последние модели Pentium 4, ряд моделей Celeron D, семейство Core 2, Core i3, Core i5, Core i7 и некоторые модели Intel Atom; представители IA-64 — семейства Itanium и Itanium 2.

Режимы работы

Процессоры архитектуры поддерживают два режима работы: Long mode («длинный» режим) и Legacy mode («унаследованный», режим совместимости с 32-битным x86).

Long Mode

«Длинный» режим — «родной» для процессоров AMD64. Этот режим даёт возможность воспользоваться всеми дополнительными преимуществами, предоставляемыми архитектурой AMD64. Для использования этого режима необходима 64-битная операционная система, например, Windows Server 2003/2003R2/2008/2008R2/2012, Windows XP Professional x64 Edition, Windows Vista x64, Windows 7/8/8.1/10 x64 или 64-битные варианты UNIX-подобных систем GNU/Linux, FreeBSD, OpenBSD, NetBSD (чистые 64-битные сборки, однако, есть возможность запуска 32-битных приложений), Solaris (смешанная 32/64 сборка с разными ядрами для 32- и 64-битных процессоров), Mac OS X (смешанная 32/64 сборка с 32-битным ядром, начиная с версии 10.4.7).

Этот режим позволяет выполнять 64-битные программы; также (для обратной совместимости) предоставляется поддержка выполнения 32-битного кода, например, 32-битных приложений, хотя 32-битные программы не смогут использовать 64-битные системные библиотеки, и наоборот. Чтобы справиться с этой проблемой, большинство 64-разрядных операционных систем предоставляют два набора необходимых системных файлов: один — для родных 64-битных приложений, и другой — для 32-битных программ. (Этой же методикой пользовались ранние 32-битные системы — например, Windows 95 — для выполнения 16-битных программ.)

В «длинном» режиме упразднён ряд «рудиментов» архитектуры x86, таких, как режим виртуального 8086, сегментированная модель памяти (однако, осталась возможность использования сегментов FS и GS, что полезно для быстрого нахождения важных данных потока при переключении задач), аппаратная мультизадачность, а также ряд команд, как реализующих упраздненные возможности, так и работающие с BCD-числами, которые в новых программах практически не использовались. Среди особенностей «длинного» режима следует отметить тот факт, что он активируется установкой флага CR0.PG, который используется для включения страничного MMU (при условии что такое переключение разрешено (EFER.LME=1), в противном случае просто произойдет включение MMU в «унаследованном» режиме). Таким образом, невозможно исполнение 64-битного кода с запрещённым страничным преобразованием. Это создаёт определенные трудности в программировании, поскольку при переключении из «длинного» в «унаследованный» режим и обратно (например, для вызова функций BIOS или DOS, монитором виртуальной машины, и т. д.) требуется двойной сброс MMU, для чего код переключения должен находиться в тождественно отображённой странице.

Legacy Mode

Данный «унаследованный» режим позволяет процессору AMD64 выполнять инструкции, рассчитанные для процессоров x86, и предоставляет полную совместимость с 32-битным кодом и операционными системами. В этом режиме процессор ведёт себя точно так же, как x86-процессор, например Athlon или Pentium III, и дополнительные функции, предоставляемые архитектурой AMD64 (например, дополнительные регистры), недоступны. В этом режиме 64-битные программы и операционные системы работать не будут.

Особенности архитектуры

Разработанный компанией AMD набор инструкций x86-64 (позднее переименованный в AMD64) — расширение архитектуры Intel IA-32 (x86-32). Основной отличительной особенностью AMD64 является поддержка 64-битных регистров общего назначения, 64-битных арифметических и логических операций над целыми числами и 64-битных виртуальных адресов. Для адресации новых регистров для команд введены так называемые «префиксы расширения регистра», для которых был выбран диапазон кодов 40h-4Fh, использующихся для команд INC <регистр> и DEC <регистр> в 32-битных режимах. Команды INC и DEC в 64-битном режиме должны кодироваться в более общей, двухбайтовой форме.

Архитектура x86-64 имеет:

  • 16 целочисленных 64-битных регистра общего назначения (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 — R15);
  • 8 80-битных регистров с плавающей точкой (ST0 — ST7);
  • 8 64-битных регистров Multimedia Extensions (MM0 — MM7, имеют общее пространство с регистрами ST0 — ST7);
  • 16 128-битных регистров SSE (XMM0 — XMM15);
  • 64-битный указатель RIP и 64-битный регистр флагов RFLAGS.

Сегментная модель организации памяти

Разрабатывая архитектуру x86-64, инженеры корпорации AMD решили навсегда покончить с главным «рудиментом» архитектуры x86 — сегментной моделью памяти, которая поддерживалась ещё со времён 8086. Однако из-за этого при разработке новой версии своего продукта для виртуализации программисты компании VMware столкнулись с непреодолимыми трудностями при реализации виртуальной машины для 64-битных гостевых систем.[1] Поскольку для отделения кода монитора от кода «гостя» программой использовался механизм сегментации, эта задача стала практически неразрешимой.

Осознав ошибку, AMD вернула ограниченный вариант сегментной организации памяти, начиная с ревизии D архитектуры AMD64, что позволило запускать 64-битные ОС в виртуальных машинах. Intel этому примеру не последовала, и на её процессорах, не поддерживающих средства аппаратной виртуализации[какие?], запустить 64-битную виртуальную машину нельзяК:Википедия:Статьи без источников (тип: не указан)[источник не указан 4485 дней]. Для проверки того, возможен ли на процессоре запуск 64-битных гостевых ОС, VMware предоставляет вместе со своими продуктами специальную утилиту.

Запуск, установка 64-битных гостевых систем на данный момент (2013 г.) возможна, продукт компании VMware — ESXi (workstation и тд.) — прекрасно поддерживает архитектуру x86-64.

Следует отметить, что первоначально попавшие «под нож» команды LAHF и SAHF, которые также активно используются ПО виртуализации, затем были возвращены в систему команд. С распространением средств аппаратной виртуализации (Intel VT, AMD-V) потребность в сегментации постепенно отпадет.

См. также

Напишите отзыв о статье "X86-64"

Примечания

  1. www.pagetable.com/?p=25 «The AMD64 …retired ..most of segmentation. But this broke VMware. While VMware could still virtualize 32 bit operating systems on AMD64 CPUs, they could not virtualize 64 bit operating systems, because they required segment limits.»

Ссылки

  • [techreport.com/review/8131/64-bit-computing-in-theory-and-practice 64-bit computing in theory and practice]
  • [developer.amd.com/resources/documentation-articles/developer-guides-manuals/ AMD documentation]
  • [www.intel.ru/content/www/ru/ru/architecture-and-technology/microarchitecture/intel-64-architecture-general.html Intel 64]
  • [www.intel.ru/content/www/ru/ru/processors/architectures-software-developer-manuals.html Руководства для разработчиков приложений для 64- и 32-разрядных архитектур Intel]
  • [ark.intel.com/ru/ Характеристики микропроцессоров Intel]
  • [www.viva64.com/ru/a/0029/ Архитектура AMD64 (EM64T)]
  • Крис Касперски. «Архитектура x86-64 под скальпелем ассемблерщика». Статья из журнала «[xakep.ru/ Хакер]», выпуск #083, ноябрь 2005, страница 118.

Отрывок, характеризующий X86-64

– Но между тем, чтобы не признавать императором, и тем, чтобы называть генералом Буонапарте, есть разница, – сказал Болконский.
– В том то и дело, – смеясь и перебивая, быстро говорил Долгоруков. – Вы знаете Билибина, он очень умный человек, он предлагал адресовать: «узурпатору и врагу человеческого рода».
Долгоруков весело захохотал.
– Не более того? – заметил Болконский.
– Но всё таки Билибин нашел серьезный титул адреса. И остроумный и умный человек.
– Как же?
– Главе французского правительства, au chef du gouverienement francais, – серьезно и с удовольствием сказал князь Долгоруков. – Не правда ли, что хорошо?
– Хорошо, но очень не понравится ему, – заметил Болконский.
– О, и очень! Мой брат знает его: он не раз обедал у него, у теперешнего императора, в Париже и говорил мне, что он не видал более утонченного и хитрого дипломата: знаете, соединение французской ловкости и итальянского актерства? Вы знаете его анекдоты с графом Марковым? Только один граф Марков умел с ним обращаться. Вы знаете историю платка? Это прелесть!
И словоохотливый Долгоруков, обращаясь то к Борису, то к князю Андрею, рассказал, как Бонапарт, желая испытать Маркова, нашего посланника, нарочно уронил перед ним платок и остановился, глядя на него, ожидая, вероятно, услуги от Маркова и как, Марков тотчас же уронил рядом свой платок и поднял свой, не поднимая платка Бонапарта.
– Charmant, [Очаровательно,] – сказал Болконский, – но вот что, князь, я пришел к вам просителем за этого молодого человека. Видите ли что?…
Но князь Андрей не успел докончить, как в комнату вошел адъютант, который звал князя Долгорукова к императору.
– Ах, какая досада! – сказал Долгоруков, поспешно вставая и пожимая руки князя Андрея и Бориса. – Вы знаете, я очень рад сделать всё, что от меня зависит, и для вас и для этого милого молодого человека. – Он еще раз пожал руку Бориса с выражением добродушного, искреннего и оживленного легкомыслия. – Но вы видите… до другого раза!
Бориса волновала мысль о той близости к высшей власти, в которой он в эту минуту чувствовал себя. Он сознавал себя здесь в соприкосновении с теми пружинами, которые руководили всеми теми громадными движениями масс, которых он в своем полку чувствовал себя маленькою, покорною и ничтожной» частью. Они вышли в коридор вслед за князем Долгоруковым и встретили выходившего (из той двери комнаты государя, в которую вошел Долгоруков) невысокого человека в штатском платье, с умным лицом и резкой чертой выставленной вперед челюсти, которая, не портя его, придавала ему особенную живость и изворотливость выражения. Этот невысокий человек кивнул, как своему, Долгорукому и пристально холодным взглядом стал вглядываться в князя Андрея, идя прямо на него и видимо, ожидая, чтобы князь Андрей поклонился ему или дал дорогу. Князь Андрей не сделал ни того, ни другого; в лице его выразилась злоба, и молодой человек, отвернувшись, прошел стороной коридора.
– Кто это? – спросил Борис.
– Это один из самых замечательнейших, но неприятнейших мне людей. Это министр иностранных дел, князь Адам Чарторижский.
– Вот эти люди, – сказал Болконский со вздохом, который он не мог подавить, в то время как они выходили из дворца, – вот эти то люди решают судьбы народов.
На другой день войска выступили в поход, и Борис не успел до самого Аустерлицкого сражения побывать ни у Болконского, ни у Долгорукова и остался еще на время в Измайловском полку.


На заре 16 числа эскадрон Денисова, в котором служил Николай Ростов, и который был в отряде князя Багратиона, двинулся с ночлега в дело, как говорили, и, пройдя около версты позади других колонн, был остановлен на большой дороге. Ростов видел, как мимо его прошли вперед казаки, 1 й и 2 й эскадрон гусар, пехотные батальоны с артиллерией и проехали генералы Багратион и Долгоруков с адъютантами. Весь страх, который он, как и прежде, испытывал перед делом; вся внутренняя борьба, посредством которой он преодолевал этот страх; все его мечтания о том, как он по гусарски отличится в этом деле, – пропали даром. Эскадрон их был оставлен в резерве, и Николай Ростов скучно и тоскливо провел этот день. В 9 м часу утра он услыхал пальбу впереди себя, крики ура, видел привозимых назад раненых (их было немного) и, наконец, видел, как в середине сотни казаков провели целый отряд французских кавалеристов. Очевидно, дело было кончено, и дело было, очевидно небольшое, но счастливое. Проходившие назад солдаты и офицеры рассказывали о блестящей победе, о занятии города Вишау и взятии в плен целого французского эскадрона. День был ясный, солнечный, после сильного ночного заморозка, и веселый блеск осеннего дня совпадал с известием о победе, которое передавали не только рассказы участвовавших в нем, но и радостное выражение лиц солдат, офицеров, генералов и адъютантов, ехавших туда и оттуда мимо Ростова. Тем больнее щемило сердце Николая, напрасно перестрадавшего весь страх, предшествующий сражению, и пробывшего этот веселый день в бездействии.
– Ростов, иди сюда, выпьем с горя! – крикнул Денисов, усевшись на краю дороги перед фляжкой и закуской.
Офицеры собрались кружком, закусывая и разговаривая, около погребца Денисова.
– Вот еще одного ведут! – сказал один из офицеров, указывая на французского пленного драгуна, которого вели пешком два казака.
Один из них вел в поводу взятую у пленного рослую и красивую французскую лошадь.
– Продай лошадь! – крикнул Денисов казаку.
– Изволь, ваше благородие…
Офицеры встали и окружили казаков и пленного француза. Французский драгун был молодой малый, альзасец, говоривший по французски с немецким акцентом. Он задыхался от волнения, лицо его было красно, и, услыхав французский язык, он быстро заговорил с офицерами, обращаясь то к тому, то к другому. Он говорил, что его бы не взяли; что он не виноват в том, что его взяли, а виноват le caporal, который послал его захватить попоны, что он ему говорил, что уже русские там. И ко всякому слову он прибавлял: mais qu'on ne fasse pas de mal a mon petit cheval [Но не обижайте мою лошадку,] и ласкал свою лошадь. Видно было, что он не понимал хорошенько, где он находится. Он то извинялся, что его взяли, то, предполагая перед собою свое начальство, выказывал свою солдатскую исправность и заботливость о службе. Он донес с собой в наш арьергард во всей свежести атмосферу французского войска, которое так чуждо было для нас.
Казаки отдали лошадь за два червонца, и Ростов, теперь, получив деньги, самый богатый из офицеров, купил ее.
– Mais qu'on ne fasse pas de mal a mon petit cheval, – добродушно сказал альзасец Ростову, когда лошадь передана была гусару.
Ростов, улыбаясь, успокоил драгуна и дал ему денег.
– Алё! Алё! – сказал казак, трогая за руку пленного, чтобы он шел дальше.
– Государь! Государь! – вдруг послышалось между гусарами.
Всё побежало, заторопилось, и Ростов увидал сзади по дороге несколько подъезжающих всадников с белыми султанами на шляпах. В одну минуту все были на местах и ждали. Ростов не помнил и не чувствовал, как он добежал до своего места и сел на лошадь. Мгновенно прошло его сожаление о неучастии в деле, его будничное расположение духа в кругу приглядевшихся лиц, мгновенно исчезла всякая мысль о себе: он весь поглощен был чувством счастия, происходящего от близости государя. Он чувствовал себя одною этою близостью вознагражденным за потерю нынешнего дня. Он был счастлив, как любовник, дождавшийся ожидаемого свидания. Не смея оглядываться во фронте и не оглядываясь, он чувствовал восторженным чутьем его приближение. И он чувствовал это не по одному звуку копыт лошадей приближавшейся кавалькады, но он чувствовал это потому, что, по мере приближения, всё светлее, радостнее и значительнее и праздничнее делалось вокруг него. Всё ближе и ближе подвигалось это солнце для Ростова, распространяя вокруг себя лучи кроткого и величественного света, и вот он уже чувствует себя захваченным этими лучами, он слышит его голос – этот ласковый, спокойный, величественный и вместе с тем столь простой голос. Как и должно было быть по чувству Ростова, наступила мертвая тишина, и в этой тишине раздались звуки голоса государя.
– Les huzards de Pavlograd? [Павлоградские гусары?] – вопросительно сказал он.
– La reserve, sire! [Резерв, ваше величество!] – отвечал чей то другой голос, столь человеческий после того нечеловеческого голоса, который сказал: Les huzards de Pavlograd?
Государь поровнялся с Ростовым и остановился. Лицо Александра было еще прекраснее, чем на смотру три дня тому назад. Оно сияло такою веселостью и молодостью, такою невинною молодостью, что напоминало ребяческую четырнадцатилетнюю резвость, и вместе с тем это было всё таки лицо величественного императора. Случайно оглядывая эскадрон, глаза государя встретились с глазами Ростова и не более как на две секунды остановились на них. Понял ли государь, что делалось в душе Ростова (Ростову казалось, что он всё понял), но он посмотрел секунды две своими голубыми глазами в лицо Ростова. (Мягко и кротко лился из них свет.) Потом вдруг он приподнял брови, резким движением ударил левой ногой лошадь и галопом поехал вперед.
Молодой император не мог воздержаться от желания присутствовать при сражении и, несмотря на все представления придворных, в 12 часов, отделившись от 3 й колонны, при которой он следовал, поскакал к авангарду. Еще не доезжая до гусар, несколько адъютантов встретили его с известием о счастливом исходе дела.
Сражение, состоявшее только в том, что захвачен эскадрон французов, было представлено как блестящая победа над французами, и потому государь и вся армия, особенно после того, как не разошелся еще пороховой дым на поле сражения, верили, что французы побеждены и отступают против своей воли. Несколько минут после того, как проехал государь, дивизион павлоградцев потребовали вперед. В самом Вишау, маленьком немецком городке, Ростов еще раз увидал государя. На площади города, на которой была до приезда государя довольно сильная перестрелка, лежало несколько человек убитых и раненых, которых не успели подобрать. Государь, окруженный свитою военных и невоенных, был на рыжей, уже другой, чем на смотру, энглизированной кобыле и, склонившись на бок, грациозным жестом держа золотой лорнет у глаза, смотрел в него на лежащего ничком, без кивера, с окровавленною головою солдата. Солдат раненый был так нечист, груб и гадок, что Ростова оскорбила близость его к государю. Ростов видел, как содрогнулись, как бы от пробежавшего мороза, сутуловатые плечи государя, как левая нога его судорожно стала бить шпорой бок лошади, и как приученная лошадь равнодушно оглядывалась и не трогалась с места. Слезший с лошади адъютант взял под руки солдата и стал класть на появившиеся носилки. Солдат застонал.