logo
Intel_Corei_Lections_2012

Возвращение Hyper–Threading

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

С Nehalem вернулась технология Hyper–Threading. Впервые она появилась в версии Northwood архитектуры Intel NetBurst. Технология Hyper–Threading, известная как Simultaneous Multi–Threading (SMT), позволяет использовать параллелизм на уровне потоков, чтобы оптимизировать нагрузку исполнительных блоков ядра, в результате чего на уровне приложений одно физическое ядро превращается в два виртуальных.

Принцип ее работы заключается в распределении операций с данными между двумя виртуальными потоками одного физического ядра. В частности, четырехъядерные модели Core i7 будут функционировать в 8 потоков.

Чтобы поддерживать параллельное выполнение потоков, некоторые ресурсы, такие как регистры, должны быть продублированы. Другие ресурсы можно совместно использовать двумя потоками, сюда входит вся логика внеочередного выполнения (буфер изменения порядка инструкций/instruction reorder buffer, исполнительные блоки и Cache). Внедрение SMT было обусловлено простым наблюдением: чем "шире" (больше исполнительных блоков) и "глубже" (больше ступеней конвейера) становятся процессоры, тем сложнее получать достаточную степень параллелизма для загрузки исполнительных блоков на каждом такте.

Механизм работы технологии Hyper-Threading

Если Pentium 4 был очень "глубоким", конвейер превысил 20 ступеней, у Nehalem он очень "широкий". У процессора доступно шесть исполнительных блоков, которые способны одновременно выполнять три операции работы с памятью и три операции вычисления. Если механизм выполнения не сможет обеспечить параллелизм инструкций на должном уровне, с загрузкой всех блоков, в конвейере появляются так называемые "пузырьки" – холостые такты.

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

Впрочем, в большинстве ситуаций влияние SMT на производительность положительное, а себестоимость технологии по ресурсам невысокая, что и объясняет её возвращение. Но программистам следует быть внимательными, поскольку в случае Nehalem не все потоки создаются одинаковыми. Intel обеспечивает способ точно определить топологию процессора (число физических и логических процессоров), а программисты могут использовать механизм привязки ОС (affinity), позволяющий привязать поток к виртуальному ядру.

Так как SMT сильнее нагружает внеочередной исполнительный движок, Intel увеличила размер некоторых встроенных буферов, чтобы они не превратились в "узкое место". Так, буфер изменения порядка команд (reorder buffer), который отслеживает все выполняемые инструкции, был увеличен с 96 записей у Core 2 до 128 записей у Nehalem. На практике, поскольку буфер статически распределён, чтобы ни один из потоков не смог монополизировать все ресурсы, его размер уменьшен до 64 записей для каждого потока в SMT. Вполне понятно, что в случае выполнения одного потока обеспечивается доступ ко всем записям, то есть потенциально устранены специфические случаи, в которых Nehalem дал бы меньшую производительность, чем предшественник.

Станция резервации (reservation station), которая отвечает за привязку инструкций к разным исполнительным блокам, тоже была увеличена с 32 до 36 записей. Но, в отличие от буфера изменения порядка команд, здесь распределение уже динамическое, поэтом поток может использовать больше или меньше записей как функцию его потребностей.

Два других буфера тоже были изменены: буфер загрузки (load buffer) и буфер хранения (store buffer). Первый получил 48 записей против 32 у Conroe, а второй – 32 вместо 20. Здесь, опять же, распределение ресурсов между потоками статическое.

Hyper-Threading позволяет эффективно обрабатывать разнотипные данные в пределах одного ядра. В то же время, интенсивные вычисления схожей природы увеличивают нагрузку на буфер изменения порядка команд (reorder buffer) вследствие соперничества операционных блоков за первоочередной доступ к кэшу. В подобных условиях активация HT приносит мало пользы, а в некоторых игровых приложениях даже приводит к снижению производительности.

Впрочем, основная масса программ положительно реагирует на многопотоковый алгоритм вычислений. Учитывая невысокую себестоимость внедрения Hyper-Threading и приобретенный инженерами Intel опыт, нет повода сомневаться в целесообразности нововведения.

С течением времени все большее количество разработчиков ПО будут адаптировать свою продукцию для процессоров с Simultaneous Multithreading. Уже сейчас список подобных приложений содержит, по крайней мере, полсотни наименований. Мы же приведем самые известные из них:

SSE 4.2.

Nehalem поддерживает SSE 4.2, то есть весь перечень потоковых SIMD-расширений v.4.1, которые присутствовали у Penryn (SSE4.1) плюс ещё семь новых инструкций.

Возможности SSE 4.2

Благодаря SSE 4.2, процессоры Core i7 быстрее обрабатывают XML-код и введенный, с целью распознавания, рукописный текст. Идеально подходят для сложных математических вычислений: генный анализ, расчет расстояния Хэмминга или моделирование динамики роста населения, а также обладают расширенными коммуникационными возможностями – ускоренной работой с NAS-хранилищами и механизмом экономии электропитания.

Переходя к описанию платформы Intel LGA1366 в целом, выделим два архитектурных блока, связывающих кристалл процессора с другими компонентами системы, – это QuickPath Interconnect (QPI) и Integrated Memory Controller (IMC).