манды-триады (два операнда, один результат). Большинство команд
архитектуры Intel преобразуются в одну микрокоманду, некоторые
требуют четырех микрокоманд, а сложные команды требуют обращения
к микрокоду, представляющему из себя набор заранее составленных
последовательностей микрокоманд. Некоторые команды, так называе-
мые байт-префиксы, модифицируют следующую за ними команду, что
также усложняет работу декодера. Микрокоманды ставятся в очередь,
посылаются в таблицу псевдонимов регистров, где ссылки на логи-
ческие регистры преобразуются в ссылки на физические регистры P6,
после чего каждая из микрокоманд вместе с дополнительной информа-
цией о ее состоянии (статусе) посылается в пул команд. Пул команд
реализован в виде массива контекстно-адресуемой памяти, называе-
мого также буфером переупорядочивания.
В этой точке заканчивается «упорядоченная» часть конвейера.
Устройство диспетчирования выбирает микрокоманды из пула ко-манд в зависимости от их статуса. Под статусом мы будем понимать информацию о доступности операндов микрокоманды и наличии необхо-димых для ее выполнения вычислительных ресурсов. Если статус мик-рокоманды показывает, что ее операнды уже вычислены и доступны, а необходимое для ее выполнения вычислительное устройство (ресурс) также доступно, то устройство диспетчирования выбирает микроко-манду из пула команд и направляет ее на устройство для выполне-ния. Результаты выполнения микрокоманды возвращаются в пул.
Взаимодействие с вычислительными ресурсами происходит через
пятипортовую распределительную станцию. Структура устройства дис-
петчирования/выполнения показана на рисунке 4.
P6 может запускать на выполнение до 5 микрокоманд за такт,
по одной на каждый порт. Средняя длительно поддерживаемая про-
пускная способность - 3 микрокоманды за такт. Процесс планирова-
ния выполнения микрокоманд является принципиально «беспорядоч-
ным»: момент направления микрокоманд на вычислительные ресурсы
определяется только потоками данных и доступностью ресурсов, без
какой бы то ни было связи с первоначальным порядком команд в
программе.
· 9 -
Алгоритм, отвечающий за планирование выполнения микрокоманд,
является крайне важным для производительности процессора в целом.
Если в каждом такте для каждого ресурса готова к выполнению толь-
ко одна микрокоманда, то проблемы выбора не возникает. Но если
готовых к выполнению на данном ресурсе микрокоманд несколько, то
какую из них выбрать? Можно доверить выбор случаю. Можно приме-
нить алгоритм «первый пришел - первый обслужен». Идеальным был бы
выбор микрокоманды, выполнение которой привело бы к максимальному
сокращению графа потоков данных выполняемой программы. Однако
поскольку нет возможности определить такую микрокоманду в ходе
выполнения программы, используется алгоритм планирования, имити-
рующий модель «первый пришел - первый обслужен», предпочитая
смежное выполнение смежных микрокоманд.
Поскольку система команд Intel содержит множество команд пе-
рехода, многие микрокоманды также являются переходами. Алгоритм,
реализованный в буфере переходов, позволяет в большинстве случаев
правильно предсказать, состоится или не состоится переход, но
иногда он все же будет ошибаться. Рассмотрим для примера случай,
когда буфер переходов предсказывает переход назад в конце цикла:
до тех пор, пока условие выхода из цикла не выполняется, переход
будет предсказываться верно, однако когда это условие станет ис-
тинным, предсказание будет ошибочным.
Для исправления случаев неверного предсказания перехода при-
менен следующий подход. Микрокомандам перехода еще в упорядочен-
ной части конвейера ставятся в соответствие адрес следующей ко-
манды и предполагаемый адрес перехода. После вычисления перехода
реальная ситуация сравнивается с предсказанной. Если они совпада-
ют, то проделанная, исходя из предположения об исходе перехода,
работа оказывается полезной, так как соответствует реальному ходу
программы, а микрокоманда перехода удаляется из пула команд.
Если же допущена ошибка (переход был предсказан, но не прои-
зошел, или было предсказано отсутствие перехода, а в действитель-
ности он состоялся), то устройство выполнения переходов изменяет
статус всех микрокоманд, засланных в пул команд после команды пе-
рехода, чтобы убрать их из пула команд. Правильный адрес перехода
направляется в буфер переходов, который перезапускает весь конве-
йер с нового адреса.
Структура устройства отката изображена на рисунке 5.
Устройство отката также проверяет статус микрокоманд в пуле
команд: оно ищет микрокоманды, которые уже выполнены и могут быть
удалены из пула. Именно при удалении микрокоманды результаты ее
выполнения, хранящиеся в пуле команд, реально изменяют состояние
вычислительной системы, например, происходит запись в регистры.
Устройство отката должно не только обнаруживать завершившиеся
микрокоманды, но и удалять их из пула команд таким образом, чтобы
изменение состояния вычислительной системы соответствовало перво-
начальному порядку команд в программе. При этом оно должно учиты-
вать и правильно обрабатывать прерывания, исключительные ситуа-
ции, неправильно предсказанные переходы и другие экстремальные
· 10 -
случаи.
Процесс отката занимает два такта. В первом такте устройство
отката считывает пул команд и отыскивает готовые к откату микро-
команды; затем оно определяет, какие из этих микрокоманд могут
быть удалены из пула в соответствии с исходным порядком команд в
программе. Во втором такте результаты отката записываются в пул
команд и в регистровый файл отката. Устройство отката может обра-
ботать три микрокоманды за такт.
Структура интерфейса шины изображена на рисунке 6.
Есть два типа обращений к памяти: чтение из памяти в регистр
и запись из регистра в память.
При чтении из памяти должны быть заданы адрес памяти, размер
блока считываемых данных и регистр-назначение. Команда чтения ко-
дируется одной микрокомандой.
При записи надо задать адрес памяти, размер блока записывае-
мых данных и сами данные. Поэтому команда записи кодируется двумя
микрокомандами: первая генерирует адрес, вторая готовит данные.
Эти микрокоманды планируются независимо и могут выполняться па-
раллельно; они могут переупорядочиваться в буфере записи.
Запись в память никогда не выполняется опережающим образом,
так как нет эффективного способа организации отката в случае не-
верного предсказания. Разные команды записи никогда не переупоря-
дочиваются друг относительно друга. Буфер записи инициирует за-
пись, только когда сформированы и адрес, и данные, и нет ожидаю-
щих выполнения более ранних команд записи.
При изучении вопроса о возможности и целесообразности переу-
порядочения доступа к памяти инженеры «Intel» пришли к следующим
выводам.
Команда записи не должна обгонять идущую впереди команду за-
писи, так как это может лишь незначительно увеличить производи-
тельность.
Можно запретить командам записи обгонять команды чтения из
памяти, так как это приведет лишь к незначительной потере произ-
водительности.
Запрет командам чтения обгонять другие команды чтения или
команды записи может повлечь существенные потери в производитель-
ности.
Поэтому была реализована архитектура подсистемы памяти, поз-
воляющая командам чтения опережать команды записи и другие коман-
ды чтения. Буфер упорядочения памяти служит в качестве распреде-
лительной станции и буфера переупорядочивания. В нем хранятся от-
ложенные команды чтения и записи, и он осуществляет их повторное
диспетчирование, когда блокирующее условие (зависимость по данным
или недоступность ресурсов) исчезает.
· 11 -
Таким образом, реализованная в P6 комбинация таких архитек-турных методов, как улучшенное предсказание переходов (почти всегда правильно определяется предстоящая последовательность ко-манд), анализ потоков данных (определяется оптимальный порядок выполнения команд) и опережающее выполнение (предвиденная после-довательность команд выполняется без простоев в оптимальном по-рядке), позволила удвоить производительность по отношению к Pen-tium при использовании той же самой технологии производства. Эта комбинация методов называется динамическим выполнением.
В настоящее время «Intel» ведет разработку новой 0,35 мкм
технологии производства, что даст возможность выпускать процессо-
ры P6 с тактовой частотой ядра свыше 200 МГц.
.
· 12 -
Среди наиболее значимых тенденций развития компьютеров в последние годы можно выделить как все возрастающее использование систем на основе процессоров семейства х86 в качестве серверов приложений, так и растущую роль «Intel» как поставщика непроцес-сорных технологий, таких как шины, сетевые технологии, сжатие ви-деоизображений, флэш-память и средства системного администрирова-ния.
Выпуск процессора Р6 продолжает проводимую «Intel» политику
переноса возможностей, которыми ранее обладали лишь более дорогие
компьютеры, на массовый рынок. Для внутренних регистров Р6 пре-
дусмотрен контроль по четности, а соединяющая ядро процессора и
кэш второго уровня 64-битовая шина оснащена средствами обнаруже-
ния и исправления ошибок. Встроенные в Р6 новые возможности диаг-
ностики позволяют производителям проектировать более надежные
системы. В Р6 предусмотрена возможность получения через контакты