Что лежит в основе работы процессора. Что такое процессор компьютера? Как это работает

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

Процессор: функции устройства и история появления

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

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

Микропроцессоры

По мере развития компьютерной техники в структуру ПК стали внедряться девайсы, получившие название «микропроцессор». Одним из первых устройств такого типа стало изделие Intel 4004, выпущенное американской корпорацией в 1971 году. Микропроцессоры в масштабе одной микросхемы объединили в своей структуре те функции, что мы определили выше. Современные девайсы, в принципе, работают на основе той же самой концепции. Таким образом, центральный процессор ноутбука, ПК, планшета содержит в своей структуре: логическое устройство, регистры, а также модуль управления, отвечающие за конкретные функции. Однако на практике компоненты современных микросхем чаще всего представлены в более сложной совокупности. Изучим данную особенность подробнее.

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

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

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

Изучим специфику работы некоторых ключевых модулей центрального процессора подробнее. Начнем с ядра.

Ядро процессора

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

Выборка и декодирование инструкций;

Выборка данных;

Выполнение инструкций;

Сохранение результатов вычислений;

Работа с прерываниями.

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

Ядро процессора: компоненты

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

В блоке декодирования обрабатываются инструкции, определяющие алгоритм работы микросхемы в ходе решения тех или иных задач. Обеспечение их функционирования — сложная задача, как считают многие IT-специалисты. Это обусловлено, в частности, тем, что длина инструкции не всегда четко определена. Современные процессоры обычно включают 2 или 4 блока, в которых осуществляется соответствующее декодирование.

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

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

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

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

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

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

Работа центрального процессора также связана с задействованием регистров. Данные компоненты являются аналогом ОЗУ, однако доступ к ним осуществляется в несколько раз быстрее. Объем соответствующего ресурса небольшой — как правило, он не превышает килобайта. Регистры классифицируются на несколько разновидностей. Это могут быть компоненты общего назначения, которые задействуются при выполнении арифметических или логических вычислений. Есть регистры специального назначения, которые могут включать системные данные, используемые процессором в ходе работы.

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

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

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

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

Собственно, к чему все это? Дело в том, что в ходе эволюции ЭВМ сформировалось неофициальное правило: чем более технологично устройство, тем меньшими габаритами при той же производительности, а то и при большей — оно обладает. Оно в полной мере действует и в отношении рассматриваемой характеристики центрального процессора, а именно, техпроцесса его изготовления. В данном случае имеет значение расстояние между единичными кремниевыми кристаллами, формирующими структуру микросхемы. Чем оно меньше — тем больше плотность соответствующих элементов, которые размещает на себе плата центрального процессора. Тем более производительным он, соответственно, может считаться. Современные процессоры выполняются по техпроцессу 90-14 нм. Данный показатель имеет тенденцию к постепенному уменьшению.

Тактовая частота

Тактовая частота центрального процессора — один из ключевых показателей его производительности. Она определяет то, сколько операций в секунду может совершать микросхема. Чем их больше — тем более производителен процессор и компьютер в целом. Можно отметить, что данный параметр характеризует, прежде всего, ядро как самостоятельный модуль центрального процессора. То есть, если соответствующих компонентов на микросхеме несколько, то каждое из них будет работать с отдельной частотой. Некоторые IT-специалисты считают допустимым суммировать данные характеристики по всем ядрам. Что это значит? Если, например, на процессоре установлено 4 ядра с частотой 1 ГГц, то суммарный показатель производительности ПК, если следовать этой методологии, будет составлять 4 ГГц.

Компоненты частоты

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

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

Объем кэш-памяти

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

Главная характеристика кэш-памяти — объем. Чем он больше, тем, соответственно, вместительнее данный модуль с точки зрения расположения тех самых инструкций и алгоритмов, задействуемых процессором. Тем больше вероятность, что микросхема будет всякий раз находить среди них нужные для себя и работать быстрее. Кэш-память на современных процессорах делится чаще всего на три уровня. Первый работает на базе наиболее быстрых и высокотехнологичных микросхем, остальные — медленнее. Объем кэш-памяти первого уровня на современных процессорах составляет порядка 128-256 КБ, второго — 1-8 МБ, третьего — может превышать 20 МБ.

