Серверные технологии: две стороны одной медали

В последнее время мы стали очевидцами очень интересных событий в процессорном сегменте рынка. Без особых сенсаций начался новый виток в развитии микропроцессорной техники: настольные процессоры стали перенимать многие особенности серверных и мобильных собратьев. Результатом этого, стало внедрение 64-разрядных технологий в массовое применение. Многие стали считать, что закончилась эра 32-разрядных процессоров, и как могло показаться на первый взгляд, все наше будущее лежит на пути 64-разрядных систем. После выпуска первого 64-битного настольного процессора можно было решить, что в ближайшее время все системы перейдут на 64 бита – таков был напор и активность обоих компаний-конкурентов для продвижения новый 64-разрядный процессоров. Стали ходить слухи, что Barton – это последнее ядро для процессора Athlon XP, который закроет линейку 32-битных процессоров для AMD, а Pentium 4 в своей последней модификации – Prescott – станет последним 32-разрядным процессором Intel. Дело в том, что это одновременно и правда и грубая ошибка. Да, действительно подошел конец 32-разрядным системам, но, похоже, и Intel и AMD этот конец хотят оттянуть как можно дольше, насладиться им и выжать из него все по максимуму. И неудивительно: в запасе имеются 90 и 65-нм проектные нормы производства процессоров – надо же их куда-то применить. В этом материале мы попытаемся рассмотреть аспекты внедрения, применения и текущего уровня развития 64-рзрядных процессорных систем.

64-бита – для кого?

Понятно, 32-разрядные технологии для серверов себя практически изжили. Большие сервера работают все с большими объемами потоковой информации, большими базами данными, системы автоматизированного проектирования (например, CAD для проектирования автомашин, спутников, управления полетами, производством). Нужны ли 64 разряда в рабочих станциях и серверах? Практика показывает, что да. 32 разрядная адресация ограничивает доступный объем памяти в 4 Гбайта. Причем, из них только два из них можно отдать под приложения – 2 Гбайта забирает ОС на свои нужды. Долгое время Intel утверждало, что память более 4 Гбайт бесполезна в рабочих станциях и серверах. 64-разрядный Itanium рассматривался как узкоспециализированное средство для HPC (High Performance Computing). В связи с этим до сих пор многие серверы начального уровня строятся на базе Pentium 4 или Xeon DP. Сейчас отношение к Itanium 2 немного изменилось – он стал продвигаться на рынок как более универсальное решение для различных сфер применения. Видимо, это связано с необходимостью продвигать и продавать новую недавно появившеюся версию процессора Itanium 2 Madison.

В то же время отказываться от своих налаженных и успешных технологий производства 32-разрядных процессоров Xeon компания Intel тоже не собирается. С успехом выпускаются новые версии Intel Xeon. В ближайшем будущем их производство перейдет на новый техпроцесс. То, что серверная сфера для Intel является приоритетной – это очевидно. Ведь именно от продаж северных технологий компания получает наибольшие доходы. Причем, чем крупнее сервер, тем больше от него прибыли.

Несмотря на то, что компания Intel осуществляет четкое дифференцирование и указывает на несовместимость и независимость 32 и 64-разрядных платформ, ни для кого не секрет, что компания допускает возможную интеграцию 64-битных расширений в существующие 32-разрядные серверные процессоры (этакая IA x86-64). Более того, подобные тенденции и разработки уже имеются. Так, что с одной стороны Intel одновременно продвигает две независимые линейки продуктов, а с другой – делает попытки пойти по пути AMD и создать некий гибрид x86-совместимого 64-разрядного процессора.

