632 Глава 15. Потоковые и редукционные вычислительные системы

той — состоять преимущественно из команд целочисленной арифметики и обра­щения к памяти.

В заключение необходимо остановиться на третьем виде общих ресурсов — кэш­памяти. Процессор Хеоп предполагает работу с кэш-памятью трех уровней (LI, L2 и L3) и так называемой кэш-памятью трассировки. Оба логических процессора совместно используют одну и ту же кэш-память и хранящиеся в ней данные. Если поток, обрабатываемый логическим процессором 0, хочет прочитать некоторые данные, кэшированные логическим процессором 1, он может взять их из общего кэша. Из-за того, что в гипергютоковом процессоре одну и ту же кэш-память ис­пользуют сразу два логических процессора, вероятность конфликтов и, следова­тельно, вероятность снижения производительности возрастает.

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

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

НЕ нашли? Не то? Что вы ищете?

По оценке Intel, прирост скорости вычислений в некоторых случаях может до­стигать 25-35%. В приложениях, ориентированных на многозадачность, програм­мы ускоряются на 15-20%. Возможны, однако, ситуации, когда прирост в быстро­действии может быть незаметен и даже быть отрицательным. Таким образом, эффективность технологии находится в прямой зависимости от характера реали­зуемого программного приложения. Максимальная отдача достигается при работе серверных приложений за счет разнообразия процессорных операций.

В настоящий момент аппаратная поддержка технологии заложена в микропро­цессоры Pentium 4, причем, по информации Intel, в процессоре Pentium 4 Хеоп это потребовало 5% дополнительной площади на кристалле. Программная поддержка технологии предусмотрена в операционных системах Windows 2000, Windows XP и Server (в предшествующих ОС Windows такая возможность от­сутствует).

Вычислительные системы с управлением вычислениями по запросу

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

Вычислительные системы с управлением вычислениями по запросу 633

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

Математическую основу редукционных ВС составляют лямбда-исчисления [2, 57,202], а для написания программ под такие системы нужны так называемые функ­циональные языки программирования (FP, Haskell и др.). На функциональном языке все программы представляются в виде выражений, а процесс выполнения программы заключается в определении значений последних (это называется оцен­кой выражения). Оценка выражения производится посредством повторения опе­рации выбора и упрощения тех частей выражения, которые молено свести от слож­ного к простому (такая часть выражения называется редексом, причем сам редекс также является отдельным выражением). Операция упрощения называется редук­цией. Процесс редукции завершается, когда преобразованное редукцией выраже­ние больше не содержит редекса. Выражение, не содержащее редекса, называется нормальной формой.

В редукционной ВС вычисления производятся по запросу на результат опера­ции. Предположим, что вычисляется выражение. В случае пото­ковых моделей процесс начинается с самых внутренних операций, а именно с па­раллельного вычисления + 1) и d/c. Затем выполняется операция умножения (b + 1) х с и, наконец, самая внешняя операция — вычитание. Такой род вычисле­ний часто называют энергичными вычислениями (eager evaluation).

При вычислениях, управляемых запросами, все начинается с запроса на резуль­тат а, который включает в себя запрос на вычисление выражений (b + 1)хс и d/c, а те, в свою очередь, формируют запрос, на вычисление b + 1, то есть на операцию самого внутреннего уровня. Результат возвращается в порядке, обратном поступ­лению запросов. Отсюда название ленивые вычисления (lazy evaluation), поскольку операции выполняются только тогда, когда их результат требуется другой команде. Редукционные вычисления, естественно, согласуются с концепцией функциональ­ного программирования, упрощающей распараллеливание программ.

На рис. 15.16 показан процесс вычисления с помощью редукционной ВС зна­чения выражения a=b-c(b = d + e, с = f x g) для d = 1, е = 3, f= 5,g= 7. Программа редукции состоит из распознавания редексов с последующей заменой их вычис­ленными значениями. Таким образом, вся программа в конечном итоге редуциру­ется до результата.

Известны два типа моделей редукционных систем: строчная и графовая, отли­чающиеся тем, что именно передается в функцию — скопированные значения дан­ных или же только указатели, указывающие на места хранения данных.

В строчной редукционной модели каждый запросивший узел получает отдель­ную копию выражения для собственной оценки. Длинное строковое выражение