Журнал Компьютерра -37 :: Компьютерра
Страница:
87 из 197
Стало быть, нужно отправлять инструкцию за пару тактовдо того, как данные понадобятся; причем ошиблись мы или нет, станет известно еще позже — тактов эдак через пять-семь, когда диспетчер успеет выпустить соответствующее количество инструкций, часть из которых уже будет выполнена (!). А если мы ошиблись, что тогда делать? Авторы NetBurst предложили весьма своеобразное решение — «реплей».
Снова попробую объяснить ситуацию «на пальцах». Представьте, что конвейер — это рельсовый путь, а по нему бегают вагончики — микрооперации, указывающие, что процессору нужно изготовить и в вагончики погрузить. Причем путей в нашем процессоре несколько, и инструкции разных видов — катятся по разным рельсам. Задача диспетчера, — организовать оптимальным образом движение по своей железнодорожной ветке. Что он делает? Время вагончика в пути от его станции до станции, где вагончик загрузят полезным грузом, ему известно; так что нашему диспетчеру (а всего их семь) остается только связаться с другими диспетчерами и запросить у них информацию о том, когда будут готовы те данные, которые «его» микрооперации используют в качестве исходных, и отправить вагончик с таким расчетом, чтобы он и данные, полученные на другой ветке от другой микрооперации, прибыли на исполнительное устройство одновременно.
Загвоздка в том, что некоторые вагончики имеют обыкновение опаздывать или привозить совсем не то, что запрашивалось, постфактум сообщая о накладке.
|< Пред. 85 86 87 88 89 След. >|