Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебник_Вс.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
12.88 Mб
Скачать

2.1.7. Завершение выполнение команды

Цель этого этапа заключается в сохранении последовательного алгоритма программы при распараллеливании отдельных команд и условном выполнении команд ветвленияю Выполнение команды заканчивается при изменении состояния процессора, для этого есть 2 способа:

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

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

2.1.8. Направления развития суперскалярной архитектуры

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

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

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

Теперь рассмотрим процессоры с длинным командным словом(VLIW). Они имеют ряд достоинств. По сравнению с суперскалярными архитектурами VLIW-процессор более эффективно исследует зависимости между командами и имеет более простое устройство управления, и имеет более высокую тактовую частоту.

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

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

Дальнейшие исследования и развитие суперскалярной архитектуры привели к разработке мультитредовой архитектуры процессоров, которые имеют более высокую производительность [17].

Микропроцессоры Alpha 21264 и PentiumIII имеют однотредовую архитектуру с использованием параллелизма уровня команд, выявляемый либо компилятором, либо аппаратурой микропроцессора, либо их комбинацией. В этих микропроцессорах параллелизм уровня тредов выявляется только статически – компилятором, динамически это следать невозможно, так как необходимо просматривать большое количество команд, а это ведёт к увеличению окна исполнения., что усложняет логические схемы управления исполнением команд. А это может уменьшает тактовую частоту работы процессора. Мультитредовые и мультискалярные процессоры решают эту проблему.

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

Процессор использует n наборов регистров, поэтому при задержке первого из процессов ему придётся ждать пока процессор снова переключится на тот же набор регистров через n-1 тактов. Поэтому исполнение команд каждого треда замедляется в n раз.

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

Интерфейс между аппаратурой выполняющей исполнение отдельного треда мультитредового процессора и общей для всех тредов аппаратурой может устанавливаться по-разному:

  • после устройств выборки команд треда (каждый тред использует собственные функциональные устройства, например, АЛУ, и ряд общих для всех тредов функциональных устройств, например, для выполнения арифметических);

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

Если мультитредовый процессор выполняет треды, порождённые одной программой, то оценивают его производительность, если несколькими программи – о пропускную способность.

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