Типы архитектур микропроцессора. Процессоры изнутри

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

Определение

Компьютер с ограниченным набором команд - это устройство, чья архитектура набора инструкций (ISA) имеет набор атрибутов, который позволяет ему иметь более низкие циклы на инструкцию (CPI), чем сложная команда, установленная на компьютер (CISC). Общая концепция RISC — это концепция компьютера, который содержит небольшой набор простых и общих алгоритмов, но не расширенный набор сложных и специализированных последовательностей. Другим распространенным признаком RISC является архитектура загрузки/хранения, где доступ к памяти осуществляется только с помощью определенных инструкций.

История и развитие

Первые проекты RISC пришли из IBM, Stanford и UC-Berkeley в 70-х и 80-х гг. ХХ века. IBM 801, Stanford MIPS и Berkeley RISC I и II были разработаны с аналогичной философией, которая стала известна как RISC. Некоторые особенности дизайна были характерны для большинства RISC-процессоров:


Хотя ряд компьютеров 1960-х и 70-х годов являлись предшествующими моделями RISC, современная концепция относится к 1980-м годам. В частности, два проекта в Стэнфорде и Калифорнийском университете масштабируют эту концептуальную идею. Стэнфордский MIPS станет коммерчески успешной моделью, в то время как университет в Беркли дал название всей концепции, коммерциализированной как SPARC. Другим успехом этой эпохи были усилия IBM, которые в конечном итоге привели к Power Architecture. По мере развития этих направлений в конце 1980-х гг., и особенно в начале 1990-х гг., процветало множество подобных проектов, представляющих собой основную силу на рынке рабочих станций Unix, а также встроенные процессоры в лазерных принтерах, маршрутизаторах и аналогичных продуктах.

Плюсы и минусы архитектуры RISC

Простейший способ изучить преимущества и уязвимости архитектуры RISC - это сопоставить ее с предшествующей архитектурой CISC. Основная цель архитектуры CISC — завершить задачу за меньшее количество линий сборки. Это достигается за счет создания процессорного оборудования, способного понимать и выполнять ряд операций. Для этой конкретной задачи процессор CISC выпускается с конкретной инструкцией (MULT). При выполнении эта команда загружает два значения в отдельные регистры, умножает операнды в исполнительном модуле и затем сохраняет продукт в соответствующем регистре. Таким образом, вся задача умножения двух чисел может быть завершена одной инструкцией: MULT 2: 3, 5: 2. CISC и RISC-архитектура — предшествующее и последующее архитектурное решение.

MULT - это то, что известно как «сложная инструкция». Команда работает непосредственно в банках памяти компьютера и не требует, чтобы программист явно вызывал любые функции загрузки или сохранения. Она очень похожа на команду на языке более высокого уровня. Например, если мы допустим, что a представляет значение 2:3, а b представляет значение 5:2, то эта команда идентична выражению C a = a * b.

Одно из основных преимуществ этой системы заключается в том, что компилятор должен выполнить минимум работы, чтобы перевести формулировку языка высокого уровня в сборку. Поскольку длина кода относительно короткая, для хранения инструкций требуется очень небольшое ОЗУ. При сравнительном анализе CISC и RISC-архитектуры процессоров акцент ставится на реализации сложных инструкций непосредственно в аппаратном обеспечении.

Подход RISC

Процессоры RISC используют только элементарные инструкции, которые выполняются за один такт. Таким образом, описанная выше команда MULT может быть разделена на три отдельные команды: LOAD, которая перемещает данные из банка памяти в регистр PROD, который находит произведение двух операндов, расположенных внутри регистров, и STORE, который перемещает данные из регистра в банки памяти. Чтобы выполнить точный ряд шагов, описанных в подходе CISC, программисту необходимо будет закодировать четыре строки сборки:

LOAD A, 2:3.
LOAD B, 5:2.
PROD A, B.
STORE 2:3, А.

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

Сравнение CISC и RISC

Ниже представлены сравнительные данные CISC и RISC-архитектуры:

  • Акцент на аппаратном обеспечении.
  • Включает многочасовые сложные инструкции.
  • Небольшие размеры кода, высокие циклы в секунду.
  • Транзисторы, используемые для хранения сложных инструкций.
  • Акцент на программном обеспечении.
  • Сокращенная инструкция, не требующая большого количества времени.
  • Низкие циклы в секунду, большие размеры кода.
  • Тратит больше транзисторов на регистрах памяти.

Стратегия RISC вносит некоторые очень важные преимущества. Поскольку каждая команда требует выполнения только одного такта, вся программа будет выполняться примерно в такое же количество времени, что и многоцилиндровая команда MULT. Эти «сокращенные инструкции» RISC требуют меньше транзисторов аппаратного пространства, чем сложные инструкции, оставляя больше места для общих регистров. Поскольку все инструкции выполняются в единое время (например, один такт), возможна конвейерная обработка.

Характеристика процесса

Разделение инструкций LOAD и STORE фактически уменьшает объем работы, которую должен выполнить компьютер. После выполнения команды MULT в стиле CISC процессор автоматически стирает регистры. Если один из операндов необходимо использовать для другого вычисления, процессор должен перезагрузить данные из банка памяти в регистр. В RISC операнд останется в регистре, пока на нем не будет загружено другое значение.

Подход CISC пытается минимизировать количество инструкций для каждой программы, жертвуя количеством циклов на инструкцию. RISC же, наоборот, уменьшает количество циклов за счет инструкций для каждой программы.

Сложности коммерцеской реализации

Несмотря на преимущества обработки на основе RISC, прошли десятилетия прежде, чем чипы RISK были коммерчески востребованы. Во многом это было связано с отсутствием поддержки программного обеспечения.

Хотя линейка Power Macintosh от Apple, в которой использовались чипы на основе RISC и Windows NT, совместима с RISC, Windows 3.1 и Windows 95 были разработаны с учетом процессоров CISC. Многие компании не желали рисковать появляющейся технологией RISC. Без коммерческого интереса разработчики процессоров не смогли изготовить чипы RISC в достаточно больших объемах, чтобы сделать их цену конкурентоспособной.

Еще одним серьезным препятствием стало присутствие Intel. Несмотря на то, что их чипы CISC стали все более громоздкими и сложными в разработке, Intel обладала ресурсами для разработки мощных процессоров. Хотя чипы RISC могли превзойти усилия Intel в определенных областях, различия не были достаточно велики, чтобы убедить покупателей менять технологии.

Общее преимущество RISC

Сегодня Intel x86 является единственным чипом, который сохраняет архитектуру CISC. Это связано прежде всего с продвижением в других областях компьютерной техники. Цена ОЗУ резко снизилась. В 1977 году 1 МБ DRAM стоил около 5000 долларов. К 1994 году такой же объем памяти стоит всего 6 долларов США (с учетом инфляции). Технология компилятора также стала более сложной, так что использование RISC RAM и акцент на программное обеспечение стали идеальными.

Философия набора инструкций

Ошибочным пониманием определения RISK является идея того, что процедуры устраняются, что приводит к сокращенному набору алгоритмов. На протяжении многих лет процедуры RISC увеличивались, и в настоящее время многие из них имеют более широкий набор функций, чем CPU CISC.

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

Формат инструкции

Большинство архитектур RISC имеют инструкции с фиксированной длиной (обычно 32 бита) и простое кодирование, что значительно упрощает выборку, декодирование и выдачу логики. Одним из недостатков 32-разрядных инструкций является снижение плотности кода, что является неблагоприятным фактором для встроенных вычислений на рабочих станциях и серверах. Архитектуры RISC изначально были предназначены для обслуживания. Для решения этой проблемы несколько архитектур, таких как ARM, Power ISA, MIPS, RISC-V и Adipteva Epiphany, имеют необязательный короткий сокращенный формат инструкции или функцию сжатия команд. SH5 также следует этой схеме, хотя и развился в обратном направлении, добавив более длинные мультимедийные инструкции к оригинальной 16-битной кодировке.

Использование оборудования

Для любого заданного уровня общей производительности микросхема RISC, как правило, имеет гораздо меньше транзисторов, предназначенных для основной логики, которая первоначально позволяла дизайнерам увеличивать размер регистров и внутренний параллелизм.

Другие функции, которые обычно встречаются в архитектурах RISC:

  • Средняя производительность процессора приближается к одной инструкции за цикл.
  • Единый формат инструкции — используется одно слово с кодом операции в одних и тех же позициях для более простого декодирования.
  • Все регистры общего назначения могут использоваться в качестве источника/назначения во всех инструкциях, упрощая разработку компилятора (регистры с плавающей запятой часто сохраняются отдельно).
  • Простые режимы со сложной адресацией, выполняемые последовательностями команд.
  • Несколько типов данных в аппаратном обеспечении (например, байтовая строка или BCD).

В RISC-конструкциях также представлена модель памяти Гарварда, где команды и данные концептуально разделены. Это означает, что изменение памяти, в которой хранится код, может не повлиять на инструкции, выполняемые процессором (поскольку ЦП имеет отдельный кэш команд и данных), до тех пор, пока не будет выдана специальная инструкция синхронизации. С другой стороны, это позволяет одновременно обращаться к кэшам, что часто повышает производительность.

Особенности RISC-архитектуры

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

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

У процессоров также было относительно мало регистров по нескольким причинам:


Практическое применение

RISC-архитектура процессора теперь используются на большом спектре платформ: от смартфонов и планшетных ПК до некоторых из самых высокопродуктивных суперкомпьютеров, таких как компьютер K (лидер списка топ-500 в 2011 г.).

К началу XXI века большинство низкопрофильных и мобильных систем основывались на архитектуре RISC. Примеры:

  • доминирует на рынке для маломощных и недорогих встроенных систем (200-1800 МГц в 2014 году). Она применяется в ряде большинства Android-систем, Apple iPhone и iPad, Microsoft Windows Phone (бывшая Windows Mobile), устройства RIM (topic.risc.архитектура), Nintendo Game Boy Advance, DS/3DS и Switch.
  • Линия MIPS (в какой-то момент используется во многих компьютерах SGI), а теперь - в PlayStation, PlayStation 2, Nintendo 64 (ipb.risc.архитектура), игровых консолях PlayStation Portable и шлюзах для жилых помещений, таких как Linksys WRT54G .
  • Hitachi SuperH, использующийся в Sega Super 32X, Saturn и Dreamcast (viewtopic.php.risc.архитектура), теперь разработан и продан Renesas как SH4.
  • Atmel AVR используется в разных продуктовых линейках: от портативных контроллеров Xbox до автомобилей BMW .
  • RISC-V (vbulletin.risc.архитектура), пятый Berkeley RISC ISA с открытым исходным кодом, с 32-разрядным адресным пространством, небольшим ядром целочисленного набора команд, экспериментальной «сжатой» ISA для плотности кода и предназначенной для стандартных и специальных расширений.
  • Рабочие станции, серверы и суперкомпьютеры.
  • MIPS (powered.by.smf.risc.архитектура), Silicon Graphics (в 2006 году прекратила создание систем на основе MIPS).
  • SPARC, Oracle (ранее Sun Microsystems) и Fujitsu (phorum.risc.архитектура).
  • Архитектура IBM Power Architecture, применяемая в большинстве суперкомпьютеров IBM, серверах усредненного уровня и терминальных станциях.
  • PA-RISC Hewlett-Packard (phpbb.risc.архитектура), также именуемый как HP-PA (прекращен в конце 2008 года).
  • Alpha, используется в рабочих станциях, серверах и суперкомпьютерах от Digital Equipment Corporation, Compaq и HP (прекращено с 2007 года).
  • RISC-V (powered.by.phpbb.risc.архитектура), пятый Berkeley RISC ISA, с открытым исходным кодом, с 64 или 128-битными адресными пространствами и целым ядром, расширенным с плавающей точкой, атомизацией и векторной обработкой, и разработанный для расширения с инструкциями для сетей, ввода-вывода, обработки данных. 64-битный суперскалярный дизайн Rocket доступен для скачивания.

Сравнение с другими архитектурами

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

Архитектуры RISC традиционно имели мало успехов на рынке настольных ПК и товарных серверов, где платформы на базе x86 остаются доминирующей архитектурой процессора. Однако это может измениться, поскольку процессоры на базе архитектуры ARM разрабатываются для систем с более высокой производительностью. Производители, включая Cavium, AMD и Qualcomm, выпустили на базе архитектуры ARM. ARM также сотрудничала с Cray в 2017 году, чтобы создать суперкомпьютер на базе архитектуры ARM. Компания-лидер компьютерной индустрии Microsoft объявила, что в рамках партнерства с Qualcomm в 2017 году планируется поддержка ПК-версии Windows 10 на устройствах на базе Qualcomm Snapdragon. Эти устройства будут поддерживать программное обеспечение Win32 на базе x86 с помощью эмулятора процессора x86.

Тем не менее помимо настольной арены архитектура ARM RISC широко используется в смартфонах, планшетах и ​​многих формах встроенного устройства. Также Intel Pentium Pro (P6) использует внутреннее RISC-процессорное ядро ​​для своих процессоров.

В то время как начальные разработки RISC-архитектуры процессора значительно отличались от инновационных проектов CISC, к 2000 году самые высокопроизводительные процессоры в линейке RISC почти не отличаются от самых высокопроизводительных процессоров в линии CISC.

Что общего у микроволновки и суперкомпьютера, у калькулятора и марсохода? Микропроцессор. Эта маленькая, но архиважная деталь – неотъемлемая часть любого электронного устройства, какую бы функцию оно ни выполняло, ведь именно микропроцессор отвечает за «мышление» прибора. Конечно, процессор не думает в полном смысле этого слова, однако он способен делать то, что не может человек – очень-очень быстро считать. И если дать процессору необходимую информацию и «объяснить», что с ней делать, то есть запрограммировать его, – мы получим очень полезного железного друга. Можно без преувеличения сказать, что микропроцессоры изменили наш мир.

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

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

SoC-процессоры

Большинство современных процессоров так или иначе основаны на принципах, заложенных еще в 1940-х годах американо-венгерским ученым Джоном фон Нейманом, хотя, конечно, они прошли очень длинный путь развития по меркам технологий. Одна из главных на сегодняшний день процессорных архитектур называется SoC, или система на чипе (англ. system on a chip). Это тоже микроконтроллерная архитектура, но еще более плотная. Здесь целый ряд компонентов помещаются на одном полупроводниковом кристалле. Это как бы не процессор, а целый компьютер. Такой подход позволяет упростить и удешевить сборку и процессоров, и целых устройств.

Именно SoC-процессоры используются в подавляющем большинстве современных смартфонов и планшетов. Например, SoC-процессорами являются чипы британской фирмы ARM, на которой работает большинство Android-устройств , а также смартфоны iPhone и планшеты iPad. ARM-процессоры используются и в чипсетах MediaTek , где их число доходит до десяти.

RISC-процессоры

Технология RISC означает упрощенный набор команд (англ. reduced instruction set computer), ее впервые предложили в компании IBM. В основу RISC положена идея максимального повышения быстродействия посредством упрощения инструкций и ограничения их длины. Благодаря этому подходу стало возможным не только повысить тактовую частоту, но и сократить так называемый процессорный конвейер – очередь из команд на выполнение, а также снизить тепловыделение и потребление энергии.

Первые RISC-процессоры были настолько простыми, что не имели даже операций деления и умножения, однако они быстро прижились в мобильных технологиях. На архитектуре RISC основано большинство современных процессоров. Это, во-первых, уже упоминавшиеся процессоры ARM, а также PowerPC, SPARC и многие другие. Популярнейшие процессоры Intel уже много лет основаны на RISC-ядре, начиная с 1990-х годов. Можно сказать, что технология RISC сегодня является доминирующей, хотя у нее существует множество вариантов реализации.

CISC-процессоры

Это более традиционный вид микропроцессоров, которые отличаются от предыдущих полным набором команд, отсюда и название: компьютер с полным набором команд (англ. complex instruction set computer). Такие процессоры не имеют фиксированной длины команды, а самих команд больше. CISC-процессорами были все процессоры архитектуры x86, которая доминирует в компьютерной индустрии уже не одно десятилетие, до появления Intel Pentium Pro, который впервые отошел от CISC-концепции и сегодня представляет собой гибрид – CISC-чипсет на базе RISC-ядра.

Классическая CISC-архитектура используется все реже из-за пониженной тактовой частоты и высокой стоимости сборки. Однако она по-прежнему востребована в серверах и рабочих станциях, то есть системах, стоимость которых менее критична по сравнению с чисто потребительскими устройствами.

ARM и x86

Как уже упоминалось, процессоры фирмы ARM используются в большинстве мобильных устройств, тогда как архитектура x86 давно господствует в настольных компьютерах и ноутбуках. Отчего такое разделение? Когда-то ARM-процессоры считались сугубо «телефонными» – это были очень маломощные чипы с невысокими возможностями, идеально «заточенные» под мобильную технику. Они не грелись, не требовали много энергии и умели делать то немногое, что нужно делать на телефоне или смартфоне.

С другой стороны, семейство x86, разработанное Intel, начиная с легендарного процессора Intel 8086 (откуда и пошло название) образца 1978 года, всегда было уделом компьютеров мощных, «настоящих». Куда уж до них ARM, говорили многие эксперты. Но времена меняются, и сегодня архитектуры ARM и x86 яростно конкурируют друг с другом во всей компьютерной индустрии, которая все больше зависит от мобильных технологий.

Сама компания ARM, в отличие от Intel, не производит процессоры, но лицензирует их сторонним производителям, среди которых практически все гранды: Apple, Samsung, IBM, NVIDIA, Nintendo, Qualcomm и даже, вот так ирония, Intel (и ее вечный конкурент AMD). Такой подход привел к тому, что ARM-процессоры буквально завалили рынок – сегодня их выпускается не один миллиард каждый год.

Поскольку сегодня все больше людей предпочитают планшеты традиционным компьютерам, продажи которых пошли на спад, сложилась ситуация, очень неприятная для Intel и AMD и немыслимая еще лет десять назад. Intel неожиданно оказалась в роли догоняющей и начала активно развивать собственные низковольтные решения, и не сказать, что совсем безуспешно – современные модели Intel Atom и Core M обладают вполне конкурентоспособными характеристиками по ряду параметров.

В новой для себя ситуации оказалось и сообщество разработчиков, которым пришлось быстро адаптироваться под требования рынка. Сначала интернет-революция привела к тому, что пользователи стали гораздо реже работать в традиционных программах на традиционном компьютере и чаще – в веб-браузере. Затем еще одна, мобильная революция породила новую реальность: массовый пользователь вообще отложил компьютеры и перешел на мобильные устройства, где работают в основном в мобильных приложениях. А мобильные приложения – это опять-таки ARM, с которой Intel пока не может совладать.

big.LITTLE

Одной из перспективных технологий ARM является big.LITTLE – технология оптимизации потребления энергии за счет объединения более высокопроизводительных ядер с менее производительными, но более энергоэффективными. Например, это может быть Cortex-A15 и Cortex-A7. Это как бы две передачи на автомобиле: когда нужно выполнить более сложную и ресурсоемкую задачу, включается более мощный чип, а для фоновых задач больше подходит более экономичный. В результате такого подхода последнее поколение платформы big.LITTLE позволяет снизить потребление энергии чипом на 75% и одновременно поднять производительность на 40%.

У big.LITTLE есть свои разновидности. Например, в 2013 году компания MediaTek представила платформу CorePilot на базе big.LITTLE, в которой впервые был реализован принцип разнородной (гетерогенной) множественной обработки данных (HMP). Специальное ПО автоматически распределяет рабочие потоки между разными ядрами исходя из их требований. Осуществляется интерактивное управление потреблением энергии и температурными режимами, а специальный алгоритм планировщика в сочетании с трехкластерной архитектурой позволяет еще больше снизить потребление энергии чипом.

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

Почему кластерные архитектуры эффективнее?

Но тайваньская компания MediaTek – это не только CorePilot. Производитель произвел настоящий фурор со своей трехкластерной технологией Tri-Cluster. Чтобы понять, что это такое и как работает, вспомним, как работает процессор смартфона или планшета в самом общем случае.

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

Но как происходит это распределение? Иногда – по решению разработчика ПО, иногда –полностью автоматически, и тут все зависит от алгоритмов, которые могут быть более или менее эффективны. В технологии big.LITTLE эту задачу выполняет специальный модуль – планировщик. Например, он может перенести выполнение какого-то процесса с одно ядра на другое, если первому не хватает производительности.

Технология big.LITTLE сделала большой шаг в сторону эффективности за счет двух процессорных кластеров – групп ядер (англ. cluster – скопление). Если нужно поиграть в трехмерную игру, включаем мощный кластер; если нужно, скажем, почитать книгу или вообще убрать телефон в карман, включается слабый кластер, направленный на максимальную экономию энергии. Вот почему кластерная архитектура столь перспективна. В традиционных однопроцессорных архитектурах, а также многопроцессорных однокластерных, нет такого пространства для маневра и такой гибкости при распределении нагрузок.

Три кластера против двух

Но и здесь возникла проблема: задачи средней сложности, наиболее распространенные на телефонах, часто направляются на кластер с мощными ядрами. Например, мы работаем с электронной почтой. Задача не ахти какая ресурсоемкая, но двухкластерная платформа может включить для нее мощный кластер. У нее просто нет выбора – кластера всего два, а никакой «золотой середины» нет. Результат – ускоренный расход энергии и нагрев устройства при отсутствии очевидных преимуществ для пользователя от быстрого кластера.

