Полная версия

Главная arrow Информатика arrow Архитектура ЭВМ и вычислительных систем

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ   >>

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

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

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

Каждая операция требует для своего выполнения времени, равного такту генератора процессора (tick of the internal clock). Отметим, что к длинным операциям (плавающая точка) это не имеет отношения — там другая «бухгалтерия». Очевидно, что при тактовой частоте в 100 МГц быстродействие составит 20 миллионов операций в секунду.

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

Время

t

I вк

ДК

вд

ИК

ЗР

Такт

Операции

а

вк

дк

вд

ИК

ЗР

Такт

Время вк

дк

вд

ик

ЗР

вк

дк

ВД

ик

ЗР

вк

дк

вд

ик

ЗР

вк

дк

вд

ик

ЗР

вк

дк

вд

ик

ЗР

Операции

-?

Такт

ЇМЯ

Линия 2

ВК

ДК

вд

ИК

ЗР

t

Линия 1

ВК

ДК

вд

ик

ЗР

1

Линия 2

вк

дк

вд

ик

ЗР

Линия 1

вк

дк

вд

ик

ЗР

Линия 2

ВК

дк

вд

ик

ЗР

Линия 1

ВК

дк

вд

ик

ЗР

ВК

ДК

вд

ик

ЗР

Линия 2

ВК

дк

вд

ик

ЗР

Линия 1

ВК

ДК

вд

ик

ЗР

ВК

ДК

вд

ик

ЗР

иперации

-?

в

Рис. 3.1. Временные диаграммы выполнения команд: а — без конвейеризации; б — пятиступенчатый конвейер; в — суперскалярный конвейер; ВК — выборка команды (Fetch); ДК — декодирование команды (Decode); ВД — выборка данных (Load); И К — исполнение команды (Execute);

ЗР — запись результата (store)

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

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

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

Приведенный пример процессора (5 микроопераций) является гипотетическим — в реальных ЦП конвейер обработки команд сложнее и включает большее количество ступеней (см. рис. 3.2). Причина увеличения длины конвейера заключается в том, что многие команды являются довольно сложными и не могут быть выполнены за один такт процессора, особенно при

б

Рис. 3.2. Примеры конвейеров AMD К8 (а) и Intel Netburst (б) (начало)

Такт 9: STACK RENAME

Такт 10: REGISTER RENAME

Такты 11—12: SCEDW/SCHED

і

Такт 13: FREG

і

І g

?2L|

  • to
  • 5 CL S b-0 О

Ф- ? ® ф C Q.

і g

?s. g

t=

• CO 2 Q_ S b-0 О

Ф- ?

® ф

L- Cl

і ra

-b v

'?g

<1) О

IZ

  • 2 &
  • 3 5

Q- 5

ф

CL

>s

о

* СО ?

sc с

? о Я

со со

o>i

х СО э

я й- 2

С ® со

Г S ш

о 03 с; с:

X

I

X

со

СІ

  • 0 X S _0 X X Ф X Jz со т q
  • 0 X S J3 X I Ф X

Jz со т q

Планировщик

— Планировщик

L Планировщик

Такт 9: SCEDULE

і

Перемножение

АЛУ

Выборка данных

БГА

Перемножение

АЛУ

Выборка данных

БГА

Перемножение

АЛУ

Выборка данных

БГАП

1 1 Такт 10: 1 Такты 11-

-12

EXECUTE

(продолжение: EXECUTE)

Регистры процессоров

Такты 14-17: EXECUTE

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

Блок умножения с плавающей запятой

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

Очередь чтение/запись

Ll-кэш данных (D)

а

і

т

Планировщик

памяти

Диспетчер

Диспетчер

Запись в память

Чтение из памяти

Быстрый планировщик 0

Медленный планировщик 0

Диспетчер

4 Чтение

1

Быстр.

Флаг

f в регистр

1

* АЛУО

Чтение

. Копир.

Флаг

f в регистр

  • 1
  • 1

г 9

пз

Быстрый планировщик 1

Медленный планировщик 1

н—4

  • 1
  • 1

_1_

Быстр.

АЛУ1

Пров. —

1

Флаг

перех. 7

-*

? п

1

к Чтонио

1

Медл.

АЛУ

Флаг

Пров. ??

Диспетчер

>

в регистр

  • —1—
  • 1

перех. .

F

>

-1—4 Чтение в регистр

1

і

Опер.

ПЗ

Флаг

Пров. ‘ перех. .

і

і

Такты 10—12: Schedule

Такты 13—14: Dispatch

Такты 15—16: Register File

б

Рис. 3.2. (продолжение)

КЭШ данных И (О-саэЬе)