Энергопотребление

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

Вы используете компьютер или мобильное устройство, чтобы читать данный топик в настоящее время. Компьютер или мобильное устройство для выполнения этих действий использует микропроцессор. Микропроцессор является сердцем любого устройства, сервера или ноутбука. Существует много марок микропроцессоров от самых разных производителей, но все они делают примерно то же самое и примерно таким же образом.
Микропроцессор - также известный как процессор или центральный блок обработки - это вычислительный двигатель, который изготовлен на одном кристалле. Первым микропроцессором был Intel 4004, он появился в 1971 году и был не столь мощным. Он мог складывать и вычитать, и это только 4 бита за один раз. Удивительным процессор был потому, что был выполнен на одном чипе. Вы спросите почему? А я отвечу: инженеры в то время производили процессоры либо из нескольких чипов или из дискретных компонентов (транзисторы использовались в отдельных корпусах).

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

Прогресс в производстве микропроцессоров: Intel

Первым микропроцессором, ставшим впоследствии сердцем простого домашнего компьютера, был Intel 8080 - полный 8-разрядный компьютер на одном чипе, появившийся в 1974 году. Первый микропроцессор стал причиной реального всплеска на рынке. Позже в 1979 году была выпущена новая модель - Intel 8088. Если вы знакомы с рынком ПК и его историей, то знаете, что рынок ПК переехал от Intel 8088 к Intel 80286, а тот к Intel 80386 и Intel 80486, а после к Pentium, Pentium II, Pentium III и Pentium 4. Все эти микропроцессоры сделаны Intel, и все они являются улучшениями базовой конструкции Intel 8088. Pentium 4 может выполнить любой код, но делает он это в 5000 раз быстрее.

В 2004 году Intel представила микропроцессоры с несколькими ядрами и миллионным количеством транзисторов, но даже эти микропроцессоры следовали общим правилам, что и ранее изготовленные чипы. Дополнительная информация в таблице:

  • Дата : является годом, когда процессор был впервые представлен. Многие процессоры были выпущены вновь, но уже с более высокими тактовыми частотами, и это продолжалось в течение многих лет после оригинальной даты выпуска
  • Транзисторы : это количество транзисторов на кристалле. Вы можете видеть, что число транзисторов на одном кристалле неуклонно растёт на протяжении многих лет
  • Микрон : ширина в микронах наименьшей проволоки на чипе. Для сравнения могу привести человеческий волос, имеющий толщину около 100 мкм. Поскольку размеры были всё меньше и меньше, число транзисторов возрастало
  • Тактовая частота : максимальная скорость, которую чип может развить. О тактовой частоте я расскажу чуточку позже
  • Ширина (шина) данных : является шириной АЛУ (арифметико-логическое устройство). 8-битное АЛУ может добавить, вычесть, умножить и т. д. Во многих случаях шина данных имеет ту же ширину, как АЛУ, но не всегда. Intel 8088 был 16-битным и имел 8-битную шину, в то время как современные модели Pentium 64-битные.
  • MIPS : данная колонка в таблице выступает за отображение количества операций в секунду. Является единицей измерения для микропроцессоров. Современные процессоры могут сделать столько всяких штук, что сегодняшние рейтинги, представленные в таблице, потеряют всякий смысл. Зато вы можете ощутить относительную мощность микропроцессоров тех времён
Из этой таблицы видно, что, в общем, существует связь между тактовой частотой и MIPS (количеством совершаемых операций в секунду). Максимальная тактовая частота является функцией производственного процессора. Существует также зависимость между количеством транзисторов и количеством операций в секунду. Например, Intel 8088 с тактовой частотой 5 МГц (а сейчас 2.5-3 ГГц) выполняет только 0.33 MIPS (около одной инструкции для каждого 15 такта). Современные процессоры могут часто выполнять две инструкции за такт. Это повышение напрямую связано с числом транзисторов на чипе и я расскажу об этом тоже далее.

Что такое чип?


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

Как это работает



Intel Pentium 4

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

Микропроцессор выполняет коллекцию машинных инструкций, которые сообщают процессору, что делать. Основываясь на инструкциях, микропроцессор делает три основные вещи:

  • Используя своё АЛУ (арифметико-логическое устройство), микропроцессор может выполнять математические операции. Например, сложение, вычитание, умножение и деление. Современные микропроцессоры способны выполнять чрезвычайно сложные операции
  • Микропроцессор может перемещать данные из одного места памяти в другое
  • Микропроцессор может принимать решения и перейти к новому набору инструкций, основанному на этих решениях


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

  • Шина адреса (8, 16 или 32 бита), которая посылает обращение к памяти
  • Шина данных (8, 16 или 32 бита), которая передаёт данные в память или принимает данные от памяти
  • RD (read, чтение) и WR (write, запись) сообщают памяти, хотят ли они произвести установку или же получить адресованное местоположение
  • Линия часов, которая позволяет просмотреть последовательность тактовых импульсов процессора
  • Линия сброса, которая сбрасывает счётчик команд к нулю и перезапускает выполнение

Память микропроцессора

Ранее мы говорили о шинах адреса и данных, а также о линиях чтения и записи. Всё это соединяется либо с ОЗУ (оперативная память) или с ПЗУ (постоянная память или постоянное запоминающее устройство, ПЗУ) - как правило, с обеими. В нашем примере микропроцессора мы имеем широкую адресную шину 8 бит и такую же широкую шину данных - тоже 8 бит. Это означает, что микропроцессор может обратиться 2^8 к 256 байт памяти, и может читать и писать 8 бит памяти за один раз. Давайте предположим, что этот простой микропроцессор имеет 128 байт встроенной памяти, начиная с адреса 0 и 128 байт оперативной памяти, начиная с адреса 128.

Оперативная память выступает за память только для чтения. Микросхема постоянной памяти запрограммирована с постоянными предустановленными заданными байтами. Шинный адрес сообщает чипу оперативной памяти, который байт, добраться и поместиться на шине данных. Когда линия чтения изменяет своё состояние, микросхема постоянной памяти представляет выбранный байт на шину данных.

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



RAM chip или чип постоянного запоминающего устройства (ПЗУ)

Кстати, почти все компьютеры содержат некоторое количество оперативной памяти. На персональном компьютере постоянное запоминающее устройство называется BIOS (Basic Input/Output System). При запуске микропроцессор начинает выполнять инструкции, которые он находит в BIOS. Инструкции BIOS, к слову, тоже выполняют свои роли: выполняют проверку аппаратных средств, а затем вся информация поступает на жёсткий диск, чтобы создать загрузочный сектор. Загрузочный сектор - это одна небольшая программа, и BIOS хранит её в памяти после прочтения её с диска. Затем микропроцессор начинает выполнять инструкции загрузочного сектора из оперативной памяти. Программа загрузочного сектора покажет микропроцессору, что нужно ещё взять с собой с жесткого диска в оперативную память, а затем выполняет всё это и так далее. Это - то, как микропроцессор загружает и выполняет всю операционную систему.

Микропроцессорные инструкции

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

Вот набор инструкций языка ассемблера:

  • LOADA mem - загрузить в регистр с адресом памяти
  • LOADB mem - загрузить в регистр B от адреса памяти
  • CONB mem - загрузить постоянное значение в регистр B
  • SAVEB mem - сохранить регистр B в адрес памяти
  • SAVEC mem - сохранить регистр C в адрес памяти
  • ADD - добавить A и B и сохранить результат в C
  • SUB - вычесть A и B и сохранить результат в C
  • MUL - умножить A и B и сохранить результат в C
  • DIV - разделить A и B и сохранить результат в C
  • COM - сравнить A и B и сохранить результат в тесте
  • JUMP addr - перейти по адресу
  • JEQ addr - перейти, если равно, для решения
  • JNEQ addr - перейти, если не равно, для решения
  • JG addr - перейти, если больше, для решения
  • JGE addr - перейти, если больше или равно, для решения
  • JL addr - перейти, если меньше, для решения
  • JLE addr - перейти, если меньше или равно, для решения
  • STOP - остановить выполнение
