Процессоры для IBM-совместимых компьютеров
Сдержание:
Особенность сегодняшней ситуации на рынке процессоров для IBM-совместимых ПК состоит в том, что между основными производителями процессоров развернулась жесткая конкурентная борьба за свое место под солнцем. В первую очередь это касается компаний Intel и AMD, соперничество между которыми особенно обострилось после выпуска процессора AMD-K6-2, ставшего достойным конкурентом процессорам линеек Intel Pentium II и Intel Celeron. Другие производители x86-совместимых процессоров также не стоят на месте - прежде всего это Cyrix и IDT. Таким образом, вполне естественным представляется вопрос о том, что же предлагают сейчас производители клонов и способна ли их продукция конкурировать с процессорами Intel.
Цель проведенного нами тестирования заключалась в том, чтобы сравнить производительность современных x86-совместимых процессоров и выяснить их возможности при решении тех или иных задач. Не стоит рассматривать результаты, приведенные здесь, как исчерпывающее руководство по выбору процессора для своего ПК, поскольку производительность - лишь одна из характеристик процессора, хотя и немаловажная. В ряде случаев гораздо существеннее полная программная совместимость, способность работать в данном аппаратном окружении, энергопотребление и другие показатели.
Мы попытались сравнить все современные процессоры для IBM-совместимых персональных компьютеров, представленные на московском рынке. Еще раз оговоримся, что нами принимались в расчет только производительность и стоимость процессоров. Вопросы совместимости и надежности - как в смысле отсутствия в микрокоде процессора серьезных ошибок, так и в смысле корректности работы с рядом системных плат, - нами специально не исследовались, и потому в этой статье не рассматриваются.
Прежде, чем перейти непосредственно к детальному обсуждению характеристик и особенностей современных процессоров Intel, необходимо немного рассказать о том, как маркируются процессоры Intel, и как по идентификационным кодам можно определить те или иные свойства конкретного экземпляра процессора.
На сегодняшний день на рынке комплектующих для IBM-совместимых компьютеров имеется большое количество процессоров от Intel самых разных модификаций. В этом разнообразии легко запутаться, поэтому уже в то, ныне далекое время, когда выпускались 386 процессоры, Intel ввел специальный идентификационный код, по которому можно было бы установить марку процессора - CPUID (в официальной документации Intel также используется термин "Processor Signature"). Идентификатор CPUID представляет собой 14-битное число, в котором в закодированном виде хранится информация о типе (Type) - 2 старших бита с 12 по 13, семействе (Family) - 4 бита с 8 по 11, модели (Model) - 4 бита с 4 по 7, а также ревизии (Stepping) процессора - 4 младших бита с 0 по 3. Так, например, для процессоров Pentium Pro CPUID равен 061x, а для Pentium II - 063x или 065x.
Все современные процессоры Intel поддерживают инструкцию CPUID, с помощью которой можно "запросить" у процессора его идентификатор CPUID. Помимо этого, инструкция CPUID позволяет узнать, поддерживает ли процессор ряд дополнительных функций (MMX, APIC и.т.д.), а также характеристики LI- и L2-кэша. Некоторые ранние модели процессоров Intel эту инструкцию не поддерживали.
CPUID, а также много других полезных характеристик процессора, можно определить с помощью ряда программ, например, CPUID от Intel (ftp://download.intel.com/cn/gb/developer/cpuid/windows/cpuid.exe), c't CM (ftp://ftp.heise.de/pub/ct/pcconfig/ctcm16n.zip) и c't Pentium II Info (ftp://ftp.heise.de/pub/ct/pcconfig/ctp2info.zip) от немецкого компьютерного журнала c't (http://www.heise.de/ct/english/).
|
CPUID процессоров производства Intel в двоичной системе исчисления.
Type | Family | Model | Stepping | Процессоры, соответствующие указанному CPUID |
00 | 0100 | 0000, 0001 | xxxx (1) | Intel 486 DX |
00 | 0100 | 0010 | xxxx (1) | Intel 486 SX |
00 | 0100 | 0011 | xxxx (1) | Intel 467 |
00 | 0100 | 0011 | xxxx (1) | Intel DX2 |
00 | 0100 | 0011 | xxxx (1) | Intel DX2 OverDrive |
00 | 0100 | 0100 | xxxx (2) | Intel 486 SL |
00 | 0100 | 0101 | xxxx (1) | Intel SX2 |
00 | 0100 | 0111 | xxxx (2) | Write-Back Enhanced Intel DX2 |
00 | 0100 | 1000 | xxxx (2) | Intel DX4 |
00,01 | 0100 | 1000 | xxxx (2) | Intel DX4 OverDrive |
00 | 0101 | 0001 | xxxx | Pentium 60, 66 MHz |
00 | 0101 | 0010 | xxxx | Pentium 75, 90, 100, 120, 133, 150, 166, 200 МГц |
01 (3) | 0101 | 0001 | xxxx | Pentium OverDrive для Pentium 60, 66 МГц |
01 (3) | 0101 | 0010 | xxxx | Pentium OverDrive для Pentium 75, 90, 100, 120, 133 МГц |
01 | 0101 | 0011 | xxxx | Pentium OverDrive для Intel 486 |
00 | 0101 | 0100 | xxxx | Pentium MMX 166, 200 МГц |
01 | 0101 | 0100 | xxxx | Pentium OverDrive MMX для Pentium 75, 90, 100, 120, 133 МГц |
00 | 0110 | 0001 | xxxx | Pentium Pro |
00 | 0110 | 0011 | xxxx | Pentium II model 3 |
00 | 0110 | 0101 (4) | xxxx | Pentium II model 5, Pentium II Xeon, Intel Celeron |
00 | 0110 | 0110 | xxxx | Intel Celeron model 6 |
01 | 0110 | 0011 | xxxx | Зарезервировано для OverDrive процессора для Pentium Pro |
Примечания:
Кроме CPUID, для определения модификации процессора используются также еще два идентификатора: S-Spec и маска процессора ("mask"). В официальной документации Intel вместо термина "mask" используется термин "core stepping" - ревизия ядра, что лучше отражает суть этого идентификатора.
Маска (ревизия ядра) процессора обозначает версию ядра процессора. Различие в маске между двумя процессорами говорит о том, что в ядрах этих процессоров "прошит" разный микрокод.
S-Spec - это идентификатор, который однозначно определяет функциональные, электрические, технологические характеристики и тип упаковки конкретного экземпляра процессора. Безусловно, S-Spec - самый важный из трех рассмотренных идентификаторов: зная его, можно узнать CPUID, маску, рабочую частоту ядра процессора, размер L2-кэша и некоторые другие характеристики процессора: таблицы с соответствующей информацией публикуются на одном из www-узлов Intel и регулярно обновляются. Значение S-Spec обязательно присутствует в маркировке, наносимой на картридж или корпус процессора. Однако S-Spec нигде не "прошивается" в ядре процессора, что, на самом деле, дает лишний повод для подделки процессоров путем их перемаркировки. Например, если процессор поддается разгону и устойчиво работает на частотах выше официально заявленной, то достаточно изменить его маркировку в соответствии с этой повышенной частотой, и тогда вполне возможна ситуация, когда поддельный разогнанный процессор будет неотличим от настоящего. Все было бы совсем иначе, если идентификатор S-Spec прошивался бы где-нибудь в процессоре и его можно было прочитать - наподобие CPUID. В этом случае подделать процессор было бы намного труднее (или вообще невозможно).
Самый младший из всех процессоров, выпускаемых на сегодняшний день компанией Intel, появился на рынке в январе 1997. Это был Intel Pentium MMX - первый процессор, который поддерживал новый набор из 57 команд MMX. Pentium MMX изготавливается по 0,28-микронной технологии, имеет внутренний LI-кэш объемом 32 Кбайт, тактовую частоту ядра 166-233 МГц, частоту шины 66 Мгц и разъем Socket 7.
Вслед за этим процессором корпорация Intel выпустила Pentium Pro - первую модель из семейства P6, в которой был впервые использован L2-кэш, выполненный на одном кристалле с ядром и работающий на частоте ядра процессора. Pentium Pro выпускается по 0,60- и 0,35-микронной технологии, имеет LI-кэш объемом 16 Кбайт, L2-кэш объемом 256, 512 или 1024 Кбайт, тактовую частоту ядра в 150-200 МГц, частоту системной шины в 66 МГц, разъем Socket 8.
Процессоры линейки Pentium II позиционируются Intel как CPU для массового PC средней производительности. В нее входят семейства процессоров Klamath, Deschutes и планируемые к выпуску в будущем семейства процессоров Katmai (Pentium III) и Coppermine. Здесь необходимо заметить, что имена Klamath, Deschutes, Katmai и Coppermine - это все рабочие названия процессоров, которые используются на этапе их разработки и после выпуска процессоров на рынок заменяются на официальные. Так, в официальной технической документации Intel вы на встретите названия Klamath или Deschutes - вместо этого используются, например, Pentium II 233 MHz или Pentium II 400 MHz. Кстати, совсем недавно Intel объявил о смене рабочего названия Katmai на официальное Pentium III.
Май 1997 был ознаменован появлением Klamath (ныне не выпускается) - первого процессора линейки Pentium II и первой модели с разъемом Slot 1. Klamath изготавливался по старой 0,35-микронной технологии - поэтому он работал только на частотах 233-300 Мгц и, вдобавок к этому, сильно нагревался (по сравнению с тем же Deschutes). Не прошло и года, как его сняли с производства.
Процессор Klamath имеет LI-кэш объемом 32 Кбайт (16 Кбайт для данных + 16 Кбайт для инструкций), L2-кэш объемом 512 Кбайт работает на половинной частоте процессора, частота системной шины 66 МГц, поддерживает MMX, многопроцессорность - до 2 процессоров. Напряжение на ядре - 2,8 В, на L2-кэше - 3,3 В. CPUID для процессоров семейства Klamath равен 63x.
Конструктивно процессор и L2-кэш размещаются на одной печатной плате (substrate). Сам процессор выполнен в виде одной микросхемы с пластиковым корпусом, которая имеет форму квадрата с отсеченными углами и распаивается в центре "лицевой" стороны платы. L2-кэш состоит из пяти микросхем: микросхемы TagRAM-памяти - расположена в центре "обратной" стороны платы ("под" процессором), и четырех микросхем BSRAM-памяти - две расположены на "лицевой" стороне платы, симметрично по бокам от процессора, а оставшиеся две - на "обратной" стороне платы, симметрично по бокам от микросхемы TagRAM-памяти. На одном из краев платы расположены два ряда контактных выводов - по одному с каждой стороны платы. Эти краем плата устанавливается в разъем Slot 1 на материнской плате.
|
|
Печатная плата с процессором и L2-кэшем размещается внутри защитного S.E.C.C. (Single Edge Contact Cartridge) картриджа. Корпус картриджа состоит из теплоотводной металлической пластины (thermal plate), к которой может быть прикреплен пассивный или активный охлаждающий радиатор, и пластмассовой крышки (cover). Под теплоотводной пластиной расположена небольшая пластмассовая пластинка (skirt). Плата устанавливается внутрь картриджа таким образом, что ее "лицевая" сторона обращена к теплоотводной пластине. Охлаждение микросхемы процессора обеспечивается за счет ее непосредственного контакта с теплоотводной пластиной, чего не скажешь о микросхемах BSRAM-памяти L2-кэша - они, что называется, "варятся в собственном соку", поскольку конструктив S.E.C.C. картриджа не предусматривает для них никакого принудительного охлаждения.
|
|
Появление Deschutes
в январе 1998 стало дальнейшим этапом в развитии линейки Pentium II. Процессор изготавливается по 0,25-микронной технологии, имеет тактовую частоту 266-450 МГц, частоту системной шины 66/100 МГц, LI-кэш объемом 32 Кбайт (16 Кбайт для данных + 16 Кбайт для инструкций), L2-кэш объемом 512 Кбайт - размещен на одной печатной плате с процессором и работает на половиннной частоте ядра, разъем Slot 1, поддерживает MMX, многопроцессорность - до 2 процессоров, имеет CPUID равный 65x. Будет производится до II квартала 1999 г.Использование 0,25-микронной технологии (против 0,35-микронной для Klamath) позволило снизить не только себестоимость процессора (так как из одной кремниевой пластинки можно вырезать большее количество микросхем), но и напряжение на ядре - 2,0 В, что, в свою очередь, привело к снижению тепловой мощности, рассеиваемой процессором. Действительно, если 300 МГц Klamath рассеивает 43 Вт, то 333 МГц Deschutes - всего 20,6 Вт. Архитектура ядра процессора осталась такой же, как и у Klamath. Прежними же остались и возможности по поддержке многопроцессорности - до 2 процессоров.
Объем и частота (половина от частоты ядра) L2-кэша остались прежними, а вот его конструктив изменился. Если у Klamath он состоял из пяти микросхем (TagRAM + 4 BSRAM), то у Deschutes - из трех: TagRAM + две BSRAM. Это снижает себестоимость и энергопотребление, но сказывается на производительности: L2-кэш с четырьмя BSRAM-микросхемами при прочих равных условиях работает на 3%-5% быстрее, чем с двумя BSRAM-чипами.
Еще одно отличие Deschutes от Klamath - поддержка ECC-коррекции ошибок при обмене данными между ядром процессора и L2-кэшем. Если в семействе Klamath выпускались процессоры как с поддержкой ECC при работе с L2-кэшем, так и без нее, то для Deschutes ситуация несколько другая - все процессоры этого семейства поддерживают ECC-коррекцию ошибок при обмене данными между ядром процессора и L2-кэшем.
Конструктив всей процессорной сборки (картриджа, печатной платы, элементной базы) также претерпел некоторые изменения, причем среди процессоров Deschutes встречаются экземпляры, как минимум, в двух различных исполнениях - назовем их условно исполнением первого и второго типа. Вполне возможно, что существует не два, а большее количество исполнений процессоров Deschutes, однако конкретно нам приходилось работать лишь с двумя из них, а четкая официальная информация от производителя, которая могла бы внести ясность в этот вопрос, попросту отсутствует.
Итак, исполнение "первого типа". Характерно для ранних экземпляров процессора Deschutes и имеет следующие отличительные черты:
|
Конструктив S.E.C.C. картриджа у Deschutes в исполнении "первого типа" претерпел некоторые изменения по сравнению с S.E.C.C. картриджем у Klamath, как и его название, которое изменилось на "S.E.C.C. картридж с extended thermal plate" вместо обычного "S.E.C.C. картридж". Если раньше заднюю стенку картриджа образовывали теплоотводная металлическая пластина (thermal plate) и небольшая пластмассовая пластинка (skirt), расположенная внизу, то теперь теплоотводная металлическая пластина имеет несколько большие размеры (extended thermal plate) и занимает всю заднюю стенку. Это позволяет улучшить охлаждение процессора. На теплоотводной пластине также появились два специальных выступа; когда картридж и печатная плата собраны в единую сборку, эти выступы соприкасаются с микросхемами BSRAM-памяти, обеспечивая тем самым охлаждение L2-кэша - напомним, что в S.E.C.C. картридже охлаждение микросхем памяти L2-кэша не предусмотрено.
|
|
Процессоры Deschutes в исполнение "второго типа" появились вместе с выпуском первых экземпляров Deschutes с тактовой частотой ядра 350-450 МГц. Они отличаются от Deschutes в исполнении "первого типа" тем, что:
|
|
Самая интересная особенность этого исполнения - упаковка кристалла процессора, которая достаточно необычна. При производстве микросхемы такого типа - OLGA - готовый к упаковке кристалл опускается на заранее подготовленную подложку с контактами. После этого кристалл сильно прижимается к подложке и закрепляется в этом положении клеящим составом, который напоминает эпоксидную смолу. Таким образом, получается микросхема без защитного пластикового или металлизированного корпуса - верхняя плоскость кристалла остается открытой. Это позволяет улучшить отвод тепла от процессора, так как охлаждающий радиатор теперь может непосредственно соприкасаться с нагревающимся кристаллом, а не с защитным корпусом.
|
Еще одна особенность процессоров Deschutes в исполнения "второго типа" - использование нового типа картриджа - S.E.C.C.2. У этого картриджа вообще отсутствуют теплоотводная металлическая пластина и задняя стенка как таковая - доступ к печатной плате со стороны, на которой размещены микросхемы процессора и BSRAM-памяти, полностью открыт. Такое решение, во-первых, снижает стоимость картриджа и всей сборки в целом, и, во-вторых, улучшает охлаждение процессора, так как поверхность устанавливаемого охлаждающего радиатора соприкасается непосредственно с поверхностью кристалла (!) процессора.
|
Напряжение/сила тока на ядре процессора/L2-кэше для процессоров семейства Klamath/Deschutes с частотами 233-333 МГц.
Параметр | Процессор | Частота на ядре процессора | Мин. значение параметра | Номинальное значение параметра | Макс. значение параметра | Единицы измерения |
VссCORE (напряжение на ядре процессора) | Klamath (CPUID = 63x) | 233 МГц | 2,80 | Вольт | ||
Klamath | 266 МГц | 2,80 | - // - | |||
Klamath | 300 МГц | 2,80 | - // - | |||
Deschutes (CPUID = 65x) | 266 МГц | 2,00 | - // - | |||
Deschutes | 300 МГц | 2,00 | - // - | |||
Deschutes | 333 МГц | 2,00 | - // - | |||
IссCORE (сила тока на ядре процессора) | Klamath | 233 МГц | 11,8 | Ампер | ||
Klamath | 266 МГц | 12,7 | - // - | |||
Klamath | 300 МГц | 14,2 | - // - | |||
Deschutes | 266 МГц | 8,492 | - // - | |||
Deschutes | 333 МГц | 9,303 | - // - | |||
VccL2 (напряжение на L2-кэше) | Klamath/Deschutes | 3,135 | 3,30 | 3,465 | Вольт | |
IccL2 (сила тока на L2-кэше) | Klamath | 1,4 | Ампер | |||
Deschutes | 1,0 | - // - |
Мощность тепловыделения и рабочий температурный режим для процессоров семейства Klamath/Deschutes с частотами 233-333 МГц и S.E.C.C. картриджем при номинальных значениях VссCORE и VccL2
Процессор | Частота на ядре процессора | Размер L2-кэша (Кбайт) | Макс. тепловая мощность, рассеиваемая процессором, Ватт | Макс. тепловая мощность, рассеиваемая теплоотводной металлической пластиной картриджа (thermal plate), Ватт | Мин. рабочая температура теплоотводной металлической пластины картриджа, °C | Макс. рабочая температура теплоотводной металлической пластины картриджа, °C | Мин. рабочая температура пластмассовой крышки (cover) картриджа, °C | Макс. рабочая температура пластмассовой крышки картриджа, °C |
Klamath (CPUID = 63x) | 233 МГц | 512 | 34,8 | 33,6 | 5 | 75 | 5 | 75 |
Klamath | 266 МГц | 512 | 38,2 | 37,0 | 5 | 75 | 5 | 75 |
Klamath | 300 МГц | 512 | 43,0 | 41,4 | 5 | 72 | 5 | 72 |
Deschutes (CPUID = 65x) | 266 МГц | 512 | 16,8 | 16,1 | 5 | 65 | 5 | 75 |
Deschutes | 300 МГц | 512 | 18,7 | 18,0 | 5 | 65 | 5 | 75 |
Deschutes | 333 МГц | 512 | 20,6 | 19,9 | 5 | 65 | 5 | 75 |
Напряжение/сила тока на ядре процессора/L2-кэше для процессоров семейства Deschutes с частотами 350-450 МГц.
Параметр | Частота на ядре процессора | Мин. значение параметра | Номинальное значение параметра | Макс. значение параметра | Единицы измерения |
VссCORE (напряжение на ядре процессора) | 1,9 | 2,00 | 2,1 | Вольт | |
IссCORE (сила тока на ядре процессора) | 350 МГц |
|
10,8 | Ампер | |
400 МГц |
|
12,0 | - // - | ||
450 МГц |
|
13,6 | - // - | ||
VccL2 (напряжение на L2-кэше) | 3,135 | 3,30 | 3,465 | Вольт | |
IccL2 (сила тока на L2-кэше) | 350 МГц |
|
0,7 | Ампер | |
400 МГц | 0,9 | ||||
450 МГц |
|
1,0 | - // - |
Мощность тепловыделения и рабочий температурный режим для процессоров семейства Deschutes с частотами 350-450 МГц и S.E.C.C. картриджем с extended thermal plate при номинальных значениях VссCORE и VccL2.
Частота на ядре процессора | Размер L2-кэша (Кбайт) | Макс. тепловая мощность, рассеиваемая процессором, Ватт | Макс. тепловая мощность, рассеиваемая теплоотводной металлической пластиной картриджа (extended thermal plate), Ватт | Мин. рабочая температура теплоотводной металлической пластины картриджа, °C | Макс. рабочая температура теплоотводной металлической пластины картриджа, °C | Мин. рабочая температура пластмассовой крышки (cover) картриджа, °C | Макс. рабочая температура пластмассовой крышки картриджа, °C |
350 МГц | 512 | 21,5 | 20,8 | 5 | 75 | 5 | 75 |
400 МГц | 512 | 24,3 | 23,6 | 5 | 75 | 5 | 75 |
450 МГц | 512 | 27,1 | 26,4 | 5 | 70 | 5 | 75 |
Мощность тепловыделения и рабочий температурный режим для процессоров семейства Deschutes с частотами 350-450 МГц и S.E.C.C.2 картриджем при номинальных значениях VссCORE и VccL2.
Частота на ядре процессора | Размер L2-кэша (Кбайт) | Макс. тепловая мощность, рассеиваемая процессором, Ватт | Мин. рабочая температура микросхемы процессора, °C | Макс. рабочая температура микросхемы процессора, °C | Мин. рабочая температура микросхем L2-кэша, °C | Макс. рабочая температура микросхем L2-кэша, °C | Мин. рабочая температура пластмассовой крышки (cover) картриджа, °C | Макс. рабочая температура пластмассовой крышки картриджа, °C |
350 МГц | 512 | 21,5 | 5 (PLGA) | 80 (PLGA) | 5 | 105 | 5 | 75 |
400 МГц | 512 | 24,3 | 5 (OLGA) | 90 (OLGA) | 5 | 105 | 5 | 75 |
450 МГц | 512 | 27,1 | 5 (OLGA) | 90 (OLGA) | 5 | 105 | 5 | 75 |
Идентификация процессоров линейки Pentium II.
S-Spec | Core Stepping (Mask) | CPUID | Speed (MHz) Core/Bus | L2 Size (Kbytes) | TagRAM/Stepping | ECC/Non-ECC | Processor Substrate Revision | Package | Примечания |
SL264 | C0 | 0633h | 233/66 | 512 | T6/B0 | non-ECC | D | SECC | 1, 2 |
SL265 | C0 | 0633h | 266/66 | 512 | T6/B0 | non-ECC | D | SECC | 1, 2 |
SL268 | C0 | 0633h | 233/66 | 512 | T6/B0 | ECC | D | SECC | 1, 2 |
SL269 | C0 | 0633h | 266/66 | 512 | T6/B0 | ECC | D | SECC | 1, 2 |
SL28K | C0 | 0633h | 233/66 | 512 | T6/B0 | non-ECC | D | SECC | 1, 2, 3, 9 |
SL28L | C0 | 0633h | 266/66 | 512 | T6/B0 | non-ECC | D | SECC | 1, 2, 3, 9 |
SL28R | C0 | 0633h | 300/66 | 512 | T6/B0 | ECC | D | SECC | 1, 2 |
SL2MZ | C0 | 0633h | 300/66 | 512 | T6/B0 | ECC | D | SECC | 1, 2, 3 |
SL2HA | C1 | 0634h | 300/66 | 512 | T6/B0 | ECC | D | SECC | 1, 2 |
SL2HC | C1 | 0634h | 266/66 | 512 | T6/B0 | non-ECC | D | SECC | 1, 2 |
SL2HD | C1 | 0634h | 233/66 | 512 | T6/B0 | non-ECC | D | SECC | 1, 2 |
SL2HE | C1 | 0634h | 266/66 | 512 | T6/B0 | ECC | D | SECC | 1, 2 |
SL2HF | C1 | 0634h | 233/66 | 512 | T6/B0 | ECC | D | SECC | 1, 2 |
SL2QA | C1 | 0634h | 233/66 | 512 | T6/B0 | non-ECC | D | SECC | 1, 2, 3, 9 |
SL2QB | C1 | 0634h | 266/66 | 512 | T6/B0 | non-ECC | D | SECC | 1, 2, 3, 9 |
SL2QC | C1 | 0634h | 300/66 | 512 | T6/B0 | ECC | D | SECC | 1, 2, 3 |
SL2KA | dA0 | 0650h | 333/66 | 512 | T6P/A3 | ECC | B1 | SECC | 4, 5, 8 |
SL2QF | dA0 | 0650h | 333/66 | 512 | T6P/A3 | ECC | B1 | SECC | 3, 4, 5, 8 |
SL2K9 | dA0 | 0650h | 266/66 | 512 | T6P/A3 | ECC | B1 | SECC | 4, 5, 8 |
SL35V | dA1 | 0651h | 300/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 5, 7, 8 |
SL2QH | dA1 | 0651h | 333/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 5, 7, 8 |
SL2S5 | dA1 | 0651h | 333/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 4, 5, 7, 8 |
SL2S6 | dA1 | 0651h | 350/100 | 512 | T6P-e/A0 | ECC | B1 | SECC | 4, 6, 7, 8 |
SL2S7 | dA0 | 0651h | 400/100 | 512 | T6P-e/A0 | ECC | B1 | SECC | 4, 6, 7, 8 |
SL2SF | dA1 | 0651h | 350/100 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 6, 7, 8 |
SL2SH | dA1 | 0651h | 400/100 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 6, 7, 8 |
SL2VY | dA1 | 0652h | 300/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 6, 7, 8 |
SL33D | dB0 | 0652h | 266/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 5, 7, 8 |
SL2YK | dB0 | 0652h | 300/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 5, 7, 8 |
SL2WY | dB0 | 0652h | 333/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 5, 7, 8 |
SL2WZ | dB0 | 0652h | 350/100 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 6, 7, 8 |
SL2YM | dB0 | 0652h | 400/100 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 6, 7, 8 |
SL2WB | dB0 | 0652h | 450/100 | 512 | T6P-e/A0 | ECC | B1 | SECC | 3, 4, 7, 8, 10 |
SL2W7 | dB0 | 0652h | 266/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 4, 5, 7, 8 |
SL2W8 | dB0 | 0652h | 300/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 4, 5, 7, 8 |
SL2TV | dB0 | 0652h | 333/66 | 512 | T6P-e/A0 | ECC | B1 | SECC | 4, 5, 7, 8 |
SL2U3 | dB0 | 0652h | 350/100 | 512 | T6P-e/A0 | ECC | B1 | SECC | 4, 6, 7, 8 |
SL2U4 | dB0 | 0652h | 350/100 | 512 | T6P-e/A0 | ECC | B0 | SECC | 4, 6, 7, 8 |
SL2U5 | dB0 | 0652h | 400/100 | 512 | T6P-e/A0 | ECC | B1 | SECC | 4, 6, 7, 8 |
SL2U6 | dB0 | 0652h | 400/100 | 512 | T6P-e/A0 | ECC | B0 | SECC | 4, 6, 7, 8 |
SL2U7 | dB0 | 0652h | 450/100 | 512 | T6P-e/A0 | ECC | B0 | SECC | 4, 7, 8, 10 |
SL2KE | dB0 | 1632h | 333/66 | 512 | C6C/A3 | ECC | N/A | PGA | 4, 7, 8, 11 |
SL36U | dB1 | 0652h | 350/100 | 512 | T6P-e/A3 | ECC | B1 | SECC | 7, 8 |
SL38Z | dB1 | 0652h | 400/100 | 512 | T6P-e/A3 | ECC | B1 | SECC | 7, 8 |
Примечания:
Katmai (официальное название - Pentium III) - следующий за Deschutes процессор линейки Pentium II; его выпуск намечен на начало 1999 года. В нем впервые будет использован новый набор команд для обработки 3D графики - KNI (Katmai New Instructions). Существует также другое название KNI, используемое внутри Intel - SSE (Streaming SIMD Extensions). LI-кэш будет иметь размер 64 Кбайт (32 Кбайт для данных + 32 Кбайт для команд), L2-кэш объемом 512 Кбайт будет размещен на одной печатной плате с процессором и работать на половине частоты ядра процессора, разъем - Slot 1.
Katmai сначала будет изготавливаться по 0,25-микронной технологии и иметь тактовую частоту ядра 450/500 МГц при частоте системной шины 100 МГц. К концу 1999 г. планируется выпуск процессоров, изготовленных по 0,18-микронной технологии, с тактовой частотой ядра 533 МГц при частоте системной шины 133 МГц. Частота системной шины в 133 МГц будет поддерживаться в новом чипсете от Intel, который будет ориентирован на применение в системе оперативной памяти типа RAMBUS, поддержку AGP 4x mode и UDMA/66. В старших моделях Katmai объем L2-кэша будет достигать 1 Мбайт или даже 2 Мбайт. Katmai можно будет также использовать в уже имеющихся Slot-1 материнских платах на чипсете i440BX, но после перепрошивки BIOS.
Coppermine
- следующий за Katmai процессор линейки Pentium II, который должен быть выпущен в III квартале 1999 года. Первые версии будут иметь частоту 600 МГц и L2-кэш емкостью 512 Кбайт, работающий на половинной частоте ядра процессора, поддерживать частоту системной шины в 133 МГц, набор инструкций KNI и MMX. Технологический процесс - 0,18 микрон, разъем - Slot 1. Ожидается версия для мобильных компьютеров.
В линейку процессоров Celeron входят процессоры семейств Covington и Mendocino. Рассчитаны на применение в недорогих системах начального уровня.
Covington
- первый процессор линейки Celeron, - появился на рынке в апреле 1998 года. Построен на ядре Deschutes и выпускается по 0,25-микронной технологии. Тактовая частота - 266-300 МГц, частота системной шины - 66 МГц, LI-кэш - 32 Кбайт (16 Кбайт для данных + 16 Кбайт для инструкций). Для уменьшения себестоимости выпускается без L2-кэша и защитного картриджа - в так называемом S.E.P.P. исполнении (Single-Edge Processor Package). Физический интерфейс - Slot 1.
|
|
Mendocino
- следующий за Covington процессор линейки Celeron, выпущен в августе 1998 года. В отличие от своего предшественника, имеет L2-кэш объемом 128 Кбайт, интегрированный на одном кристалле с ядром и работающий на тактовой частоте ядра (!). Технология изготовления - 0,25 микрон. Тактовая частота - 300 (обозначается как "300A", чтобы легче было отличать ее от 300 МГц Covington'а) - 400 Мгц, частота системной шины - 66 Мгц, LI-кэш - 32 Кбайт (16 Кбайт для данных + 16 Кбайт для инструкций).Mendocino может выпускаться как в виде платы под разъем Slot 1 (исполнение "Single-Edge Processor Package"), так и в виде одной микросхемы под новый разъем PGA370 - в PPGA-исполнении (Plastic Pin Grid Array Package). По своему дизайну 370-пиновый разъем PGA370 напоминает разъем Socket 7, а Mendocino в PPGA-исполнении - обычные процессоры Pentium. А вот дизайн печатной платы процессора Mendocino с разъемом Slot 1 идентичен дизайну платы процессора Covington - также с разъемом Slot 1, кроме одной детали: микросхема процессора Mendocino несколько больше микросхемы процессора Covington - видимо, за счет наличия дополнительного L2-кэша, выполненного на одном кристалле с процессором.
|
|
Напряжение/сила тока на ядре процессоров линейки Celeron.
Параметр | Процессор | Частота на ядре процессора | Мин. значение параметра | Номинальное значение параметра | Макс. значение параметра | Единицы измерения |
VссCORE (напряжение на ядре процессора) | 1,9 | 2,00 | 2,1 | Вольт | ||
IссCORE (сила тока на ядре процессора) | Covington | 266 МГц |
|
7,05 | Ампер | |
Covington | 300 МГц |
|
7,89 | - // - | ||
Mendocino | 300A МГц | 9,25 | - // - | |||
Mendocino | 333 МГц |
|
10,13 | - // - |
Мощность тепловыделения и рабочий температурный режим для процессоров линейки Celeron при номинальном значении VссCORE.
Процессор | Частота на ядре процессора | Размер L2-кэша (Кбайт) | Макс. тепловая мощность, рассеиваемая процессором, Ватт | Мин. рабочая температура микросхемы процессора, °C | Макс. рабочая температура микросхемы процессора, °C |
Covington | 266 МГц | 0 | 16,59 | 5 | 85 |
Covington | 300 МГц | 0 | 18,48 | 5 | 85 |
Mendocino | 300A МГц | 128 | 19,05 | 0 | 85 |
Mendocino | 333 МГц | 128 | 20,94 | 0 | 85 |
Идентификация процессоров линейки Celeron.
S-Spec | Core Stepping (Mask) | CPUID | Speed (MHz) Core/Bus | L2 Size (Kbytes) | Package Revision | Примечания |
SL2SY | dA0 | 0650h | 266/66 | 0 | SEPP Rev. 1 | |
SL2YN | dA0 | 0650h | 266/66 | 0 | SEPP Rev. 1 | 1 |
SL2YP | dA0 | 0650h | 300/66 | 0 | SEPP Rev. 1 | |
SL2Z7 | dA0 | 0650h | 300/66 | 0 | SEPP Rev. 1 | 1 |
SL2QG | dA1 | 0651h | 266/66 | 0 | SEPP Rev. 1 | 1 |
SL2TR | dA1 | 0651h | 266/66 | 0 | SEPP Rev. 1 | |
SL2X8 | dA1 | 0651h | 300/66 | 0 | SEPP Rev. 1 | |
SL2Y2 | dA1 | 0651h | 300/66 | 0 | SEPP Rev. 1 | 1 |
SL2Y3 | dB0 | 0652h | 266/66 | 0 | SEPP Rev. 1 | 1 |
SL2Y4 | dB0 | 0652h | 300/66 | 0 | SEPP Rev. 1 | 1 |
SL2WM | mA0 | 0660h | 300A/66 | 128 | SEPP Rev. 1 | |
SL2WN | mA0 | 0660h | 333/66 | 128 | SEPP Rev. 1 | |
SL32A | mA0 | 0660h | 300A/66 | 128 | SEPP Rev. 1 | 1 |
SL32B | mA0 | 0660h | 333/66 | 128 | SEPP Rev. 1 | 1 |
SL35Q | mB0 | 0665h | 300A/66 | 128 | PPGA | 1 |
SL36A | mB0 | 0665h | 300A/66 | 128 | PPGA | |
SL35R | mB0 | 0665h | 333/66 | 128 | PPGA | 1 |
SL36B | mB0 | 0665h | 333/66 | 128 | PPGA | |
SL35S | mB0 | 0665h | 366/66 | 128 | PPGA | 1 |
SL36C | mB0 | 0665h | 366/66 | 128 | PPGA |
Примечания:
Процессоры линейки Xeon позиционируются Intel как CPU для серверов и рабочих станций. В нее входит семейство процессоров Xeon и планируемые к выпуску в будущем семейства процессоров Tanner, Cascades, Willamete и Foster.
Процессор Xeon
- это новая и пока единственная альтернатива процессору Pentium Pro, и кроме того, это первый процессор с разъемом Slot 2. L2-кэш Xeon'а работает на частоте ядра, как и у Pentium Pro, и может иметь объем 512, 1024, 2048 Кбайт, однако, в отличие от своего предшественника, выполнен не на одном кристалле с процессором, а в виде микросхем, расположенных на одной плате с ядром.Xeon построен на ядре Deschutes, производится по 0,25-микронной технологии, поддерживает мультипроцессорные конфигурации (до четырех процессоров) и до 64 Гбайт физической оперативной памяти. Объем LI-кэша - 32 Кбайт (16 Кбайт для данных + 16 Кбайт для инструкций), тактовая частота ядра - 400-450 МГц, системной шины - 100 МГц. Поддерживает SMBus-интерфейс, что дает дополнительные возможности для управления системой. Выпускается в S.E.C.C.-исполнении.
|
Напряжение/сила тока на ядре процессоров линейки Xeon.
Параметр | Частота на ядре процессора | Мин. значение параметра | Номинальное значение параметра | Макс. значение параметра | Единицы измерения |
VссCORE (напряжение на ядре процессора) | 2,00 | Вольт | |||
IссCORE (сила тока на ядре процессора) | 400 МГц |
|
12,5 | Ампер | |
450 МГц |
|
14,0 | - // - |
Напряжение/сила тока на L2-кэше процессоров линейки Xeon.
Параметр | Частота на ядре процессора | Объем L2-кэша | Мин. значение параметра | Номинальное значение параметра | Макс. значение параметра | Единицы измерения |
VссL2 (напряжение на L2-кэше) | 400 МГц | 2,5 | Вольт | |||
450 МГц | 2,7 | - // - | ||||
IссL2 (сила тока на L2-кэше) | 400 МГц | 512 Кбайт |
|
3,0 | Ампер | |
400 МГц | 1 Мбайт | 6,0 | - // - | |||
450 МГц | 512 Кбайт |
|
3,4 | - // - |
Мощность тепловыделения и рабочий температурный режим для процессоров семейства Xeon при номинальных значениях VссCORE и VccL2.
Частота на ядре процессора | Размер L2-кэша | Макс. тепловая мощность, рассеиваемая ядром процессора, Ватт | Макс. тепловая мощность, рассеиваемая L2-кэшом, Ватт | Макс. тепловая мощность, рассеиваемая всей процессорной сборкой, Ватт | Макс. тепловая мощность, рассеиваемая теплоотводной пластиной (thermal plate) картриджа, Ватт | Мин. рабочая температура теплоотводной пластины картриджа, °C | Макс. рабочая температура теплоотводной пластины картриджа, °C | Мин. рабочая температура пластмассовой крышки (cover) картриджа, °C | Макс. рабочая температура пластмассовой крышки картриджа, °C |
400 МГц | 512 Кбайт | 23,3 | 7,5 | 30,8 | 30,8 | 0 | 75 | 0 | 75 |
400 МГц | 1 Мбайт | 23,3 | 15,0 | 38,1 | 38,1 | 0 | 75 | 0 | 75 |
450 МГц | 512 Кбайт | 26,2 | 8,5 | 34,5 | 34,5 | 0 | 75 | 0 | 75 |
Идентификация процессоров линейки Xeon.
S-Spec | Core Stepping (Mask) | CPUID | Speed (MHz) | L2 Size (Kbytes) | GC82459AA (C6C) Stepping | Processor Substrate Revision | Примечания |
SL2NB | B0 | 0652h | 400 | 1024 | A3 | 1M/2M-Pf | 1, 2 |
SL2RH | B0 | 0652h | 400 | 512 | A3 | 512K-Pb | 1, 2 |
SL2XJ | B1 | 0653h | 450 | 512 | B0 | 512K-Oa | 4 |
SL2XK | B1 | 0653h | 450 | 1024 | B0 | 1M/2M-Oa | 4 |
SL2XL | B1 | 0653h | 450 | 2048 | B0 | 1M/2M-Oa | 4 |
SL33T | B1 | 0653h | 450 | 512 | B0 | 512K-oA | 4, 5 |
SL344 | B0 | 0652h | 400 | 512 | A3 | 512K-pB | 1, 2, 3 |
SL345 | B0 | 0652h | 400 | 1024 | A3 | 1M/2M-pF | 1, 2, 3 |
SL34H | B1 | 0653h | 400 | 512 | A3 | 512K-pB | 1, 3 |
SL34J | B1 | 0653h | 400 | 1024 | A3 | 1M/2M-pF | 1, 3 |
SL354 | B1 | 0653h | 450 | 512 | B0 | 512K-oA | 4 |
SL35N | B1 | 0653h | 400 | 512 | A3 | 512K-pB | 1, 3, 5 |
SL35P | B1 | 0653h | 400 | 1024 | A3 | 1M/2M-pF | 1, 3, 5 |
Примечания:
Tanner
- процессор, который должен придти на смену Xeon. Его выпуск запланирован на конец первого квартала 1999 года. Тактовая частота - от 500 МГц, шина - 100/133 МГц, CSRAM-кэш второго уровня, работающий на частоте процессора, объемом 512, 1024 и 2048 Кбайт, LI-кэш - 32 Кбайт, технология - 0,25 микрон, поддержка MMX и KNI, разъем - Slot 2.Cascades
- еще один процессор, который должен сменить Xeon. В отличие от Tanner, его цена планируется не такой высокой за счет меньшего объема L2-кэша - всего 256 Кбайт, который также будет работать на частоте процессора, но зато будет выполнен на одном кристалле с ядром. Разъем - Slot 2. Тактовая частота - от 600 МГц, системная шина - 133 МГц, LI-кэш - 32 Кбайт, технология - 0,18 микрон, поддержка KNI и MMX. Будет ориентирован на рынок PC средней мощности.Foster
- ожидается в конце 2000-го/-начале 2001-го года. Значительно больший, по сравнению с сегодняшним, объем кэш-памяти первого и второго уровней, сначала 0,18-, а потом 0,13-микронный технологический процесс и частоты от 1 ГГц и выше. Будет использовать шину от Merced и иметь разъем Slot M.
Все процессоры линеек Pentium Pro, Pentium II, Celeron и Xeon имеют одинаковую базовую микроархитектуру и по этому признаку относятся к одному большому семейству процессоров P6. Для примера мы рассмотрим микроархитектуру процессоров линейки Pentium II.
Основная отличительная черта микроархитектуры процессоров семейства P6 - использование алгоритмики "динамического выполнения команд" (dynamic execution), которая построена на основе трех базовых концепций: предсказании переходов (branch prediction), динамическом анализе потока данных (dynamic data flow analysis) и спекулятивном выполнении инструкций (speculative execution).
Предсказание переходов - это концепция, которая реализована не только в микроархитектуре процессоров семейства P6, но и в микроархитектуре ряда других высокопроизводительных процессоров (например, процессоров мэйнфреймов). Суть ее заключается в следующем.
На вход процессора поступает поток инструкций для их последующего исполнения. Инструкции поступают в том порядке, в котором они содержатся в коде программы, исполняемой в данный момент процессором. Как только на входе процессора появляется очередная порция инструкций для исполнения, ее содержимое анализируется с целью найти точки ветвления в исполняемом потоке инструкций и предсказать наиболее вероятные пути (ветви), по которым пойдет обработка инструкций после этих точек ветвления. Инструкции, принадлежащие ветвям с наибольшей вероятностью выполнения, тут же ставятся в очередь на исполнение.
Основная идея всех этих манипуляций заключается в том, чтобы заставить процессор выполнить инструкции, которые принадлежат ветвям с наибольшей вероятностью выполнения, "вне очереди" - то есть не дожидаться того момента, когда очередь на выполнение дойдет до этих ветвей естественным образом (согласно порядку поступления инструкций на вход процессора и, соответственно, контексту выполняемой программы), а загрузить эти ветви на выполнение раньше этого момента. Таким образом обеспечивается более полная загрузка и, соответственно, более высокая производительность процессора.
Конечно, такое преждевременное исполнение инструкций может оправдать себя только в том случае, если алгоритм нахождения наиболее вероятных ветвей работает достаточно хорошо. Действительно, если ветвь угадана неверно, то процессору придется исполнить инструкции, принадлежащие как неверно угаданной, так и альтернативной ветви, проделав тем самым двойную работу. Если бы такая ситуация наблюдалась часто, то использование этой методики было бы невыгодно. Судя по тому, что концепция "предсказания переходов" активно используется производителями процессоров, соответствующая алгоритмика развита достаточно хорошо. В процессоре Pentium II за предсказание переходов "отвечает" Fetch/Decode Unit (модуль загрузки/декодирования инструкций).
Динамический анализ потока данных включает в себя выполняемый в режиме реального времени анализ зависимости инструкций от исходных данных и значений регистров процессора, а также определение возможности исполнения и непосредственное исполнение инструкций в порядке, отличном от порядка их первоначальной постановки в очередь на исполнение (out-of-order execution).
Dispatch/Execute Unit (модуль диспетчеризации/исполнения инструкций) процессора Pentium II может одновременно следить за ходом исполнения множества инструкций и выполнять их в таком порядке, который позволяет оптимизировать загрузку вычислительных ресурсов процессора. В это же самое время Dispatch/Execute Unit следит за целостностью данных, над которыми проводятся вычисления.
Выполнение инструкций в порядке, отличном от порядка их постановки в очередь на исполнение (out-of-order execution), позволяет избежать простоя вычислительных ресурсов даже в том случае, когда в LI-кэше нет данных, необходимых для исполнения инструкции, или между инструкциями есть зависимость данных, и зависимая инструкция не может быть исполнена (например, в результате исполнения инструкции "A" получаются данные, которые используются при исполнении инструкции "B"; соответственно, инструкция "B" не может быть исполнена раньше, чем инструкция "A").
Спекулятивное выполнение инструкций - это способность процессора исполнить инструкции в порядке, отличном (как правило, с опережением) от порядка во входном потоке инструкций (что определяется кодом исполняемой программы), но завершить и возвратить (commit) результаты исполнения инструкций в порядке, соответствующем оригинальному входному потоку инструкций.
В процессоре Pentium II спекулятивное выполнение инструкций возможно благодаря тому, что этап "диспетчеризации и выполнения инструкций" (dispatching and executing of instructions) отделен от этапа "завершения и возвращения результатов" (commitment of results).
Используя динамический анализ потока данных, Dispatch/Execute Unit процессора исполняет все инструкции, находящиеся в пуле инструкций (instruction pool) и готовые к исполнению, после чего записывает результаты их исполнения во временные регистры.
В это время Retire Unit (модуль завершения и удаления инструкций) последовательно просматривает пул инструкций и ищет исполненные инструкции, которые не имеют зависящих от них других инструкций, и следовательно, могут считаться исполненными и готовыми к извлечению из пула инструкций. Найденные инструкции извлекаются из пула инструкций в том порядке, в каком они поступили в очередь на исполнение, результаты их исполнения возвращаются (commited) - записываются в оперативную память и/или в IA-регистры (Intel Architecture registers - регистры общего назначения процессора) и регистры данных математического сопроцессора (FPU - floating-point unit)), после чего инструкции удаляются из пула инструкций.
Алгоритмика динамического выполнения команд, включающая предсказание переходов, динамический анализ потока данных и спекулятивное выполнение инструкций, снимает ограничения традиционного "линейного" подхода, при котором весь цикл исполнения состоял из двух этапов - загрузки и выполнения инструкций, а сами инструкции обрабатывались в том порядке, в котором они поступали в очередь на исполнение.
Процессор Pentium II построен на основе семи базовых модулей - Fetch/Decode Unit (модуль загрузки/декодирования инструкций), Dispatch/Execute Unit (модуль диспетчеризации/исполнения инструкций), Retire Unit (модуль завершения и удаления инструкций), Instruction Pool (пул инструкций, его также называют Reorder Buffer - буфер переупорядочивания инструкций), Bus Interface Unit (модуль внешнего интерфейса), LI ICache (LI-кэш для инструкций) и LI DCache (LI-кэш для данных).
|
Fetch/Decode Unit предназначен для приема входного потока инструкций исполняемой программы, поступающего из LI-кэша инструкций, и их последующего декодирования в поток микроопераций (чops).
|
Этот модуль работает следующим образом. Прежде всего, блок Next_IP вычисляет индекс (порядковый номер) инструкции, содержащейся в LI-кэше инструкций, которая должна быть обработана следующей - то есть извлечена из LI-кэша инструкций и передана для последующего декодирования.
Индекс этой инструкции вычисляется блоком Next_IP на основе поступающей в него информации о прерываниях, которые были переданы в процессор для обработки, возможных предсказанных переходах (предсказание выполняется блоком Branch Target Buffer), и сообщениях о неправильно предсказанных переходах (branch-misprediction), которые поступают от целочисленных вычислительных ресурсов, расположенных в модуле Dispatch/Execute Unit. После вычисления индекса следующей обрабатываемой инструкции LI-кэш инструкций извлекает две строки кэшированных данных (cache line) - ту, которая соответствует вычисленному индексу, и следующую за ней, - а затем передает для декодирования извлеченные 16 байт, которые содержат IA-инструкции (Intel Architecture). Начало и конец IA-инструкций маркируются.
Далее маркированный поток байт обрабатывается сразу тремя параллельно работающими декодерами, которые отыскивают в нем IA-инструкции. Каждый декодер преобразует найденную IA-инструкцию в набор триадных микроопераций (чops) - триадных в том смысле, что микрооперация проводится над двумя исходными логическими операндами, а в результате ее выполнения получается только один логический результат. Микрооперация - это примитивная инструкция, которая может быть выполнена одним из вычислительных ресурсов, расположенных в модуле Dispatch/Execute Unit.
Из трех декодеров два - простые, которые могут преобразовывать только IA-инструкций, требующие выполнения одной микрооперации, а третий декодер - более совершенный; он может преобразовывать IA-инструкции, требующие выполнения от одной до четырех микроопераций. Таким образом, за один такт работы процессора все три декодера могут в сумме сгенерировать максимум шесть микроопераций. Для преобразования еще более сложных IA-инструкций используется микрокод, который содержится в блоке Microcode Instruction Sequencer и представляет собой набор предварительно запрограммированных последовательностей обычных микроопераций.
Полученные таким образом микрооперации передаются в блок Register Alias Table Allocate, где все содержащиеся в микрооперациях адреса IA-регистров преобразуются в адреса внутренних физических регистров процессора семейства P6 - тем самым IA-архитектура и P6-архитекура оказываются развязанными. Это существенно увеличивает возможности работы процессора при вычислениях, так как, во-первых, отпадает необходимость следить за целостностью содержимого IA-регистров при исполнении инструкций, во-вторых, адресное пространство перестает быть ограниченным возможностями IA-архитектуры и может быть значительно расширено, что приводит к росту скорости вычислений, и, в-третьих, такая переадресация обеспечивает возможность спекулятивного исполнения инструкций - далее все вычисления ведутся во внутренней P6-архитектуре процессора, а IA-архитектура снова появляется "на сцене" только на этапе завершения инструкций в модуле Retire Unit.
На этом же этапе к каждой микрооперации как информационной единице добавляются флаги состояния, в которые записывается информация об ее статусе. После этого микрооперации передаются в пул инструкций.
Instruction Pool (Reorder Buffer). Основное назначение этого модуля - предоставить возможность исполнения микроопераций в произвольном порядке; в том числе, отличном от порядка их генерации.
В тот момент, когда микрооперации попадают в пул инструкций, порядок их следования в потоке соответствует тому порядку, в котором они были сгенерированы в результате декодирования IA-инструкций, поступивших на вход модуля Fetch/Decode Unit, - никакого изменения порядка следования пока не произошло. Пул инструкций представляет собой последовательный массив инструкций; при этом любая из этих инструкций может быть в любой момент времени обработана модулем Dispatch/Execute Unit или Retire Unit - то есть порядок обработки инструкций может быть произвольным и не зависит от первоначального порядка, в котором инструкции поступили в пул. Именно поэтому пул инструкций иногда называют еще буфером переупорядочивания инструкций (Reorder Buffer).
Dispatch/Execute Unit. Этот модуль проверяет состояние микроопераций, содержащихся в пуле инструкций, исполняет их, если есть такая возможность, и записывает полученные результаты обратно в пул инструкций.
|
Reservation Station - основной управляющий блок модуля Dispatch/Execute Unit. Именно он планирует порядок исполнения и занимается диспетчеризацией (распределением между вычислительными ресурсами) микроопераций. Этот блок последовательно просматривает пул инструкций в поисках микроопераций, которые готовы к исполнению - таковыми считаются микрооперации, у которых готовы (т.е. вычислены/загружены) исходные операнды, - и передает (распределяет, диспетчеризует) их на исполнение свободным вычислительными ресурсам, которые могут исполнить микрооперацию. Результаты исполнения микрооперации записываются в пул инструкций и хранятся там вместе с самой микрооперацией до тех пор, пока последняя не будет завершена - этим занимается уже модуль Retire Unit.
Следует подчеркнуть, что жесткого, заранее предопределенного порядка исполнения микроопераций не существует - они исполняются сразу же, как только бывают готовы их операнды и свободен соответствующий вычислительный ресурс. В том случае, если одному и тому же ресурсу может быть одновременно передано на исполнение более одной микрооперации, последние исполняются по принципу псевдо-FIFO (First In First Out) - первой исполняется та микрооперация, которая раньше попала в пул инструкций.
Reservation Station имеет пять портов, через которые организуется обмен данными с пятью вычислительными ресурсами. Поэтому Dispatch/Execute Unit может за один такт исполнить максимум пять микроопераций. Однако при реальной работе с постоянной равномерной нагрузкой на процессор наиболее типична ситуация, когда за один такт исполняется три микрооперации.
Retire Unit - модуль, который знает как и когда завершить (commit) временные внутренние спекулятивные вычисления, выполненные в P6-архитектуре, преобразовать их и вернуть окончательный результат в IA-архитектуре.
Retire Unit постоянно сканирует содержимое пула инструкций и проверяет статус хранящихся в нем микроопераций. Как только находится исполненная и готовая к удалению из пула микрооперация, Retire Unit преобразует результаты ее исполнения, хранящиеся во внутреннем представлении процессора (то есть во внутренних регистрах, в контексте P6-архитектуры), к представлению в IA-архитектуре и записывает результат исполнения в опертивную память и/или в IA-регистры. После этого микрооперация удаляется из пула инструкций.
Тонкость этой процедуры заключается в том, что результаты исполнения микроопераций должны быть возвращены в контексте IA-архитектуры в том же порядке, в каком эти микрооперации были сгенерированы в модуле Fetch/Decode Unit при декодировании входного потока инструкций исполняемой программы.
Ситуация усложняется еще тем, что все это происходит на фоне непрекращающегося потока всевозможных прерываний, точек останова, ошибок предсказания переходов, а также внештатных ситуаций в работе процессора, которые нужно успевать обрабатывать.
Retire Unit процессора Pentium II способен завершить и удалить до трех микроопераций за один такт работы процессора.
Bus Interface Unit. Этот модуль отвечает за обмен данными между LI-кэшом инструкций, LI-кэшом данных, системной шиной и L2-кэшом.
Прежде всего, следует сказать несколько слов об идентификации процессоров AMD. Все современные x86-процессоры поддерживают инструкцию CPUID, входящую в стандартный набор x86-инструкций, и процессоры AMD не стали исключением из этого правила. Идентификатор CPUID процессоров AMD - это усеченный вариант идентификатора CPUID для процессоров Intel. Все отличие заключается в том, что отброшены два старших бита - 12 и 13, в которых у процессоров Intel хранится значение поля Type, которого нет у процессоров AMD. Таким образом, идентификатор CPUID процессоров AMD представляет собой 12-битное число, состоящее из трех полей: Instruction Family - четыре старших бита с 8 по 11 (аналогично Family для Intel), Model - четыре бита с 4 по 7 (аналогично Model для Intel) и Stepping - четыре младших бита с 0 по 3 (аналогично Stepping для Intel). CPUID процессоров AMD можно определить с помощью программы CPUID от AMD (http://www.amd.com/K6/k6docs/cpuidfls.exe). С того же www-сайта можно скачать еще одну полезную программу - CPUSPEED (http://www.amd.com/K6/k6docs/cpuspd4.exe), которая позволяет узнать реальную рабочую частоту ядра процессора AMD.
CPUID процессоров производства AMD в двоичной (xxxxb) и шестнадцатеричной (xh) системе исчисления.
Процессоры | Instruction Family | Model | Stepping |
Am486 и Am5X86 | 0100b (4h) | yyyy1 | xxxx |
AMD-K5 Model 0 | 0101b (5h) | 0000b (0h) | xxxx |
AMD-K5 Model 1 | 0101b (5h) | 0001b (1h) | xxxx |
AMD-K5 Model 2 | 0101b (5h) | 0010b (2h) | xxxx |
AMD-K5 Model 3 | 0101b (5h) | 0011b (3h) | xxxx |
AMD-K6 Model 6 | 0101b (5h) | 0110b (6h) | xxxx |
AMD-K6 Model 7 | 0101b (5h) | 0111b (7h) | xxxx |
AMD-K6-2 Model 8 | 0101b (5h) | 1000b (8h) | xxxx |
AMD-K6 Model 9 | 0101b (5h) | 1001b (9h) | xxxx |
Примечания:
Компания AMD всегда была и по сей день остается главным соперником Intel на рынке процессоров с x86-архитектурой. На сегодняшний день AMD выпускает процессоры двух семейств с x86-архитектурой - AMD-K6 и AMD-K6-2.
AMD-K6 появился на рынке в апреле 1997 г. - это был первый процессор шестого поколения от AMD, который составил достойную конкуренцию Intel Pentium MMX. AMD-K6 имеет LI-кэш объемом 64 Кбайт (32 Кбайт для инструкций + 32 Кбайт для данных), поддерживает набор MMX-инструкций и частоту системной шины в 66 МГц. Поддерживаемый L2-кэш - внешний, устанавливается на материнской плате и работает на частоте системной шины. Процессор выполняется в виде одной микросхемы в CPGA-упаковке (Ceramic Pin Grid Array), которая имеет 321 контактную ножку и совместима с разъемом Socket 7.
Первые процессоры AMD-K6 изготавливались по 0,35-микронной технологии - это было семейство процессоров AMD-K6 Model 6 с CPUID = 56xh. Напряжение на ядре (core voltage) у этих процессоров было равно 2,9 В (что соответствовало частоте на ядре в 166 МГц или 200 МГц), или 3,2 B (что соответствовало частоте на ядре в 233 МГц), а входное напряжение (I/O voltage) у всех моделей было одинаковое - 3,3 В.
Более поздние модели AMD-K6 стали изготавливать по 0,25-микронной технологии - семейство процессоров AMD-K6 Model 7 с CPUID = 57xh. Это позволило снизить напряжение на ядре до 2,2 В, которое теперь остается неизменным во всем диапазоне возможных рабочих частот 0,25-микронного ядра - 200, 233, 266, 300 МГц. А вот входное напряжение не изменилось и по-прежнему равно 3,3 В.
AMD-K6-2 стал дальнейшим развитием линейки процессоров AMD шестого поколения (семейство процессоров AMD-K6-2 Model 8 с CPUID = 58xh). Он был анонсирован в конце мая 1998 г. и позиционируется как альтернатива процессорам линеек Intel Pentium II и Intel Celeron.
Как и его предшественник, он имеет LI-кэш объемом 64 Кбайт (32 Кбайт для инструкций + 32 Кбайт для данных), поддерживает внешний L2-кэш - работает на частоте системной шины, набор MMX-инструкций, выполняется в виде CPGA-микросхемы под разъем Socket 7. Изготавливается по 0,25-микронной технологии, напряжение на ядре процессора - 2,2 В, входное напряжение - 3,3 В. AMD-K6-2 поддерживает технологию 3DNow!, частоты системной шины в 66/95/100 МГц, тактовые частоты ядра в 233/266/300/333/350/366/380/400 МГц и совместим с платформами Super7 и Socket 7.
|
|
Маркировка процессоров AMD-K6-2. Маркировка, наносимая на микросхему процессоров AMD-K6-2, бывает двух типов. Причиной тому послужила путаница в названиях одного и того же процессора. Дело в том, что новый оригинальный набор инструкций процессора от AMD, позволяющий увеличить производительность системы при работе с 3D-графикой, имел рабочее название "AMD-3D". А новый процессор, в котором планировалось впервые реализовать этот набор инструкций, получил рабочее название "AMD-K6 3D". Однако, впоследствии рабочее название "AMD-3D" изменили на всем хорошо известное маркетинговое "3DNow!", а "AMD-K6 3D" - на "AMD-K6-2". Вот и получилось, что один и тот же процессор был сначала известен под именем "AMD-K6 3D", а потом под именем "AMD-K6-2". Так появилось два названия и два типа маркировки одного и того же процессора.
Первоначально содержательная часть маркировки процессора с рабочим названием "AMD-K6 3D" выглядела следующим образом:
AMD-K6O
AMD-K6 3D/xxxpvt
v.vV CORE/3.3V I/O
R AAAAAAA
xxxMHz
С появлением процессора на рынке и "вводом в эксплуатацию" его маркетингового названия "AMD-K6-2" маркировка изменилась:
AMD-K6O -2
AMD-K6-2/xxxpvt
v.vV CORE/3.3V I/O
R AAAAAAA
xxxMHz
Отдельные элементы маркировки расшифровываются следующим образом:
|
Несомненно, самая важная информация заключена в элементе со структурой "AMD-K6 3D/xxxpvt" или "AMD-K6-2/xxxpvt", который в рабочей терминологии AMD имеет название "Ordering Part Number" (OPN). В качестве справочной информации мы приводим значения OPN для выпускавшихся ранее процессоров AMD-K6 3D: AMD-K6 3D/233AFR, AMD-K6 3D/250AFR, AMD-K6 3D/266AFR, AMD-K6 3D/300AFR, AMD-K6 3D/333AFR; а также для выпускавшихся/выпускающихся процессоров AMD-K6-2: AMD-K6-2/233AFR, AMD-K6-2/266AFR, AMD-K6-2/300AFR, AMD-K6-2/333AFR, AMD-K6-2/350AFR, AMD-K6-2/366AFR, AMD-K6-2/380AFR, AMD-K6-2/400AFQ.
Допустимые рабочие напряжения и температура (TCASE) процессора AMD-K6-2.
Параметр | Минимальное значение параметра | Номинальное значение параметра | Максимальное значение параметра | Примечание |
VCC2 (напряжение на ядре процессора) | 2,1 В | 2,2 В | 2,3 В | |
VCC3 (входное напряжение) | 3,135 В | 3,30 В | 3,6 В | |
TCASE (температура корпуса микросхемы при работе процессора) | 0°C | 70°C | 2 | |
0°C | 60°C | 3 |
Примечания:
Максимально допустимые напряжения и температуры (TCASE и TSTORAGE) процессора AMD-K6-2.
Параметр | Минимальное значение параметра | Максимальное значение параметра | Примечание |
VCC2 (напряжение на ядре процессора) | -0,5 В | 2,5 В | |
VCC3 (входное напряжение) | -0,5 В | 3,6 В | |
TCASE (температура корпуса микросхемы при работе процессора) | -65°C | +110°C | 2 |
TSTORAGE (температура корпуса микросхемы при хранении) | -65°C | +150°C | 3 |
Примечания:
Максимальное значения силы входного тока и силы тока на ядре процессора AMD-K6-2.
Частота на ядре процессора | Частота на системной шине | Максимальное значение ICC2 (силы тока на ядре процессора) | Максимальное значение ICC3 (силы входного тока) |
233 Мгц | 66 Мгц | 6,50 А | 0,52 А |
266 Мгц | 66 Мгц | 7,35 А | 0,54 А |
300 Мгц | 66/100 Мгц | 8,45 А | 0,56 А |
333 Мгц | 66/95 Мгц | 9,40 А | 0,58 А |
350 Мгц | 100 Мгц | 9,85 А | 0,60 А |
366 Мгц | 66 Мгц | 10,30 А | 0,60 А |
380 Мгц | 95 Мгц | 10,70 А | 0,61 А |
400 Мгц | 66/100 Мгц | 11,25 А | 0,62 А |
Примечания:
Номинальная и максимальная тепловая мощность, рассеиваемая процессором AMD-K6-2 при различных режимах энергопотребления процессора.
Режим энергопотребления процессора (Clock Control State) / Измеряемая мощность | Частота ядра процессора / Частота системной шины | Примечания | |||||||
233
МГц / 66 МГц |
266
МГц / 66 МГц |
300
МГц / 66/100 МГц |
333
МГц / 66/95 МГц |
350
МГц / 100 МГц |
366
МГц / 66 МГц |
380
МГц / 95 МГц |
400
МГц / 66/100 МГц |
||
Normal / Максимальная | 13,50 Вт | 14,70 Вт | 17,20 Вт | 19,00 Вт | 19,95 Вт | 20,80 Вт | 21,60 Вт | 22,70 Вт | 1 |
Normal / Номинальная | 8,10 Вт | 8,85 Вт | 10,35 Вт | 11,40 Вт | 11,98 Вт | 12,48 Вт | 12,95 Вт | 13,65 Вт | 2 |
(Stop Grant / Halt) / Максимальная | 2,46 Вт | 2,48 Вт | 2,50 Вт | 2,52 Вт | 2,54 Вт | 2,54 Вт | 2,55 Вт | 2,56 Вт | |
Stop Clock / Максимальная | 2,25 Вт | 2,25 Вт | 2,25 Вт | 2,25 Вт | 2,25 Вт | 2,25 Вт | 2,25 Вт | 2,25 Вт |
Примечания:
В процессоре AMD-K6-2 реализована так называемая "Enhanced RISC86"-микроархитектура. RISC - это аббревиатура от Reduced Instruction Set Computing ("вычисления с сокращенным набором команд"). RISC-процессор обладает меньшим числом команд фиксированной длины. Упрощенная структура позволяет RISC-процессору развивать более высокую скорость. Типичные представители RISC-процессоров - Alpha от DEC, SPARC от SUN, PowerPC от IBM. В противоположность этому CISC - сокращение от Complex Instruction Set Computing ("вычисления со сложным набором команд"). Все члены семейства х86 - типичные представители CISC-процессоров со сложными, но удобными наборами команд.
Что касается AMD-K6-2, то речь в данном случае идет об объединенной архитектуре на основе преобразования х86-команд в более простые в обращении RISC-инструкции. Основная ее особенность состоит в том, что внешние x86-инструкции, поступающие на обработку в процессор, преобразуются во внутренние RISC86-инструкции, которые и исполняются процессором. Вместо того, чтобы напрямую исполнять сложные x86-инструкции с переменной длиной от 1 до 15 байт, процессор обрабатывает поток простых RISC86-инструкций фиксированной длины.
В состав процессора AMD-K6-2 входят несколько основных модулей: LI-кэш данных (Level-One Dual Port Data Cache), LI-кэш инструкций (Level-One Instruction Cache) с кэшем предварительного декодирования (Predecode Cache), модуль декодирования (Multiple Instruction Decoders), центральный планировщик (Centralized RISC86 Operation Scheduler), вычислительные блоки (Execution Units) и модуль предсказания переходов (Branch Logic).
|
LI-кэш инструкций и данных, предварительное декодирование. LI-кэш состоит из двух независимых блоков: LI-кэша данных (Level-One Dual Port Data Cache) и LI-кэша инструкций (Level-One Instruction Cache) с кэшем предварительного декодирования (Predecode Cache). LI-кэш данных предназначен только для хранения данных и имеет объем 32 Кбайт. Несколько сложнее обстоит дело с LI-кэшем инструкций: наряду с инструкциями, для хранения которых предназначены 32 Кбайт памяти, в нем хранятся так называемые "биты преддекодирования" (predecode bits) - для них отведено 20 Кбайт памяти. Дело в том, что после загрузки инструкции в LI-кэш инструкций выполняется ее предварительное декодирование (predecoding) - к каждому байту инструкции добавляется пять бит (из этого и следует соотношение 32 Кбайт/20 Кбайт = 8/5), в которые записывается информация о количестве байт, оставшихся до начала следующей инструкции. Эта информация используется на этапе декодирования x86-инструкций в RISC86-инструкции. После того, как LI-кэш инструкций полностью заполнится данными, инструкции вместе с преддекодированными битами передаются в буфер инструкций (Instruction Buffer).
Модуль декодирования (Multiple Instruction Decoders). Модуль декодирования извлекает x86-инструкции (до 16 байт данных с инструкциями за один такт) с битами преддекодирования из буфера инструкций (Instruction Buffer), определяет границы инструкций и преобразует их в RISC86-инструкции. Непосредственно преобразованием занимаются четыре декодера: два для декодирования простых (Short Decoder #1, Short Decoder #2) и два для декодирования сложных x86-инструкций (Long Decoder, Vector Decoder). Одновременно могут работать либо два декодера Short Decoder #1 и Short Decoder #2, либо декодер Long Decoder, либо декодер Vector Decoder.
|
Два декодера Short Decoder #1 и Short Decoder #2 работают параллельно и обрабатывают наиболее часто используемые x86-инструкции - move, shift, branch, ALU, FPU, а также инструкции из наборов команд MMX и 3DNow!. Декодеры Short Decoder #1 и Short Decoder #2 обрабатывают только часто используемые (most commonly-used) x86-инструкции длиной не более семи байт. Каждый может преобразовать только одну такую x86-инструкцию и сгенерировать 0 (например, при обработке x86-инструкции NOP), одну или две RISC86-инструкции за такт. Таким образом, за один такт оба декодера могут сгенерировать до 4 RICS86-инструкций.
Редко используемые инструкции (semi-commonly-used) длиной до семи байт и обычные инструкции (commonly-used) с длиной большей семи байт, но меньшей или равной 11 байтам обрабатываются декодером Long Decoder, который может декодировать только одну такую x86-инструкцию и сгенерировать до 4 RISC86-инструкций за такт.
Все остальные преобразования (более сложные инструкции, прерывания, и.т.д.) выполняются декодером Vector Decoder. В этом случае Vector Decoder генерирует набор первых RISC86-инструкций и адрес заранее предопределенного набора последующих инструкций, который хранится в ROM-памяти (On-Chip ROM) и извлекается блоком RISC86 Sequencer.
Все наборы RISC86-операций, генерируемые декодерами и извлекаемые из On-Chip ROM всегда (!) состоят из групп, содержащих по четыре RISC86-операции. В том случае, если их получилось меньше, недостающее количество заполняется пустыми RISC86-инструкциями NOP. Например, если Long Decoder преобразовал x86-инструкцию в три RISC86-инструкции, то к ней добавляется одна RISC86-инструкция NOP. Получившийся поток из таких групп поступает в буфер планировщика (Scheduler Buffer) - за один такт всегда передается группа из четырех RISC86-операций.
Центральный планировщик (Centralized RISC86 Operation Scheduler). Планировщик - это сердце процессора AMD-K6-2. Он следит за процессом исполнения RISC86-инструкций, приведением результата их исполнения к x86-архитектуре, а также возвращением результатов спекулятивного выполнения x86-инструкций в соответствии с их порядком поступления на вход процессора.
|
В буфере планировщика может одновременно содержаться до 24 RISC86-инструкций. Любая из них может быть в любой момент передана на исполнение соответствующему вычислительному блоку (store, load, branch, register X integer/multimedia, register Y integer/multimedia, floating-point), если, конечно, последний свободен. Таким образом, реализуется исполнение инструкций в порядке, отличном от порядка их поступления в буфер (out-of-order execution). В общей сложности планировщик может передать на выполнение шесть и завершить (retire) также шесть RISC86-инструкций за такт.
Вычислительные блоки (Execution Units). Процессор AMD-K6-2 содержит 10 параллельных вычислительных блоков - Store Unit, Load Unit, Integer X ALU, Integer Y ALU, MMX ALU (X), MMX ALU (Y), MMX/3DNow! Multiplier, 3DNow! ALU, FPU и Branch Unit. Каждый блок работает независимо от остальных, так что несколько блоков могут обрабатывать переданные им на исполнение RISC86-инструкции одновременно.
|
Integer, MMX- и 3DNow!-инструкции передаются по двум независимым шинам - Register X Issue Bus и Register Y Issue Bus. При этом блоки Integer X ALU и MMX ALU (X) подключены только к шине Register X Issue Bus, а Integer Y ALU и MMX ALU (Y) - только к шине Register Y Issue Bus. А вот блоки MMX/3DNow! Multiplier и 3DNow! ALU подключены сразу к обеим шинам, как и блок MMX Shifter, функция которого заключается в том, чтобы переключать блоки MMX/3DNow! Multiplier и 3DNow! ALU между шинами.
Модуль предсказания переходов (Branch Logic). Назначение этого модуля, как следует из его названия, состоит в предсказании возможных переходов.
До недавнего времени развитие x86-процессоров шло по экстенсивному пути - их производительность наращивалась за счет увеличения тактовой частоты и разрядности шины. При таком подходе затраты на производство процессоров росли быстрее, чем их производительность, - из-за все время ужесточающихся требований к технологическому процессу и большого процента отбраковки кристаллов при их производстве. Очень скоро стало ясно, что экстенсивный путь развития себя исчерпал, и пришло время "интеллектуальных" решений. Одним из них стала предложенная Intel технология MMX.
Ни для кого не секрет, что максимальная производительность требуется от процессора в основном в задачах, связанных с обработкой звуковой и видеоинформации, причем достаточно большая часть процесса обработки данных в таких программах сводится к выполнению специфических наборов операций с целыми числами. Эти наборы команд были выделены в отдельные самостоятельные инструкции, исполняемые процессором, - так появилась технология MMX (MultiMedia eXtentions). Набор MMX-команд состоит из 57 дополнительных инструкций процессора, предназначенных для быстрой обработки целочисленных операндов. Первоначально расширение MMX было реализовано в процессорах фирмы Intel, но к настоящему моменту все x86-процессоры, включая разработанные AMD, IDT и Cyrix, поддерживают его.
Практически все команды MMX относятся к типу SIMD (Single Instruction - Many Data, одна команда на обработку нескольких наборов данных), и могут быть выполнены только в специальном режиме работы процессора, в который он переключается из обычного режима работы. В MMX-режиме регистры математического сопроцессора используются для хранения данных MMX-команд. Такой подход гарантирует совместимость с операционными системами, которые не поддерживают MMX напрямую. Однако каждый переход из одного режима в другой "съедает" несколько десятков тактов процессора, который в это время занимается загрузкой/выгрузкой данных в/из регистров математического сопроцессора и другой подготовительной работой по переключению режима. Поэтому, если переключение режимов будет происходить часто - например, в многозадачной ОС при нескольких запущенных приложениях, часть которых использует MMX-команды, а часть - обычные команды математического сопроцессора с операндами с плавающей точкой, - то эффективность работы процессора значительно снизится.
MMX-команды позволяют значительно ускорить обработку только целочисленных данных и никак не используются при вычислениях с плавающей точкой. Но именно последние активно используются в 3D-приложениях, при выполнении которых загрузка процессора максимальна. Чтобы лучше понять суть проблемы, стоит более подробно рассмотреть процесс формирования компьютером 3D-изображения.
В формировании 3D-изображения участвуют два важнейших компонента компьютера - центральный процессор и графический адаптер, каждый из которых отвечает за свою часть вычислений. Процесс формирования 3D-изображения состоит из четырех этапов.Первый этап - это физическое моделирование. Каждый объект описывается в виртуальном математическом пространстве. Важно заметить, что на этом этапе не учитывается взаимное перекрытие объектов, поскольку еще не определена точка взгляда (положение наблюдателя). Каждый объект существует как бы сам по себе - в своем пространстве и в своей системе координат - и описывается строгими математическими формулами. В виде объектов просчитывается всё - все поверхности (стены, потолки, небо, земля и т.д.) и все действующие лица (люди, машины и и т.д.). Этот этап требует от процессора особенно интенсивных вычислений с плавающей точкой, поэтому он обычно выполняется центральным процессором системы.
Второй этап - геометрическое моделирование. На этом этапе все объекты собираются в едином виртуальном пространстве - единой системе координат. При этом учитывается взаимодействие объектов, формируются геометрические поверхности, рассчитывается освещенность каждого объекта. Именно на этом этапе из проволочной модели объектов формируются объемные поверхности, состоящие из треугольников. Так, шар превращается в набор треугольников, которые в совокупности выглядят как шар. Одновременно с этим происходит "клиппинг" - усечение частей объектов, скрытых другими объектами. Этот этап обработки также требует интенсивных вычислений с плавающей запятой, поэтому он тоже обычно производится центральным процессором.
Третий этап - треугольное проецирование. На этом этапе происходит перевод объемного виртуального мира в мир взгляда из одной точки. При этом активно используются вычисления как с целыми числами, так и с плавающей запятой. Обычно этот этап вычислений производится центральным процессором, однако некоторые наиболее "продвинутые" 3D-ускорители уже берут эту часть вычислений на себя.
И последняя операция - рендеринг. Именно во время рендеринга попиксельно вычисляется освещенность и цвет каждой точки изображения. В этот же момент происходит "натягивание" реалистичных текстур на объекты, что и позволяет получать настоящее трехмерное изображение. Для этого этапа характерны большие объемы целочисленных вычислений. Первоначально предполагалось, что MMX-инструкции центрального процессора будут использоваться именно на этапе рендеринга, но в последнее время целочисленные вычисления на этом этапе выполняются графическим ускорителем.
Таким образом, при работе с 3D-графикой наиболее емкими по вычислительным затратам являются не реализованные в MMX операции по обработке целочисленных данных, а операции с плавающей запятой. Более того, возможности современных графических ускорителей выросли настолько, что они берут на себя большую часть обработки целочисленных данных во время работы с 3D-графикой, а их специализированные чипы стали справляться с этой задачей значительно лучше, чем центральный процессор. В конце концов, "узким горлышком" всей системы при работе с 3D-графикой стала низкая скорость вычислений с плавающей запятой, выполняемых центральным процессором.
Для решения этой проблемы был предложен способ, аналогичный использованному при разработке технологии MMX. Поскольку обычно расчеты сводятся к однотипной обработке больших объемов однотипных же данных, то один из способов значительной экономии процессорного времени - создание таких инструкций процессора, при исполнении которых производится сразу несколько операций по обработке однотипных данных. Для целочисленных данных с этой целью был разработан набор MMX-инструкций (практически все они относятся к типу SIMD). Теперь надо было решить эту же проблему для чисел с плавающей запятой. Именно такое решение и предложила фирма AMD, разработав новую технологию 3DNow!, которая построена на основе набора SIMD-команд для вычислений с плавающей запятой.
Технология 3DNow! имеет две интересные особенности. Первая из них - уменьшение точности производимых вычислений. При расчете выводимых на экран пикселов нет никакой необходимости производить вычисления с высокой точностью. Так что принудительным образом ограничив точность 14 битами (по сравнению с 24-32 битами в традиционных вычислениях), можно получить значительное увеличение скорости расчетов (до трех тактов процессора по сравнению с 30 тактами для обычных команд, например, деления) при снижении точности, несущественном для данного типа вычислений. Вторая особенность - параллельное выполнение инструкций, то есть одновременно могут выполняться две инструкции из набора 3DNow!. В результате этих нововведений фирма AMD добилась весьма высоких результатов, нашедших свое отражение в первом чипе серии 3DNow! - процессоре AMD-K6-2.
Процессор AMD-K6-2 стал несомненным успехом AMD. Однако всем ясно, что компания не собирается останавливаться на достигнутом. В самое ближайшее время (в начале 1999 г.) планируется к выходу AMD-K6-3, а за ним и AMD-K7 (ближе к середине года).
AMD-K6-3. Сначала будет изготавливаться по 0,25-микронной технологии и иметь частоту ядра 400 МГц. В дальнейшем ожидается выпуск модификаций с частотой ядра 450 МГц и 500 МГц, изготовленных по 0,18-микронной технологии. Будет иметь интегрированный L2-кэш объемом 256 Кбайт, выполненный на одном кристалле с ядром процессора и работающий на частоте ядра (как у Intel Mendocino), поддерживать частоту системной шины в 100 МГц, разъем Socket 7 и платформу Super Socket 7. Так как AMD-К6-3 будет полностью совместим со стандартом Super Socket 7, то L2-кэш, который находится на материнской плате, теперь уже станет L3-кэшем, что тоже должно способствовать дополнительному увеличению производительности.
AMD-K7. Первая версия этого процессора будет изготавливаться по 0,25-микронной технологии, иметь частоту ядра 500 МГц и внешний L2-кэш емкостью 512 Кбайт, работающий на 1/3 частоты ядра процессора. В 2000 г. ожидается появление AMD-K7, работающего на частоте 1000 МГц (1 ГГц), производимого по 0,18-микронному технологическому процессу с использованием медных соединений и имеющего L2-кэш емкостью от 512 Кбайт (интегрирован на кристалле с процессором) до 8 Мбайт (внешний), работающий на частотах от 1/3 до полной частоты ядра. LI-кэш будет емкостью 128 Кбайт (64 Кбайт для данных + 64 Кб для инструкций).
Процессор будет рассчитан на конструктив Slot A и будет использовать 200 МГц системную шину EV-6, разработанную DEC и применяемую в системах с процессором Alpha. Сначала предполагается использовать 100 МГц SDRAM-память, а позже - 200 МГц Direct RDRAM. Будет, естественно, поддерживаться 3DNow!, а также многопроцессорность.
Cyrix 6x86 (кодовое название M1) был первым Pentium-совместимым процессором, разработанным компанией Cyrix. Он появился на рынке в феврале 1996 г., имел LI-кэш объемом 16 Кбайт и изготавливался по 0,65-микронной технологии. У процессора Cyrix 6x86 было только одно напряжение питания, равное 3,52 В, - то есть на входе процессора и на его ядре было одинаковое напряжение в 3,52 В. Впоследствии, продолжая развивать линейку процессоров Cyrix 6x86, компания-производитель выпустила две модификации базовой модели: Cyrix 6x86L и Cyrix 6x86LV, которые изготавливались уже по 0,35-микронной технологии и имели два разных напряжения питания - входное и на ядре процессора. Для Cyrix 6x86L входное напряжение было равно 3,3 В, а напряжение на ядре процессора - 2,8 В, а для Cyrix 6x86LV - 3,3 В и 2,45 В соответственно. Все процессоры линейки Cyrix 6x86 изготавливались под разъем Socket 5 или Socket 7, а также имели PR-рейтинг от PR90+ - в том случае, когда частота на системной шине была равна 40 МГц, а частота на ядре процессора - 80 МГц, до PR200+ - соответсвенно 75 МГц и 150 МГц.
PR-рейтинг. Доминирующее положение Intel на рынке 586-х процессоров способствовало тому, что тактовая частота, используемая Pentium, фактически легла в основу классификации производительности всех 586-x процессоров. В этой ситуации IBM, Cyrix, SGS Thomson и AMD совместно разработали стандарт для измерения реальной производительности процессоров, независимо от изготовителя, тактовой частоты ядра и системной шины или архитектуры процессора.
Эта концепция, получившая название "PR-рейтинг" (Performance Rating - PR), исходила из того, что пользователю в конечном счете важна полезная практическая мощность процессора, и базировалась на тесте Winstone 96 Ziff Davis Benchmark. PR-рейтинг любого процессора был равен величине тактовой частоты процессора Intel Pentium, показавшего такой же или менее высокий результат при прохождении тестов и набора Winstone 96 в абсолютно идентичной конфигурации ПК.
Таким образом, каждому кристаллу AMD-K5 или Cyrix 6х86 присуждался PR-рейтинг, который не случайно совпадал с величиной тактовой частоты соответствующего процессора Intel Pentium. Если показатель производительности находился в промежутке между двумя величинами тактовой частоты Intel Pentium, то избиралась более низкая величина - то есть производительность скорее преуменьшалась, чем преувеличивалась. Выигрыш для пользователя - это понятное и поддающееся проверке утверждение о том, что, например, "кристалл AMD-K5-PR133 обладает по меньшей мере таким же быстродействием, что и Intel Pentium с тактовой частотой 133 МГц". Следует обратить внимание на то, что в этом примере ничего не говорится о тактовой частоте AMD-K5, которая, вообще говоря, не обязана быть равной 133 МГц. Соответственно, тактовая частота кристалла Cyrix 6x86-PR200+ равнялась не 200 МГц, а 150 МГц.
Рабочая частота ядра, коэффициент умножения, рабочая частота системной шины и их соответствие PR-рейтингу для процессоров линейки Cyrix 6x86 .
Процессор | Частота ядра | Коэффициент умножения | Частота системной шины |
Cyrix6x86-PR90+ | 80 | 2x | 40 |
Cyrix6x86-PR120+ | 100 | 2x | 50 |
Cyrix6x86-PR133+ | 110 | 2x | 55 |
Cyrix6x86-PR150+ | 120 | 2x | 60 |
Cyrix6x86-PR166+ | 133 | 2x | 66 |
Cyrix6x86-PR200+ | 150 | 2x | 75 |
Cyrix 6x86MX (кодовое название M2) стал следующим процессором, выпущенным Cyrix - появился на рынке в конце мая 1997 г. Ядро Cyrix 6x86MX построено на основе ядра Cyrix 6x86 и фактически представляет собой несколько улучшенный вариант последнего. Технологический процесс - 0,35-микронный (0,25-микронный для более поздних моделей), разъем - Socket 7, объем LI-кэша - 64 Кбайт, входное напряжение - 3,3 В, напряжение на ядре - 2,9 В, поддерживается набор инструкций MMX. PR-рейтинг Cyrix 6x86MX измеряется относительно Intel Pentium MMX и может принимать значения от PR133 до PR266.
В середине апреля 1998 г. компания Cyrix представила свой новый процессор Cyrix M II-300 c PR300, а через месяц - Cyrix M II-333 c PR333. Эти процессоры идут следующими в линейке Cyrix 6x86MX и отличаются от своих предшественников только более высокой внутренней частотой и другим названием - все остальное осталось прежним. Изменение названия связано с тем, что PR-рейтинг процессоров Cyrix M II измеряется теперь относительно Intel Pentium II, а не Intel Pentium MMX.
|
|
|
|
Рабочая частота ядра, коэффициент умножения, рабочая частота системной шины и их соответствие PR-рейтингу для процессоров линейки Cyrix 6x86MX .
Процессор | Частота ядра | Коэффициент умножения | Частота системной шины |
Cyrix 6x86MX-PR133 | 100 | 2x | 50 |
Cyrix 6x86MX-PR133 | 110 | 2x | 55 |
Cyrix 6x86MX-PR150 | 120 | 2x | 60 |
Cyrix 6x86MX-PR150 | 125 | 2,5x | 50 |
Cyrix 6x86MX-PR166 | 133 | 2x | 66 |
Cyrix 6x86MX-PR166 | 138 | 2,5x | 55 |
Cyrix 6x86MX-PR166 | 150 | 3x | 50 |
Cyrix 6x86MX-PR166 | 150 | 2,5x | 60 |
Cyrix 6x86MX-PR200 | 150 | 2x | 75 |
Cyrix 6x86MX-PR200 | 165 | 3x | 55 |
Cyrix 6x86MX-PR200 | 166 | 2,5x | 66 |
Cyrix 6x86MX-PR200 | 180 | 3x | 60 |
Cyrix 6x86MX-PR233 | 188 | 2,5x | 75 |
Cyrix 6x86MX-PR233 | 200 | 3x | 66 |
Cyrix 6x86MX-PR233 | 166 | 2x | 83 |
Cyrix 6x86MX-PR266 | 208 | 2,5x | 83 |
Cyrix M II-300 | 225 | 3x | 75 |
Cyrix M II-300 | 233 | 3,5x | 66 |
Cyrix M II-333 | 250 | 3x | 83 |
Cyrix M3 - следующий процессор от Cyrix, выпуск которого намечен на вторую половину 1999 г. Этот процессор седьмого поколения с х86-архитектурой будет построен на новом ядре с кодовым названием Jalapeno; он будет изготавливаться по 0,18-микронной технологии, иметь LI-кэш объемом 32 Кбайт (16 Кбайт для инструкций + 16 Кбайт для данных), L2-кэш объемом 256 Кбайт, интегрированный на одном кристалле с ядром и работающий на частоте ядра, поддерживать наборы инструкций MMX и 3DNow!.
Первоначально частота ядра будет равна 500 МГц. К концу 1999 г. Cyrix планирует представить процессор с частотой 600 МГц, а в первом квартале 2000-го - с частотой 666 МГц. Частота системной шины будет равна 100 МГц или 133 МГц.
Предполагается, что Cyrix М3 также будет иметь встроенный графический узел. Таким образом, можно будет сэкономить деньги на видеокарте. Cyrix М3 будет также содержать интегрированный контроллер памяти, который, по утверждениям компании, способен уменьшить время доступа к DRAM. По данным Cyrix, это время будет составлять менее 20 нс против 50 нс для нынешних реализаций контроллеров памяти архитектур Socket 7 и Slot 1. Их контроллер также способен держать открытыми до 32 страниц памяти, что превосходит возможности нынешних чипсетов.
Существуют два принципиально отличающихся друг от друга подхода к исследованию быстродействия процессоров: синтетические тесты на скорость вычислений, производимых процессором, и измерения, базирующиеся на хронометрировании работы реальных приложений.
Преимущество синтетических тестов - легкость максимальной изоляции процессора - нередко оборачивается недостатком. Дело в том, что современный микропроцессор - комбинированное устройство, содержащее, помимо арифметико-логических устройств, еще и схемы взаимодействия с компонентами окружения. Реализация этих схем у разных процессоров далеко не всегда равноценна. Последнее обстоятельство неминуемо скажется на реальных задачах, но может не отразиться на чисто процессорных тестах (то есть в тех тестах, где результаты обнаруживают исключительно слабую зависимость от всех компонентов системы, кроме процессора).
Другим недостатком синтетических тестов является возможное несоответствие между частотой использования тех или иных инструкций процессора при их исполнении и тем, что имеет место в типичных приложениях.
Тесты, основанные на реальных приложениях, свободны от этих недостатков однако и у них имеются свои проблемы. В процесс получения конечного результата вовлекаются все системы компьютера - процессор, контроллеры, кэш-память второго уровня, основная память, жесткий диск. Низкокачественная периферия способна снизить итоговую оценку на десятки процентов; при этом падение эффективности бывает различным для разных процессоров. Кроме того, параметры настройки и аппаратное окружение, оптимальные для одного процессора, зачастую оказываются далеко не лучшим выбором для другого, а это может поставить под сомнение даже качественные относительные показатели двух сравниваемых устройств по типу "хуже-лучше".
В нашем тестировании мы избрали комбинированный подход: наряду с синтетическими, в основном "чисто процессорными" тестами, использовались также тесты, базирующиеся на реальных приложениях. Из числа синтетических тестов использовался набор тестов BYTEmark 2.0, а также тесты CPUmark32 и FPU WinMark из пакета WinBench 99. Из тестов, основанных на реальных приложениях, использовались Winstone 99, WinBench 99 (кроме CPUmark32 и FPU WinMark) и 3D WinBench 99.
Тестирование процессоров проводилось в среде двух операционных систем - Windows NT 4.0 Workstation с Service Pack 4 и Windows 98. Все измерения проводились при видеорежиме с разрешением 1024x768 точек, глубине цвета 32 бита на пиксел и частоте регенерации изображения 85 Гц.
Для сравнения производительности современных x86-процессоров с их RISC-конкурентами мы измерили также производительность двух процессоров семейства Alpha KP21164 с частотами ядра 533 МГц и 633 МГц при выполнении пакета тестов BYTEmark 2.0 в среде операционной системы Windows NT 4.0 Alpha Server с Service Pack 3.
Одна из главных целей нашего исследования -
оценка собственно мощности тестируемых
процессоров, в отрыве от схем поддержки и
подсистем памяти, для определения эффективности
внутренней архитектуры процессорного ядра и,
следовательно, перспектив дальнейшего
усовершенствования процессора на существующей
основе. Для решения этой задачи лучше всего
подходят синтетические тесты, имитирующие
работу подпрограмм реального приложения, но с
предельно маленькими массивами данных,
помещающимися во внутреннюю (Level 1) кэш-память
процессора, либо по возможности написанные так,
чтобы обращения к внешней памяти были крайне
редкими. Этим требованиям удовлетворяет пакет BYTEmark
2.0 журнала BYTE
(http://www.byte.com/bmark/bmark.htm), обладающий еще и тем ценным
свойством, что он доступен в исходных кодах на
языке C, а потому может быть без проблем перенесен
в любую операционную систему и перекомпилирован
любым понравившимся компилятором.
Возможность программного определения типа процессора заложена в
архитектуру 32-разрядных процессоров "отродясь". В любом процессоре сразу
после аппаратного сброса в регистре (E)DX можно прочитать номер семейства
(3 — 386, 4 — 486, 5 — Pentium, 6 — P6...), модели, типа и степпинга.
Расшифровка основных полей приводится в табл. 1. Кроме перечисленных
в таблице имеется поле степпинга (биты 3:0) — номер версии процессора в
пределах одной модели. Информацию этого поля, к сожалению, без таблиц
изготовителя не расшифровать. Поле "тип" (биты 13:12) различает процессоры
OEM-версий (00), OverDrive (01) и Dual (10); значение 11 зарезервировано.
Наиболее интересная информация содержится в полях "семейство" (биты 11:8)
и "модель" (биты 7:3). Старшие биты (14–31) регистра EDX пока не
используются (они нулевые). Процессоры 80386 имели несколько иное
назначение бит: поле "семейство" совпадает, поле "модель" занимает биты
15:11, биты 7:0 отводятся под степпинг. Для младших процессоров регистр
DH содержит идентификатор процессора (01 — 8086/88, 02 —80286),
DL — номер модели. Поле "модель" позволяет отличать, например,
Pentium MMX от "просто" Pentium 75–233 МГц или Pentium 60–66 МГц, Celeron
от Pentium II или Pentium Pro. По полю "тип" можно отличить,
например, процессоры OverDrive. Поле "степпинг" без таблиц не
расшифровать, оно несет информацию о нюансах — например, исправлены ли те
или иные ошибки, возможный диапазон частот (определяется косвенно и не
точно). Таблица. Коды идентификации процессоров Идентификация процессоров (CPUID)
Тип EDX[13:12] |
Семейство EDX[11:8] |
Модель EDX[7:4] |
Процессор |
00 | 0100 | 0000 | Intel486DX |
00 | 0100 | 0001 | Intel486DX |
00 | 0100 | 0010 | Intel486SX |
00 | 0100 | 0011 | Intel487, IntelDX2, IntelDX2 OverDrive, AMD DX2 в режиме WT |
00 | 0100 | 0100 | IntelSXL |
00 | 0100 | 0101 | IntelSX2 OverDrive |
00 | 0100 | 0111 | IntelDX2 Enhanced в режиме WB, AMD DX2 в режиме WB |
00 | 0100 | 1000 | IntelDX4 OverDrive, AMD DX4 в режиме WT |
00 | 0100 | 1001 | AMD DX4 в режиме WB |
00 | 0100 | 1110 | Am5x86 в режиме WT |
00 | 0100 | 1111 | Am5x86 в режиме WB |
01 | 0100 | 1000 | IntelDX4 OverDrive |
00 | 0101 | 0000 | AMD K5-PR75, 90, 100 |
00 | 0101 | 0001 | Pentium 60, 66 Pentium OverDrive для Pentium 60, 66 AMD K5-PR120, 133 |
00 | 0101 | 0010 | Pentium 75, 90, 100, 120, 133, 150, 166, 200 AMD K5-PR166 |
01 | 0101 | 0010 | Pentium OverDrive 75, 90, 100, 120, 133 |
01 | 0101 | 0011 | Pentium OverDrive для 486 |
00 | 0101 | 0100 | Pentium MMX (166, 200, 233) |
01 | 0101 | 0100 | Зарезервировано (OverDrive для Pentium 75, 90, 100, 120, 133) |
00 | 0110 | 0001 | Pentium Pro |
00 | 0110 | 0011 | Pentium II первого поколения (233–300 МГц) |
01 | 0110 | 0011 | Pentium II OverDrive |
00 | 0110 | 0101 | Pentium II Desсhutes (333–450 МГц), Celeron (266, 300 МГц), Xeon |
00 | 0110 | 0110 | Celeron 300A, 333–533 |
00 | 0110 | 0111 | Pentium III и Pentium III Xeon |
00 | 0110 | 1000 | Pentium III Coppermine, Pentium III Xeon, Celeron 533A, 566, 600 |
Информация из (E)DX доступна только для BIOS в самом начале запуска машины (ее может считать тест POST). Поскольку BIOS ориентирован на процессоры одного поколения (семейства), проблем с различием использования регистра (E)DX не возникает. Потребность в идентификации процессора операционной системой и приложениями созревала по мере расширения диапазона функциональных возможностей и уровня производительности процессоров. Начиная с процессоров Pentium появилась новая инструкция CPUID, по которой любая программа на любом уровне привилегий в любой момент времени могла получить ту же информацию, что и BIOS после сброса, и, вдобавок, 32-битный набор флагов расширений базовой архитектуры, реализованных в данном процессоре. Полученную информацию программа может использовать, например, для выбора исполняемого кода, оптимального для данного процессора (или отказа исполнения на "недостойном" ее процессоре), а также для настройки констант программных реализаций задержек. Инструкция CPUID была реализована и в ряде поздних моделей процессоров класса 486. Формат инструкции практически безгранично расширяем, с ее помощью процессор может выдавать хоть весь свой словесный портрет (если эту возможность заложат его разработчики). Однако информация для CPUID "зашивается" в процессор на этапе изготовления кристалла, что не позволяет, например, "выпытать" у процессора его официальную тактовую частоту (она определяется позже — на этапе тестирования уже готового процессора). А эта информация была бы полезна при борьбе с пиратским разгоном (перемаркировкой) процессоров, что, в общем-то, волнует изготовителя.
Следующий шаг, уже явно нацеленный на учет и контроль, был сделан в процессоре Pentium II Xeon. Здесь имеется специальная постоянная (только для чтения) память процессорной информации PIROM (Processor Information ROM), которая хранит такие данные, как электрические спецификации ядра процессора и кэш-памяти (диапазоны частот и питающих напряжений), S-спецификацию (степпинг) и 64-битный серийный номер процессора. Кроме того, имеется энергонезависимая память Scratch EEPROM, которая предназначена для занесения системной информации поставщиком процессора (или компьютера с этим процессором) и может быть защищена от последующей записи. Для взаимодействия с PIROM и Scratch EEPROM (а также устройством термоконтроля) процессор имеет дополнительную последовательную шину SMBus (System Management Bus) — отдельный электрический интерфейс, с которым работает чипсет системной платы. Обращение к этим учетным данным получается довольно сложным — это целая процедура, привязанная к реализации чипсета, а не одна инструкция.
И, наконец, в Intel решили соединить всеобщий учет (и контроль) с простотой доступа: в процессор Pentium III ввели расширение инструкции CPUID, по которому легко можно получить 64-битный уникальный идентификатор данного процессора. Идентификатор процессора, по замыслу Intel, должен стать дополнительным средством аутентификации в сети Internet (и других сетях), наряду с именем пользователя и паролем, вводимыми вручную. Однако, если имя и пароль можно сменить в любое время, идентификатор присваивается навечно и принудительно, хотя имеется возможность запретить процессору сообщать свой идентификатор. Вот эта всеобщая инвентаризованность и вызвала бурю обсуждений прав на частную жизнь пользователей нового процессора. После жарких споров фирма Intel "идя навстречу пожеланиям трудящихся" постановила, что по умолчанию выдача идентификатора запрещена, а разрешается только с ведома пользователя. Как подчеркивает Intel, идентификатор сообщается пассивно, то есть компьютер с новым процессором, ОС и броузером не кричит на весь мир "я — номер такой-то!". Это естественно, поскольку для идентификации процессор должен исполнить фрагмент программного кода, в котором вызывается инструкция CPUID и интерпретируются ее результаты.
Для управления выдачей идентификатора в модельно-специфическом регистре BBL_CR_CTL (MSR 119h) выделяется запрещающий бит (бит 21). Он может быть установлен в "1" программно — с помощью инструкции обращения к MSR, и тогда по инструкции CPUID будет доступна только традиционная информация. Заметим, что инструкции обращения к MSR обычно привилегированы, т. е. могут выполняться только на уровне привилегий ядра ОС. По аппаратному сбросу процессора (и только так!) бит обнуляется, и полная идентификация разрешается. Декларированное "отключение по умолчанию" возлагается на ОС, и для Windows предлагается специальная утилита, опрашивающая значение бита MSR и управляющая его установкой, а также сообщающая прочитанный (по возможности) идентификатор. Для использования ОС, отличных от Windows, Intel рекомендует разработчикам BIOS включать фрагмент кода аналогичного назначения в BIOS Setup (здесь любое переключение будет требовать перезагрузки).
Основная информация о процессоре предоставляется по инструкции CPUID, доступность которой определяется через бит 21 (ID) регистра EFLAGS. По инструкции CPUID(0) можно определить производителя процессора и возможности данной инструкции. Вызов CPUID(1) сообщает сигнатуру процессора — тип, семейство, модель и степинг (табл. 1), а также список расширений архитектуры (табл. 2). Как видно из таблицы 1, одному и тому же сочетанию типа, семейства и модели может соответствовать несколько типов процессоров — например, Pentium II и Pentium II Xeon по ним неразличимы. Эти процессоры различаются элементами системы кэширования, и их можно распознать по дескрипторам (табл. 3), сообщаемым по CPUID(2). И, наконец, серийный номер процессора, если это позволено (см. ниже), можно узнать по CPUID(3). Серийный номер появился с процессорами Pentium III (он был введен еще в кристалл Celeron модели 6, но на конечном этапе производства эту возможность отключали).
Заметим, что здесь нигде в явном виде не фигурирует тактовая частота процессора — для каждой модели и степинга выпускаются процессоры с некоторым диапазоном тактовых частот, а конкретное значение обозначается на корпусе после отбраковочных испытаний. В процессорах Xeon "официальная" тактовая частота заносится в энергонезависимую память конфигурации, откуда может быть считана по интерфейсу SMBus. Доступ к этой памяти осуществляется по процедурам, определяемым чипсетом системной платы, но не по одной определенной инструкции процессора. Возможно, тактовую частоту можно определить и по серийному номеру процессора, но пока на это нет официальных указаний.
Идентификация процессора требуется на разных уровнях ПО. Первым делом идентификацию выполняет BIOS — для того, чтобы сообщить о найденных процессорах пользователю и выполнить необходимые настройки под конкретную модель и степинг процессора. Для процессоров 6-го поколения эта информация позволяет определить, какими ошибками (erratum) страдает данный процессор и какими "заплатками" эти ошибки нейтрализуются. Нейтрализация ошибок может выполняться как с помощью модификации микрокода процессора (update microcode, см. п. 2), так и специфическими фрагментами программного кода для обработчиков прерываний и исключений. Эти "заплатки" могут входить как в операционные системы, так и в BIOS. Если конкретный процессор "не знаком" для BIOS или ОС, "заплатки" для него не будут загружены и возможны различные неожиданности при работе. В этом случае стоит позаботиться об обновлении BIOS (для флэш-BIOS это технически несложно) или приобретении загружаемых "заплат" для ОС.
В зависимости от обнаруженного процессора, ОС может использовать те или иные варианты реализации своих функций. ОС защищенного режима (а теперь иными практически и не пользуются) разрешает или запрещает те или иные архитектурные расширения (в основном записью в регистр CR4). Прикладным программам остается только согласиться с предлагаемым набором свойств процессора или отказаться от работы. Прикладные программы могут получать информацию о процессоре по инструкции CPUID при любом уровне привилегий, а привилегированные программы (PL=0) могут пользоваться и данными CR4.
Рассмотрим возможности идентификации процессоров разных поколений. Программам, загружаемым операционной системой, да и самой ОС информация о процессоре из регистра EDX недоступна (аппаратный сброс был слишком давно). Задача идентификации осложняется тем, что поколение процессора заранее неизвестно. Когда появился процессор 80286, его (и все последующие) отличали от 8086/88 по значениям, сохраняемым в стеке инструкцией PUSH SP: первые процессоры сначала декрементировали указатель стека, а потом его сохраняли. Для идентификации процессоров, начиная еще с 16-разрядных, рекомендуется анализ значения регистра флагов, сохраненного по инструкции PUSHF после попытки его изменения. Приведем параметры регистра флагов в том порядке, в каком их анализируют при идентификации типа:
Для 32-разрядных процессоров анализируется EFLAG:
Для определения присутствия сопроцессора выполняют инструкцию FNINIT, после чего исполняют инструкцию FNSTENV и проверяют корректность образа сопроцессора, сохраненного в памяти. Тип сопроцессора обычно определяется типом CPU, кроме процессора 80386, который может работать как с 80287, так и с 80387. Их различить можно по способу представления + и – : у 287 они одинаковы, у 387 — различны.
Инструкция CPUID, доступная, начиная с Pentium и некоторых моделей 486, вызывается с параметром, указанным в регистре EAX. Значение EAX при вызове CPUID, указанные в скобках, определяет функцию вызова:
Процессоры AMD возвращают строку "AuthenticAMD" (EBX=68747541h, ECX=444D4163h, EDX=69746E65h).
Вызов CPUID(2) появился с процессорами 6-го поколения. Пока что по нему сообщаются только дескрипторы элементов кэширования (табл. 3). Например, для Pentium Pro по CPUID(2) возвращается EAX=03020101h, EBX=0, ECX=0, EDX=06040A42h. Это означает, что вызов нужно делать однократно (AL=1); TLB инструкций для страниц 4К имеет 32 вхождения (01h), для страниц 4М — 2 вхождения; TLB данных для страниц 4К на 64 вхождения (03h), для страниц 4М — на 8 вхождений (04h); первичный кэш инструкций — 8К (06h), данных — 8К (0Ah); вторичный кэш 256К (42h).
Полный идентификатор имеет длину 96 бит. Старшие 32 бита — код идентификации процессора, возращаемый в EAX по CPUID(1). Доступность вызова определяется по биту PN регистра свойств (после CPUID(1) бит EDX.18=1). После аппаратного сброса у процессоров, поддерживающих сообщение идентификатора, этот вызов разрешен. Запретить сообщение идентификатора до следующего аппаратного сброса можно установкой в единицу бита 21 регистра. Фрагмент программы на ассемблере для запрета сообщения номера приведен ниже. После запрета бит PN обнуляется. Снова разрешить сообщение номера программно невозможно, повторное разрешение возможно только через аппаратный сброс (по сигналу RESET, но не INIT#).
MOV ECX, 119h
RDMSR ;загрузка значения MSR в EDX:EAX
OR EAX, 0020 0000h ;модификация бита 21
WRMSR ;запись в MSR
Вызовы инструкций CPUID с EAX>3 (в пределах разрешенного значения, сообщенного процессором при вызове CPUID(0) зарезервированы для будущих применений.
Фирма AMD расширила вызовы CPUID. Для проверки наличия расширений вызывается CPUID с EAX=8000_0000h. При наличии расширений в EAX результатом будет число, большее 8000_0000h, — максимальный параметр расширенного вызова. Вызовом EAX=8000_0001h можно определить специфические расширения архитектуры от AMD. Например, поддержка 3DNow! определяется по установленному биту 31 регистра EDX.
Таблица 2. Назначение флагов расширения архитектуры
Бит | Название | Назначение |
---|---|---|
0 | FPU | Floating Poin Unit — наличие математического сопроцессора |
1 | VME | Virtual-8086 Mode Enhancements — расширение режима V86 (виртуализация флага прерываний) |
2 | DE | Debugging Extensions — расширение отладки (возможность остановки по обращению к портам) |
3 | PSE | Page Size Extension — возможность применения размера страницы в 4 Мбайт |
4 | TSC | Time Stamp Counter — наличие счетчика меток реального времени |
5 | MSR | Model Specific Register — поддержка модельно-специфических регистров в стиле Pentium (инструкции RDMSR, WRMSR) |
6 | PAE | Physical Address Extension — возможность расширения физического адреса до 36 бит |
7 | MCE | Machine Check Exception — поддержка исключения машинного контроля #MC |
8 | CX8 | Поддержка инструкции CMPXCHG8B |
9 | APIC | Наличие встроенного программно-доступного контроллера прерываний APIC |
10 | – | Зарезервировано |
11 | SEP | SYSENTER Present — поддержка инструкций быстрых системных вызовов SYSENTER и SYSEXIT |
12 | MTRR | Memory Type Range Registers — наличие регистра управления кэшированием MTRRcap |
13 | PGE | Page Global Enable — поддержка бит глобальности в элементах каталога и таблиц страниц, а также бита PGE в регистре CR4 |
14 | MCA | Machine Check Architecture — поддержка архитектуры машинного контроля |
15 | CMOV | Conditional Move — поддержка инструкций условной пересылки CMOVcc, а если есть FPU, то и инструкций FCMOVCC и FCOMI |
16 | PAT | Page Attribute Table — поддержка таблиц атрибутов страниц (PAT) |
17 | PSE-36 | 36-bit Page Size Extension — возможность использования 36-битной физической адресации для страниц в 4 Мб |
18 | PN | Processor Number — поддержка сообщения 96-битного серийного номера по инструкции CPUID(3) |
18–22 | – | Зарезервировано |
23 | MMX | Поддержка MMX |
24 | FXSR | Fast floating point save and restore — поддержка инструкций быстрого сохранения и восстановления контекста FPU (инструкций FXSAVE и FXRSTOR). Указывает и на доступность индикатора использования этих инструкций операционной системой (CR4.OSFXSR) |
25 | XMM | Наличие блока XMM (поддержка новых инструкций расширения SSE) |
24...31 | – | Зарезервировано |
Таблица 3. Дескрипторы элементов кэширования
00h | Нулевой дескриптор (в неиспользуемых байтах) |
01h | TLB инструкций: страницы 4К, 4WSA, 32 вхождения |
02h | TLB инструкций: страницы 4М, FA, 2 вхождения |
03h | TLB данных: страницы 4К, 4WSA, 64 вхождения |
04h | TLB данных: страницы 4М, 4WSA, 8 вхождений |
06h | Кэш инструкций (LI): 8К, 4WSA, размер строки 32 байта |
08h | Кэш инструкций (LI): 16К, 4WSA, размер строки 32 байта |
0Ah | Кэш данных (LI): 8К, 2WSA, размер строки 32 байта |
0Ch | Кэш данных (LI): 16К, 2WSA, размер строки 32 байта |
40h | Нет вторичного кэша |
41h | Вторичный кэш 128К, 4WSA, размер строки 32 байта |
42h | Вторичный кэш 256К, 4WSA, размер строки 32 байта |
43h | Вторичный кэш 512К, 4WSA, размер строки 32 байта |
44h | Вторичный кэш 1М, 4WSA, размер строки 32 байта |
45h | Вторичный кэш 2М, 4WSA, размер строки 32 байта |
где:
Фирма Intel постоянно модернизирует свои процессоры, и даже в пределах одной модели процессоры разного времени выпуска различаются степпингом. Для процессоров каждого степпинга известны свои ошибки (errata) и методы их исправления. Микроархитектура P6 позволяет исправлять эти ошибки путем загрузки в процессор блока "заплаток", являющегося, очевидно, набором фрагментов микропрограмм. Обновление микрокода (Microcode Update) должно выполняться во время инициализации процессора после аппаратного сброса (по сигналу RESET#), загруженный микрокод действует только до следующего аппаратного сброса (инициализация сигналом INIT# на загруженное обновление не влияет). Фирма Intel отвечает за корректность поведения своих процессоров только при загруженных "заплатках" и для каждого степпинга выпускает специальный блок данных (в виде файла). Таким образом, процессор определенного степпинга рассматривается как комплект из собственно процессора и "заплаток". Заплатки фирма помещает на своем сайте, правда доступ к ним запаролирован. Пароли сообщаются официальны дилерам, так что за свежими "заплатками" следует обращаться именно к ним. Если дилер не способен предоставить "заплатки" (или сообщить пароль), то можно усомниться в его легальности. Загрузка актуальных заплаток организуется в процессор в два этапа: требуемый образ должен быть "зашит в BIOS" изготовителем компьютера или пользователем; на этапе инициализации компьютера BIOS организует загрузку микрокода в процессор. Если BIOS не поддерживает процессор требуемого степпинга, то следует обновить либо всю BIOS, либо только область с микрокодами. Вопросы обновления BIOS выходят за рамки данной статьи (см. книгу "Аппаратные средства IBM PC. Энциклопедия"), здесь рассматривается только процессорная сторона данного вопроса.
"Заплатки" поставляются в виде блоков данных размером 2048 байт, никакого исполняемого кода они не содержат.
Блок состоит из 48-байтного заголовка (номер версии заголовка указывается в самом его начале) и собственно данных обновления (2000 байт). Целостность всего блока контролируется контрольной суммой — сумма всех 512 двойных слов блока должна быть нулевой. Поле версии обновления позволяет определить, загружено ли данное обновление в процессор (см. ниже). Блок обновления приемлем только для процессора, имеющего тот же идентификатор (тип, семейство, модель, степпинг), сообщаемый по CPUID(1), что и указан в заголовке блока. Младшие биты в слове Processor Flags определяют, к каким "платформам" применимо данное обновление. Идентификатор платформы процессора считывается из MSR BBL_CR_OVRD (адрес 17h), где он кодируется битами [52:50]. Блок применим, если флаг (P0...P7), соответствующий его идентификатору платформы, будет единичным (блок может подходить к процессорам с разными идентификаторами платформы). Обновление должно загружаться загрузчиком, версия которого соответствует прописанной в заголовке. Загрузчик версии 1 (другие пока не описаны) записывает линейный адрес данных в MSR 79h. Для этого в регистр EAX заносится линейный адрес начала данных обновления (адрес блока +48), EDX=0, ECX=79h, и выполняется инструкция WRMSR. Микрокод должен обновляться до инициализации контроллера вторичного кэша. Данные обновления не должны пересекать границу сегмента (требований к выравниванию нет); если включена страничная переадресация, данные, естественно, должны быть доступны. Программа-загрузчик версии 00000001h на языке Ассемблер приведена ниже. Подразумевается, что блок обновления находится в сегменте кода со смещением Update.
;Обновление микрокода
mov ecx,79h ;в ECX заносится номер MSR
xor eax,eax ;обнуление EAX
xor ebx,ebx ;обнуление EBX
mov ax,cs ;формирование
shl eax,4 ;линейного
mov bx,offset Update ;адреса
add eax,ebx ;блока обновления в EAX
add eax,48d ;указатель на начало данных обновления
xor edx,edx ;обнуление EDX
WRMSR ;запуск обновления микрокода
Обновление может выполняться многократно без каких-либо побочных эффектов. Успешность и версию произведенного обновления можно проверить программно, не изменяя состояния обновления (см. программу ниже). Процессор с загруженным обновлением по инструкции CPUID(1) кроме возврата результата, описанного в п.1, записывает сигнатуру (значение версии обновления) в MSR 08Bh (если обновление не производилось, содержимое MSR не меняется). Для проверки загруженной версии обновления предварительно обнуляют MSR 08Bh (инструкцией WRMSR), затем выполняют CPUID(1) и читают MSR 08Bh (инструкцией RDMSR).
;определение сигнатуры загруженного обновления
mov ecx,08Bh ;номер MSR
xor eax,eax ;обнуление EAX
xor edx,edx ;обнуление EDX
WRMSR ;загрузка "0" в MSR 8Bh
mov eax,1
CPUID ;идентификация процессора CPUID(1)
mov ecx,08Bh ;номер MSR
RDMSR ;чтение сигнатуры обновления в EDX:EAX
Полученное в EDX значение сравнивают с номером версии обновления из заголовка. Если полученное значение меньше, чем в заголовке, значит блок содержит более свежую версию и имеет смысл выполнить обновление данным блоком (и проконтролировать его успешность). Попытка загрузить обновление с идентификатором, не соответствующим данному процессору, не удастся (процессор проигнорирует эту попытку). В мультипроцессорных системах обновляемые данные для каждого процессора должны соответствовать его типу, модели, степпингу и идентификатору платформы.
Компания AMD представила новые процессоры Duron, предназначенные для недорогих ПК, и новые модели процессоров Athlon, известных под кодовым наименованием Thunderbird. Выпущено 3 модели процессоров Duron с тактовой частотой 600, 650 и 700 МГц. Их поставки пока осуществляются только нескольким производителям компьютеров, а официальный выпуск на массовый рынок должен состояться в конце июня 2000 г. Процессор Duron построен на базе ядра процессора AMD Athlon. Он имеет встроенный кэш второго уровня и 200-МГц системную шину, как и предыдущие модели процессоров от AMD, в нем используется технология поддержки трехмерной графики 3DNow!. При поставках партиями в 1000 штук 600-МГц модель чипа Duron стоит 112 дол., 650-МГц процессор - 154 дол., а 700-МГц Duron - 192 дол. Что же касается процессора AMD Athlon, предназначенного для высокопроизводительных ПК, то выпущено 6 новых моделей с тактовыми частотами от 750 МГц до 1 ГГц. Эти процессоры характеризуются суперскалярной архитектурой, интегрированным 128-Кбайт кэшем первого уровня и интегрированным 256-Кбайт кэшем второго уровня, усовершенствованной технологией 3DNow! с 24 дополнительными командами, 200-МГц системной шиной. Процессоры AMD Athlon производятся на заводах в Остине (шт. Техас) и в Дрездене (Германия) по 0,18-мкм технологии с использованием алюминиевых межсоединений. Стоимость процессоров Athlon при поставках партиями в 1000 штук: 750-МГц Athlon - 319 дол., 800-МГц Athlon - 359 дол., 850-МГц чип - 507 дол., 900-МГц модель - 589 дол., 950-МГц процессор - 759 дол., и 1-ГГц Athlon - 990 дол. Поставки уже начались. Процессоры выпускаются в двух версиях: в корпусах типа Slot A и Socket A. О предстоящем выпуске компьютеров с новыми процессорами AMD Athlon уже заявили компании Compaq, Fujitsu-Siemens, Gateway, Hewlett-Packard, IBM и др. Источник: InfoArt News Agency В данной работе использованы материалы сайтов:
- http:\\beda.stup.ac.ru Авторы: О.Денисов, С.Назаров;
- http:\\neru.dhs.org/harg/processor/Error_Intel. httm Автор: М.Гук.
- http://www.infoart.ru/it/news/00/06/06_710.htm