Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.431


Таненбаум Э.- Архитектура компьютера. стр.431

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

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

Таненбаум Э.- Архитектура компьютера.

Рис. 8.6. Многопоточность в сдвоенном процессоре: мелкомодульная многопоточность (а); крупномодульная многопоточность (б); синхронная многопоточность (в)

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

В суперскалярных процессорах есть еще один способ организации многопоточности — так называемая синхронная многопоточность (simultaneous multithreading), которую иллюстрирует рис. 8.6, в. Эта методика представляет собой усовершенствованный вариант крупномодульной многопоточности, где каждый программный поток может запускать по две команды за такт, однако в случае простоя с целью обеспечения полной загрузки процессора запускаются команды следующего потока. При синхронной многопоточности полностью загружаются все функциональные блоки. В случае невозможности запуска команды из-за занятости функционального блока выбирается команда из другого потока. На рисунке предполагается, что в цикле 11 простаивает команда В8, поэтому в цикле 12 запускается команда СП.

Дополнительные сведения о многопоточности можно почерпнуть в [53, 106, 108]. О многопоточности и спекулятивном исполнении рассказывается в [191].

Многопоточность в Pentium 4

Разобравшись с теорией многопоточности, рассмотрим практический пример — Pentium 4. Уже на этапе разработки этого процессора инженеры Intel продолжали работу над повышением его быстродействия без внесения изменений в программный интерфейс. Рассматривалось пять простейших способов:


⇐ Предыдущая страница| |Следующая страница ⇒

.