Именно эту задачу решает архитектура Tri-Cluster в сочетании с CorePilot 3.0. Она работает не с двумя, а с тремя кластерами, которые в ней получили названия минимум (Min), медиум (Med) и максимум (Max). Для большинства повседневных задач используется средний кластер – та самая золотая середина. Максимальный кластер включается относительно редко и только тогда, когда это действительно нужно: игры, обработка графики и т.д. Ну а сверхэкономичный кластер Min управляет фоновыми приложениями, сводя энергопотребление к минимуму.

Такой подход наиболее сбалансирован с точки зрения производительности и экономии. Мобильное устройство как бы получает третью передачу. В MediaTek даже говорят, что позаимствовали эту идею у автомобильной индустрии. В компании отмечают, что он позволяет сократить энергопотребление на треть и одновременно поднять производительность на 12–15% в зависимости от ресурсоемкости задачи.

Helio X20

Типичный образец технологий Tri-Cluster и CorePilot – новейший 20-нанометровый десятиядерный чип MediaTek Helio X20 на базе ARM Cortex. Кластер Max в нем представлен группой из двух ядер Cortex-A72 с тактовой частотой 2,5 ГГц, в Med работают четыре ядра Cortex-A53 с частотой 2 ГГц, ну а Mini выполнен в виде опять-таки четырех ядер Cortex-A53 на 1,4 ГГц. Helio X20 стал первым в мире мобильным процессором с технологией Tri-Cluster и десятью ядрами (Deca-core).

В MediaTek провели исследование, которое доказывает, что данный чип способен проработать на 30% дольше времени, чем аналоги с сопоставимыми характеристиками. Выполнялись тесты даже для конкретных сценариев. Например, при работе в Facebook удается снизить расход энергии на 17–40%, голосовое общение в Skype позволяет сэкономить 41%, работа Gmail – 41%, игра Temple Run – 17%. Самая впечатляющая экономия достигается в ситуации, когда телефон просто показывает домашний экран – 48%. В этой ситуации работает именно кластер Min, и энергопотребление составляет всего 0,026 Вт.

Если верить тайваньскому ресурсу DigiTimes, производители мобильной техники буквально выстраиваются в очередь за новейшим чипом Helio X20. Летом этого года ресурс писал, что чип планируют использовать , HTC, Sony, Lenovo, Huawei, Xiaomi и ZTE. Новый чип оказался на 40% быстрее и на столько же экономичнее предыдущей модели семейства, X10. Первые устройства с таким процессором появятся на рынке в начале 2016 года, поэтому пока придется запастись терпением.

Возможности трехкластерных SoC-процессоров MediaTek

Процессоры MediaTek относятся к классу SoC, то есть таких, в которых на одной кремниевой пластинке собран целый мини-завод. Тут и память, и графика, и камера с видеокодеками, и контроллеры дисплея, модема и других интерфейсов. Некоторые особенности чипсета выглядят следующим образом:

  • Универсальный модем WorldMode LTE Cat-6 от MediaTek поддерживает LTE и одновременно допускает агрегацию частот, что позволяет использовать его практически в любой сети.
  • Новейший видеочип ARM Mali обеспечивает высочайшую производительность графики в двумерном и трехмерном режимах.
  • Дополнительный встроенный процессор Cortex-M4 работает в фоновом режиме с крайне низким энергопотреблением, обеспечивая работу фоновых приложений.
  • Контроллер двух камер со встроенным 3D-движком не только быстро работает, но и эффективно генерирует сложные объемные изображения, а встроенная технология шумоподавления доводит картинку до практически идеальной.
  • Дисплей может работать с частотой обновления 120 Гц вместо стандартных 60 Гц, что дает изумительно четкое изображение и отзывчивый интерфейс.

Процессор комплектуется новейшим видеочипом ARM Mali-T800, который, помимо прочего, обеспечивает работу дисплеев высокой четкости вплоть до WQXGA на частоте до 120 Гц. Другими словами, устройство можно комплектовать дисплеем разрешением вплоть до 2560×1600 пикселов.

Весьма впечатляет реализация камеры: скорость декодирования получаемого изображения может доходить до 30 кадров в секунду при разрешении 25 мегапикселов (либо 24 к/с при 32 Мп), при этом встроенный чип сразу же, на лету, осуществляет одновременно шумоподавление, повышение четкости и 3D-конверсию. При воспроизведении видео поддерживается 10-битная глубина цвета и кодеки VP9 HW и HEVC.

Встроенный модем Helio X20 поддерживает большой арсенал мобильных сетей, такие как LTE FDD/TDD R11 Cat-6 (до 300 Мбит/с), CDMA2000 1x/EVDO Rev.A. Здесь же есть Wi-Fi 802.11ac, Bluetooth, GPS, российская система навигации ГЛОНАСС и даже китайская BeiDou.

Независимые тесты Helio X20, в частности GeekBench 3, показывают явное превосходство по сравнению с предыдущей и тоже очень популярной моделью X10. В тесте AnTuTu результат X20 на 40% выше, чем у X10, что в целом подтверждает внутренние тесты MediaTek. Helio X20 также явно превосходит чип Exynos 7420.

Helio X20 – процессор очень новый, поставки начались совсем недавно, но уже известны некоторые подробности об устройствах, которые его получат. Так, Acer будет устанавливать его на свой флагманский планшетофон Predator 6. Целых 4 гигабайта оперативной памяти, дисплей Full HD, 4 динамика, аккумулятор на 4000 мА*ч, необычный агрессивный дизайн – не смартфон, а зверь! Другая ожидаемая новинка с этим чипом – новый флагман HTC One A9, в котором незадачливый тайваньский производитель постарается исправить провал модели One M9. 2016 год обещает быть очень интересным.

MediaTek вокруг нас


Мы начинали с того, что микропроцессоры сегодня окружают нас повсюду, как воздух, и продукция MediaTek в полной мере подтверждает этот тезис. Вообще, диапазон интересов тайваньцев поражает: Интернет вещей , нательная электроника, медицинские устройства, навигация, автономные автомобили и вездеходы, умный дом , умный город, дистанционное управление приборами, 3D-печать и даже домашнее виноделие. Вот лишь часть сфер, в которых MediaTek совместно с партнерами выпускает специализированные чипсеты.

Некоторые из них очень оригинальны. Например, энтузиастам всех мастей понравится миниатюрная копия марсохода Curiosity, напичканная очень серьезными технологиями: камерой с собственным Wi-Fi-роутером и сервером для отправки изображения, шестью колесами (все – ведущие), манипулятором с тремя степенями свободы. Таким вездеходом можно управлять по Bluetooth, он может двигаться со скоростью до 3 км/ч, разворачиваться в любом месте и вести видеосъемку с непрерывной трансляцией сигнала.

Другой пример использования процессоров MediaTek – компактный домашний 3D-принтер со скоростью печати 150 мм в секунду при точности 0,01 мм. Такой принтер поддерживает больше 10 различных материалов, может печатать объекты диаметром 180 мм и высотой 200 мм и работать без остановки до 36 часов. Здесь используется микросхема MediaTek LinkIt ONE. Такой принтер очень доступен, легок и помещается на стол.

Еще больше поражает воображение Smart Brewer – целая домашняя система для виноделия. Если при этих словах вы представили себе систему из чанов, с трудом помещающуюся на кухне, то зря: речь идет о компактном стакане с насадкой и трубкой, которая благодаря той же микросхеме LinkIt ONE полностью управляет всем процессом брожения, при этом контролировать процесс можно со смартфона через Bluetooth. Это настоящая винная бочка XXI века!

Многие изобретения, возможные благодаря полупроводниковым решениям MediaTek, еще ждут своих инноваторов и разработчиков. Кстати, MediaTek очень любит разработчиков и старается сотрудничать с ними как можно плотнее. Для этой цели был создан сайт MediaTek Labs (labs.mediatek.com) – онлайн-площадка, на которой начинающие (и не только) разработчики могут получить все необходимое для создания гаджетов в категориях нательной техники и Интернета вещей . Интересные проекты будут поощряться и развиваться совместно с компанией. Менее чем за год существования в Labs зарегистрировалось больше 6000 участников, из которых русскоязычных больше 16%. И это только начало!

Антон Чивчалов

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

В условиях использования единой технологии (и отсутствия практически применимых альтернатив, так как до массового внедрения квантовых процессоров еще далеко) единственным способом приспособить вычислительные чипы под те или иные задачи - стало изобретение различных архитектур ЦП.

Что такое архитектура процессора

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

За все время было создано много различных архитектур. Самые популярные из них - CISC, MISC, VLIW и RISC. Различия между ними касаются, главным образом, системы взаимодействия процессора с обрабатываемыми данными. Сейчас активно используются конвейерные архитектуры CISC и RISC.

Как работает архитектура процессора

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

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

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

Архитектура процессоров ARM

Всевозможные MIPS, PowerPC, SPARC и прочие архитектуры типа RISC оставим IT-специалистам. Когда дело касается смартфонов - стоит детальнее уделить внимание ARM, Это - разновидность RISC архитектуры с коротким конвейером, которая является одной из самых распространенных и удачных. Именно ARM использует большинство производителей (Qualcomm, MediaTek, Apple, Samsung, Huawei-HiSilicon и другие). Только Intel в своих SoC атом используют x86-совместимые CISC ядра.

Особенностью ARM процессоров является использование короткого конвейера. Его длина составляет 3 и более этапов, что немного на фоне десятков стадий у CISC. За счет этого сбои в работе конвейера минимально сказываются на скорости обработки программ, максимально эффективно нагружая каждый такт. Поэтому именно ARM стала самой популярной архитектурой процессоров для смартфонов и планшетов.

Архитектура и микроархитектура процессора

Довольно часто в СМИ и интернете происходит путаница между понятиями архитектуры и микроархитектуры процессора. Чтобы внести ясность, следует установить отношение между данными терминами. Так вот, архитектура - это общий принцип устройства и работы процессора, а микроархитектура - всего лишь один из вариантов ее реализации, имеющий свои особенности, но сохранающий совместимость с базовой архитектурой.

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

Большинство чипсетов для смартфонов содержат процессоры, созданные на ARM, а именно - микроархитектурах семейства Cortex и других. Список актуальных версий и их отличия приведены ниже.

Возможно вам будет интересно:

mobcompany.info

Архитектура процессора (общие вопросы и строение)

В первую очередь-что нам говорит Википедия о Пентиум 3? Intel Pentium III (в русской разговорной речи - Интел Пентиум три) - x86-совместимый микропроцессор архитектуры Intel P6, анонсированный 26 февраля 1999 года. Ядро Pentium III представляет собой модифицированное ядро Deschutes (которое использовалось в процессорах Pentium II). По сравнению с предшественником расширен набор команд (добавлен набор инструкций SSE) и оптимизирована работа с памятью. Это позволило повысить производительность как в новых приложениях, использующих расширения SSE, так и в существующих (за счёт возросшей скорости работы с памятью). Также был введён 64-битный серийный номер, уникальный для каждого процессора.

Вопрос: Архитектура процессора - что это? Ответ: Термин «архитектура процессора» в настоящее время не имеет однозначного толкования. С точки зрения программистов, под архитектурой процессора подразумевается его способность исполнять определенный набор машинных кодов. Большинство современных десктопных CPU относятся к семейству x86, или Intel-совместимых процессоров архитектуры IA32 (архитектура 32-битных процессоров Intel). Ее основа была заложена компанией Intel в процессоре i80386, однако в последующих поколениях процессоров она была дополнена и расширена как самой Intel (введены новые наборы команд MMX, SSE, SSE2 и SSE3), так и сторонними производителями (наборы команд EMMX, 3DNow! и Extended 3DNow!, разработанные компанией AMD). Однако разработчики компьютерного железа вкладывают в понятие «архитектура процессора» (иногда, чтобы окончательно не запутаться, используется термин «микроархитектура») несколько иной смысл. С их точки зрения, архитектура процессора отражает основные принципы внутренней организации конкретных семейств процессоров. Например, архитектура процессоров Intel Pentium обозначалась как Р5, процессоров Pentium II и Pentium III - Р6, а популярные в недавнем прошлом Pentium 4 относились к архитектуре NetBurst. После того, как компания Intel закрыла архитектуру Р5 для сторонних производителей, ее основной конкурент - компания AMD была вынуждена разработать собственную архитектуру - К7 для процессоров Athlon и Athlon XP, и К8 для Athlon 64.

Вопрос: Какие процессоры лучше, 64-битные или 32-битные? И почему? Ответ: Достаточно удачное 64-битное расширение классической 32-битной архитектуры IA32 было предложено в 2002 году компанией AMD (первоначально называлось x86-64, сейчас - AMD64) в процессорах семейства К8. Спустя некоторое время компанией Intel было предложено собственное обозначение - EM64T (Extended Memory 64-bit Technology). Но, независимо от названия, суть новой архитектуры одна и та же: разрядность основных внутренних регистров 64-битных процессоров удвоилась (с 32 до 64 бит), а 32-битные команды x86-кода получили 64-битные аналоги. Кроме того, за счет расширения разрядности шины адресов объем адресуемой процессором памяти существенно увеличился.

И… все. Так что те, кто ожидает от 64-битных CPU сколь-нибудь существенного прироста производительности, будут разочарованы - их производительность в подавляющем большинстве современных приложений (которые в массе своей заточены под IA32 и вряд ли в обозримом будущем будут перекомпилированы под AMD64/EM64T) практически та же, что и у старых добрых 32-битных процессоров. Весь потенциал 64-битной архитектуры может раскрыться лишь в отдаленном будущем, когда в массовых количествах появятся (а может, и не появятся) приложения, оптимизированные под новую архитектуру. В любом случае, наиболее эффективен переход на 64-бита будет для программ, работающих с базами данных, программ класса CAD/CAE, а также программ для работы с цифровым контентом.

Вопрос: Что такое процессорное ядро? Ответ: В рамках одной и той же архитектуры различные процессоры могут достаточно сильно отличаться друг от друга. И различия эти воплощаются в разнообразных процессорных ядрах, обладающих определенным набором строго обусловленных характеристик. Чаще всего эти отличия воплощаются в различных частотах системной шины (FSB), размерах кэша второго уровня, поддержке тех или иных новых систем команд или технологических процессах, по которым изготавливаются процессоры. Нередко смена ядра в одном и том же семействе процессоров влечет за собой замену процессорного разъема, из чего вытекают вопросы дальнейшей совместимости материнских плат. Однако в процессе совершенствования ядра, производителям приходится вносить в него незначительные изменения, которые не могут претендовать на «имя собственное». Такие изменения называются ревизиями ядра и, чаще всего, обозначаются цифробуквенными комбинациями. Однако в новых ревизиях одного и того же ядра могут встречаться достаточно заметные нововведения. Так, компания Intel ввела поддержку 64-битной архитектуры EM64T в отдельные процессоры семейства Pentium 4 именно в процессе изменения ревизии.

Вопрос: В чем заключается преимущество двухъядерных процессоров перед одноядерными? Ответ: Самым значимым событием 2005 года стало появление двухъядерных процессоров. К этому времени классические одноядерные CPU практически полностью исчерпали резервы роста производительности за счет повышения рабочей частоты. Камнем преткновения стало не только слишком высокое тепловыделение процессоров, работающих на высоких частотах, но и проблемы с их стабильностью. Так что экстенсивный путь развития процессоров на ближайшие годы был заказан, и их производителям волей-неволей пришлось осваивать новый, интенсивный путь повышения производительности продукции. Самой расторопной на рынке десктопных CPU, как всегда, оказалась Intel, первой анонсировавшая двухъядерные процессоры Intel Pentium D и Intel Extreme Edition. Впрочем, AMD с Athlon64 X2 отстала от конкурента буквально на считанные дни. Несомненным достоинством двухъядерников первого поколения, к которым относятся вышеназванные процессоры, является их полная совместимость с существующими системными платами (естественно, достаточно современными, на которых придется только обновить BIOS). Второе поколение двухъядерных процессоров, в частности, Intel Core 2 Duo, «требует» специально разработанных для них чипсетов и со старыми материнскими платами не работает.

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

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

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

При этом в современных процессорах кэш давно не является единым массивом памяти, как раньше, а разделен на несколько уровней. Наиболее быстрый, но относительно небольшой по объему кэш первого уровня (обозначаемый как L1), с которым работает ядро процессора, чаще всего делится на две половины - кэш инструкций и кэш данных. С кэшем L1 взаимодействует кэш второго уровня - L2, который, как правило, гораздо больше по объему и является смешанным, без разделения на кэш команд и кэш данных. Некоторые десктопные процессоры, по примеру серверных процессоров, также порой обзаводятся кэшем третьего уровня L3. Кэш L3 обычно еще больше по размеру, хотя и несколько медленнее, чем L2 (за счет того, что шина между L2 и L3 более узкая, чем шина между L1 и L2), однако его скорость, в любом случае, несоизмеримо выше, чем скорость системной памяти.

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

Вопрос: Что такое процессорная шина? Ответ: Процессорная (иначе - системная) шина, которую чаще всего называют FSB (Front Side Bus), представляет собой совокупность сигнальных линий, объединенных по своему назначению (данные, адреса, управление), которые имеют определенные электрические характеристики и протоколы передачи информации. Таким образом, FSB выступает в качестве магистрального канала между процессором (или процессорами) и всеми остальными устройствами в компьютере: памятью, видеокартой, жестким диском и так далее. Непосредственно к системной шине подключен только CPU, остальные устройства подсоединяются к ней через специальные контроллеры, сосредоточенные в основном в северном мосте набора системной логики (чипсета) материнской платы. Хотя могут быть и исключения - так, в процессорах AMD семейства К8 контроллер памяти интегрирован непосредственно в процессор, обеспечивая, тем самым, гораздо более эффективный интерфейс память-CPU, чем решения от Intel, сохраняющие верность классическим канонам организации внешнего интерфейса процессора. Основные параметры FSB некоторых процессоров приведены в табл

Процессор частота FSB, МГц Тип FSB Теоретическая пропускная способность FSB, Мб/с
Intel Pentium III 100/133 AGTL+ 800/1066
Intel Pentium 4 100/133/200 QPB 3200/4266/6400
Intel Pentium D 133/200 QPB 4266/6400
Intel Pentium 4 EE 200/266 QPB 6400/8533
Intel Core 133/166 QPB 4266/5333
Intel Core 2 200/266 QPB 6400/8533
AMD Athlon 100/133 EV6 1600/2133
AMD Athlon XP 133/166/200 EV6 2133/2666/3200
AMD Sempron 800 HyperTransport
AMD Athlon 64 800/1000 HyperTransport 6400/8000

Процессоры компании Intel используют системную шину QPB (Quad Pumped Bus), передающую данные четыре раза за такт, тогда как системная шина EV6 процессоров AMD Athlon и Athlon XP передает данные два раза за такт (Double Data Rate). В архитектуре AMD64, используемой компанией AMD в процессорах линеек Athlon 64/FX/Opteron, применен новый подход к организации интерфейса CPU - здесь вместо процессорной шины FSB и для сообщения с другими процессорами используются: высокоскоростная последовательная (пакетная) шина HyperTransport, построенная по схеме Peer-to-Peer (точка-точка), обеспечивающая высокую скорость обмена данными при сравнительно низкой латентности.

И наконец-то конкретика!

Процессы первого поколения этого семейства (Intel Pentium III 450 и Intel Pentium III 500) были анонсированы Intel в конце февраля 1999 года и имели следующие характеристики:

  • технология производства: 0,25 мкм;
  • ядро процессора: Katmai, разработанное на основе Deschutes (поздняя версия ядра процессоров Intel Pentium II) с добавленным SSE-конвейером для обработки 70 новых SSE-инструкций;
  • L1-кэш: объем - 32 Кбайт (16 Кбайт для данных плюс 16 Кбайт для инструкций);
  • L2-кэш: объем - 512 Кбайт, тактовая частота - половина тактовой частоты ядра, внешний (не интегрирован на одном кристалле с процессором, а выполнен на отдельных микросхемах, которые расположены на той же печатной плате, что и микросхема процессора), поддерживает ECC-механизм обнаружения и коррекции ошибок при обмене данными с ядром процессора; в терминологии Intel такой L2-кэш называют Discrete Cache;
  • частота системной шины: 100 МГц, поддерживается ECC;
  • напряжение питания ядра процессора: 2,0 В;
  • многопроцессорность: поддерживается до двух процессоров на одной системной шине;
  • идентификация: каждый процессор имеет уникальный 96-битный серийный номер, «прошитый» в нем во время изготовления, который может быть считан программными средствами;
  • в случае нежелания пользователя «разглашать» серийный номер своего процессора возможность считывания его серийного номера может быть заблокирована на уровне BIOS с помощью программы настройки BIOS материнской платы или же утилиты Processor Serial Number Control Utility физический разъем: Slot 1;
  • исполнение: S.E.C.C.- или S.E.C.C.2-картридж.

online-studies.ru

Архитектура современных процессоров

Введение

4. Виртуализация

6. Будущие технологии

Библиографический список

Введение

Процессор (или центральный процессор, ЦП) - это транзисторная микросхема, которая является главным вычислительным и управляющим элементом компьютера.

Английское название процессора - CPU (Central Processing Unit).

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

