Найти в Дзене
OVERCLOCKERS.RU

Разбор архитектуры AMD64

Архитектура AMD64 — это простое, но мощное 64-разрядное обратно совместимое расширение стандартной (устаревшей) архитектуры x86. Он добавляет 64-разрядную адресацию и расширяет ресурсы регистров для поддержки более высокой производительности перекомпилированных 64-разрядных программ, поддерживая при этом устаревшие 16-разрядные и 32-разрядные приложения и операционные системы без модификации или перекомпиляции. Это архитектурная основа, на которой новые процессоры могут обеспечить бесперебойную высокопроизводительную поддержку как огромного количества существующего программного обеспечения, так и 64-разрядного программного обеспечения, необходимого для высокопроизводительных приложений.Потребность в 64-разрядной архитектуре x86 обусловлена приложениями, которые используют большие объемы виртуальной и физической памяти, такими как высокопроизводительные серверы, системы управления базами данных и инструменты САПР. Эти приложения выигрывают как от 64-битных адресов, так и от увеличенного количества регистров. Небольшое количество регистров, доступных в устаревшей архитектуре x86, ограничивает производительность приложений с интенсивными вычислениями. Увеличение количества регистров повышает производительность многих таких приложений.

Особенности AMD64Архитектура AMD64 включает следующие функции:• Зарегистрируйте расширения:- 8 дополнительных регистров общего назначения (GPR).- Все 16 GPR имеют разрядность 64 бита.- 8 дополнительных регистров YMM/XMM.- Единая адресация байтовых регистров для всех GPR.- Префикс инструкции (REX) обращается к расширенным регистрам.• Длинный режим:- До 64 бит виртуального адреса.- 64-битный указатель инструкций (RIP).- Режим адресации данных относительно указателя инструкции.- Плоское адресное пространство.

Набор регистров прикладного программирования

-2

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

Набор инструкцийАрхитектура AMD64 поддерживает полный устаревший набор инструкций x86 с дополнительными инструкциями для поддержки длинного режима. Инструкции по прикладному программированию организованы в четыре подмножества следующим образом:• Инструкции общего назначения — это основные целочисленные инструкции x86, используемые практически во всех программах. Большинство этих инструкций загружают, хранят или работают с данными, расположенными в памяти общего назначения.регистры (GPR) или память. Некоторые инструкции изменяют последовательный ход программы, переходя в другие места программы.• Инструкции расширений потоковой передачи SIMD (SSE) — эти инструкции загружают, сохраняют или работают с данными, расположенными в основном в регистрах YMM/XMM. 128-битные медиа-инструкции работают с младшей половиной регистров YMM. Инструкции SSE выполняют целочисленные операции и операции с плавающей запятой над векторными (упакованными) и скалярными типами данных. Поскольку векторные инструкции могут независимо и одновременно выполнять одну операцию с несколькими наборами данных, они называются инструкциями с одной инструкцией и несколькими данными (SIMD). Они полезны для высокопроизводительных носителей и научных приложений, работающих с блоками данных.• Инструкции по мультимедийному расширению — включают инструкции по технологии MMX™ и технологии AMD 3DNow!™. Эти инструкции загружают, сохраняют или работают с данными, расположенными в основном в 64-битных регистрах MMX, которые отображаются на 80-битные регистры x87 с плавающей запятой. Как и инструкции SSE, они выполняют операции с целыми числами и числами с плавающей запятой над векторными (упакованными) и скалярными типами данных. Эти инструкции полезны в мультимедийных приложениях, не требующих высокой точности. Инструкции мультимедийного расширения используют насыщающие математические операции, которые не генерируют исключения операций. AMD отказалась от использования 3DNow! инструкции, которые были заменены их более эффективными аналогами SSE• Инструкции x87 с плавающей запятой — это инструкции с плавающей запятой, используемые в устаревших приложениях x87. Они загружают, хранят или оперируют данными, расположенными в 80-битных регистрах x87. Некоторые из этих инструкций прикладного программирования соединяют два или более из вышеперечисленных подмножеств. Например, есть инструкции, которые перемещают данные между регистрами общего назначения и регистрами YMM/XMM или MMX, а многие из целочисленных векторных (упакованных) инструкций могут работать либо с регистрами YMM/XMM, либо с регистрами MMX, хотя и не одновременно. Если инструкции соединяют два или более подмножества, их описания повторяются во всех подмножествах, к которым они применяются.

