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

7.3.3 Аппаратные средства мультитредовой архитектуры

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

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

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

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

7.3.4 Преимущества мультитредовой архитектуры

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

При суперскалярном подходе точность предсказания ветвлений ограничивает степень параллелизма. Если средняя вероятность правильного предсказания перехода 0,9, то вероятность правильного предсказания на пять ветвлений вперед только 0,6.

Мультитредовый процессор имеет большую глубину предсказания и обеспечивает большую вероятность выбора правильного направления вычислений. Это свойство обусловлено избирательностью предсказания ветвей. Мультитредовый процессор разбивает последовательный поток команд на сегменты. Хотя сегменты могут содержать внутренние ветви, планировщик должен предсказывать только ветви, которые отделяют сегменты. Ветви, содержащиеся внутри сегментов, не предсказываются (если они не предсказаны отдельно внутри процессора).

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

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

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

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

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

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

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

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

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