В первом процессоре компании Intel - i4004, выпущенном в 1971 году, на одном кристалле было 2300 транзисторов, а в процессоре Intel Pentium 4, выпущенном 14 апреля 2003 года, их уже 55 миллионов.Современные процессоры изготавливаются по 0,13-микронной технологии, т.е. толщина кристалла процессора, составляет 0,13 микрон. Для сравнения - толщина кристалла первого процессора Intel была 10 микрон.

Рисунок 1 – принципиальная схема процессора

Управляющий блок - управляет работой всех блоков процессора.

Арифметико-логический блок - выполняет арифметические и логические вычисления.

Регистры - блок хранения данных и промежуточных результатов вычислений - внутренняя оперативная память процессора.

Блок декодировки - преобразует данные в двоичную систему.

Блок предварительной выборки - получает команду от устройства (клавиатура и т.д.) и запрашивает инструкции в системной памяти.

Кэш-память (или просто кэш) 1-го уровня - хранит часто использующиеся инструкции и данные.

Кэш-память 2-го уровня - хранит часто использующиеся данные.

Блок шины - служит для ввода и вывода информации.

Эта схема соответствует процессорам архитектуры P6. По этой архитектуре создавались процессоры с Pentium Pro до Pentium III. Процессоры Pentium 4 изготавливаются по новой архитектуре Intel® NetBurst.

В процессорах Pentium 4 кэш 1-го уровня поделен на две части - кэш данных и кэш команд.

Существует два типа тактовой частоты - внутренняя и внешняя.

Внутренняя тактовая частота - это тактовая частота, с которой происходит работа внутри процессора.

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

До 1992 года в процессорах внутренняя и внешняя частоты совпадали, а в 1992 году компания Intel представила процессор 80486DX2, в котором внутренняя и внешняя частоты были различны - внутренняя частота была в 2 раза больше внешней. Было выпущено два типа таких процессоров с частотами 25/50 МГц и 33/66 МГц, затем Intel выпустила процессор 80486DX4 с утроенной внутренней частотой (33/100 МГц).

С этого времени остальные компании-производители также стали выпускать процессоры с удвоенной внутренней частотой, а компания IBM стала выпускать процессоры с утроенной внутренней частотой (25/75 МГц, 33/100 МГц и 40/120 МГц).

В современных процессорах, например, при тактовой частоте процессора 3 ГГц, частота системной шины 800 МГц.

Для чего предназначены дополнительные наборы команд? В первую очередь - для увеличения быстродействия при выполнении некоторых операций. Одна команда из дополнительного набора, как правило, выполняет действие, для которого понадобилась бы небольшая программа, состоящая из команд основного набора. Опять-таки, как правило, одна команда выполняется процессором быстрее, чем заменяющая ее последовательность. Однако в 99% случаев, ничего такого, чего нельзя было бы сделать с помощью основных команд, с помощью команд из дополнительного набора сделать нельзя. Таким образом, упомянутая выше проверка программой поддержки дополнительных наборов команд процессором, должна выполнять очень простую функцию: если, например, процессор поддерживает SSE - значит, считать будем быстро и с помощью команд из набора SSE. Если нет - будем считать медленнее, с помощью команд из основного набора. Корректно написанная программа обязана действовать именно так. Впрочем, сейчас практически никто не проверяет у процессора наличие поддержки MMX, так как все CPU, вышедшие за последние 5 лет, этот набор поддерживают гарантированно. Для справки приведем таблицу, на которой обобщена информация о поддержке различных расширенных наборов команд различными десктопными (предназначенными для настольных ПК) процессорами.

Таблица 1

Сравнение основных наборов команд

* в зависимости от модификации

В 1970г. доктор Маршиан Эдвард Хофф с командой инженеров из Intelсконструировал первый микропроцессор. Во всяком случае, так принято считать – хотя на самом деле еще в 1968 году инженеры Рэй Холт и Стив Геллер создали подобную универсальную микросхему SLFдля бортового компьютера истребителя F-14. Первый процессор работал на частоте 750 кГц. Сегодняшние процессоры от Intelбыстрее своего прародителя более чем в десять тысяч раз

Тактовая частота – это то количество элементарных операций (тактов), которые процессор может выполнить в течение секунды. Еще недавно этот показатель был для пользователей не то, что самым важным – единственным значимым! Многие пользователи пытались «разогнать» свой процессор при помощи специальных программ. Впрочем, частота процессоров и безо всякого разгона возрастала в геометрической прогрессии – в полном соответствии с так называемым «законом Мура» (в свое время Гордон Мур предсказал, что каждые полтора года частота микропроцессоров будет удваиваться вместе с числом транзисторов на кристалле). Этот принцип успешно работал вплоть до 2004 г. – пока на пути инженеров Intelне встали законы физики. Ведь размеры транзисторов «ужимать» до бесконечности нельзя. Уже сегодня процессоры производятся по 65-наномикронной технологии (технология 65 нанометров), а толщина «подложки» транзисторов не превышает 1 нм (всего 5 атомов). В ближайшие годы размеры транзисторов могут сократиться до 22 нм, что близко к физическому пределу. Одновременно с уменьшением размеров транзисторов резко возрастает количество тепла, которое выделяет работающий процессор – например у последних моделей Pentiumтепловыделение составляет около 120 ватт (что соответствует двум бытовым электролампам)!

1. 8086: первый процессор для ПК

8086 стал первым процессором x86 - Intel к тому времени уже выпустила модели 4004, 8008, 8080 и 8085. Этот 16-битный процессор мог работать с 1 Мбайт памяти по внешней 20-битной адресной шине. Тактовая частота, выбранная IBM (4,77 МГц) была довольно низкой, и к концу своей карьеры процессор работал на 10 МГц. Первые ПК использовали производную процессора 8088, которая имела всего 8-битную внешнюю шину данных. Что интересно, системы управления в американских шаттлах используют процессоры 8086, и NASA пришлось в 2002 году покупать процессоры через eBay, поскольку Intel их больше не производила.

Таблица 2

Характеристики 8086

80286: 16 Мбайт памяти, но всё ещё 16 битов

Выпущенный в 1982 году, процессор 80286 был в 3,6 раза быстрее 8086 на той же тактовой частоте. Он мог работать с памятью объёмом до 16 Мбайт, но 286 всё ещё оставался 16-битным процессором. Он стал первым процессором x86, оснащённым диспетчером памяти (memory management unit, MMU), который позволял работать с виртуальной памятью. Подобно 8086, процессор не содержал блока работы с плавающей запятой (floating-point unit, FPU), но мог использовать чип-сопроцессор x87 (80287). Intel выпускала 80286 на максимальной тактовой частоте 12,5 МГц, хотя конкурентам удалось добиться 25 МГц.

Таблица 3

Характеристики 8026

386: 32-битный и с кэш-памятью

Intel 80836 стал первым процессором x86 с 32-битной архитектурой. Вышло несколько версий этого процессора. Две наиболее известные: 386 SX (Single-word eXternal), который использовал 16-битную шину данных, и 386 DX (Double-word eXternal) с 32-битной шиной данных. Можно отметить ещё две версии: SL, первый процессор x86 с поддержкой кэша (внешнего) и 386EX, который использовался в космической программе (например, телескоп "Хаббл" использует этот процессор).

Таблица 4

Характеристики 386

486: FPU и множители

Процессор 486 для многих стал знаковым, поскольку с него началось знакомство с компьютером целого поколения. На самом деле, знаменитый 486 DX2/66 долгое время считался минимальной конфигурацией для геймеров. Этот процессор, выпущенный в 1989 году, обладал рядом новых интересных функций, подобно встроенному на кристалл сопроцессору FPU, кэшу данных и впервые представил множитель. Сопроцессор x87 был встроен в линейку 486 DX (не SX). В процессор был интегрирован кэш первого уровня объёмом 8 кбайт (сначала со сквозной записью/write-through, затем с обратной записью/write-back с чуть более высокой производительностью). Существовала возможность добавления кэша L2 на материнскую плату (работал на частоте шины).

Второе поколение 486 процессоров обзавелось множителем CPU, поскольку процессор работал быстрее, чем FSB, появились версии DX2 (множитель 2x) и DX4 (множитель 3x). Ещё один анекдот: "487SX", продаваемый как FPU для 486SX, представлял собой, по сути, полноценный процессор 486DX, который отключал и заменял оригинальный CPU.

Таблица 5

Характеристики 486

У DX4 было 16 кбайт кэша и больше транзисторов - 1,6 млн. Этот процессор, изготавливаемый по 600-нм техпроцессу с площадью кристалла 76 мм², потреблял меньше энергии, чем оригинальный 486 (при напряжении 3,3 В).

Рассмотрим их на примере процессора IntelPentium1.

В июне 1989 года Винодом Дэмом (англ. Vinod Dahm) были сделаны первые наброски процессора под кодовым названием P5. В конце 1991 года была завершена разработка макета процессора, и инженеры смогли запустить на нём программное обеспечение. Начался этап оптимизации топологии и повышения эффективности работы. В феврале 1992 года проектирование в основном было завершено, началось всеобъемлющее тестирование опытной партии процессоров. В апреле 1992 года принято решение о начале промышленного производства, в качестве основной промышленной базы была выбрана орегонская фабрика № 5. Началось промышленное освоение производства и окончательная доводка технических характеристик.

Основные отличия от процессора 486:

а) Суперскалярная архитектура. Благодаря использованию суперскалярной архитектуры процессор может выполнять 2 команды за 1 такт. Такая возможность существует благодаря наличию двух конвейеров - u- и v-. u-конвейер - основной, выполняет все операции над целыми и вещественными числами; v-конвейер - вспомогательный, выполняет только простые операции над целыми и частично над вещественными. Чтобы старые программы (для 486) в полной мере использовали возможности такой архитектуры, необходимо было их перекомпилировать. Pentium - первый CISC-процессор, использующий многоконвейерную архитектуру.

б) 64-битная шина данных. Позволяет процессору Pentium за один шинный цикл обмениваться вдвое большим объёмом данных с оперативной памятью, чем 486 (при одинаковой тактовой частоте).

в) Механизм предсказания адресов ветвления. Применяется для сокращения времени простоя конвейеров, вызванного задержками выборки команд при изменении счетчика адреса во время выполнения команд ветвления. Для этого в процессоре используется буфер адреса ветвления BTB (Branch Target Buffer), использующий алгоритмы предсказания адресов ветвления.

г) Раздельное кэширование программного кода и данных. В процессорах Pentium используется кэш-память первого уровня (кэш L1) объёмом 16 Кб, разделённая на 2 сегмента: 8 Кб для данных и 8 Кб для инструкций. Это улучшает производительность и позволяет делать двойное кэширование доступным чаще, чем это было возможно раньше. Кроме того, изменён механизм кэширования.

д) Улучшенный блок вычислений с плавающей запятой (FPU).

е) Симметричная многопроцессорная работа (SMP).

3. Переход к двуядерным процессорам

Рисунок 2 – микрофотография одного из первых двуядерных процессоров

компьютер процессор одноядерный двуядерный

Первой двуядерные чипы для настольных ПК представила корпорация Intel - 11 апреля было официально объявлено о начале поставок процессора Pentium 4 Extreme Edition 840. AMD не заставила себя долго ждать и уже 21 апреля ознакомила публику с тремя серверными двуядерными процессорами Opteron, а также представила новую торговую марку - Athlon 64 X2, под которой уже 9 мая были официально презентованы двуядерные процессоры для настольных ПК.

Переход на двуядерную архитектуру обусловлен тем, что традиционные методы по увеличению производительности практически исчерпали себя. Из-за ряда технологических проблем темпы наращивания тактовых частот в последнее время заметно замедлились. К примеру, в последний год перед появлением двуядерных процессоров компания Intel смогла нарастить частоты своих CPU лишь на 400 МГц, а конкуренты от AMD ускорились всего на 200 МГц. Как видим, рост тактовых частот дается нелегко. А другие методы, такие как увеличение скорости шины и размера кэш-памяти, ощутимого прироста производительности не дают.

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

Что же представляет собой двуядерный процессор? На первый взгляд это просто два процессора, объединенных в общем корпусе. Но не все так просто. Во-первых, нужно различать термины «процессор» и «процессорное ядро». Во-вторых, существует проблема общих ресурсов, доступ к которым нужно распределять между двумя ядрами. Если же посмотреть с точки зрения программного обеспечения, то двуядерный процессор система рассматривает как два независимых. Понятно, что двуядерный процессор способен одновременно выполнять два потока инструкций, в то время как обычный CPU производит вычисления строго по очереди. До этого уже была произведена попытка разделить выполняемые инструкции - речь идет о технологии Intel Hyper-Threading. Вот только в ней два «виртуальных» процессора почти во всем разделяют между собой ресурсы одного «физического» процессора (кэши, конвейер, исполнительные устройства). Практически все ресурсы общие - и если они уже заняты одним из выполняющихся потоков, то второй будет вынужден ожидать их освобождения.

По сути, принцип работы процессора с Hyper-Threading похож на принцип работы многозадачной операционной системы, только происходит это не на программном, а на аппаратном уровне. Разделение потока на две части, как правило, позволяет эффективнее загрузить исполнительные устройства процессора. И при этом немного облегчить операционной системе задачу имитации множества независимых компьютеров на одном существующем процессоре.

Полноценный двуядерный процессор - совсем другое дело. В этом случае система определяет действительно два «честных» процессорных ядра. И прирост производительности при этом составляет уже не 10-20% (средний показатель для процессора с технологией Hyper-Threading), а все 80-90% и даже больше (естественно, при использовании обоих ядер). В принципе, двуядерный процессор представляет собой SMP-систему (SMP - Symmetric MultiProcessing, симметричная многопроцессорная обработка; термин, обозначающий систему с несколькими равноправными процессорами). По сути своей он не отличается от обыкновенной двухпроцессорной системы, в которой установлено два независимых процессора. В результате мы получаем все преимущества двухпроцессорных систем без необходимости использования сложных и дорогих двухпроцессорных материнских плат.

Один из способов создать энергоэффективный процессор - это переход от одноядерной процессорной архитектуры к многоядерной. Дело в том, что многоядерные процессоры позволяют повышать производительность именно за счет увеличения IPC, то есть количества инструкций программного кода, обрабатываемых за каждый такт работы процессора. В идеале при переходе от одноядерной архитектуры процессора к двуядерной можно сохранить тот же уровень производительности, снизив тактовую частоту каждого из ядер почти вдвое. В реальности, конечно, все несколько сложнее - результат будет зависеть от используемого приложения и его оптимизации к двуядерному процессору. То есть, чтобы приложение могло одновременно задействовать несколько процессорных ядер, оно должно хорошо распараллеливаться. Если же программный код написан таким образом, что подразумевает только последовательное выполнение инструкций, от многоядерности проку не будет. Для того чтобы продемонстрировать, как именно масштабируется производительность многоядерного процессора в зависимости от оптимизации программного кода к многоядерной архитектуре, рассмотрим следующий пример. Имеется многоядерный процессор с количеством ядер равным n. Предположим, что на этом процессоре выполняется программа, включающая N инструкций программного кода, причем S инструкций этого кода может выполняться только последовательно друг за другом, а P (равное N – S) инструкций являются программно независимыми друг от друга и могут выполняться одновременно на всех ядрах процессора. Обозначим через s (равное S / N) - долю инструкций, выполняемых последовательно, а через p (равное 1 – s) - долю инструкций, выполняемых параллельно.

Рисунок 3 - Выполнение программного кода на одноядерном процессоре

В случае применения одноядерного процессора (рисунок 4) время, затрачиваемое на выполнение всего программного кода, составит:

t1 = N / IPS(3.1)

В случае использования n-ядерного процессора (рисунок 1) время, затрачиваемое на выполнение всего программного кода, окажется меньше за счет параллельного выполнения P команд на n ядрах процессора и составит:

Поскольку приростом производительности в данном случае можно считать сокращение времени выполнения программы при использовании многоядерного процессора по сравнению со временем выполнения той же программы при применении одноядерного процессора, то есть t1 / tn, получим, что прирост производительности составит:

Графическая зависимость прироста производительности от числа ядер процессора показана на рисунке 5.

Рисунок 4 - Выполнение программного кода на многоядерном процессоре

Как видно из приведенной формулы, прирост производительности в случае многоядерной архитектуры процессора в большой степени зависит от оптимизации приложения к многоядерной архитектуре, то есть от его способности распараллеливаться. К примеру, даже в случае, когда 90% программного кода распараллеливается на несколько исполнительных ядер, использование четырехъядерного процессора позволяет получить только трехкратный прирост производительности в сравнении с одноядерной архитектурой процессора.

Рисунок 5 - Зависимость прироста производительности от числа ядер процессора

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

4. Виртуализация

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

Программная виртуализация:

Динамическая трансляция - При динамической трансляции (бинарной трансляции) проблемные команды гостевой OC перехватываются гипервизором. После того как эти команды заменяются на безопасные, происходит возврат управления гостевой ОС. Паравиртуализация - техника виртуализации, при которой гостевые операционные системы подготавливаются для исполнения в виртуализированной среде, для чего их ядро незначительно модифицируется. Операционная система взаимодействует с программой Гипервизора, который предоставляет ей гостевой API, вместо использования напрямую таких ресурсов, как таблица страниц памяти. Метод паравиртуализации позволяет добиться более высокой производительности, чем метод динамической трансляции. Метод паравиртуализации применим лишь в том случае, если гостевые ОС имеют открытые исходные коды, которые можно модифицировать согласно лицензии.

Аппаратная виртуализация:

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

б) Возможность увеличения быстродействия платформ виртуализации. Управление виртуальными гостевыми системами осуществляет напрямую небольшой промежуточный слой программного обеспечения, гипервизор, что дает увеличение быстродействия.

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

г) Гостевая система становится не привязана к архитектуре хостовой платформы и к реализации платформы виртуализации. Технология аппаратной виртуализации делает возможным запуск 64-битных гостевых систем на 32-битных хостовых системах (с 32-битными средами виртуализации на хостах).

Реализации:

IBMSystem370, VM/370 - 60-е года. На виртуальных системах IBM VM были отработаны идеи и технологии, во многом определившие архитектуры современных решений по виртуализации; VMware; Xen; KVM.

Технологии:

V86 mode - старая; Intel VT (VT-x) - Intel Virtualization Technology for x86; AMD Pacific.

5. Кратко о некоторых других технологиях

а) Intel Turbo Boost – при необходимости позволяет работающим ядрам повышать тактовую частоту (с шагом 133 МГц) до максимально возможной по тепловой защите. Неиспользуемые ядра могут программно переводиться в режим нулевого энергопотребления.

б) Технология Intel Smart Cache обеспечивает высокую производительность и эффективность кэш-памяти, оптимизирована для самых современных многопоточных игр.

в) Технология Intel QuickPath Interconnect разработана для повышения пропускной способности и снижения задержек в процессе обмена. С процессорами Extreme Edition она позволяет достигнуть суммарных скоростей передачи данных до 25,6 ГБ/с.

г) Технология Intel HD Boost значительно повышает производительность в мультимедийных задачах. Команды из наборов дополнительных инструкций выполняются за один тактовый цикл, позволяя достичь нового уровня эффективности с приложениями, оптимизированными для набора команд SSE4.

6. Будущие технологии

Оптические компьютеры - Процессоры, в которых вместо электрических сигналов обработке подвергаются потоки света (фотоны, а не электроны).

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

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

Библиографический список

Леонтьев, П.В. Новейший самоучитель работы на компьютере / П.В. Леонтьев М.: ОЛМА Медиа Групп, 2008. 528 с.

http://www.ixbt.com/cpu/x86-cpu-faq-2006.shtml

http://www.thg.ru/cpu/intel_cpu_history/index.html

http://ru.wikipedia.org/wiki/Pentium

http://rpnyamal.ru/?page_id=3

http://www.compress.ru/article.aspx?id=16962&iid=786

mirznanii.com

Архитектура микропроцессоров. Основные виды архитектур

Архитектура микропроцессоров.

Эта глава посвящена архитектурным особенностям микропроцессоров. В ней приведены общие сведения о микропроцессорах, рассматриваются принципы структурно – функциональной организации) типы данных, регистровая память, спо­собы адресации и система команд микропроцессоров. Излагаемый материал ил­люстрируется на простейших 8– и 16–разрядных процессорах.

Основные понятия. Микропроцессор - это программно–управляемое устройство в виде интегральной микросхемы (БИС или СБИС), предназначенное для обработки цифровой информации. Поскольку все современные микро­процессоры имеют интегральное исполнение, синонимом микропроцессора стал термин процессор.

Микроконтроллер - это специализированный процессор, предназначен­ный для реализации функций управления (control - управление).

Цифровой сигнальный процессор (Digital Signal Processor - DSP) - это специа­лизированный процессор, предназначенный для обработки цифровых сигналов.

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

Под организацией процессора понимают совокупность его узлов (устройств, блоков, модулей), связи между узлами и их функциональные характе­ристики. Организация определяет аппаратную организацию процессора, т. е. состав и взаимодействие его аппаратных средств. Выделяют два уровня организации:

● физическую организацию в виде принципиальной схемы;

● логическую организацию в виде структурно–функциональной схемы.

В дальнейшем рассматривается организация микропроцессоров на логиче­ском уровне, или структурно–функциональная организация процессоров.

