Смекни!
smekni.com

Процессоры. История развития. Структура. Архитектура (стр. 9 из 10)

В процессоры семейства Р5 (Pentium и Pentium MMX) были добавлены следующие команды:

· CMPXCHG8B (compare and exchange 8 bytes)

· CPUID (CPU identification)

· RDTSC (read time-stamp counter)

· RDMSR ( read model-specific register)

· WRMSR (write model-specific register)

· RSM (resume from SSM)

Форма команды MOV, которая обращалась к регистрам тестирования, удалена из процессоров Р5 и всех последующих. Функция регистров тестирования теперь выполняют регистры MSR (Model Specific Register). Задействован новый регистр управления CR4. В регистр EFLAGS добавлены следующие флажки:

· VIF (virtual interrupt flag)

· VIP (virtual interrupt pending)

· ID (identification flag)

Рисунок 1. Формат регистра EFLAGS в процессорах Р5

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0 ID VIP VIF AC VM RF 0 IIT IOPL IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF

Изменения в прерываниях:

При попытке записать единицу в зарезервированный бит специальных регистров генерируется исключение #GP – нарушение общей защиты.

При обнаружении единицы в зарезервированном бите элемента каталога страниц или элемента таблицы страниц генерируется исключение #PG –страничное нарушение.

Добавлено новое исключение #18 – Machine Check Exception. Это исключение предназначено для сообщения об аппаратных ошибках. Исключение является специфическим для данной модели процессора и может быть изменено в последующих моделях. Управление исключением осуществляется через MSR-регистры.

Конвейер Pentium построен так, что позволяет выполнять до двух команд. Прозрачный для программ механизм предсказания ветвлений позволяет уменьшить задержки конвейера при переходах. В процессоре Pentium MMX в конвейер добавлены новые стадии. P5 может декодировать до двух инструкций за один такт и направлять их по двум логическим каналам (U и V – каналы). На этапе декодирования процессор проверяет, могут ли две команды выполнятся параллельно. Если да, то первая команда направляется в U-канал конвейера, а вторая – в V – канал. В противном случае только одна команда направляется в U – канал и ничего не поступает в V – канал.

На стадии предвыборки (PF – pre fetch) команды выбираются из кэша команд. Далее они поступают на стадию выборки (F – fetch). Здесь происходит разделение выбранной порции кода на отдельные команды, а также декодирование любых префиксов. Между стадией (F) и стадией (D1) находится FIFO – буфер. В нем может содержаться до четырех инструкций. FIFO – буфер прозрачен, т.е. он не отнимает времени, когда он пуст. В каждом такте из стадии (F) в FIFO – буфер может выпускаться до двух команд. Пара инструкций поступает (если это возможно) из FIFO на стадию (D1). Так как средняя скорость выполнения команд меньше чем две команды за такт, то FIFO обычно заполнен. Следовательно, FIFO может буферизировать задержки, возникающие на стадиях (PF) и (F), тем самым, предотвращая по возможности обеднение (когда в FIFO находится одна команда) или полную остановку конвейера. Если в одном из каналов возникла задержка, то команды, следующие за застрявшей командой, не могут продвигаться дальше, даже если застрявшая команда находится в другом канале. Например, параллельно по двум каналам следуют две команды, одна из которых требует один такт на стадии (EX), а другая – два такта. Пусть первая команда находится в V – канале, а вторая - в U – канале. Попав на стадию (EX), первый такт эти команды выполняют вместе. В следующем такте команда в U – канале остается на стадии (EX), а команда в V – канале переходит на следующую стадию, при этом на ее место ничего не поступает, т.е. параллельно с двухтактной командой не могут выполняться две однотактные. Решение о спаривании команд принимается только один раз при входе в конвейер. Это один из главных недостатков архитектуры P5.

PF – предвыборка команд.

F – определение границ команд.

D1 – декодирование команд.

D2 – генерация линейного адреса.

EX : INT – чтение операндов из памяти, выполнение команды, запись операндов в память.

MMX – чтение операндов из памяти, далее переход на стадию Mex.

FPU – чтение операндов из памяти и регистров, далее переход на стадию X1, преобразование данных ко внешнему формату, запись в память (FST).

WB – запись результата в регистр.

Mex – выполнение MMX – команд. Первый такт команды умножения.

Wb/M2 – запись результата однотактных команд. Второй такт умножения.

M3 – третий такт умножения.

Wmul – запись результата умножения.

X1 – преобразование данных ко внутреннему формату, запись в регистр.

X2 – выполнение FPU – команд.

WF – округление и запись результата в регистр.

В отличие от целочисленных команд, которые целиком выполняются на стадии (EX), а затем уходят на свои стадии, где продолжаются выполняться дольше. FPU – команды не могут спариваться с целочисленными командами в начале конвейера, но , после того как FPU – команда уйдет на стадию (X1), следующие за ней целочисленные команды смогут продвигаться дальше. Например, если запустить в конвейер сначала команду Fmul, то следующие за ней целочисленные команды смогут продолжать выполняться параллельно с Fmul. Если же запустить команду Mul, то она застрянет на стадии (EX), блокировав дальнейшее продвижение следующих команд по обоим каналам.

В процессоры семейства Р6 (Pentium Pro и Pentium II) добавлены следующие команды:

· CMOVcc (Conditional Move) – выполняет условную передачу данных

· FCMOVcc (Floating – point Conditional Move) – выпоняет условную предачу FPU-регистра в вершину стека [ST(0)]

· FCOMI (Floating – point Compare and set EFLAGS) – сравнивает значение двух FPU – регистров и устанавливает флажки регистра EFLAGS в соответствии с результатом.

· RDPMC (Read Performance Monitoring Counters) – считывает содержимое специфических счетчиков для мониторинга производительности процессора.

· UD2 (Undefined) – генерирует исключение недействительной операции).

Конвейер процессоров семейства Р6 существенно отличается от конвейера процессоров семейства Р5. В Р6 используется принципиально новый подход к выполнению команд. Применен ряд новых приемов для предотвращения заторов конвейера. Например, внеочередное выполнение команд (out-of-order execution), переименование регистров. Конвейер Р6 состоит из трех частей:

1. In-Order Issue Front End. На этом этапе происходит выборка команд из памяти и декодирование в микрооперации.

2. Out-of-Order Core. На этом этапе процессор выполняет микрооперации. Выполнение может происходить вне очереди.

3. In-Order Retirement unit. На этом этапе происходит удаление команд с конвейера.

Следует заметить, что в семействе Р5 допущены следующие ошибки:

· Микропроцессоры Pentium раннего производства, ошибка связанная с операцией FDIV.

· Микропроцессоры Pentium и Pentium MMX с ошибкой F0, т.е. процессоры «зависают» при выполнении последовательности четырех байтов F0, 0F, C7, C8.

2.5. Процессор Celeron

7 июня 1998 компания Intel представила процессор Celeron с тактовой частотой 300 МГц и снизила цену на ранее выпускавшуюся модель 266 МГц. Компания, однако, предпочитает не афишировать, что эти частоты – далеко не предел возможностей Celeron, и безо всяких переделок процессор способен на нечто большее.

Известный среди любителей «железа» сайт Tom’s Hardware Guide сообщает, что выпускаемые модели Celeron способны работать на гораздо более высокой частоте. Этому есть две объективные причины. Ядро Celeron изготовляется по последней, 0.25 – микронной технологии и имеет кодовое название Deschutes. Оно такое же, как у процессоров Pentium II, предназначенных для работы на частотах 333, 350 и 400 МГц (в младших моделях Pentium II используется ядро Klamath с 0.35 – микронной технологией). А кристалл процессора, грубо говоря, «не знает», в какой корпус его установили, Celeron или Pentium II. С другой стороны, у Celeron отсутствует кэш второго уровня (за счет чего, в основном, и достигается его дешевизна). Именно благодаря этому обстоятельству Celeron является практически идеальной моделью для «разгона» – ведь увеличению тактовой частоты мешает, в первую очередь, именно кэш – память со слишком большим временем доступа. Усилиями своих создателей Celeron пока от этой проблемы избавлен – только его наследник под названием Mendocino будет иметь немного кэша второго уровня и, следовательно, будет более чувствительным к поднятию тактовой частоты.

Так что можно на свой страх и риск брать Celeron, вставлять его в системную плату с чипсетом BX, выставлять 100 МГц на шине, и вперед... Здесь есть два момента. Во-первых, бескорпусный Celeron предназначен для использования в платах EX, и его нельзя «защелкнуть» в разъеме для Pentium II. Впрочем, он не будет выскакивать из слота, если компьютер не подвергать особо сильным ударам. Но есть еще второе, более существенное препятствие. Платы BX, изготовленные согласно спецификации Intel, автоматически определяют, способен ли процессор поддерживать частоту шины 100 МГц. Celeron, естественно, «говорит», что нет, и плата выставляет 66 МГц. Но и эту проблему можно обойти, причем довольно очень остроумно – с помощью кусочка липкой ленты или капельки лака для ногтей.. В последнее время, кстати, появилось много системных плат BX, в которых такая проверка отсутствует или ее можно отключить. Не «разгоняемостью» ли Celeron вызвано это явление?

Представитель фирмы Intel так прокомментировал это сообщение: «Для Celeron был придуман более мягкий 20 – ватный термальный пакет (у Pentium II 233 МГц – 24 – ваттный). Поскольку все это нужно помещать в корпус micro – ATX, и с Celeron используются радиаторы с меньшей площадью, то, естественно, приходиться снижать частоту, для того, что бы все не перегревалось». А вот что пишут на популярном в России сайте iXBT (ixbt.stack.net), посвященном технической поддержке PC: «последовал многочисленным соблазнам в том числе и на страницах iXBT. Разобрал картридж своего Celeron, прикрутив к его радиатору два вентилятора с обычных китайских кулеров, поставил 4*112=450 МГц. После 5 часов достаточно тяжелой для его работы, я полагаю, - Quake 2, Xwing Vs TieFighter, Die by Sword без 3D – акселераторов – радиатор процессора был на 3-4 градуса теплее температуры в комнате».