Как подключить CPU

Центральным процессором ( ЦП )— является электронная схема внутри компьютера, которая выполняет инструкции компьютерной программы, выполняя основные операции арифметического, логического, управления и ввода / вывода (ввода / вывода), указанные в инструкциях. Компьютерная индустрия использовала термин «центральный процессор» по крайней мере, с начала 1960-х годов. Традиционно термин «процессор» относится к компьютерному процессору, более конкретно к его процессору и блоку управления (CU), отличающему эти основные элементы компьютера от внешних компонентов, таких как основная память и схема ввода / вывода .

Intel 80486DX2 процессор, как видно из названия маркировки

Нижняя сторона Intel 80486DX2 , показывающая его контакты

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

Большинство современных процессоров — это микропроцессоры, то есть они содержаться в одной интегральной микросхеме (IC) которую содержит CPU, может также содержать память, периферийные интерфейсы и другие компоненты компьютера. Такие интегрированные устройства по-разному называются микроконтроллерами или системами на чипе (SoC). На некоторых компьютерах используется многоядерный процессор, который представляет собой один чип, содержащий два или более процессора, называемых «ядрами», в этом контексте можно говорить о таких чипах, как «сокеты» .

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

Ранние компьютеры, такие как ENIAC, должны были быть физически переработаны для выполнения различных задач, что вызвало их называние «компьютеров с фиксированной программой». Поскольку термин «ЦП» обычно определяется как устройство для программного обеспечения (компьютерная программа), самые ранние устройства, которые по праву можно назвать процессорами, появились с появлением компьютера с сохраненной программой.

Идея компьютера с сохраненной программой уже присутствовала в дизайне ENIAC Дж. Преспера Эккера и Джона Уильяма Мочли , но первоначально была опущена, так что ее можно было закончить раньше. 30 июня 1945 года, до создания ENIAC, математик Джон фон Нейман распространил документ, озаглавленный « Первый проект отчета об EDVAC». Это был план компьютера с сохраненной программой, который в конечном итоге будет завершен в августе 1949 года. EDVAC был разработан для выполнения определенного количества инструкций (или операций) различных типов. Примечательно, что программы, написанные для EDVAC, должны храниться в высокоскоростной компьютерной памяти, а не в физической проводке компьютера. Это преодолело серьезное ограничение ENIAC, что потребовало значительного времени и усилий, необходимых для перенастройки компьютера для выполнения новой задачи. С дизайном фон Неймана программа, которую запускал EDVAC, могла быть изменена просто путем изменения содержимого памяти. EDVAC, однако, не был первым компьютером с сохраненной программой. Манчестер-Бэби , маленький экспериментальный компьютер с программной памятью, провел свою первую программу 21 июня 1948 года, а « Манчестер Марк 1» выполнил свою первую программу в ночь с 16 на 17 июня 1949 года.

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

В то время как фон Нейману чаще всего приписывают дизайн компьютера с сохраненной программой из-за его дизайна EDVAC, и дизайн стал известен как архитектура фон Неймана , другие, которые ему представляли конкуренцию, такие как Konrad Zuse , предложили и реализовали подобные идеи. Так называемая гарвардская архитектура Гарвардского Марка I , которая была завершена до EDVAC, также использовала сохраненную программу, используя перфорированную бумажную ленту, а не электронную память. Ключевое различие между архитектурами фон Неймана и Гарварда заключается в том, что последний отделяет хранение и обработку инструкций и данных CPU, а первый использует то же пространство памяти для обоих. Большинство современных процессоров — это в первую очередь дизайн фон Неймана, но также рассматриваются процессоры с архитектурой Гарварда, особенно во встроенных решениях, например, микроконтроллеры Atmel AVR являются процессорами архитектуры Harvard.

Реле и вакуумные трубки (термоэлектронные трубки) обычно использовались в качестве переключающих элементов, первые компьютеры требуют тысяч или десятков тысяч коммутационных устройств. Общая скорость системы зависит от скорости переключателей. Такие компьютеры, как EDVAC, в среднем составляли восемь часов между отказами, тогда как ретрансляционные компьютеры, такие как (более медленный, но более ранний) Гарвардский марк I, случались очень редко. Большинство из этих ранних синхронных процессоров работали на низких тактовых частотах по сравнению с современными микроэлектронными проектами. Частоты тактовых сигналов в диапазоне от 100 кГц до 4 МГц были очень распространены в это время, что в значительной степени ограничивалось скоростью коммутирующих устройств, с которыми они были построены.

Транзисторные ЦП

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

В 1964 году IBM представила компьютерную архитектуру IBM System / 360, которая использовалась в серии компьютеров, способных запускать те же программы с разной скоростью и производительностью. Это было важно в то время, когда большинство электронных компьютеров были несовместимы друг с другом, даже с теми же производителями. Чтобы облегчить это улучшение, IBM использовала концепцию микропрограммы (часто называемой «микрокодом»), которая по-прежнему широко используется в современных процессорах. Архитектура System / 360 была настолько популярна, что десятилетиями она доминировала на рынке мэйнфреймов и оставила наследие, которое по-прежнему продолжается на таких же современных компьютерах, как IBM zSeries. В 1965 году Digital Equipment Corporation (DEC) представила еще один влиятельный компьютер, предназначенный для научных и исследовательских рынков PDP-8.

Транзисторные компьютеры имели ряд преимуществ перед своими предшественниками. Помимо повышения надежности и снижения энергопотребления, транзисторы также позволяли процессорам работать на гораздо более высоких скоростях из-за короткого времени переключения транзистора по сравнению с трубкой или реле. Повышенная надежность и значительно повышенная скорость переключающих элементов (которые к этому времени были почти исключительно транзисторами), тактовые частоты процессора в десятках мегагерц были легко получены за этот период. Кроме того, в то время как дискретные транзисторные и ИС-процессоры были в тяжелом использовании, появились новые высокопроизводительные конструкции, такие как векторные процессоры SIMD (Single Instruction Multiple Data). Эти ранние экспериментальные проекты позже привели к эпохе специализированных суперкомпьютеров, таких как Cray Inc и Fujitsu Ltd.

Маломасштабные интеграционные процессоры

В этот период был разработан метод изготовления многих взаимосвязанных транзисторов в компактном пространстве. Интегральная схема (IC) позволила изготовить большое количество транзисторов на одной матрице на основе полупроводника или «чипе». Сначала только самые основные неспецифические цифровые схемы, такие как ворота НОР, были миниатюризированы в ИС. ЦП, основанные на этих микросхемах «строительного блока», обычно называются устройствами «малой интеграции» (SSI). Микросхемы SSI, такие как те, что использовались в Apollo Guidance Computer , обычно содержат до нескольких десятков транзисторов. Для создания целого процессора из SSI-микросхем требовались тысячи отдельных микросхем, но они все еще потребляли гораздо меньше места и мощности, чем предыдущие дискретные транзисторные конструкции.

IBM System / 370 , последующие действия для системных / 360, использованных микросхем SSI, а не дискретных транзисторных модулей Solid Logic Technology . DEC PDP-8 / I и KI10 PDP-10 также переключились с отдельных транзисторов, используемых микросхемами PDP-8 и PDP-10 на SSI, и их чрезвычайно популярная линия PDP-11 была изначально построенный с использованием микросхем SSI, но в конечном итоге был реализован с компонентами LSI, как только они стали практичными.

Крупномасштабные интеграционные процессоры

Ли Бойсел опубликовал влиятельные статьи, в том числе «манифест» 1967 года, в котором описано, как построить эквивалент 32-битного компьютера мэйнфреймов из относительно небольшого числа крупномасштабных интегральных схем (LSI). В то время единственным способом создания чипов LSI, которые являются чипами со ста и более воротами, было создание их с использованием MOS-процесса (то есть логики PMOS, логики NMOS или логики CMOS ). Однако некоторые компании продолжали строить процессоры из биполярных чипов, поскольку транзисторы с биполярным соединением были намного быстрее, чем микросхемы MOS. Например, процессоры Datapoint из микросхем транзисторной транзисторной логики (TTL) до начала 1980-х годов. В то время МОС-микросхемы были настолько медленными, что считались полезными только в нескольких приложениях ниши, требующих низкой мощности.

По мере развития технологии микроэлектроники все большее число транзисторов было размещено на ИС, что уменьшало количество отдельных ИС, необходимых для полного процессора. Микросхемы MSI и LSI увеличили количество транзисторов до сотен, а затем и тысяч. К 1968 году количество ИС, необходимых для создания полного процессора, было сокращено до 24 микросхем восьми различных типов, причем каждая ИС содержала около 1000 МОП-транзисторов. В отличие от предшественников SSI и MSI, первая реализация LSI PDP-11 содержала процессор, состоящий из четырех интегральных схем LSI.

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