Под архитектурой процессора будем понимать совокупность его программно–аппаратных средств, обеспечивающих обработку цифровой инфор­мации (выполнение программы), т. е. совокупность всех средств, доступных про­грамме (или пользователю). Это более общее понятие по сравнению с понятием организация включает в себя набор программно–доступных регистров и операци­онных устройств, систему основных команд и способов адресации, объем и орга­низацию адресуемой памяти, виды и способы обработки данных (обмен, преры­вания, примой доступ к памяти и др.). Например, современные 32–разрядные процессоры х86 с архитектурой IA–32 (Intel Architecture - 32 bit) имеют стандарт­ный набор регистров, общую систему основных команд, одинаковые способы организации и адресации памяти, защиты памяти и обслуживания прерываний. Отметим, что понятие архитектуры в большей степени характеризует свойства системы, чем устройства.

Основные виды архитектур.

По форматам используемых команд (инструкций) можно выделить:

● CISC–архитектуру, которая относится к процессорам (компьютерам) с полным набором команд (Complete Instruction Set Computer - CISC). Она реализова­на во многих типах микропроцессоров (например Pentium), выполняющих большой набор разноформатных команд с использованием многочисленных способов адресации.

Система команд процессоров с CISC–архитектурой может содержать не­сколько сотен команд разного формата (от 1 до 15 байт), или степени слож­ности, и использовать более 10 различных способов адресации, что позволя­ет программисту реализовать наиболее эффективные алгоритмы решения различных задач.

Развитие традиционных CISC–архитектур микропроцессоров по пути рас­ширения функциональных возможностей и снижения затрат на программиро­вание привело к увеличению числа команд в наборе и числа микрокоманд в команде. Следствием этого явилось усложнение интегральных схем и сни­жение быстродействия выполнения программ. Один из возможных путей уст­ранения указанных недостатков состоит в использовании сокращенного набо­ра команд, организация которого подчинена увеличению скоростей их выпол­нения;

● RISC–архитектуру, которая относится к процессорам (компьютерам) с сокра­щенным набором команд (Reduced instruction Set Computer - RISC). Появле­ние RISC–архитектуры продиктовано тем, что многие CISC–команды и спо­собы адресации используются достаточно редко. Основная особенность RISC–архитектуры проявляется в том, что система команд состоит из неболь­шого количества часто используемых команд одинакового формата, которые могут быть выполнены за один командный цикл (такт) центрального процес­сора. Более сложные, редко используемые команды реализуются на про­граммном уровне. Однако за счет значительного повышения скорости испол­нения команд средняя производительность RISC–процессоров может оказать­ся выше, чем у процессоров с CISC–архитектурой.

Большинство команд RISC–процессоров связано с операцией регистр–регистр. Для обращения к памяти оставлены наиболее простые с точки зре­ния временных затрат операции загрузки в регистры и записи в память.

Современные RISC–процессоры реализуют около 100 команд, имеющих фиксированный формат длиной 4 байта, и используют небольшое число наи­более простых способов адресации (регистровую, индексную и некоторые другие).

Для сокращения количества обращений к внешней оперативной памяти RISC–процессоры содержат десятки–сотни регистров общего назначения (РОН), тогда как в CISC–процессорах всего 8–16 регистров. Обращение к внешней памяти в RISC–процессорах используется только в операциях за­грузки данных в РОН или пересылки результатов из РОН в память. За счет со­кращения аппаратных средств, необходимых для декодирования и выполне­ния сложных команд, достигается существенное упрощение интегральных схем RISC–процессоров и снижение их стоимости. Кроме того, значительно повышается производительность. Благодаря указанным достоинствам во многих современных CISC–процессорах (последние модели Pentium и К7) ис­пользуется RISC–ядро. При этом сложные CISC–команды предварительно преобразуются в последовательность простых RISC–операций и быстро вы­полняются RISC–ядром;

● VLIW–архитектуру, которая относится к микропроцессорам с использованием очень длинных команд (Very Large Instruction Word - VLIW). Отдельные поля команды содержат коды, обеспечивающие выполнение различных операций. Одна VLIW–команда может выполнить сразу несколько операций одновремен­но в различных узлах микропроцессора. Формирование «длинных» VLIW–ko­манд производит соответствующий компилятор при трансляции программ, написанных на языке высокого уровня. VLIW–архитектура реализована в неко­торых типах современных микропроцессоров и является весьма перспектив­ной для создания нового поколения сверхвысокопроизводительных процес­соров.

По способу организации выборки команд и данных различа­ют два вида архитектур:

● принстонская архитектура, или архитектура фон–Неймана, особенностью которой является (рис. 2.1.1) использование:

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

Общей шины, по которой в процессор поступают команды и данные, а в опе­ративную память записываются результаты, что значительно упрощает отладку, тестирование и текущий контроль функционирования системы, повышает ее надежность. Чтобы отделить команду от данных, первым из памяти всегда поступает код выполняемой операции, а затем следуют данные. По умолчанию код операции загружается в регистр команд, а дан­ные - в блок регистров (рис. 2.1.1). Из–за ограниченного числа внешних выводов общая шина обычно работает в режиме временного мультиплек­сирования, т. е. противоположные направления обмена данными между микропроцессором, памятью или другими внешними устройствами разде­лены во времени.

Недостаток принстонской архитектуры - использование общей шины для пе­редачи команд и данных ограничивает производительность цифровой системы;

● гарвардская архитектура (создатель Говард Айкен), особенностью которой является физическое разделение памяти команд (программ) и памяти данных (рис. 2.1.2). Это обстоятельство вызвано постоянно возрастающими требова­ниями к производительности микропроцессорных систем. Память команд и память данных соединяются с процессором отдельными шинами. Благодаря разделению потоков команд и данных, а также совмещению операций их вы­борки (и записи результатов обработки) обеспечивается более высокая про­изводительность, чем при использовании принстонской архитектуры.

Недостатки гарвардской архитектуры: усложнение конструкции из–за ис­пользования отдельных шин для команд и данных; фиксированный объем па­мяти для команд и данных; увеличение общего объема памяти из–за невоз­можности ее оптимального перераспределения между командами и данными. Гарвардская архитектура получила широкое применение в микроконтрол­лерах - специализированных микропроцессорах для управления различными объектами, а также во внутренней структуре современных высокопроизводи­тельных микропроцессоров в кэш–памяти с раздельным хранением команд и данных. В то же время во внешней структуре большинства микропроцессор­ных систем реализуются принципы принстонской архитектуры.

Отметим, что архитектура микропроцессора тесно связана с его структурой. Реализация тех или иных архитектурных особенностей требует введении в струк­туру микропроцессора соответствующих устройств и обеспечения механизмов их совместного функционирования.

pue8.ru

Архитектура процессора

Технический университет Молдовы

РЕФЕРАТ ПО ПРОГРАММИРОВАНИЮ

ТЕМА: Память и архитектура процессора

Факультет CIM

Группа С - 092

Подготовил Плис Владимир.

Кишинёв 1999 г.

Введение.

1) Историческая ретроспектива.

2) Архитектурное развитие.

3) Процесс производства.

4) Программная совместимость.

5) Обзор процессоров.

Будущие разработки Intel.

Процессор, или более полно микропроцессор, а также часто называемый ЦПУ (CPU - central processing unit) является центральным компонентом компьютера. Это разум, который управляет, прямо или косвенно, всем происходящим внутри компьютера.

Когда фон Нейман впервые предложил хранить последовательность инструкций, так называемые программы, в той же памяти, что и данные, это была поистине новаторская идея. Опубликована она в "First Draft of a Report on the EDVAC" в 1945 году. Этот отчет описывал компьютер состоящим из четырех основных частей: центрального арифметического устройства, центрального управляющего устройства, памяти и средств ввода-вывода.

Сегодня, более полувека спустя, почти все процессоры имеют фон-неймановскую архитектуру.

Историческая ретроспектива

Как известно, все процессоры персональных компьютеров основаны на оригинальном дизайне Intel. Первым применяемым в PC процессором был интеловский чип 8088. В это время Intel располагал выпущенным ранее более мощным процессором 8086. 8088 был выбран по соображениям экономии: его 8-битная шина данных допускала более дешевые системные платы, чем 16-битная у 8086. Также во время проектирования первых PC большинство доступных интерфейсных микросхем использовали 8-битный дизайн. Те первые процессоры даже не приближаются к мощи, достаточной для запуска современных приложений.

В таблице ниже приведены основные группы интеловских процессоров от первой генерации 8088/86 до шестого поколения Pentium Pro и Pentium II:

Третье поколение процессоров, основанных на Intel 80386SX и 80386DX, были первыми применяемыми в PC 32-битными процессорами. Основным отличием между ними было то, что 386SX был 32-разрядным только внутри, поскольку он общался с внешним миром по 16-разрядной шине. Это значит, что данные между процессором и остальным компьютером перемещались на вполовину меньшей скорости, чем у 486DX.

Четвертая генерация процессоров была также 32-разрядной. Однако все они предлагали ряд усовершенствований. Во-первых, был полностью пересмотрен весь дизайн 486 поколения, что само по себе удвоило скорость. Во-вторых, все они имели 8kb внутреннего кэша, прямо у процессорной логики. Такое кэширование передачи данных от основной памяти значило, что среднее ожидание процессора запросов к памяти на системной плате сократилось до 4%, поскольку, как правило, необходимая информация уже находилась в кэше.

Модель 486DX отличалась от 486SX только поставляемым внутри математическим сопроцессором. Этот отдельный процессор спроектирован для проведения операций над числами с плавающей точкой. Он мало применяется в каждодневных приложениях, но кардинально меняет производительность числовых таблиц, статистического анализа, систем проектирования и так далее.

Важной инновацией было удвоение частоты, введенное в 486DX2. Это значит что внутри процессор работает на удвоенной по отношению ко внешней электронике скоростью. Данные между процессором, внутренним кэшем и сопроцессором передаются на удвоенной скорости, приводя к сравнимой прибавке в производительности. 486DX4 развил эту технологию дальше, утраивая частоту до внутренних 75 или 100MHz, а также удвоив объем первичного кэша до 16kb.

Pentium, определив пятое поколение процессоров, значительно превзошел в производительности предшествующие 486 чипы благодаря нескольким архитектурным изменениям, включая удвоение ширины шины до 64 бит. P55C MMX сделал дальнейшие значительные усовершенствования, удвоив размер первичного кэша и расширив набор инструкций оптимизированными для мультимедиа приложений операциями.

Pentium Pro, появившись в 1995 году как наследник Pentium, был первым в шестом поколении процессоров и ввел несколько архитектурных особенностей, не встречавшихся ранее в мире PC. Pentium Pro стал первым массовым процессором, радикально изменившим способ выполнения инструкций переводом их в RISC-подобные микроинструкции и выполнением их в высокоразвитом внутреннем ядре. Он также замечателен значительно более производительным вторичным кэшем относительно всех прежних процессоров. Вместо использования базирующегося на системной плате кэша, работающего на скорости шины памяти, он использует интегрированный кэш второго уровня на своей собственной шине, работающей на полной частоте процессора, обычно в три раза быстрее кэша на Pentium-системах.

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

Pentium II улучшил архитектуру Pentium Pro удвоением размера первичного кэша до 32kb, использованием специального кэша для увеличения эффективности 16-битной обработки, (Pentium Pro оптимизирован для 32-битных приложений, а с 16-битным кодом не обращается столь же хорошо) и увеличением размеров буферов записи. Однако о основной темой разговоров вокруг новых Pentium II была его компоновка. Интегрированный в Pentium Pro вторичный кэш, работающий на полной частоте процессора, был заменен в Pentium II на малую схему, содержащую процессор и 512kb вторичного кэша, работающего на половине частоты процессора. Собранные вместе, они заключены в специальный одностороний картридж (single-edge cartridge - SEC), предназначенный для вставления в 242-пиновый разъем (Socket 8) на нового стиля системных платах Pentium II.

Основная структура

Основные функциональные компоненты процессора

  • Ядро: Сердце современного процессора - исполняющий модуль. Pentium имеет два параллельных целочисленных потока, позволяющих читать, интерпретировать, выполнять и отправлять две инструкции одновременно.
  • Предсказатель ветвлений: Модуль предсказания ветвлений пытается угадать, какая последовательность будет выполняться каждый раз когда программа содержит условный переход, так чтобы устройства предварительной выборки и декодирования получали бы инструкции готовыми предварительно.
  • Блок плавающей точки. Третий выполняющий модуль внутри Pentium, выполняющий нецелочисленные вычисления
  • Первичный кэш: Pentium имеет два внутричиповых кэша по 8kb, по одному для данных и инструкций, которые намного быстрее большего внешнего вторичного кэша.
  • Шинный интерфейс: принимает смесь кода и данных в CPU, разделяет их до готовности к использованию, и вновь соединяет, отправляя наружу.

Все элементы процессора синхронизируются с использованием частоты часов, которые определяют скорость выполнения операций. Самые первые процессоры работали на частоте 100kHz, сегодня рядовая частота процессора - 200MHz, иначе говоря, часики тикают 200 миллионов раз в секунду, а каждый тик влечет за собой выполнение многих действий. Счетчик Команд (PC) - внутренний указатель, содержащий адрес следующей выполняемой команды. Когда приходит время для ее исполнения, Управляющий Модуль помещает инструкцию из памяти в регистр инструкций (IR). В то же самое время Счетчик команд увеличивается, так чтобы указывать на последующую инструкцию, а процессор выполняет инструкцию в IR. Некоторые инструкции управляют самим Управляющим Модулем, так если инструкция гласит "перейти на адрес 2749", величина 2749 записывается в Счетчик Команд, чтобы процессор выполнял эту инструкцию следующей.

Многие инструкции задействуют Арифметико-логическое Устройство (ALU), работающее совместно с Регистрами Общего Назначения - место для временного хранения, которое может загружать и выгружать данные из памяти. Типичной инструкцией ALU может служить добавление содержимого ячейки памяти к регистру общего назначения. ALU также устанавливает биты Регистра Состояний (Status register - SR) при выполнении инструкций для хранения информации о ее результате. Например, SR имеет биты, указывающие на нулевой результат, переполнение, перенос и так далее. Модуль Управления использует информацию в SR для выполнения условных операций, таких как "перейти по адресу 7410 если выполнение предыдущей инструкции вызвало переполнение".

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

Архитектурное развитие

В соответствии с законом Мура (сформулированным в 1965 году Гордоном Муром (Gordon Moore), одним из создателей Intel), CPU удваивает свою мощность и возможности каждые 18-24 месяцев. В последние годы Intel настойчиво следовал этому закону, оставаясь лидером на рынке и выпуская более мощные чипы процессоров для PC, чем любая другая компания. В 1978 году 8086 работал на частоте 4.77MHz и содержал менее миллиона транзисторов, на конец 1995 года их Pentium Pro вмещал уже 21 миллион транзисторов и работал на 200MHz.

Законы физику ограничивают разработчиков в непосредственном увеличении частоты, и хотя частоты растут каждый год, только это не может дать того прироста производительности, что мы используем сегодня. Вот почему инженеры постоянно ищут способ заставить процессор выполнять больше работы за каждый тик. Одно развитие состоит в расширении шины данных и регистров. Даже 4-битные процессоры способны складывать 32-битные числа, правда выполнив массу инструкций, - 32-битные процессоры решают эту задачу в одну инструкцию. Большинство сегодняшних процессоров имеют 32-разрядную архитектуру, на повестке уже 64-разрядные.

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

Говоря, что "нечто происходит с каждым тиком", мы недооцениваем как долго на самом деле происходит выполнение инструкции. Традиционно, это занимало пять тиков - один для загрузки инструкции, другой для ее декодирования, один для получения данных, один для выполнения и один для записи результата. В этом случае очевидно 100MHz процессор мог выполнить только 20 миллионов инструкций в секунду.

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

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

Процесс производства

Что отличает микропроцессор от его предшественников, сконструированных из ламп, отдельных транзисторов, малых интегральных схем, такими какими они были первое время от полного процессора на едином кремниевом чипе.

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

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

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

Чтобы создать все требуемые детали, на всю поверхность пластины добавляется слои и лишние части вытравливаются вновь. Чтобы сделать это, новый слой покрывается фоторезистором, на который проектируется образ требуемых деталей. После экспозиции проявление удаляет те части фоторезистора, которые выставлены на свет, оставляя маску, через которую проходило вытравливание. Оставшийся фоторезистор удаляется растворителем.

Этот процесс повторяется, по слою за раз, до полного создания всей схемы. Излишне говорить, что детали размером в миллионную долю метра может испортить мельчайшая пылинка. Такая пылинка может быть повсюду, размером от микрона до ста - а это в 3-300 раз больше детали. Микропроцессоры производятся в сверхчистой среде, где операторы одеты в специальные защитные костюмы.

В прежние времена производство полупроводников приводило к удаче или неудаче с отношением успеха менее 50% работающих чипов. Сегодня выход результата намного выше, но никто не ожидает 100%. Как только новый слой добавляется на пластину, каждый чип тестируется и отмечается любое несоответствие. Индивидуальные чипы отделяются и с этой точки зовутся матрицами. Плохие бракуются, а хорошие упаковываются в PGA (Pin Grid Arrays) корпус - керамический прямоугольник с рядами штырьков на дне, именно такой корпус большинство людей принимают за процессор.

4004 использовал 10-микронный процесс: наименьшие детали составляли одну 10-миллионную метра. По сегодняшним стандартам это чудовищно. Если предположить, что Pentium Pro изготовлен по такой технологии он был бы размером 14x20 сантиметров, и был бы медленным - быстрые транзисторы малы. Большинство процессоров сегодня используют 0.25-микронные технологию, и 0.1-микронный процесс - среднесрочная перспектива для многих производителей.

Программная совместимость

На заре компьютерного века многие люди писали свои программы, а точный набор исполняемых инструкций процессора не был существенен. Сегодня, однако, люди ждут возможность использовать готовые программы, так что набор инструкций первостепенен. Хотя ничего нет магического с технической точки зрения в архитектуре Intel 80x86, она уже давно стала индустриальным стандартом.

Когда сторонние производители делают процессор с другими инструкциями, он не будет работать с принятым стандартным программным обеспечением, и в результате не продается. В дни 386-х и 486-х компании, например AMD, клонировали интеловские процессоры, но это всегда было с отставанием на поколение. Cyrix 6x86 и AMD K5 были конкурентами интеловского Pentium, но это были не чистые копии. K5 имел собственный набор инструкций и транслировал инструкции 80x86 во внутренние при загрузке, так что K5 не требовал при проектировании предварительного создания Pentium. Многое в действительности создавалось параллельно, сдерживала только схема трансляции. Когда K5 наконец появился, он перепрыгнул Pentium в отношении производительности при одинаковых частотах.

Другой путь, по которому процессоры с разной архитектурой относительно единообразны к внешнему миру, - это стандартная шина. В этом отношении введенная в 1994 году шина PCI - один из наиболее важных стандартов. PCI определяет набор сигналов, разрешающих процессору общаться с другими частями PC. Он включает шины адреса и данных, плюс набор управляющих сигналов. Процессор имеет свои собственные шины, так что чипсет используется для преобразования из этой "частной" шины в "публичную" PCI.

Введение Pentium в 1993 году революционизировало рынок PC, вложив в корпус среднего PC больше мощи, чем имела NASA в кондиционируемых компьютерных помещениях начала 60-х. Архетектура Pentium представляет шаг вперед от 486.

Это был основанный на CISC чип с более 3.3 миллионами транзисторов, произведенный по 0.35-микронной технологии. Внутри процессор использовал 32-разрядную шину, но внешняя шина данных была 64-разрядна. Внешняя шина требовала других материнских плат, и для их поддержки Intel выпустил специальный чипсет для связи Pentium с 64-разрядным внешним кэшем и шиной PCI.

Большинство Pentium (75MHz и выше) работают на 3.3V с 5V вводом-выводом. У Pentium двойной потоковый суперскалярный дизайн, позволяющий ему выполнять больше инструкций за тик. Пять стадий (загрузка, декодирование, генерация адреса, выполнение и выгрузка) при исполнении целочисленных инструкций остаются, как в 486, но Pentium имеет два параллельных целочисленных потока, позволяющих ему читать, интерпретировать, выполнять, и записывать две операции одновременно. Так проводятся только целочисленные операции - с дробными числами обращается отдельный модуль плавающей точки.

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

Буфер Ветвлений (BTB) обеспечивает динамическое предсказание ветвлений. Он улучшает выполнение инструкций запоминанием способа ветвления и применением той же ветви при следующем выполнении инструкции. Когда BTB делает правильное предсказание, производительность увеличивается. 80-точечный Модуль Плавающей Точки обеспечивает арифметическое средство для обращения с "вещественными" числами.

Обзор процессоров

Интеловский Pentium Pro, выпущенный в конце 1995 года с ядром CPU, состоящим из 5.5 миллионов транзисторов, плюс 15.5 миллионов транзисторов во вторичном кэше, изначально предназначался для рынка серверов и high-end рабочих станций. Этот суперскалярный процессор включает особенности процессоров высшей категории и оптимизирован под 32-битные операции.

Pentium Pro отличается от Pentium"а наличием встроенного вторичного кэша размером от 256kb до 1mb, работающего на внутренней частоте. Помещение вторичного кэша на чипе, а не на системной плате, позволяет передавать данные по 64-битному каналу, а не по 32-битной системной шине у Pentium. Такая физическая близость также добавляет к росту производительности. Эта комбинация настолько мощна, что 256kb встроенного кэша эквивалентны 2mb на системной плате.

Даже большим фактором в производительности Pentium Pro является комбинация технологий, известных как "динамическое выполнение". Оно включает предсказание ветвлений, анализ потока данных и спекулятивное выполнение. Их комбинирование позволяет позволяет процессору использовать пропадающие иначе циклы тиков, производя предсказания программного потока выполнения инструкций вперед.

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

Другим, более важным отличием Pentium Pro является его обращение с инструкциями. Он получает CISC (Complex Instruction Set Computer) x86 инструкции, и преобразовывает их во внутренний RISC (Reduced Instruction Set Computer) микрокод. Преобразование спроектировано так, чтобы избежать некоторые ограничения, унаследованные от набора инструкций x86, таких как нерегулярное декодирование инструкций и арифметические операции регистр-в-память. Микрокод затем пересылается во внеочередной исполнитель инструкций, который определяет, готова ли инструкция к выполнению, и, если нет, передвигает код по кругу, чтобы предотвратить застопорение потока.

У миграции в сторону RISC есть свои минусы. Во-первых, преобразование инструкций занимает время, пусть оно даже меряется в нано- или микросекундах. В результате Pentium Pro неизбежно тратит производительную мощь на обработку инструкций. Второй минус в том, что внеочередной дизайн может частично влиять на 16-битный код, приводя к застопориванием. Это может быть причиной частичного обновления регистра, происходящего до полного чтения регистра, и налагать строгие производственные издержки до семи циклов тика.

Pentium Pro был первым микропроцессором, не использующим почтенный Socket 7, требуя большего 242-контактного интерфейса Socket 8 и ново годизайна системных плат.

MultiMedia eXtensions

Процессор Intel’s P55C MMX с мультимедиа расширением выпускается с начала 1997 года. Он представил наиболее значительное изменение базисной архитектуры процессоров PC за последние десять лет и обеспечивал три главных улучшения:

  • встроенный кэш первого уровня стандартного Pentium удваивался до 32kb
  • добавлено 57 новых инструкций, предназначенных специально для более эффективного манипулирования видео, аудио и графическими данными
  • был развит новый процесс, названный SIMD (Single Instruction Multiple Data - Одна Инструкция Много Данных) и позволяющий выполнять одинаковую инструкцию ко многим экземплярам данных одновременно.

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

По утверждениям Intel, эти усовершенствования дают 10-20% увеличение скорости для не-MMX приложений, и более 60% ускорения для MMX приложений.

Заметное отсутствие MMX версии для ноутбуков Intel исправил в конце 1997 года объявлением мобильных версий процессора с кодовым названием Tillamook, по имени небольшого города в Opегоне. Новые процессоры с частотой 200 и 233MHz и технологией MMX на некоторое время выдвинули ноутбуки на уровень настольных систем. 226MHz версия была выпущена позже в 1998 году.

Tillamook - это первый процессор, построенный на развитом Intel Mobile Module для ноутбуков (MMO). Модуль держит процессор, 512kb вторичного кэша, регулятор напряжения для питания процессора от высшего внешнего напряжения, часы, и новый "северный мост" 430TX PCI. Соединяется с системной платой рядом из 280 разъемов, подобно SEC картриджу Pentium II.

Наибольшим отличием в самом чипе было применение 0.25-микронной технологии по сравнению с применявшейся раннее Intel в мобильных чипах 0.28. Меньший микрон фактор оказал влияние на частоту и напряжение: транзисторы в процессоре (с электрическими нулями и единицами) ближе примыкались, и скорость автоматически увеличивалась. Так как транзисторы сближались, напряжение уменьшалось, чтобы избежать разрушений от сильных электрических полей. Предыдущие версии мобильных интеловских процессоров питались от 2.45v на ядре, а у Tillamook оно было опушено до 1.8v. Регулятор напряжения требовался для защиты чипа от шин PCI и памяти, которые работали на 3.3v. От уменьшения напряжения на процессоре значительно экономилась энергия.

Выпущенный с середины 1997 года, Pentium II ввел ряд больших изменений в мир процессоров PC.

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

Во вторых, процессор, вторичный кэш и тепло отвод были смонтированы на небольшой плате, вставлявшейся в разъем на системной плате, что больше напоминало карту расширения, чем традиционную схему процессор/гнездо. Intel окрестил это Single Edge Contact cartridge (SEC) - односторонне контактный картридж. В этом картридже находятся шесть отдельных компонент - процессор, четыре индустриально стандартных burst-static-cache RAM и один tag RAM. Дизайн SEC картриджа наделял важными преимуществами. PGA-компоновка Pentium Pro требовала 387 контактов, в то время как SEC-картридж - только 242. Уменьшение на треть числа контактов произошло благодаря наличию в картридже дискретных элементов, таких как замыкающие резисторы и конденсаторы. Эти элементы обеспечивают расщепление сигналов, что значит намного меньшее число требуемых разъемов питания. Разъем SEC-картриджа использует так называемый Slot 1 и воспринимается как принимающий эстафету у уходящего Socket 7.

Третье изменение - в большем синтезе, так как Pentium II объединяет Dual Independent Bus (DIB) от Pentium Pro c технологией MMX от Pentium MMX, формируя новый вид - гибрид Pentium Pro/MMX. Таким образом, внешне очень отличный от предыдущих интеловских процессоров, Pentium II внутренне являет собой смесь новых технологий и улучшений старых чипов.

И наконец, в отличие от Pentium Pro, работающего на 3.3v, Pentium II питается от 2.8v, позволяя Intel пускать его на больших частотах без чрезмерного увеличения требование к мощности. В то время, как 200MHz Pentium Pro с 512kb кэша потребляет 37.9 ватт, 266MHz Pentium II с 512kb кэша сжигает 37.0 ватт.

Подобно Pentium Pro, Pentium II применяет интеловскую Технологию Динамического Исполнения. Когда программная инструкция считывается в процессор и декодируется, она попадает в исполняемый пул. Технология Динамического Исполнения принимает три основных подхода к оптимизации способа обращения процессора с кодом. Множественные Предсказания Ветвлений проверяют программный поток вдоль нескольких ветвей и предсказывают, где в памяти находится следующая инструкция.

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

У Технологии Динамического Исполнения есть два основных преимущества: Инструкции обрабатываются быстрее и эффективнее, чем обычно, и, в отличие от CPU с применением RISC архитектуры, программы не надо перекомпилировать для извлечения выгод процессора. Процессор все делает на лету.

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

Хотя шина между процессором и кэшем второго уровня работает медленнее, чем на обычном Pentium Pro (на половине скорости процессора), она чрезвычайно масштабируема. Чем быстрее процессор, тем быстрее кэш, независимо от 66MHz передней шины. Вдобавок, передняя шина может быть увеличена с 66 до 100MHz без влияния на шину кэша второго уровня. Также очевидно, что наличие памяти на одном кристалле с процессором негативно сказывается на проценте выхода годных 512kb Pentium Pro, сохраняя высокими цены. Pentium II опирается на GTL+ (gunning-transceiver-logic) логику хост-шины, допускающую естественную поддержку двух процессоров. Во время выхода это обеспечивало стоимостно эффективное минималистское двухпроцессорное решение, допускаемое симметричной мультипроцессорностью (SMP). Двухпроцессорное ограничение налагалось не самим Pentium II, а поддержкой чипсета. Изначальное ограничение чипсета двухпроцессорной конфигурацией позволяло Intel и поставщикам рабочих станций предлагать двухпроцессорные системы как временное и экономичное решение, что по другому и не было возможно. Это ограничение было снято с середины 1998 года с выходом чипсета 450NX, поддерживающего от одного до четырех процессоров. Чипсет 440FX, содержащий чипы PMC и DBX, не допускал чередования (interleaving) памяти, но поддерживал EDO DRAM, позволяя улучшать производительность памяти уменьшением ожидания.

Когда Intel проектировал Pentium II, он также взялся за слабую 16-битную производительность его предшественника. Pentium Pro роскошно работает с полностью 32-битным обеспечением, таким как Windows NT, но опускается ниже стандартного Pentium"а, обрабатывая 16-битный код. Это влечет худшую чем Pentium производительность под Windows 95, большие части которой пока 16-битны. Intel решил эту проблему использованием пентиумного кэша с дескрипторами сегментов в Pentium II.

Как и Pentium Pro, Pentium II чрезвычайно быстр в арифметике плавающей точки. В сочетании с Accelerated Graphics Port (AGP) это делает Pentium II мощным решением для высокопроизводительной 3D графики.

333MHz воплощение Pentium II под кодовым названием Deschutes (по реке, текущей в Орегоне), было анонсировано в начале 1998 года с планируемыми в течение года 400MHz и выше. Имя Deschutes в действительности относится к двум разным линиям CPU.

Версия для Slot 1 - ничего более, чем слегка эволюционировавший Pentium II. Архитектура и физический дизайн идентичны, за исключением того, что Deschutes Slot 1 частью сделан с использованием 0.25-микронной технологии, введенной осенью 1997 года с ноутбучным процессором Tillamook, по сравнению с 233-300MHz версиями, выполненными по 0.35-микронному процессу. Применение 0.25-микрон означает, что транзисторы на матрице физически ближе между собой и CPU потребляет меньше энергии, а следовательно рассеивает меньше тепла на данной частоте, позволяя ядру тикать на больших частотах.

Все иное у Slot 1 Deschutes идентично обычному Pentium II. Смонтированный на основание и заключенный в SEC картридж, он поддерживает набор инструкций MMX и общается с 512kb вторичного кэша на половинной частоте ядра. Он имеет тот же конечный коннектор, и работает на тех же системных платах с теми же чипсетами. Как таковой он работает с 440FX или 440LX на внешней частоте 66MHz.

С весны 1998 года большой шаг в производительности пришел со следующим воплощением Deschutes, когда вышел новый чипсет 440BX, допускающий 100MHz передачу по системной шине, уменьшая закупоривание данных и поддерживая частоты от 350 до 400MHz.

Другой процессор, зовущийся Deschutes, относится к Slot 2, выпущен с середины 1998 года как Pentium II Xeon. Intel разбил Slot 1 и Slot 2 Deschutes на взаимодополняющие товарные линии, где Slot 1 предназначен для массового производства, а Slot 2 нацелен на high-end серверы и туда, где цена вторична по отношению к производительности.

Мобильный Pentium II

Естественное продвижение маломощного (в смысле энерго потребления/рассеивания) семейства Pentium II Deschutes на рынок портативных PC осуществилось с выпуском линейки мобильных Pentium II в апреле 1998 года. Новый процессор и его компаньон мобильный 440BX чипсет, изначально были доступны в 233 и 266MHz вариантах, скомпонованные в существующий мобильный модуль (MMO) или новый мини-картридж формат. Intel ожидает к концу 1998 года более половины из снаряженных его мобильными процессорами PC будут уже Pentium II, а срок мобильных Pentium II Tillamook окончится к середине 1999 года.

В попытке лучшего удовлетворения сектора дешевых PC, до настоящего времени вотчины производителей клонов, AMD и Cyrix, продолжающих развивать унаследованную архитектуру Socket 7, Intel выпустил свой ряд процессоров Celeron в апреле 1998 года.

Основанный на той же P6 архитектуре, что и Pentium II, и используя тот же 0.25-микронный процесс, Celeron-системы предлагают полный комплект последних технологий, включая поддержку AGP графики, ATA-33 жестких дисков, SDRAM и ACPI. Celeron будет работать на любом интеловском Pentium II чипсете, поддерживающим 66MHz системной шины, включая 440LX, 440BX и новый 440EX, специально спроектированный для рынка "базовых" PC. В отличие от Pentium II с его SEC картриджем, Celeron не имеет защитного пластикого покрытия вокруг карт процессора, что Intel называет Single Edge Processor Package (SEPP). Он полностью совместим со Slot1, что позволяет использовать существующие платы, но механизм крепления для карты CPU не адаптирован для форм фактора SEPP.

Первые 266 и 300MHz Celeron"ы без кэша второго уровня встретили мало энтузиазма на рынке, не неся или неся мало преимуществ над системами-клонами Socket 7. В августе 1998 года Intel пополнил ряд Celeron семейством процессором, названных Mendocino. Снабженный 128kb вторичного кэа на матрице, работающего на полной частоте процессора, и соединяясь через внешнюю 66MHz шину, новый Celeron стал намного более живым, чем его вялый предшественник. Отчасти путано, две доступные версии получили названия Celeron 333 и 300a. Первый является основной версией, совместимый с существующей интеловской архитектурой, в то время как второй патентует Pin 370 socket, отличный от Socket 7 и Socket 1, нацеленный на дешевые low-end машины.

В июне 1998 года Intel предложил свой процессор Pentium II Xeon. Технически Xeon представляет комбинацию технологий Pentium Pro и Pentium II и спроектирован, чтобы предложить выдающуюся производительность в критических приложениях рабочих станций и серверов. Используя новый интерфейс Slot 2, Xeon приблизительно вдвое больше размера Pentium II, в основном из-за увеличения кэша второго уровня.

Как и 350 и 400MHz Pentium II CPU, передняя шина работает на 100MHz для увеличения обмена. Наиболее значительным отличием от стандартного Pentium II является то, что кэш второго уровня работает на полной частоте ядра CPU, в отличие от дизайна Slot 1, ограничивающего вторичный кэш половиной частоты ядра, что позволяет Intel использовать дешевый готовый burst SRAM как вторичный кэш, а не производя свой собственный заказной SRAM. Намного более дорогой заказной полноскорстной кэш служит главной причиной разницы в ценах между Slot 1 и Slot 2 решениями.

Чип поставляется с тремя размерами вторичного кэша. Рабочие станции снабжаются 512kb версией. 1mb версия, выпущенная позднее, используется для серверов, до тех пор, пока 2mb версия ожидается (позднее в этом году). Система кэша второго уровня подобна типу, используемому в Pentium Pro, это одна из основных составляющих стоимости Xeon. Другая состоит в том, что корректирующий ошибки (ECC) SRAM стал стандартом во всех Xeon-ах.

Другим преодоленным Xeon"ом ограничением стал дуальный SMP (symmetric multiprocessor). Невозможность запуска мультипроцессорных Pentium II систем с более чем двумя процессорами было основной причиной выживания Pentium Pro в секторе high-end серверов, когда требуется четыре, шесть или восемь процессоров. Slot 2 обеспечивает четырехстороннюю мультипроцессорность.

Хотя Intel решил направить Xeon на оба рынка - рабочих станций и серверов, он разработал разные чипсеты системных плат для каждого из них. 440GX построен вокруг архитектуры ядра 440BC чипсета и предназначен для рабочих станций. 450NX, с другой стороны, спроектирован специально для рынка серверов.

Будущие разработки Intel

Intel сейчас имеет в разработке ряд процессоров

  • Katmai, названный в честь вулкана на Аляске, отмечен как новая версия Pentium II. Katmai будет основан на P6 архитектуре, начатой Pentium Pro. Подобно Deschutes, этот чип строится на интеловском 0.25-микронном процессе. Наиболее значительным отличием будет ревизия MMX расширения поднятием до MMX2. MMX2 содержит больше 32-битных инструкций - существующий MMX во многом 16-битен - и значительно улучшает производительность 3D графики. Другие изменения включают 100MHz внешнюю шину, увеличенный Level 1 кэш и новую логику ядра чипсета, спроектированную для преодоления 500MHz рубежа скорости Pentium II. Katmai наиболее вероятно увидит свет в начале 1999 года.
  • Dixon, следующий представитель семьи Mendocino, обещается во второй половине 1999 года. Вероятно, он будет включать больше кэша второго уровня (192 или 256kb) и Katmai New Instructions (KNI), наконец полностью вытиснившие MMX.
  • Willamette, названный по другой орегонской реке, - изменение поступи Intel. С развитым ядром Pentium Pro и возможностью 100MHz внешней шины, Willamette ожидается более чем на 50% быстрее существующих Pentium II. Willamette по слухам усилит производительность плавающей точки и поддержку 3D геометрии. Он найдет свой путь на рынок в конце 1999 года, но не станет массовым в настольных системах до 2000-го.
  • Merced, названый по калифорнийской реке, отметит конец процессоров, использующий x86 архитектуру. Результат совместного проекта исследований Hewlett-Packard и Intel, Merced станет первым процессором, использующим полный 64-битный IA-64 набор инструкций. Это должно привести к производительности, превосходящей старые RISC и CISC процессоры. Merced, однако, еще будет способен выполнять x86 инструкции, но не без ущерба в производительности. Merced, появление которого ожидается к середине 2000 года, позиционируется как новая эра в вычислительной мощи. Он, вероятно, будет обслуживать в основном рынок серверов и рабочих станций, в то время как Willamette, по существу обрезанная версия Mersed, будет работать в high-end персональных компьютерах.

  • Как проверить южный мост на материнской плате

общие принципы работы (x86 CPU FAQ 1.0)
Disclaimer

Наверное, наиболее точно причину появления данного материала можно сформулировать так: «даже не столько нужно, чтобы он был - сколько странно, что его до сих пор не было». И действительно: в комментариях к результатам тестов, мы постоянно оперируем такими понятиями как «ёмкость кэша», «скорость процессорной шины», «поддержка расширенных наборов инструкций», но единой статьи, в которой были бы собраны разъяснения всех этих терминов - на сайте нет. Такое упущение, разумеется, следовало устранить. Данная статья с подзаголовком «x86 CPU FAQ» и является попыткой сделать это. Разумеется, некоторые её разделы могут быть отнесены не только к процессорам архитектуры x86, и не только с десктопным (предназначенным для установки в ПК) их вариантам, однако вот уж на такой глобализм мы совершенно точно не замахиваемся. Поэтому просьба помнить, что в рамках данного материала, если в явной форме не указано иное, слово «процессор» обозначает «процессор архитектуры x86, предназначенный для установки в десктопы». Возможно, в процессе дальнейшего совершенствования и расширения, появятся в статье разделы, посвящённые серверным CPU или даже процессорам других архитектур, но это уже дело будущего… Оглавление

Введение

Код и данные: основной принцип работы процессора

Итак, если не пытаться изложить здесь «кратенько» курс информатики для средней школы, то единственное что хотелось бы напомнить - это то, что процессор (за редкими исключениями) исполняет не программы, написанные на каком-нибудь языке программирования (один из которых, вы, возможно, даже знаете), а некий «машинный код». То есть командами для него являются последовательности байтов, находящихся в памяти компьютера. Иногда команда может быть равна одному байту, иногда она занимает несколько байт. Там же, в основной памяти (ОЗУ, RAM) находятся и данные. Они могут находиться в отдельной области, а могут и быть «перемешаны» с кодом. Различие между кодом и данными состоит в том, что данные - это то, над чем процессор производит какие-то операции. А код - это команды, которые ему сообщают, какую именно операцию он должен произвести. Для упрощения, мы можем представить себе программу и ее данные в виде последовательности байтов некой конечной длины, располагающуюся непрерывно (не будем усложнять) в общем массиве памяти. Например, у нас есть массив памяти длиной в 1’000’000 байт, а наша программа (вместе с данными) - это байты с номерами от 1000 до 20’000. Прочие байты - это другие программы или их данные, или просто свободная память, не занятая ничем полезным.

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

Возможно, кого-то удивит, что достаточно большой раздел в FAQ, посвященном x86 CPU, выделен под объяснение особенностей функционирования памяти в современных системах, основанных на данном типе процессоров. Однако факты - упрямая вещь: сами x86-процессоры ныне содержат так много блоков, отвечающих именно за оптимизацию их работы с ОЗУ, что игнорировать эту тесную связь было бы совершенно нелепо. Можно сказать даже так: уж, коль решения, связанные с оптимизацией работы с памятью, стали неотъемлемой частью самих процессоров - то и саму память можно рассматривать в качестве некоего «придатка», функционирование которого оказывает непосредственное влияние на скорость работы CPU. Без понимания особенностей взаимодействия процессора с памятью, невозможно понять, за счёт чего тот или иной процессор (та или иная система) исполняет программы медленнее или быстрее.

Контроллер памяти

Итак, ранее выше мы уже говорили о том, что как команды, так и данные, попадают в процессор из оперативной памяти. На самом деле всё немного сложнее. В большинстве современных x86-систем (то есть компьютеров на базе x86-процессоров), процессор как устройство к памяти обращаться вообще не может, так как не имеет в своем составе соответствующих узлов. Поэтому он обращается к «промежуточному» специализированному устройству, называемому контроллером памяти, а уже тот, в свою очередь - к микросхемам ОЗУ, размещенным на модулях памяти. Модули вы наверняка видели - это такие длинные узкие текстолитовые «планочки» (фактически - небольшие платы) с некоторым количеством микросхем на них, вставляемые в специальные разъемы на системной плате. Роль контроллера ОЗУ, таким образом, проста: он служит своего рода «мостом»* между памятью и использующими ее устройствами (кстати, к ним относится не только процессор, но об этом - чуть позже). Как правило, контроллер памяти входит в состав чипсета - набора микросхем, являющегося основой системной платы. От быстродействия контроллера во многом зависит скорость обмена данными между процессором и памятью, это один из важнейших компонентов, влияющих на общую производительность компьютера.

* - кстати, контроллер памяти физически находится в микросхеме чипсета, традиционно называемой «северным мостом».

Процессорная шина

Любой процессор обязательно оснащён процессорной шиной, которую в среде x86 CPU принято называть FSB (Front Side Bus). Эта шина служит каналом связи между процессором и всеми остальными устройствами в компьютере: памятью, видеокартой, жёстким диском, и так далее. Впрочем, как мы уже знаем из предыдущего раздела, между собственно памятью и процессором находится контроллер памяти. Соответственно: процессор посредством FSB связывается с контроллером памяти, а уже тот, в свою очередь, по специальной шине (назовём её, не мудрствуя лукаво, «шиной памяти») - с модулями ОЗУ на плате. Однако, повторимся: поскольку «внешняя» шина у классического x86 CPU всего одна, она используется не только для работы с памятью, но и для общения процессора со всеми остальными устройствами.

Различия между традиционной для
x86 CPU архитектурой и K8/AMD64

Революционность подхода компании AMD состоит в том, что её процессоры с архитектурой AMD64 (и микроархитектурой, которую условно принято называть «K8») оснащены множеством «внешних» шин. При этом одна или несколько шин HyperTransport служат для связи со всеми устройствами кроме памяти, а отдельная группа из одной или двух (в случае двухканального контроллера) шин - исключительно для работы процессора с памятью. Преимущество интеграции контроллера памяти прямо в процессор, очевидно: «путь от ядра до памяти» становится заметно «короче», что позволяет работать с ОЗУ быстрее. Правда, имеются у данного подхода и недостатки. Так, например, если ранее устройства типа жёсткого диска или видеокарты могли работать с памятью через выделенный, независимый контроллер - то в случае с архитектурой AMD64 они вынуждены работать с ОЗУ через контроллер, размещённый на процессоре. Так как CPU в данной архитектуре является единственным устройством, имеющим прямой доступ к памяти. Де-факто, в противостоянии «внешний контроллер vs. интегрированный», сложился паритет: с одной стороны, на данный момент AMD является единственным производителем десктопных x86-процессоров с интегрированным контроллером памяти, с другой - компания вроде бы вполне довольна этим решением, и не собирается от него отказываться. С третьей - Intel тоже не собирается отказываться от внешнего контроллера, и вполне довольна «классической схемой», проверенной годами.

Оперативная память

Разрядность шины памяти, N-канальные контроллеры памяти

По состоянию на сегодняшний день, вся память, используемая в современных десктопных x86-системах имеет шину шириной 64 бита. Это означает, что за один такт по данной шине одновременно может быть передано количество информации, кратное 8 байтам (8 байт для SDR-шин, 16 байт для DDR-шин). Особняком стоит только память типа RDRAM, применявшаяся в системах на базе процессоров Intel Pentium 4 на заре становления архитектуры NetBurst, но сейчас это направление признано тупиковым для x86-ПК (к слову - руку к этому приложила всё та же компания Intel, которая в своё время активно пропагандировала данный тип памяти). Некоторую неразбериху вносят лишь двухканальные контроллеры, обеспечивающие одновременную работу с двумя отдельными друг от друга 64-битными шинами, благодаря чему некоторые производители заявляют о некой «128-битности». Это, разумеется, чистой воды профанация. Арифметика на уровне 1-го класса в данном случае, увы, не работает: 2x64 вовсе не равно 128. Почему? Да хотя бы потому, что даже самые современные x86 CPU (см. ниже раздел FAQ «64-битные расширения классической x86 (IA32) архитектуры») не могут работать со 128-битной шиной и 128-битной адресацией. Грубо говоря: две независимые параллельно идущие дороги, шириной 2 метра каждая - могут обеспечить одновременный проезд двух автомобилей, шириной 2 метра - но никоим образом не одного, шириной 4 метра. Точно так же, N-канальный контроллер памяти может увеличить скорость работы с данными в N раз (и то больше теоретически, чем практически) - но никак не способен увеличить разрядность этих данных. Ширина шины памяти во всех современных контроллерах, применяемых в x86-системах, равна 64 битам - независимо от того, находится этот контроллер в чипсете, или в самом процессоре. Некоторые контроллеры оснащены двумя независимыми 64-битными каналами, но на разрядность шины памяти это никак не влияет - только на скорость считывания и записи информации.

Скорость чтения и записи

Скорость чтения и записи информации в память теоретически ограничивается исключительно пропускной способностью самой памяти. Так, например, двухканальный контроллер памяти стандарта DDR400 теоретически способен обеспечить скорость чтения и записи информации, равную 8 байт (ширина шины) * 2 (количество каналов) * 2 (протокол DDR, обеспечивающий передачу 2 пакетов данных за 1 такт) * 200"000"000 (фактическая частота работы шины памяти равная 200 МГц, то есть 200"000"000 тактов в секунду). Значения, получаемые в результате практических тестов, как правило, чуть ниже теоретических: сказывается «неидеальность» конструкции контроллера памяти, плюс накладки (задержки), вызванные работой подсистемы кэширования самого процессора (см. ниже раздел про процессорный кэш). Однако основной «подвох» содержится даже не в накладках, связанных с работой контроллера и подсистемы кэширования, а в том, что скорость «линейного» чтения или записи является вовсе не единственной характеристикой, влияющей на фактическую скорость работы процессора с ОЗУ. Для того чтобы понять, из каких составляющих складывается фактическая скорость работы процессора с памятью, нам необходимо кроме линейной скорости считывания или записи учитывать ещё и такую характеристику, как латентность .

Латентность

Латентность является не менее важной характеристикой с точки зрения быстродействия подсистемы памяти, чем скорость «прокачки данных», но совершенно другой, по сути. Большая скорость обмена данными хороша тогда, когда их размер относительно велик, но если нам требуется «понемногу с разных адресов» - то на первый план выходит именно латентность. Что это такое? В общем случае - время, которое требуется для того, чтобы начать считывать информацию с определённого адреса. И действительно: с момента, когда процессор посылает контроллеру памяти команду на считывание (запись), и до момента, когда эта операция осуществляется, проходит определённое количество времени. Причём оно вовсе не равно времени, которое требуется на пересылку данных. Приняв команду на чтение или запись от процессора, контроллер памяти «указывает» ей, с каким адресом он желает работать. Доступ к любому произвольно взятому адресу не может быть осуществлён мгновенно, для этого требуется определённое время. Возникает задержка: адрес указан, но память ещё не готова предоставить к нему доступ. В общем случае, эту задержку и принято называть латентностью. У разных типов памяти она разная. Так, например, память типа DDR2 имеет в среднем гораздо большие задержки, чем DDR (при одинаковой частоте передачи данных). В результате, если данные в программе расположены «хаотично» и «небольшими кусками», скорость их считывания становится намного менее важной, чем скорость доступа к «началу куска», так как задержки при переходе на очередной адрес влияют на быстродействие системы намного сильнее, чем скорость считывания или записи.

«Соревнование» между скоростью чтения (записи) и латентностью - одна из основных головных болей разработчиков современных систем: к сожалению, рост скорости чтения (записи), почти всегда приводит к увеличению латентности. Так, например, память типа SDR (PC66, PC100, PC133) обладает в среднем лучшей (меньшей) латентностью, чем DDR. В свою очередь, у DDR2 латентность ещё выше (то есть хуже), чем у DDR.

Следует понимать, что «общая» латентность подсистемы памяти зависит не только от неё самой, но и от контроллера памяти и места его расположения - все эти факторы тоже влияют на задержку. Именно поэтому компания AMD в процессе разработки архитектуры AMD64 решила «одним махом» решить проблему высокой латентности, интегрировав контроллер прямо в процессор - чтобы максимально «сократить дистанцию» между процессорным ядром и модулями ОЗУ. Затея удалась, но дорогой ценой: теперь система на базе определённого CPU архитектуры AMD64 может работать только с той памятью, на которую рассчитан его контроллер. Наверное, именно поэтому компания Intel до сих пор не решилась на такой кардинальный шаг, предпочитая действовать традиционными методами: усовершенствуя контроллер памяти в чипсете и механизм Prefetch в процессоре (про него см. ниже).

В завершение, заметим, что понятия «скорость чтения / записи» и «латентность», в общем случае, применимы к любому типу памяти - в том числе не только к классической DRAM (SDR, Rambus, DDR, DDR2), но и к кэшу (см. ниже). Процессор: сведения общего характера

Понятие архитектуры

Архитектура как совместимость с кодом

Наверняка вы часто встречались с термином «x86», или «Intel-совместимый процессор» (или «IBM PC compatible» - но это уже по отношению к компьютеру). Иногда также встречается термин «Pentium-совместимый» (почему именно Pentium - вы поймете сами чуть позже). Что за всеми этими названиями скрывается на самом деле? На данный момент наиболее корректно с точки зрения автора выглядит следующая простая формулировка: современный x86-процессор - это процессор, способный корректно исполнять машинный код архитектуры IA32 (архитектура 32-битных процессоров Intel) . В первом приближении это код, исполняемый процессором i80386 (известным в народе как «386-й»), окончательно же основной набор команд IA32 сформировался с выходом процессора Intel Pentium Pro. Что означает «основной набор» и какие есть еще? Для начала ответим на первую часть вопроса. «Основной» в данном случае означает то, что с помощью исключительно этого набора команд, может быть написана любая программа, которая вообще может быть написана для процессора архитектуры x86 (или IA32, если вам так больше нравится).

Кроме того, у архитектуры IA32 существуют «официальные» расширения (дополнительные наборы команд) от разработчика самой архитектуры, компании Intel: MMX, SSE, SSE2 и SSE3. Также существуют «неофициальные» (не от Intel) расширенные наборы команд: EMMX, 3DNow! и Extended 3DNow! - их разработала компания AMD. Впрочем, «официальность» и «неофициальность» в данном случае понятие относительное - де-факто все сводится к тому, что некоторые расширения набора команд Intel как разработчик изначального набора признает, а некоторые - нет, разработчики же программного обеспечения используют то, что им лучше всего подходит. В отношении расширенных наборов команд существует одно простое правило хорошего тона: прежде чем их использовать, программа должна проверить, поддерживает ли их процессор. Иногда отступления от этого правила встречаются (и могут приводить к неправильному функционированию программ), но объективно это является проблемой некорректно написанного программного обеспечения, а не процессора.

Для чего предназначены дополнительные наборы команд? В первую очередь - для увеличения быстродействия при выполнении некоторых операций. Одна команда из дополнительного набора, как правило, выполняет действие, для которого понадобилась бы небольшая программа, состоящая из команд основного набора. Опять-таки, как правило, одна команда выполняется процессором быстрее, чем заменяющая ее последовательность. Однако в 99% случаев, ничего такого, чего нельзя было бы сделать с помощью основных команд, с помощью команд из дополнительного набора сделать нельзя .

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

Процессор
Intel Pentium II
Intel Celeron до 533 MHz
Intel Pentium III
Intel Celeron 533-1400 MHz
Intel Pentium 4
Intel Celeron от 1700 MHz
Intel Celeron D
Intel Pentium 4 eXtreme Edition
Intel Pentium eXtreme Edition
Intel Pentium D
AMD K6
AMD K6-2
AMD K6-III
AMD Athlon
AMD Duron до 900 MHz
AMD Athlon XP
AMD Duron от 1000 MHz
AMD Athlon 64 / Athlon FX
AMD Sempron
AMD Athlon 64 X2
VIA C3

* в зависимости от модификации

На данный момент всё популярное десктопное программное обеспечение (операционные системы Windows и Linux, офисные пакеты, компьютерные игры, и прочее) разрабатывается именно для x86-процессоров. Оно выполняется (за исключением «дурно воспитанных» программ) на любом x86-процессоре, независимо от того, кто его произвел. Поэтому вместо ориентированных на разработчика изначальной архитектуры терминов «Intel-совместимый» или «Pentium-совместимый», стали употреблять нейтральное название: «x86-совместимый процессор», «процессор с архитектурой x86». В данном случае под «архитектурой» понимается совместимость с определённым набором команд, то есть, можно сказать, «архитектура процессора с точки зрения программиста». Есть и другая трактовка того же термина.

Архитектура как характеристика семейства процесcоров

«Железячники» - люди, работающие в основном не с программным обеспечением, а с аппаратным, под «архитектурой» понимают несколько другое (правда, более корректно то, что они называют «архитектурой», называется «микроархитектурой», но де-факто приставку «микро» частенько опускают). Для них «архитектура CPU» - это некий набор свойств, присущий целому семейству процессоров, как правило, выпускаемому в течение многих лет (иначе говоря - «внутренняя конструкция», «организация» этих процессоров). Так, например, любой специалист по x86 CPU вам скажет, что процессор с ALU, работающими на удвоенной частоте, QDR-шиной, Trace cache, и, возможно, поддержкой технологии Hyper-Threading - это «процессор архитектуры NetBurst» (не пугайтесь незнакомых терминов - все они будут разъяснены чуть позже). А процессоры Intel Pentium Pro, Pentium II и Pentium III - это «архитектура P6». Таким образом, понятие «архитектуры» применительно к процессорам несколько двойственно: под ним может пониматься как совместимость с неким единым набором команд, так и совокупность аппаратных решений, присущих определённой достаточно широкой группе процессоров. Разумеется, такой дуализм одного из основополагающих понятий не очень удобен, однако так уж сложилось, и вряд ли в ближайшее время что-то поменяется…

64-битные расширения классической x86 (IA32) архитектуры

Не так давно оба ведущих производителя x86 CPU анонсировали две практически идентичных* технологии (впрочем, AMD предпочитает называть это архитектурой), благодаря которым классические x86 (IA32) CPU получили статус 64-битных. В случае с AMD данная технология получила наименование «AMD64» (64-битная архитектура AMD), в случае с Intel - «EM64T» (расширенная 64-битная технология работы с памятью). Также почтенные аксакалы, знакомые с историей вопроса, иногда употребляют наименование «x86-64» - как общее обозначение всех 64-битных расширений архитектуры x86, не привязанное к зарегистрированным торговым маркам какого-либо производителя. Де-факто, употребление одного из трёх, приведенных выше, наименований, зависит больше от личных предпочтений употребляющего, чем от фактических различий - ибо различия между AMD64 и EM64T умещаются на кончике очень тонкой иглы. К тому же, сама AMD ввела «фирменное» наименование «AMD64» лишь незадолго до анонса собственных процессоров на основе данной архитектуры, а до этого совершенно спокойно употребляла в собственных документах более нейтральное «x86-64». Однако так или иначе, всё сводится к одному: некоторые внутренние регистры процессоров стали вместо 32-битных 64-битными, 32-битные команды x86-кода получили свои 64-битные аналоги, кроме того, объём адресуемой памяти (включая не только физическую, но и виртуальную) многократно увеличился (за счёт того, что адрес приобрёл вместо 32-битного 64-битный формат). Количество маркетинговых спекуляций на тему «64-битности» превысило все разумные пределы, поэтому нам следует рассмотреть достоинства данного нововведения особенно пристально. Итак: что же на самом деле изменилось, а что - нет?

* - Доводы о том, что Intel, дескать, «нагло скопировала EM64T с AMD64» не выдерживают никакой критики. И вовсе не потому, что это не так - а потому, что вовсе не «нагло». Есть такое понятие: «кросс-лицензионное соглашение». Если таковое соглашение имеет место быть, это означает, что все разработки одной компании в определённой области, становятся автоматически доступными другой, равно как и разработки другой автоматически становятся доступны первой. Intel воспользовалась кросс-лицензированием для разработки EM64T, взяв за основу AMD64 (чего никто никогда не отрицал). AMD воспользовалась тем же соглашением для введения в свои процессоры поддержки наборов дополнительных инструкций SSE2 и SSE3, разработанных Intel. И ничего в этом постыдного нет: раз договорились «делиться» разработками - значит, надо делиться.

Что не изменилось? В первую очередь - быстродействие процессоров. Вопиющей глупостью будет считать, что один и тот же процессор при переходе из привычного 32-битного в 64-битный режим (а 32-битный режим все нынешние x86 CPU поддерживают в обязательном порядке) станет работать в 2 раза быстрее. Разумеется, в некоторых случаях некое ускорение от использования 64-битной целочисленной арифметики может присутствовать - но количество этих случаев сильно ограничено, и большинства современного пользовательского программного обеспечения они никак не касаются. Кстати: а почему мы употребили термин «64-битная целочисленная арифметика»? А потому, что блоки операций с плавающей точкой (см. ниже) во всех x86-процессорах уже давным-давно не 32-битные. И даже не 64-битные. Классический x87 FPU (см. ниже), окончательно ставший частью CPU ещё во времена старого доброго 32-битного Intel Pentium - уже был 80-битным . Операнды команд SSE и SSE2/3 - и вовсе 128-битные! В этом плане архитектура x86 достаточно парадоксальна: при всём притом, что формально процессоры данной архитектуры достаточно долгое время оставались 32-битными - разрядность тех блоков, где «бо льшая битность» была реально необходима - наращивалась совершенно независимо от остальных. Например, процессоры AMD Athlon XP и Intel Pentium 4 «Northwood» совмещали в себе блоки, работающие с 32-битными, 80-битными, и 128-битными операндами. 32-битными оставались лишь основной набор команд (унаследованный от первого процессора архитектуры IA32 - Intel 386) и адресация памяти (максимум 4 гигабайта, если не считать «извращений» типа Intel PAE).

Таким образом, то, что процессоры AMD и Intel стали «формально 64-битными», на практике принесло нам лишь три усовершенствования: появление команд для работы с 64-битными целыми числами, увеличение количества и/или разрядности регистров, и увеличение максимального объёма адресуемой памяти. Заметим: реальной пользы этих нововведений (особенно третьего!) никто не отрицает. Равно как никто не отрицает заслуг компании AMD в продвижении идеи «осовременивания» (за счёт введения 64-битности) x86-процессоров. Мы лишь хотим предостеречь от чрезмерных ожиданий: не стоит надеяться на то, что компьютер, покупавшийся «в ценовом классе ВАЗа», от установки 64-битного программного обеспечения станет «лихим Мерседесом». Чудес на свете не бывает…

Процессорное ядро

Различия между ядрами одной микроархитектуры

«Процессорное ядро» (как правило, для краткости его называют просто «ядро») - это конкретное воплощение [микро]архитектуры (т.е. «архитектуры в аппаратном смысле этого слова»), являющееся стандартом для целой серии процессоров. Например, NetBurst - это микроархитектура, которая лежит в основе многих сегодняшних процессоров Intel: Celeron, Pentium 4, Xeon. Микроархитектура задает общие принципы: длинный конвейер, использование определенной разновидности кэша кода первого уровня (Trace cache), прочие «глобальные» особенности. Ядро - более конкретное воплощение. Например, процессоры микроархитектуры NetBurst с шиной 400 МГц, кэшем второго уровня 256 килобайт, и без поддержки Hyper-Threading - это более-менее полное описание ядра Willamette. А вот ядро Northwood имеет кэш второго уровня уже 512 килобайт, хотя также основано на NetBurst. Ядро AMD Thunderbird основано на микроархитектуре K7, но не поддерживает набор команд SSE, а вот ядро Palomino - уже поддерживает.

Таким образом, можно сказать что «ядро» – это конкретное воплощение определенной микроархитектуры «в кремнии», обладающее (в отличие от самой микроархитектуры) определенным набором строго обусловленных характеристик. Микроархитектура - аморфна, она описывает общие принципы построения процессора. Ядро - конкретно, это микроархитектура, «обросшая» всевозможными параметрами и характеристиками. Чрезвычайно редки случаи, когда процессоры сменяли микроархитектуру, сохраняя название. И, наоборот, практически любое наименование процессора хотя бы несколько раз за время своего существования «меняло» ядро. Например, общее название серии процессоров AMD - «Athlon XP» - это одна микроархитектура (K7), но целых четыре ядра (Palomino, Thoroughbred, Barton, Thorton). Разные ядра, построенные на одной микроархитектуре, могут иметь, в том числе разное быстродействие.

Ревизии

Ревизия - одна из модификаций ядра, крайне незначительно отличающаяся от предыдущей, почему и не заслуживает звания «нового ядра». Как правило, из выпусков очередной ревизии производители процессоров не делают большого события, это происходит «в рабочем порядке». Так что даже если вы покупаете один и тот же процессор, с полностью аналогичным названием и характеристиками, но с интервалом где-то в полгода - вполне возможно, фактически он будет уже немного другой. Выпуск новой ревизии, как правило, связан с какими-то мелкими усовершенствованиями. Например, удалось чуть-чуть снизить энергопотребление, или понизить напряжение питания, или еще что-то оптимизировать, или была устранена пара мелких ошибок. С точки зрения производительности мы не помним ни одного примера, когда бы одна ревизия ядра отличалась от другой настолько существенно, чтобы об этом имело смысл говорить. Хотя чисто теоретически возможен и такой вариант - например, подвергся оптимизации один из блоков процессора, ответственный за исполнение нескольких команд. Подводя итог, можно сказать что «заморачиваться» ревизиями процессоров чаще всего не стоит: в очень редких случаях изменение ревизии вносит какие-то кардинальные изменения в процессор. Достаточно просто знать, что есть такая штука - исключительно для общего развития.

Частота работы ядра

Как правило, именно этот параметр в просторечии именуют «частотой процессора». Хотя в общем случае определение «частота работы ядра» всё же более корректно, так как совершенно не обязательно все составляющие CPU функционируют на той же частоте, что и ядро (наиболее частым примером обратного являлись старые «слотовые» x86 CPU - Intel Pentium II и Pentium III для Slot 1, AMD Athlon для Slot A - у них L2-кэш функционировал на 1/2, и даже иногда на 1/3 частоты работы ядра). Ещё одним распространённым заблуждением является уверенность в том, что частота работы ядра однозначным образом определяет производительность. На самом деле это дважды не так: во-первых, каждое конкретное процессорное ядро (в зависимости от того, как оно спроектировано, сколько содержит исполняющих блоков различных типов, и т.д. и т.п.) может исполнять различное количество команд за один такт, частота же - это всего лишь количество таких тактов в секунду. Таким образом (приведенное далее сравнение, разумеется, очень сильно упрощено и поэтому весьма условно) процессор, ядро которого исполняет 3 инструкции за такт, может иметь на треть меньшую частоту, чем процессор, исполняющий 2 инструкции за такт - и при этом обладать полностью аналогичным быстродействием.

