СКИПОДы 2007 полная версия (1127795), страница 9
Текст из файла (страница 9)
Решение было найдено в конце 60-хгодов, когда фирма Control Data, с которой в то время сотрудничал Крей, представиламашину STAR-100, основанную на векторно-конвейерном принципе обработки данных.Отличие векторно-конвейерной технологии от архитектуры матричных ЭВМ заключается втом, что вместо множества процессорных элементов, выполняющих одну и ту же командунад разными элементами вектора, применяется единственный конвейер операций, принципдействия которого полностью соответствует классическому конвейеру автомобильныхзаводов Форда. Даже такая архаичная по современным понятиям суперЭВМ, как STAR-100,показала предельную производительность на уровне 50 MFLOPS.
При этом существенно,что векторно-конвейерные суперЭВМ значительно дешевле своих матричных"родственников". К примеру, разработка и производство ILLIAC IV обошлись в 40 млн.долл. при расходах на эксплуатацию порядка 2 млн. долл. в год, тогда как рыночнаястоимость первых суперкомпьютеров фирм CRAY и Control Data находилась в пределах 10- 15 млн. долл., в зависимости от объема памяти, состава периферийных устройств и другихособенностей конфигурации системы.Второй существенной особенностью векторно-конвейерной архитектуры является то, чтоконвейер операций имеет всего один вход, по которому поступают операнды, и один выходрезультата, тогда как в матричных системах существует множество входов по данным впроцессорные элементы и множество выходов из них.
Другими словами, в компьютерах сконвейерной обработкой данные всех параллельно исполняемых операций выбираются изаписываются в единую память, в связи с чем отпадает необходимость в коммутаторепроцессорных элементов, ставшем камнем преткновения при проектировании матричныхсуперЭВМ.CISC и RISC архитектуры ЭВМ.Двумя основными архитектурами набора команд, используемыми компьютернойпромышленностью на современном этапе развития вычислительной техники (всоответствии с [2]) являются архитектуры CISC и RISC. Основоположником CISCархитектуры можно считать компанию IBM с ее базовой архитектурой /360, ядро которойиспользуется с 1964 года и дошло до наших дней, например, в таких современныхмейнфреймах как IBM ES/9000.Лидером в разработке микропроцессоров c полнымнабором команд (CISC – Complete Instruction Set Computer) считается компания Intel сосвоей серией x86 и Pentium.
Эта архитектура является практическим стандартом длярынка микрокомпьютеров. Для CISC-процессоров характерно: сравнительно небольшоечисло регистров общего назначения; большое количество машинных команд, некоторые28из которых нагружены семантически аналогично операторам высокоуровневых языковпрограммирования и выполняются за много тактов; большое количество методовадресации; большое количество форматов команд различной разрядности; преобладаниедвухадресного формата команд; наличие команд обработки типа регистр-память.Основой архитектуры современных рабочих станций и серверов является архитектуракомпьютера с сокращенным набором команд (RISC – Reduced Instruction Set Computer).Зачатки этой архитектуры уходят своими корнями к компьютерам CDC6600,разработчики которых (Торнтон, Крэй и др.) осознали важность упрощения наборакоманд для построения быстрых вычислительных машин.
Эту традицию упрощенияархитектуры С. Крэй с успехом применил при создании широко известной сериисуперкомпьютеров компании Cray Research. Однако окончательно понятие RISC всовременном его понимании сформировалось на базе трех исследовательских проектовкомпьютеров: процессора 801 компании IBM, процессора RISC университета Беркли ипроцессора MIPS Стенфордского университета.Среди других особенностей RISC-архитектур следует отметить наличие достаточнобольшого регистрового файла (в типовых RISC-процессорах реализуются 32 или большеечисло регистров по сравнению с 8 – 16 регистрами в CISC-архитектурах), что позволяетбольшему объему данных храниться в регистрах на процессорном кристалле большеевремя и упрощает работу компилятора по распределению регистров под переменные.Для обработки, как правило, используются трехадресные команды, что помимоупрощения дешифрации дает возможность сохранять большее число переменных врегистрах без их последующей перезагрузки.Развитие архитектуры RISC в значительной степени определялось прогрессом в областисоздания оптимизирующих компиляторов.
Именно современная техника компиляциипозволяет эффективно использовать преимущества большего регистрового файла,конвейерной организации и большей скорости выполнения команд. Современныекомпиляторы используют также преимущества другой оптимизационной техники дляповышения производительности, обычно применяемой в процессорах RISC: реализациюзадержанных переходов и суперскалярной обработки, позволяющей в один и тот жемомент времени выдавать на выполнение несколько команд.Следует отметить, что в последних разработках компании Intel (имеются в виду Pentium иPentium Pro), а также ее последователей-конкурентов (AMD R5, Cyrix M1, NexGen Nx586и др.) широко используются идеи, реализованные в RISC-микропроцессорах, так чтомногие различия между CISC и RISC стираются.
Однако сложность архитектуры исистемы команд x86 остается и является главным фактором, ограничивающимпроизводительность процессоров на ее основе.Внеочередное и спекулятивное выполнения команд.Внеочередное выполнение командМетоды динамической оптимизации: неупорядоченное выполнение“out-of-orderexecution” , неупорядоченная выдача “out-of-order issue” основаны на изменении порядкавычислений. Так, пример вычислений из предыдущего раздела после его преобразования квиду:A1 = B1+C129A3 = B3+C3 A3 = B3+C3A4 = B4+C4 A4 = B4+C4A2 = A1+C2 A2 = (B1+C1)+ C2позволит проводить вычисления без пропуска рабочих тактов для ожидания вычисления.Оптимизационные преобразования последовательности вычисления могут проводитьсядинамически, аппаратурой АЛУ, а также, в ряде случаев и статически проводитьсясистемами программирования.14.
Спекулятивное выполнение командВ конвейерных архитектурах устройство выборки команд является таким же конвейером,как и другие функциональные устройства. Так, для условного операторы: IF (A<B) GO TOL;S1;L:S2 еще до вычисления значения условного выражения А<В необходимо решатьзадачу о заполнении конвейера команд кодами S1 или S2 – спекулятивного выполненияпрограммы (чтобы не было пропуска тактов конвейера из за неверно выбранной ветки,коды которой потребуется убирать из конвейера).Механизмы предсказания переходов.Тривиальное решение состоит в выборе кода, текстуально следующего за командойусловного перехода.
Для такого оборудования компиляторы могут формировать объектныйкод с размещением наиболее вероятно выполняемым фрагменте программынепосредственно за командой условного перехода. Так, для циклических конструкций,вероятность перехода на повторение цикла выше вероятности выхода из него. Некоторыесистемы программирования дают возможность программисту указывать вероятность перехода по метке в условном переходе.Аппаратный механизм учета вероятности перехода состоит из блока предсказанияпереходов. Этот блок, кроме (вместо) статически определенных предпочтений дляветвлений, имеет таблицу переходов, в которой хранится история переходов для каждого (врамках объематаблицы)переходапрограммы.Большинствасовременныхмикропроцессоров обещают точность предсказаний переходов этим способом выше 90%.Причина повышенного внимания к этому вопросу обусловлена большими задержками,возникающими при неверном предсказании переходов, что грозит существенной потерейпроизводительности.
Используемые в микропроцессорах методы предсказания переходов,как уже было сказано, бывают статические и динамические. Как динамический, так истатический подходы имеют свои преимущества и недостатки.Статические методы предсказания используются реже. Такие предсказания делаютсякомпилятором еще до момента выполнения программы. Соответствующие действиякомпилятора можно считать оптимизацией программ. Такая оптимизация можетосновываться на сборе информации, получаемой при тестовом прогоне программы (ProfileBased Optimisation, PBO) или на эвристических оценках. Результатом деятельностикомпилятора являются "советы о направлении перехода", помещаемые непосредственно вкоды выполняемой программы.
Эти советы использует затем аппаратура во времявыполнения. В случае, когда переход происходит, или наоборот - как правило, непроисходит, советы компилятора часто бывают весьма точны, что ведет к отличнымрезультатам. Преимущество статического подхода - отсутствие необходимостиинтегрировать на чипе дополнительную аппаратуру предсказания переходов.Большинство производителей современных микропроцессоров снабжают их различнымисредствами динамического предсказания переходов, производимого на базе анализа"предыстории". Тогда аппаратура собирает статистику переходов, которая помещается втаблицу истории переходов BHT (Branch History Table).В обоих случаях компилятор неможет выработать эффективные рекомендации на этапе трансляции программы.
В то жевремя схемы динамического предсказания переходов легко справляются с такими задачами.В этом смысле динамическое предсказание переходов "мощнее" статического. Однако у30динамического предсказания есть и свои слабые места - это проблемы, возникающие из-заограниченности ресурсов для сбора статистики .Буфера прогнозирования условных переходовПростейшей схемой динамического прогнозирования направления условных переходовявляется буфер прогнозирования условных переходов (branch-prediction buffer) или таблица"истории" условных переходов (branch history table).
Буфер прогнозирования условныхпереходов представляет собой небольшую память, адресуемую с помощью младшихразрядов адреса команды перехода. Каждая ячейка этой памяти содержит один бит,который говорит о том, был ли предыдущий переход выполняемым или нет. Этопростейший вид такого рода буфера. В нем отсутствуют теги, и он оказывается полезнымтолько для сокращения задержки перехода в случае, если эта задержка больше, чем время,необходимое для вычисления значения целевого адреса перехода. В действительности мыне знаем, является ли прогноз корректным (этот бит в соответствующую ячейку буферамогла установить совсем другая команда перехода, которая имела то же самое значениемладших разрядов адреса). Но это не имеет значения.
Прогноз - это только предположение,которое рассматривается как корректное, и выборка команд начинается попрогнозируемому направлению. Если же предположение окажется неверным, бит прогнозаинвертируется. Конечно такой буфер можно рассматривать как кэш-память, каждоеобращение к которой является попаданием, и производительность буфера зависит от того,насколько часто прогноз применялся и насколько он оказался точным.Однако простая однобитовая схема прогноза имеет недостаточную производительность.Рассмотрим, например, команду условного перехода в цикле, которая являласьвыполняемым переходом последовательно девять раз подряд, а затем однаждыневыполняемым.