Язык ассемблера
Компилятор C переводит этот C-код на языке ассемблера. Если предположить, что оперативная память начинается с адреса 128 в этом процессоре, и постоянное запоминающее устройство (в котором содержится программа на языке ассемблера) начинается с адреса 0, то для нашего простого микропроцессора ассемблер может выглядеть следующим образом:

// Assume a is at address 128// Assume F is at address 1290 CONB 1 // a=1;1 SAVEB 1282 CONB 1 // f=1;3 SAVEB 1294 LOADA 128 // if a > 5 the jump to 175 CONB 56 COM7 JG 178 LOADA 129 // f=f*a;9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a=a+1;13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // loop back to if17 STOP

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

  • LOADA - 1
  • LOADB - 2
  • CONB - 3
  • SAVEB - 4
  • SAVEC mem - 5
  • ADD - 6
  • SUB - 7
  • MUL - 8
  • DIV - 9
  • COM - 10
  • JUMP addr - 11
  • JEQ addr - 12
  • JNEQ addr - 13
  • JG addr - 14
  • JGE addr - 15
  • JL addr - 16
  • JLE addr - 17
  • STOP - 18
Данные цифры будут известны как коды операций. В постоянном запоминающем устройстве наша маленькая программа будет выглядеть следующим образом:

// Assume a is at address 128// Assume F is at address 129Addr opcode/value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 // LOADA 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // LOADA 12823 12824 3 // CONB 125 126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430 831 18 // STOP

Вы видите, что 7 линий C-кода стали 18 линиями ассемблера, и это всё стало 32 байтами в постоянном запоминающем устройстве.

Декодирование
Инструкция декодирования должна превратить каждый из кодов операций в набор сигналов, которые будут управлять различными компонентами внутри микропроцессора. Давайте возьмём инструкции ADD в качестве примера и посмотрим, что она должна будет сделать. Итак:

  • 1. В первом такте необходимо загрузить саму инструкцию, поэтому декодеру нужно: активировать тремя состояниями буфер для счётчика команд, активировать линию чтения (RD), активировать данные в трёх штатах буфера в регистре команд
  • 2. Во втором такте инструкция ADD декодируется. Тут нужно сделать совсем немного: установить операцию арифметико-логического устройства (АЛУ) в регистр C
  • 3. Во время третьего такта программный счётчик увеличивается (в теории это может перекрываться во втором такте)
Каждая инструкция может быть разбита в виде набора секвенированных операций - таких, какие мы только что просмотрели. Они манипулируют компонентами микропроцессора в правильном порядке. Некоторые указания, как, например, инструкция ADD, может занять два-три такта. Другие могут занять пять или шесть тактов.

Подойдём к концу


Количество транзисторов имеет огромное влияние на производительность процессора. Как можно заметить выше, типичный микропроцессор Intel 8088 мог выполнять 15 циклов. Чем больше транзисторов, тем выше производительность - всё просто. Большое количество транзисторов также допускает такую технологию, как конвейерная обработка.

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

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

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

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

Составляющие

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

Регистры предназначены для сохранения промежуточных итогов. Почти все команды используют информацию регистров. Шина информации проводит функции объединения CPU с остальным оборудованием ПК. Именно шина перемещает центральному процессору файлы и отображает итоги расчетов.

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

Частота

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

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

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

Самой маленькой единицей измерения времени для CPU является такт. Любое действие требует минимум одного такта. Обмен информацией с оперативкой выполняется в несколько тактов, куда относятся и такты простоя.

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

От чего еще зависит продуктивность CPU

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

Насколько можно поднять частоту?

Скорость работы CPU можно легко поднять увеличением частоты. Однако, не стоит забывать, что чип может перегреваться. С поднятием частоты растет потребление энергии процессором и его нагрев. Кроме того, увеличение частоты может увеличить степень электромагнитных помех. Другими словами, увеличением частоты поднять продуктивность CPU не получиться.

Шина данных

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

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

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

Шина адреса

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

Шину адреса можно представить в качестве системы нумерации зданий. Число полос в шине соответствует количеству цифр в номере здания. Если в номере зданий допускается не более 2-х цифр, то количество зданий будет не более ста. Если вставить одно число в номер, то число адресов вырастет до 103. В ПК применяется двоичная система вычисления, поэтому число ячеек памяти равняется 2.

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

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

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

