Архитектура процессоров Pentium 4

Особенности ядра Prescott

Рейтинг:   / 0

Микроархитектура ядра Prescott в сравнении с предшественниками (Willamette и Northwood) содержит неоднозначные технические решения. С одной стороны, улучшены алгоритмы предвыборки (Prefetch), что позволило достичь больших значений реальной пропускной способности памяти. Заметны и другие положительные моменты, в первую очередь введение нового набора SIMD-инструкций SSE3.

С другой стороны, микроархитектура Prescott имеет ряд негативных черт: увеличение задержек доступа в кэш-память, снижение почти в два раза эффективной пропускной способности шины между уровнями кэша, увеличение задержек исполнения ряда инструкций. Невольно возникает подозрение, что в ядре Prescott потенциальные возможности архитектуры NetBurst реализованы далеко не полностью.

Технология Hyper-Threading

Рейтинг:   / 0

В модификации Pentium 4 на ядре Nortwood В впервые реализована технология виртуальной двухпроцессорности Hyper-Threading. Строго говоря, все необходимые аппаратные блоки присутствовали еще в процессоре Pentium 4 с ядром Willamette, однако они были отключены (видимо, по маркетинговым соображениям). И только с появлением Pentium 4 с частотой 3,06 ГГц мультипроцессорные технологии стали доступны обычному пользователю. Не секрет, что стоимость двухпроцессорных машин, позиционируемых как рабочие станции или серверы, ограничивала их применение в домашних условиях. Теперь пользователь получает два логических (виртуальных) процессора на одном физическом ядре и может использовать их на обычной системной плате.

Следует подчеркнуть, что основная часть ресурсов ядра (в частности процессорный конвейер и кэш-память) используются логическими процессорами совместно, поэтому о революционном повышении производительности речи не идет. Однако немалая часть ресурсов ядра простаивает во время работы других элементов, а технология Hyper-Threading позволяет загрузить временно простаивающие блоки другими задачами. Учитывая, что многозадачность является одним из краеугольных камней современных операционных систем и приложений, технология Hyper-Threading дает заметный рост производительности системы.

Эффективность блоков Hyper-Threading при выполнении конкретных приложений сильно зависит от степени оптимизации кода программы.

 

Принцип работы технологии Hyper-Threading

Чем лучше оптимизирован код для архитектуры Pentium 4, тем меньше будет выигрыш от применения Hyper-Threading, поскольку «правильный» код нагружает элементы процессора по максимуму. Если же оптимизация кода далека от идеала, происходят промахи размещения данных в кэш-памяти, ошибки предсказания ветвлений, нарушение параллелизма выполнения инструкций. В результате часть аппаратных блоков ядра простаивает, ожидая результатов критичных операций. В этот момент свободные блоки могут быть представлены операционной системе как элементы второго, логического процессора и получить собственные задачи, выполнение которых будет происходить независимо от работы других элементов.

На физическом уровне технология Hyper-Threading реализована в следующих элементах: буфер очереди инструкций, буфер трансляции команд, указатель следующей инструкции, механизм возврата в стек инструкций, буфер с таблицами псевдонимов регистров, кэш отслеживания исполнения следующей инструкции и кэш отслеживания заполнения буфера инструкций.

Предсказание переходов

Рейтинг:   / 0

Кроме представления команд CISC в удобной для процессора форме микроархитектура ядра должна решать проблему предсказания ветвлений программы. Суть проблемы в том, что, встретив инструкцию перехода, процессор останавливает конвейер. Задержка будет тем дольше, чем больше длина конвейера.

Поэтому инструкции перехода надо выявлять заранее и реагировать соответствующим образом. Для этого предназначен специальный блок предсказания переходов (Branch Prediction Unit). Его задача — предвидеть направление перехода и, в случае удачного предсказания, сэкономить время. Соответственно, если результат предсказания будет неудачным, происходит полная остановка конвейера и очистка буферов.

Если в программе есть условные переходы (то есть такие, которые зависят от результата выполнения какой-либо операции), надо постараться «угадать», произойдет этот переход, или нет. Метод гадания на кофейной гуще здесь не подходит. Поэтому блок предсказаний хранит специальную таблицу истории переходов (Branch History Table), в которой записана результативность предыдущих примерно 4000 предсказаний. Кроме того, отслеживается точность последнего предсказания, чтобы при необходимости откорректировать алгоритм работы. Благодаря этому декодер выполняет по подсказке блока предсказания условный переход, а затем блок предсказаний проверяет, правильно ли было предсказано это условие. Микроархитектура Prefetch (предзагрузки или предвыборки) позволяет заранее знать, какие данные понадобятся процессору в будущем.

Специальные механизмы анализируют последовательности адресов, по которым происходила загрузка данных, и пытаются предугадать следующий адрес. Работает механизм предвыборки в тесном содружестве с Branch Prediction Unit и с подсистемой памяти.

Подсистема кэш-памяти

Рейтинг:   / 0

Задача подсистемы памяти сравнительно проста: как можно быстрее доставить затребованные данные и как можно быстрее снять полученный результат. Поскольку скорость работы памяти SDRAM не идет ни в какое сравнение со скоростью работы процессоров (разрыв более чем на порядок в пользу процессоров), то активно используется кэширование данных в высокоскоростной памяти сравнительно небольшого объема. Процессор Pentium 4 имеет два, а модификация Extreme Edition даже три уровня кэш-памяти. Основная роль в ускорении работы отведена кэшу второго уровня. Фактически, именно кэш второго уровня становится основным хранилищем данных в микроархитектуре Pentium 4.

В процессе работы самые необходимые данные размещаются в кэше первого уровня. В отличие от кэша процессоров Pentium II размер кэша данных невелик: всего 8 Кбайт в ядре Willamette/Northwood и 16 Кбайт в ядре Prescott. Зато скорость кэша Ы заметно выросла: задержка доступа составляет всего 2 такта, в отличие от 3 тактов в Pentium III. На частотах 2 ГГц и выше это различие становится решающим.

Поскольку объем данных в кэше первого уровня невелик, есть высокая вероятность, что необходимых процессору данных там не окажется. В случае отсутствия необходимых данных инициируется обращение в кэш второго уровня. Если нужные данные там есть, они копируются в кэш первого уровня по шине шириной 256 бит. Эта технология получила название Advanced Transfer Cache. Очевидно, что механизм кэширования является инклюзивным. То есть данные, содержащиеся в кэш-памяти первого уровня, отображаются в кэш-памяти второго уровня. Процессоры AMD имеют эксклюзивный кэш: данные не повторяются.

Если необходимых данных в кэше второго уровня не найдено, направляется запрос в оперативную память. Время реакции оперативной памяти намного больше, нежели время реакции кэша второго уровня. С позиции эффективности конвейера процессора, запрос в оперативную память — это катастрофа, поскольку характерное время поступления данных из оперативной памяти исчисляется сотнями процессорных тактов. Именно поэтому крайне необходим механизм предзагрузки, который должен заблаговременно начать доставку нужных данных.

Размер кэша второго уровня для ядра Willamette составляет 256 Кбайт, для ядра Northwood — 512 Кбайт, для ядра Prescott — 1024 Кбайт. Модификация процессора Pentium 4 ЕЕ содержит кэш третьего уровня объемом 2048 Кбайт. Этот кэш подключен к ядру 64-битной шиной, задержки обращения к нему выше, нежели к кэш-памяти второго уровня. Тем не менее, во многих случаях его наличие заметно повышает производительность, поскольку кэш третьего уровня все равно превосходит по скорости оперативную память.



Sitelinkx by eXtro-media.de

Технология Trace Cache

Рейтинг:   / 0

Если команду х86 нельзя представить в виде одной простой инструкции, декодер создает некую последовательность простых инструкций (микроопераций) RISC. В процессоре Pentium 4 вместо традиционного кэша команд, в котором хранится код х86, имеется кэш трассировки (Trace Cache). Он расположен после декодера, но перед остальными блоками процессора. В нем хранятся не инструкции CISC, а результаты их декодирования — микрооперации. При такой архитектуре декодер работает независимо от остальных блоков, наполняя Trace Cache микрооперациями.

 

Конвейер операций процессора Pentium 4

Если в Trace Cache нет инструкций затребованного процессором участка кода, они сравнительно медленно загружаются из кэша L2, декодируясь на лету. Естественно, что декодирование и выборка данных на этом участке происходят в очередности, определяемой исполняемой программой. Микрооперации «снимаются» прямо с декодера, по мере их готовности, и результирующая скорость будет не более одной инструкции за такт. При повторном обращении к тому же участку кода процессор избавляется от необходимости производить декодирование еще раз.

В ряде случаев экономия получается весьма значительной: «длина» участка декодера в тактах составляет от 10 до 30 тактов. Емкость Trace Cache составляет 12 000 микроопераций. В среднем вероятность нахождения запрашиваемого участка кода в Trace Cache лежит в пределах 75-95%.

Яндекс.Метрика