В такой ситуации положение AMD кажется более выгодным. Компания AMD предлагает единственное и достаточно серьезное решение, совмещающее 32 и 64-разрядных возможностей в одном. Х86-64, на котором основаны Athlon FX/64 и серверный Opteron, позиционируются как решения для HPC, рабочих станций и высокопроизводительных настольных компьютеров. Главные преимущества AMD x86-64 касаются аппаратной поддержки как существующих 16/32-битных приложений, так и новых 64-разрядных. Это касается и операционных систем: на K8 можно запускать любые существующие и будущие ОС. Соответственно не возникает привязки к программному обеспечению и отсутствует необходимость перекомпиляции существующих приложений – ведь именно это на данный момент больше всего волнует потребителя. Второе главное преимущество касается выше упомянутого ограничения доступной оперативной памяти. Теперь без каких-либо архитектурных изменений поддерживается адресация 264 памяти, что позволяет обойти ограничение в 4 Гбайта памяти и 2 Гбайта на процесс. Именно поэтому, изначально, ядро K8 выглядит более убедительно и перспективно.

Из чего выбирать…

Для начала давайте посмотрим, какие серверные технологии на данный момент мы имеем нашем распоряжении. Что касается компании AMD, то там все понятно – на всех фронтах оборону держит Opteron, ранее известный под кодовым названием SledgeHammer. Он предназначен почти для всех серверов, имеющих от 1 до 8 процессоров. Для серверов начального уровня с 1-2 процессорами пока что используется Athlon MP (Barton MP). Оба они выполнены по 0,13-мкм техпроцессу.

У Intel все гораздо более запутанно. Вроде бы все основные требования к серверам выполняют нынешние Xeon. Причем, последний выпускается в двух версиях Intel Xeon (DP) для двухпроцессорных конфигураций и Xeon MP для многопроцессорных систем. И только для HPC-систем предусмотрены процессоры Itanium 2, который имеет весьма узкую сферу применения.

Современные процессоры Xeon основаны на архитектуре NetBurst. Причем, Xeon DP вообще со многом похож на своего настольного брата Northwood, в то время как Xeon MP от них сильно отличается. Фактически, Intel Xeon DP есть не что иное, как хорошо знакомый нам Pentium 4 на ядре Northwood, но с аппаратно активизированной поддержкой двухпроцессорности (APIC). На те же мысли наводит и определение наличия APIC программами идентификации, скорее всего эта возможность просто «залочена», как это было с Hyper-Threading. Свое начало линейка Xeon ведет от ядра Foster, выполненного по техпроцессу 0,18 мкм. Foster имел частоту до 2 ГГц, кэш второго уровня 256 КБ и системную шину частотой 400 МГц. Второе поколение Xeon было объявлено на IDF 2002. Новое ядро, выполненное с 0,13 мкм технормами назвали Prestonia. На этом ядре процессоры и выпускаются до сих пор. Совсем недавно был объявлен Xeon Prestonia с частотой 3,20 ГГц и системной шиной 533 МГц. В чип интегрирована кэш-память L3 объемом 1 Мбайт (модели с частотой менее 3 ГГц имеют кэш 512 КБ). Кэш L2 сохраняется 512 Кбайт. Все модификации предназначены для использования с двухканальной памятью DDR. Для Prestonia используются наборы микросхем Intel E7501, E7505, ServerWorks GC-LE и GC-HE. В париях от 1000 штук процессор отпускает по цене $851,что даже меньше, чем Pentium 4 Extreme Edition.

Что касается Xeon MP, то он также впервые был выпущен на базе ядра Foster MP по 0,18 мкм техпроцессу. В конце 2002 года в свет вышло его второе поколение, известное под кодовым именем Gallatin. Совсем недавно была выпущена его версия с частотой ядра 2,80 ГГц. Частота системной шины составляет 400 МГц, а кэш L2 традиционно 512 КБ. Эта версия имеет кэш третьего уровня объемом 2 Мбайта, предыдущие версии имели объем L3 1 Мбайт. Переход на новый технологический процесс 0,13 мкм позволил значительно повысить частоту и увеличить кэш L3, видно ранее это нельзя было сделать из-за достаточно сильного разогрева процессора. Xeon MP предназначен для 4-8 процессорных конфигураций. Кэш-память третьего уровня в мультипроцессорных чипах нужна, чтобы «развязать» ядро и системную шину (FSB). В отличие от кэш-памяти L2, которая является синхронной (то есть при ее заполнении процессор простаивает, ожидая тактов системной шины), кэш-память третьего уровня асинхронная, что позволяет процессору работать при ее заполнении. Для мультипроцессорных CPU наличие емкого кэша L3 важно еще и потому, что системная шина у процессоров общая (а их на ней может сидеть до 8 штук), то есть соседние «камни» не будут простаивать в вычислениях, пока один из них полез в системную память за данными. Кэш-память с отслеживанием исполнения (L1, 12 Кбайт микрокоманд) обеспечивает ускоренный доступ к декодированным микрокомандам и увеличивает пропускную способность конвейера, кэш-память данных L1 (8 кбайт) уменьшает задержки в работе блока быстрого исполнения благодаря применению новейших технологий доступа, кэш-память L2 с улучшенной передачей данных ускоряет доступ к данным сервера за счет точной синхронизации с кэш-памятью данных L1 и блоком быстрого исполнения. Интегрированная кэш-память L3 в сочетании с быстрой системной шиной формирует высокоскоростной канал обмена данными с системной памятью. Кэш-память L1 с отслеживанием выполнения команд хранит до 12 000 декодированных микроопераций в порядке их выполнения. Это увеличивает производительность за счет исключения декодера из системы основных команд и делает более эффективным использование кэш-памяти, так как команды, имеющие ответвления, не отсылаются в память. В результате удается передавать больший объем команд в исполнительные блоки процессора и уменьшать общее время, требуемое на возврат из неправильно предсказанных ответвлений. Кэш-память второго уровня с улучшенной передачей данных состоит из 256-битного интерфейса, передающего данные на каждый такт частоты ядра процессора. Максимальная пропускная способность подсистемы кэш-памяти этих процессоров составляет 51,2 Гбайт/с. Имеется 2 блока арифметической логики, работающие на удвоенной частоте, что позволяет выполнять команды за полтакта. Все Xeon заключаются в 603/604-контактный FC-mPGA2P/INT-mPGA корпус. А вот цена Xeon MP поражает всякое воображение. Возможно, это сделано, чтобы цена Itanium 2 выглядела более привлекательно.

Перейдем к тяжелой артиллерии. Первый 64-разрядный процессор имел наименование Merced и был в последствии наречен Itanium. Он имел частоту до 800 МГц, частоту системной шины 266 МГц и выпускался по технормам 0,18 мкм. Кэши памяти были 32, 96 Кбайт и 2/4 Мбайт первого, второго, и третьего уровня соответственно. Это положило начало архитектуре явного параллелизма EPIC. Этот процессор особенно не прижился и был вскоре сменен ядром McKinley, нареченным Itanium 2.  Он был значительно оптимизирован, частота ядра перевалила за 1 ГГц, шина данных возросла по частоте до 400 МГц. Он все также выпускался по 0,18 мкм техпроцессу и имел форм-фактор Slot M. Летом этого года Intel представила третье поколение Itanium на ядре Madison. На данный момент выпущены версии с частотой 1,5 ГГц и кэш-памятью L3 6 МБ и 1,4 ГГц с кэшем 4 Мбайта. Кэш память второго уровня невелика – 256 КБ, а L1 32 КБ на данные и команды. В сентябре этого года выпущена версия Madison с частотой 1,4 ГГц и кэшем L3 объемом 1,5 МБ, что значительно снижает стоимость CPU до $1172. Используется 128-разрядная системная шина с частотой 400 МГц. Процессор выполняется по 0,13 мкм техпроцессу, напряжение ядра составляет 1,3 В. Несмотря на вдвое больший объем кэша L3, площадь кристалла уменьшилась до 374 мм2 (против 421 мм2 у McKinley). Энергопотребление осталось примерно на том же уровне – около 130 Вт. Интересно, что сам кристалл процессора содержит только 25 млн. транзисторов, в то время как четыре чипа кэша L3 имеют 75 млн. транзисторов каждый.

