Организация микропроцессорных систем. Учебное пособие. Могнонов П.Б. - 161 стр.

UptoLike

Составители: 

Кэш второго уровня кроме данных содержит также команды, которые попадают из
него в декодер. Процессор Pentium 4 содержит один декодер, и процесс декодирования
вообще исключен из базового конвейера. Непрерывность подачи микроопераций в
исполнительную часть ядра Pentium 4 обеспечивается потоком микроопераций из ТС,
который фактически служит кэшем команд первого уровня. В ТС команды сохраняются в
декодированном виде, как микрооперации. В идеальном случае ТС может выдавать 3
микрооперации за такт, как и три декодера P6. Емкость ТС составляет 92-96 Кбайт и
содержит до 12 тысяч микроопераций со средней длиной 64 разряда (хотя максимальная
длина микрооперации в Pentium III достигает 118 бит).
Применение схемы один декодер и ТС по сравнению со схемой трех декодеров в P6
имеет ряд преимуществ. Во-первых, если будут декодироваться сразу три сложные x86-
команды, темп поступления микроопераций может упасть практически до нуля в отличие от
варианта с одним декодером. Во-вторых, когда имеется короткий цикл в P6 его команды
приходиться декодировать при каждом проходе, а в Pentium 4 он окажется один раз
декодированным в кэше ТС.
Имеется еще одна особенность при декодировании команд в Pentium 4. когда
процессору требуется декодировать сложную x86-команду, которая преобразуется в
длинную последовательность микроопераций (сложные инструкции, больше 4
микроопераций), взводится специальный флаг, и эти микрооперации извлекаются не из ТС, а
из памяти ROM-типа (рис. 6.18). Поскольку такие команды в программах встречаются редко,
это не оказывает отрицательного влияния на производительность.
Фронтальная часть процессора Pentium 4 отвечает за реализацию механизма
предварительной выборки и предсказания переходов.
Процессор осуществляет автоматическую предварительную выборку команд в буфера
командных потоков из пути, предсказанного в ВТВ. Осуществляется это порциями по 32
байта, начиная с адреса перехода. Процессор также поддерживает автоматическую выборку
данных и команд в кэш второго уровня. Кроме аппаратной реализации предварительной
выборки имеются 4 команды предварительной выборки данных в кэш-память различных
уровней. Они дают процессору подсказку о необходимости переноса в кэш соответствующей
строки. Использование этих команд способствует в ряде случаев скрыть задержки по
обращению в память за счет извлечения оттуда данных до того, как они реально будут
использованы, что приводит к существенному росту производительности. Эти команды
требуют много процессорных ресурсов, и их применение следует ограничивать (в
многопроцессорных SMP-системах их использовать не рекомендуется).
Предсказание переходов является одним из компонентов микроархитектуры,
определяющих производительность Pentium 4. Если предсказание верное, то в базовом
конвейере не возникает дополнительных задержек, а при неверном - равно глубине
конвейера, т.е. порядка 20 стадий. Использование новых алгоритмов предсказания позволило
уменьшить число неправильных предсказаний на одну треть по сравнению с Pentium III. В
процессоре Pentium 4 могут предсказываться все типы ближних (near) переходов, включая
условные, безусловные, непрямые и переходы типа вызов/возврат из подпрограммы
(СALL/RET). Предсказания для дальних (far) переходов не делаются. При этом используются
несколько механизмов предсказаний.
При статическом предсказании переход назад (к младшим адресам, это характерно
для циклов) предсказывается, а вперед - нет. При предсказании переходов СALL/RET, адреса
возврата берутся из стека адресов возврата, имеющего емкость 16 строк.
Динамическое предсказание переходов (т.е. направление и адреса переходов)
основываются на традиционной таблице предсказания переходов в буфере ВТВ емкостью
4096 строк. Если в буфере ВТВ не имеется необходимой информации, применяется
статическое предсказание.
В Pentium 4 предусмотрен еще один вид предсказания переходов – «подсказка» со
стороны программного обеспечения. Эта подсказка реализована в форме префикса команд
       Кэш второго уровня кроме данных содержит также команды, которые попадают из
него в декодер. Процессор Pentium 4 содержит один декодер, и процесс декодирования
вообще исключен из базового конвейера. Непрерывность подачи микроопераций в
исполнительную часть ядра Pentium 4 обеспечивается потоком микроопераций из ТС,
который фактически служит кэшем команд первого уровня. В ТС команды сохраняются в
декодированном виде, как микрооперации. В идеальном случае ТС может выдавать 3
микрооперации за такт, как и три декодера P6. Емкость ТС составляет 92-96 Кбайт и
содержит до 12 тысяч микроопераций со средней длиной 64 разряда (хотя максимальная
длина микрооперации в Pentium III достигает 118 бит).
       Применение схемы один декодер и ТС по сравнению со схемой трех декодеров в P6
имеет ряд преимуществ. Во-первых, если будут декодироваться сразу три сложные x86-
команды, темп поступления микроопераций может упасть практически до нуля в отличие от
варианта с одним декодером. Во-вторых, когда имеется короткий цикл в P6 его команды
приходиться декодировать при каждом проходе, а в Pentium 4 он окажется один раз
декодированным в кэше ТС.
       Имеется еще одна особенность при декодировании команд в Pentium 4. когда
процессору требуется декодировать сложную x86-команду, которая преобразуется в
длинную последовательность микроопераций (сложные инструкции, больше 4
микроопераций), взводится специальный флаг, и эти микрооперации извлекаются не из ТС, а
из памяти ROM-типа (рис. 6.18). Поскольку такие команды в программах встречаются редко,
это не оказывает отрицательного влияния на производительность.
       Фронтальная часть процессора Pentium 4 отвечает за реализацию механизма
предварительной выборки и предсказания переходов.
       Процессор осуществляет автоматическую предварительную выборку команд в буфера
командных потоков из пути, предсказанного в ВТВ. Осуществляется это порциями по 32
байта, начиная с адреса перехода. Процессор также поддерживает автоматическую выборку
данных и команд в кэш второго уровня. Кроме аппаратной реализации предварительной
выборки имеются 4 команды предварительной выборки данных в кэш-память различных
уровней. Они дают процессору подсказку о необходимости переноса в кэш соответствующей
строки. Использование этих команд способствует в ряде случаев скрыть задержки по
обращению в память за счет извлечения оттуда данных до того, как они реально будут
использованы, что приводит к существенному росту производительности. Эти команды
требуют много процессорных ресурсов, и их применение следует ограничивать (в
многопроцессорных SMP-системах их использовать не рекомендуется).
       Предсказание переходов является одним из компонентов микроархитектуры,
определяющих производительность Pentium 4. Если предсказание верное, то в базовом
конвейере не возникает дополнительных задержек, а при неверном - равно глубине
конвейера, т.е. порядка 20 стадий. Использование новых алгоритмов предсказания позволило
уменьшить число неправильных предсказаний на одну треть по сравнению с Pentium III. В
процессоре Pentium 4 могут предсказываться все типы ближних (near) переходов, включая
условные, безусловные, непрямые и переходы типа вызов/возврат из подпрограммы
(СALL/RET). Предсказания для дальних (far) переходов не делаются. При этом используются
несколько механизмов предсказаний.
       При статическом предсказании переход назад (к младшим адресам, это характерно
для циклов) предсказывается, а вперед - нет. При предсказании переходов СALL/RET, адреса
возврата берутся из стека адресов возврата, имеющего емкость 16 строк.
       Динамическое предсказание переходов (т.е. направление и адреса переходов)
основываются на традиционной таблице предсказания переходов в буфере ВТВ емкостью
4096 строк. Если в буфере ВТВ не имеется необходимой информации, применяется
статическое предсказание.
       В Pentium 4 предусмотрен еще один вид предсказания переходов – «подсказка» со
стороны программного обеспечения. Эта подсказка реализована в форме префикса команд