Процессоры: многопоточное оборудование
По мере того как возможности и скорость ядер продолжают улучшение более быстрыми темпами, чем память, конечный результат заключается в том, что ядра бездействуют значительную долю времени в процессе ожидания завершения операции памяти с высоким временем ожидания. Это наблюдение привело к реализации аппаратной многопоточности, механизма, через который ядро может поддерживать несколько контекстов потоков в аппаратных средствах (в том числе счетчика команд и наборов регистров, но обмениваясь, например, кэш-памятью) и быстрое переключение между аппаратными потоками каждый раз, когда некоторые из потоков бездействуют из-за операции с высоким временем ожидания.
Различные реализации этой концепции предоставлялись в течение долгого времени, но большинство настоящих систем используют тонкоструктурный многопоточный подход в контексте неисправных ядер, называемый одновременной многопоточностью. В каждом цикле посылаются инструкции от различных аппаратных потоков, или, в случае суперскалярных процессоров, где несколько команд могут отправляться в цикл ядра – даже инструкции из разных потоков могут выполняться параллельно. Так как инструкции из разных потоков используют различные регистры, задержки обнаружения, при которых выполнение внеочередного исполнения значительно снижается, что приводит к более высокой плотности инструкций, эффективно выполняемых за один цикл. Цель этого метода в конечном счете заключается в том, что:
при условии, что программное обеспечение является многопоточным, его можно использовать, чтобы замаскировать медленность выборки данных из памяти и повысить эффективность использования ядра.
Эта методика была реализована большинством крупных производетелй, в том числе Intel (через технологии гипер-потоков), IBM (которая также поддерживает приоритет потоков) и Oracle Sun (где целых восемь аппаратных потоков поддерживаются на каждом ядре).
Несколько лет назад были выдвинуты аргументы, в соответствии с которыми предполагалось, что аппаратные потоки на самом деле потребляют больше энергии, чем аналогичные конструкции на основе нескольких ядер, а также повышает частоту кэш-трэшинга. К 2010 году, однако, большинство производителей чипов либо уже поддерживали его, либо объявили о своих планах это сделать. Полезность этой технологии также имеет свой предел, тем не менее. В последнее время разрыв между скоростью доступа к памяти и скорости ядер начал сужаться в связи со снижением в частотах ядра процессора, поэтому методы скрытия задержки даст меньше выгоды. Учитывая прирост производительности на ватт потребляемой мощности, вполне вероятно, что эти методы будут заменены другими механизмами, такими как увеличение размера кэша.