У Madison есть урезанная версия, обладающая пониженным энергопотреблением и оптимизированная для рабочих станций с высокой плотностью монтажа Itanium 2 LV. Носит она кодовое наименование Deerfield, который выпускается с частотой 1 ГГц, кэшем L3 1.5 МБ и потребляет всего лишь 62 Вт. Его цена всего лишь $744.

Архитектура Itanium 2

Новый процессор – это нечто среднее между традиционной архитектурой RISC для рабочих станций и серверов и CISC для настойных компьютеров. В основу архитектуры положена концепция EPIC (Explicitly Parallel Instruction Computing – вычисления с явным параллелизмом команд). Проект собственно включает разработку принципиально новой архитектуры 64-разрядного набора команд и оптимизирующих компиляторов. Новая архитектура в основном полагается на новый вид представления команд, их новый принцип следования, обработки и выполнения. Аппаратное обеспечение здесь играет отнюдь не первостепенную роль. Основная нагрузка по оптимизации потока команд ложится на компилятор, который является посредником между исходным кодом выполняемого приложения и внутренними исполняемыми командами процессора. Этот компилятор очень хорош «знает» аппаратную структуру нового CPU и формирует потоки команд, оптимизированные для параллельного выполнения их и сохранения результатов. И все это при сохранении должного уровня производительности. У этого подхода есть и очевидный минус: приложения, написанные для текущих моделей CPU могут не столь эффективно распараллеливаться в будущих моделях из-за жесткой привязки компилятора к существующей архитектуре. В архитектуре EPIC команды объединяются в последовательности, называемые связками (bundles), объединяющими по 3 команды, которые могут быть выполнены последовательно на одном исполнительном устройстве. Таким образом, выполнение команд на одних исполнительных устройствах не зависимо от выполнения команд на других. Для этого сам процессор также «укомплектован» соответствующе.

 В процессоре имеется шесть исполнительных конвейеров небольшой длины - по 8 стадий. Процессор может выполнять одновременно две связки команд. Каждая команда представляет собой несколько связанных с загрузкой или выгрузкой операндов, выполнением арифметических или логических действий инструкций. Itanium 2 содержит по 128 64-разрядных целочисленных и 82-разрядных регистров для инструкций с плавающей запятой. Есть еще 64 однобитных регистров для предсказания ветвлений и 8 регистров с адресами переходов. Регистры выделяются динамически, а если их не хватает, часть регистров записывается в системную память и становится адресуемыми (переназначение регистров). Исполнительных блоков в процессоре Itanium 2 тоже достаточно много: 6 блоков для целочисленной арифметики разрядностью 64 бита, 6 блоков для обработки упакованных форматов данных, два 82-разрядных FPU c поддержкой SIMD-инструкций и FMAC, четыре блока для загрузки и сохранения операндов. В общем, все сделано с учетом как можно большего параллелизма.

В процессоре есть блоки предсказания ветвлений, блоки обработки исключительных ситуаций, проверки зависимости инструкций, слежения за производительностью и т.д. Для выполнения инструкций архитектуры IA-32 имеется отдельный блок, который занимается распределением ресурсов процессора (регистров, исполнительных модулей) для поддержки старого набора команд. То есть вся основная работа происходит на уровне кэша L1, блока выборки и декодирования команд и буферов, которые формируют потоки инструкций на соответствующие исполнительные устройства. При этом определяется тип команды, её зависимости, наличие итераций и т.д., после чего формируются потоки и связи инструкций. Таким образом, разработчикам удалось избавиться от изменения последовательности команд и их распределения. После этих операций загружается стек и связки поступают на выполнение с учетом ветвлений.

