Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3-й семестр / Организация ЭВМиС; Орлов С.А., Цилькер Б.Я

..pdf
Скачиваний:
428
Добавлен:
25.12.2020
Размер:
5.43 Mб
Скачать

Архитектура процессоров

441

 

 

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

Преимущества и недостатки RISC

Сравнивая достоинства и недостатки CISC и RISC, невозможно сделать однозначный вывод о неоспоримом преимуществе одной архитектуры над другой. Для отдельных сфер использования ВМ лучшей оказывается та или иная. Тем не менее ниже приводится основная аргументация «за» и «против» RISC-архитектуры.

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

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

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

Недостатки RISC прямо связаны с некоторыми преимуществами этой архитектуры. Принципиальный недостаток — сокращенное число команд: на выполнение ряда функций приходится тратить несколько команд вместо одной в CISC. Это удлиняет код программы, увеличивает загрузку памяти и трафик команд между памятью и ЦП. Исследования показали, что RISC-программа в среднем на 30% длиннее CISCпрограммы, реализующей те же функции.

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

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

442

Глава 9. Процессоры

 

 

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

Процессоры с архитектурой VLIW

Архитектура с командными словами сверхбольшой длины или со сверхдлинными командами (VLIW, Very Long Instruction Word) известна с начала 80-х из ряда университетских проектов. Идея VLIW базируется на том, что задача эффективного планирования параллельного выполнения команд возлагается на «разумный» компилятор. Такой компилятор вначале анализирует исходную программу. Цель анализа: обнаружить все команды, которые могут быть выполнены одновременно, причем так, чтобы между командами не возникали конфликты. В ходе анализа компилятор может даже частично имитировать выполнение рассматриваемой программы. На следующем этапе компилятор пытается объединить такие команды в пакеты (связки), каждый из которых рассматривается как одна сверхдлинная команда. Объединение нескольких простых команд в одну сверхдлинную производится по следующим правилам:

количество простых команд, объединяемых в одну команду сверхбольшой длины, равно числу имеющихся в процессоре функциональных (исполнительных) блоков (ФБ);

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

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

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

В качестве простых команд, образующих сверхдлинную, обычно используются команды RISC-типа, поэтому архитектуру VLIW иногда называют постRISCархитектурой. Максимальное число полей в сверхдлинной команде равно числу вычислительных устройств и обычно колеблется в диапазоне от 3 до 20. Все вычислительные устройства имеют доступ к данным, хранящимся в едином многопортовом регистровом файле.

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

Архитектура процессоров

443

 

 

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

Двумя проблемами VLIW-архитектуры являются:

усложнение регистрового файла и, прежде всего, связей этого файла с вычислительными устройствами;

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

В России VLIW-концепция была реализована в суперкомпьютере «Эльбрус 3-1» и получила дальнейшее развитие в его последователе — «Эльбрус-2000» (E2k).

Рис. 9.39. Формат сверхдлинной команды и взаимосвязь полей команды с составляющими блока исполнения

Процессоры с архитектурой EPIC

Дальнейшим развитием идеи VLIW стала архитектура EPIC (Explicitly Parallel Instruction Computing) — вычисления с явным параллелизмом команд. В архитектуре, возникшей как совместная разработка фирм Intel и Hewlett–Packard, реализован новый подход, являющийся усовершенствованным вариантом технологии VLIW. Первым представителем данной стратегии стал микропроцессор Itanium компании Intel. Корпорация Hewlett–Packard также реализует данный подход в своих разработках.

444

Глава 9. Процессоры

 

 

В архитектуре EPIC, которая в изделиях Intel получила название IA-64 (Intel Architecture – 64), предполагается наличие в процессоре ста двадцати восьми 64-разрядных регистров общего назначения (РОН) и ста двадцати восьми 80разрядных регистров с плавающей запятой. Кроме того, процессор IA-64 содержит 64 однобитовых регистра предикатов.

Формат команд в архитектуре IA-64 показан на рис. 9.40.

Рис. 9.40. Формат сверхдлинной команды в архитектуре IA-64

Команды упаковываются (группируются) компилятором в сверхдлинную команду — связку (bundle) длиною в 128 разрядов. Связка содержит три команды и шаблон, в котором указываются зависимости между командами (можно ли с командой I0 запустить параллельно I1, или же I1 должна выполниться только после I0), а также между другими связками (можно ли с командой I2 из связки S0 запустить параллельно команду I3 из связки S1).

Перечислим все варианты составления связки из трех команд:

I0 || I1 || I2 — все команды исполняются параллельно;

I0 & I1 || I2 — сначала I0, затем исполняются параллельно I1 и I2;I0 || I1 & I2 — параллельно обрабатываются I0 и I1, после них — I2;

