MorePC - Главная страница


О сайте

Регистрация

Обратная связь

Реклама на сайте

Публикации на сайте

Карикатуры

  Категории СВТ     Тесты и методики испытаний     Новости СВТ     Проблемы информатизации     Форум     Опросы     Словарь     Поиск  

     Процессоры : Теория  

Предлагаем Вашему вниманию статьи по информационной безопасности.

Основные понятия

версия для печати

Сергей Андрианов
23.08.02

Процессоры IA (архитектуры Intel)

Микропроцессоры ведут свою историю с марта 1971 года, когда мало кому известная компания Intel выпустила 4-разрядный кристалл 4004, предназначенный для использования в микрокалькуляторах. В следующем году разрядность микропроцессоров увеличилась вдвое, – был выпущен 8-разрядный 8008, а еще через два года на свет появился 8080. Последний примечателен тем, что на нем был собран первый персональный компьютер, а впоследствии создана операционная система CP/M-80 – первая ОС для персональных компьютеров, получившая широчайшее распространение.

Процессор 8080 работал на частоте 2 МГц. Выборка из памяти и исполнение команд осуществлялись синхронно: на каждое обращение к памяти процессор тратил по 3 такта и дополнительно 1-2 такта на декодирование команды. Команды были различной длины (от 1 до 3 байт) и исполнялись от 4 до 18 тактов. Адресное пространство составляло 64 Кбайта.

В 1978 году Intel выпустила свой первый 16-разрядный процессор 8086 (первый в мире 16 разрядный процессор был выпущен Texas Instruments в 1976 г.). В этом процессоре операционный блок и блок интерфейса работали параллельно и асинхронно, что позволило существенно увеличить производительность кристалла. Блок интерфейса содержал 6-байтную очередь команд – прообраз кэша команд более поздних процессоров. Длина команды составляла от 1 до 6 байт, адресное пространство – 1 Мбайт, а тактовая частота – около 5 МГц.

Процессор 8086 имел ряд архитектурных особенностей. Дело в том, что к моменту его создания уже было разработано великое множество программ для 8-разрядных процессоров, и уже стала выкристаллизовываться идея о совместимости системы команд с разработанным ранее программным обеспечением. Чтобы облегчить перенесение программ на новую платформу Intel обеспечила совместимость системы команд на уровне языка Ассемблера. Т. е. двоичные коды команд процессоров 8080 и 8086 не совпадали, но у каждой команды 8080 в процессоре 8086 был прямой аналог. Таким образом, процессор мог работать как с 8-, так и с 16-разрядными данными. Кроме того, память имела сегментную организацию, т.е. адрес состоял из двух частей: сегмента, несущего старшую часть адреса и выровненного на границу 16 байт и смещения. Смещение в точности соответствовало адресу в 8-разрядных процессорах, что в совокупности с набором аналогичных регистров позволяло при переносе программ обходиться практически только перетрансляцией. Более того, появилось даже два формата исполняемых файлов: COM, являющийся точным аналогом исполняемого формата CP/M-80, и EXE – “родной” формат MS DOS, позволяющий использовать все адресное пространство. Скорее всего, Intel предполагала, что 8086 окажется временной переходной моделью от 8- к 16-разрядным процессорам, но накопленное программное обеспечение сделало невозможным отказ от принятой системы команд, и половинчатое решение Intel на долгие годы стало (отчасти является и до сих пор) промышленным стандартом и головной болью для разработчиков программного обеспечения. Разрядность процессора не позволяла непосредственно работать с полным 20-разрядным адресом, поэтому программистам для обработки больших массивов данных приходилось в буквальном смысле бороться с сегментированной организацией памяти.

Через некоторое время Intel выпустила 8088 – облегченный вариант 8086, имеющий сокращенную до 8 разрядов шину данных, что позволяло использовать его совместно со сравнительно дешевыми 8-разрядными периферийными устройствами. Именно на этом процессоре и были собраны как IBM PC, так и IBM PC XT.

Однако, как говорят, нет худа без добра. Именно сегментированная модель памяти позволила ввести в следующей разработке Intel, процессоре 80286, защищенный режим. Новый процессор имел уже 16 Мбайт адресного пространства, тактовую частоту 8 МГц и мог работать в одном из двух режимов: реальном и защищенном. В реальном режиме он в точности имитировал 8086 (за исключением одной неточности: его адресное пространство составляло 1 Мбайт + 64 Кбайта – 16 байт), а в защищенном в сегментные регистры вместо части физического адреса помещались селекторы (номера сегментов) в полном 16-Мбайтном адресном пространстве. Кроме того, каждый из сегментов имел разграничение прав доступа, что позволяло организовать многозадачную среду с защитой адресных пространств каждой из задач от остальных. Но такая система оказалась неудобной: с одной стороны она делала невозможной прямое вычисление полного адреса (как в реальном режиме), а с другой – была подвержена неустранимой фрагментации памяти.

Истинный перелом в программировании совершила следующая модель процессора 80386. Это был уже 32-разрядный процессор, сохраняющий совместимость с двумя предыдущими моделями. Во-первых, с увеличением разрядности адреса вдвое адресное пространство возросло в 65 тысяч раз и составило 4 Гбайта, что позволило программистам обращаться ко всей физической памяти компьютера без использования сегментов. Во-вторых, защищенный режим дополнился средствами устранения фрагментации памяти – теперь любой объем, набранный из 4К-байтных страниц, расположенных в памяти как угодно, мог быть виден прикладной программе в виде одного непрерывного куска. Однако, программисты еще в течение нескольких лет продолжали использовать 16-разрядные режимы – слишком сложным оказалось наладить взаимодействие 32-разрядной программы с 16-разрядной ОС.

Таким образом, разработка программной модели микропроцессора была практически завершена, – последующий прогресс изделий Intel касался в основном оптимизации исполнения команд без изменения программной модели.

Следует сказать, что в отличие от 8-разрядных процессоров в набор поддержки 8086 входил сопроцессор 8087 – устройство, обрабатывающее числа с плавающей точкой. При комплектации компьютера этой микросхемой скорость вычисления математических выражений могла быть увеличена в десятки раз (для 386/387 – в 20-30 раз). При появлении 80286 существующий сопроцессор (8087) был слегка адаптирован, а вот для 80386 – разработан новый сопроцессор с существенным расширением системы команд. Это привело к заметному приросту производительности и практически впервые дало возможность использовать персональный компьютер для решения вычислительных научных задач, то есть в той области, где до этого использовались исключительно мейнфреймы.

Так как компьютеры на 386 процессорах были существенно дороже 286 моделей, Intel так же, как и в случае пары 8086/8088, выпустил вариант процессора с сокращенной вдвое шиной данных: 16 разрядов вместо 32. Одновременно шина адреса была сокращена до 24 разрядов – как у 286, что позволяло использовать до 16 Мбайт оперативной памяти – по тем временам также объем немалый. Но вместо 80388 этот процессор получил название 80386 SX. Одновременно 80386 был переименован в 80386 DX.

Если клоны процессоров Intel в ту пору занимали на рынке столь незначительное место, что их появление не тревожило компанию, то с сопроцессорами дело обстояло несколько иначе. Устройства, выпускаемые сторонними фирмами, показывали более высокую производительность, чем изделия Intel. Развитие сопроцессоров для х86 процессоров шло по двум направлениям: сопроцессоры с системой команд Intel и улучшенной архитектурой (Cyrix) и сопроцессоры с собственной системой команд (Weitek). Последние особенно беспокоили Intel, т.к. собственные сопроцессоры, построенные по принципу стековой машины, имели принципиальные недостатки по сравнению с memory-mapped регистровой архитектурой Weitek.

Одновременно наметилась еще одна проблема: с одной стороны совершенствование архитектуры привело к существенному сокращению количества тактов на одну команду, а с другой – частота тактирования процессоров росла существенно быстрее, чем скорость работы запоминающих устройств. В результате интерфейсный блок процессора стал не поспевать за арифметико-логическим устройством. Для преодоления этого недостатка на системных платах для старших моделей 80386 (до 40 МГц) стали устанавливать кэш-память.

Время выполнения основных команд в тактах

Команды процессора

8080

8088

80286

80386

486

Pentium

AND,SUB,AND,OR,XOR reg, reg

4

3

2

2

1

½

AND,SUB,AND,OR,XOR reg, imm

7

4

3

2

1

½

AND,SUB,AND,OR,XOR reg, mem

-

>9

7

7

2

1

AND,SUB,AND,OR,XOR mem, reg

-

>16

7

6

3

3/2

MUL mem16

-

>124

24

12-25

13-26

11

DIV mem16

-

>150

25

25

24

25

INC, DEC reg

5

3

2

2

1

½

MOV reg, mem

13

>8

5

4

1

½

             

 

Следующий процессор Intel 80486 с программной точки зрения почти ничем не отличался от 80386, но в одном корпусе объединял более быстрое процессорное ядро, кэш-память и усовершенствованное устройство обработки чисел с плавающей точкой (сопроцессор). Такая интеграция позволяла существенно увеличить производительность, особенно в области вычислений, а заодно избавиться от конкурентов, делающих отдельные сопроцессоры.

Процессор вместе с оперативной памятью составляют компьютер. Перенесение части памяти (кэш) на кристалл процессора позволило сделать еще один шаг на пути увеличения производительности – развязать частоту, на которой работал процессор от частоты внешней шины. Процессор, сопроцессор и кэш-память стали работать на одной частоте (66-100 МГц), а шина продолжала работать на другой, более низкой (33 МГц).

Процессор, работающий на удвоенной частоте системной шины, получил суффикс “DX2”, а на утроенной – почему-то “DX4”. Вместе с тем появился облегченный вариант 486, с отключенным блоком обработки чисел с плавающей точкой. Следуя традиции, Intel присвоила ему суффикс “SX” (с удвоением частоты – SX2). Таким образом, во всех изделиях Intel суффикс DX означает “полную” модель процессора, а SX – урезанную. Только для 386 различие заключалось в ширине шины данных и адреса, а для 486 – в наличии арифметического сопроцессора.

Конкуренты повели себя по-разному. AMD стала выпускать 486 процессоры по лицензии Intel, а Cyrix выпустила несколько модификаций собственных процессоров, имеющих в названии цифры 486, но сильно уступающих 486 изделиям Intel по производительности и лишь слегка превосходя 386.

Попытки Intel заставить конкурентов маркировать процессоры как 386 (что в большей степени соответствовало действительности) успехом не увенчались и она решила присвоить следующему своему процессору имя собственное. И надо сказать, процессор этого действительно заслуживал.

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

Вскоре Intel сделала заявку на новый для себя рынок сбыта – процессоров для высокопроизводительных серверов и рабочих станций, выпустив Pentium Pro.

Еще в 1974 году (т. е. одновременно с 8080) фирмой IBM был разработан прототип процессора с архитектурой, получившей позднее название RISC (см. RISC). Большинство высокопроизводительных процессоров к моменту создания Pentium Pro имели именно эту архитектуру. Надо сказать, что консервативность программного обеспечения в гораздо меньшей степени воздействует на этот рынок, что вызвано как гораздо более высокой стоимостью аппаратной части, так и с узкой специализацией, ведущей к уменьшению количества используемых программ. В таких системах экономически выгодно для каждой новой разработки писать новое программное обеспечение. Увеличение производительности за счет усовершенствования системы команд окупает разработку немногочисленных программ.

Intel же не могла отказаться от совместимости с разработанной более 10 лет назад системы команд, поэтому ей пришлось применить аппаратное преобразование существующей системы команд в RISC-команды для последующего исполнения их RISC-ядром. Pentium Pro имел и другие архитектурные отличия: двухуровневая кэш-память, работающая на частоте ядра, изменение порядка выполнения команд для их скорейшего прохождения через конвейер, etc. Но процессор оказался очень дорогим – именно из-за расположенной в корпусе кэш-памяти второго уровня. Если в 80386 была в целом сформирована программная модель процессора, то в Pentium Pro практически закончилось формирование архитектуры, обеспечивающей наивысшую производительность (в расчете на один такт) при заданной системе команд. В последующих модификациях Pentium II и Pentium III ядро осталось без изменений.

Одновременно с разработкой Pentium Pro Intel решила подойти к увеличению производительности с другой стороны, – дополнив систему команд операциями над векторами (SIMD – Single Instruction – Multiple Data). Первым шагом в этом направлении стал Pentium MMX, разработанный на основе Pentium, но оснащенный дополнительным набором инструкций обработки новых 64-разрядных регистров. Каждый из восьми регистров ММХ в зависимости от потребностей может рассматриваться как восемь 8-разрядных, четыре 16-разрядных или два 32-разрядных слова. Аббревиатура MMX расшифровывается как MutiMedia eXtension, т.е. расширение для обработки мультимедийных данных. Действительно, новые команды оказались очень удобными для обработки звука, спрайтовой графики, шрифтов, etc. Это решение тут же стало промышленным стандартом.

Конкуренты в лице компании AMD не дремали. Вскоре было предложено другое расширение набора команд – 3DNow! Оно также предусматривало работу с 64 разрядными регистрами, но теперь их содержимое могло также трактоваться как пара 32-разрядных чисел с плавающей точкой. Именно такие данные использовались при работе с трехмерной графикой, что и нашло свое отражение в названии технологии.

Следующая разработка Intel представляла собой результат “скрещивания” Pentium MMX и Pentium Pro и называлась Pentium II. Правда, с целью удешевления кэш второго уровня был вынесен из корпуса в процессорный картридж, а его частота уменьшена вдвое.

Вскоре Intel поняла, что поспешила снять с производства Pentium MMX, – весь low-end рынок оказался заполненным продукцией конкурентов, в числе которых были IBM, Cyrix, AMD и IDT. Тогда был придуман новый “маневр”: наряду с “полным” Pentium II на рынок был выброшен его несколько сокращенный и удешевленный вариант – Celeron. Так назвали процессор, имеющий то же ядро, что и Pentium II, но без кэш-памяти второго уровня (по сложившейся традиции его следовало бы назвать Pentium II SX). Однако первый блин вышел комом. Системные платы для Pentium II (в отличие от системных плат конкурентов, процессоры которых обладали одноуровневым кэшем) не несли на себе кэш-памяти второго уровня, а без нее процессор демонстрировал очень скромную производительность. Однако вскоре Intel исправилась – переход на новую технологию позволил поместить кэш-память второго уровня сокращенного объема (128К, такой объем памяти ставили на 386, для 486-Pentium более характерным объемом является 256К, а для Pentium II – 512К) на самом кристалле. Так как размещенный на кристалле кэш работал на полной частоте процессора, оказалось, что в некоторых приложениях Celeron работает даже быстрее “полного” Pentium II. Однако это продолжалось недолго. Вскоре Pentium II был переведен на частоту внешней шины 100 МГц, тогда как Celeron так и остался на 66, и разрыв в производительности был восстановлен.

Правда первый, безкэшевый вариант Celeron’а до сих пор тепло вспоминают любители разгона, как раз из-за отсутствия кэша этот процессор мог работать на частоте более чем в полтора раза превышающей номинальную.

Долгое время заполнявшая low-end сегмент рынка компания AMD неожиданно для многих вдруг выпустила процессор, на проверку оказавшийся не только достойным соперником изделию Intel, но и по многим тестам превосходящий его. Новое изделие также получило собственное имя – Athlon. Был расширен и набор дополнительных инструкций, названный 3DNow! 2. Раз уж кампания сумела сделать кристалл, претендующий на верхние строчки в табели о рангах, следующим шагом стало повторение политики Intel - вскоре за “главным” процессором появился и его вариант, рассчитанный на нижний сегмент рынка – Duron, так же с урезанным кэшем.

Но и Intel не сидела, сложа руки. Как законодатель моды она позволила себе ввести 8 дополнительных 128-разрядных регистров, каждый из которых мог быть использован как четырехмерный вектор, состоящий из 32-разрядных чисел с плавающей точкой. Расширение системы команд получило имя SSE. А новый процессор получил название Pentium III, хотя его ядро ничем не отличалось от ядра Pentium II.

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

В течение некоторого времени Intel и AMD шли ноздря в ноздрю, однако в дальнейшем их пути разошлись. Intel ударилась в “гонку за мегагерцами”, выпустив Pentium 4, который существенно уступал в производительности как Pentium III, так и Athlon на одинаковой с ним тактовой частоте, зато допускающий значительное повышение частоты при тех же технологических нормах. Механика этого перехода была проста: 10-стадийный конвейер Pentium III был заменен 20-стадийным. Другими словами, если раньше инструкция выполнялась внутри конвейера 10 тактов, то теперь – 20. Естественно, каждая стадия стала короче, что и дало возможность повысить тактовую частоту. То есть процессоры Pentium III и Pentium 4 при одинаковой технологии имели в полтора раза различающуюся тактовую частоту, но практически одинаковую производительность.

AMD же удалось еще больше увеличить количество инструкций, выполняемое за один такт. Одновременно в кристалл был добавлен набор команд SSE и введена температурная блокировка, без которой Athlon и Duron нередко горели от перегрева. Так появился Athlon XP. Чтобы хоть как-то ответить на действия Intel AMD прибегла к не очень красивому приему – стала маркировать новые процессоры значением рейтинга, а не тактовой частоты. Правда, рейтинг вычислялся при сравнении не с чужим, а с собственным процессором: он показывает, какой частотой должен был бы обладать Athlon, чтобы работать наравне с Athlon XP. Впрочем, результаты тестов свидетельствуют, что Athlon XP оказывается производительнее Pentium 4, даже если последний работает на тактовой частоте выше рейтинга первого.

Intel, правда, утверждает, что “низкая производительность Pentium 4 связана с отсутствием программ, оптимизированных под него”. На деле это означает признание компанией того факта, что, будучи поставленным в равные условия с Athlon, Pentium 4 проигрывает по производительности. А термин “оптимизация” в данном контексте означает использование нового расширения набора инструкций SSE 2, введенного Intel в своем новом процессоре, т. к. при использовании стандартного набора инструкций AMD не оставляет недавнему лидеру никаких шансов на успех при равной тактовой частоте (и даже рейтинге).

RISC

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

Есть у этой архитектуры и недостатки. Во-первых, если в традиционной архитектуре CISC чаще используемые команды имели меньшую длину, то в RISC длина фиксирована, а значит, увеличивается размер программ, повышается нагрузка на шину данных, а также ужесточаются требования к объему кэш-памяти. Кроме того, замена единственной сложной команды последовательностью простых ведет к увеличению времени выполнения, а также дополнительно увеличивает объем кода и нагрузку на шину и кэш. Кстати, положенный в основу классификации признак “сокращенный” сегодня уже не отражает реального количества команд процессора той или иной архитектуры, и RISC-команд может на деле оказаться существенно больше, чем традиционных CISC (антонимом слову “сокращенный” на этот раз выступает термин “сложный”).

Однако сегодня ситуация такова, что ядро Pentium Pro (а соответственно и Pentium II/III) около двух третей своей мощности тратит на декодирование инструкций и только треть – на выполнение. Также дают о себе знать и другие узкие места традиционной архитектуры х86, например, очень ограниченное количество регистров. Получается, что сначала оптимизирующий компилятор тратит массу усилий, чтобы уместить все необходимые данные в мизерном количестве регистров, а затем блок декодирования проделывает обратную работу, распределяя содержимое видимых снаружи логических регистров по многочисленным конвейерам. Естественно, безболезненно для производительности это не проходит. И уж коль скоро инструкции выполняются процессором параллельно, то неплохо бы разгрузить от работы по распараллеливанию центральный процессор и переложить эту работу на компилятор. А раз так, то рано или поздно придется переходить на новую систему команд, без чего дальнейший рост производительности оказывается невозможным.

Примерно так размышляла Intel, объявляя разработку новой архитектуры IA64 (Merced-Itanium). Следует сказать, что с повсеместным распространением высокоуровневого интерфейса программирования и практически полным отказом от использования языка Ассемблера в сегодняшней программной индустрии (даже BIOS стали писать на С) переход на новую систему команд может произойти и более безболезненно, чем 30 лет назад, несмотря даже на гораздо больший объем накопленного программного обеспечения. Теперь совместимость на уровне языка Ассемблера уже не требуется, а совместимость на уровне языка высокого уровня достигается путем написания соответствующего компилятора.

AMD же, напротив, объявила о приверженности существующего набору команд даже в своем новом 64-разрядном процессоре.

В любом случае стремительный рост объема используемой в ПК оперативной памяти неумолимо приближает закат 32-разрядной архитектуры, потолком для которой является планка 4 Гбайта прямо адресуемой памяти. Так что перемен не избежать, а какая архитектура окажется в победителях, будет ясно уже через несколько лет.

Статью "Основные понятия" Вы можете обсудить на форуме.




вверх
  Copyright by MorePC - обзоры, характеристики, рейтинги мониторов, принтеров, ноутбуков, сканеров и др. info@morepc.ru  
разработка, поддержка сайта -Global Arts