Регистры процессору

I I

і і

Такт 17: і Такт 18: і Такт 19

Execute 1 Flags 1 Branch

1 1 Check

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

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

Таблица 3.2. Характеристики конвейеров процессоров Intel и AMD

Процессор

І80486

Pentium

Pentium

Pro

Pentium

MMX

Pentium II

Pentium IV

AMD

Athlon

Число линий

1

2

3

2

3

3

3+3

Длина линии

5

5

14

6

14

20

17

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

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

На рис. 3.2 приведены примеры конвейеров процессоров архитектуры AMD К8 — 17 ступеней (а) и Intel Netburst — 20 ступеней (б).

Операции над вещественными числами (с плавающей запятой)

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

Для процессоров 386 и ниже сопроцессор был отдельной микросхемой, подключаемой к локальной нише основного процессора. В любом случае сопроцессор исполняет только свои специфические команды, а всю работу по декодированию инструкций и доставке данных осуществляет ЦП.

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

Начиная с 80486 восемь регистров для ПЗ (именуемых ST (0) —ST (7)) встраивают в центральный процессор. Каждый регистр имеет ширину 80 бит и хранит числа в формате стандарта ПЗ расширенной точности (IEEE floating-point standard — см. табл. 1.6).

Эти регистры доступны в стековом порядке. Имена (номера) регистров устанавливаются относительно вершины стека (st (0) — вершина стека, st (1) — следующий регистр ниже вершины стека, ST(2) — второй после вершины стека и т. д.). Вводимые данные таким образом всегда сдвигаются «вниз» от вершины стека, а текущая операция совершается с содержимым вершины стека.

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

В «романтические» 1980-е годы соответствие между типом ЭВМ и ее разрядностью имело простейший вид:

  • • микроЭВМ — 8 разрядов;
  • • мини-ЭВМ — 16 разрядов;
  • • большие ЭВМ — 32 разряда;
  • • сверхбольшие (супер) ЭВМ — 64 разряда.

В процессе развития микропроцессоров Intel рубежи в 16 и 32 разряда (IA-32) были преодолены довольно быстро, а в районе 2004 г. произошел переход и на 64-разрядные архитектуры в процессорах Intel и AMD.

Преимущества 64-битовой архитектуры микропроцессоров главным образом относятся к памяти. Если взять два идентичных микропроцессора, и один из них будет 32-битовым, а другой — 64-битовым, то последний сможет адресовать намного больший объем памяти, чем 32-битовый (264 против 232). Известны следующие архитектуры на 64 разряда (64-bit architecture).

IA-64. Спецификация IA-64 означает «Архитектура Intel, 64 бита», но связь с IA-32 — только по названию. Архитектура IA-64 не совместима непосредственно с набором команд IA-32. Здесь появляется полностью отличный набор команд, а также используются принципы VLIW вместо выполнения вне естественного порядка. IA-64 — архитектура, используемая линией процессоров Itanium.

Усовершенствования:

  • • в 16 раз увеличено количество РОН и ПЗ (теперь по 128);
  • • механизм переименования/ротации регистров, чтобы сохранять значения в регистрах при вызове функций.

AMD64. Набор команд AMD64, первоначально названный х86-64, в значительной степени построен на основе IA-32 и таким образом обеспечивает наследственность семейства х86. При расширении набора команд AMD воспользовалась возможностью, чтобы очистить часть его от ряда «устаревших» команд — наследия «16-разрядных времен».

Усовершенствования:

  • • в 2 раза увеличено количество РОН и SSE (теперь по 16);
  • • РОН — теперь действительно регистры общего назначения и ничем больше не ограничены.

Архитектура использована в ЦП Athlon 64, Athlon 64 Х2, Athlon 64 FX, Opteron, Turion 64, Turion 64 X2, Sempron («Palermo», «Manila»).

EM64T (Extended Memory 64-bit Technology, или Intel 64) — набор команд (ранее известный как Yamhill), объявленный Intel в феврале 2004 г., в подражание AMD64. ЕМ64Т в целом совместим с кодами, написанными для AMD64, хотя и имеет ряд недостатков сравнительно с AMD64.