I0 & I1 & I2 — команды исполняются в последовательности I0, I1, I2.

Одна связка, состоящая из трех команд, соответствует набору из трех функциональных блоков процессора. Процессоры IA-64 могут содержать разное количество таких блоков, оставаясь при этом совместимыми по коду. Благодаря тому, что в шаблоне указана зависимость и между связками, процессору с N одинаковыми блоками из трех ФБ будет соответствовать сверхдлинная команда из N × 3 команд (N связок). Тем самым обеспечивается масштабируемость IA-64.

Поле каждой из трех команд в связке, в свою очередь, состоит из пяти полей:

13-разрядного поля кода операции;диката;6-разрядного поля предикатов, хранящего номер одного из 64 регистров пре-

7-разрядного поля первого операнда (первого источника), где указывается номер регистра общего назначения или регистра с плавающей запятой, в котором содержится первый операнд;

Архитектура процессоров

445

 

 

7-разрядного поля второго операнда (второго источника), где указывается номер регистра общего назначения или регистра с плавающей запятой, в котором содержится второй операнд;

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

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

Если в исходной программе встречается условное ветвление (по статистике — через каждые шесть команд), то команды из разных ветвей помечаются разными регистрами предиката (команды имеют для этого соответствующие поля), далее эти команды выполняются совместно, но их результаты не записываются, пока значения регистров предиката (РП) не определены. Когда, наконец, вычисляется условие ветвления, РП, соответствующий «правильной» ветви, устанавливается в 1, а другой — в 0. Перед записью результатов процессор проверяет поле предиката и записывает результаты только тех команд, поле предиката которых указывает на РП с единичным значением.

Предикаты формируются как результат сравнения значений, хранящихся в двух регистрах. Результат сравнения («Истина» или «Ложь») заносится в один из РП, но одновременно с этим во второй РП записывается инверсное значение полученного результата. Такой механизм позволяет процессору более эффективно выполнять конструкции типа IF-THEN-ELSE.

Логика выдачи команд на исполнение сложнее, чем в традиционных процессорах типа VLIW, но намного проще, чем у суперскалярных процессоров с неупорядоченной выдачей.

По мнению специалистов Intel и HP, концепция EPIC, сохраняя все достоинства архитектурной организации VLIW, свободна от большинства ее недостатков. Особенностями архитектуры EPIC являются:

большое количество регистров;

масштабируемость архитектуры до большого количества функциональных блоков. Это свойство представители компаний Intel и HP называют наследственно масштабируемой системой команд (Inherently Scaleable Instruction Set);

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

предикация — команды из разных ветвей условного предложения снабжаются полями предикатов (полями условий) и запускаются параллельно;

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

446

Глава 9. Процессоры

 

 

Архитектура многоядерных процессоров

Многоядерный процессор — это центральный процессор, содержащий два и более вычислительных ядра на одном процессорном кристалле или в одном корпусе. Под ядром принято понимать процессор и кэш-память (обычно первого уровня — L1).

При наличии нескольких ядер необходимо обеспечить возможность их взаимодействия с основной памятью и между собой. Эта задача решается либо путем подключения ядер и памяти к общей шине, либо с помощью коммуникационной сети (рис. 9.41). Выбор варианта зависит от способа организации основной памяти. Если она является совместно используемой, то применяется вариант с шиной. В случае распределенной основной памяти коммуникации может обеспечить лишь сеть. Шинная организация обусловливает ограничение на число ядер. Пропускная способность шины ограничивает число ядер величиной 32, поскольку дальнейшее увеличение количества ядер ведет к снижению производительности многоядерного процессора.

Рис. 9.41. Варианты многоядерных процессоров: а — с совместно используемой памятью; б — с разделенной памятью

В плане реализации многоядерные архитектуры различных производителей существенно различаются (рис. 9.42). Это касается не только системы коммуникаций, но и организации иерархии кэш-памяти. Во всех вариантах каждый процессор обладает кэш-памятью первого уровня. Кэш-память второго уровня может быть либо индивидуальной для каждого ядра, либо общей для группы ядер (обычно одна память L2 на пару ядер). В новейших многоядерных процессорах присутствует кэшпамять третьего уровня L3. В известных микросхемах L3 является общей для всех ядер. Кроме того, каждый производитель отдает предпочтение своим архитектурным решениям [16]. Так, в процессорах фирмы Intel ядра поддерживают технологию Hyper-Threading. В процессорах фирмы AMD связь между ядрами организована непосредственно на процессорном кристалле, а не через материнскую плату. Это решение существенно повышает эффективность взаимодействия ядер.

Архитектура процессоров

447

 

 

Рис. 9.42. Структура многоядерных процессоров различных производителей:

а— IBM Power 6; б — Intel Pentium D; в — Intel Core 2 Quad; г — Intel Nehalem;

д— Intel Itanium 3 Tukwila; е — AMD Phenom X4; ж — Sun UltraSPARC T2

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

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

448

Глава 9. Процессоры

 

 

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

Контрольные вопросы

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

2.Определите синхронный конвейер из 8 функциональных блоков, из которых половина блоков работает в полтора раза медленнее других. Задайте конкретные временные параметры элементов конвейера. Рассчитайте значения трех метрик эффективности конвейера.

3.Пусть алгоритм вычисления программного разворота летательного аппарата

(ЛА) имеет вид: tetai = (a × vi + b) × vi + c, vi = vi–1 + ∆vi, где tetai — программное значение угла тангажа; vi текущее значение скорости ЛА; vi–1 — предыдущее значение скорости ЛА; ∆vi текущее приращение скорости ЛА; a, b, c — константы. Запрограммируйте этот алгоритм с помощью системы команд семейства Pentium. Составьте диаграмму выполнения своей программы на конвейере с шестью ступенями. Определите случаи структурного риска и объясните возможные пути их разрешения. Зафиксируйте случаи риска по данным и поясните, как они распознаются. Предложите пути их устранения.

4.Модифицируем предыдущий алгоритм следующим образом: tetai = (a × × vi + b) × vi + c, если ∆vi > d, тогда vi = vi–1 + ∆vi, иначе vi = vi–1. Для соответствующей программы опишите случай нарушения ритмичности работы конвейера с

шестью ступенями. Охарактеризуйте возможные способы уменьшения задержки конвейера и выберите один из них. Выбор обоснуйте.

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

6.В чем заключается смысл динамического предсказания переходов? Дайте развернутую характеристику достоинств и недостатков известных способов динамического предсказания переходов. Из каких соображений следует выбирать конкретную схему динамического предсказания? От чего зависит выбор?

7.Поясните идею суперконвейера. В чем заключаются достоинства и недостатки суперконвейеризации?

8.Поясните достоинства и недостатки ВМ с полным набором команд. Какие исторические причины привели к их возникновению?

9.Какие исторические причины способствовали появлению ВМ с сокращенным набором команд?

10. Перечислите основные характеристики ВМ с сокращенным набором команд.

11. Опишите возможности совместного использования в одной ВМ CISC-ар­ хитектуры и RISC-архитектуры.

12. Для чего вводится механизм регистровых окон? Поясните структуру окна. Ради какой цели окна организуются в виде циклического буфера?

13. Обоснуйте основные недостатки ВМ с сокращенным набором команд.

Контрольные вопросы

449

 

 

14. Дайте развернутую характеристику назначения и структурной организации суперскалярного процессора. Какие уровни параллелизма здесь используются?

15. На конкретных примерах поясните суть проблемы неупорядоченности команд в суперскалярных процессорах.

16. Разработайте структуру конкретного суперскалярного процессора. Задайте несколько программных фрагментов и составьте диаграммы их выполнения для трех методик выдачи и завершения команд.

17. На примере конкретного программного фрагмента поясните суть метода переименования регистров. В чем состоят недостатки этого метода? Как их смягчить?

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

19. Опишите назначение, организацию и порядок работы буфера восстановления последовательности. Для решения каких задач он применяется в современных процессорах?

20. Каким образом и при каких условиях гиперпотоковая обработка способствует повышению производительности процессора?

21. Сформулируйте правила объединения простых команд в командное слово сверхбольшой длины.

22. Чем ограничивается количество объединяемых команд в технологии EPIC?

23. Поясните назначение системы предикации и ее реализацию в архитектуре IA-64.

Глава 10

Параллельные вычисления

Фон-неймановская архитектура ориентирована на последовательное исполнение команд программы. В условиях постоянно возрастающих требований к производительности вычислительной техники все очевидней становятся ограничения такого подхода. Дальнейшее развитие компьютерных средств связано с переходом к параллельным вычислениям, как в рамках одной ВМ, так и путем создания многопроцессорных систем и сетей, объединяющих большое количество отдельных процессоров или отдельных вычислительных машин. Для такого подхода вместо термина «вычислительная машина» более подходит термин «вычислительная система» (ВС). Отличительной особенностью вычислительных систем является наличие в них средств, реализующих параллельную обработку, за счет построения параллельных ветвей в вычислениях, что не предусматривалось классической структурой ВМ.

Уровни параллелизма

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

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

Уровень команд. Выражается в параллельном выполнении нескольких команд и достигается посредством размещения в процессоре сразу нескольких конвейеров. Реализуется в суперскалярных процессорах.

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

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