Смекни!
smekni.com

Исследование архитектуры современных микропроцессоров и вычислительных систем (стр. 12 из 14)

3) введение блоков обработки мультимедийных данных, ранее использовавшихся, например, в сигнальных микропроцессорах;

4) интеграция на кристалле функций управления памятью и периферийными устройствами, для исполнения которых в традиционных микропроцессорах используются наборы микросхем («чипсеты»);

5) интеграция на кристалле интерфейсов сетевых и телекоммуникационных систем, что позволяет соединять эти микропроцессоры друг с другом и телекоммуникационными и вычислительными сетями без дополнительных адаптеров.

3.2 Увеличение объема внутрикристальной памяти

3.2.1 Организация внутрикристальной памяти

Современное состояние микроэлектроники характеризуется растущим разрывом между скоростью обработки данных в микропроцессорах и быстродействием внекристальной оперативной памяти. Можно уже говорить о том, что время выполнения однотактной команды микропроцессора на порядок и более меньше времени доступа к памяти вне кристалла. В таких условиях прибегают к построению многоуровневой иерархической памяти с использованием внутрикристальной кэш-памяти и применению мультитредовой архитектуры МТА, в которой задержка доступа в память в одном процессе «скрывается» за временем выполнения других процессов.

Кроме того, для уменьшения разрыва в быстродействии между процессором и памятью существует технология встроенной памяти DRAM, позволяющая в едином производственном цикле формировать на одном кристалле логические схемы и схемы динамической памяти. Следует отметить, что идея создания однокристального компьютера всегда была популярной, и сегодня проблема размещения на одном кристалле встраиваемого блока памяти EDRAM (embedded DRAM) достаточно большой емкости и микропроцессорного ядра близка к своему решению

3.2.2 Кэш-память с несколькими уровнями

Постоянный рост емкости кэш-памяти микропроцессора сопровождался усложнением процесса управления, что вылилось в переход от кэш-памяти со сквозной записью к кэш-памяти с буферизированной и обратной записями. При этом в микропроцессорах использовалось программное управление режимом записи кэш-строк путем установки бита, переключающего режимы сквозной и обратной записи кэш-строки. Однако в случае промаха в кэш-памяти возрастающий разрыв между временем выполнения команды и временем доступа в память привел к недопустимо большим потерям производительности. Поэтому в микропроцессоры были введены команды управления кэшированием. Например, в Pentium III появились команды нового типа, обеспечивающие: запись данных из регистров в память, минуя кэш; чтение данных из памяти в регистры, минуя кэш; запись данных из памяти выборочно в кэш первого и второго уровня; запись данных из кэш-памяти и буферов записи в память.

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

3.2.3 Наборы регистров в мультитредовой архитектуре

Другой, по сравнению с организацией кэш-памяти, метод построения внутрикристальной памяти применяется в мультитредовой архитектуре, основная особенность которой – использование совокупности регистровых файлов. Эта архитектура решает проблему разрыва между скоростью обработки в процессоре и временем доступа в основную память за счет переключения в каждом такте процессора на работу с очередным регистровым файлом. Каждый регистровый файл обслуживает один вычислительный процесс – тред (поток). Всего в каждом процессоре имеется n регистровых файлов, поэтому запрос, выданный в основную память каждым из потоков, может обслуживаться в течение n-1 такта, вплоть до момента, когда процессор снова переключится на тот же регистровый файл. Выбор значения n определяется отношением времени доступа в память ко времени выполнения команды процессором. Конечно, задача формирования потоков из последовательной программы должна, по возможности, решаться компилятором. В противном случае будущее этой архитектуры окажется ограниченным узкой проблемной ориентацией.

Компания Tera объявила о разработке проекта мультитредового микропроцессора, реализующего процессор МТА. Level One, приобретенная Intel, выпустила мультитредовый сетевой микропроцессор IXP1200, содержащий в своем составе 6 четырехтредовых процессоров. IBM анонсировала проект компьютера Blue Gene, кристалл микропроцессора которого включает 32 восьмитредовых процессора. В кристалл встроена память EDRAM, организованная в 32 блока. Каждый блок соответствует одному из 32 процессоров и имеет шину доступа 256 разрядов. Поскольку EDRAM обладает высокой пропускной способностью и малой задержкой, то при восьмитредовой структуре процессора становится возможным отказаться от кэш-памяти, вместо которой между процессором и памятью используется небольшая буферная память.

3.3 Увеличение числа и состава функциональных устройств

3.3.1 Увеличение числа функциональных устройств

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

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

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

- переименование регистров с целью устранения ресурсных зависимостей «запись после чтения» и «запись после записи»;

- предсказание переходов;

- динамическое назначение команд на исполнительные устройства, включая изменение порядка исполнения по сравнению с порядком, в котором эти команды были извлечены.

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

Процесс функционирования процессора с внеочередным исполнением команд иллюстрирует рис. 3.1:

Рисунок 3.1 - Процесс функционирования процессора с внеочередным исполнением команд

3.3.2 Мультимедийные расширения

Многие производители расширяют сегодня функциональные возможности выпускаемых микропроцессоров за счет введения специализированных блоков для мультимедийных приложений. Подобный блок имелся уже в микропроцессоре второго поколения Intel 80860, и на некоторых приложениях его использование давало существенный прирост производительности. Аналогичные блоки включены и в другие микропроцессоры Intel (ММХ-расширение системы команд Pentium и 70 новых SIMD-команд Pentium III), AMD (3D Now!), Sun (VIS SPARC), Compaq (Alpha MVI), HP (PA-RISC MAX2), SGI/Mips (MDMX), Motorola (PowerPC AltiVec).

Возможны различные варианты встраивания команд мультимедийной обработки в систему команд микропроцессора: на уровне функционального блока, использующего общий с другими блоками файл регистров (Pentium MMX) или на уровне отдельного процессора со своим регистровым файлом, используя разнесенную (decoupled) архитектуру. Последний вариант применен в Pentium III и PowerPC AltiVec.