Почему происходит нагрев процессора

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

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

Кроме того, можно использовать современные материалы. Также есть процессоры, которые функционируют на низком напряжении. При этом изменение мощности напрямую зависит от напряжения. При уменьшении напряжения на 10% уменьшается потребление энергии на 20%.

Каким образом можно увеличить продуктивность процессоров

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

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

В основной своей массе CPU имеют три уровня кэш. Уровень L1 — самый скоростной, но маленький по размеру. L2 и L3 уровни намного больше, но при этом работают со значительно меньшей скоростью, но все равно функционирует быстрее, чем оперативка. Информация и команды быстро передаются из кэша, что максимально загружает процессор, и при этом не нужно простаивать, ожидая данные из оперативки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Устройство и принцип работы процессора

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

1. Введение.

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

Большинство современных процессоров состоит из:

  • одного или нескольких ядер, осуществляющих выполнение всех инструкций;
  • нескольких уровней КЭШ-памяти (обычно, 2 или три уровня), ускоряющих взаимодействие процессора с ОЗУ;
  • контроллера ОЗУ;
  • контроллера системной шины (DMI, QPI, HT и т.д.);

И характеризуется следующими параметрами:

  • типом микроархитектуры;
  • тактовой частотой;
  • набором выполняемых команд;
  • количеством уровней КЭШ-памяти и их объемом;
  • типом и скоростью системной шины;
  • размерами обрабатываемых слов;
  • наличием или отсутствием встроенного контроллера памяти;
  • типом поддерживаемой оперативной памяти;
  • объемом адресуемой памяти;
  • наличием или отсутствием встроенного графического ядра;
  • энергопотреблением.

Упрощенная структурная схема современного многоядерного процессора представлена на рисунке 1.

Начнем обзор устройства процессора с его основной части – ядра.

2. Ядро процессора.

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

На рисунке 1 приведена структурная схема устройства ядра процессора. Как видно на рисунке, каждое ядро процессора состоит из нескольких функциональных блоков:

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

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

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

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

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

В современных процессорах, обычно, бывает 2-4 блока декодирования инструкций, например, в процессорах Intel Core 2 каждое ядро содержит по два таких блока.

Блоки выборки данных осуществляют выборку данных из КЭШ-памяти или ОЗУ, необходимых для выполнения текущих инструкций. Обычно, каждое процессорное ядро содержит несколько блоков выборки данных. Например, в процессорах Intel Core используется по два блока выборки данных для каждого ядра.

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

Блоки выполнения инструкций включают в себя несколько разнотипных блоков:

ALU – арифметическое логическое устройство;

FPU – устройство по выполнению операций с плавающей точкой;

Блоки для обработки расширения наборов инструкций. Дополнительные инструкции используются для ускорения обработки потоков данных, шифрования и дешифрования, кодирования видео и так далее. Для этого в ядро процессора вводят дополнительные регистры и наборы логики. На данный момент наиболее популярными расширениями наборов инструкция являются:

MMX (Multimedia Extensions) – набор инструкций, разработанный компанией Intel, для ускорения кодирования и декодирования потоковых аудио и видео-данных;

SSE (Streaming SIMD Extensions) – набор инструкций, разработанный компанией Intel, для выполнения одной и той же последовательности операций над множеством данных с распараллеливанием вычислительного процесса. Наборы команд постоянно совершенствуются, и на данный момент имеются ревизии: SSE, SSE2, SSE3, SSSE3, SSE4;

ATA (Application Targeted Accelerator) – набор инструкций, разработанный компанией Intel, для ускорения работы специализированного программного обеспечения и снижения энергопотребления при работе с такими программами. Эти инструкции могут использоваться, например, при расчете контрольных сумм или поиска данных;

3DNow – набор инструкций, разработанный компанией AMD, для расширения возможностей набора инструкций MMX;

AES (Advanced Encryption Standard) – набор инструкций, разработанный компанией Intel, для ускорения работы приложений, использующих шифрование данных по одноименному алгоритму.

Блок сохранения результатов обеспечивает запись результата выполнения инструкции в ОЗУ по адресу, указанному в обрабатываемой инструкции.

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

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

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

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

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

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

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

2.1 Принцип работы ядра процессора.

Принцип работы ядра процессора основан на цикле, описанном еще Джоном фон Нейманом в 1946 году. В упрощенном виде этапы цикла работы ядра процессора можно представить следующим образом:

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

2. Блок выборки инструкций из счетчика команд считывает адрес команды, предназначенной для выполнения. По этому адресу из КЭШ-памяти или ОЗУ считывается команда. Полученные данные передаются в блок декодирования;

3. Блок декодирования команд расшифровывает команду, при необходимости используя для интерпретации команды записанный в ПЗУ микрокод. Если это команда перехода, то в счетчик команд записывается адрес перехода и управление передается в блок выборки инструкций (пункт 1), иначе счетчик команд увеличивается на размер команды (для процессора с длинной команды 32 бита – на 4) и передает управление в блок выборки данных;

4. Блок выборки данных считывает из КЭШ-памяти или ОЗУ требуемые для выполнения команды данные и передает управление планировщику;

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

6. Блоки выполнения инструкций выполняют требуемые командой действия и передают управление блоку сохранения результатов;

7. При необходимости сохранения результатов в ОЗУ, блок сохранения результатов выполняет требуемые для этого действия и передает управление блоку выборки инструкций (пункт 1).

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

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

2.2. Способы повышения производительности ядра процессора.

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

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

Рассмотрим основные способы повышения производительности процессоров.

2.2.1. Конвейеризация.

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

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

Такты Выборка инструкции Декодирование инструкции Выборка данных Выполнение инструкции Сохранение результата
1 K1 - - - -
2 - K1 - - -
3 - - K1 - -
4 - - - K1 -
5 - - - - K1
6 K2 - - - -
7 - K2 - - -
8 - - K2 - -
9 - - - K2 -
10 - - - - K2
11 K3 - - - -
12 - K3 - - -
13 - - K3 - -
14 - - - K3 -
15 - - - - K3
16 K4 - - - -
17 - K4 - - -
18 - - K4 - -
19 - - - K4 -
20 - - - - K4
21 K5 - - - -
22 - K5 - - -
23 - - K5 - -
24 - - - K5 -
25 - - - - K5

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

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

Рассмотрим пример выполнения той же программы, состоящей из пяти инструкций, но с использованием принципа конвейеризации.

Такты Выборка инструкции Декодирование инструкции Выборка данных Выполнение инструкции Сохранение результата
1 K1 - - - -
2 K2 K1 - - -
3 K3 K2 K1 - -
4 K4 K3 K2 K1 -
5 K5 K4 K3 K2 K1
6 - K5 K4 K3 K2
7 - - K5 K4 K3
8 - - - K5 K4
9 - - - - K5

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

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

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

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

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

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

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

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

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

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

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

2.2.2. Суперскалярность.

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

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

Однако параллельное выполнение инструкций возможно, только если эти инструкции – независимые.

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

2.2.3. Параллельная обработка данных.

Бесконечно повышать производительность процессоров, за счет увеличения тактовой частоты, невозможно. Увеличение тактовой частоты влечет за собой увеличение тепловыделения, уменьшение срока службы и надежности работы процессоров, да и задержки от обращения к памяти сильно снижают эффект от увеличения тактовой частоты. Действительно, сейчас практически не встретишь процессоры с тактовой частотой выше 3.8 ГГц.

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

Подавляющее большинство современных процессоров имеют два и более ядра. Топовые модели могут содержать и 8, и даже 12 ядер, причем с поддержкой технологии hyper-threading. Преимущества от ввода дополнительных ядер вполне понятны, мы практически получаем несколько процессоров, способных независимо решать каждый свои задачи, при этом, естественно, возрастает производительность. Однако прирост производительности далеко не всегда оправдывает ожидания.

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

Но это дает выигрыш в производительности до тех пор, пока не появляется программа, требующая ресурсов больше, чем может дать одно ядро. Хорошо, если она поддерживает распределение нагрузки между несколькими ядрами. Но на данный момент общедоступных программ, способных распределить нагрузку между 12 ядрам, да еще в режиме Hyper-Threading, можно «сосчитать на пальцах одной руки». Я, конечно, утрирую, существуют программы, оптимизированные для многопоточных вычислений, но большинству простых пользователей они не нужны. А вот наиболее популярные программы, а тем более игры, пока что «плохо» адаптируются к многоядерным процессорам, особенно, если количество ядер больше четырех.

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

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

Ну и, в-четвертых, себестоимость производства многоядерных процессоров – немаленькая, а, соответственно, и цена на такие процессоры «кусается».

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

2.2.4. Технология Hyper-Threading.

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

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

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

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

К тому же практически во всех программах – много условных переходов и зависимых переменных. В результате, использование технологии Hyper-threading может дать существенный прирост производительности, способствуя максимальной загрузке конвейера ядра.

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

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

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

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

2.2.5. Технология Turbo Boost.

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

Частота процессора рассчитывается, как частота системной шины, умноженная на некий коэффициент, называемый множителем. Например, процессор Core i7-970 работает с системной шиной DMI на базовой частоте – 133 МГц, и имеет множитель – 24. Таким образом, тактовая частота ядра процессора составит: 133 Мгц*24= 3192 Мгц.

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

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

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

2.2.6. Эффективность выполнения команд.

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

  • на классические процессоры CISC;
  • на процессоры RISC с сокращенным набором команд;
  • на процессоры MISC c минимальным набором команд;
  • на процессоры VLIW с набором сверхдлинных команд.

CISC (Complex instruction set computer) – это процессоры со сложным набором команд. Архитектура CISC характеризуется:

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

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

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

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

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

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

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

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

RISC (Reduced Instruction Set Computer) – процессоры с сокращенным набором инструкций.

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

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

Процессоры, построенные по архитектуре RISC, обладают следующими основными особенностями:

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

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

Однако, несмотря на явное преимущество RISC, процессоры не получили столь серьезного распространения, как CISC. Правда, связано это в основном не с тем, что они по каким-то параметрам могли быть хуже CISC-процессоров. Они не хуже. Дело в том, что СISC-процессоры появились первыми, а программное обеспечение для CISC -процессоров – несовместимо с RISC-процессорами.

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

MISC (Minimal Instruction Set Computer) – дальнейшее развитие архитектуры RISС, основанное на еще большем упрощении инструкций и уменьшении их количества. Так, в среднем, в MISC-процессорах используется 20-30 простых инструкций. Такой подход позволил еще больше упростить устройство процессора, снизить энергопотребление и максимально использовать возможности параллельной обработки данных.

VLIW (Very long instruction word) – архитектура процессоров, использующая инструкции большой длины, содержащие сразу несколько операций, объединенных компилятором для параллельной обработки. В некоторых реализациях процессоров длина инструкций может достигать 128 или даже 256 бит.

Архитектура VLIW является дальнейшим усовершенствованием архитектуры RISC и MISC с углубленным параллелизмом.

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

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

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

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

Первые VLIW-процессоры появились в конце 1980-х годов и были разработаны компанией Cydrome. Так же к процессорам с этой архитектурой относятся процессоры TriMedia фирмы Philips, семейство DSP C6000 фирмы Texas Instruments, Эльбру?с 2000 – процессор российского производства, разработанный компанией МЦСТ при участии студентов МФТИ и др. Поддержка длинных инструкций с явным параллелизмом есть и в процессорах семейства Itanium.

2.3. Способы снижения энергопотребления процессора.

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

Нашу жизнь уже нельзя представить комфортной без использования ноутбуков, планшетных компьютеров и смартфонов. Однако единственное, что омрачает эту тенденцию, – это время автономной работы подобных устройств. Так ноутбуки, в среднем, могут автономно работать 3-5 часов, планшеты – чуть больше, смартфоны уже могут протянуть при полной нагрузке почти сутки и то не все. Но все это крайне мало для комфортной работы с ними.

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

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

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

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

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

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

Существуют и не столь кардинальные пути решения этой проблемы.

Например, технология EIST (Enhanced Intel SpeedStep Technology) позволяет динамически изменять энергопотребление процессора, за счет изменения тактовой частоты процессора и напряжения. Изменение тактовой частоты происходит, за счет уменьшения или увеличения коэффициента умножения.

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

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

Аналогичная технология для уменьшения энергопотребления, основанная на динамическом изменении напряжения и тактовой частоты, в зависимости от нагрузки на процессор, используется и компанией AMD, называется она - Cool’n’Quiet .

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

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

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

3. КЭШ-память.

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

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

КЭШ-память строится на базе дорогой SRAM-памяти (static random access memory), обеспечивающей доступ к ячейкам памяти гораздо более быстрый, чем к ячейкам DRAM-памяти (dynamic random access memory), на базе которой построена оперативная память. К тому же SRAM-память не требует постоянной регенерации, что так же увеличивает ее быстродействие. Однако более подробно устройство SRAM, DRAM и других типов памяти рассмотрим в следующей статье, а сейчас более подробно рассмотрим принцип работы и устройства КЭШ-памяти.

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

КЭШ-память более высокого уровня всегда больше по размеру и медленнее КЭШ-памяти более низкого уровня.

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

КЭШ-память второго уровня – более медленная (время доступа, в среднем, 8-20 тактов процессора), но зато имеет объем несколько мегабайт.

КЭШ-память третьего уровня – еще медленнее, но имеет сравнительно большой объем. Встречаются процессоры с КЭШ-памятью третьего уровня больше 24 Мб.

В многоядерных процессорах, обычно, последний уровень КЭШ-памяти делают общим для всех ядер. Причем, в зависимости от нагрузки на ядра, может динамически изменяться отведенный ядру объем КЭШ-памяти последнего уровня. Если ядро имеет высокую нагрузку, то ему выделяется больше КЭШ-памяти, за счет уменьшения объема КЭШ-памяти для менее нагруженных ядер. Не все процессоры обладают такой возможностью, а только поддерживающие технологию Smart Cache (например, Intel Smart Cache или AMD Balanced Smart Cache).

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

Мы рассмотрели, как устроена КЭШ-память, давайте теперь разберемся, как она работает.

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

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

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

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

Но, несмотря на такие трудности в работе с КЭШ-памятью, ее применение дает явный прирост скорости работы без существенного увеличения стоимости ЭВМ. И пока не будет придумана оперативная память, которая сможет по скорости соперничать с SRAM-памятью, а по цене – с DRAM-памятью, будет применяться иерархическая организация оперативной памяти с использованием нескольких уровней КЭШ-памяти.

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


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

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

Выполняемые операции

Операция представляет собой одно или несколько действий, которые обрабатываются и выполняются компьютерными устройствами, в том числе и процессором. Сами операции делятся на несколько классов:

  1. Ввод и вывод . К компьютеру обязательно подключено несколько внешних устройств, например, клавиатура и мышь. Они напрямую связаны с процессором и для них выделена отдельная операция. Она выполняет передачу данных между CPU и периферийными девайсами, а также вызывает определенные действия с целью записи информации в память или ее вывода на внешнюю аппаратуру.
  2. Системные операции отвечают за остановку работы софта, организовывают обработку данных, ну и, кроме всего, отвечают за стабильную работу системы ПК.
  3. Операции записи и загрузки . Передача данных между процессором и памятью осуществляется с помощью посылочных операций. Быстродействие обеспечивается одновременной запись или загрузкой групп команд или данных.
  4. Арифметически-логические . Такой тип операций вычисляет значения функций, отвечает за обработку чисел, преобразование их в различные системы исчисления.
  5. Переходы . Благодаря переходам скорость работы системы значительно увеличивается, ведь они позволяют передать управление любой команде программы, самостоятельно определяя наиболее подходящие условия перехода.

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

Выполнение команд

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

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

Взаимодействия с памятью

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

Если разобраться о важности ОЗУ и ПЗУ, то без первой и вовсе можно было бы обойтись, если бы постоянное запоминающее устройство имело намного больше памяти, что пока реализовать практически невозможно. Без ПЗУ система работать не сможет, она даже не запустится, поскольку сначала происходит тестирование оборудования с помощью команд БИОСа.




Top