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

Возможности нынешних компьютеров поражают своей разносторонностью. Но чем бы вы ни занимались — обработкой изображений, монтажом видео или просто «рубились» в любимые игры, — все, чем вас радует компьютер, является результатом напряженной работы процессора. Он получает от пользователя и программ команды и данные, обрабатывает их и отправляет результаты другим устройствам ПК. Без преувеличения, процессор — мозг компьютера, своего рода центр управления, неустанно «перемалывающий» числа для решения поставленных задач. Из этой статьи вы узнаете, как устроен современный центральный процессор и как он работает. Мы также расскажем, от чего зависит производительность процессоров, что их ускоряет и что тормозит и почему тактовая частота — не самое главное.

А что внутри?

Каждый современный процессор состоит из устройств нескольких типов.

•    Исполнительные устройства, которые и осуществляют вычисления.

•    Устройства управления служат для того, чтобы исполнительные устройства получали и обрабатывали данные и команды в правильной последовательности.

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

•    Шина данных-это канал, предназначенный для связи с другими компонентами компьютера. Через него процессор получает нужную информацию и выдает результаты вычислений.

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

•    Кроме того, у процессора есть дополнительные вычислительные модули (специализированные конвейеры), которые отвечают за выполнение специальных задач, например, при обработке видео.

Частота и все о ней

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

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

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

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

От чего еще зависит производительность процессора

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

—    шина ввода и вывода данных;

—    внутренние регистры;

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

Можно ли поднимать тактовую частоту до бесконечности?

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

Шина данных

Фактически это пучок соединений (проводников) для передачи и приема данных. Чем больше сигналов одновременно поступает на шину, тем больше информации передается по ней за единицу времени. Разрядность шины данных можно сравнить с числом полос на скоростной автомагистрали. Чем больше полос — тем больше пропускная способность.

Разрядность шины

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

Шина адреса

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

улице не может быть больше 100 (102). Стоит добавить одну цифру в номер (один разряд в шину), и количество возможных адресов возрастает до 103 и т. д. С учетом того, что в компьютерах применяется двоичная система исчисления, количество адресуемых ячеек памяти равно 2″, где п — разрядность шины.

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

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

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

Почему процессоры нагреваются

Каждый процессор состоит из огромного количества микроскопических транзисторов. Чем больше транзисторов в процессоре и чем выше его тактовая частота, тем больше он потребляет энергии. Специальные процессоры для ноутбуков рассчитаны на пониженное энергопотребление (от 5 до 35 Вт). Модели для обычных компьютеров, напротив, потребляют 130 Вт и больше. При этом выделяется большое количество тепла, и, чтобы отвести его от поверхности чипа, необходима сложная и порой дорогая система охлаждения. (Мерилом количества тепла, выделяемого процессором, является так называемая TDP, или Total Dissipated Power, то есть общая рассеиваемая мощность.)

Существует несколько способов снижения энергопотребления.

•    Отключение отдельных модулей, а также понижение тактовой частоты или рабочего напряжения при снижении нагрузки на процессор. У Intel такая технология называется SpeedStep, у AMD — Cool & Quiet.

•    Миниатюризация элементов процессора. Их размеры измеряются в нанометрах (нм) и у современных чипов составляют 130 или 90 нм. Однако тонкие микроэлектронные структуры имеют серьезный недостаток- в них возникают так называемые наводки и утечки. При этом часть энергии совершенно бесполезно превращается в тепло.

•    Применение в производстве новых, прогрессивных материалов.

•    Кроме того, существуют процессоры, которые работают с пониженным напряжением питания (Low Voltage, Ultra Low Voltage). Потребляемая мощность изменяется пропорционально напряжению. Уменьшение напряжения на 10% снижает энергопотребление почти на 20%.

Как еще можно повысить производительность процессоров

Для ускорения вычислений используется несколько основных технологий.

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

•    Быстрая кэш-память. Современные процессоры сохраняют промежуточные результаты вычислений в собственной памяти, называемой кэш-памятью (cache memory). Ее тактовая частота равна частоте самого процессора, поэтому она гораздо быстрее системной памяти.

