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

Автор работы: Пользователь скрыл имя, 18 Июня 2013 в 17:02, методичка

Описание

В IBM-совместимых ПК применяются процессоры, совместимые с семейством 80x86 фирмы Intel. В оригинальной машине IBM PC использовался процессор 8088 с 16-разрядными регистрами. Все следующие модели процессоров, в том числе 32-разрядные (386, 486, Pentium, Pentium Pro, Pentium II/III, Celeron, Pentium 4 от Intel, K5, Кб и К7 (Athlon и Duron) от AMD, MI, МИ и Mill от Cyrix/ VIA) с расширениями MMX, SSE и 3DNow!, включают в себя подмножество системы команд и архитектуры предыдущих моделей, обеспечивая совместимость с ранее написанным ПО.

Работа состоит из  1 файл

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

— 37.00 Кб (Скачать документ)


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

 

В IBM-совместимых ПК применяются процессоры, совместимые с семейством 80x86 фирмы Intel. В оригинальной машине IBM PC использовался процессор 8088 с 16-разрядными регистрами. Все следующие модели процессоров, в том числе 32-разрядные (386, 486, Pentium, Pentium Pro, Pentium II/III, Celeron, Pentium 4 от Intel, K5, Кб и К7 (Athlon и Duron) от AMD, MI, МИ и Mill от Cyrix/ VIA) с расширениями MMX, SSE и 3DNow!, включают в себя подмножество системы команд и архитектуры предыдущих моделей, обеспечивая совместимость с ранее написанным ПО. Далее в тексте знак + означает, что описание верно как для указанного процессора, так и для следующих за ним процессоров. При этом 286 означает процессор 80286, 386 — 80386, ..., Р5 означает Pentium, P6 — ряд процессоров 6-го поколения, включая Pentium Pro, Pentium II/III и Celeron. Например, P5+ означает применимость к процессорам Pentium, Pentium MMX, Pentium Pro, Pentium II, Celeron, Pentium III и Pentium 4. В этой главе описываются процессоры последних трех поколений — от Pentium до Pentium 4 и Athlon, как наиболее распространенные. Ввиду ограничений на объем книги, здесь не рассматриваются детали внутреннего устройства, а также не приводятся описания команд. За этой информацией можно обратиться к [2, 9]. Там описана архитектура, система команд и функционирование 32-разрядных процессоров в реальном и защищенном режимах с объяснением многих системных функций, которые не рассматриваются в большинстве распространенных литературных источников. Информация по процессорам 486 есть в ранее выпущенной книге [3], а все более «древние» процессоры рассмотрены в книге [1]. Информация в этих книгах и данной главе собрана из фирменных каталогов и информационных материалов, публикуемых производителями процессоров на своих Web-серверах.

Под архитектурой процессора понимается его программная модель, то есть программно-видимые свойства. В этой книге рассматриваются только процессоры с архитектурой IA-32 (Intel Architecture 32 bit) — 32-разрядные процессоры семейства х86 5-7 поколений. Под микроархитектурой понимается внутренняя реализация этой программной модели. Для одной и той же архитектуры IA-32 разными фирмами и в разных поколениях применяются существенно различающиеся микроархитектурные реализации, при этом, естественно, стремятся к максимальному повышению производительности (скорости исполнения программ). В микроархитектуре процессоров 5-7 поколений — Pentium (MMX) и их близких аналогов, Pentium Pro, Pentium II/III, Celeron и, наконец, Pentium 4 и К7 — существенное значение имеет реализация различных способов конвейеризации и распараллеливания вычислительных процессов, а также других технологий, не свойственных процессорам прежних поколений. Поясним основные понятия.

Конвейеризация (pipelining) предполагает разбивку выполнения каждой инструкции на несколько этапов, причем каждый этап выполняется на своей ступени конвейера процессора. При выполнении инструкция продвигается по конвейеру по мере освобождения последующих ступеней. Таким образом, на конвейере одновременно может обрабатываться несколько последовательных инструкций, и производительность процессора можно оценивать темпом выхода выполненных инструкций со всех его конвейеров. Для достижения максимальной производительности процессора — обеспечения полной загрузки конвейеров с минимальным числом лишних штрафных циклов (penalty cycles) — программа должна составляться с учетом архитектурных особенностей процессора. Конечно, и код, сгенерированный обычным способом, будет исполняться на процессорах классов Pentium и Р6 достаточно быстро. Конвейер «классического» процессора Pentium имеет пять ступеней. Конвейеры процессоров с суперконвейерной архитектурой (superpipelined) имеют большее число ступеней, что позволяет упростить каждую из них и, следовательно, сократить время пребывания в них инструкций. Гиперкоивейер Pentium 4 имеет уже 20 ступеней.

Скалярным называют процессор с единственным конвейером, к этому типу относятся все процессоры Intel до 486 включительно. Суперскалярный (superscalar) процессор имеет более одного (Pentium — два) конвейера, способных обрабатывать инструкции параллельно. Pentium является двухпотоковым процессором (имеет два конвейера), Р6 — трехпотоковым.

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

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

Предсказание переходов (branch prediction) позволяет продолжать выборку и декодирование потока инструкций после выборки инструкции ветвления (условного перехода), не дожидаясь проверки самого условия. В процессорах прежних поколений инструкция перехода приостанавливала конвейер (выборку инструкций) до исполнения собственно перехода, на чем, естественно, терялась производительность. Предсказание переходов направляет поток выборки и декодирования по одной из ветвей. Статический метод предсказания работает по схеме, заложенной в процессор, счлтая, что переходы по одним условиям, вероятнее всего, произойдут, а по другим — нет. Динамическое предсказание опирается на предысторию вычислительного процесса — для каждого конкретного случая перехода накапливается статистика поведения, и переход предсказывается, основываясь именно на ней.

Исполнение по предположению, называемое также спекулятивным (speculative execution), идет дальше — предсказанные после перехода инструкции не только декодируются, но и по возможности исполняются до проверки условия перехода. Если предсказание сбывается, то труд оказывается ненапрасным, если не сбывается — конвейер оказывается недогруженным и простаивает несколько тактов (как минимум столько, сколько ступеней у конвейера).

Исполнение с изменением последовательности инструкций (out-of-order execution), свойственное RISC-архитектуре, теперь реализуется и для процессоров х86. При этом изменяется порядок внутренних манипуляций данными, а внешние (шинные) операции ввода-вывода и записи в память выполняются, конечно же, в порядке, предписанном программным кодом. Однако эта способность процессора в наибольшей степени может блокироваться несовершенством программного кода (особенно 16-битных приложений), если он генерируется без учета возможности изменения порядка исполнения инструкций.

Благодаря совершенствованию микроархитектуры от поколения к поколению возрастает производительность процессоров, причем этот рост обеспечивается двумя факторами. Во-первых, растет тактовая частота ядра. Каждая микроархитектура имеет свои пределы роста частоты. Здесь рекорд пока что у процессоров Р6, микроархитектура которых выдержала почти 10-кратное увеличение тактовой частоты, но для дальнейшего роста в Pentium 4 фирме Intel пришлось существенно удлинить конвейер. Во-вторых, сокращается число тактов процессорного ядра, требуемых на выполнение одной инструкции (в пересчете с темпа схода инструкций с конвейера). Так в среднем процессоры 1, 2, 3, 4, 5 и 6 поколений на одну инструкцию тратят 12, 5, 4, 2, 1 и 0,5 тактов. Полтакта на инструкцию — звучит, конечно, странно. Но если вспомнить о 8-байтной шине данных, позволяющей за один такт загрузить «кусок» кода, содержащего несколько команд, и о нескольких исполнительных устройствах, одновременно приступающих к их выполнению, то вопросы рассеиваются. Кроме того, в процессоры вводят все более мощные команды, позволяющие сокращать число инструкций, требуемое для решения одних и тех же задач.


Информация о работе Архитектура и микроархитектура процессоров