Intel начала использовать набор ЕМ64Т, начиная с ЦП Xeon (ядро 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.

Поскольку AMD64 и ЕМТ64 почти не различаются, для ссылки на них используются нейтральные названия — х86-64, х86_64 (Linux и Apple's Mac OS X), х64 (Microsoft и Sun Microsystems).

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

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

Типичными представителями класса SIMD считаются матричные процессоры — ILLIAC IV, ICL DAP, Goodyear Aerospace МРР, Connection Machine 1 и т. п. В таких системах единое управляющее устройство контролирует множество процессорных элементов. Каждый процессорный элемент получает от устройства управления в каждый фиксированный момент времени одинаковую команду и выполняет ее над своими локальными данными. В последовательных расширениях системы команд х86, выполненных Intel и AMD, все более полно используются принципы обработки одной командой вектора (потока) данных (см. также Приложение 3).

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

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

Это и определило новую структуру данных и расширение системы команд. При этом было достигнуто общее повышение производительности на 10—20 %, а в программах обработки мультимедиа — до 60 %.

В процессоре Pentium MMX (1996 г.) появляются 8 новых 64-разрядных «регистров» с именами ммо—ММ7 (или же ммп), в действительности, эти новые «регистры» были только псевдонимами для регистров стека ПЗ х87 (рис. 3.3). В связи с тем, что каждый из регистров стека содержит 80 бит, старшие 16 бит регистров стека оказываются неиспользованными в ММХ (рис. 3.3). Поэтому в режиме ММХ они заполняются всеми единицами, что позволяет отличать данные формата с плавающей запятой от ММХ-данных.

ST0

ммо

ST1

ММ1

• •

ST7

ММ7

Рис. 3.3. Стек регистров с ПЗ и ММХ-регистры

Преимущество совмещения ммп с регистрами FPU состоит в том, что одни и те же команды и структуры данных различных операционных систем (при обработке прерываний и вызове подпрограмм) могут использоваться как для сохранения содержания регистров ПЗ, так и регистров 3DNow!.

Каждый из регистров ммп предназначен для целых чисел на 64 бита. Однако главным понятием набора команд ММХ является концепция упакованных типов данных (см. табл. 1.9, рис. 1.6).

MMX-команды используются в ЦП, начиная с Pentium ММХ (AMD Кб) и имеют следующий синтаксис:

instruction [src, dest]

Здесь instruction — имя команды, dest — выходной, а src — входной операнды.

Большинство команд имеют суффикс, который определяет тип данных и используемую арифметику:

  • • US (unsigned saturation) — арифметика с насыщением, данные без знака;
  • • S или SS (signed saturation) — арифметика с насыщением, данные со знаком. Если в суффиксе нет ни S, ни SS, используется циклическая арифметика (wraparound);
  • • в, w, D, Q (см. табл. 1.9) указывают тип данных. Если в суффиксе есть две из этих букв, первая соответствует входному операнду, а вторая — выходному.

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

В то время как архитектура ММХ предполагает целочисленную арифметику, векторные команды 3DNow! параллельно обрабатывают две пары 32-разрядных вещественных операндов одинарной точности (см. табл. 1.9).

Процессор может выполнять две 3DNow! команды за такт и, следовательно, 4 операции над числами с ПЗ одновременно. Технология 3DNow! предполагает наличие в ЦП для выполнения векторных ММХ и 3DNow! операций нескольких устройств (пара умножителей, сумматоров и т. д.). Все команды 3DNow! имеют длительность исполнения 2 такта и полностью конвейеризированы.

SSE (или SIMD-FP) — система команд Streaming SIMD Extensions — SIMD-расширение, предложенное Intel в 1999 г. в Pentium III (ядро Katmai), отсюда вариант названия — KNI (Katmai New Instructions). Это 70 новых команд, в том числе:

  • • 50 команд предназначаются для повышения эффективности операций с ПЗ, с этой целью в ЦП встроены 128-бито-вые регистры — восемь регистров, названные хммо—ХММ7 (в AMD64 число SSE/XMM регистров было увеличено от 8 до 16). В результате операции с ПЗ могут совершаться за один цикл процессора;
  • • 12 команд (New Media) дополняют ранее введенные 57 команд ММХ для ФЗ;
  • • оставшиеся 8 команд (New Cacheability) повышают производительность кэш-памяти L1 при работе с мультимедийными данными.

SSE — набор команд, которые обрабатывают только значения с ПЗ, подобно 3DNow!. Поскольку здесь используются более длинные регистры, чем в 3DNow!, SSE может упаковать два числа ПЗ в каждый регистр (см. табл. 1.9). Первоначальная версия SSE была ограничена только числами одинарной точности, подобно 3DNow!.

SSE2 — введенный с Pentium IV набор команд является существенным развитием SSE, оперирует с теми же самыми регистрами и обратно совместим с SSE процессора Pentium III. В расширении SSE2 операции со 128-битовыми регистрами могут выполняться не только как с четверками вещественных чисел двойной точности, но и как с парами вещественных чисел двойной точности, с шестнадцатью однобайтовыми целыми и пр. (табл. 1.9). SSE2 представляет собой симбиоз ММХ и SSE и позволяет работать с любыми типами данных, вмещающимися в 128-битовые регистры.

SSE3 — набор команд, также известный как Prescott New Instructions (PNI), является третьей версией команд SSE для IA-32. Intel использует SSE3 с начала 2004 г. в ЦП Pentium IV Prescott. В апреле 2005 г. AMD также включает SSE3 в ЦП Athlon 64 (версия Е — ядра Venice и San Diego). SSE3 содержит 13 дополнительных по отношению к SSE2 команд. Самое существенное новшество — «горизонтальная арифметика» (см. рис. 1.6).

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

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

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

Это обеспечивает значительное повышение производительности. Например, программный цикл, состоящий из пересылки, сравнения, сложения и перехода в 80486 DX, выполняется за шесть тактов синхронизации, а в — Pentium за два (команды пересылки и сложения, а также сравнения и перехода сочетаются и предсказывается переход).

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

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

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

На рис. 3.4 и 3.5 представлены варианты спекулятивного выполнения:

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

Эти возможности осуществляются комбинированно — при компиляции и выполнении программы.

Предикация. Обычный компилятор транслирует оператор ветвления (например, if-then-else) в блоки машинного кода, расположенные последовательно в потоке. Обычный процессор, в зависимости от исхода условия, исполняет один из этих базовых блоков, пропуская все другие. Более развитые процессоры пытаются прогнозировать исход операции и предварительно выполняют предсказанный блок. При этом в случае ошибки много

Команда 3 (перехода)

Команда 4 (Pi)

5. ЦП начинает выполнять

обе ветви параллельно,

так как вычисления независимы

—?

Команда 7 (Р2)

1

6. Когда становится известен реальный исход ветвления, вычисления продолжаются только для реальной ветви

Команда 5 (pi)

—?

Команда 8 (Р2)

''

Команда 6 (pi)

?—

—?

Команда 9 (Р2)

Компилятор может подготовить параллельную обработку, переставив команды и сочетая инструкции 4и7, 5и8, 6и9 для одновременного выполнения

Команда 1

Команда 2

Команда 3 (переход)

Команда 4 (pi)

Команда 7 (Р2)

Команда 5 (pi)

Команда 8 (Р2)

Команда 6 (pi)

Команда 9 (Р2)

  • 128-битовые «связки» команд
  • 1. Ветвление может иметь два исхода
  • 3. Все команды этой ветви помещаются в регистр Р1

Команда 1

Команда 2

  • 2. Компилятор назначает для каждой ветви регистр (Р1, Р2)
  • (или «буфер предвыборки» — predicate register)
  • 4. Все команды данной ветви помещаются в регистр Р2

Рис. 3.4. Предикация или одновременное предварительное выполнение всех

альтернативных ветвей оператора условного перехода

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

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

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

Опережающее считывание данных в регистры ЦП из памяти

Рис. 3.5. Опережающее считывание данных в регистры ЦП из памяти

(speculative loading)

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

В то же время, если компилятор не «отметил» ветвление, процессор действует как обычно — пытается предсказать путь ветвления и т. д. Испытания показали, что описанная технология позволяет устранить более половины ветвлений в типичной программе, и, следовательно, уменьшить более чем в 2 раза число возможных ошибок в предсказаниях.

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

Прежде всего, компилятор анализирует программу, определяя команды, которые требуют приема данных из оперативной памяти. Там, где это возможно, он вставляет команды опережающего чтения и парную команду контроля опережающего чтения (speculative check). В то же время компилятор переставляет команды таким образом, чтобы ЦП мог их обрабатывать параллельно.

В процессе работы ЦП встречает команду опережающего чтения и пытается выбрать данные из памяти. Может оказаться, что они еще не готовы (результат работы блока команд, который еще не выполнился). Обычный процессор в этой ситуации выдает сообщение об ошибке, однако система откладывает «сигнал тревоги» до момента прихода процесса в точку «команда проверки опережающего чтения». Если к этому моменту все предшествующие подпроцессы завершены и данные считаны, то обработка продолжается, в противном случае вырабатывается сигнал прерывания.

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

Многократное декодирование команд

В то время как традиционный процессор линейно переводит команды в тактовые микрокоманды и последовательно их выполняет, ЦП с многократным декодированием сначала преобразует коды исходных команд программы в некоторые вторичные псевдокоды (предварительное декодирование, или предекодирование), которые затем более эффективно исполняет ядро процессора. Эти преобразования могут содержать несколько этапов (см. рис. 3.2). В качестве примеров рассмотрим 2--3-сту-

пенчатые декодеры (рис. 3.6).

Декодирование команд CISC/RISC в VLIW (рис. 3.6, а). Эти технологии использованы в мобильных процессорах Crusoe (фирма Transmeta) и некоторых ЦП Intel — архитектуры IA-64 и EPIC (Explicitly Parallel Instruction Computing — вычисления с явной параллельностью инструкций).

В частности, в Crusoe на входе процессора — программы, подготовленные в системе команд Intel х86, однако внутренняя

11

в

Команды CISC / RISC

Команды RISK / МкОП

lit

Декодер

Микрооперации

Исполнительные _блоки_

Команда VLIW / CISC

Группы МкОП

_J_L

Исполнительные

блоки

Команды CISC / RISC

I

Предекодер/ Code Morphing

Команда VLIW

і

Декодер

Команда VLIW / CISC

Предекодер

Микрооперации

11

Исполнительные _блоки_

a

Микрооперации

11

Исполнительные _блоки_

б

Рис. 3.6. Многократные декодеры и смежные технологии: а — преобразование СЛБС/ШБС в УЫУ; б — преобразование УЫХУ/ОСБ

в ИЛБС; в — макрослияние; г — микрослияние

система команд VLIW не имеет ничего общего с командами х86 и разработана для быстрого выполнения при малой мощности, используя обычную CMOS-технологию. Окружающий уровень программного называют программным обеспечением модификации кодов (Code Morphing software — CMS, или CM), здесь осуществляется динамический перевод команд х86 в команды VLIW.

Программное обеспечение модификации кодов переводит сразу блоки команд х86, записывая результат в кэш перевода. Этот подход к выполнению кода х86 устраняет миллионы транзисторов, заменяя их программным обеспечением. Процессор Crusoe содержит не более У4 числа логических транзисторов, требуемых для достижения подобной производительности только аппаратными средствами, и имеет следующие преимущества:

  • • аппаратный компонент значительно меньше, быстрее и энергетически эффективнее, чем обычные чипы;
  • • аппаратные средства полностью отделены от команд х86, давая возможность использовать в проектах наиболее современные и эффективные тенденции в проектировании электроники, не загружая программное обеспечение проблемами совместимости;
  • • программное обеспечение СМ может развиваться отдельно от аппаратных средств, и обновление программной части процессора может быть выполнено независимо от аппаратных версий чипа;
  • • упрощение аппаратуры позволило уменьшить габариты процессоров и потребление энергии (эти процессоры иногда называют «холодными»).

Аналогичные приемы используются в процессорах Intel Itanium — здесь при компиляции готовятся пакеты (связки, bundles) команд (по 3 команды в 128-битовом пакете — рис. 3.4). Тем самым, компилятор выполняет в данном случае функции СМ.

Декодирование команд CISC VLIW в RISC. Указанные выше достоинства RISC-архитектуры привели к тому, что во многих современных CISC-процессорах используется RISC-ядро, выполняющее обработку данных. При этом поступающие сложные и разноформатные команды предварительно преобразуются в последовательность простых RISC-операций, быстро выполняемых этим процессорным ядром (рис. 3.6, б). Таким образом, работают, например, современные модели процессоров Pentium и К7, которые по внешним показателям относятся к CISC-процессорам. Использование RISC-архитектуры является характерной чертой многих современных процессоров.

Макрослияние (macrofusion). В процессорах предыдущих поколений каждая выбранная команда отдельно декодируется и выполняется. Макрослияние позволяет объединять типичные пары последовательных команд (например, сравнение, сопровождающееся условным переходом) в единственную внутреннюю команду-микрооперацию (МкОП, micro-op) в процессе декодирования (рис. 3.6, в). В дальнейшем две команды выполняются как одна МкОП, сокращая полный объем работы процессора.

Микрослияние (micro-op fusion). В современных доминирующих процессорах команды х86 (macro-ops) обычно расчленяются на МкОП прежде, чем передаются на конвейер процессора. Микрослияние группирует и соединяет МкОП, уменьшая их число (рис. 3.6, г). Исследования показали, что слияние МкОП вкупе с выполнением команд в измененном порядке может уменьшить число МкОП более чем на 10 %. Данная технология использована в системах Intel Core, а ранее апробировалась в ПЦ мобильных систем Pentium М.

В процессорах AMD К8 конвейер строится на том, что работа с потоком МкОП происходит тройками инструкций (AMD называет их линиями — line). Конвейер К8 обрабатывает именно линии, а не х86-инструкции или отдельные микрооперации.

Технология Hyper-Threading (НТ)

Здесь реализуется разделение времени на аппаратном уровне, разбивая физический процессор на два логических процессора, каждый из которых использует ресурсы чипа — ядро, кэш-память, шины, исполнительное устройство (рис. 3.7). Благодаря НТ многопроцессная операционная система использует один процессор как два и выдает одновременно два потока команд. Смысл технологии заключается в том, что в большинстве случаев исполнительные устройства процессора далеки от полной загруженности. От передачи на выполнение вдвое большего потока команд повышается загрузка исполнительных устройств.

Кэш L2

Задача 1 Задача 2

Рис. 3.7. Технология Hyper-Threading (НТ)

Управление

Кэш команд Арифметико-логическое устройство

Специалисты Intel оценивают повышение эффективности в 30 % НТ-процессоров при использовании многопрограммных ОС и обычных прикладных программ.

Многоядерные процессоры

В октябре 1989 г., рассматривая будущее «через призму Закона Мура», специалисты Intel в статье «Microprocessors Circa 2000» («Процессоры 2000-х гг.») предсказали, что многоядерные процессоры могут выйти на рынок вскоре после начала столетия. Пятнадцать лет спустя их предсказания оправдались — развитие процессоров в этом направлении стало приоритетной задачей как для Intel, так и для конкурирующей AMD.

Многоядерная архитектура предполагает размещение двух или более основных вычислительных агрегатов в пределах единственного процессора. Этот многоядерный процессор имеет единственный интерфейс с системной платой, но операционные системы «видят» каждое из его ядер как дискретный логический процессор со всеми связанными ресурсами. Это отличает их от технологии Hyper-Threading (где отдельные процессы выполняются единственным ядром), и существующие ресурсы используются более эффективно.

Разделяя вычислительную нагрузку, выполняемую единственным ядром в традиционных процессорах между многими ядрами, многоядерный процессор может выполнить большую работу в пределах отдельного цикла ЭВМ. Чтобы реализовать это увеличение эффективности, соответствующее программное обеспечение должно поддерживать это распараллеливание. Эти функциональные возможности называют «параллелизмом уровня подпроцесса (нити)» или «threading». Приложения и операционные системы, которые поддерживают это, упоминаются как мульти-подпроцессные или «multi-threaded».

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

Если при этом используется режим Hyper-Threading, процессоры двойного ядра будут способны обработать четыре программных подпроцесса одновременно более эффективно имеющимися ресурсами, которые иначе, возможно, остались бы незанятыми (рис. 3.8).

Процесс 1

Процесс 2 ссс

Процесс 3

Процесс 4 ссс

Процесс 1 €С Процесс 2

Процесс 3 сс Процесс 4

Рис. 3.8. Выполнение процессов Hyper-Threading (НТ) на двухъядерном

процессоре

Перспективные типы процессоров ЭВМ

Ассоциативные процессоры. Существующие в настоящее время алгоритмы прикладных задач, системное программное обеспечение и аппаратные средства преимущественно ориентированы на традиционную адресную обработку данных. Данные должны быть представлены в виде ограниченного количества форматов (например, массивы, списки, записи, см. табл. 1.13), должна быть явно создана структура связей между элементами данных посредством указателей на адреса элементов памяти, при обработке этих данных должна быть выполнена совокупность операций, обеспечивающих доступ к данным по указателям. Такой подход обусловливает громоздкость операционных систем и систем программирования, а также служит препятствием к созданию вычислительных средств с архитектурой, ориентированной на более эффективное использование параллелизма обработки данных.

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

Исследованы и в разной степени используются несколько подходов, различающихся полнотой реализации модели ассоциативной обработки. Если реализуется только ассоциативная выборка данных с последующим поочередным использованием найденных данных, то говорят об ассоциативной памяти или памяти, адресуемой по содержимому. При достаточно полной реализации всех свойств ассоциативной обработки используется термин «ассоциативный процессор» (рис. 3.9).

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

Пример структуры ассоциативного процессора

Рис. 3.9. Пример структуры ассоциативного процессора

Клеточные и ДНК-процессоры. В настоящее время в поисках реальной альтернативы полупроводниковым технологиям создания новых вычислительных систем ученые обращают все большее внимание на биотехнологии, или биокомпьютинг, который представляет собой гибрид информационных, молекулярных технологий, а также биохимии. Биокомпьютинг позволяет решать сложные вычислительные задачи, пользуясь методами, принятыми в биохимии и молекулярной биологии, организуя вычисления с помощью живых тканей, клеток, вирусов и биомолекул. Наибольшее распространение получил подход, где в качестве основного элемента (процессора) используются молекулы дезоксирибонуклеиновой кислоты. Центральное место в этом подходе занимает так называемый ДНК-процессор. Кроме ДНК в качестве биопроцессора могут быть использованы также белковые молекулы и биологические мембраны.

ДНК-процессоры. Так же, как и любой другой процессор, ДНК-процессор характеризуется структурой и набором команд. В нашем случае структура процессора — это структура молекулы ДНК.

Ричард Липтон из Принстона первым показал, как, используя ДНК, кодировать двоичные числа и решать проблему удовлетворения логического выражения. Суть ее в том, что, имея некоторое логическое выражение, включающее п логических переменных, нужно найти все комбинации значений переменных, делающих выражение истинным. Задачу можно решить только перебором 2п комбинаций. Все эти комбинации легко закодировать с помощью ДНК, а дальше действовать по методике Адлемана. Липтон предложил также способ взлома шифра DES (американский криптографический), трактуемого как своеобразное логическое выражение.

В конце февраля 2002 г. появилось сообщение, что фирма Olympus Optical претендует на первенство в создании коммерческой версии ДНК-компьютера, предназначенного для генетического анализа.

Компьютер, построенный Olympus Optical, имеет молекулярную и электронную составляющие. Первая осуществляет химические реакции между молекулами ДНК, обеспечивает поиск и выделение результата вычислений. Вторая — обрабатывает информацию и анализирует полученные результаты.

Пока до практического применения компьютеров на базе ДНК еще очень далеко. Однако в будущем их смогут использовать не только для вычислений, но и как своеобразные нанофабрики лекарств. Поместив подобное «устройство» в клетку, врачи смогут влиять на ее состояние, исцеляя человека от самых опасных недугов.

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

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

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

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

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

Первые практические работы по искусственным нейросетям и нейрокомпьютерам начались еще в 40—50-е годы. Под нейронной сетью обычно понимают совокупность элементарных преобразователей информации, называемых «нейронами», которые определенным образом соединены друг с другом каналами обмена информации «синаптическими связями».

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

Каждый синапс характеризуется величиной синаптической связи или ее весом и>,. и по физическому смыслу эквивалентен электрической проводимости. Текущее состояние нейрона определяется как взвешенная сумма его входов:

п

Выход нейрона есть функция его состояния: у = /(я), которая называется активационной. Известны различные виды таких

а

б

Рис. 3.10. Нейрон (а), нейросеть (б)

в

б

Типовые активационные функции

Рис. 3.11. Типовые активационные функции: а — единичная пороговая функция; б — линейный порог (гистерезис); в — сигмоид (гиперболический тангенс); г — логистический сигмоид

функций, некоторые из которых представлены на рис. 3.11. Одной из наиболее распространенных является нелинейная функция с насыщением, так называемая сигмоидальная (логистическая) функция

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

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

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

Процессоры с многозначной (нечеткой) логикой. Идея построения процессоров с нечеткой логикой (fuzzy logic, «фаззи») основывается на нечеткой математике. Основанные на этой теории различные компьютерные системы, в свою очередь, существенно расширяют область применения нечеткой логики.

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

с

в

о

0 х 0 х 0 х

Рис. 3.12. Различные типы функций принадлежности

Функция принадлежности элементов к заданному множеству также представляет собой не жесткий порог «принадлежит — не принадлежит», а плавную сигмоиду, проходящую все значения от нуля до единицы. Теория нечеткой логики позволяет выполнять над такими величинами весь спектр логических операций — объединение, пересечение, отрицание и др. (рис. 3.13).

Задачи с помощью нечеткой логики решаются по следующему принципу (рис. 3.14):

  • 1) численные данные (показания измерительных приборов, результаты анкетирования) фаззируются (переводятся в нечеткий формат);
  • 2) обрабатываются по определенным правилам;
  • 3) дефаззируются и в виде привычной информации подаются на выход.

В 1986 г. в AT&T Bell Labs создавались процессоры с «прошитой» нечеткой логикой обработки информации. В начале 90-х компания Adaptive Logic (США) выпустила кристалл, сделанный по аналогово-цифровой технологии. Он позволит сократить сроки конструирования многих встроенных систем управления ре-

ц0(х) = тах{|хДх),цй(х)}

М*) ^ М*)

Операции включения (а), объединения (б), пересечения (в) и дополнения (г) нечетких множеств

Рис. 3.13. Операции включения (а), объединения (б), пересечения (в) и дополнения (г) нечетких множеств

Вход

Архитектура нечеткого компьютера

Рис. 3.14. Архитектура нечеткого компьютера: МНВ — механизм нечеткого вывода

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

В Европе и США ведутся интенсивные работы по интеграции нечетких команд в ассемблеры промышленных контроллеров встроенных устройств (чипы Motorola 68НС11. 12. 21). Такие аппаратные средства позволяют в несколько раз увеличить скорость выполнения приложений и компактность кода по сравнению с реализацией на обычном ядре. Кроме того, разрабатываются различные варианты нечетких сопроцессоров, которые контактируют с центральным процессором через общую шину данных, концентрируют свои усилия на размывании/уплотнении информации и оптимизации использования правил (продукты Siemens Nixdorf).

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