•    Большинство процессоров имеют кэш-память первого (level 1, L1), второго (level 2, L2) и третьего (level 3, L3) уровней. Кэш-память первого уровня очень быстра, но относительно мала (несколько сот килобайт). Кэши второго и третьего уровня больше (до нескольких мегабайт) и медленнее, но все равно работают с более высокой скоростью, чем

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

•    Конвейерная обработка. Чтобы ускорить выполнение команд, процессоры организуют для них так называемые конвейеры, подразумевающие последовательное прохождение команд через различные компоненты ЦП. Преимущество такого способа организации вычислений в том, что при наличии конвейера процессор занимается не одной командой в каждый момент времени, а несколькими — сколько поместится на конвейер. Чем длиннее конвейер, тем выше может быть тактовая частота. Однако длинный конвейер — не всегда преимущество: в случае ошибки предвыборки или в иной непредвиденной ситуации при исполнении кода процессору приходится сбрасывать содержимое конвейера и заново его заполнять — с большой потерей времени.

•    Алгоритмы предварительной выборки команд и данных. При загрузке очередной команды блок предвыборки (prefetch) пытается предсказать, какие команды и данные потребуются дальше. Таким образом, конвейер загружается быстрее, поскольку не тратится время на ожидание результатов выполнения предыдущих команд. Если же предсказание было ошибочным и нужные команды и данные надо искать в другом месте (к примеру, при выполнении команды условного перехода), конвейер приходится очищать и загружать заново.

•    Распараллеливание вычислений. Ряд современных процессоров за счет наличия нескольких вычислительных ядер имитируют присутствие в системе двух, четырех и более отдельных процессоров. Если программа для ПК умеет распараллеливать вычисления, разделяя их на несколько потоков (threads), эти вычисления могут быть выполнены одновременно. Однако у многоядерных процессоров есть недостаток: они расходуют гораздо больше энергии, а значит, сильнее нагреваются и требуют более интенсивного охлаждения.

•    Поддержка специальных алгоритмов обработки мультимедийных данных. Обычно такие алгоритмы строятся по принципу SIMD (Single Instruction -Multiple Data, то есть одна команда — множество данных). Процессоры, поддерживающие подобные технологии, быстрее обрабатывают большие объемы данных, требующих многократного исполнения одинаковых команд. Типичный случай — воспроизведение видео или обработка графических файлов. У Intel такие технологии называются ММХ и SSE, у AMD — 3DNow!. Последние модели процессоров поддерживают наборы инструкций SSE версии 4 и выше.

Как же он все-таки работает

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

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

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

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

3.    Планировщик забирает из кэша декодированных команд несколько микроопераций и определяет, в какой последовательности их можно выполнять. Команды, результаты выполнения которых не зависят от результатов выполнения других команд, могут исполняться параллельно на разных исполнительных устройствах. Таких устройств в ядре современного процессора немало: ALU для целых чисел, FPU для чисел с плавающей запятой, ALU для команд SSE и множество других.

4.    На этом этапе возможно определение ошибки предвыборки. К примеру, если исполняемая операция является командой условного перехода (то есть результат зависел от содержимого одного из регистров), блок предвыборки, не имея возможности узнать, каким будет значение регистра на момент исполнения команды, может ошибочно предположить, что переход осуществится (тогда как на самом деле его не должно быть), и предложит блоку выборки неверный адрес следующей команды. То же касается предвыборки данных: если на момент исполнения команды загрузки или выгрузки данных значения регистров, содержащих адрес этих данных, будут иными, нежели в момент предвыборки, будет зафиксирована ошибка предвыборки, поскольку в кэш попали неверные данные. В этом случае конвейер очищается, а блок выборки снова запрашивает команду, предшествующую моменту совершения ошибки. Разумеется, очистка и повторное заполнение конвейера ведут к потере времени. И если при исполнении программы совершается множество ошибок предвыборки, производительность процессора заметно снижается. Тем не менее средняя эффективность предвыборки в современных ЦПУ достигает 90-95%.

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