Направления развития микропроцессоров
Увеличение объема кэш-памяти на кристалле дает прирост производительности, но после достижения некоторого объема этот прирост существенно замедляется. Поэтому разумно использовать ресурс транзисторов кристалла для построения дополнительной совокупности функциональных устройств. Основное препятствие здесь — организация загрузки этих устройств полезной работой. Для выявления команд, которые можно одновременно загрузить в разные устройства процессора, в суперскалярных процессорах используется динамический анализ программного кода на стадии исполнения, а в процессорах с длинным командным словом — статический анализ на стадии компиляции. Однако в микропроцессорах с такими архитектурами имеются факторы, ограничивающие параллелизм уровня команд.
Дальнейшее повышение производительности микропроцессоров связывается сейчас со статическим и динамическим анализом кода с целью выявления параллелизма уровня программных сегментов с использованием информации о сегментах, предоставляемой процессору компилятором языка высокого уровня. Исследования в данном направлении привели к разработке многопотоковой архитектуры, использующей совокупность регистровых файлов в процессоре. Переключение процессора на другой регистровый файл выполняется либо по наступлению некоторого события, вызывающего приостанов процессора (промах в кэш-память, обращение к оперативной памяти, наступление прерывания), либо принудительно, например, в каждом такте как в системе Tera MTA (www.tera.com).
С ростом количества транзисторов на кристалле стало возможно построение микросхем, в которых микропроцессор вместе с памятью на кристалле выступает в роли одного из составных элементов «систем на кристалле» (SOC — System On Chip). В кристалл интегрируются функции, для исполнения которых обычно используются наборы микросхем. В кристалл интегрируются интерфейсы сетевых и телекоммуникационных систем, что позволяет без дополнительных адаптеров соединять микропроцессоры друг с другом и с различными сетями. Интеграция коммуникационных интерфейсов в кристалл микропроцессора была впервые сделана еще в транспьютерах. Ориентация разработчиков на создание систем с распределенной разделяемой памятью привела к интеграции в кристалл блока управления когерентностью многоуровневой памятью, доступ к блокам которой выполняется через интегрированную в тот же кристалл коммуникационную среду. В качестве примеров этого подхода можно назвать микропроцессоры Alpha 21364 и Power 4. Интеграция функций, с одной стороны, позволяет существенно увеличить пропускную способность между компонентами кристалла по сравнению с пропускной способностью между разными кристаллами, реализующими по отдельности каждую функцию. И, как следствие, поднять производительность систем. С другой стороны, при уменьшении количества кристаллов резко упрощается изготовление и монтаж плат, что ведет к повышению надежности и снижению стоимости систем.
Когда количество транзисторов на кристалле стало достаточным для реализации полноценного векторно-конвейерного процессора, появился яркий представитель систем этого класса — микропроцессор NEC SX-6 [18], который недолго оставался в одиночестве. Компания Cray применила в своем суперкомпьютере X1 с производительностью 52 TFLOPS векторно-конвейерные микропроцессоры собственной разработки.
В дальнейшем можно ожидать появление кристаллов с несколькими векторно-конвейерными процессорами, образующими однокристальную систему с общей памятью. Такие кристаллы могут быть объединены в MPP-систему. Тем самым, противостояние архитектур массово-параллельных и векторно-конвейерных систем получило логичное завершение.