Смекни!
smekni.com

Архитектура современных процессоров (стр. 2 из 3)

Таблица 4

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

Intel 80386 DX
Кодовое название P3
Дата выпуска 1985
Тактовая частота 16-33 МГц

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

Intel 80486 DX
Кодовое название P4, P24, P24C
Дата выпуска 1989
Тактовая частота 16-100 МГц

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

2. Одноядерные процессоры

Рассмотрим их на примере процессора 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) время, затрачиваемое на выполнение всего программного кода, составит: