Помощь в написании студенческих работ
Антистрессовый сервис

Работа и устройство процессоров

Практическая работаПомощь в написанииУзнать стоимостьмоей работы

Дело в том, что при сбоях на этапе предсказания множественного перехода или упреждающего выполнения (что свойственно процессору при попытке предварительного определения команд) происходит удаление всех имеющихся данных и повторное заполнение конвейера**. Таким образом, сравнивая рабочие характеристики процессоров Athlon, Pentium III и Pentium 4, работающих на одной и той же тактовой частоте… Читать ещё >

Работа и устройство процессоров (реферат, курсовая, диплом, контрольная)

Проектная работа на тему:

Работа и устройство процессоров.

Что такое процессор. Производители

" Мозгом" персонального компьютера является микропроцессор, или центральный процессор — CPU (Central Processing Unit). Микропроцессор выполняет вычисления и обработку данных (за исключением некоторых математических операций, осуществляемых в компьютерах, имеющих сопроцессор) и, как правило, является самой дорогостоящей микросхемой компьютера. Во всех PC-совместимых компьютерах используются процессоры, совместимые с семейством микросхем Intel, но выпускаются и проектируются они как самой Intel, так и компаниями AMD, Cyrix, IDT и Rise Technologies. В настоящее время Intel доминирует на рынке процессоров, но так было далеко не всегда. Компания Intel прочно ассоциируется с изобретением первого процессора и его появлением на рынке. Но, несмотря на это, два наиболее известных в конце 1970;х годов процессора, используемых в ПК, не принадлежали Intel (один из них, правда, являлся прямым аналогом процессора Intel). В персональных компьютерах того времени чаще всего использовались процессоры Z-80 компании Zilog и 6502 компании MOS Technologies. Процессор Z-80 представлял собой улучшенный и более дешевый аналог процессора 8080. Сегодня подобная ситуация произошла с многочисленными клонами процессоров Intel Pentium, созданными компаниями AMD, Cyrix (теперь VIA), IDT и Rise Technologies. Более того, в некоторых случаях аналог приобретал большую популярность, чем оригинал. Компания AMD в течение прошлого года заняла значительную часть рынка и в результате получила большую прибыль. Но, несмотря на это, многие утверждают, что Intel все еще играет главенствующую роль на рынке процессоров ПК.

История развития процессоров до появления первого PC

Обратите внимание, что первый процессор был выпущен за 10 лет до появления первого компьютера IBM PC. Он был разработан компанией Intel, назван Intel 4004, а его выпуск состоялся 15 ноября 1971 года. Рабочая частота этого процессора составляла всего 108 кГц (0,108 МГц!). Этот процессор содержал 2 300 транзисторов и производился по 10-микронной технологии. Шина данных имела ширину 4 разряда и позволяла адресовать 640 байт памяти. Процессор 4004 использовался в схемах управления светофоров, анализаторах крови и даже на межпланетной научно-исследовательской станции NASA Pioneer 10!15 ноября 2001 года исполнилось 30 лет со дня появления первого микропроцессора. За эти годы быстродействие процессора увеличилось более чем в 18 500 раз (с 0,108 МГцдо 2 ГГц).В апреле 1972 года Intel выпустила процессор 8008, который работал на частоте 200 кГц. Он содержал 3 500 транзисторов и производился все по той же 10-микронной технологии. Шина данных была 8-разрядной и позволяла адресовать 16 Кбайт памяти. Этот процессор предназначался для использования в терминалах и программируемых калькуляторах. Следующая модель процессора, 8080, была анонсирована в апреле 1974 года. Этот процессор содержал 6 000 транзисторов и мог адресовать уже 64 Кбайт памяти. На нем был собран первый персональный компьютер (не PC) Altair 8800. В этом компьютере использовалась операционная система CP/M, а Microsoft разработала для него интерпретатор языка BASIC. Это была первая массовая модель компьютера, для которого были написаны тысячи программ. Со временем процессор 8080 стал настолько известен, что его начали копировать. В конце 1975 года несколько бывших инженеров Intel, занимавшихся разработкой процессора 8080, создали компанию Zilog. В июле 1976 года эта компания выпустила процессор Z-80, который представлял собой значительно улучшенную версию 8080. Этот процессор был не совместим с 8080 по контактным выводам, но сочетал в себе множество различных функций, например интерфейс памяти и схему обновления ОЗУ (RAM), что давало возможность разработать более дешевые и простые компьютеры. В Z-80 был также включен расширенный набор команд процессора 8080, позволяющий использовать его программное обеспечение. В этот процессор вошли новые команды и внутренние регистры, поэтому программное обеспечение, разработанное для Z-80, могло использоваться практически со всеми версиями 8080. Первоначально процессор Z-80 работал на частоте 2,5 МГц (более поздние версии работали уже на частоте 10 МГц), содержал 8,5 тыс. транзисторов и мог адресовать 64 Кбайт памяти. Компания Radio Shack выбрала процессор Z-80 для своего первого персонального компьютера TRS-80 Model 1. Следует заметить, что Z-80 стал первым процессором, используемым во многих новаторских системах, к числу которых относятся также системы Osborne и Kaypro. Этому примеру последовали другие компании, и вскоре Z-80 стал стандартным процессором для систем, работающих с операционной системой CP/M и наиболее распространенным программным обеспечением того времени. Intel не остановилась на достигнутом и в марте 1976 года выпустила процессор 8085, который содержал 6 500 транзисторов, работал на частоте 5 МГц и производился по 3-микронной технологии. В этом же году компания MOS Technologies выпустила процессор 6502, который был абсолютно непохож на процессоры Intel. Он был разработан группой инженеров компании Motorola. Эта же группа работала над созданием процессора 6800, который в будущем трансформировался в семейство процессоров 68 000. Цена первой версии процессора 8080 достигала 300 долларов, в то время как 8-разрядный процессор 6502 стоил всего около 25 долларов. Такая цена была более приемлема для Стива Возняка (Steve Wozniak), который встроил этот процессор в новые модели Apple I и Apple II. Процессор 6502 использовался также в системах, созданных компанией Commodore и другими производителями. Этот процессор и его преемники с успехом работали в игровых компьютерных системах, в число которых вошла приставка Nintendo Entertainment System (NES). Компания Motorola продолжила работу над созданием серии процессоров 68 000, которые впоследствии были использованы в компьютерах Apple Macintosh. В настоящее время в этих системах применяется процессор PowerPC, являющийся преемником 68 000.

В июне 1978 года Intel выпустила процессор 8086, который содержал набор команд под кодовым названием х86. Этот же набор команд до сих пор поддерживается в процессорах Pentium III. Процессор 8086 был полностью 16-разрядным — внутренние регистры и шина данных. Он содержал 29 000 транзисторов и работал на частоте 5 МГц. Благодаря 20-разрядной шине адреса он мог адресовать 1 Мбайт памяти. При создании процессора 8086, обратная совместимость с 8080 не предусматривалась. Но, в то же время значительное сходство их команд и языка позволили использовать более ранние версии программного обеспечения. Это свойство впоследствии сыграло важную роль в развитии программного обеспечения ПК, включая операционную систему CP/M (8080).Несмотря на высокую эффективность процессора 8086, его цена была все же слишком высока по меркам того времени и, что еще важнее, для его работы требовалась дорогая микросхема поддержки 16-разрядной шины данных. Чтобы уменьшить себестоимость процессора, в 1979 году компания Intel выпустила упрощенную версию 8086, которая получила название 8088. Процессор 8088 использовал те же внутреннее ядро и 16-разрядные регистры, что и 8086, мог адресовать 1 Мбайт памяти, но, в отличие от предыдущей версии, использовал внешнюю 8-разрядную шину данных. Это позволило обеспечить обратную совместимость с ранее разработанным 8-разрядным процессором 8085 и, таким образом, значительно снизить стоимость создаваемых системных плат и компьютеров. Именно поэтому IBM выбрала для своего первого ПК «урезанный» процессор 8088. Это решение имело далеко идущие последствия для всей компьютерной индустрии. Процессор 8088 был полностью программно-совместимым с 8086, что позволяло использовать 16-разрядное программное обеспечение. В процессорах 8085 и 8080 использовался очень похожий набор команд, поэтому программы, написанные для процессоров предыдущих версий, можно было достаточно легко преобразовать для процессора 8088. Это, в свою очередь, позволяло разрабатывать разнообразные программы для персонального компьютера IBM, что явилось залогом его будущего успеха. Не желая останавливаться на полпути, Intel была вынуждена обеспечить поддержку обратной совместимости 8088/8086 с большей частью процессоров, выпущенных в то время. В те годы еще поддерживалась обратная совместимость процессоров, что ничуть не мешало вводить различные новшества или дополнительные возможности. Одним из основных изменений стал переход от 16-разрядной внутренней архитектуры процессора 286 и более ранних версий к 32-разрядной внутренней архитектуре 386-го и последующих процессоров, относящихся к категории IA-32 (32-разрядная архитектура Intel). Однако до появления серийно выпускаемого программного обеспечения, поддерживающего 32-разрядные команды, оставалось еще более 10 лет. Например, в 1985 году с появлением процессора 386DX была представлена новая 32-разрядная архитектура, но только в 1995 году была выпущена Windows 95, ставшая первой широко распространенной операционной системой, поддерживающей архитектуру IA-32.

Введение

новой архитектуры не повлияло на обратную совместимость процессоров, так как практически все микросхемы IA-32 выполняли и 16-разрядные команды. Не так давно компания Intel выпустила процессор Itanium, представив тем самым новую 64-разрядную архитектуру Intel (IA-64). В течение ближайших нескольких лет эта архитектура будет использоваться в серверных (т. е. в более мощных и дорогих) микросхемах. Поддержка обратной совместимости процессоров IA-32, как вы знаете, выражается в возможности выполнения 16-разрядных команд. Микросхемы IA-64, в свою очередь, могут выполнять не только 32-разрядные (IA-32), но и 16-разрядные (IA-16) команды. В компании AMD была разработана конкурентоспособная, но несколько отличная 64-разрядная архитектура, получившая название x86−64; она будет использоваться в микросхемах с кодовым именем Hammer. Ее основным отличием является то, что архитектура AMD x86−64 более близка к существующей IA-32, чем новая 64-разрядная архитектура IA-64. Предполагается, что микросхемы x86−64 будут выполнять существующий 32-разрядный код быстрее, чем процессоры, созданные на основе IA-64. К сожалению, процессоры x86−64 не позволяют выполнять программный код, разработанный непосредственно для IA-64, что связано с коренными отличиями наборов команд и архитектуры. Процессор Itanium (IA-64) был выпущен в марте 2001 года и уже завоевал солидную репутацию на рынке серверов и рабочих станций. Растущая популярность IBM PC и архитектуры Intel, в некотором роде, ограничила развитие персонального компьютера. Тем не менее, успех IBM PC привел к разработке большого количества программ, периферийных устройств и аксессуаров, в результате чего PC стал промышленным стандартом. Процессор 8088, который использовался в первом PC, содержал около 30 тыс. транзисторов и работал на частоте 5 МГц. Одна из последних версий процессора Pentium III Xeon имеет кэш-память второго уровня объемом 2 Мбайт и содержит 140 млн. транзисторов — самый большой показатель за всю историю полупроводниковых устройств. На данный момент Intel выпустила процессоры, работающие на частоте свыше 3 ГГц, и следует заметить, что компания AMD практически не отстает от лидера. Все это является практическим подтверждением закона Мура, в соответствии с которым быстродействие процессоров и количество содержащихся в них транзисторов удваивается каждые 1,5−2 года.

Параметры процессоров

При описании параметров и устройства процессоров часто возникает путаница. Рассмотрим некоторые характеристики процессоров, в том числе разрядность шины данных и шины адреса, а также быстродействие. Процессоры можно классифицировать по двум основным параметрам: разрядности и быстродействию. Быстродействие процессора — довольно простой параметр. Оно измеряется в мегагерцах (МГц); 1 МГц равен миллиону тактов в секунду. Чем выше быстродействие, тем лучше (тем быстрее процессор). Разрядность процессора — параметр более сложный. В процессор входит три важных устройства, основной характеристикой которых является разрядность:

— шина ввода и вывода данных; внутренние регистры;

— шина адреса памяти.

Шина данных

Когда говорят о шине процессора, чаще всего имеют в виду шину данных, представленную как набор соединений (или выводов) для передачи или приема данных. Чем больше сигналов одновременно поступает на шину, тем больше данных передается по ней за определенный интервал времени и тем быстрее она работает. Разрядность шины данных подобна количеству полос движения на скоростной автомагистрали; точно так же, как увеличение количества полос позволяет увеличить поток машин по трассе, увеличение разрядности позволяет повысить производительность. Данные в компьютере передаются в виде цифр через одинаковые промежутки времени. Для передачи единичного бита данных в определенный временной интервал посылается сигнал напряжения высокого уровня (около 5 В), а для передачи нулевого бита данных — сигнал напряжения низкого уровня (около 0 В). Чем больше линий, тем больше битов можно передать за одно и то же время. Современные процессоры типа Pentium имеют 64-разрядные внешние шины данных. Это означает, что процессоры Pentium, включая Pentium 4, Athlon и даже Itanium, могут передавать в системную память (или получать из нее) одновременно 64 бит данных. Представим себе, что шина — это автомагистраль с движущимися по ней автомобилями. Если автомагистраль имеет всего по одной полосе движения в каждую сторону, то по ней в одном направлении в определенный момент времени может проехать только одна машина. Если вы хотите увеличить пропускную способность дороги, например, вдвое, вам придется ее расширить, добавив еще по одной полосе движения в каждом направлении. Таким образом, 8-разрядную микросхему можно представить в виде однополосной автомагистрали, поскольку в каждый момент времени по ней проходит только один байт данных (один байт равен восьми битам). Аналогично, 32-разрядная шина данных может передавать одновременно четыре байта информации, а 64-разрядная подобна скоростной автостраде с восемью полосами движения. Разрядность шины данных процессора определяет также разрядность банка памяти. Это означает, что 32-разрядный процессор, например класса 486, считывает из памяти или записывает в память 32 бита одновременно.

Шина адреса

Шина адреса представляет собой набор проводников; по ним передается адрес ячейки памяти, в которую или из которой пересылаются данные. Как и в шине данных, по каждому проводнику передается один бит адреса, соответствующий одной цифре в адресе. Увеличение количества проводников (разрядов), используемых для формирования адреса, позволяет увеличить количество адресуемых ячеек. Разрядность шины адреса определяет максимальный объем памяти, адресуемой процессором. Представьте себе следующее. Если шина данных сравнивалась с автострадой, а ее разрядность — с количеством полос движения, то шину адреса можно ассоциировать с нумерацией домов или улиц. Количество линий в шине эквивалентно количеству цифр в номере дома. Например, если на какой-то гипотетической улице номера домов не могут состоять более чем из двух цифр (десятичных), то количество домов на ней не может быть больше ста (от 00 до 99), т. е. 102. При трехзначных номерах количество возможных адресов возрастает до 103 (от 000 до 999) и т. д. В компьютерах применяется двоичная система счисления, поэтому при двухразрядной адресации можно выбрать только четыре ячейки (с адресами 00, 01, 10 и 11), т. е. 22, при трехразрядной — восемь (от 000 до 111), т. е. 23. Например, в процессорах 8086 и 8088 используется 20-разрядная шина адреса, поэтому они могут адресовать 220 (1 048 576) байт, или 1 Мбайт, памяти. Шины данных и адреса независимы, и разработчики микросхем выбирают их разрядность по своему усмотрению, но, чем больше разрядов в шине данных, тем больше их и в шине адреса. Разрядность этих шин является показателем возможностей процессора: количество разрядов в шине данных определяет способность процессора обмениваться информацией, а разрядность шины адреса — объем памяти, с которым он может работать.

Внутренние регистры

Количество битов данных, которые может обработать процессор за один прием, характеризуется разрядностью внутренних регистров. Регистр — это, по существу, ячейка памяти внутри процессора; например, процессор может складывать числа, записанные в двух различных регистрах, а результат сохранять в третьем регистре. Разрядность регистра определяет количество разрядов обрабатываемых процессором данных, а также характеристики программного обеспечения и команд, выполняемых чипом. Например, процессоры с 32-разрядными внутренними регистрами могут выполнять 32-разрядные команды, которые обрабатывают данные 32-разрядными порциями, а процессоры с 16-разрядными регистрами этого делать не могут. Во всех современных процессорах внутренние регистры являются 32-разрядными. Процессор Itanium имеет 64-разрядные внутренние регистры, которые необходимы для более полного использования функциональных возможностей новых версий операционных систем и программного обеспечения. В некоторых процессорах разрядность внутренней шины данных (а шина состоит из линий передачи данных и регистров!) больше, чем разрядность внешней. Так, например, в процессорах 8088 и 386SX разрядность внутренней шины только вдвое больше разрядности внешней шины. Такие процессоры (их часто называют половинчатыми или гибридными) обычно являются более дешевыми вариантами исходных. Например, в процессоре 386SХ внутренние операции 32-разрядные, а связь с внешним миром осуществляется через 16-разрядную внешнюю шину. Это позволяет разработчикам проектировать относительно дешевые системные платы с 16-разрядной шиной данных, сохраняя при этом совместимость с 32-разрядным процессором 386. Если разрядность внутренних регистров больше разрядности внешней шины данных, то для их полной загрузки необходимо несколько циклов считывания. Например, в процессорах 386DХ и 386SХ внутренние регистры 32-разрядные, но процессору 386SХ для их загрузки необходимо выполнить два цикла считывания, а процессору 386DХ достаточно одного. Аналогично передаются данные от регистров к системной шине. В процессорах Pentium шина данных 64-разрядная, а регистры 32-разрядные. Такое построение на первый взгляд кажется странным, если не учитывать, что в этом процессоре для обработки информации служат два 32-разрядных параллельных конвейера. Pentium во многом подобен двум 32-разрядным процессорам, объединенным в одном корпусе, а 64-разрядная шина данных позволяет быстрее заполнить рабочие регистры. Архитектура процессора с несколькими конвейерами называется суперскалярной. Современные процессоры шестого поколения, например Pentium Pro и Pentium II/III, имеют целых шесть внутренних конвейеров для выполняющихся команд. Хотя некоторые из указанных внутренних конвейеров специализированы (т. е. предназначены для выполнения специальных функций), эти процессоры могут все же выполнять три команды за один цикл. В последней версии процессора Itanium используются 10-ступенчатые параллельные конвейеры, которые позволяют выполнять до 20 операций в течение одного такта.

Быстродействие процессора

Быстродействие — это одна из характеристик процессора, которую зачастую толкуют по-разному. Быстродействие компьютера во многом зависит от тактовой частоты, обычно измеряемой в мегагерцах (МГц). Она определяется параметрами кварцевого резонатора, представляющего собой кристалл кварца, заключенный в небольшой оловянный контейнер. Под воздействием электрического напряжения в кристалле кварца возникают колебания электрического тока с частотой, определяемой формой и размером кристалла. Частота этого переменного тока и называется тактовой частотой. Микросхемы обычного компьютера работают на частоте нескольких миллионов герц. (Герц — одно колебание в секунду.) Быстродействие измеряется в мегагерцах, т. е. в миллионах циклов в секунду. Наименьшей единицей измерения времени (квантом) для процессора как логического устройства является период тактовой частоты, или просто такт. На каждую операцию затрачивается минимум один такт. Например, обмен данными с памятью процессор Pentium II выполняет за три такта плюс несколько циклов ожидания. (Цикл ожидания — это такт, в котором ничего не происходит; он необходим только для того, чтобы процессор не «убегал» вперед от менее быстродействующих узлов компьютера.) Различается и время, затрачиваемое на выполнение команд. Различное количество тактов, необходимых для выполнения команд, затрудняет сравнение производительности компьютеров, основанное только на их тактовой частоте (т. е. количестве тактов в секунду). Почему при одной и той же тактовой частоте один из процессоров работает быстрее другого? Причина кроется в производительности. Оценивать эффективность центрального процессора довольно сложно. Центральные процессоры с различными внутренними архитектурами выполняют команды по-разному: одни и те же команды в разных процессорах могут выполняться либо быстрее, либо медленнее. Чтобы найти удовлетворительную меру для сравнения центральных процессоров с различной архитектурой, работающих на разных тактовых частотах, Intel изобрела специфический ряд эталонных тестов, которые можно выполнить на микросхемах Intel, чтобы измерить относительную эффективность процессоров. Эта система тестов недавно была модифицирована для того, чтобы можно было измерять эффективность 32-разрядных процессоров; она называется индексом (или показателем) iCOMP 2.0 (intel Comparative Microprocessor Performance — сравнительная эффективность микропроцессора Intel). В настоящее время используется третья версия этого индекса — iCOMP 3.0.Почему при одной и той же тактовой частоте один из процессоров работает быстрее другого? Причина кроется в производительности. Процессор 486 обладает более высоким быстродействием по сравнению с 386-м, так как на выполнение команды ему требуется в среднем в два раза меньше тактов, чем 386-му. А процессору Pentium — в два раза меньше тактов, чем 486-му. Таким образом, процессор 486 с тактовой частотой 133 МГц (типа AMD 5×86−133) работает даже медленнее, чем Pentium с тактовой частотой 75 МГц! Это происходит потому, что при одной и той же частоте Pentium выполняет вдвое больше команд, чем процессор 486. Pentium II и III — приблизительно на 50% быстрее процессора Pentium, работающего на той же частоте, потому что они могут выполнять значительно больше команд в течение того же количества циклов. Сравнивая относительную эффективность процессоров, можно увидеть, что производительность процессора Pentium III, работающего на тактовой частоте 1 000 МГц, теоретически равна производительности процессора Pentium, работающего на тактовой частоте 1 500 МГц, которая, в свою очередь, теоретически равна производительности процессора 486, работающего на тактовой частоте 3 000 МГц, а она, в свою очередь, теоретически равна производительности процессоров 386 или 286, работающих на тактовой частоте 6 000 МГц, или же 8088-го, работающего на тактовой частоте 12 000 МГц. Если учесть, что первоначальный PC с процессором 8088 работал на тактовой частоте, равной всего лишь 4,77 МГц, то сегодняшние компьютеры работают более чем в 1,5 тыс. раз быстрее. Поэтому нельзя сравнивать производительность компьютеров, основываясь только на тактовой частоте; необходимо принимать во внимание то, что на эффективность системы влияют и другие факторы.

Эффективность процессоров

Процессоры Athlon XP, созданные в компании AMD, отличаются прекрасными рабочими характеристиками и обладают целым рядом других качеств, но при этом, к сожалению, возрождают печально известные традиции оценки эффективности. Обычно приводится некая условная величина, выраженная в мегагерцах, которая не столько определяет фактическое быстродействие той или иной микросхемы, сколько указывает на приблизительную оценку ее эффективности по отношению к процессору Intel Pentium 4 первого поколения, имеющему примерно те же параметры. Как бы странно это ни звучало, но это действительно так! Испытание рабочих характеристик, проведенное в компании AMD, показывает, что процессор Athlon, имеющий тактовую частоту 1,8 ГГц, работает примерно с той же производительностью, что и процессор Pentium 4 с рабочей частотой 2,2 ГГц. На этом основании данному процессору присваивается имя «Athlon XP 2200+», где число «2200+» обозначает его эффективность по отношению к процессору Pentium 4, выраженную в мегагерцах. Подобная схема сбыта продукции, при которой процессору присваивается значение, определяющее не столько реальную, сколько относительную оценку эффективности, ничего хорошего не дает. В определенных случаях такой маркетинг оставляет у потребителей весьма негативное впечатление, особенно когда выясняется реальная рабочая частота приобретенных ими процессоров и систем. Рабочие характеристики процессоров, приводимые AMD, можно приравнять к коэффициенту резкости погоды, который часто используется в прогнозах погоды в зимнее время. С одной стороны, существует реальная температура, а с другой — есть так называемый коэффициент резкости погоды, который представляет собой приблизительную оценку холода таким, каким он «ощущается». Расчетные значения, присваиваемые новым процессорам AMD Athlon XP, напоминают подобный «коэффициент производительности», величина которого определяет эффективность того или иного процессора по сравнению с Pentium 4. (Правда, AMD настаивает, что приводимые оценки эффективности не имеют непосредственного отношения к Pentium 4.)Проблема маркетинга AMD выражается в следующем: как продавать процессор, который выполняет те или другие операции быстрее, чем аналогичные модели основного конкурента с практически равными тактовыми частотами? Например, процессор AMD Athlon XP, имеющий тактовую частоту 1,8 ГГц, работает значительно быстрее, чем процессор Pentium 4 с частотой 1,8 ГГц, и достигает производительности, характерной для Pentium 4 с рабочей частотой 2,2 ГГц. Столь очевидная несоразмерность производительности процессоров связана с применением в микросхемах P4 совершенно новой архитектуры с более глубокой конвейерной обработкой команд. Pentium 4 имеет 20-ступенчатый конвейер, соответствующий 11-ступенчатому конвейеру процессоров Athlon или 10-ступенчатому конвейеру процессоров Pentium Ш/Celeron. При более глубокой конвейерной обработке команды разбиваются на небольшие микрокоманды, что позволяет достичь более высокой тактовой частоты при использовании одной и той же кремниевой технологии. Однако это также означает, что по сравнению с процессором Athlon (или Pentium III) в каждом цикле выполняется меньше команд.

Дело в том, что при сбоях на этапе предсказания множественного перехода или упреждающего выполнения (что свойственно процессору при попытке предварительного определения команд) происходит удаление всех имеющихся данных и повторное заполнение конвейера**. Таким образом, сравнивая рабочие характеристики процессоров Athlon, Pentium III и Pentium 4, работающих на одной и той же тактовой частоте, можно обнаружить, что при выполнении стандартных эталонных тестов процессоры Athlon и Pentium III оказываются более эффективными, поскольку выполняют в течение цикла большее количество команд, чем Pentium 4. На первый взгляд это кажется недостатком процессора Pentium 4, но в действительности мы имеем дело с особенностью его конструкции. Разработчики Intel приводят следующие аргументы: несмотря на то что использование более глубокой конвейерной обработки команд может привести к 30%-му снижению общей эффективности процессора, это позволяет увеличить его тактовую частоту по крайней мере на 50% по сравнению с процессорами Athlon или Pentium III, имеющими более короткие конвейеры. Применение 20-ступенчатого конвейера в архитектуре P4 позволяет достичь более высоких тактовых частот при использовании стандартной кремниевой технологии. Например, оригинальные процессоры Athlon XP и Pentium 4 создавались с помощью одной и той же 0,18-микронной технологии (этот показатель определяет линейную ширину компонентов, вытравленных на микросхемах). 20-ступенчатый конвейер архитектуры P4 позволяет при использовании 0,18-микронной технологии достичь тактовой частоты 2,0 ГГц, в то время как при тех же условиях частота процессора Athlon с 11-ступенчатым конвейером достигает 1,73 ГГц, а процессоров Pentium III/Celeron с 10-ступенчатым конвейером — всего лишь 1,13 ГГц. Благодаря использованию новой 0,13-микронной технологии тактовая частота процессора Pentium 4 увеличилась до 2,53 ГГц, в то время как максимальная рабочая частота Athlon XP достигла всего лишь 1,8 ГГц. Несмотря на то, что Pentium 4 выполняет в каждом цикле меньшее количество команд, более высокая частота периодической подачи импульсов позволяет в полной мере компенсировать снижение эффективности. Таким образом, сравнение процессоров Pentium 4 и Athlon XP указывает на то, что высокая тактовая частота первого процессора практически уравновешивается более высокой скоростью обработки данных второго. К сожалению, при высоких тактовых частотах оценка эффективности процессоров становится все более сложной. Это связано с тем, что в процессорах Intel с рабочей частотой более 2 ГГц использован 0,13-микронный (уменьшенный) кристалл, удвоена кэш-память второго уровня (с 256 до 512 Кбайт), а рабочая частота шины процессора увеличена с 400 до 533 МГц. Существующая система оценки эффективности, которая может использоваться только для сравнения создаваемых процессоров с более старым (и более медленным) 0,18-микронным процессором Pentium 4, не совсем подходит для более новых 0,13-микронных Pentium 4, особенно для тех, которые имеют шину процессора с тактовой частотой 533 МГц. Проблема заключается в шкале сравнительной оценки компании AMD, где в качестве точки отсчета используется некая переменная величина. Существует еще одна проблема: результаты сравнительной оценки непосредственно зависят от выполняемых эталонных тестов. Переработка приложений и операционных систем для повышения эффективности 20-ступенчатого конвейера процессора Pentium 4 позволила снизить количество командных предсказаний и возможных ошибок внутреннего процессора, что привело к уменьшению времени, необходимого для удаления имеющихся данных и повторного заполнения конвейера. В свою очередь, это привело к повышению общей эффективности выполнения команд для Pentium 4, в результате чего современное программное обеспечение, оптимизированное для более глубокого конвейера, будет выполняться процессором Pentium 4 значительно быстрее. Подобная ситуация приводит к сохранению негативного отношения к относительным оценкам компании AMD, следствием чего может быть их неточная интерпретация в будущем. Нет никаких сомнений в том, что параметры новых процессоров Athlon XP, представленные компанией AMD, достаточно точны: они превосходят менее эффективные процессоры, имеющие более высокую тактовую частоту. Единственное отличие состоит в том, что архитектура Pentium 4 позволяет достичь значительно более высокой рабочей частоты посредством одного и того же технологического процесса. Во многих системах тактовая частота процессора выводится на экран компьютера непосредственно во время начальной загрузки. В операционной системе Windows XP тактовая частота центрального процессора указана во вкладке General (Общие) меню System Properties (Система: Свойства). В то же время AMD предпочла бы не указывать непосредственное быстродействие процессора. Фактически AMD не рекомендует использовать без специальной проверки системные платы, предназначенные для Athlon XP, в том случае, если они указывают действительную тактовую частоту процессора. В будущем любопытному пользователю, желающему выяснить фактическую тактовую частоту процессора, придется воспользоваться соответствующей программой сторонних разработчиков, например SiSoft Sandra или Intel Frequency ID Utility. Одно можно сказать достаточно определенно: приблизительные значения тактовой частоты, выраженные в мегагерцах (МГц) или гигагерцах (ГГц), далеко не всегда являются надежным способом сравнения процессоров, поэтому генерирование псевдомегагерц может еще больше запутать непосвященного человека.

Конвейер

Конвейер (англ. conveyer, от convey — перевозить), транспортёр, машина непрерывного действия для перемещения сыпучих, кусковых или штучных грузов. Идея конвейера, давным-давно предложенная Генри Фордом, состоит в том, что производительность цепочки последовательных действий определяется не сложностью этой цепочки, а лишь длительностью самой сложной операции. Иными словами, совершенно неважно, сколько человек занимаются производством автомобиля и как долго длится его изготовление в целом, — важно то, что если каждый человек в цепочке тратит, скажем, на свою операцию одну минуту, то с конвейера будет сходить один автомобиль в минуту, ни больше и ни меньше; независимо от того, сколько операций нужно совершить с отдельным автомобилем и сколько заняла бы его сборка одним человеком. Применительно к процессорам принцип конвейера означает, что если мы сумеем разбить выполнение машинной инструкции на несколько этапов, то тактовая частота (а вернее, скорость, с которой процессор забирает данные на исполнение и выдает результаты) будет обратно пропорциональна времени выполнения самого медленного этапа. Если это время удастся сделать достаточно малым (а чем больше этапов на конвейере, тем они короче), то мы сумеем резко повысить тактовую частоту, а значит, и производительность процессора. Процедуру выполнения практически любой инструкции можно разбить как минимум на пять непересекающихся этапов:

1.Выборка инструкции (FETCH) из памяти. Из программы извлекается инструкция, которую нужно выполнить.

2.Декодирование инструкции (DECODE). Процессор обрабатывает полученную команду, и переправляет запрос на нужное исполнительное устройство.

3.Подготовка исходных данных для выполнения инструкции.

4.Собственно выполнение инструкции (EXECUTE).5.Сохранение полученных результатов.

Конвейеризация потенциально применима к любой процессорной архитектуре, независимо от набора команд и положенных в ее основу принципов. Даже самый первый x86-процессор, Intel 8086, уже содержал своеобразный примитивный «двухстадийный конвейер» — выборка новых инструкций (FETCH) и их исполнение осуществлялись в нем независимо друг от друга. Однако реализовать что-то более сложное для CISC-процессоров оказалось трудно: декодирование неоднородных CISC-инструкций и их очень сильно различающаяся сложность привели к тому, что конвейер получается чересчур замысловатым, катастрофически усложняя процессор (о CISC и RISC пойдет немного дальше). Подобных трудностей у RISC-архитектуры гораздо меньше (а SPARC и MIPS, например, и вовсе были специально оптимизированы для конвейеризации), так что конвейеризированные RISC-процессоры появились на рынке много раньше, чем аналогичные x86. Недостатки конвейера неочевидны, но, как обычно и бывает, из-за нескольких «мелочей» реализовать грамотно организованный конвейер совсем не просто.

Основных проблем три.

1.Необходимость наличия блокировок конвейера. Дело в том, что время исполнения большинства инструкций может очень сильно варьироваться. Скажем, умножение (и тем более деление) чисел требуют (на стадии EXECUTE) нескольких тактов, а сложение или побитовые операции — одного такта; а для операций Load и Store, которые могут обращаться к разным уровням кэш-памяти или к оперативной памяти, это время вообще не определено (и может достигать сотен тактов). Соответственно, должен быть какой-то механизм, который бы «притормаживал» выборку и декодирование новых инструкций до тех пор, пока не будут завершены старые. Методов решения этой проблемы много, но их развитие приводит к одному — в процессорах прямо перед исполнительными устройствами появляются специальные блоки-диспетчеры (dispatcher), которые накапливают подготовленные к исполнению инструкции, отслеживают выполнение ранее запущенных инструкций и по мере освобождения исполнительных устройств отправляют на них новые инструкции. Даже если исполнение займет много тактов — внутренняя очередь диспетчера позволит в большинстве случаев не останавливать подготавливающий все новые и новые инструкции конвейер [Новые инструкции тоже не каждый такт удается декодировать, так что возможна и обратная ситуация: новых инструкций за такт не появилось, и диспетчер отправляет инструкции на выполнение «из старых запасов» ]. Так в процессоре возникает разделение на две независимо работающие подсистемы: Front-end (блоки, занимающиеся декодированием инструкций и их подготовкой к исполнению) и Back-end (блоки, собственно исполняющие инструкции).

2.Необходимость наличия системы сброса процессора. Поскольку операции FETCH и EXECUTE всегда выделены в отдельные стадии конвейера, то в тех случаях, когда в программном коде происходит разветвление (условный переход), зачастую оказывается, что по какой из веток пойти — пока неизвестно: инструкция, вычисляющая код условия, еще не выполнена. В результате процессор вынужден либо приостанавливать выборку новых инструкций до тех пор, пока не будет вычислен код условия (а это может занять очень много времени и в типичном цикле страшно затормозит процессор), либо, руководствуясь соображениями блока предсказания переходов, «угадывать», какой из переходов скорее всего окажется правильным.3.Наконец, конвейер обычно требует наличия специального планировщика (scheduler), призванного решать конфликты по данным. Если в программе идет зависимая цепочка инструкций (когда инструкция-2, следующая за инструкцией-1, использует для своих вычислений данные, только что вычисленные инструкцией-1), а время исполнения одной инструкции (от момента запуска на стадию EXECUTE и до записи полученных результатов в регистры) превосходит один такт, то мы вынуждены придержать выполнение очередной инструкции до тех пор, пока не будет полностью выполнена ее предшественница. К примеру, если мы вычисляем выражение вида A*B+C с сохранением результата в переменной X (XfA*B+C), то процессор, выполняя соответствующую выражению цепочку из двух команд типа R4fR1*R2; R0fR3+R4, должен вначале дождаться, пока первая инструкция сохранит результат умножения A*B, и только потом прибавлять к полученному результату число С. Цепочки зависимых инструкций в программах — скорее правило, нежели исключение, а исполнение команды с записью результата в регистры за один такт — наоборот, скорее исключение, нежели правило, поэтому в той или иной степени с проблемой зависимости по данным любая конвейерная архитектура обязательно сталкивается. Оттого-то в конвейере и появляются сложные декодеры, заранее выявляющие эти зависимости, и планировщики, которые запускают инструкции на исполнение, выдерживая паузу между запуском главной инструкции и зависимой от нее. Идея конвейера в процессоре очень красива на словах и в теории, однако реализовать ее даже в простом варианте чрезвычайно трудно. Но выгода от конвейеризации столь велика и несомненна, что приходится с этими трудностями мириться, ведь ничего лучшего до сих пор не придумано. В 1991;92 годах корпорация Intel, освоив производство сложнейших кристаллов с более чем миллионом транзисторов, выпустила i486 — классический CISC-процессор архитектуры x86, но с пятистадийным конвейером. Чтобы вы смогли оценить этот рывок, приведу две цифры: тактовую частоту по сравнению с i386 введение конвейера позволило увеличить втрое, а производительность на единицу частоты — вдвое. В i386 многие инструкции выполнялись за несколько тактов; а в i486 среднее «время» исполнения инструкции в тактах удалось снизить почти вдвое. Правда, расплатой за это стала чудовищная сложность ядра i486; но такие «мелочи» по меркам индустрии центральных процессоров — пустяк: быстро растущие технологические возможности кремниевой технологии уже через пару лет позволили освоить производство i486 всем желающим. Но к тому моменту RISC-архитектуры сделали еще один шаг вперед — к суперскалярным процессорам.

Кэш-память

Следует заметить, что, несмотря на повышение скорости ядра процессора, быстродействие памяти остается на прежнем уровне. При этом возникает вопрос: как добиться повышения производительности процессора, если память, используемая для передачи данных, работает довольно медленно? Ответ прост: «кэш». Попросту говоря, кэш-память представляет собой быстродействующий буфер памяти, используемый для временного хранения данных, которые могут потребоваться процессору. Это позволяет получать необходимые данные быстрее, чем при извлечении из оперативной памяти. Одним из дополнительных свойств, отличающих кэш-память от обычного буфера, являются встроенные логические функции. Кэш-память можно по праву назвать разумным буфером. Буфер содержит случайные данные, которые обычно обрабатываются по принципу «первым получен, первым выдан» или «первым получен, последним выдан». Кэш-память, в свою очередь, содержит данные, которые могут потребоваться процессору с определенной степенью вероятности. Это позволяет процессору работать практически с полной скоростью без необходимости ожидания данных, извлекаемых из более медленной оперативной памяти. Кэш-память реализована в виде микросхем статической оперативной памяти (SRAM), установленных на системной плате или встроенных в процессор. В современных ПК используются два уровня кэш-памяти, получившие название кэш-памяти первого (L1) и второго (L2) уровней.

Кэш-память первого уровня

Во всех процессорах, начиная с 486-го, имеется встроенный (первого уровня) кэш-контроллер с кэш-памятью объемом 8 Кбайт в процессорах 486DX, а также 32, 64 Кбайт и более в современных моделях. Кэш — это быстродействующая память, предназначенная для временного хранения программного кода и данных. Обращения к встроенной кэш-памяти происходят без состояний ожидания, поскольку ее быстродействие соответствует возможностям процессора, т. е. кэш-память первого уровня (или встроенный кэш) работает на частоте процессора. Использование кэш-памяти сглаживает традиционный недостаток компьютера, состоящий в том, что оперативная память работает более медленно, чем центральный процессор (так называемый эффект «бутылочного горлышка»). Благодаря кэш-памяти процессору не приходится ждать, пока очередная порция программного кода или данных поступит из относительно медленной основной памяти, что приводит к ощутимому повышению производительности. В современных процессорах встроенный кэш играет еще более важную роль, потому что он часто является единственным типом памяти во всей системе, который может работать синхронно с процессором. В большинстве современных процессоров используется множитель тактовой частоты, следовательно, они работают на частоте, в несколько раз превышающей тактовую частоту системной платы, к которой они подключены. Например, тактовая частота (1,4 ГГц), на которой работает процессор Pentium III, в 10,5 раз превышает тактовую частоту системной платы, равную 133 МГц. Поскольку оперативная память подключена к системной плате, она также может работать только на тактовой частоте, не превышающей 133 МГц. В такой системе из всех видов памяти только встроенный кэш может работать на тактовой частоте 1,4 ГГц. Рассмотренный в этом примере процессор Pentium III на 1,4 ГГц имеет встроенный кэш первого уровня общим объемом 32 Кбайт (в двух отдельных блоках по 16 Кбайт) и кэш второго уровня объемом 512 Кбайт, работающий на полной частоте ядра процессора. Если данные, необходимые процессору, находятся уже во внутренней кэш-памяти, то задержек не возникает. В противном случае центральный процессор должен получать данные из кэш-памяти второго уровня или (в менее сложных системах) из системной шины, т. е. непосредственно из основной памяти. Чтобы понять значение кэш-памяти, необходимо сравнить относительные скорости процессоров и ОЗУ Основная проблема заключается в том, что быстродействие процессора выражается обычно в МГц (в миллионах тактов в секунду), в то время как скорость памяти выражается в наносекундах (т е в миллиардных долях секунды) Для процессора, работающего на частоте 200 МГц, потребуется 4 нс памяти. Обратите внимание, что с процессором 233 МГц обычно используется системная плата с тактовой частотой 66 МГц, что соответствует скорости 15 нс на цикл. Основная память, скорость которой равна 60 нс (общий параметр практически для всех систем класса Pentium), приравнивается к тактовой частоте, примерно равной 16 МГц. Таким образом, в типичную систему Pentium 233 входит процессор, работающий на частоте 233 МГц (4,3 нс на цикл), системная плата, тактовая частота которой 66 МГц (15 нс на цикл) и основная память, работающая на частоте 16 МГц (60 нс на цикл).

Как работает кэш-память первого уровня

Для того чтобы разобраться с принципами работы кэш-памяти первого и второго уровней, рассмотрим прекрасную аналогию, написанную Скотом Мюллером. Герой нашей истории (в данном случае — вы), вкушающий различные яства, выступает в роли процессора, который извлекает необходимые данные из памяти и проводит их обработку. Кухня, на которой готовятся ваши любимые блюда, представляет собой основную оперативную память (SIMM/DIMM). Официант является кэш-контроллером, а стол, за которым вы сидите, выступает в качестве кэш-памяти первого уровня. Роль кэш-памяти второго уровня выполняет тележка с заказанными блюдами, неспешно путешествующая между кухней и вашим столом. Роли распределены, пора начинать нашу историю. Ежедневно примерно в одно и то же время вы обедаете в определенном ресторане. Входите в обеденный зал, садитесь за столик и заказываете, например, хот-дог. Для того чтобы сохранить соответствие событий, предположим, что средняя скорость поглощения пищи равна одному биту в четыре секунды (цикл процессора 233 МГц составляет около 4 нс). А также определим, что повару (т. е. кухне) для приготовления каждого заказанного блюда потребуется 60 с (значит, скорость основной памяти 60 нс). Таким образом, при первом посещении ресторана вы садитесь за столик и заказываете хот-дог, после чего приходится ждать целых 60 секунд, пока приготовят заказанное блюдо. Когда официант наконец-то приносит заказ, вы не спеша, со средней скоростью, принимаетесь за еду. Быстренько доев хот-дог, подзываете к себе официанта и заказываете гамбургер. Пока его готовят, вы снова ждете те же 60 секунд. Принесенный гамбургер съедается с той же скоростью. Подобрав последние крошки, снова зовете официанта и заказываете уже котлеты «по-киевски». После 60-секундного ожидания принесенное блюдо съедается с аналогичной скоростью. После этого вы решаете заказать на десерт, скажем, яблочный пирог. Заказанный пирог вы получаете после ставшего привычным 60-секундного ожидания. Одним словом, обед состоит главным образом из длительных ожиданий, которые перемежаются энергичным поглощением заказываемых блюд. После того как два дня подряд ровно в 18.00 вы приходите в ресторан и заказываете одни и те же блюда в одной и той же последовательности, у официанта появляется дельная мысль: «Сегодня в 18.00 снова появится этот странный посетитель и сделает свой обычный заказ: хот-дог, гамбургер, котлеты „по-киевски“ и яблочный пирог на десерт. Почему бы не приготовить эти блюда заранее? Я думаю, он должным образом оценит мои старания». Итак, вы приходите в ресторан, заказываете хот-дог и официант сразу же, без малейшей паузы, ставит перед вами заказанное блюдо. После того как вы разделались с хот-догом и собираетесь заказать очередное блюдо, на столе появляется тарелка с гамбургером. Оставшаяся часть обеда проходит примерно так же. Вы стремительно, со скоростью один бит в четыре секунды, поглощаете пищу, не ожидая, пока заказанное блюдо будет приготовлено на кухне. На сей раз время обеда заполнено исключительно тщательным пережевыванием пищи, и все благодаря смекалке и практичному подходу официанта. Приведенный пример достаточно точно описывает работу кэш-памяти первого уровня в процессоре. Роль кэш-памяти первого уровня в данном случае выполняет поднос, на котором может находиться одно или несколько блюд. При отсутствии официанта пространство подноса представляет собой некий резервный запас (т. е. буфер) продуктов питания. Если буфер заполнен, значит, можно есть до тех пор, пока поднос не опустеет. Обдуманно пополнить его содержимое, к сожалению, некому. Официант представляет собой кэш-контроллер, предпринимающий определенные меры и пытающийся решить, какие же блюда следует заранее поставить на стол в соответствии с вашими возможными пожеланиями. Подобно настоящему кэш-контроллеру, официант воспользуется своим опытом для того, чтобы определить, какое блюдо будет заказано следующим. Если он определит правильно, значит, не придется долго ждать. Настал день четвертый. Вы появляетесь в ресторане, как обычно, ровно в 18.00 и начинаете с привычного хот-дога. Официант, изучивший к тому времени ваши вкусы, уже приготовил хот-дог, и вы сразу же, не ожидая, приступаете к трапезе. После хот-дога официант приносит вам гамбургер и вместо слов благодарности слышит: «Вообще-то я гамбургер не заказывал. Принесите мне, пожалуйста, отбивную». Официант ошибся в своих предположениях, и вам снова придется ждать целых 60 секунд, пока на кухне не приготовят заказанное блюдо. Подобное событие, т. е. попытка доступа к той части кэшированного файла, которая отсутствует в кэш-памяти, называется промахом кэша (cache miss). Как следствие, возникает пауза, или, если говорить о системе Pentium 233 МГц, при каждом промахе кэша быстродействие системы снижается до 16 МГц (т. е. до скорости оперативной памяти). Кэш-память первого уровня большей части процессоров Intel имеет коэффициент совпадения, равный примерно 90%.Это означает, что кэш-память содержит корректные данные 90% времени, а следовательно, процессор работает на полной скорости (в данном случае с частотой 233 МГц) примерно 90% всего времени. Оставшиеся 10% времени кэш-контроллер обращается к более медленной основной памяти, во время чего процессор находится в состоянии ожидания. Фактически происходит снижение быстродействия системы до уровня оперативной памяти, скорость которой равна 60 нс, или 16 МГц. В нашем примере, быстродействие процессора примерно в 14 раз выше скорости оперативной памяти. С развитием научного прогресса скорость памяти увеличилась с 16 МГц (60 нс) до 266 Мгц (3,8 нс), в то время как тактовая частота процессоров выросла до 2 ГГц и более. Таким образом, даже в самых современных системах память все еще в 7,5 (или более) раз медленнее процессора. Кэш-память позволяет компенсировать эту разность. Основная особенность кэш-памяти первого уровня состоит в том, что она всегда интегрирована с ядром процессора и работает на той же частоте. Это свойство в сочетании с коэффициентом совпадений, равным 90%, делает кэш-память важной составляющей эффективности системы.

Показать весь текст
Заполнить форму текущей работой