Идея квантовых вычислений, впервые высказанная Ю. И. Ма-ниным и Р. Фейнманом базируется на том, что квантовая система из L двухуровневых квантовых элементов (кубитов) имеет 21' линейно независимых состояний, и таким образом, квантовое вычислительное устройство размером L кубит может выполнять параллельно 21 операций.

Упрощенная схема вычисления на квантовом компьютере выглядит так: берется система кубитов, на которую записывается начальное состояние (исходные данные). Затем состояние системы или ее подсистем изменяется посредством базовых квантовых операций. В конце измеряется значение, и это результат работы компьютера.

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

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

Квантовый компьютер отличается от обычных ЭВМ, которые работают по следующей схеме: п бит памяти хранят состояние и каждый такт времени изменяются процессором. В квантовом случае, система из п кубитов находится в состоянии, являющемся суперпозицией всех базовых состояний, поэтому изменение системы касается всех 2" базовых состояний одновременно. Теоретически новая схема может работать намного быстрее классической. Например, алгоритм Шора позволяет разложить натуральное число и на простые множители за полиномиальное от 1о§(я) время (для обычного компьютера полиномиальный алгоритм неизвестен).

Другие технологии

Технологии «невыполнимых битов» (No-eXecute bit). Бит «NX» (63-й бит адреса) позволяет операционной системе определить, какие страницы адреса могут содержать исполняемые коды, а какие — нет. Попытка обратиться к NX-адресу как к исполняемой программе вызывает событие «нарушение защиты памяти», подобное попытке обратиться к памяти «только для чтения» или к области размещения ОС. Этим может быть запрещено выполнение программного кода, находящегося в некоторых страницах памяти, таким образом предотвращая вирусные или хакерские атаки. С теоретической точки зрения, здесь осуществляется виртуальное назначение «Гарвардской архитектуры» — разделение памяти для команд и для данных.

Обозначение «NX-bit» используется AMD, Intel использует выражение «XD-bit» (eXecute Disable bit).

Технологии энергосбережения.

OnNow PC — способ управления энергопотреблением системы, который заключается в значительном уменьшении потребления электрической энергии, но так, чтобы система в любой момент времени была готова к работе без перезагрузки ОС (например, как готов телевизор, включаемый с помощью удаленного пульта). Система при включении остается способной реагировать на внешние события: нажатие кнопки пользователем, сигнал из сети. Это обеспечивается тем, что небольшая часть системы остается постоянно включенной.

Интеллектуальное управление электропитанием (Intel Intelligent Power Capability) — уменьшение потребления энергии путем включения именно тех логических блоков, которые требуются в данный момент.

Enhanced Intel Speed STep (EIS T) — идентичен механизму, осуществленному в процессорах Intel мобильных ПК, который позволяет процессору уменьшать его тактовую частоту, когда не требуется высокая загрузка, таким образом значительно сокращая нагрев центрального процессора и потребление мощности.

Технологии виртуализации, или возможности запуска при помощи специального программного обеспечения (менеджера виртуальных машин) одного или нескольких экземпляров операционных систем, называемых гостевыми, внутри другой ОС, называемой хост-системой (см., напр., [16]). Для ускорения, или во многих случаях, вообще возможности работы гостевых операционных систем разрабатываются средства аппаратной поддержки виртуализации со стороны процессоров:

  • • VT-x (Intel Virtualization Technology), AMD-V (AMD Virtualization Technology) — технологии аппаратной поддержки виртуализации в процессорах Intel и AMD;
  • • VT-d (Intel Virtualization Technology for Directed I/O), AMD-vi — технологии виртуализации ввода-вывода, позволяющие гостевым машинам напрямую использовать сетевые адаптеры, графические и дисковые контроллеры и другие аналогичные устройства.

Технология Turbo Boost (от англ, turbo boost — турборазгон, турбоускорение) — предложена Intel для автоматического увеличения тактовой частоты процессора свыше номинальной, если при этом не превышаются ограничения мощности, температуры и тока в составе расчетной мощности (TDP). При этом достигается увеличение производительности однопоточных и многопоточных приложений. Аналогичная технология от AMD получила название «Turbo Core».

 
<<   СОДЕРЖАНИЕ   >>