Максимов Н.В., Партыка Т.Л., Попов И.И. Архитектура ЭВМ и вычислительных систем (2005) (1186253), страница 22
Текст из файла (страница 22)
Технологии повышения производительности процессоров117Результат СОперанд Л128-разр.Устройство сложенияОперанд В128-разр.Устройство умноженияОбменданнымиУстройство сдвигаЛогическое устройствоУстройство задержкиУправлениеРис. 2.8. Векторный процессор Cyber-205Кратковременный остановперанд А128-разрперанд SУправле- Сравне- Выравниниениевающийзнаком порядковсдвиг*\WСложениеСчет для Сдвиг для ОбнаружеРезультат Снормали- нормалиние козациизациинечного 128-разрварианта128-разрКратковременный остановРис. 2.9. Архитектура конвейера сложения векторного процессора Cyber-205элемент потока данных.
При работе в векторном режиме векторныепроцессоры обрабатывают данные практически параллельно, чтоделает их в несколько раз более быстрыми, чем при работе в скалярном режиме. Максимальная скорость передачи данных в векторном формате может составлять 64 Гбайт/с, что на два порядка быстрее, чем в скалярных машинах.В настоящее время созданы однокристальные векторно-конвейерные процессоры, такие, как SX-6. Основными компонентамимикропроцессора являются скалярный процессор и восемь идентичных векторных устройств, суммарная производительность которых составляет 64 Гфлопс.
Примерами систем подобного типа являются, например, процессоры фирм NEC и Hitachi.118Глава 2. Архитектура и структура ВМ и системДинамическое исполнение (Dynamic execution technology)Это совокупность технологий обработки данных в процессоре,обеспечивающая более эффективную работу процессора за счет манипулирования данными, а не простого исполнения списка инструкций.
Динамическое исполнение представляет собой-комбинациютрех методов обработки данных:• множественное предсказание ветвлений;• анализ потока данных;• спекулятивное (по предположению) исполнение.Впервые реализовано в процессоре Pentium Pro.М н о ж е с т в е н н о е п р е д с к а з а н и е в е т в л е н и й . Предсказывается прохождение программы по нескольким ветвям: процессор может предвидеть разделение потока инструкций, используяалгоритм множественного предсказания ветвлений.
С большой точностью (более 90 %) он предсказывает, в какой области памятиможно найти следующие инструкции. Это оказывается возможным,поскольку в процессе исполнения иструкции процессор просматривает программу на несколько шагов вперед. Этот метод позволяетувеличить загруженность процессора.Хотя ВТВ (Branch Target Buffer — буфер предсказания переходов) и не может правильно предсказать абсолютно все переходы, нобольшинство предсказаний оказывается точными, что обеспечиваетзначительное повышение производительности. Например, программный цикл, состоящий из пересылки, сравнения, сложения иперехода в 80486 DX выполняется за 6 тактов синхронизации, а вPentium за 2 (команды пересылки и сложения, а также сравнения иперехода сочетаются и предсказывается переход).А н а л и з п о т о к а д а н н ы х .
Анализирует и составляет график исполнения инструкций в оптимальной последовательности,независимо от порядка их следования в тексте программы. Используя анализ потока данных, процессор просматривает декодированные инструкции и определяет, готовы ли они к непосредственномуисполнению или зависят от результата других инструкций. Далеепроцессор определяет оптимальную последовательность выполнения и исполняет инструкции наиболее эффективным образом.С п е к у л я т и в н о е в ы п о л н е н и е . Повышает скорость выполнения, просматривая программу вперед и исполняя те инструкции, которые необходимы. Процессор выполняет инструкции (допяти инструкций одновременно) по мере их поступления в оптимизированной последовательности (спекулятивно). Поскольку выполнение инструкций происходит на основе предсказания ветвлений,2.3.
Технологии повышения производительности процессоров119результаты сохраняются как «спекулятивные». На конечном этапепорядок инструкций восстанавливается и переводится в обычноемашинное состояние.Процессоры уровня IA-64 имеют мощные вычислительные ресурсы, включая 128 регистров целых чисел, 128 регистров действительных чисел, 64 предикационных регистра, а также ряд специальных регистров.Набор команд оптимизирован для решения задач криптографии, обработки видеосигналов и других процессов, встречающихсяв серверах и рабочих станциях.На рис. 2.10 и 2.11 представлены иллюстрации к возможностямархитектуры IA-64:• предикация (predication) — одновременное исполнение двухветвей программы, вместо предсказания переходов (выполнения наиболее вероятного);2. Компилятор назначает длякаждой ветви регистр (Р1, Р2)(или «буфер предвыборки» —•predicate register)1.
Ветвление может иметьдва исхода3. Все команды этой ветвипомещаются в регистр Р14. Все команды данной ветвипомещаются в регситр Р2IiКоманда 4(Р1)<-•«-6 Когда становится известен реальный исход ветвления, вычисленияпродолжаются только дляреальной ветвиiКоманда 5(Р1)iКоманда 6(Р1)t5. ЦП начинает выполнятьобе ветви параллельно,так как вычисления независимы•«-•>Команда 7(Р2)i•>Команда 8(Р2)i->Команда 9(Р2)Компилятор может подготовить параллельную обработку, переставивкоманды и сочетая инструкции 4 и 7 , 5 и 8 , 6 и 9для одновременного выполненияКоманда 2Команда 3(переход)Команда 4Команда 7Команда 5(Р1)(Р2)(Р1)Команда 8Команда 6Команда 9(Р1)(Р2)Команда 1(Р2)Рис.
2.10.128-6«связкиПредикация или одновременное предварительное выполнениеветвей оператора условного переходавсех120Глава 2. Архитектура и структура ВМ и систем1 Компилятор сканирует исходнуюпрограмму и обнаруживает чтениеданных (команда 8, после перехода)а удаляется Пок ещается опереющее чтение перед переходомеле перехода вотавляется проверкаКоманда 22 В момент исполнения программы эта команда считываетданные, которые могут понадобиться в одной из ветвейЧтение^с опережением^5 Реально команда чтениявыполняется пер ед ветвлеКоманда 3нием программы(переход)VКоманда 41it3 Если исполнение идет по даннойветви, то поскольку данные ужесчитаны, команда 8 реально выпмяться не будетКоманда 7^1*~ ;Команда 5Команда 8(чтение)""""*Команда 64 Проверка де£ ствительностисчитанного дан iuiu*"КомандапроверкиРис.
2.11. Опережающее считывание данных в регистр из памяти(speculative loading)• опережающее чтение данных (speculative loading), т. е. загрузкаданных в регистры с опережением, до того, как определилосьреальное ветвление программы (переход управления).Эти возможности осуществляются комбинированно — при компиляции и выполнении программы.Предикация — центральный метод планирования параллельнойобработки.
Компилятор транслирует операторы исходного кода, содержащие ветвление (условный переход), в совокупность блоковмашинных команд, идущих друг за другом. Обычный процессор, взависимости от исхода условия, исполняет один из этих базовыхблоков, пропуская все другие. Более развитые процессоры пытаютсяпрогнозировать исход операции перехода и заранее (спекулятивно,по предположению) выполняют один из блоков, теряя время приошибке прогнозирования.Базовые блоки обычно малы (2—3 команды) и ветвление встречается в среднем через каждые шесть операторов языка программирования.
Поэтому выигрыш оказывается небольшим.2.3. Технологии повышения производительности процессоров121Когда компилятор уровня IA-64 обнаруживает оператор ветвления в исходной программе, он анализирует все возможные ветви(блоки) и помечает их метками или предикатами (predicate). Послеэтого он определяет, какие из них могут быть выполнены параллельно (из соседних, независимых, ветвей).Затем компилятор группирует машинные коды в 128-битовыесвязки (bundles), по 3 команды в каждой. В описания связок (template)заносится информация о том, какие команды могут исполнятьсяпараллельно (независимо). Например, если компилятор находит16 команд, которые не имеют взаимной связи, он укладывает их в6 независимых связок (по 3 в первых 5 и одна в 6-й) и помечает их вописании.В процессе выполнения программы ЦП просматривает описания связок, выбирает команды, которые взаимно независимы и распределяет их на параллельную обработку.
Если ЦП обнаруживаетоператор ветвления, он не пытается предсказать переход, а начинаетвыполнять все возможные ветви программы.Таким образом, могут быть обработаны все ветви программы,но без записи полученного результата. В определенный момент процессор наконец «узнает» о реальном исходе условного оператора,записывает в память результат «правильной ветви» и отменяет остальные результаты.Опережающее чтение (по предположению) разделяет загрузкуданных в регистры и их реальное использование, избегая ситуации,когда процессору приходится ожидать прихода данных, чтобы начать их обработку.Прежде всего, компилятор анализирует программу, определяякоманды, которые требуют приема данных из оперативной памяти.Там, где это возможно, он вставляет команды опережающего чтенияи парную команду контроля опережающего чтения (speculativecheck). В то же время компилятор переставляет команды таким образом, чтобы ЦП мог их обрабатывать параллельно.В процессе работы ЦП встречает команду опережающего чтенияи пытается выбрать данные из памяти.
Может оказаться, что ониеще не готовы (результат работы блока команд, который еще не выполнился). Обычный процессор в этой ситуации выдает сообщениеоб ошибке, однако система уровня IA-64 откладывает «сигнал тревоги» до момента прихода процесса в точку «команда проверки опережающего чтения». Если к этому моменту все предшествующиеподпроцессы завершены и данные считаны, то обработка продолжается, в противном случае вырабатывается сигнал прерывания.II122Глава 2. Архитектура и структура ВМ и системТехнология Hyper-Threading (HT)Здесь реализуется разделение времени на аппаратном уровнефизически процессор разбивается на два логических процессора,каждый из которых использует ресурсы чипа — ядро, кэш-память,шины, исполнительное устройство (рис 2 12) Ядро процессора выполняет два процесса одновременноКэш L2Кэш данныхJJ J «iМJПамять13адача1 _|3адача2Кэш командАрифметико-логическое устройствоРис.