Чтение онлайн

ЖАНРЫ

Ассемблер для процессоров Intel Pentium

Магда Юрий

Шрифт:

Появление процессора Pentium Pro ознаменовало собой значительный шаг вперед по сравнению с Intel Pentium. Несмотря на то что в процессоре Intel Pentium впервые была реализована суперскалярная форма архитектуры х86, она имела определенные ограничения. В этой архитектуре имеется всего два целочисленных конвейера, которые могут обрабатывать две команды параллельно, но только если они следуют друг за другом – здесь отсутствует алгоритм, позволяющий предсказывать ветвления в программе.

В процессоре Pentium Pro реализована новая модель суперскалярной архитектуры, позволяющая одновременно выполнять пять команд. Внедрение такой архитектуры позволило достичь высокой пропускной способности,

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

Суперскалярная архитектура процессора Pentium Pro позволяет выполнять максимум три машинные команды в течение одного цикла. Кроме того, в процессоре используется концепция динамического выполнения команд (изменение порядка выполнения команд, улучшенный алгоритм прогнозирования ветвлений и опережающего выполнения команд). Суперскалярная архитектура реализована с помощью трех блоков декодирования команд, работающих параллельно. Команды разбиваются на так называемые микрооперации, которые выполняются параллельно в пяти исполнительных модулях: двух целочисленных, двух FPU (Floating-Point Unit) и одном модуле интерфейса памяти.

В программно-аппаратную архитектуру процессора входит и специальный модуль отложенных операций (retirement unit), позволяющий выполнять последовательность микроопераций в нужном порядке даже при наличии ветвлений.

По сравнению с процессором Intel Pentium, в Pentium Pro был увеличен размер кэша второго уровня (2nd-level cache) до 256 Кбайт. Процессор Pentium Pro имеет 36-разрядную адресную шину, позволяющую расширить пространство физических адресов до 64 Гбайт.

В процессоры Pentium Pro встроена вторичная кэш-память, соединенная с центральным процессором отдельной шиной. Эта кэш-память, представляющая собой статическое (static) оперативное запоминающее устройство (Random Access Memory, RAM) емкостью 256 или 512 Кбайт, значительно повышает производительность вычислительных систем на основе Pentium Pro.

В процессоры Intel Pentium II семейства Р6 была включена поддержка технологии ММХ. Что касается процессоров Pentium II Xeon, то в них были сконцентрированы все преимущества предыдущих поколений процессоров Intel. Это поколение процессоров было разработано с 4– и 8-кратной масштабируемостью, а также с кэшем второго уровня, имеющим размер 2 Мбайт. Этот процессор предназначается в основном для высокопроизводительных серверов и рабочих станций.

Еще один представитель линейки – процессор Intel Celeron – базируется на архитектуре IA-32 и предназначен для применения в настольных компьютерах. К особенностям этого процессора следует отнести наличие встроенного кэша второго уровня размером 128 Кбайт, а также низкую стоимость.

Значительный шаг вперед был сделан при разработке процессора Intel Pentium III, в котором была реализована технология SSE (Streaming SIMD Extensions – потоковые SIMD-расширения). Эта технология является дальнейшим развитием технологии ММХ. В ней используются 128-разрядные регистры для выполнения параллельных операций с упакованными числами с плавающей точкой. Кроме того, в процессорах Pentium III Xeon для повышения производительности имеется улучшенный кэш передачи данных (advanced transfer cache).

Процессор Intel Pentium 4 является последним в линейке процессоров фирмы Intel, базирующихся на архитектуре IA-32, причем здесь была использована микроархитектура NetBurst.

В основе этой микроархитектуры лежит оригинальная разработка Intel, позволяющая процессору функционировать на более высокой тактовой частоте, что значительно повышает производительность Pentium 4 по сравнению с предыдущими поколениями процессоров. Микроархитектура NetBurst имеет следующие особенности:

– улучшенное схемотехническое и конструктивное исполнение, обеспечивающее высокую производительность операций (rapid execution engine);

– поддержка технологии Hyper Pipelined;

– поддержка технологии Advanced Dynamic Execution;

– принципиально новая система кэширования команд-данных;

– поддержка технологии SSE2 (Streaming SIMD Extensions 2), которая обеспечивает расширение возможностей технологий ММХ и SSE фирмы Intel за счет включения в систему команд 128-разрядной целочисленной арифметики и 128-разрядной арифметики чисел с плавающей точкой двойной точности;

– гибкая система управления кэшированием данных и памятью.

Аппаратно микроархитектура NetBurst реализована в виде быстродействующей (400 МГц) системной шины, обладающей впечатляющими возможностями по обработке данных:

– производительность операций – до 3,2 Гбайт/с, что более чем в 3 раза превышает производительность Pentium III;

– тактовая частота шины – 100 МГц с возможностью учетверения скорости (400 МГц);

– высокая степень конвейеризации транзакций;

– возможность доступа к 128-разрядным данным посредством 64-разрядных элементов;

– совместимость с существующим программным обеспечением и операционными системами, разработанными для архитектуры IA-32.

Глава 2
Основы создания приложений на языке ассемблера

Материал этой главы посвящен основам создания программ на языке ассемблера, известном также как язык символического кодирования. Язык ассемблера является одним из самых сложных, поскольку требует знания аппаратно-программной архитектуры процессора и особенностей его функционирования. Сложная внутренняя структура, разнообразные форматы команд, многочисленные режимы адресации процессоров Intel x86 ограничивают возможности разработки сложных и объемных программ на языке ассемблера.

Если же требуется разработать небольшое быстрое приложение, потребляющее мало ресурсов, то язык ассемблера является очень серьезной альтернативой языкам высокого уровня. Кроме того, в любых сложных программах всегда существуют критические секции, требующие интенсивных и быстрых вычислений, которые придется разрабатывать не на языке высокого уровня, а на ассемблере.

Для разработки программ на ассемблере создана масса инструментальных средств, но мы будем использовать макроассемблер MASM фирмы Microsoft, включающий в себя несколько утилит. Выбор макроассемблера MASM в качестве среды разработки сделан исходя из следующих соображений:

– MASM является наиболее популярной средой программирования на ассемблере;

– последние версии макроассемблера MASM (7.10.хххх) позволяют работать с мультимедийными расширениями (SIMD), которые поддерживаются последними поколениями процессоров. Это является очень важным фактором, поскольку очень мало компиляторов ассемблера поддерживают эти технологии;

– соглашения и форматы файлов, принятые в MASM, поддерживаются большинством компиляторов языка ассемблера;

– стандарты и соглашения, принятые в MASM, полностью совместимы с теми, что приняты в наиболее популярных средах разработки (Microsoft Visual C++ .NET и Borland Delphi 2005). Это свойство позволяет включать скомпилированные макроассемблером объектные файлы в программы, разработанные на языках высокого уровня.

Поделиться с друзьями: