PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Процессоры

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

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

Задача подсистемы памяти сравнительно проста: как можно быстрее доставить затребованные данные и как можно быстрее снять полученный результат. Поскольку скорость работы памяти 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-битной шиной, задержки обращения к нему выше, нежели к кэш-памяти второго уровня. Тем не менее, во многих случаях его наличие заметно повышает производительность, поскольку кэш третьего уровня все равно превосходит по скорости оперативную память.



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

В модификации 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 реализована в следующих элементах: буфер очереди инструкций, буфер трансляции команд, указатель следующей инструкции, механизм возврата в стек инструкций, буфер с таблицами псевдонимов регистров, кэш отслеживания исполнения следующей инструкции и кэш отслеживания заполнения буфера инструкций.

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

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

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