Во-вторых, даже в рамках одного и того же ядра, увеличение частоты вовсе не всегда приводит к пропорциональному увеличению быстродействия. Здесь вам очень пригодятся знания, которые вы могли почерпнуть из раздела «Общие принципы взаимодействия процессора и ОЗУ». Дело в том, что скорость исполнения команд ядром процессора - это вовсе не единственный показатель, влияющий на скорость выполнения программы. Не менее важна скорость поступления команд и данных на CPU. Представим себе чисто теоретически такую систему: быстродействие процессора - 10"000 команд в секунду, скорость работы памяти - 1000 байт в секунду. Вопрос: даже если принять, что одна команда занимает не более одного байта, а данных у нас нет совсем, с какой скоростью будет исполняться программа в такой системе? Правильно: не более 1000 команд в секунду, и производительность CPU тут совершенно ни при чём: мы будем ограничены не ей, а скоростью поступления команд в процессор. Таким образом, следует понимать: невозможно непрерывно наращивать одну только частоту ядра, не ускоряя одновременно подсистему памяти, так как в этом случае начиная с определённого этапа, увеличение частоты CPU перестанет сказываться на увеличении быстродействия системы в целом.

Особенности образования названий процессоров

Раньше, когда небо было голубее, пиво - вкуснее, а девушки - красивее, процессоры называли просто: имя производителя + название модельного ряда + частота. Например: «AMD K6-2 450 MHz». В настоящее время уже оба основных производителя от этой традиции отошли, и вместо частоты употребляют какие-то непонятные циферки, обозначающие невесть что. Краткому объяснению того, что же на самом деле эти циферки обозначают, и посвящены следующие два раздела.

Рейтинги от AMD

Причина, по которой компания AMD «изъяла» частоту из наименования своих процессоров, и заменила её некой абстрактной цифрой - общеизвестна: после появления процессора Intel Pentium 4, который работает на очень высоких частотах, процессоры AMD рядом с ним стали «плохо выглядеть на витрине» - покупатель не верил, что CPU с частотой, например, 1500 МГц, может обогнать CPU с частотой 2000 МГц. Поэтому частоту в наименовании заменили рейтингом. Формальная («де-юре», так сказать) трактовка этого рейтинга в устах AMD в разные времена звучала немного по-разному, но ни разу не прозвучала в том виде, в каком её воспринимали пользователи: процессор AMD с неким рейтингом, должен быть как минимум не медленнее процессора Intel Pentium 4 с соответствующей данному рейтингу частотой. Между тем, ни для кого не являлось особенным секретом, что именно такая трактовка и являлась конечной целью введения рейтинга. В общем, все всё прекрасно понимали, но AMD старательно делала вид, что она тут ни при чём:). Пенять ей за это не стоит: в конкурентной борьбе применяются совсем другие правила, чем в рыцарских поединках. Тем более что результаты независимых тестов демонстрировали: в целом, рейтинги своим процессорам AMD назначает достаточно справедливые. Собственно, именно до тех пор, пока это так - вряд ли имеет смысл протестовать против использования рейтинга. Правда, остаётся открытым один вопрос: а к чему же (нас интересует, понятное дело, состояние де-факто, а не разъяснения маркетингового отдела) будет привязан рейтинг процессоров AMD чуть позже, когда вместо Pentium 4 Intel начнёт выпускать какой-нибудь другой процессор?

Processor Number от Intel

Что нужно запомнить сразу: Processor Number (далее PN) у процессоров Intel - это не рейтинг. Не рейтинг производительности, и не рейтинг чего-либо другого. Фактически, это просто «артикул», элемент строчки в складской ведомости, единственная задача которого - сделать так, чтобы строчка, обозначающая один процессор, отличалась от строчки, обозначающей другой. В рамках серии (первая цифра PN), две остальные цифры, в принципе, кое о чём могут сказать, но, учитывая наличие таблиц, в которых приведено полное соответствие между PN и реальными параметрами, мы не видим особого смысла в том, чтобы заучивать какие-то промежуточные соответствия. Мотивация, которой руководствовалась Intel, вводя PN (вместо опять-таки указания частоты CPU) - более сложная, чем у AMD. Необходимость введения PN (как её объясняет сама Intel) связана, прежде всего, с тем, что два основных конкурента по-разному подходят к вопросу об уникальности наименования CPU. Например, у AMD название «Athlon 64 3200+» может обозначать сразу четыре процессора с несколько различными техническими характеристиками (но одинаковым «рейтингом»). Intel придерживается мнения, что наименование процессора должно быть уникальным, в связи с чем ранее компании приходилось «изворачиваться», добавляя к значению частоты в наименовании различные буквы, и это приводило к путанице. По идее, PN должен был эту путаницу устранить. Трудно сказать, была ли достигнута поставленная цель: всё равно номенклатура процессоров Intel осталась достаточно сложной. С другой стороны, это неизбежно, так как ассортимент продуктов уж больно велик. Однако независимо от всего прочего, одного эффекта де-факто добиться точно удалось: теперь только разбирающиеся в вопросе специалисты могут по названию процессора быстро и точно «по памяти» сказать, что он собой представляет, и какова будет его производительность в сравнении с другими CPU. Насколько это хорошо? Сложно сказать. Мы предпочтём воздержаться от комментариев.

Измерение скорости «в мегагерцах» - как это возможно?

Никак это невозможно, потому что скорость не измеряется в мегагерцах, как не измеряется расстояние в килограммах. Однако господа маркетологи давно уже поняли, что в словесном поединке между физиком и психологом побеждает всегда последний - причём независимо от того, кто на самом деле прав. Поэтому мы и читаем про «сверхбыструю 1066 MHz FSB», мучительно пытаясь понять, как скорость может измеряться с помощью частоты. На самом деле, раз уж прижилась такая извращённая тенденция, нужно просто чётко представлять себе, что имеется в виду. А имеется в виду следующее: если мы «закрепим» ширину шины на N битах - то её пропускная способность действительно будет зависеть от того, на какой частоте данная шина функционирует, и какое количество данных она способна передавать за такт. По обычной процессорной шине с «одинарной» скоростью (такая шина была, например, у процессора Intel Pentium III) за такт передаётся 64 бита, то есть 8 байт. Соответственно, если рабочая частота шины равна 100 МГц (100"000"000 тактов в секунду) - то скорость передачи данных будет равна 8 байт * 100"000"000 герц ~= 763 мегабайта в секунду (а если считать в «десятичных мегабайтах», в которых принято считать потоки данных , то ещё красивее - 800 мегабайт в секунду). Соответственно, если на тех же 100 мегагерцах работает DDR-шина, способная передавать за один такт удвоенный объём данных - скорость вырастет ровно вдвое. Поэтому, согласно парадоксальной логике господ маркетологов, данную шину следует именовать «200-мегагерцевой». А если это ещё и QDR (Quad Data Rate) шина - то она и вовсе «400-мегагерцевая» получается, так как за один такт передаёт четыре пакета данных. Хотя реальная частота работы у всех трёх вышеописанных шин одинаковая - 100 мегагерц. Вот так «мегагерцы» и стали синонимом скорости.

Таким образом, QDR-шина (с «учетверённой» скоростью), работающая на реальной частоте 266 мегагерц, волшебным образом оказывается у нас «1066-мегагерцевой». Цифра «1066» в данном случае олицетворяет то, что её пропускная способность ровно в 4 раза больше «односкоростной» шины, работающей на той же самой частоте. Вы ещё не запутались?.. Привыкайте! Это вам не какая-нибудь теория относительности, тут всё намного сложней и запущенней… Впрочем, самое главное здесь - выучить наизусть один простой принцип: если уж мы занимаемся таким извращением, как сравнение скорости двух шин между собой «в мегагерцах» - то они обязательно должны быть одинаковой ширины. Иначе получается как в одном форуме, где человек всерьёз доказывал, что пропускная способность AGP2X («133-мегагерцевая», но 32-битная шина) - выше, чем пропускная способность FSB у Pentium III 800 (реальная частота 100 МГц, ширина 64 бита ).

Пара слов о некоторых пикантных особенностях DDR и QDR протоколов

Как уже было сказано выше, в режиме DDR по шине за один такт передаётся удвоенный объём информации, а в режиме QDR - учетверённый. Правда, в документах, ориентированных больше на прославление достижений производителей, чем на объективное освещение реалий, почему-то всегда забывают указать одно маленькое «но»: режимы удвоенной и учетверённой скорости включаются только при пакетной передаче данных . То есть, если мы запросили из памяти парочку мегабайтов с адреса X по адрес Y - то да, эти два мегабайта будут переданы с удвоенной/учетверённой скоростью. А вот сам запрос на данные посылается по шине с «одинарной» скоростью - всегда ! Соответственно, если запросов у нас много, а размер пересылаемых данных не очень велик, то количество данных, которые «путешествуют» по шине с одинарной скоростью (а запрос - это тоже данные) будет почти равно количеству тех, которые передаются со скоростью удвоенной или учетверённой. Вроде бы нам никто открыто не врал, вроде бы DDR и QDR действительно работают, но… как говорится в одном старом анекдоте: «то ли он у кого-то украл шубу, то ли у него кто-то украл шубу, но что-то там с шубой не то…» ;) Процессор «крупноблочно»

Кэш

Общее описание и принцип действия

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

Итак, представим, что у нас есть много сравнительно медленной памяти (пусть это будет ОЗУ размером 10"000"000 байт) и относительно мало очень быстрой (пусть это будет кэш размером всего 1024 байта). Как нам с помощью этого несчастного килобайта увеличить скорость работы со всей памятью вообще? А вот здесь следует вспомнить, что данные в процессе работы программы, как правило, не бездумно перекидываются с места на место - они изменяются . Считали из памяти значение какой-то переменной, прибавили к нему какое-то число - записали обратно на то же место. Считали массив, отсортировали по возрастанию - опять-таки записали в память. То есть в один какой-то момент программа работает не со всей памятью целиком, а, как правило, с относительно маленьким её фрагментом. Какое решение напрашивается? Правильно: загрузить этот фрагмент в «быструю» память, обработать его там, а потом уже записать обратно в «медленную» (или просто удалить из кэша, если данные не изменялись). В общем случае, именно так и работает процессорный кэш: любая считываемая из памяти информация попадает не только в процессор, но и в кэш. И если эта же информация (тот же адрес в памяти) нужна снова, сначала процессор проверяет: а нет ли её в кэше? Если есть - информация берётся оттуда, и обращения к памяти не происходит вовсе. Аналогично с записью: информация, если её объём влезает в кэш - пишется именно туда, и только потом, когда процессор закончил операцию записи, и занялся выполнением других команд, данные, записанные в кэш, параллельно с работой процессорного ядра «потихоньку выгружаются» в ОЗУ.

Разумеется, объём данных, прочитанных и записанных за всё время работы программы - намного больше объёма кэша. Поэтому некоторые из них приходится время от времени удалять, чтобы в кэш могли поместиться новые, более актуальные. Самый простой из известных механизмов обеспечения данного процесса - отслеживание времени последнего обращения к данным, находящимся в кэше. Так, если нам необходимо поместить новые данные в кэш, а он уже «забит под завязку», контроллер, управляющий кэшем, смотрит: к какому фрагменту кэша не происходило обращения дольше всего? Именно этот фрагмент и является первым кандидатом на «вылет», а на его место записываются новые данные, с которыми нужно работать сейчас. Вот так, в общих чертах, работает механизм кэширования в процессорах. Разумеется, приведенное выше объяснение весьма примитивно, на самом деле всё ещё сложнее, но, надеемся, общее представление о том, зачем процессору нужен кэш и как он работает, вы получить смогли.

А для того чтобы было понятно, насколько важен кэш, приведем простой пример: скорость обмена данными процессора Pentium 4 со своим кэшам более чем в 10 раз (!) превосходит скорость его работы с памятью. Фактически, в полную силу современные процессоры способны работать только с кэшем: как только они сталкиваются с необходимостью прочитать данные из памяти - все их хваленые мегагерцы начинают просто «греть воздух». Опять-таки, простой пример: выполнение простейшей инструкции процессором происходит за один такт, то есть за секунду он может выполнить такое количество простых инструкций, какова его частота (на самом деле еще больше, но это оставим на потом…). А вот время ожидания данных из памяти может в худшем случае составить более 200 тактов! Что делает процессор, пока он ждет нужных данных? А ничего он не делает. Просто стоит и ждет…

Многоуровневое кэширование

Специфика конструирования современных процессорных ядер привела к тому, что систему кэширования в подавляющем большинстве CPU приходится делать многоуровневой. Кэш первого уровня (самый «близкий» к ядру) традиционно разделяется на две (как правило, равные) половины: кэш инструкций (L1I) и кэш данных (L1D). Это разделение предусматривается так называемой «гарвардской архитектурой» процессора, которая по состоянию на сегодня является самой популярной теоретической разработкой для построения современных CPU. В L1I, соответственно, аккумулируются только команды (с ним работает декодер, см. ниже), а в L1D - только данные (они впоследствии, как правило, попадают во внутренние регистры процессора). «Над L1» стоит кэш второго уровня - L2. Он, как правило, больше по объёму, и является уже «смешанным» - там располагаются и команды, и данные. L3 (кэш третьего уровня), как правило, полностью повторяет структуру L2, и в современных x86 CPU встречается редко. Чаще всего, L3 - это плод компромисса: за счёт использование более медленной и узкой шины, его можно сделать очень большим, но при этом скорость L3 всё равно остаётся более высокой, чем скорость памяти (хотя и не такой высокой, как у L2-кэша). Тем не менее, алгоритм работы с многоуровневым кэшем в общих чертах не отличается от алгоритма работы с одноуровневым, просто добавляются лишние итерации: сначала информация ищется в L1, если её там нет - в L2, потом - в L3, и уже потом, если ни на одном уровне кэша она не найдена - идёт обращение к основной памяти (ОЗУ).

Декодер

На самом деле, исполнительные блоки всех современных десктопных x86-процессоров… вовсе не работают с кодом в стандарте x86. У каждого процессора есть своя, «внутренняя» система команд, не имеющая ничего общего с теми командами (тем самым «кодом»), которые поступают извне. В общем случае, команды, исполняемые ядром - намного проще, «примитивнее», чем команды стандарта x86. Именно для того, чтобы процессор «внешне выглядел» как x86 CPU, и существует такой блок как декодер: он отвечает за преобразование «внешнего» x86-кода во «внутренние» команды, исполняемые ядром (при этом достаточно часто одна команда x86-кода преобразуется в несколько более простых «внутренних»). Декодер является очень важной частью современного процессора: от его быстродействия зависит то, насколько постоянным будет поток команд, поступающих на исполняющие блоки. Ведь они неспособны работать с кодом x86, поэтому то, будут они что-то делать, или простаивать - во многом зависит от скорости работы декодера. Достаточно необычный способ ускорить процесс декодирования команд реализовала в процессорах архитектуры NetBurst компания Intel - см. ниже про Trace cache.

Исполняющие (функциональные) устройства

Пройдя через все уровни кэша и декодер, команды наконец-то попадают на те блоки, ради которых вся эта катавасия и устраивалась: исполняющие устройства. По сути, именно исполняющие устройства и являются единственно необходимым элементом процессора. Можно обойтись без кэша - скорость снизится, но программы работать будут. Можно обойтись без декодера - исполняющие устройства станут сложнее, но работать процессор будет. В конце концов, ранние процессоры архитектуры x86 (i8086, i80186, 286, 386, 486, Am5x86) - как-то без декодера обходились. Без исполняющих устройств обойтись невозможно, ибо именно они исполняют код программы. В самом первом приближении они традиционно делятся на две больших группы: арифметико-логические устройства (ALU) и блок вычислений с плавающей точкой (FPU).

Арифметико-логические устройства

ALU традиционно отвечают за два типа операций: арифметические действия (сложение, вычитание, умножение, деление) с целыми числами, логические операции с опять-таки целыми числами (логическое «и», логическое «или», «исключающее или», и тому подобные). Что, собственно, и следует из их названия. Блоков ALU в современных процессорах, как правило, несколько. Для чего - вы поймёте позже, прочитав раздел «Суперскалярность и внеочередное исполнение команд». Понятно, что ALU может исполнить только те команды, которые предназначены для него. Распределением команд, поступающих с декодера, по различным исполняющим устройствам, занимается специальный блок, но это уже, как говорится, «слишком сложные материи», и их вряд ли имеет смысл разъяснять в материале, который посвящен лишь поверхностному ознакомлению с основными принципами работы современных x86 CPU.

Блок вычислений с плавающей запятой*

FPU занимается выполнением команд, работающих с числами с плавающей запятой, кроме того, традиционно на него «вешают всех собак» в виде всяческих дополнительных наборов команд (MMX, 3DNow!, SSE, SSE2, SSE3…) - независимо от того, работают они с числами с плавающей запятой, или с целыми. Как и в случае с ALU, отдельных блоков в FPU может быть несколько, и они способны работать параллельно.

* - согласно традиций русской математической школы, мы называем FPU «блоком вычислений с плавающей запятой », хотя буквально его название (Floating Point Unit) переводится как «…с плавающей точкой» - согласно американскому стандарту написания таких чисел.

Регистры процессора

Регистры - по сути, те же ячейки памяти, но «территориально» они расположены прямо в процессорном ядре. Разумеется, скорость работы с регистрами во много раз превосходит как скорость работы с ячейками памяти, расположенными в основном ОЗУ (тут вообще на порядки…), так и с кэшами любого уровня. Поэтому большинство команд архитектуры x86 предусматривают осуществление действий именно над содержимым регистров, а не над содержимым памяти. Однако общий объём регистров процессора, как правило, очень мал - он не сравним даже с объёмом кэшей первого уровня. Поэтому де-факто код программы (не на языке высокого уровня, а именно бинарный, «машинный») часто содержит следующую последовательность операций: загрузить в один из регистров процессора информацию из ОЗУ, загрузить в другой регистр другую информацию (тоже из ОЗУ), произвести некое действие над содержимым этих регистров, поместив результат в третий - а потом снова выгрузить результат из регистра в основную память. Процессор в подробностях

Особенности кэшей

Частота работы кэша и его шина

Во всех современных x86 CPU все уровни кэша работают на той же частоте, что и процессорное ядро, но это вовсе не всегда было так (данный вопрос уже поднимался выше). Однако скорость работы с кэшем зависит не только от частоты, но и от ширины шины, с помощью которой он соединён с процессорным ядром. Как вы (надеемся) помните из ранее прочитанного, скорость передачи данных является, по сути, произведением частоты работы шины (количества тактов в секунду) на количество байт, которые передаются по шине за один такт. Количество передаваемых за такт байтов можно увеличивать за счёт введения DDR и QDR (Double Data Rate и Quad Data Rate) протоколов - или просто за счёт увеличения ширины шины. В случае с кэшем более популярен второй вариант - не в последнюю очередь из-за «пикантных особенностей» DDR/QDR, описанных выше. Разумеется, минимально разумной шириной шины кэша является ширина внешней шины самого процессора, то есть, по состоянию на сегодняшний день - 64 бита. Именно так, в духе здорового минимализма, и поступает компания AMD: в её процессорах ширина шины L1 L2 равна 64 битам, но при этом она двунаправленная, то есть, способна работать одновременно на передачу и приём информации. В духе «здорового гигантизма» в очередной раз поступила компания Intel: в её процессорах, начиная с Pentium III «Coppermine», шина L1 L2 имеет ширину… 256 бит! По принципу «кашу маслом не испортишь», как говорится. Правда, шина эта однонаправленная, то есть в один момент времени работает либо только на передачу, либо только на приём. Споры о том, какой из подходов лучше (двунаправленная шина, но более узкая, или однонаправленная широкая) - продолжаются до сих пор… впрочем, равно как и множество других споров относительно технических решений, применяемых двумя основными конкурентами на рынке x86 CPU.

Эксклюзивный и не эксклюзивный кэш

Концепции эксклюзивного и не эксклюзивного кэширования очень просты: в случае не эксклюзивного кэша, информация на всех уровнях кэширования может дублироваться. Таким образом, L2 может содержать в себе данные, которые уже находятся в L1I и L1D, а L3 (если он есть) может содержать в себе полную копию всего содержимого L2 (и, соответственно, L1I и L1D). Эксклюзивный кэш, в отличие от не эксклюзивного, предусматривает чёткое разграничение: если информация содержится на каком-то уровне кэша - то на всех остальных она отсутствует. Плюс эксклюзивного кэша очевиден: общий размер кэшируемой информации в данном случае равен суммарному объёму кэшей всех уровней - в отличие от не эксклюзивного кэша, где размер кэшируемой информации (в худшем случае) равен объёму самого большого уровня кэша. Минус эксклюзивного кэша менее очевиден, но он есть: необходим специальный механизм, который следит за собственно «эксклюзивностью» (так, например, при удалении информации из L1-кэша, перед этим автоматически инициируется процесс её копирования в L2).

Не эксклюзивный кэш традиционно использует компания Intel, эксклюзивный (с момента появления процессоров Athlon на ядре Thunderbird) - компания AMD. В целом, мы наблюдаем здесь классическое противостояние между объёмом и скоростью: за счёт эксклюзивности, при одинаковых объёмах L1/L2 у AMD общий размер кэшируемой информации получается больше - но за счёт неё же он работает медленней (задержки, вызванные наличием механизма обеспечения эксклюзивности). Следует, наверное, заметить, что недостатки не эксклюзивного кэша компания Intel в последнее время компенсирует просто, тупо, но весомо: наращивая его объёмы. Для топовых процессоров данной компании стал уже почти что нормой L2-кэш объёмом 2 МБ - и AMD с её 128 КБ L1С+L1D и максимум 1 МБ L2 пока «не переплюнуть» эти 2 МБ даже за счёт эксклюзивности.

Кроме того, увеличивать общий объём кэшируемой информации за счёт введения эксклюзивной архитектуры кэша имеет смысл только в том случае, когда выигрыш в объёме получается достаточно больши м. Для компании AMD это актуально т.к. у её сегодняшних CPU суммарный объём L1D+L1I равен 128 КБ. Процессорам Intel, у которых объём L1D равен максимум 32 КБ, а L1I иногда имеет совсем другую структуру (см. про Trace cache), введение эксклюзивной архитектуры дало бы намного меньше пользы.

А ещё есть такое распространённое заблуждение, что архитектура кэша у CPU компании Intel «инклюзивная». На самом деле - нет. Именно НЕ эксклюзивная. Инклюзивная архитектура предусматривает, что на «нижнем» уровне кэша не может находиться ничего, чего нет на более «верхнем». Не эксклюзивная архитектура всего лишь допускает дублирование данных на разных уровнях.

Trace cache

Концепция Trace cache, состоит в том, чтобы сохранять в кэше инструкций первого уровня (L1I) не те команды, которые считаны из памяти, а уже декодированные последовательности (см. декодер). Таким образом, если некая x86-команда исполняется повторно, и она всё ещё находится в L1I, декодеру процессора не нужно снова преобразовывать её в последовательность команд «внутреннего кода», так как L1I содержит данную последовательность в уже декодированном виде. Концепция Trace cache очень удачно вписывается в общую концепцию архитектуры Intel NetBurst, ориентированную на создание процессоров с очень высокой частотой работы ядра. Однако полезность Trace cache для [относительно] менее высокочастотных CPU до сих пор находится под вопросом, так как сложность организации Trace cache становится сопоставима с задачей конструирования обычного быстрого декодера. Поэтому, отдавая должное оригинальности идеи, мы всё же сказали бы, что универсальным решением «на все случаи жизни» Trace cache считать нельзя.

Суперскалярность и внеочередное исполнение команд

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

1) A = B + C
2) Z = X + Y
3) K = A + Z

Легко заметить, что команды (1) и (2) совершенно независимы друг от друга - они не пересекаются ни по исходным данным (переменные B и C в первом случае, X и Y во втором), ни по месту размещения результата (переменная A в первом случае и Z во втором). Стало быть, если на данный момент у нас есть свободные исполняющие блоки в количестве более одного, данные команды можно распределить по ним, и выполнить одновременно, а не последовательно*. Таким образом, если принять время исполнения каждой команды равным N тактов процессора, то в классическом случае исполнение всей последовательности заняло бы N*3 тактов, а в случае с параллельным исполнением - всего N*2 тактов (так как команду (3) нельзя выполнить, не дождавшись результата исполнения двух предыдущих).

* - разумеется, степень параллелизма не бесконечна: команды могут быть выполнены параллельно только в том случае, когда на данный момент времени есть в наличии соответствующее количество свободных от работы блоков (ФУ), причём именно таких, которые «понимают» рассматриваемые команды . Самый простой пример: блок, относящийся к ALU, физически неспособен исполнить инструкцию, предназначенную для FPU. Обратное также верно.

На самом деле всё ещё сложнее. Так, если у нас имеется следующая последовательность:

1) A = B + C
2) K = A + M
3) Z = X + Y

То очередь исполнения команд процессором будет изменена! Так как команды (1) и (3) независимы друг от друга (ни по исходным данным, ни по месту размещения результата), они могут быть выполнены параллельно - и будут выполнены параллельно. А вот команда (2) будет выполнена после них (третьей) - поскольку для того, чтобы результат вычислений был корректен, необходимо, чтобы перед этим была выполнена команда (1). Именно поэтому обсуждаемый в данном разделе механизм и называется «внеочередным исполнением команд» (Out-of-Order Execution, или сокращённо «OoO»): в тех случаях, когда очерёдность выполнения никак не может сказаться на результате, команды отправляются на исполнение не в той последовательности, в которой они располагаются в коде программы, а в той, которая позволяет достичь максимального быстродействия.

Теперь вам должно стать окончательно понятно, зачем современным CPU такое количество однотипных исполняющих блоков: они обеспечивают возможность параллельного выполнения нескольких команд, которые в случае с «классическим» подходом к проектированию процессора пришлось бы выполнять в той последовательности, в которой они содержатся в исходном коде, одну за другой.

Процессоры, оснащённые механизмом параллельного исполнения нескольких подряд идущих команд, принято называть «суперскалярными». Однако не все суперскалярные процессоры поддерживают внеочередное исполнение. Так, в первом примере нам достаточно «простой суперскалярности» (выполнения двух последовательных команд одновременно) - а вот во втором примере без перестановки команд местами уже не обойтись, если мы хотим получить максимальное быстродействие. Все современные x86 CPU обладают обоими качествами: являются суперскалярными, и поддерживают внеочередное исполнение команд. В то же время, были в истории x86 и «простые суперскаляры», OoO не поддерживающие. Например, классическим десктопным x86-суперскаляром без OoO был Intel Pentium .

Справедливости ради, стоит заметить, что никаких заслуг в разработке концепций суперскалярности и OoO - нет ни у Intel, ни у AMD, ни у какого-либо иного (в том числе из ныне почивших) производителя x86 CPU. Первый суперскалярный компьютер, поддерживающий OoO, был разработан Сеймуром Креем (Seymour Cray) ещё в 60-х годах XX века. Для сравнения: Intel свой первый суперскалярный процессор (Pentium) выпустила в 1993 году, первый суперскаляр с OoO (Pentium Pro) - в 1995 году; первый суперскаляр с OoO от AMD (K5) увидел свет в 1996 году. Комментарии, как говорится, излишни…

Предварительное (опережающее) декодирование
и кэширование

Предсказание ветвлений

В любой более-менее сложной программе присутствуют команды условного перехода: «Если некое условие истинно - перейти к исполнению одного участка кода, если нет - другого». С точки зрения скорости выполнения кода программы современным процессором, поддерживающим внеочередное исполнение, любая команда условного перехода - воистину бич божий. Ведь до тех пор, пока не станет известно, какой участок кода после условного перехода окажется «актуальным» - его невозможно начать декодировать и исполнять (см. внеочередное исполнение). Для того чтобы как-то примирить концепцию внеочередного исполнения с командами условного перехода, предназначается специальный блок: блок предсказания ветвлений. Как понятно из его названия, занимается он, по сути, «пророчествами»: пытается предсказать, на какой участок кода укажет команда условного перехода, ещё до того, как она будет исполнена. В соответствии с указаниями «штатного внутриядерного пророка», процессором производятся вполне реальные действия: «напророченный» участок кода загружается в кэш (если он там отсутствует), и даже начинается декодирование и выполнение его команд. Причём среди выполняемых команд также могут содержаться инструкции условного перехода, и их результаты тоже предсказываются, что порождает целую цепочку из пока не проверенных предсказаний! Разумеется, если блок предсказания ветвлений ошибся, вся проделанная в соответствии с его предсказаниями работа просто аннулируется.

На самом деле, алгоритмы, по которым работает блок предсказания ветвлений, вовсе не являются шедеврами искусственного интеллекта. Преимущественно они просты… и тупы. Ибо чаще всего команда условного перехода встречается в циклах: некий счётчик принимает значение X, и после каждого прохождения цикла значение счётчика уменьшается на единицу. Соответственно, до тех пор, пока значение счётчика больше нуля - осуществляется переход на начало цикла, а после того, как он становится равным нулю - исполнение продолжается дальше. Блок предсказания ветвлений просто анализирует результат выполнения команды условного перехода, и считает, что если N раз подряд результатом стал переход на определённый адрес - то и в N+1 случае будет осуществлён переход туда же. Однако, несмотря на весь примитивизм, данная схема работает просто замечательно: например, в случае, если счётчик принимает значение 100, а «порог срабатывания» предсказателя ветвлений (N) равен двум переходам подряд на один и тот же адрес - легко заметить, что 97 переходов из 98 будут предсказаны правильно!

Разумеется, несмотря на достаточно высокую эффективность простых алгоритмов, механизмы предсказания ветвлений в современных CPU всё равно постоянно совершенствуются и усложняются - но тут уже речь идёт о борьбе за единицы процентов: например, за то, чтобы повысить эффективность работы блока предсказания ветвлений с 95 процентов до 97, или даже с 97% до 99…

Предвыборка данных

Блок предвыборки данных (Prefetch) очень похож по принципу своего действия на блок предсказания ветвлений - с той только разницей, что в данном случае речь идёт не о коде, а о данных. Общий принцип действия такой же: если встроенная схема анализа доступа к данным в ОЗУ решает, что к некоему участку памяти, ещё не загруженному в кэш, скоро будет осуществлён доступ - она даёт команду на загрузку данного участка памяти в кэш ещё до того, как он понадобится исполняемой программе. «Умно» (результативно) работающий блок предвыборки позволяет существенно сократить время доступа к нужным данным, и, соответственно, повысить скорость исполнения программы. К слову: грамотный Prefetch очень хорошо компенсирует высокую латентность подсистемы памяти, подгружая нужные данные в кэш, и тем самым, нивелируя задержки при доступе к ним, если бы они находились не в кэше, а в основном ОЗУ.

Однако, разумеется, в случае ошибки блока предвыборки данных, неизбежны негативные последствия: загружая де-факто «ненужные» данные в кэш, Prefetch вытесняет из него другие (быть может, как раз нужные). Кроме того, за счёт «предвосхищения» операции считывания, создаётся дополнительная нагрузка на контроллер памяти (де-факто, в случае ошибки - совершенно бесполезная).

Алгоритмы Prefetch, как и алгоритмы блока предсказания ветвлений, тоже не блещут интеллектуальностью: как правило, данный блок стремится отследить, не считывается ли информация из памяти с определённым «шагом» (по адресам), и на основании этого анализа пытается предсказать, с какого адреса будут считываться данные в процессе дальнейшей работы программы. Впрочем, как и в случае с блоком предсказания ветвлений, простота алгоритма вовсе не означает низкую эффективность: в среднем, блок предвыборки данных чаще «попадает», чем ошибается (и это, как и в предыдущем случае, прежде всего связано с тем, что «массированное» чтение данных из памяти, как правило происходит в процессе исполнения различных циклов). Заключение

Я - тот кролик, который не может начать жевать траву до тех пор, пока
не поймёт во всех деталях, как происходит процесс фотосинтеза!
(изложение личной позиции одним из близких знакомых автора)

Вполне возможно, те чувства, которые у вас возникли после прочтения данной статьи, можно описать примерно следующим образом: «Вместо того чтобы на пальцах объяснить, какой процессор лучше - взяли и загрузили мне мозги кучей специфической информации, в которой ещё разбираться и разбираться, и конца-края не видно!» Вполне нормальная реакция: поверьте, мы вас хорошо понимаем. Скажем даже больше (и пусть с головы упадёт корона!): если вы думаете, что мы сами можем ответить на этот простецкий вопрос («какой процессор лучше?») - то вы очень сильно заблуждаетесь. Не можем. Для одних задач лучше один, для других - другой, а тут ещё цена разная, доступность, симпатии конкретного пользователя к определённым маркам… Не имеет задача однозначного решения. Если бы имела - наверняка кто-то бы его нашёл, и стал бы самым знаменитым обозревателем за всю историю независимых тестовых лабораторий.

Хотелось бы подчеркнуть ещё раз: даже полностью усвоив и осмыслив всю информацию, изложенную в данном материале - вы по-прежнему не сможете предсказать, какой из двух процессоров будет быстрее в ваших задачах, глядя только на их характеристики . Во-первых - потому, что далеко не все характеристики процессоров здесь рассмотрены. Во-вторых - потому, что есть и такие параметры CPU, которые в числовом виде могут быть представлены только с очень большой «натяжкой». Так для кого же (и для чего) всё это написано? В основном - для тех самых «кроликов», которые непременно желают знать, что происходит внутри тех устройств, которыми они пользуются ежедневно. Зачем? Может, они просто лучше себя чувствуют, когда знают, что вокруг них происходит? :)

В ближайших планах на расширение FAQ:

  1. Раздел, посвящённый многопроцессорным системам: объяснение понятия SMP, технология Hyper-Threading, N-процессорность, N-ядерность.
  2. Раздел, посвящённый физическим характеристикам CPU: типы корпусов, сокеты, энергопотребление, и т.п.

Вопрос: Архитектура процессора - что это?
Ответ : Термин "архитектура процессора" в настоящее время не имеет однозначного толкования. С точки зрения программистов, под архитектурой процессора подразумевается его способность исполнять определенный набор машинных кодов. Большинство современных десктопных CPU относятся к семейству x86, или Intel-совместимых процессоров архитектуры IA32 (архитектура 32-битных процессоров Intel). Ее основа была заложена компанией Intel в процессоре i80386, однако в последующих поколениях процессоров она была дополнена и расширена как самой Intel (введены новые наборы команд MMX, SSE, SSE2 и SSE3), так и сторонними производителями (наборы команд EMMX, 3DNow! и Extended 3DNow!, разработанные компанией AMD). Однако разработчики компьютерного железа вкладывают в понятие "архитектура процессора" (иногда, чтобы окончательно не запутаться, используется термин "микроархитектура") несколько иной смысл. С их точки зрения, архитектура процессора отражает основные принципы внутренней организации конкретных семейств процессоров. Например, архитектура процессоров Intel Pentium обозначалась как Р5, процессоров Pentium II и Pentium III - Р6, а популярные в недавнем прошлом Pentium 4 относились к архитектуре NetBurst. После того, как компания Intel закрыла архитектуру Р5 для сторонних производителей, ее основной конкурент - компания AMD была вынуждена разработать собственную архитектуру - К7 для процессоров Athlon и Athlon XP, и К8 для Athlon 64.

Вопрос: Какие процессоры лучше, 64-битные или 32-битные? И почему?
Ответ : Достаточно удачное 64-битное расширение классической 32-битной архитектуры IA32 было предложено в 2002 году компанией AMD (первоначально называлось x86-64, сейчас - AMD64) в процессорах семейства К8. Спустя некоторое время компанией Intel было предложено собственное обозначение - EM64T (Extended Memory 64-bit Technology). Но, независимо от названия, суть новой архитектуры одна и та же: разрядность основных внутренних регистров 64-битных процессоров удвоилась (с 32 до 64 бит), а 32-битные команды x86-кода получили 64-битные аналоги. Кроме того, за счет расширения разрядности шины адресов объем адресуемой процессором памяти существенно увеличился.

И... все. Так что те, кто ожидает от 64-битных CPU сколь-нибудь существенного прироста производительности, будут разочарованы - их производительность в подавляющем большинстве современных приложений (которые в массе своей заточены под IA32 и вряд ли в обозримом будущем будут перекомпилированы под AMD64/EM64T) практически та же, что и у старых добрых 32-битных процессоров. Весь потенциал 64-битной архитектуры может раскрыться лишь в отдаленном будущем, когда в массовых количествах появятся (а может, и не появятся) приложения, оптимизированные под новую архитектуру. В любом случае, наиболее эффективен переход на 64-бита будет для программ, работающих с базами данных, программ класса CAD/CAE, а также программ для работы с цифровым контентом.

Вопрос: Что такое процессорное ядро?
Ответ : В рамках одной и той же архитектуры различные процессоры могут достаточно сильно отличаться друг от друга. И различия эти воплощаются в разнообразных процессорных ядрах, обладающих определенным набором строго обусловленных характеристик. Чаще всего эти отличия воплощаются в различных частотах системной шины (FSB), размерах кэша второго уровня, поддержке тех или иных новых систем команд или технологических процессах, по которым изготавливаются процессоры. Нередко смена ядра в одном и том же семействе процессоров влечет за собой замену процессорного разъема, из чего вытекают вопросы дальнейшей совместимости материнских плат. Однако в процессе совершенствования ядра, производителям приходится вносить в него незначительные изменения, которые не могут претендовать на "имя собственное". Такие изменения называются ревизиями ядра и, чаще всего, обозначаются цифробуквенными комбинациями. Однако в новых ревизиях одного и того же ядра могут встречаться достаточно заметные нововведения. Так, компания Intel ввела поддержку 64-битной архитектуры EM64T в отдельные процессоры семейства Pentium 4 именно в процессе изменения ревизии.

Вопрос: В чем заключается преимущество двухъядерных процессоров перед одноядерными?
Ответ : Самым значимым событием 2005 года стало появление двухъядерных процессоров. К этому времени классические одноядерные CPU практически полностью исчерпали резервы роста производительности за счет повышения рабочей частоты. Камнем преткновения стало не только слишком высокое тепловыделение процессоров, работающих на высоких частотах, но и проблемы с их стабильностью. Так что экстенсивный путь развития процессоров на ближайшие годы был заказан, и их производителям волей-неволей пришлось осваивать новый, интенсивный путь повышения производительности продукции. Самой расторопной на рынке десктопных CPU, как всегда, оказалась Intel, первой анонсировавшая двухъядерные процессоры Intel Pentium D и Intel Extreme Edition. Впрочем, AMD с Athlon64 X2 отстала от конкурента буквально на считанные дни. Несомненным достоинством двухъядерников первого поколения, к которым относятся вышеназванные процессоры, является их полная совместимость с существующими системными платами (естественно, достаточно современными, на которых придется только обновить BIOS). Второе поколение двухъядерных процессоров, в частности, Intel Core 2 Duo, "требует" специально разработанных для них чипсетов и со старыми материнскими платами не работает.

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

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

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

При этом в современных процессорах кэш давно не является единым массивом памяти, как раньше, а разделен на несколько уровней. Наиболее быстрый, но относительно небольшой по объему кэш первого уровня (обозначаемый как L1), с которым работает ядро процессора, чаще всего делится на две половины - кэш инструкций и кэш данных. С кэшем L1 взаимодействует кэш второго уровня - L2, который, как правило, гораздо больше по объему и является смешанным, без разделения на кэш команд и кэш данных. Некоторые десктопные процессоры, по примеру серверных процессоров, также порой обзаводятся кэшем третьего уровня L3. Кэш L3 обычно еще больше по размеру, хотя и несколько медленнее, чем L2 (за счет того, что шина между L2 и L3 более узкая, чем шина между L1 и L2), однако его скорость, в любом случае, несоизмеримо выше, чем скорость системной памяти.

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

Вопрос: Что такое процессорная шина?
Ответ : Процессорная (иначе - системная) шина, которую чаще всего называют FSB (Front Side Bus), представляет собой совокупность сигнальных линий, объединенных по своему назначению (данные, адреса, управление), которые имеют определенные электрические характеристики и протоколы передачи информации. Таким образом, FSB выступает в качестве магистрального канала между процессором (или процессорами) и всеми остальными устройствами в компьютере: памятью, видеокартой, жестким диском и так далее. Непосредственно к системной шине подключен только CPU, остальные устройства подсоединяются к ней через специальные контроллеры, сосредоточенные в основном в северном мосте набора системной логики (чипсета) материнской платы. Хотя могут быть и исключения - так, в процессорах AMD семейства К8 контроллер памяти интегрирован непосредственно в процессор, обеспечивая, тем самым, гораздо более эффективный интерфейс память-CPU, чем решения от Intel, сохраняющие верность классическим канонам организации внешнего интерфейса процессора. Основные параметры FSB некоторых процессоров приведены в табл

Процессор частота FSB, МГц Тип FSB Теоретическая пропускная способность FSB, Мб/с
Intel Pentium III 100/133 AGTL+ 800/1066
Intel Pentium 4 100/133/200 QPB 3200/4266/6400
Intel Pentium D 133/200 QPB 4266/6400
Intel Pentium 4 EE 200/266 QPB 6400/8533
Intel Core 133/166 QPB 4266/5333
Intel Core 2 200/266 QPB 6400/8533
AMD Athlon 100/133 EV6 1600/2133
AMD Athlon XP 133/166/200 EV6 2133/2666/3200
AMD Sempron 800 HyperTransport <6400
AMD Athlon 64 800/1000 HyperTransport 6400/8000

Процессоры компании Intel используют системную шину QPB (Quad Pumped Bus), передающую данные четыре раза за такт, тогда как системная шина EV6 процессоров AMD Athlon и Athlon XP передает данные два раза за такт (Double Data Rate). В архитектуре AMD64, используемой компанией AMD в процессорах линеек Athlon 64/FX/Opteron, применен новый подход к организации интерфейса CPU - здесь вместо процессорной шины FSB и для сообщения с другими процессорами используются: высокоскоростная последовательная (пакетная) шина HyperTransport, построенная по схеме Peer-to-Peer (точка-точка), обеспечивающая высокую скорость обмена данными при сравнительно низкой латентности.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: