инструкции за такт. "Медленные" планировщики
"специализируются" каждый на своем типе инструкций и работают
на номинальной частоте ядра. Планировщики могут
переупорядочивать микрооперации по своему усмотрению (OoO-
исполнение); они же отслеживают ход выполнения микроопераций,
при необходимости перезапускают их и в конце выполнения
инструкции записывает полученные результаты в оперативную
память; на все про все у них уходит еще три такта процессора.
Наконец, планировщики через четыре порта запуска (порты частично
общие, а это значит, что "быстрые" и "медленные" планировщики
конкурируют друг с другом за то, кто из них получит право запускать
в текущем такте подготовленные mOP’ы дальше) переправляют
упорядоченные микрооперации в очереди диспетчеров, где они
дожидаются "разрешения на запуск". И тут начинается самое
интересное.
Задача диспетчера - подготовить для микрооперации операнды таким
образом, чтобы, когда команда прибыла на исполнительное
устройство, необходимые для вычисления данные оказались там же.
Но конвейер NetBurst устроен так, что диспетчер и собственно
исполнительное устройство довольно сильно разнесены по
конвейеру, и чтобы данные и микрооперация пришли одновременно,
микрооперацию на исполнение требуется запускать задолго до того,
как будет получено подтверждение готовности ее операндов. Если
быть точным, то после запуска инструкции диспетчером два такта
уйдет на подготовку данных, три такта - на исполнение команды и
еще один такт - на проверку результатов[В NetBurst, как и в других
архитектурах, используется быстрая выборка данных из кэша, когда,
грубо говоря, "вначале вытаскиваем данные, а потом уж смотрим, что
мы такое вытащили". Выборка происходит при совпадении лишь
небольшой части запрошенного и найденного адресов, а проверка на
то, что остальная часть адреса тоже совпадает, - производится
параллельно с выборкой "вроде как найденных" данных и
исполнением операции над ними], после чего инструкции уже можно
будет отправлять "в отставку". Стало быть, нужно отправлять
инструкцию за пару тактов до того, как данные понадобятся; причем
ошиблись мы или нет, станет известно еще позже - тактов эдак через
пять-семь, когда диспетчер успеет выпустить соответствующее
количество инструкций, часть из которых уже будет выполнена (!). А