Читаем Журнал «Компьютерра» №37 полностью

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

При неправильном предсказании конвейер обычно приходится «сбрасывать», каким-то образом восстанавливая состояние процессора, предшествующее моменту неправильного перехода. А ведь пока исполнялась неправильная ветка, там ого-го сколько всего могло случиться! Неправильный опкод (нераспознаваемая машинная инструкция), обращение к виртуальной памяти (провоцирующее исключение в процессоре), некстати распознанное деление на ноль (тоже ошибка). Все это приходится тщательно отслеживать и проверять, причем это не шутки: одно время из-за ошибки в реализации конвейера процессора AMD K5, программист, написавший конструкцию если x A 0, то y = 1/x, иначе y = 0, запросто мог получить при x @ 0 на, казалось бы, ровном месте ошибку «деление на ноль», вызванную неправильным предсказанием перехода. А в OoO-процессорах ситуация еще сложнее - пока «тормозит» не вовремя отправившаяся за операндами в оперативную память инструкция, процессор успевает пропустить вперед, выполнить и едва ли не сохранить результат вычисления десятков инструкций неправильной ветки: попробуй за всем этим уследить!

Но бороться здесь есть за что: для современных процессоров каждая ошибка предсказания - это десятки вхолостую израсходованных тактов. Сущая катастрофа, если учитывать, что за каждый такт можно было бы исполнить до трех x86-инструкций и совершить кучу вычислений. Если бы блока предсказания не было, то так «тормозил» бы каждый условный переход.

Точность предсказания современных блоков составляет на тестах SPEC порядка 98-99%. Может показаться, что совершенствовать блок не имеет смысла, но это не совсем так. Дело в том, что на производительности гораздо больше сказывается процент ошибок, а не верных предсказаний. А переход от 98-процентной точности к 99-процентной означает двукратное снижение ошибок - с 2% до 1%! Поэтому если вы внимательно почитаете пресс-релизы о новых CPU, то заметите, что «усовершенствованный блок предсказания переходов» упоминается в них почти всегда.

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

Архитектура PowerPC

Перейти на страницу:

Похожие книги

«Если», 1998 № 01
«Если», 1998 № 01

ФАНТАСТИКАЕжемесячный журналСодержание:Сьюзи МакКи Чарнас. СЛУШАЯ БРАМСА, рассказАлександр Громов. СЧАСТЛИВАЯ ЗВЕЗДА, рассказБилл Джонсон. ВЫПЬЕМ, ГОСПОДИН ПОСОЛ! рассказАлексей Васильев. БЛИЖЕ К ТЕЛУ!ФактыДжеймс Типтри-младший. МИМОЛЕТНЫЙ ПРИВКУС БЫТИЯ, повестьЛитературный портрет*Вл. Гаков. В ТЕНИ ЧУЖОЙ СУДЬБЫФактыДжеффри Лэндис. БЕСКОНЕЧНЫЕ СОБЛАЗНЫ ЭНИГМЫ, повестьВиктор Комаров. Наш главный собеседникФантариум ЗВЁЗДНЫЙ ПОРТПРЯМОЙ РАЗГОВОР*Кир Булычёв. Будем уважать друг другаЕвгений Харитонов. За великой стенойКУРСОРРЕЦЕНЗИИPERSONALIAВИДЕОДРОМ*Адепты жанра— Дмитрий Караваев. Светлые идеи рыцаря «черного юмора»*Рецензии*Герой экрана— Станислав Ростоцкий. Черный ворон Голливуда*Рейтинг— Сергей Кудрявцев. Лидеры 1997. Самые кассовые фантастические фильмы*Сериал— Александр Алексеев. «Вавилон-5». Подготовка к пятому запуску*Внимание, мотор!— Евгений Зуенко. Компьютерные игры на экранеПремия читательских симпатий (лист для голосования)Обложка Мура К. (Chris Moore).Иллюстрации О. Васильева, О. Дунаевой, А. Жабинского, А. Филиппова.

Александр Николаевич Громов , Виктор Ноевич Комаров , Владимир Гаков , Журнал «Если» , Станислав Иосифович Ростоцкий

Фантастика / Журналы, газеты / Научная Фантастика
«Если», 2001 № 06
«Если», 2001 № 06

ФАНТАСТИКАЕжемесячный журналСодержание:Александр Шалганов. ЗДРАВСТВУЙТЕ, УВАЖАЕМЫЕ ЧИТАТЕЛИ!Вл. Гаков. СОЗДАТЕЛИ ЖАНРАМарина и Сергей Дяченко. КОН, повестьАндрей Столяров. КАК ЭТО ДЕЛАЕТСЯ, рассказЭдуард Геворкян. ВОЗВРАЩЕНИЕ МЫТАРЯ, повестьВладимир Михайлов. ТРИАДА КУРАНТА, повестьЕвгений Лукин. ТРУЖЕНИКИ ЗАЗЕРКАЛЬЯ, повестьСергей Лукьяненко. ОТ СУДЬБЫ…, рассказМАСТЕР*Кир Булычев. ВЫ МЕНЯ ЕЩЁ НЕ ЗНАЕТЕ!ВИДЕОДРОМ*Адепты жанра-- Наталья Милосердова. КУ, РОДНЫЕ!..*Хит сезона-- Дмитрий Караваев. ГДЕ ДРАКОН?*Рецензии*Фестиваль-- Дмитрий Байкалов. ПОБЕДНОЕ ФИАСКОЕвгений Харитонов. «РУССКОЕ ПОЛЕ» УТОПИЙКРУПНЫЙ ПЛАН*Наталия Мазова. ПОИСКИ ХАОСА, рецензия на несуществующий роман Алины Лещининой «Путь, уводящий в облака»РЕЦЕНЗИИКУРСОРАНКЕТА «ЕСЛИ»ПЕРСОНАЛИИОформление обложки: Игорь Тарачков (с. 1, 4); Алексей Филиппов (с. 2, 3)Иллюстрации: О. Васильев, С. Голосов, А. Филиппов, А. Балдин, С. Шехов

Владимир Гаков , Дмитрий Львович Караваев , Евгений Викторович Харитонов , Журнал «Если» , Наталия Михайловна Мазова

Фантастика / Научная Фантастика / Фэнтези / Журналы, газеты