
- •Развитие микропроцессорных архитектур
- •Введение ……………………………………………….........................................4
- •С благодарностью
- •Введение
- •1. История развития микропроцессоров фирмы Intel
- •2. Микропроцессоры класса cisc
- •Можно отметить следующие основные черты архитектуры amd64:
- •4. Микропроцессоры класса risc
- •5. Повышение производительности микропроцессоров
- •6. Конвейерная работа микропроцессоров
- •7. Метод переименования регистров (регистровые окна)
- •8.Принцип обработки операндов simd
- •8.1. Архитектура mmx
- •8.2 Технология sse
- •8.3 Технология sse2
- •9. Обзор simd-команд
- •9.1. Команды передачи данных
- •9.2 Арифметические команды
- •9.2.2 Команды упакованного/скалярного умножения и деления
- •9.2.3 Команды упакованого/скалярного вычисления квадратных корней
- •9.2.4. Команды упакованного/скалярного нахождения максимума и минимума
- •9.2.5 Команды сравнения
- •9.3. Команды преобразования типов данных
- •9.4. Логические команды
- •9.5. Дополнительные команды simd над целочисленными операндами
- •9.6. Команды перестановки
- •9.7. Команды управления состоянием
- •9.8. Команды технологии sse3
- •1. Преобразование чисел с плавающей запятой в целые числа. В эту подгруппу входит одна-единственная инструкция, которая работает на уровне арифметического сопроцессора x87 fpu.
- •3. Загрузка невыровненных переменных. Данную подгруппу представляет инструкция lddqu.
- •Команда monitor устанавливает диапазон адресов памяти (обычно используется одна строка кэша), по которому будет осуществляться отслеживание записей по стандартному протоколу write-back.
- •10. Технология Hyper-Threading
- •11. Vliw (epic) микропроцессор
- •Литература
- •Замковец Сергей Всеволодович Развитие микропроцессорных архитектур
- •119333, Москва, ул. Вавилова, д. 44, кор. 2
Можно отметить следующие основные черты архитектуры amd64:
- возможность обработки 64-разрядных целых чисел: все регистры общего назначения расширены с 32 разрядов до 64 разрядов, например rax, rbx и т.д., поэтому все арифметические и логические операции, операции память-регистр и регистр-память могут выполняться непосредственно над 64-разрядными целыми числами. Работа со стеком (команды Push и Pop) осуществляется с 8-байтными числами;
- дополнительные регистры: кроме увеличения размера регистров общего назначения произведено увеличение количества этих регистров с 8 (т.е. eax, ebx, ecx, edx, ebp, esp, esi, edi) до 16 (i.e. rax, rbx, rcx, rdx, rbp, rsp, rsi, rdi, r8, r9, r10, r11, r12, r13, r14, r15). Это позволяет хранить локальные переменные в регистрах, а не в стеке, и также позволяет хранить в регистрах часто используемые константы. Однако необходимо отметить, что количество регистров общего назначения еще значительно меньше, чем в RISC-микропроцессорах, в которых число этих регистров обычно равняется 32-64;
- большое виртуальное адресное пространство: архитектура AMD64 определяет 64-разрядный формат виртуального адреса, в котором младшие 48 разрядов используются для адресации. Таким образом, микропроцессор может адресовать до 256TB (248 байт) виртуального адресного пространства.
- удаление некоторых старых возможностей: ряд системных возможностей архитектуры x86, которые не используются в современных операционных системах, не доступны в архитектуре AMD64 в long (долгом 64-разрядном) режиме. Эти возможности включают сегментную адресацию, механизм переключения задач и виртуальный режим. Перечисленные возможности полностью остаются в legacy (наследственном) режиме, позволяя этим процессорам работать с 16- и 32-разрядными операционными системами без модификаций.
Для того, чтобы компьютер с 64-разрядным микропроцессором мог работать, необходимы 64-разрядные операционные системы и драйверы. В апреле 2005 года компания Microsoft начала распространять версию Windows ХР Professional х64 Edition, поддерживающую дополнительные инструкции AMD64 и ЕМ64Т. Однако полноценно 64-разрядные вычисления получили распространение только в 2007 году после выхода операционной системы Windows Vista х64. На первых порах серьезной проблемой было отсутствие 64-разрядных драйверов, однако к моменту выхода Windows 7 х64 в 2009 году большинство производителей предлагали 32- и 64-разрядные версии драйверов практически для всех своих новых устройств.
Необходимо сделать несколько замечаний относительно 64-разрядных микропроцессоров. С одной стороны можно сказать, что эти микропроцессоры открыли дверь в мир больших скоростей и производительности. Однако можно отметить и некоторые отрицательные моменты, связанные с расширением разрядности. В первую очередь с ростом разрядности увеличивается длина инструкций, а, следовательно, растет и время их загрузки и декодирования. Это означает, что 64-разрядный процессор должен иметь более быструю память и более емкий кэш.
Второе замечание связано с самой высокой разрядностью. Очевидно, что 64-разрядные целочисленные операнды целесообразно использовать, когда происходит обработка чисел порядка 233 и выше, т.е. в этом случае 32-разрядный микропроцессор будет складывать эти операнды за несколько тактов, а 64-разрядный справится с этой задачей за один такт. Однако в обычных офисных и домашних приложениях такие большие операнды встречаются очень редко. То же самое можно сказать и про 64-разрядную адресацию, т.е. такой большой объем памяти для обычных вычислений не нужен.
Как было сказано, микропроцессоры архитектуры AMD64 поддерживают два режима работы: Long mode («долгий» режим) и Legacy mode («наследственный», режим совместимости с x86).
«Долгий» режим — новый для процессоров AMD64. Этот режим дает возможность воспользоваться всеми дополнительными преимуществами, предоставляемыми архитектурой AMD64. Для использования этого режима необходима 64-битная операционная система, например, Windows XP Professional x64 Edition, Windows Vista x64.
Этот режим позволяет выполнять 64-разрядные программы, а также (для обратной совместимости) предоставляется поддержка выполнения 32-разрядных приложений, хотя 32-битные программы не смогут использовать 64-битные системные библиотеки. Чтобы справиться с этой проблемой, большинство 64-разрядных операционных систем предоставляют два набора необходимых системных файлов: один — для родных 64-разрядных приложений, и другой — для 32-разрядных программ. (Этой же методикой пользовались ранние 32-разрядные операционные системы — например, Windows 95 — для выполнения 16-разрядных программ)
В «долгом» режиме микропроцессора AMD64 не используется ряд таких возможностей архитектуры x86, как сегментированная модель памяти, аппаратная мультизадачность, а также ряд команд, как реализующих упраздненные возможности, так и работающие с BCD-числами (т.е. с двоично-десятичными), которые в новых программах практически не использовались.
Наследственный режим позволяет процессору AMD64 выполнять инструкции, рассчитанные для процессоров x86, и предоставляет полную совместимость с 32-разрядным кодом и операционными системами. В этом режиме процессор ведёт себя точно так же, как x86-процессор, например Pentium 4, и дополнительные функции, предоставляемые архитектурой AMD64 (например, дополнительные регистры) недоступны. В этом режиме 64-битные программы и операционные системы работать не будут.
Архитектура x86-64 поддерживает весь набор инструкций x86 и добавляет некоторые новые инструкции для поддержки long-режима. Команды разбиты на несколько подмножеств:
- команды общего назначения. Это основные x86 целочисленные команды, используемые во всех программах. Большинство из них предназначены для загрузки, сохранения, обработки данных, расположенных в регистрах общего назначения или памяти. Некоторые из этих инструкций управляют потоком команд, обеспечивая переход к другому месту в программе;
- 128-битные медиа-команды. Это SSE и SSE2 (streaming SIMD extension, об этих возможностях будет рассказано ниже) команды, предназначенные для загрузки, сохранения, или обработки данных, расположенных в 128-битных XMM регистрах. Они выполняют целочисленные операции или операции с плавающей запятой, операции над векторными (упакованными) и скалярными типами данных. Поскольку векторные инструкции могут независимо выполнять одну операцию над множеством данных, они называются SIMD (single-instruction, multiple-data) командами. Эти команды используются для медиа- и научных приложений для обработки блоков данных;
- 64-битные медиа-команды. Они сохраняют, восстанавливают и обрабатывают данные, расположенные в 64-битных MMX регистрах.
Из представленных особенностей CISC-микропроцессоров можно сделать вывод, что эти приборы являются достаточно сложными как в проектировании, так и в изготовлении, и для реализации они требуют большого количества транзисторов. В качестве примера трудностей реализации CISC-микропроцессоров можно привести следующий факт: дополнительный рост трудоемкости разработки Pentium в сравнении с микропроцессором i486 привел не только к увеличению реального срока его проекта на 27% в сравнении с ожидаемым, но и к появлению ошибок в первых моделях данного процессора.
Вторым фактором, определяющим сложность CISC-микропроцессоров, является необходимость для следующих поколений обеспечивать программную совместимость с микропроцессорами предыдущих поколений. Это определяется тем громадным объемом программных средств, которые были разработаны для этих микропроцессоров. Эта же причина, т.е. невозможность использовать наработанные программные ресурсы, определяла многие трагические судьбы разработанных в свое время микропроцессоров, которые обладали прекрасными характеристиками, работали на очень высоких скоростях, но не могли выполнять имеющиеся программы. В качестве примера можно привести микропроцессор Alpha, разработанный фирмой DEC, который назывался микропроцессором XXI века. Этот микропроцессор показывал наивысшую производительность и работал на наибольшей частоте по сравнению с другими микропроцессорами, но в итоге не выдержал сложившейся конкуренции.
Кроме фактора сложности CISC-микропроцессоров можно также отметить и значительную избыточность этих устройств. Некоторые примеры избыточности команд были представлены выше. Однако необходимо отметить, что избыточность была определена соответствующим развитием архитектур, ориентированным на использование в основном языка ассемблер, поскольку сами языки высокого уровня и трансляторы с этих языков не имели в то время широкого развития.
Необходимо отметить, что исследования по борьбе с избыточностью и по построению оптимальной системы команд проводились многими разработчиками ЭВМ. Для специализированных вычислительных машин, предназначенных для использования в определенных отраслях, задача определения оптимальной архитектуры решается значительно легче, чем для машин, используемых для решения универсальных задач. В качестве примера специализированной ЭВМ с оптимальным набором команд можно привести суперкомпьютер CDC 6600, который был создан в 1964 году. CDC 6600 имел архитектуру всего с двумя режимами адресации (регистр + регистр и регистр + непосредственная константа) и 74 кодами команд (тогда как Intel 8086имел более 400 кодов команд). Джим Торнтон и Сеймор Крэй, разработчики CDC 6600, создали мощный процессор, позволявший быстро обрабатывать большие объемы цифровых данных.
Для рационального выбора набора команд процессора в конце 70-х годов программистами США и Англии были проведены многочисленные исследования, в которых определялась частота использования отдельных инструкций. Характер вычислений и частота использования различных инструкций определяются путем построения профиля выполнения для контрольных программ или путем статических и динамических измерений параметров самих программ. Построение профиля программы состоит в том, что измеряется доля машинного времени процессора, затрачиваемая на выполнение каждого оператора программы. Построение профиля программы дает возможность выявить те ее части, на выполнение которых уходит максимум общего времени.
При статических или динамических измерениях производится подсчет числа появлений тех или иных операторов или случаев, когда те или иные признаки оказываются истинными в тексте программы (статика) либо в процессе ее выполнения (динамика). Подобные измерения дают количественную информацию относительно конкретных свойств вычислений. При этом необходимо рассматривать вычисления общего характера, относящиеся к смеси прикладных программ – это совокупность программ обработки текстов, управления базами данных, компиляции-трансляции, автоматизации проектирования, управления и обработки числовых данных.
Непосредственным итогом проведенных исследований является известное правило 80/20: в 80% кода типичной прикладной программы используется лишь 20% простейших машинных команд из всего доступного набора.