logo
Pentium IV

Простой конвейера: старые проблемы, умноженные на новые частоты

Приведенное ранее описание работы механизма предсказания ветвлений осталось все же немного незавершенным: мы закончили его на "победном" варианте: ветка предсказана правильно, процессор начал декодирование команд "наперед", переход осуществился к "угаданному" адресу, находящиеся там команды готовы к исполнению (или даже уже частично исполнены). Но что происходит, если "штатный предсказатель" все же ошибся? А происходит "воистину страшное" -- весь конвейер приходится очищать от ненужных команд и в срочном порядке начинать готовить к исполнению новые, находящиеся еще в памяти и совсем по другому адресу. Естественно, ядро CPU во время всего этого "разбора полетов" просто исполняет холостой цикл, так как ни подготовленных данных, ни команд к нему не поступает. И наверняка наш читатель уже догадался сам об основной проблеме гиперконвейерной архитектуры нового процессора: чем длиннее конвейер, тем больше работы идет насмарку и тем дольше придется ждать, пока он будет "вычищен" от непонадобившихся команд и снова заполнен нужными. К тому же высокая частота работы в данном случае автоматически означает, что с момента ошибки в предсказании перехода до момента ее обнаружения "лишней" работы процессор успеет сделать больше. Да, такова реальность: не всегда высокая частота означает высокое быстродействие. Однако не все так плохо -- естественно, проблема эта была известна еще задолго до выхода процессора, и минимизации потерь было уделено серьезное внимание.