Процессоры: микроархитектуры и программирование. Глава 3

Содержание

Слайд 2

Вспоминаем функциональное устройство процессора

Вспоминаем функциональное устройство процессора

Слайд 3

Процессор под микроскопом

Процессор под микроскопом

Слайд 4

Введение

Вспомним…
П р о ц е с с о р и о п

Введение Вспомним… П р о ц е с с о р и
е р а т и в н а я п а м я т ь образуют центральное устройство (ЦУ) ЭВМ.
Процессором является совокупность устройств, которая регулирует, управляет процессом обработки данных.
Сопряжение процессора, памяти и внешних устройств осуществляется через систему интерфейсов, реализующих коммутационно-коммуникационные функции.

Слайд 5

3.1. Общее представление о структуре и архитектуре процессоров

Системы команд
Основные команды ЭВМ классифицируются

3.1. Общее представление о структуре и архитектуре процессоров Системы команд Основные команды
следующим образом:
по функциям (выполняемым операциям),
направлению приема-передачи информации,
адресности.
Очевидна связь таких параметров ЦУ, как длина адресного пространства, адресность, разрядность.

Слайд 6

Увеличение разрядности позволяет увеличить адресность команды и длину адреса (т. е. объем

Увеличение разрядности позволяет увеличить адресность команды и длину адреса (т. е. объем
памяти, доступной данной команде, например, в 32-разрядной машине, можно адресовать до 4 Гбайт ОП).
Увеличение адресности, в свою очередь, приводит к повышению быстродействия обработки (за счет снижения числа требуемых команд).

Слайд 7

Классы процессоров

В зависимости от набора и порядка выполнения команд процессоры подразделяются на

Классы процессоров В зависимости от набора и порядка выполнения команд процессоры подразделяются на четыре класса:
четыре класса:

Слайд 8

CISC (Complex Instruction Set Computer)

Классическая архитектура процессоров, которая начала свое развитие в

CISC (Complex Instruction Set Computer) Классическая архитектура процессоров, которая начала свое развитие
1940-х гг. с появлением первых компьютеров.
В CISC ЦП использует микропрограммы для выполнения большого набора разноформатных команд с использованием многочисленных способов адресации, для этого требуется наличие сложных электронных цепей для декодирования и исполнения.

Слайд 9

Типичным примером CISC являются процессоры Intel х86 (в частности, семейство Pentium).
Количество

Типичным примером CISC являются процессоры Intel х86 (в частности, семейство Pentium). Количество
команд: более 200 команд разной степени сложности.
Размер команд: от 1 до 15 байт,
Адресация: более 10 различных способов адресации.

Слайд 10

Такое многообразие выполняемых команд и способов адресации позволяет программисту реализовать наиболее эффективные

Такое многообразие выполняемых команд и способов адресации позволяет программисту реализовать наиболее эффективные
алгоритмы решения различных задач.
Однако при этом существенно усложняется структура процессора, особенно его устройства управления, что приводит к увеличению размеров и стоимости кристалла, снижению производительности.
В то же время анализ работы процессоров показал, что в течение примерно 80 % времени выполняется лишь 20 % общего набора команд. Поэтому была поставлена задача оптимизации выполнения небольшого по числу, но часто используемых команд.

Слайд 11

RISC (Redused Instuction Set Computer)

Архитектура отличается использованием ограниченного набора команд фиксированного формата.

RISC (Redused Instuction Set Computer) Архитектура отличается использованием ограниченного набора команд фиксированного

Первый процессор RISC был создан корпорацией IBM в 1979 г.
Современные RISC-процессоры обычно реализуют около 100 команд, имеющих фиксированный формат длиной 4 байта.

Слайд 12

Значительно сокращается число используемых способов адресации.
В результате процессор на 20—30 % реже

Значительно сокращается число используемых способов адресации. В результате процессор на 20—30 %
обращается к оперативной памяти, что также повышает скорость обработки данных.

Слайд 13

Упростилась топология процессора, выполняемого в виде одной интегральной схемы, сократились сроки ее

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

Слайд 14

CISC или RISС?

В то время, как в процессоре CISC для выполнения одной

CISC или RISС? В то время, как в процессоре CISC для выполнения
команды необходимо в большинстве случаев десять тактов и более,
процессоры RISC близки к тому, чтобы выполнять по одной команде в каждом такте.
Следует также иметь в виду, что благодаря своей простоте процессоры RISC не патентуются. Это также способствует их быстрой разработке и широкому производству.

Слайд 15

Процессор MISC

Работает с минимальным набором длинных команд и характеризуется небольшим набором чаще

Процессор MISC Работает с минимальным набором длинных команд и характеризуется небольшим набором
всего встречающихся команд.
Порядок выполнения команд распределяется таким образом, чтобы в максимальной степени загрузить маршруты, по которым проходят потоки данных.
Таким образом, архитектура MISC объединила вместе суперскалярную (многопоточную) и VLIW концепции. Компоненты процессора просты и работают с высокими скоростями.

Слайд 16

VLIW (Very Large Instruction Word)

архитектура, которая появилась относительно недавно (в 1990-х гг.).

VLIW (Very Large Instruction Word) архитектура, которая появилась относительно недавно (в 1990-х
Ее особенностью является использование очень длинных команд (до 128 бит и более), отдельные поля которых содержат коды, обеспечивающие выполнение различных операций.

Слайд 18

Компилятор

В давние времена, когда компьютеры были большими, время доступа к памяти было

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

Слайд 19

Специальный компилятор планирования перед выполнением прикладной программы проводит ее анализ. По множеству

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

Слайд 20

Во-первых, в течение одного такта выполнять группу коротких («обычных») команд,
Во-вторых —

Во-первых, в течение одного такта выполнять группу коротких («обычных») команд, Во-вторых —
упростить структуру процессора. Этим технология VLIW отличается от суперскалярности (здесь отбор групп одновременно выполняемых команд происходит непосредственно в ходе выполнения прикладной программы, а не заранее, из-за этого усложняется структура процессора и замедляется скорость его работы).

Слайд 21

К VLIW-типу можно отнести процессор Elbrus, объявленный российской компанией «Эльбрус».

К VLIW-типу можно отнести процессор Elbrus, объявленный российской компанией «Эльбрус».

Слайд 22

3.2. Технологии повышения производительности процессоров и эффективности ЭВМ

Конвейерная обработка команд
Обработка команды, или цикл

3.2. Технологии повышения производительности процессоров и эффективности ЭВМ Конвейерная обработка команд Обработка
процессора, может быть разделена на несколько основных этапов ( микрокоманд ) ,
МикроКоманд минимум пять (выборка, декодирование, чтение исходных данных, выполнение, запись результата).
Каждая операция требует для своего выполнения времени, равного такту генератора процессора (tick of the internal clock).

Слайд 23

Все команды в таких процессорах следуют одна за другой – это носит

Все команды в таких процессорах следуют одна за другой – это носит
название конвейерной (pipeline) обработки.
Каждая часть устройства называется ступенью (стадией) к о н в е й е р а.
Общее число ступеней — длиной линии конвейера.

Конвейерная обработка команд

Слайд 24

Конвейеризация

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

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

Слайд 25

Гипотетическая конвейеризация

Гипотетическая конвейеризация

Слайд 26

Конвейеризация реальная

Конвейеризация реальная

Слайд 27

Пояснение к схемам

Причина увеличения длины конвейера заключается в том, что многие команды

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

Слайд 28

Свойства конвейеризации

С ростом числа линий конвейера и увеличением числа ступеней на линии

Свойства конвейеризации С ростом числа линий конвейера и увеличением числа ступеней на
увеличивается пропускная способность процессора при неизменной тактовой частоте.
Наоборот, чем больше ступеней насчитывается в конвейере, тем меньшая работа выполняется за такт и тем выше можно поднимать частоту процессора.

Слайд 29

Суперскаляризация

Процессоры с несколькими линиями конвейера получили название с у п е р

Суперскаляризация Процессоры с несколькими линиями конвейера получили название с у п е
с к а л я р н ы х .
Pentium — первый суперскалярный процессор Intel.
У него две линии, что позволяет ему при одинаковых частотах быть вдвое производительней i80486, выполняя сразу две инструкции за такт

Слайд 30

Суперскалярный процессор

Суперскалярный процессор - Процессор, поддерживающий так называемый параллелизм на уровне инструкций

Суперскалярный процессор Суперскалярный процессор - Процессор, поддерживающий так называемый параллелизм на уровне
(то есть, процессор, способный выполнять несколько инструкций одновременно).

Слайд 31

Во многих вычислительных системах, наряду с конвейером команд, используются конвейеры данных.
Сочетание

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

Слайд 32

Сопроцессоры

Для расширения вычислительных возможностей центрального процессора — выполнения арифметических операций над вещественными

Сопроцессоры Для расширения вычислительных возможностей центрального процессора — выполнения арифметических операций над
числами (с плавающей запятой), вычисления основных математических функций (тригонометрических, показательных, логарифмических) и т. д. — в состав ЭВМ добавляется м а т е м а т и ч е с к и й сопроцессор.

Слайд 33

Применение сопроцессора повышает производительность вычислений в сотни раз.
В разных поколениях процессоров

Применение сопроцессора повышает производительность вычислений в сотни раз. В разных поколениях процессоров
он назывался по-разному — FPU (Floating Point Unit — блок чисел/ операций с плавающей точкой — БПЗ) или NPX (Numeric Processor extension — числовое расширение процессора).
Для процессоров 386 и ниже сопроцессор был отдельной
микросхемой, подключаемой к локальной нише основного процессора.
Сопроцессор исполняет только свои специфические команды, а всю работу по декодированию инструкций и доставке данных осуществляет ЦП.

Слайд 34

Блоки операций с плавающей запятой

С программной точки зрения сопроцессор и процессор выглядят

Блоки операций с плавающей запятой С программной точки зрения сопроцессор и процессор
как единое целое.
В современных (486+) процессорах БПЗ располагается на одном кристалле с центральным процессором.

Слайд 35

Увеличение разрядности систем

В 1980-е годы соответствие между типом ЭВМ и ее разрядностью

Увеличение разрядности систем В 1980-е годы соответствие между типом ЭВМ и ее
имело простейший вид:
• микроЭВМ — 8 разрядов;
• мини-ЭВМ — 16 разрядов;
• большие ЭВМ — 32 разряда;
• сверхбольшие (супер) ЭВМ — 64 разряда.
В районе 2004 г. произошел переход на 64-разрядные архитектуры в процессорах Intel и AMD.

Слайд 37

Использование GPU

GPU - отдельное устройство персонального компьютера, выполняющее графический рендеринг.
GPU это вспомогательный

Использование GPU GPU - отдельное устройство персонального компьютера, выполняющее графический рендеринг. GPU
микрочип, который берёт часть вычислительных операций на себя вместо процессора. И за счёт специализированной архитектуры, GPU лучше подходит для проведения расчётов с плавающей точкой, тогда как CPU больше ориентирован на работу в многопоточном режиме.

Слайд 38

Видеокарта GPU способна быстро проводить расчёты, где используется одна или схожая формула

Видеокарта GPU способна быстро проводить расчёты, где используется одна или схожая формула
(например, вычисление точки затенения графики при попадании тени на текстуру).
Центральный процессор же ориентирован на проведение расчётов сразу в несколько потоков, когда пользователь работает одновременно с большим количеством приложений.
В 95% случаев графический процессор используется для обработки графики. Он же отвечает за вывод изображения, отрисовку интерфейса операционной системы и каждой из запущенных программ.

Слайд 40

Как по внешнему виду понять встроенная видео карта или внешняя

Как по внешнему виду понять встроенная видео карта или внешняя

Слайд 41

Для чего нужна внешняя видеокарта при встроенном GPU

Для чего нужна внешняя видеокарта при встроенном GPU

Слайд 42

Использование виртуализации процессора

Hyper-threading (англ. hyper-threading — гиперпоточность, HTT или HT)
 — технология, разработанная компанией

Использование виртуализации процессора Hyper-threading (англ. hyper-threading — гиперпоточность, HTT или HT) —
Intel реализует идею «одновременной многопоточности».
HTT является развитием технологии суперпоточности.

Слайд 45

Архитектуры на 64 разряда (64-bit architecture).

IA-64. Спецификация IA-64 означает «Архитектура Intel, 64

Архитектуры на 64 разряда (64-bit architecture). IA-64. Спецификация IA-64 означает «Архитектура Intel,
бита».
Появляется полностью отличный набор команд,
Используются принципы VLIW.
IA-64 — архитектура, используемая линией процессоров Itanium.
Усовершенствования:
• в 16 раз увеличено количество РОН и ПЗ (теперь по 128);
• механизм переименования/ротации регистров, чтобы сохранять значения в регистрах при вызове функций.

Слайд 46

AMD64

Набор команд AMD64 (первоначально названный
х86-64), в значительной степени построен на основе IA-32

AMD64 Набор команд AMD64 (первоначально названный х86-64), в значительной степени построен на
и таким образом обеспечивает наследственность семейства х86.
При расширении набора команд AMD воспользовалась возможностью, чтобы очистить часть его от ряда «устаревших» команд — наследия «16-разрядных времен».
Усовершенствования:
• в 2 раза увеличено количество РОН и SSE (теперь по 16);
• РОН — теперь действительно регистры общего назначения и ничем больше не ограничены.
Архитектура использована в ЦП Athlon 64, Athlon 64 Х2,
Athlon 64 FX, Opteron, Turion 64, Turion 64 X2, Sempron
(«Palermo», «Manila»).

Слайд 47

EM64T

(Extended Memory 64-bit Technology, или Intel 64) —
набор команд (ранее известный

EM64T (Extended Memory 64-bit Technology, или Intel 64) — набор команд (ранее
как Yamhill), объявленный Intel в феврале 2004 г., в подражание AMD64. ЕМ64Т в целом совместим с кодами, написанными для AMD64, хотя и имеет ряд недостатков сравнительно с AMD64.
Intel начала использовать набор ЕМ64Т, начиная с ЦП Хеоп
(ядро Nocona) в конце 2004 г., а затем вышла с ним на рынок
настольных ПК в начале 2005 г. (Pentium IV, версия Е0).
EMT/Intel 64 используется в ЦП архитектуры Intel NetBurst —
Xeon («Nocona»), Celeron D («Prescott» и далее), Pentium 4
(«Prescott» и далее), Pentium D, Pentium Extreme Edition и архитектуры Intel Core — Xeon («Woodcrest»), Intel Core 2.

Слайд 48

Векторная обработка (SIMD-команды)

В классификации Г. Флинна имеется рубрика SIMD — поток данных,

Векторная обработка (SIMD-команды) В классификации Г. Флинна имеется рубрика SIMD — поток
обрабатываемых одной командой.
Процессоры, реализующие такую обработку, именуют п о т о к о в ы м и п р о ц е с с о р а м и .
Могут быть определены как о д н о п о т о к о в ы е (Single-streaming processor — SSP), так и м н о г о п о т о к о в ы е процессоры (Multi-Streaming Processor — MSP).
В таких системах единое управляющее устройство контролирует множество процессорных элементов. Каждый процессорный элемент получает от устройства управления в каждый фиксированный момент времени одинаковую команду и выполняет ее над своими локальными данными.

Слайд 49

MMX

MMX (MultiMedia extension) — архитектура системы команд, непосредственно предназначенных для задач мультимедиа,

MMX MMX (MultiMedia extension) — архитектура системы команд, непосредственно предназначенных для задач
связи и графических приложений, которые часто используют сложные алгоритмы, исполняющие одинаковые операции на большом количестве типов данных (байты, слова и двойные слова).
Анализ участков таких программ с большим объемом вычислений показал, что такие приложения имеют следующие общие свойства, определившие выбор системы команд и структуры данных:
• небольшая разрядность целочисленных данных (например,
8-разрядные пиксели для графики или 16-разрядное представление речевых сигналов);
• небольшая длина циклов, но большое число их повторений;
• большой объем вычислений и значительный удельный вес
операций умножения и накопления;
• существенный параллелизм операций в программах.

Слайд 50

Это и определило новую структуру данных и расширение системы команд. При этом

Это и определило новую структуру данных и расширение системы команд. При этом
было достигнуто общее повышение производительности на 10—20 %, а в программах обработки мультимедиа — до 60 %.
MMX-команды используются в ЦП, начиная с Pentium ММХ (AMD Кб) и имеют следующий синтаксис:

Слайд 51

Архитектура 3DNow!

впервые реализована в процессорах
AMD К6-2 (май 1998 г.). Технология 3DNow! включает

Архитектура 3DNow! впервые реализована в процессорах AMD К6-2 (май 1998 г.). Технология
21 дополнительную команду, новые типы данных и использует регистры ммп (ммо—ММ7) для поддержки высокопроизводительной обработки ЗD-графики и звука.
В то время как архитектура ММХ предполагает
ц е л о ч и с л е н н у ю а р и ф м е т и к у , векторные команды 3DNow! Параллельно обрабатывают две пары 32-разрядных
в е щ е с т в е н н ы х операндов одинарной точности

Слайд 52

Динамическое исполнение (dynamic execution technology)

Динамическое исполнение — технология обработки данных процессором, обеспечивающая

Динамическое исполнение (dynamic execution technology) Динамическое исполнение — технология обработки данных процессором,
более эффективную работу процессора за счет манипулирования данными, а не просто линейного исполнения списка инструкций.
Предсказание ветвлений. С большой точностью(более 90 %) процессор предсказывает, в какой области памяти можно найти следующие инструкции. Это оказывается возможным, поскольку в процессе исполнения инструкции процессор просматривает программу на несколько шагов вперед.
Это обеспечивает значительное повышение производительности.

Слайд 53

Внеочередное выполнение

Внеочередное выполнение (выполнение вне естественного порядка — out-of-order execution). Процессор анализирует

Внеочередное выполнение Внеочередное выполнение (выполнение вне естественного порядка — out-of-order execution). Процессор
поток команд и составляет график исполнения инструкций в оптимальной последовательности, независимо от порядка их следования в тексте программы, просматривая декодированные инструкции и определяя, готовы ли они к непосредственному исполнению или зависят от результата других инструкций.
Далее процессор определяет оптимальную последовательность выполнения и исполняет инструкции наиболее эффективным образом.

Слайд 54

Переименование (ротация) регистров

Переименование (ротация) регистров (register rename)
Чтобы избежать пересылок данных между регистрами

Переименование (ротация) регистров Переименование (ротация) регистров (register rename) Чтобы избежать пересылок данных
в соответствующей команде изменяется адрес регистра, содержащего данные, участвующие в следующей операции.
Поэтому вместо пересылки данных в регистр-источник осуществляется переименование регистра с данными как источника.

Слайд 55

Выполнение по предположению

Выполнение по предположению (спекулятивное — speculative). Процессор выполняет инструкции (до

Выполнение по предположению Выполнение по предположению (спекулятивное — speculative). Процессор выполняет инструкции
пяти инструкций одновременно)
по мере их поступления в оптимизированной последовательности
(спекулятивно). Поскольку выполнение инструкций происходит на основе предсказания ветвлений, результаты сохраняются как предположительные («спекулятивные»). На конечном этапе порядок инструкций восстанавливается.

Слайд 56

Предикация (predication) — одновременное исполнение нескольких ветвей программы вместо предсказания переходов (выполнения

Предикация (predication) — одновременное исполнение нескольких ветвей программы вместо предсказания переходов (выполнения
наиболее вероятного);
Если в исходной программе встречается условное ветвление (по статистике - через каждые 6 команд), то команды из разных ветвей помечаются разными предикатными регистрами, далее они выполняются совместно, но их результаты не записываются, пока значения предикатных регистров неопределены.  Когда, наконец, вычисляется условие ветвления, предикатный регистр, соответствующий "правильной" ветви, устанавливается в 1, а другой  — в 0. 
Техника, подобная предикации, используется в RISC процессорах

Предикация

Слайд 57

Опережающее чтение данных

Опережающее чтение данных (speculative loading), т. е. загрузка данных в

Опережающее чтение данных Опережающее чтение данных (speculative loading), т. е. загрузка данных
регистры с опережением, до того, как определилось реальное ветвление программы (переход управления).
Эти возможности осуществляются комбинированно — при компиляции и выполнении программы.