Рефераты
 

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

b>Кэш-память

Следует заметить, что, несмотря на повышение скорости ядра процессора, быстродействие памяти остается на прежнем уровне. При этом возникает вопрос: как добиться повышения производительности процессора, если память, используемая для передачи данных, работает довольно медленно? Ответ прост: "кэш". Попросту говоря, кэш-память представляет собой быстродействующий буфер памяти, используемый для временного хранения данных, которые могут потребоваться процессору. Это позволяет получать необходимые данные быстрее, чем при извлечении из оперативной памяти. Одним из дополнительных свойств, отличающих кэш-память от обычного буфера, являются встроенные логические функции. Кэш-память можно по праву назвать разумным буфером. Буфер содержит случайные данные, которые обычно обрабатываются по принципу "первым получен, первым выдан" или "первым получен, последним выдан". Кэш-память, в свою очередь, содержит данные, которые могут потребоваться процессору с определенной степенью вероятности. Это позволяет процессору работать практически с полной скоростью без необходимости ожидания данных, извлекаемых из более медленной оперативной памяти. Кэш-память реализована в виде микросхем статической оперативной памяти (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%, делает кэш-память важной составляющей эффективности системы.

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

Для того чтобы уменьшить ощутимое замедление системы, возникающее при каждом промахе кэша, задействуется кэш-память второго уровня. Развивая аналогию с рестораном, которая использовалась для объяснения кэш-памяти первого уровня, можно обозначить вторичный кэш как сервировочный столик с "дежурными" блюдами, расположение которого позволяет официанту принести любое из имеющихся блюд через 15 секунд. В системе класса Pentium (Socket 7) кэш-память второго уровня установлена на системной плате, т. е. работает на тактовой частоте системной платы (66 МГц, или 15 нс). Рассмотрим ситуацию, когда вы заказываете блюдо, которого нет в числе ранее принесенных. В этом случае, вместо того чтобы отправиться на кухню и через 60 секунд принести приготовленное блюдо, официант в первую очередь проверяет столик с дежурными блюдами. При наличии там заказанного блюда он возвращается уже через 15 секунд. Результат в реальной системе выражается в следующем: вместо снижения быстродействия системы с 233 до 16 Мгц и соответственно скорости основной памяти до 60 нс происходит извлечение необходимых данных из кэш-памяти второго уровня, скорость которой равна 15 нс (66 МГц). Таким образом, быстродействие системы изменяется с 233 до 66 МГц. Более современные процессоры содержат встроенную кэш-память второго уровня, которая работает на той же скорости, что и ядро процессора, причем скорости кэш-памяти первого и второго уровней одинаковы. Если описывать новые микросхемы с помощью аналогий, то в этом случае официант размещает столик с дежурными блюдами рядом с тем столиком, за которым вы сидите. При этом, если заказанного блюда на вашем столе нет (промах кэш-памяти первого уровня), официанту всего лишь необходимо дотянуться к находящемуся рядом столику с дежурными блюдами (кэш-память второго уровня), что потребует гораздо меньше времени, чем 15-секундная прогулка на кухню, как это было в более ранних конструкциях

Конструкция и эффективность кэш-памяти

Коэффициент совпадения кэш-памяти как первого, так и второго уровней составляет 90%. Таким образом, рассматривая систему в целом, можно сказать, что 90% времени она работает с полной тактовой частотой (в нашем примере 233 МГц), получая данные из кэш-памяти первого уровня. Десять процентов времени данные извлекаются из кэш-памяти второго уровня. Процессор работает с кэш-памятью второго уровня только 90% этого времени, а оставшиеся 10% вследствие промахов кэша -- с более медленной основной памятью. Таким образом, объединяя кэш-память первого и второго уровней, получаем, что обычная система работает с частотой процессора 90% времени (в нашем случае 233 МГц), с частотой системной платы 9% времени (т. е. 90% от 10% при частоте 66 МГц) и с тактовой частотой основной памяти примерно 1% времени (10% от 10% при частоте 16 МГц). Это ясно демонстрирует важность кэш-памяти первого и второго уровней; при отсутствии кэш-памяти система часто обращается к ОЗУ, скорость которого значительно ниже, чем скорость процессора. Это наводит на интересные мысли. Представьте, что вы собираетесь повысить эффективность оперативной памяти или кэш-памяти второго уровня вдвое. На что же именно потратить деньги? Принимая во внимание, что оперативная память непосредственно используется примерно 1% времени, двойное увеличение ее производительности приведет к повышению быстродействия системы только в 1% времени! Нельзя сказать, что это звучит достаточно убедительно. С другой стороны, если вдвое повысить эффективность кэш-памяти второго уровня, получится двойное увеличение эффективности системы в 9% времени, что является более значимым улучшением. Системотехники и специалисты по разработке процессоров компаний Intel и AMD зря времени не теряли и разработали методы повышения эффективности кэш-памяти второго уровня. В системах класса Pentium (P5) кэш-память второго уровня обычно устанавливается на системной плате и работает соответственно с ее тактовой частотой. Intel значительно повысила производительность процессоров, переместив кэш-память с системной платы непосредственно в процессор, что повлекло за собой увеличение ее рабочей частоты до частоты процессора. Сначала микросхемы кэша устанавливались в одном корпусе вместе с основным процессором. Но такая конструкция оказалась слишком дорогой, поэтому, начиная с процессоров семейства Pentium II, компания Intel стала приобретать микросхемы кэш-памяти у сторонних производителей (Sony, Toshiba, NEC, Samsung и т. д.). Микросхемы поставлялись уже в готовом виде, в корпусном исполнении, поэтому Intel начала их устанавливать на монтажной плате рядом с процессором. Именно поэтому процессор Pentium II был изначально разработан в виде картриджа. Одна из существенных проблем заключалась в быстродействии микросхем кэш-памяти сторонних производителей. Скорость наиболее быстрых микросхем достигала 3 нс и выше, что было эквивалентно тактовой частоте 333 МГц. Но процессоры уже работали на более высоких скоростях, поэтому в Pentium II и первых моделях Pentium III кэш-память второго уровня работает на половинной частоте процессора. В некоторых моделях процессора Athlon скорость кэш-памяти второго уровня уменьшена до двух пятых или даже одной трети тактовой частоты ядра. Качественный скачок в технологии произошел с появлением процессоров Celeron 300A и выше. В этих процессорах внешние микросхемы кэш-памяти второго уровня не используются. Вместо этого кэш-память как первого, так и второго уровней была интегрирована непосредственно в ядро процессора. Таким образом, кэш-память обоих уровней работает с полной тактовой частотой процессора, что позволяет повышать ее быстродействие при возможном увеличении скорости процессора. В последних моделях Pentium III, а также во всех процессорах Xeon и Celeron кэш-память второго уровня по-прежнему работает с тактовой частотой ядра процессора, а значит, при неудачном обращении в кэш-память первого уровня ожидания или замедления операций не происходит. В современных моделях процессоров Athlon и Duron также используется встроенная кэш-память, работающая с частотой ядра. Как вы знаете, при неудачном обращении к внешней кэш-памяти происходит снижение скорости кэша до половинной частоты ядра или, что еще хуже, до частоты более медленной системной платы. Использование встроенного кэша позволяет значительно повысить эффективность процессора, так как 9% времени в системе будет использоваться кэш-память второго уровня, работающая с полной частотой ядра. К числу преимуществ встроенной кэш-памяти относится также уменьшение ее стоимости, так как она содержит меньшее число компонентов. Вернемся к рассмотренной ранее аналогии, используя в качестве примера современный процессор Pentium 4 с тактовой частотой 2 ГГц. Теперь ваша скорость поглощения пищи равна одному байту в секунду (тактовой частоте 2 ГГц соответствует длительность цикла 0,5 нс). Кэш-память первого уровня работает на этой же частоте, т. е. скорость поглощения блюд, находящихся на вашем столе, равна скорости процессора (а столик соответствует кэш-памяти первого уровня). Ощутимое повышение быстродействия происходит в том случае, когда вы заказываете блюдо, которого нет на столе (промах кэша первого уровня), и официанту приходится обращаться к столику с дежурными блюдами. В девяти случаях из десяти он находит там нужное блюдо, которое приносит через полсекунды (частота кэш-памяти второго уровня равна 2 ГГц, что соответствует скорости 0,5 нс). Итак, современные системы работают 99% времени (суммарный коэффициент совпадения кэш-памяти первого и второго уровней) с частотой 2 ГГц и, как и прежде, в одном случае из ста понижают скорость до частоты оперативной памяти (приготовление блюда на кухне). При увеличении скорости памяти до 400 МГц (2,5 нс) время ожидания заказанного блюда из кухни достигнет 2,5 с. Эх, если бы скорость обслуживания в ресторане повышалась так же, как быстродействие процессора!

Организация работы кэш-памяти

Организация кэш-памяти в процессорах 486 и семействе Pentium называется четырехстраничным набором ассоциативного кэша (four-way set associative cache), что подразумевает разделение кэш-памяти на четыре блока. Каждый блок, в свою очередь, организуется в виде 128 или 256 строк по 16 байт в каждой. Чтобы понять, как работает четырехстраничный кэш, рассмотрим следующий пример. В простейшем случае кэш состоит из одного блока, в который можно загрузить содержимое соответствующего блока основной памяти. Это похоже на закладку, используемую для того, чтобы отметить нужную страницу в книге. Если основная память -- это вся книга, то по закладке можно определить, какая страница находится в кэше. Но этого бывает достаточно только в том случае, если все необходимые данные находятся на странице, отмеченной закладкой. Если же вам нужно вернуться к одной из уже прочитанных страниц, то закладка будет бесполезной. Можно воспользоваться несколькими закладками (выписками), отмечая сразу несколько мест в книге. При этом, конечно, усложняется схема процессора, но зато можно проверить сразу несколько закладок. Каждая дополнительная закладка усложняет систему, но вероятность того, что нужная страница уже отмечена (выписана), повышается. Если ограничиться четырьмя отметками-выписками, то можно получить четырехстраничный кэш. Вся кэш-память разбивается на четыре блока, в каждом из которых хранятся копии различных фрагментов основной памяти. Хорошим примером работы процессора сразу с несколькими областями памяти является использование многозадачной операционной системы Windows. Здесь четырехстраничный кэш значительно повышает производительность процессора. Содержимое кэша всегда должно соответствовать содержимому основной памяти, чтобы процессор работал с самыми свежими данными. Поэтому в семействе процессоров 486 используется кэш со сквозной записью (write-through), при которой данные, записанные в кэш, автоматически записываются и в основную память. В процессорах Pentium используется двунаправленный кэш (write-back), который работает при выполнении как операций считывания, так и операций записи. Это позволяет еще больше повысить производительность процессора. Хотя встроенный кэш в процессоре 486 используется только при чтении, внешний кэш в системе может быть двунаправленным. Кроме того, в процессорах 486 предусмотрен дополнительный 4-байтовый буфер, в котором можно хранить данные вплоть до передачи в память. Это необходимо в том случае, если шина памяти занята. Еще одна из особенностей улучшенной архитектуры кэша состоит в том, что кэш-память является неблокируемой. Это свойство позволяет уменьшать или скрывать задержки памяти, используя перекрытие операций процессора с выборкой данных. Неблокируемая кэш-память дает возможность продолжать выполнение программы одновременно с неудачными обращениями в кэш при наличии некоторых ограничений. Другими словами, кэш-память улучшает обработку промаха кэша и позволяет процессору продолжать выполнение операций, не связанных с отсутствующими данными. Кэш-контроллер, встроенный в процессор, также используется для наблюдения за состоянием системной шины при передаче управления шиной альтернативным процессорам, которые называются хозяевами шины (bus masters). Процесс наблюдения, в свою очередь, называется отслеживанием шины (bus snooping). Если устройство, управляющее передачей данных по шине (т. е. хозяин шины), записывает какие-либо данные в область памяти, копия которой хранится в кэше процессора, то содержимое кэша перестает соответствовать содержимому основной памяти. В этом случае кэш-контроллер отмечает эти данные как ошибочные и при следующем обращении к памяти обновляет содержимое кэша, поддерживая тем самым целостность всей системы. При увеличении тактовой частоты время цикла уменьшается. В новых системах не используется кэш на системной плате, поскольку быстрые модули DDR-SDRAM или RDRAM, применяемые в современных системах Pentium II/Celeron/III, могут работать на тактовой частоте системной платы. Как видите, кэш-память двух уровней улучшает взаимодействие между быстрым центральным процессором и более медленной оперативной памятью, а также позволяет минимизировать периоды ожидания, возникающие при обработке данных. Решающую роль в этом играет кэш-память второго уровня, расположенная в кристалле процессора. Это дает возможность процессору работать с тактовой частотой, наиболее близкой к его максимальной частоте.

Свойства процессора

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

SMM

Задавшись целью создания все более быстрых и мощных процессоров для портативных компьютеров, Intel разработала схему управления питанием. Эта схема позволяет процессорам экономно использовать энергию батареи и таким образом продлить срок ее службы. Такая возможность впервые была реализована компанией Intel в процессоре 486SL, который является усовершенствованной версией процессора 486DX. Впоследствии, когда возможности управления питанием стали более универсальными, их начали встраивать в Pentium и во все процессоры более поздних поколений. Система управления питанием процессоров называется SMM (System Management Mode -- режим управления системой).SMM физически интегрирована в процессор, но функционирует независимо. Благодаря этому она может управлять потреблением мощности, в зависимости от уровня активности процессора. Это позволяет пользователю определять интервалы времени, по истечении которых процессор будет частично или полностью выключен. Данная схема также поддерживает возможность приостановки/возобновления, которая позволяет мгновенно включать и отключать мощность, что обычно используется в портативных компьютерах. Соответствующие параметры устанавливаются в BIOS.

Суперскалярное выполнение

В процессорах Pentium пятого и последующих поколений встроен ряд внутренних конвейеров, которые могут выполнять несколько команд одновременно. Процессор 486 и все предшествующие в течение определенного отрезка времени могли выполнять только одну команду. Технология одновременного выполнения нескольких команд называется суперскалярной. Благодаря использованию данной технологии и обеспечивается дополнительная эффективность по сравнению с процессором 486.Суперскалярная архитектура обычно ассоциируется с микросхемами RISC (Reduced Instruction Set Computer -- компьютер с упрощенной системой команд). Процессор Pentium -- одна из первых микросхем CISC (Complex Instruction Set Computer -- компьютер со сложной системой команд), в которой применяется суперскалярная технология, реализованная во всех процессорах пятого и последующих поколений. Рассмотрим на примере установки электрической лампочки инструкции CISC.

1. Возьмите электрическую лампочку.

2. Вставьте ее в патрон.

3. Вращайте до отказа.

И аналогичный пример в виде инструкций RISC.

1. Поднесите руку к лампочке.

2. Возьмите лампочку.

3. Поднимите руку к патрону.

4. Вставьте лампочку в патрон.

5. Поверните ее.

6. Лампочка поворачивается в патроне? Если да, то перейти к п. 5.

7. Конец.

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

Технология MMX

В зависимости от контекста, MMX может означать multi-media extensions (мультимедийные расширения) или matrix math extensions (матричные математические расширения). Технология MMX использовалась в старших моделях процессоров Pentium пятого поколения в качестве расширения, благодаря которому ускоряется компрессия/декомпрессия видеоданных, манипулирование изображением, шифрование и выполнение операций ввода-вывода -- почти все операции, используемые во многих современных программах. В архитектуре процессоров MMX есть два основных усовершенствования. Первое, фундаментальное, состоит в том, что все микросхемы MMX имеют больший внутренний встроенный кэш, чем их собратья, не использующие эту технологию. Это повышает эффективность выполнения каждой программы и всего программного обеспечения независимо от того, использует ли оно фактически команды MMX. Другое усовершенствование MMX состоит в расширении набора команд процессора 57 новыми командами, а также во введении новой возможности выполнения команд, называемой одиночный поток команд -- множественный поток данных (Single Instruction -- Multiple Data, SIMD). В современных мультимедийных и сетевых приложениях часто используются циклы; хотя они занимают около 10% (или даже меньше) объема полного кода приложения, на их выполнение может уйти до 90% общего времени выполнения. SIMD позволяет одной команде осуществлять одну и ту же операцию над несколькими данными, подобно тому, как преподаватель, читая лекцию, обращается ко всей аудитории, а не к каждому студенту в отдельности. Технология SIMD позволяет ускорить выполнение циклов при обработке графических, анимационных, видео- и аудиофайлов; в противном случае эти циклы отнимали бы время у процессора. Intel также добавила 57 новых команд, специально разработанных для более эффективной обработки звуковых, графических и видеоданных. Эти команды предназначены для выполнения с высокой степенью параллелизма последовательностей, которые часто встречаются при работе мультимедийных программ. Высокая степень параллелизма в данном случае означает, что одни и те же алгоритмы применяются ко многим данным, например к данным в различных точках при изменении графического изображения. Такие компании, как AMD и Cyrix, лицензировали у Intel технологию MMX и реализовали ее в собственных процессорах.

Инструкции SSE и SSE2

В феврале 1999 года Intel представила общественности процессор Pentium III, содержащий обновление технологии MMX, получившей название SSE (Streaming SIMD Extensions -- потоковые расширения SIMD). До этого момента инструкции SSE носили имя Katmai New Instructions (KNI), так как первоначально они были включены в процессор Pentium III с кодовым именем Katmai. Процессоры Celeron 533A и выше, созданные на основе ядра Pentium III, тоже поддерживают инструкции SSE. Более ранние версии процессора Pentium II, а также Celeron 533 и ниже (созданные на основе ядра Pentium II) SSE не поддерживают. Инструкции SSE содержат 70 новых команд для работы с графикой и звуком в дополнение к существующим командам MMX. Фактически этот набор инструкций кроме названия KNI имел еще и второе название -- MMX-2. Инструкции SSE позволяют выполнять операции с плавающей запятой, реализуемые в отдельном модуле процессора. В технологиях MMX для этого использовалось стандартное устройство с плавающей запятой. Инструкции SSE2, содержащие в себе 144 дополнительные команды SIMD, были представлены в ноябре 2000 года вместе с процессором Pentium 4. В SSE2 были включены все инструкции предыдущих наборов MMX и SSE. Потоковые расширения SIMD (SSE) содержат целый ряд новых команд для выполнения операций с плавающей запятой и целыми числами, а также команды управления кэш-памятью. Новые технологии SSE позволяют более эффективно работать с трехмерной графикой, потоками аудио- и видеоданных (DVD-воспроизведение), а также приложениями распознавания речи. В целом SSE обеспечивает следующие преимущества: более высокое разрешение/качество при просмотре и обработке графических изображений; улучшенное качество воспроизведения звуковых и видеофайлов в формате MPEG2, а также одновременное кодирование и декодирование формата MPEG2 в мультимедийных приложениях; уменьшение загрузки процессора и повышение точности/скорости реагирования при выполнении программного обеспечения для распознавания речи. Инструкции SSE и SSE2 особенно эффективны при декодировании файлов формата MPEG2, который является стандартом сжатия звуковых и видеоданных, используемым в DVD-дисках. Следовательно, SSE-оснащенные процессоры позволяют достичь максимальной скорости декодирования MPEG2 без использования дополнительных аппаратных средств (например, платы декодера MPEG2). Кроме того, процессоры, содержащие набор инструкций SSE, значительно превосходят предыдущие версии процессоров при распознавании речи. Одним из основных преимуществ SSE по отношению к MMX является поддержка операций SIMD с плавающей запятой, что очень важно при обработке трехмерных графических изображений. Технология SIMD, как и MMX, позволяет выполнять сразу несколько операций при получении процессором одной команды. В частности, SSE поддерживает выполнение до четырех операций с плавающей запятой за цикл; одна инструкция может одновременно обрабатывать четыре блока данных. Для выполнения операций с плавающей запятой инструкции SSE могут использоваться вместе с командами MMX без заметного снижения быстродействия. SSE также поддерживает упреждающую выборку данных (prefetching), которая представляет собой механизм предварительного считывания данных из кэш-памяти. Обратите внимание, что наилучший результат использования новых инструкций процессора обеспечивается только при их поддержке на уровне используемых приложений. Сегодня большинство компаний, занимающихся разработкой программного обеспечения, модифицировали приложения, связанные с обработкой графики и звука, что позволило в более полной мере использовать возможности SSE. Например, графическое приложение Adobe Photoshop поддерживает инструкции SSE, что значительно повышает эффективность использования SSE-оснащенных процессоров. Поддержка инструкций SSE встроена в DirectX 6.1 и в самые последние видео- и аудиодрайверы, поставляемые с операционными системами Windows 98 Second Edition, Windows Me, Windows NT 4.0 (с пакетом обновления 5 или более поздним) и Windows 2000.Инструкции SSE являются расширением технологий MMX, а SSE2 -- расширением инструкций SSE. Таким образом, процессоры, поддерживающие SSE2, поддерживают также инструкции SSE, а процессоры, поддерживающие инструкции SSE, в свою очередь, поддерживают оригинальные команды MMX. Это означает, что стандартные MMX-приложения могут выполняться практически на любых системах.

3DNow и Enhanced 3DNow

Технология 3DNow разработана компанией AMD в ответ на реализацию поддержки инструкций SSE в процессорах Intel. Впервые (май 1998 года) 3DNow реализована в процессорах AMD K6, а дальнейшее развитие -- Enhanced 3DNow -- эта технология получила в процессорах Athlon и Duron. Аналогично SSE, технологии 3DNow и Enhanced 3DNow предназначены для ускорения обработки трехмерной графики, мультимедиа и других интенсивных вычислений.3DNow представляет собой набор из 21 инструкции SIMD, которые оперируют массивом данных в виде единичного элемента. В Enhanced 3DNow к существующим добавлены еще 24 новых инструкции. Технологии обработки данных 3DNow и Enhanced 3DNow хотя и подобны SSE, но несовместимы на уровне инструкций, поэтому производителям программного обеспечения необходимо отдельно реализовать поддержку этих технологий. Технология 3DNow, как и SSE, поддерживает операции SIMD с плавающей запятой, а также позволяет выполнять до четырех операций с плавающей запятой за один цикл. Инструкции 3DNow для операций с плавающей запятой могут использоваться вместе с командами MMX без заметного снижения быстродействия. Поддерживается и упреждающая выборка данных -- механизм предварительного считывания данных из кэшпамяти. Все технологии ускорения обработки данных компаний Intel и AMD реализованы на уровне операционных систем Windows 9x и Windows NT/2000. Кроме этого, все программные интерфейсы DirectX (с версии 6) компании Microsoft и Open GL компании SGI оптимизированы для технологии 3DNow, а практически все современные видеодрайверы 3Dfx, ATI, Matrox и nVidia поддерживают 3DNow и Enhanced 3DNow. Несмотря на то что технология 3DNow поддерживается многими компьютерными играми и драйверами видеоадаптеров, существует ряд профессиональных графических приложений, к числу которых относится и Adobe Photoshop, не поддерживающих 3DNow.

Supplemental Streaming SIMD Extension 3 (SSSE3) -- это обозначение, данное Intel'ом 4-му расширению системы команд. Предыдущее имело обозначение SSE3 и Intel добавил ещё один символ 'S' вместо того, чтобы увеличить номер расширения, возможно потому, что они посчитали SSSE3 простым дополнением к SSE3. Часто, до того как стало использоваться официальное обозначение SSSE3, эти новые команды назывались SSE4. Также их называли кодовыми именами Tejas New Instructions (TNI) и Merom New Instructions (MNI) по названию процессоров, где впервые Intel намеревалась поддержать эти новые команды. Появившись в Intel Core Microarchitecture, SSSE3 доступно в сериях процессоров Xeon 5100 (Server и Workstation версии), а также в процессорах Intel Core 2 (Notebook и Desktop версии).

EM64T (англ. Extended Memory 64 Technology) -- реализация 64-битных расширений AMD64 процессорной архитектуры IA-32 (архитектуры x86-совместимых процессоров) фирмы Intel. Основное улучшение, обеспечиваемое EM64T -- 64-битная адресация оперативной памяти, что позволяет снять присущее 32-битным процессорам ограничение в 4 гигабайта адресуемой напрямую памяти

Динамическое выполнение

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

-Предсказание множественного перехода (ветвления). Предсказание потока выполнения программы через несколько ветвлений.

-Анализ потока команд. Назначение выполнения команд по мере готовности, независимо от их порядка в оригинальной программе.

-Упреждающее выполнение. Увеличение скорости выполнения за счет опережающего просмотра счетчика команд и выполнения тех команд, к которым, вероятно, потребуется обратиться позже.

Предсказание перехода

Функция предсказания перехода, ранее применявшаяся только в универсальных процессорах старших моделей, позволяет процессору при высокоскоростном выполнении команд сохранять конвейер заполненным. Специальный модуль выборки/декодирования, включенный в процессор, использует высоко оптимизированный алгоритм предсказания перехода, позволяющий предсказывать направление и результат команд, выполняемых через несколько уровней ветвлений, обращений и возвратов. Этот модуль напоминает шахматиста, разрабатывающего несколько различных стратегий перед началом шахматной партии, предсказывая ответные действия противника на несколько ходов вперед. Благодаря предсказанию результатов выполнения команды инструкции могут выполняться практически без задержек.

Анализ потока данных

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

Упреждающее выполнение

Способность процессора выполнять команды с помощью опережающего просмотра существующего счетчика команд называется упреждающим выполнением. Модуль отправки/выполнения, включенный в процессор, анализирует поток данных для выполнения всех команд, существующих в буфере (накопителе) команд, и сохранения результатов их выполнения в буферных регистрах. После этого модуль изъятия анализирует содержимое пула команд на предмет наличия завершенных команд, не зависящих от данных, получаемых при выполнении других команд, или команд, имеющих неразрешенные предсказания перехода. Результаты выполнения обнаруженных завершенных команд передаются в память модулем изъятия или соответствующей стандартной архитектурой Intel в том порядке, в котором они были получены. Затем команды удаляются из буфера.В сущности, динамическое выполнение устраняет зависимость от линейной последовательности команд. Выполнение команд с изменением их последовательности позволяет максимально загрузить модуль выполнения и уменьшить время ожидания, необходимое для получения данных из памяти. Несмотря на то что порядок предсказания и выполнения команд может быть изменен, их результаты передаются в исходном порядке, для того чтобы не прерывать и не изменять течение программы. Это позволяет процессорам P6 выполнять существующее программное обеспечение архитектуры Intel точно так же, как это делали P5 (Pentium) или процессоры более ранних версий, но на целый порядок быстрее!

Страницы: 1, 2, 3, 4


© 2010 BANKS OF РЕФЕРАТ