Инструкции по носителямМедиа-приложения, такие как обработка изображений, синтез музыки, распознавание речи, полномасштабное видео и рендеринг 3D-графики, имеют определенные характеристики:• Они обрабатывают большие объемы данных.• Они часто повторно выполняют одну и ту же последовательность операций над данными.• Данные часто представляются в виде небольших величин, например, 8 бит для значений пикселей, 16 бит для аудио.Выборки и 32 бита для координат объекта в формате с плавающей запятой.Инструкции SSE и MMX предназначены для ускорения этих приложений. В инструкциях используется форма векторной (или пакетной) параллельной обработки, известная как обработка одной инструкции и нескольких данных (SIMD). Данная векторная технология имеет следующие характеристики:• Один регистр может содержать несколько независимых фрагментов данных. Например, один регистр YMM может содержать 32 8-битных целочисленных элемента данных или восемь 32-битных элементов данных с плавающей запятой одинарной точности.• Векторные инструкции могут работать со всеми элементами данных в регистре независимо и одновременно. Например, инструкция PADDB, работающая с байтовыми элементами двух векторных операндов в 128-битных регистрах XMM, выполняет 16 одновременных сложений и возвращает 16 независимых результатов за одну операцию. Инструкции SSE и MMX продвигают векторную технологию SIMD на шаг вперед, включая специальные инструкции, которые выполняют операции, обычно используемые в мультимедийных приложениях. Например, графическое приложение, которое складывает значения яркости двух пикселей, должно предотвращать перенос операции добавления на маленькое значение, если результат переполняет регистр назначения, потому что результат переполнения может привести к неожиданным эффектам, таким как темный пиксель вместо яркого. ожидается один. Эти инструкциивключать арифметические инструкции насыщения, чтобы упростить этот тип операций. Результат, который в противном случае был бы зациклен из-за переполнения или потери значимости, вместо этого принудительно насыщается при наибольшем или наименьшем значении, которое может быть представлено в регистре назначения.

Инструкции с плавающей запятойАрхитектура AMD64 предоставляет три подмножества инструкций с плавающей запятой, используя три различных набора регистров:• Инструкции SSE поддерживают 32-разрядные операции с плавающей запятой одинарной точности и 64-разрядные операции с двойной точностью в дополнение к операциям с целыми числами. Поддерживаются операции как с векторными данными, так и со скалярными данными, с помощью специального механизма отчетов об исключениях с плавающей запятой. Эти операции с плавающей запятой соответствуют стандарту IEEE-754.• Инструкции MMX поддерживают операции с плавающей точкой одинарной точности. Поддерживаются операции как с векторными, так и со скалярными данными, но эти инструкции не поддерживают отчеты об исключениях с плавающей запятой.• Инструкции x87 с плавающей запятой поддерживают операции с плавающей запятой одинарной и двойной точности, а также 80-битные операции повышенной точности. Поддерживаются только скалярные данные со специальным механизмом отчетов об исключениях с плавающей запятой. Инструкции x87 с плавающей запятой содержат специальные инструкции для выполнения тригонометрических и логарифмических трансцендентных операций. Операции с плавающей запятой одинарной и двойной точности соответствуют стандарту IEEE-754. Максимальная производительность операций с плавающей запятой может быть достигнута при использовании 256-битных медиа-инструкций. Одна из этих векторных инструкций может поддерживать до восьми операций одинарной точности (или четырех операций двойной точности) параллельно. В общей сложности 16 256-битных регистров YMM, доступных в 64-битном режиме, ускоряют работу приложений, предоставляя больше регистров для хранения промежуточных результатов, тем самым уменьшая необходимость хранения этих результатов в памяти. Меньшее количество загрузок и хранилищ приводит к повышению производительности.

📃 Читайте далее на сайте