Подсистема кэширования тоже выполнена интересно: у Itanium 2 есть два кэша первого уровня - один для целочисленных операндов объемом 16 Кб, второй - для инструкций. Если процессор выполняет операции с плавающей запятой или не находит данных в кэше L1, он обращается к кэшу второго уровня объемом 256 Кб. Если данных и там не найдено, производится обращение к кэшу третьего уровня, который, в свою очередь «общается» с оперативной памятью. Itanium 2, имея 50-разрядную шину адреса, работает с 250 байт ОЗУ.

Теперь - о системной шине. Она 128-разрядная, имеет частоту 400 МГц, построена по технологии AGTL+, рассчитана на подключение четырех процессоров, обеспечивает обнаружение и исправление ошибок по методу ECC.

В целом, процессор Itanium 2 по уровню параллелизма, объему кэша, пропускной способности шины и другим параметрам превосходит практически любой другой настольный или серверный процессор. Но проблема Itanium 2 состоит в том, что он будет показывать высокую производительность только в том случае, если программное обеспечение было подготовлено специальным компилятором и будет полностью 64-разрядным.

 

IA-64 против x86-64

Известно, что минусы одних чаще всего становятся добычей других и, в конечном счете плюсами последних. А серьезные, но узкоспециализированные преимущества, зачастую, играют злую шутку с их хозяевами. Вот так получается и с технологией IA-64, которая имеет значительное число преимуществ перед x86, да и вообще, является очень удачной задумкой, но имеет ряд минусов, которые перекрывают большинство плюсов и способны решить многие вопросы не в пользу EPIC.

X86-64 представляет собой просто расширенное и оптимизированное до 64 разрядов ядро K7. Регистры расширены до 64 разрядов, что позволяет адресовать и работать одинаково эффективно как с 16-32-разрядными, так и с 64-раздынми командами. Конвейер удлинен, а вместе с ним улучшился и блок предсказания ветвлений, и увеличено окно планировщика. Появилась поддержка набора команд SSE2. Встроенный 144-разряный контроллер памяти DDR333 поддерживает ECC (контроль ошибок). Кэш второго уровня увеличен до 1 Мбайта. Вот так получился первый 64-битный процессор от AMD. Главный плюс Opteron в том, что вы получаете максимальную производительность 32-разрядных приложений при полной совместимости железа с 64-битным кодом. Нет необходимости перекомпилировать существующие приложения – процессор работает под любой ОС с любым софтом. Только для реализации «длинного» режима адресации требуется 64-разрядная ОС и приложения, совместимые с x86-64. Есть и минусы – приходится тянуть весь старый багаж x86 ISA, что сказывается на производительности. Отсутствуют и особые перспективы к развитию и расширению архитектуры, ее практически невозможно оптимизировать.

Intel, понимая невозможность оптимизации микроархитектуры x86 и необходимость расширяемой архитектуры, пошла кардинально иным путем. IA-64 ISA имеет большое количество преимуществ по сравнению с x86 ISA, но здесь присутствуют и серьезные недостатки. Главный из них – это отсутствие встроенной аппаратной поддержки x86-кода и старых приложений соответственно. Чтобы работать с 32-битными приложениями, процессоры Itanium используют встроенный аппаратный декодер со всеми вытекающими отсюда печальными последствиями в виде низкого быстродействия при работе с этими приложениями.

Зато IA-64 ISA был сделан очень мощным. К этому Intel шла достаточно долго (EPIC начал разрабатываться в 1994 году). Давайте посмотрим, решение каких проблем ставила компания Intel своей целью. Было решено, что единственный способ увеличить производительность приложений – это реализовать настоящий параллелизм. И здесь все упирается в порядок исполнения команд. Так как для оптимизации под конвейерную структуру раньше приходилось проверять зависимость операндов, наличие итераций, занятость регистров, то от этой схемы пришлось отказаться. Настоящий параллелизм можно получить при независимости исполнения инструкций. Это позволит одновременно загрузить максимальное число исполняющих устройств (ведь конвейеров в процессоре несколько).

Проблемы современных архитектур

Как правило, очень многие инструкции зависимы: будучи однажды определенными, они используются в циклах, математических операциях, условиях. Причем, независимость операндов определяется только при исполнении. Часто конвейеру приходится простаивать в ожидании данных с другого исполнительного блока или из памяти – на это может уйти около 5 тактов. Чтобы ожидать результат меньшее количество тактов, используются предсказание ветвлений. Но это не идеальный выход: при ошибке ветвления приходится перегружать весь конвейер заново. Чтобы инструкции были независимыми, их надо отдельно объявлять, но это, в свою очередь, увеличивает размер исполняемого кода. Современные компиляторы по умолчанию не могут реализовать параллелизм. Некоторая параллельность выполнения реализуется прямо во время компиляции, но это не сравнить с идеалом. Такой параллелизм позволяет одновременно выполнять только операции одного блока кода (например, одну функцию). Больше всего параллелизму мешают условные переходы, которые встречаются в современных программах очень часто. Переходы не только нарушают последовательность выполнения команд, но и требуют параллельного исполнения заранее для определения исключений.

Зависимость от обращений к памяти также значительно препятствует параллелизму. При предсказаниях необходимо часто сохранять и считывать данные, а регистров на это не хватает, поэтому их приходится перемещать, выбирать из памяти и предварительно загружать, так как загрузкой данных к кэш приложение управлять не может. Более того, зависимость компилятора от количества регистров создает дополнительные ложные зависимости. Зачастую оказывается, что даже независимые инструкции оказываются зависимы от состояния процессора. Ведь регистры флагов и управления едины для всего процессора. Операции с плавающей точкой создают дополнительные ограничения, поэтому до сих пор программисты старались использовать их как можно меньше.

В современных языках программирования (C++, Java) часто используются вызовы небольших функций и процедур, которые требуют частоq передачи и возврата значений. Для вызывающей и вызываемой функций используются одни и те же регистры, соответственно, их содержание требуется сохранять в памяти. Иногда сохранение и восстановление регистров производится даже, если это и не требуется.

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

IA-64 ISA

Для решения этих проблем Intel стала действовать сразу в разных направлениях. Первое связано с созданием архитектуры для новых приложений. Для удачной оптимизации было решено, что процессор должен обрабатывать не команды, а группы команд – связки (instruction bundles), - состоящие из нескольких инструкций определенного типа. Архитектура IA-64 предусматривает хранение трех команд в одной связке, причем каждая связка открывается шаблоном, предписывающим выполнение этой связки определенными исполнительными модулями. Это было сделано для того, чтобы избежать перегруппировки команд, на которую раньше CISC- и RISC-процессоры затрачивали достаточно много времени, чтобы параллельно выполняемые команды не влияли на результаты друг друга. В случае EPIC это делает не процессор, а компилятор: он собирает независимые друг от друга команды в блоки, и процессор может сразу же начинать параллельное выполнение, не заботясь о проверке их совместимости. Тем самым достигается существенное ускорение, но только для тех программ, которые предварительно были обработаны компилятором. Отсюда и получается, что 16- и 32-разрядные программы будут работать со значительно меньшей скоростью.

Новый набор команд сильно упрощен, из него исключены инструкции с высокой латентностью (деления, целочисленного умножения и т. п.). Безусловно, это увеличивает объем кода, так как необходима эмуляция сложных команд, но увеличение параллелизма, позволяющего одновременно проводить несколько вычислений, с лихвой покрывает эти потери. Имеются и расширения системы команд. Это новые команды для вычислений с плавающей точкой (команда умножения с накоплением, команды поиска максимума и минимума) и семантически совместимые с MMX мультимедийные команды, производящие параллельные вычисления над восемью 8-битными, четырьмя 16-битными или двумя 32-битными целочисленными операндами. Большинство команд многооперандные, операции проводятся только над регистрами, а для работы с памятью существует специальная группа команд.