С момента появления первого коммерчески доступного микропроцессора, Intel 4004 в 1970 году и первого широко используемого микропроцессора Intel 8080 в 1974 году, этот класс процессоров почти полностью обогнал все другие методы реализации центрального процессора. Производители мейнфреймов и миникомпьютеров запустили проприетарные программы разработки ИС для обновления своих старых компьютерных архитектур и, в конечном итоге, создали совместимые с инструкциями микропроцессоры, которые были обратно совместимы со своим старым оборудованием и программным обеспечением. В сочетании с появлением и окончательным успехом вездесущего персонального компьютера термин ЦП теперь применяется почти исключительно к микропроцессорам. Несколько процессоров (обозначенных ядер ) могут объединяться в единый процессор.

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

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

Операция

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

После выполнения команды весь процесс повторяется, причем следующий цикл команды обычно извлекает команду next-in-sequence из-за увеличенного значения в счетчике программы. Если была выполнена инструкция перехода, счетчик программ будет изменен, чтобы содержать адрес команды, в которую было вложено, и выполнение программы продолжается нормально. В более сложных ЦП могут одновременно извлекаться, декодироваться и выполняться несколько команд. В этом разделе описывается, что обычно называют « классическим конвейером RISC », что довольно часто встречается среди простых процессоров, используемых во многих электронных устройствах (часто называемых микроконтроллерами). Он в значительной степени игнорирует важную роль кэша процессора и, следовательно, этап доступа к конвейеру.

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

Извлечение

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

Декодирование

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

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

В некоторых конструкциях процессоров декодер команд реализован как жесткая, неизменяемая схема. In others, a microprogram is used to translate instructions into sets of CPU configuration signals that are applied sequentially over multiple clock pulses. В других случаях микропрограмма используется для перевода инструкций в наборы сигналов конфигурации ЦП, которые последовательно применяются на нескольких тактовых импульсах. В некоторых случаях память, которая хранит микропрограмму, перезаписывается, что позволяет изменить способ, которым CPU декодирует инструкции.

Выполнение

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

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

Структура и реализация

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

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

Блок управления

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

Арифметическая логическая единица

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

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

Блок управления памятью

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

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

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

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

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

Один из способов обращения с ненужными компонентами называется синхронизацией частоты , которая включает в себя выключение тактового сигнала для ненужных компонентов (что фактически отключает их). Тем не менее, это часто считается сложным для реализации и поэтому не видит общего использования за пределами очень маломощных конструкций. Одним из примечательных недавних процессоров ЦП, использующих обширное стробирование частоты, является Xenon IBM PowerPC, используемый в Xbox 360. Таким образом, требования к питанию Xbox 360 значительно сокращаются. Еще один способ решения некоторых проблем с глобальным тактовым сигналом — это полное удаление тактового сигнала. При удалении глобального тактового сигнала процесс проектирования значительно усложняется по многим параметрам, асинхронные (или не требующие времени) конструкции имеют заметные преимущества в потреблении энергии и рассеивании тепла по сравнению с аналогичными синхронными конструкциями. Хотя несколько необычно что, целые асинхронные процессоры были построены без использования глобального тактового сигнала. Двумя примечательными примерами этого являются ARM- совместимый AMULET и совместимый с MIPS R3000 MiniMIPS.

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

Целочисленный диапазон

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

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

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

Процессоры с большими размерами оперируемых чисел требуют больше схем и, следовательно, физически больше, стоят дороже и потребляют больше энергии (и, следовательно, генерируют больше тепла). В результате в современных устройствах обычно используются более мелкие 4- или 8-битные микроконтроллеры , хотя доступны процессоры с гораздо большими размерами слов (например, 16, 32, 64, даже 128 бит). Однако, когда требуется более высокая производительность, преимущества большего размера слова (большие диапазоны данных и адресные пространства) могут перевесить недостатки. ЦП может иметь внутренние пути данных короче размера слова, чтобы уменьшить размер и стоимость. Например, хотя набор инструкций IBM System / 360 был 32-битным набором команд, в System / 360 Model 30 и Model 40 были 8-битные пути данных в арифметическом логическом блоке, так что 32-битная добавка требовала четыре циклов, по одному на каждые 8 бит операндов, и хотя набор инструкций серии Motorola 68000 был 32-битным набором команд, Motorola 68000 и Motorola 68010 имели 16-битные пути данных в арифметической логической единице, так что 32-бит добавить два цикла.

Чтобы получить некоторые преимущества, обеспечиваемые как более низкой, так и более высокой длиной битов, многие наборы инструкций имеют разную ширину битов для данных с целыми числами и с плавающей запятой, что позволяет процессорам, реализующим этот набор команд, иметь разную ширину битов для разных частей устройства. Например, набор команд IBM System / 360 был в основном 32-разрядным, но поддерживал 64-битные значения с плавающей запятой, чтобы повысить точность и диапазон чисел с плавающей запятой. Модель 65/65 имела 8-разрядный сумматор для десятичной и бинарной арифметики с фиксированной точкой и 60-битный сумматор для арифметики с плавающей запятой. Многие более поздние версии процессоров используют аналогичную смешанную ширину битов, особенно когда процессор предназначен для общего использования, где требуется разумный баланс целых чисел и возможностей с плавающей запятой.

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

Этот процесс приводит к присущей неэффективности в субскалярных ЦП. Поскольку за один раз выполняется только одна команда, весь процессор должен дождаться завершения этой команды, прежде чем перейти к следующей инструкции. В результате процессор субкаляров получает «зависание» по инструкциям, для выполнения которых требуется больше одного такта. Даже добавление второго исполнительного блока (см. Ниже) не улучшает производительность; вместо того, чтобы подвешивать один путь, в настоящее время два канала трогаются, а количество неиспользуемых транзисторов увеличивается. Эта конструкция, в которой ресурсы выполнения ЦП могут работать только по одной команде за раз, может достигать скалярной производительности (одна команда за такт, IPC = 1). Однако производительность почти всегда подкалибрована (менее одной команды за такт, IPC

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

параллелизм на уровне инструкций (ILP), который стремится увеличить скорость, с которой инструкции выполняются в ЦП (то есть, чтобы увеличить использование ресурсов для выполнения на уме)

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

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

Параллелизм на уровне инструкций

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

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

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

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

В случае, когда часть ЦП является суперскалярной, а часть — нет, то часть, которая не подвергается штрафу за производительность из-за расписания ларьков. Intel P5 Pentium имеет два суперскалярных ALU, которые могут принимать по одной инструкции за такт каждый, но его FPU не может принимать одну инструкцию за такт. Таким образом, P5 был целым суперскалярным, но не суперскалярным с плавающей запятой. Преемник Intel по архитектуре P5, P6 , добавил суперскалярные возможности к своим функциям с плавающей запятой и, следовательно, значительно увеличил производительность команд с плавающей запятой.

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

Параллелизм на уровне задач

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

Одной технологией, используемой для этой цели, была многопроцессорность (МП). Первоначальный вкус этой технологии известен как симметричная многопроцессорность (SMP), где небольшое количество процессоров совместно используют когерентный вид своей системы памяти. В этой схеме каждый процессор имеет дополнительное оборудование для поддержания постоянно обновляемого представления памяти. Избегая устаревших взглядов на память, ЦП могут взаимодействовать в одной и той же программе, и программы могут переноситься с одного процессора на другой. Чтобы увеличить количество взаимодействующих ЦП за пределами нескольких, такие схемы, как неравномерный доступ к памяти (NUMA) и протоколы согласованности на основе каталогов были введены в 1990-х годах. Системы SMP ограничены небольшим количеством процессоров, в то время как системы NUMA были построены с тысячами процессоров. Первоначально многопроцессорность была построена с использованием нескольких дискретных процессоров и плат для реализации взаимосвязи между процессорами. Когда процессоры и их межсоединения реализованы на одном чипе, эта технология известна как многопроцессорная технология на чипе (CMP) и один чип в качестве многоядерного процессора.

Позднее было признано, что параллель между мельчайшими зернами существует с одной программой. Одна программа может иметь несколько потоков (или функций), которые могут выполняться отдельно или параллельно. В некоторых из ранних примеров этой технологии реализована обработка ввода / вывода, такая как прямой доступ к памяти как отдельный поток из потока вычислений. Более общий подход к этой технологии был введен в 1970-х годах, когда системы были разработаны для параллельной работы нескольких потоков вычислений. Эта технология известна как многопоточность(МТ). Этот подход считается более рентабельным, чем многопроцессорность, поскольку только небольшое количество компонентов в ЦПУ реплицируется для поддержки MT, а не для всего процессора в случае MP. В MT исполнительные устройства и система памяти, включая кэш, совместно используются несколькими потоками. Недостатком MT является то, что аппаратная поддержка многопоточности более понятна программному обеспечению, чем аппаратное обеспечение MP, и, таким образом, программное обеспечение супервизора, такое как операционные системы, должно претерпеть большие изменения в поддержку MT. Один тип MT, который был реализован, известен как временная многопоточность, где один поток выполняется до тех пор, пока он не остановится, ожидая возврата данных из внешней памяти. В этой схеме CPU затем быстро переключится на другой поток, который готов к запуску, причем коммутатор часто выполняется в одном тактовом цикле процессора, например UltraSPARC T1 . Другим типом МТ является одновременная многопоточность , причем команды из нескольких потоков выполняются параллельно в течение одного тактового цикла ЦП.

В течение нескольких десятилетий с 1970-х по начало 2000-х годов основное внимание в разработке высокопроизводительных процессоров общего назначения было в основном на достижении высоких требований к ИЛП с помощью таких технологий, как конвейерная обработка, кеширование, суперскалярное выполнение, внеплановое исполнение и т. Д. Эта тенденция завершилась большими , энергопотребляющие процессоры, такие как Intel Pentium 4 . К началу 2000-х годов разработчикам процессоров было отказано в достижении более высокой производительности от технологий ILP из-за растущего несоответствия между рабочими частотами процессора и рабочими частотами основной памяти, а также усилением рассеивания мощности процессора из-за более эзотерических методов ILP.

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

Это обращение к акценту подтверждается распространением двойных и более основных процессоров, и, в частности, более новые разработки Intel напоминают его менее суперскалярную архитектуру P6 . Поздние проекты в нескольких семействах процессоров демонстрируют CMP, включая X86-64 Opteron и Athlon 64 X2 , SPARC UltraSPARC T1 , IBM POWER4 и POWER5 , а также несколько процессоров для видеоигр, таких как трехядерный PowerPC-дизайн Xbox 360 , и 7-ядерный микропроцессор CellStation PlayStation 3.

Параллелизм данных

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

Большинство ранних векторных процессоров, таких как Cray-1 , были связаны почти исключительно с научными исследованиями и криптографическими приложениями. Однако, поскольку мультимедиа в значительной степени переместилась на цифровые носители, необходимость в некоторой форме SIMD в процессорах общего назначения стала значительной. Вскоре после включения блоков с плавающей точкой стали становиться обычным явлением в процессорах общего назначения, спецификации и реализации блоков реализации SIMD также стали появляться для процессоров общего назначения. Некоторые из этих ранних SIMD-спецификаций, таких как HP Multimedia Acceleration eXtensions (MAX) и MMX от Intel, были целыми. Это оказалось существенным препятствием для некоторых разработчиков программного обеспечения, поскольку многие приложения, которые пользуются SIMD, в основном касаются чисел с плавающей запятой . Постепенно разработчики уточнили и переделали эти ранние проекты в некоторые из распространенных современных спецификаций SIMD, которые обычно связаны с одной ISA. Некоторые известные современные примеры включают SSE от Intel и связанные с PowerPC AltiVec (также известные как VMX).

Виртуальные процессоры

Облачные вычисления могут включать разделение операций ЦП на виртуальные центральные процессоры ( vCPU s).

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

Производительность

Производительности или скорость процессора зависит, среди многих других факторов, частота ( как правило , даны в упаковке герц ) и инструкцию за такт (IPC), которые в совокупности являются факторами для команд в секунду (IPS) , что Процессор может выполнять. Многие зарегистрированные значения IPS представляли «пиковые» показатели выполнения на искусственных последовательностях команд с несколькими ветвями, тогда как реалистичные рабочие нагрузки состоят из сочетания инструкций и приложений, некоторые из которых занимают больше времени, чем другие. Производительность иерархии памяти также сильно влияет на производительность процессора, что едва ли учитывается в расчетах MIPS. Из-за этих проблем были разработаны различные стандартизированные тесты, которые часто называются « эталонами » для этой цели, такие как SPECint , для измерения реальной эффективной производительности в широко используемых приложениях.

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

Из-за специфических возможностей современных процессоров, таких как гиперпоточность и прерывание , которые связаны с совместным использованием фактических ресурсов ЦП с целью увеличения использования, контроль уровня производительности и аппаратного обеспечения постепенно стал более сложной задачей. В ответ некоторые процессоры реализуют дополнительную аппаратную логику, которая контролирует фактическое использование различных частей ЦП и предоставляет различные счетчики, доступные для программного обеспечения; примером является технология Intel Counter Counter Monitor.