
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. Программа редукции состоит из распознавания редексов с последующей заменой их вычисленными значениями. Таким образом, вся программа в конечном итоге редуцируется до результата.
Известны два типа моделей редукционных систем: строчная и графовая, отличающиеся тем, что именно передается в функцию — скопированные значения данных или же только указатели, указывающие на места хранения данных.
В строчной редукционной модели каждый запросивший узел получает отдельную копию выражения для собственной оценки. Длинное строковое выражение