Инструкции имеют унифицированную длину 41 бит и упаковываются в связки по 128 бит для выравнивания. Шаблон в связке описывает, к каким исполнительным модулям направляется каждая из команд, а также границы разделения групп команд. Это сильно упрощает декодирование команд процессором. Связки могут выполняться процессором параллельно, и от того, насколько удачно удается компилятору "распараллелить" исходный код приложения зависит эффективность выполнения приложения в целом.

Любая команда может быть выполнена задолго до её истинного месторасположения, при этом она может вызвать исключение (exception). При выполнении такой операции исключение откладывается до точки оригинального месторасположения. В этой точке специальной командой производится проверка на удачность спекуляции. Этот механизм получил название спекулятивного ветвления. Таким образом, проблема предсказания ветвлений решается в рамках новой идеологии более эффективно. Для «отметки» ветвлений после исследования их процессором используются предикатные регистры. Затем если процессор встречает "отмеченное" ветвление в процессе выполнения программы, он начинает одновременно выполнять все ветви. После того, как будет определена "истинная" ветвь, процессор сохраняет необходимые результаты и сбрасывает остальные. Этот механизм позволяет полностью избавится от простых условных переходов, но приводит к необходимости выполнять обе ветви программы одновременно, что может снизить производительность при несбалансированных ветвях программы. Для дополнительного снижения количества ошибок на условных переходах введен ряд оригинальных механизмов: подсказки ветвлений, подсказки предвыборки, переходы по косвенным адресам с использованием регистра ветвлений, адрес в котором используется процессором как подсказка на точку ветвления, специальные команды организации цикла с хорошим предсказанием начала и завершения.

Технология спекулятивной загрузки позволяет заранее загрузить данные из памяти в один из регистров. Механизм регистрового стека позволяет не сохранять лишний раз содержимое регистров при вызове функций. Это достигается тем, что регистры с 32 по 128 являются стековыми и переименовываются при вывозе функций. Их можно использовать для передачи параметров. Механизм «вращения регистров» позволяет параллельно выполнять команды из разных итераций цикла.

Для программной поддержки всего этого Intel предлагает весь необходимый софт для разработки приложений нового типа (со старыми уже ничего не сделаешь). Практика показывает, что после оптимизации приложений можно достичь полуторного прироста производительности. В качестве исходников предлагаются библиотеки MKL и IPP. MKL (Math Kernel Library) предназначена для научных вычислений и оптимизирована как для 32-битных, так и для 64-битных многопроцессорных систем. Основаны они на C/C++ и Fortran. MKL описывает базовые функции BLAS для матриц и векторов. Имеется поддержка упакованных функций и векторых VML для больших массивов данных. Причем библиотека выпускается как под Windows, так и под Linux. Недавно вышел Intel C++ Compiler версии 6. IPP (Integrated Performance Primitives) содержит низкоуровневые программные примитивы, общие для всех процессоров и процессорозависимые функции обработки сигналов, видео, аудио и графики. Поддерживается большое количество типов и массивов данных, по сути дела, объединяющая все существовавшие до этого библиотеки. Компилятор Intel также создан для Windows и Linux и поддерживает кросс-платформенную компиляцию. Главной его особенностью является возможность автоматической векторизации для NetBurst и программной конвейеризации для EPIC. Он поддерживает автоматическое распараллеливание вычислений, технологию Hyper-Threading и SMP. На уровне компилятора можно организовать предвыборку команд (prefetching). При применении компилятора на различных платформах он поддерживает автоматическое определение процессора. Производительность его не очень сильно отличается от ассемблера!

Assure Thread Analyzer – это автоматический отладчик для многопоточных приложений, поставляемый Intel. Пока что он оптимизирован только под Hyper-Threading, но в будущем он будет также поддерживать кластеры. Intel VTune Performance Analyzer – очень интересная вещь, которая позволяет обнаруживать «узкие места» в приложениях и его причины. Например, он может определить наиболее часто исполняемые операции, вызываемы функции и оптимизировать их местоположение в исходном коде. Он поддерживает 32 и 64-разрядные платформы Java, C#, .NET. Ну что ж, можно сказать IA-64 – это действительно перспективный рывок в будущее 64-битных систем.

О будущем…

Теперь стоит поговорить о будущем 64-разрядных платформ Intel. Позиция компании не совсем понятна: то она упорно утверждает, что Itanium будет широко использоваться только через некоторое время, и вообще, 64-разрядные процессоры пока что не особенно нужны и будут они применяться только в HPC-сегменте рынка. По мнению компании до последнего времени все серверные нужды удовлетворял Xeon MP. После долгого отрицания необходимости расширения адресуемой памяти более 4 Гбайт Intel все же ввела ужасно медленные PAE (Physical Address Extensions), которые позволяли Xeon адресовать до 64 ГБ. И вот теперь началось достаточно быстрое продвижение Itanium 2. Следующее поколение 64-битных процессоров от Intel – чипы с кодовыми названиями Madison 9M, - появится на рынке в 2004 году. С этими чипами картина прояснилась еще прошлой осенью: Madison 9M - это версия процессора с 9 Мб кэша L3 и тактовыми частотами от 1,5 ГГц и выше, числом транзисторов более 500 млн.

Гораздо больше подробностей известно о линейке двухпроцессорных серверных чипов Montecito, выпуск которых перенесен с 2004 года на 2005 год. Производиться они, скорее всего будут по 0,09 мкм техпроцессу. Как ожидается, каждое процессорное ядро чипа будет обладать своим собственным кэшем L1, L2 и L3, суммарный объем кэш-памяти составит не менее 18 Мб на корпус, при этом, весь конструктив будет содержать порядка 1 млрд. транзисторов. Интересно, каким же тогда будут у него тепловыделение?

 

Именно в этих процессорах дебютирует новая технология внутренней "распределительной" ("arbiter") шины, предназначенной для управления двумя и более процессорными ядрами в едином корпусе – что-то вроде общего процессорного системного интерфейса с пропускной способностью до 6,4 Гб/с и производительностью до 400 млн. транзакций в секунду. По словам представителей компании, применение такой шины позволит удвоить объем кэш-памяти, поддерживаемой каждым процессором. В будущем возможно объединение до 4 ядер в одном корпусе.

В области 32-разрядных серверных процессоров, напротив, никакой сенсации не предвидится. Процессор Xeon на ядре Nocona выйдет с поддержкой шины 800 МГц, а изготовляться будет по 0,09-микронному процессу. Фактически, Nocona теперь станет серверным аналогом десктопного процессора Prescott и будет представлена во втором квартале 2004 года. Для него будет выпущен чипсет Lindenhurst. Этот чипсет будет поддерживать 800 МГц Quad Pumped Bus, работать с более скоростной памятью, поддерживать PCI Express и direct connect LAN. А процессор из серии серверных разработок, частота которых уже превысит 3,6 ГГц, под кодовым именем Jayhawk, должен появиться во второй половине следующего года. Чипсет, поддерживающий как Jayhawk, так и Nocona, сейчас носит название Tumwater.

Так что, похоже, рано еще говорить о скором вымирании 32-разрядных систем. Компания Intel будет развивать обе линейки… по крайней мере до 2006 года.

Автор: Александр Дудкин
alexishw@xaker.ru

10.12.2003


© Авторские права и копия защищены законом: © Дудкин Александр Константинович, 2002 г.
Копирование любых материалов только с письменного разрешения автора сайта
URL сайта: www.alexishw.mailru.com
Ваши замечания и предложения присылайте по e-mail: alexishw@mailru.com