Центральный процессор ( ЦП ), также называемый центральным процессором , главным процессором или просто процессором , является самым важным процессором в данном компьютере . [1] [2] Его электронные схемы выполняют инструкции компьютерной программы , такие как арифметические , логические, управляющие и операции ввода-вывода (I/O). [3] [4] [5] Эта роль контрастирует с ролью внешних компонентов, таких как основная память и схемы ввода-вывода, [6] и специализированных сопроцессоров , таких как графические процессоры (GPU).
Форма, конструкция и реализация ЦП со временем изменились, но их фундаментальная работа осталась практически неизменной. [7] Основные компоненты ЦП включают арифметико-логическое устройство (АЛУ), которое выполняет арифметические и логические операции , регистры процессора , которые подают операнды в АЛУ и хранят результаты операций АЛУ, и блок управления , который организует выборку (из памяти), декодирование и выполнение (инструкций), направляя скоординированные операции АЛУ, регистров и других компонентов. Современные ЦП отводят много полупроводниковой области для кэшей и параллелизма на уровне инструкций для повышения производительности и для режимов ЦП для поддержки операционных систем и виртуализации .
Большинство современных ЦП реализованы на основе микропроцессоров с интегральными схемами (ИС) , с одним или несколькими ЦП на одном кристалле ИС. Микропроцессорные чипы с несколькими ЦП называются многоядерными процессорами . [8] Отдельные физические ЦП, называемые ядрами процессора , также могут быть многопоточными для поддержки многопоточности на уровне ЦП. [9]
Микросхема, содержащая ЦП, может также содержать память , периферийные интерфейсы и другие компоненты компьютера; [10] такие интегрированные устройства по-разному называются микроконтроллерами или системами на кристалле (SoC).
Ранние компьютеры, такие как ENIAC, приходилось физически перемонтировать для выполнения различных задач, из-за чего эти машины стали называть «компьютерами с фиксированной программой». [11] Термин «центральный процессор» используется с 1955 года. [12] [13] Поскольку термин «ЦП» обычно определяется как устройство для выполнения программного обеспечения (компьютерной программы), самые ранние устройства, которые можно было бы по праву назвать ЦП, появились с появлением компьютера с хранимой программой .
Идея компьютера с хранимой программой уже присутствовала в проекте ENIAC Дж. Преспера Экерта и Джона Уильяма Мочли , но изначально была опущена, чтобы ENIAC можно было закончить раньше. [14] 30 июня 1945 года, до того, как был создан ENIAC, математик Джон фон Нейман распространил статью под названием « Первый черновик отчета об EDVAC» . Это был набросок компьютера с хранимой программой, который в конечном итоге был завершен в августе 1949 года. [15] EDVAC был разработан для выполнения определенного количества инструкций (или операций) различных типов. Примечательно, что программы, написанные для EDVAC, должны были храниться в высокоскоростной памяти компьютера, а не определяться физической разводкой компьютера. [16] Это преодолело серьезное ограничение ENIAC, которое заключалось в значительном времени и усилиях, необходимых для перенастройки компьютера для выполнения новой задачи. [17] С проектом фон Неймана программа, которую запускал EDVAC, могла быть изменена просто путем изменения содержимого памяти. EDVAC не был первым компьютером с хранимой программой; Manchester Baby , который был небольшим экспериментальным компьютером с хранимой программой, запустил свою первую программу 21 июня 1948 года [18] , а Manchester Mark 1 запустил свою первую программу в ночь с 16 на 17 июня 1949 года. [19]
Ранние ЦП были индивидуальными разработками, используемыми как часть более крупного и иногда отличительного компьютера. [20] Однако этот метод проектирования индивидуальных ЦП для конкретного применения в значительной степени уступил место разработке многоцелевых процессоров, производимых в больших количествах. Эта стандартизация началась в эпоху дискретных транзисторных мэйнфреймов и мини-компьютеров и быстро ускорилась с популяризацией интегральных схем (ИС). ИС позволила проектировать и производить все более сложные ЦП с допусками порядка нанометров . [21] Как миниатюризация, так и стандартизация ЦП увеличили присутствие цифровых устройств в современной жизни далеко за пределы ограниченного применения специализированных вычислительных машин. Современные микропроцессоры появляются в электронных устройствах, начиная от автомобилей [22] и заканчивая мобильными телефонами [23] , а иногда даже в игрушках. [24] [25]
Хотя фон Нейману чаще всего приписывают разработку компьютера с хранимой программой из-за его разработки EDVAC, а сама разработка стала известна как архитектура фон Неймана , другие до него, такие как Конрад Цузе , предлагали и реализовывали похожие идеи. [26] Так называемая гарвардская архитектура Harvard Mark I , которая была завершена до EDVAC, [27] [28] также использовала конструкцию с хранимой программой, используя перфоленту, а не электронную память. [29] Ключевое различие между архитектурами фон Неймана и Гарварда заключается в том, что последняя разделяет хранение и обработку инструкций и данных ЦП, в то время как первая использует одно и то же пространство памяти для обоих. [30] Большинство современных ЦП в первую очередь имеют конструкцию фон Неймана, но встречаются и ЦП с архитектурой Гарварда, особенно во встраиваемых приложениях; например, микроконтроллеры Atmel AVR являются процессорами с архитектурой Гарварда. [31]
Реле и электронные лампы (термоэлектронные лампы) обычно использовались в качестве коммутационных элементов; [32] [33] полезный компьютер требует тысячи или десятки тысяч коммутационных устройств. Общая скорость системы зависит от скорости переключателей. Электронные лампы, такие как EDVAC, имели тенденцию в среднем восемь часов между отказами, тогда как релейные компьютеры, такие как более медленный, но более ранний Harvard Mark I, выходили из строя очень редко. [13] В конце концов, ламповые процессоры стали доминирующими, поскольку значительные преимущества в скорости, которые они обеспечивали, как правило, перевешивали проблемы надежности. Большинство этих ранних синхронных процессоров работали на низких тактовых частотах по сравнению с современными микроэлектронными конструкциями. Частоты тактовых сигналов в диапазоне от 100 кГц до 4 МГц были очень распространены в то время, что в значительной степени ограничивалось скоростью коммутационных устройств, с которыми они были построены. [34]
Сложность конструкции ЦП возросла, поскольку различные технологии способствовали созданию более мелких и надежных электронных устройств. Первое такое усовершенствование произошло с появлением транзистора . Транзисторные ЦП в 1950-х и 1960-х годах больше не должны были строиться из громоздких, ненадежных и хрупких коммутационных элементов, таких как электронные лампы и реле . [35] Благодаря этому усовершенствованию более сложные и надежные ЦП были построены на одной или нескольких печатных платах, содержащих дискретные (отдельные) компоненты.
В 1964 году IBM представила свою архитектуру компьютера IBM System/360 , которая использовалась в серии компьютеров, способных выполнять одни и те же программы с разной скоростью и производительностью. [36] Это было важно в то время, когда большинство электронных компьютеров были несовместимы друг с другом, даже те, которые были произведены одним и тем же производителем. Чтобы облегчить это улучшение, IBM использовала концепцию микропрограммы ( часто называемой «микрокодом»), которая до сих пор широко используется в современных процессорах. [37] Архитектура System/360 была настолько популярна, что она доминировала на рынке мэйнфреймов в течение десятилетий и оставила наследие, которое продолжают аналогичные современные компьютеры, такие как IBM zSeries . [38] [39] В 1965 году Digital Equipment Corporation (DEC) представила еще один влиятельный компьютер, нацеленный на научные и исследовательские рынки — PDP-8 . [40]
Транзисторные компьютеры имели несколько явных преимуществ по сравнению со своими предшественниками. Помимо повышения надежности и снижения энергопотребления, транзисторы также позволяли процессорам работать на гораздо более высоких скоростях из-за короткого времени переключения транзистора по сравнению с лампой или реле. [41] Повышенная надежность и значительно возросшая скорость коммутационных элементов, которые к тому времени были почти исключительно транзисторами; тактовые частоты процессоров в десятки мегагерц были легко получены в этот период. [42] Кроме того, в то время как дискретные транзисторные и IC процессоры были в интенсивном использовании, начали появляться новые высокопроизводительные конструкции, такие как векторные процессоры с одной инструкцией и несколькими данными (SIMD) . [43] Эти ранние экспериментальные конструкции позже дали начало эре специализированных суперкомпьютеров, таких как те, что были созданы Cray Inc и Fujitsu Ltd. [ 43]
В этот период был разработан метод производства множества взаимосвязанных транзисторов в компактном пространстве. Интегральная схема (ИС) позволила производить большое количество транзисторов на одном кристалле на основе полупроводника , или «чипе». Сначала только очень простые неспециализированные цифровые схемы, такие как вентили NOR, были миниатюризированы в ИС. [44] Процессоры, основанные на этих «строительных блоках» ИС, обычно называются устройствами «малой интеграции» (SSI). ИС SSI, такие как те, что использовались в управляющем компьютере Apollo , обычно содержали до нескольких десятков транзисторов. Для создания целого ЦП из ИС SSI требовались тысячи отдельных чипов, но они все равно потребляли гораздо меньше места и энергии, чем более ранние конструкции дискретных транзисторов. [45]
System/370 от IBM , преемник System/360, использовал микросхемы SSI вместо дискретных транзисторных модулей Solid Logic Technology . [46] [47] PDP-8 /I и KI10 PDP-10 от DEC также перешли с отдельных транзисторов, используемых в PDP-8 и PDP-10, на микросхемы SSI, [48] а их чрезвычайно популярная линейка PDP-11 изначально была построена с использованием микросхем SSI, но в конечном итоге была реализована с использованием компонентов LSI, как только они стали практичными.
Ли Бойсел опубликовал влиятельные статьи, включая «манифест» 1967 года, в котором описывалось, как построить эквивалент 32-битного мэйнфреймового компьютера из относительно небольшого числа больших интегральных схем (БИС). [49] [50] Единственным способом создания микросхем БИС, которые представляют собой микросхемы с сотней или более вентилей, было их создание с использованием процесса производства полупроводников металл-оксид-полупроводник (МОП) (либо логика PMOS , логика NMOS , либо логика CMOS ). Однако некоторые компании продолжали создавать процессоры из микросхем биполярной транзисторно -транзисторной логики (ТТЛ), поскольку биполярные переходные транзисторы были быстрее, чем микросхемы МОП, вплоть до 1970-х годов (несколько компаний, таких как Datapoint, продолжали создавать процессоры из микросхем ТТЛ до начала 1980-х годов). [50] В 1960-х годах МОП-микросхемы были медленнее и изначально считались полезными только в приложениях, требующих малой мощности. [51] [52] После разработки технологии МОП с кремниевым затвором Федерико Фаггином в Fairchild Semiconductor в 1968 году, МОП-ИС в значительной степени заменили биполярные ТТЛ в качестве стандартной технологии чипов в начале 1970-х годов. [53]
По мере развития микроэлектронной технологии все большее число транзисторов размещалось на ИС, что уменьшало количество отдельных ИС, необходимых для полного ЦП. ИС MSI и LSI увеличили количество транзисторов до сотен, а затем и до тысяч. К 1968 году количество ИС, необходимых для построения полного ЦП, было сокращено до 24 ИС восьми различных типов, причем каждая ИС содержала примерно 1000 МОП-транзисторов. [54] В резком контрасте со своими предшественниками SSI и MSI, первая реализация LSI PDP-11 содержала ЦП, состоящий всего из четырех интегральных схем LSI. [55]
С тех пор как микропроцессоры были впервые представлены, они почти полностью обогнали все другие методы реализации центральных процессоров. Первым коммерчески доступным микропроцессором, выпущенным в 1971 году, был Intel 4004 , а первым широко используемым микропроцессором, выпущенным в 1974 году, был Intel 8080. Производители мэйнфреймов и мини-компьютеров того времени запустили собственные программы разработки ИС для обновления своих старых компьютерных архитектур и в конечном итоге выпустили совместимые по набору инструкций микропроцессоры, которые были обратно совместимы с их старым оборудованием и программным обеспечением. В сочетании с появлением и окончательным успехом повсеместного персонального компьютера , термин ЦП теперь применяется почти исключительно [a] к микропроцессорам. Несколько ЦП (обозначаемых ядрами ) могут быть объединены в одну микросхему обработки. [56]
Предыдущие поколения ЦП были реализованы в виде дискретных компонентов и многочисленных небольших интегральных схем (ИС) на одной или нескольких платах. [57] Микропроцессоры, с другой стороны, являются ЦП, изготовленными на очень небольшом количестве ИС; обычно только на одной. [58] Общий меньший размер ЦП, в результате реализации на одном кристалле, означает более быстрое время переключения из-за физических факторов, таких как уменьшение паразитной емкости затвора . [59] [60] Это позволило синхронным микропроцессорам иметь тактовую частоту от десятков мегагерц до нескольких гигагерц. Кроме того, возможность создания чрезвычайно малых транзисторов на ИС увеличила сложность и количество транзисторов в одном ЦП во много раз. Эта широко наблюдаемая тенденция описывается законом Мура , который оказался довольно точным предсказателем роста сложности ЦП (и других ИС) до 2016 года. [61] [62]
Хотя сложность, размер, конструкция и общая форма ЦП сильно изменились с 1950 года, [63] базовая конструкция и функции практически не изменились. Почти все распространенные сегодня ЦП можно очень точно описать как машины фон Неймана с хранимой программой. [64] [b] Поскольку закон Мура больше не действует, возникли опасения относительно ограничений технологии транзисторов интегральных схем. Чрезвычайная миниатюризация электронных вентилей приводит к тому, что эффекты таких явлений, как электромиграция и подпороговая утечка, становятся гораздо более значительными. [66] [67] Эти новые опасения являются одними из многих факторов, заставляющих исследователей исследовать новые методы вычислений, такие как квантовый компьютер , а также расширять использование параллелизма и других методов, которые увеличивают полезность классической модели фон Неймана.
Основная операция большинства ЦП, независимо от физической формы, которую они принимают, заключается в выполнении последовательности сохраненных инструкций , которая называется программой. Инструкции, которые должны быть выполнены, хранятся в некоем виде памяти компьютера . Почти все ЦП следуют этапам выборки, декодирования и выполнения в своей работе, которые в совокупности известны как цикл инструкций .
После выполнения инструкции весь процесс повторяется, при этом следующий цикл инструкций обычно извлекает следующую по порядку инструкцию из-за увеличенного значения в счетчике программ . Если была выполнена инструкция перехода, счетчик программ будет изменен, чтобы содержать адрес инструкции, на которую был выполнен переход, и выполнение программы продолжится в обычном режиме. В более сложных ЦП несколько инструкций могут быть извлечены, декодированы и выполнены одновременно. В этом разделе описывается то, что обычно называют « классическим конвейером RISC », который довольно распространен среди простых ЦП, используемых во многих электронных устройствах (часто называемых микроконтроллерами). Он в значительной степени игнорирует важную роль кэша ЦП и, следовательно, стадию доступа конвейера.
Некоторые инструкции манипулируют счетчиком программ, а не производят данные результата напрямую; такие инструкции обычно называются «переходами» и облегчают поведение программы, например циклы , условное выполнение программы (с помощью условного перехода) и существование функций . [c] В некоторых процессорах некоторые другие инструкции изменяют состояние битов в регистре «флагов» . Эти флаги могут использоваться для влияния на поведение программы, поскольку они часто указывают на результат различных операций. Например, в таких процессорах инструкция «сравнить» оценивает два значения и устанавливает или очищает биты в регистре флагов, чтобы указать, какое из них больше или равны ли они; один из этих флагов затем может использоваться последующей инструкцией перехода для определения потока программы.
Извлечение включает в себя извлечение инструкции (представленной числом или последовательностью чисел) из памяти программ. Местоположение инструкции (адрес) в памяти программ определяется счетчиком программ (PC; в микропроцессорах Intel x86 называется «указателем инструкций» ), который хранит число, идентифицирующее адрес следующей инструкции для извлечения. После извлечения инструкции PC увеличивается на длину инструкции, чтобы он содержал адрес следующей инструкции в последовательности. [d] Часто извлекаемая инструкция должна быть извлечена из относительно медленной памяти, что приводит к остановке ЦП в ожидании возврата инструкции. Эта проблема в значительной степени решается в современных процессорах с помощью кэшей и конвейерных архитектур (см. ниже).
Инструкция, которую ЦП извлекает из памяти, определяет, что будет делать ЦП. На этапе декодирования, выполняемом двоичной схемой декодера, известной как декодер инструкций , инструкция преобразуется в сигналы, которые управляют другими частями ЦП.
Способ интерпретации инструкции определяется архитектурой набора инструкций ЦП (ISA). [e] Часто одна группа битов (то есть «поле») в инструкции, называемая кодом операции, указывает, какая операция должна быть выполнена, в то время как остальные поля обычно предоставляют дополнительную информацию, необходимую для операции, такую как операнды. Эти операнды могут быть указаны как постоянное значение (называемое непосредственным значением) или как местоположение значения, которое может быть регистром процессора или адресом памяти, как определено некоторым режимом адресации .
В некоторых конструкциях ЦП декодер инструкций реализован как жестко зашитая, неизменяемая двоичная схема декодера. В других микропрограмма используется для перевода инструкций в наборы сигналов конфигурации ЦП, которые применяются последовательно в течение нескольких тактовых импульсов. В некоторых случаях память, в которой хранится микропрограмма, перезаписываема, что позволяет изменять способ, которым ЦП декодирует инструкции.
После шагов выборки и декодирования выполняется шаг выполнения. В зависимости от архитектуры ЦП, это может состоять из одного действия или последовательности действий. Во время каждого действия управляющие сигналы электрически включают или выключают различные части ЦП, чтобы они могли выполнить всю или часть желаемой операции. Затем действие завершается, как правило, в ответ на тактовый импульс. Очень часто результаты записываются во внутренний регистр ЦП для быстрого доступа последующими инструкциями. В других случаях результаты могут быть записаны в более медленную, но менее дорогую и более емкую основную память .
Например, если должна быть выполнена инструкция, которая выполняет сложение, активируются регистры, содержащие операнды (числа, которые нужно суммировать), как и части арифметико-логического устройства (АЛУ), которые выполняют сложение. Когда возникает тактовый импульс, операнды перетекают из исходных регистров в АЛУ, и сумма появляется на его выходе. При последующих тактовых импульсах включаются (и отключаются) другие компоненты, чтобы переместить выход (сумму операции) в хранилище (например, регистр или память). Если полученная сумма слишком велика (т. е. она больше размера выходного слова АЛУ), будет установлен флаг арифметического переполнения, влияющий на следующую операцию.
В схему ЦП встроен набор базовых операций, которые он может выполнять, называемый набором инструкций . Такие операции могут включать, например, сложение или вычитание двух чисел, сравнение двух чисел или переход к другой части программы. Каждая инструкция представлена уникальной комбинацией битов , известной как код операции машинного языка . При обработке инструкции ЦП декодирует код операции (с помощью двоичного декодера ) в сигналы управления, которые организуют поведение ЦП. Полная инструкция машинного языка состоит из кода операции и, во многих случаях, дополнительных битов, которые определяют аргументы для операции (например, числа, которые необходимо суммировать в случае операции сложения). Поднимаясь по шкале сложности, программа машинного языка представляет собой набор инструкций машинного языка, которые выполняет ЦП.
Фактическая математическая операция для каждой инструкции выполняется комбинационной логической схемой в процессоре ЦП, известной как арифметико-логическое устройство или АЛУ. В общем, ЦП выполняет инструкцию, извлекая ее из памяти, используя свое АЛУ для выполнения операции, а затем сохраняя результат в памяти. Помимо инструкций для целочисленной математики и логических операций, существуют различные другие машинные инструкции, такие как инструкции для загрузки данных из памяти и их обратного сохранения, операции ветвления и математические операции над числами с плавающей точкой, выполняемые блоком плавающей точки (FPU) ЦП. [68]
Блок управления (БУ) — это компонент ЦП, который управляет работой процессора. Он сообщает памяти, арифметико-логическому блоку и устройствам ввода и вывода компьютера, как реагировать на инструкции, отправленные процессору.
Он управляет работой других блоков, предоставляя сигналы синхронизации и управления. Большинство ресурсов компьютера управляются CU. Он управляет потоком данных между CPU и другими устройствами. Джон фон Нейман включил блок управления в архитектуру фон Неймана . В современных компьютерных конструкциях блок управления обычно является внутренней частью CPU, его общая роль и работа не изменились с момента его появления. [69]
Арифметико-логическое устройство (АЛУ) — это цифровая схема внутри процессора, которая выполняет целочисленные арифметические и побитовые логические операции. Входами АЛУ являются слова данных, над которыми нужно работать (называемые операндами ), информация о состоянии предыдущих операций и код от блока управления, указывающий, какую операцию следует выполнить. В зависимости от выполняемой инструкции операнды могут поступать из внутренних регистров ЦП , внешней памяти или констант, генерируемых самим АЛУ.
Когда все входные сигналы устоялись и прошли через схему АЛУ, результат выполненной операции появляется на выходах АЛУ. Результат состоит как из слова данных, которое может храниться в регистре или памяти, так и из информации о состоянии, которая обычно хранится в специальном внутреннем регистре ЦП, зарезервированном для этой цели.
Современные процессоры обычно содержат более одного АЛУ для повышения производительности.
Блок генерации адресов (AGU), иногда также называемый блоком вычисления адресов (ACU), [70] является исполнительным блоком внутри ЦП, который вычисляет адреса, используемые ЦП для доступа к основной памяти . Благодаря обработке адресных вычислений отдельной схемой, работающей параллельно с остальной частью ЦП, можно сократить количество циклов ЦП, необходимых для выполнения различных машинных инструкций , что приводит к повышению производительности.
При выполнении различных операций ЦП необходимо вычислять адреса памяти, необходимые для извлечения данных из памяти; например, позиции элементов массива в памяти должны быть рассчитаны до того, как ЦП сможет извлечь данные из фактических ячеек памяти. Эти вычисления генерации адресов включают различные целочисленные арифметические операции , такие как сложение, вычитание, операции по модулю или сдвиги битов . Часто вычисление адреса памяти включает в себя более одной машинной инструкции общего назначения, которые не обязательно быстро декодируются и выполняются . Включая AGU в конструкцию ЦП, вместе с введением специализированных инструкций, которые используют AGU, различные вычисления генерации адресов могут быть выгружены из остальной части ЦП и часто могут быть выполнены быстро за один цикл ЦП.
Возможности AGU зависят от конкретного ЦП и его архитектуры . Таким образом, некоторые AGU реализуют и предоставляют больше операций вычисления адресов, в то время как некоторые также включают более продвинутые специализированные инструкции, которые могут работать с несколькими операндами одновременно. Некоторые архитектуры ЦП включают несколько AGU, поэтому одновременно может выполняться более одной операции вычисления адресов, что обеспечивает дальнейшее повышение производительности из-за суперскалярной природы современных конструкций ЦП. Например, Intel включает несколько AGU в свои микроархитектуры Sandy Bridge и Haswell , которые увеличивают пропускную способность подсистемы памяти ЦП, позволяя выполнять несколько инструкций доступа к памяти параллельно.
Многие микропроцессоры (в смартфонах и настольных компьютерах, ноутбуках, серверах) имеют блок управления памятью, который преобразует логические адреса в физические адреса ОЗУ, обеспечивая защиту памяти и возможности страничного обмена , полезные для виртуальной памяти . Более простые процессоры, особенно микроконтроллеры , обычно не включают MMU.
Кэш ЦП [71] — это аппаратный кэш, используемый центральным процессором (ЦП) компьютера для снижения средней стоимости (времени или энергии) доступа к данным из основной памяти . Кэш — это меньшая, более быстрая память, расположенная ближе к ядру процессора , которая хранит копии данных из часто используемых ячеек основной памяти . Большинство ЦП имеют различные независимые кэши, включая кэши инструкций и данных , где кэш данных обычно организован в виде иерархии большего количества уровней кэша (L1, L2, L3, L4 и т. д.).
Все современные (быстрые) ЦП (за несколькими специализированными исключениями [f] ) имеют несколько уровней кэшей ЦП. Первые ЦП, которые использовали кэш, имели только один уровень кэша; в отличие от более поздних кэшей уровня 1, он не был разделен на L1d (для данных) и L1i (для инструкций). Почти все современные ЦП с кэшами имеют разделенный кэш L1. Они также имеют кэши L2, а для более крупных процессоров — также кэши L3. Кэш L2 обычно не разделен и действует как общее хранилище для уже разделенного кэша L1. Каждое ядро многоядерного процессора имеет выделенный кэш L2 и обычно не используется совместно ядрами. Кэш L3 и кэши более высокого уровня используются совместно ядрами и не разделены. Кэш L4 в настоящее время встречается редко и, как правило, находится в динамической памяти с произвольным доступом (DRAM), а не в статической памяти с произвольным доступом (SRAM), на отдельном кристалле или чипе. Это также имело место исторически с L1, в то время как более крупные чипы позволили интегрировать его и, как правило, все уровни кэша, за исключением, возможно, последнего уровня. Каждый дополнительный уровень кэша, как правило, больше и оптимизируется по-разному.
Существуют и другие типы кэшей (которые не учитываются в «размере кэша» наиболее важных кэшей, упомянутых выше), например, буфер трансляции (TLB), являющийся частью блока управления памятью (MMU), имеющегося в большинстве процессоров.
Кэши обычно имеют размер, кратный степеням двойки: 2, 8, 16 и т. д. Размеры КБ или МиБ (для больших не-L1), хотя IBM z13 имеет 96 КБ кэша инструкций L1. [72]
Большинство ЦП являются синхронными схемами , что означает, что они используют тактовый сигнал для задания темпа своих последовательных операций. Тактовый сигнал вырабатывается внешней схемой осциллятора , которая генерирует постоянное количество импульсов каждую секунду в форме периодической прямоугольной волны . Частота тактовых импульсов определяет скорость, с которой ЦП выполняет инструкции, и, следовательно, чем быстрее тактовый сигнал, тем больше инструкций ЦП будет выполнять каждую секунду.
Для обеспечения правильной работы ЦП период тактовой частоты больше максимального времени, необходимого для распространения (перемещения) всех сигналов через ЦП. При установке периода тактовой частоты на значение, значительно превышающее наихудшую задержку распространения , можно спроектировать весь ЦП и способ, которым он перемещает данные по «краям» нарастающего и падающего тактового сигнала. Это имеет преимущество значительного упрощения ЦП, как с точки зрения проектирования, так и с точки зрения количества компонентов. Однако это также несет в себе недостаток, заключающийся в том, что весь ЦП должен ждать своих самых медленных элементов, хотя некоторые его части намного быстрее. Это ограничение в значительной степени компенсируется различными методами увеличения параллелизма ЦП (см. ниже).
Однако архитектурные усовершенствования сами по себе не решают всех недостатков глобально синхронных ЦП. Например, тактовый сигнал подвержен задержкам любого другого электрического сигнала. Более высокие тактовые частоты во все более сложных ЦП затрудняют поддержание тактового сигнала в фазе (синхронизацию) по всему блоку. Это привело к тому, что многим современным ЦП требуется предоставление нескольких идентичных тактовых сигналов, чтобы избежать задержки одного сигнала, достаточно значительной, чтобы вызвать сбой ЦП. Еще одной важной проблемой, поскольку тактовые частоты резко увеличиваются, является количество тепла, рассеиваемого ЦП . Постоянно меняющиеся тактовые частоты заставляют многие компоненты переключаться независимо от того, используются ли они в это время. В целом, переключающийся компонент потребляет больше энергии, чем элемент в статическом состоянии. Следовательно, с увеличением тактовой частоты увеличивается и потребление энергии, в результате чего ЦП требуется больше рассеивания тепла в виде решений по охлаждению ЦП .
Один из методов работы с переключением ненужных компонентов называется стробированием тактовых импульсов , которое включает отключение тактового сигнала для ненужных компонентов (фактически отключая их). Однако это часто считается сложным для реализации и поэтому не находит широкого применения за пределами очень маломощных конструкций. Одной из примечательных недавних разработок ЦП, которая использует обширное стробирование тактовых импульсов, является Xenon на базе IBM PowerPC, используемый в Xbox 360 ; это снижает требования к питанию Xbox 360. [73]
Другим методом решения некоторых проблем с глобальным тактовым сигналом является полное удаление тактового сигнала. Хотя удаление глобального тактового сигнала значительно усложняет процесс проектирования во многих отношениях, асинхронные (или безтактовые) конструкции имеют заметные преимущества в энергопотреблении и рассеивании тепла по сравнению с аналогичными синхронными конструкциями. Хотя это и необычно, целые асинхронные ЦП были построены без использования глобального тактового сигнала. Двумя яркими примерами этого являются совместимый с ARM AMULET и совместимый с MIPS R3000 MiniMIPS. [74]
Вместо того, чтобы полностью удалить тактовый сигнал, некоторые конструкции ЦП позволяют определенным частям устройства быть асинхронными, например, используя асинхронные АЛУ в сочетании с суперскалярной конвейеризацией для достижения некоторого прироста арифметической производительности. Хотя не совсем ясно, могут ли полностью асинхронные конструкции работать на сопоставимом или лучшем уровне, чем их синхронные аналоги, очевидно, что они, по крайней мере, преуспевают в более простых математических операциях. Это, в сочетании с их превосходными свойствами энергопотребления и рассеивания тепла, делает их очень подходящими для встраиваемых компьютеров . [75]
Многие современные процессоры имеют встроенный модуль управления питанием, который регулирует подачу напряжения на схемы процессора по требованию, что позволяет поддерживать баланс между производительностью и энергопотреблением.
Каждый ЦП представляет числовые значения определенным образом. Например, некоторые ранние цифровые компьютеры представляли числа как знакомые значения десятичной (основание 10) системы счисления , а другие использовали более необычные представления, такие как троичные (основание три). Почти все современные ЦП представляют числа в двоичной форме, причем каждая цифра представлена некоторой двузначной физической величиной, такой как «высокое» или «низкое» напряжение . [g]
С числовым представлением связаны размер и точность целых чисел, которые может представлять ЦП. В случае двоичного ЦП это измеряется числом бит (значащих цифр двоично-кодированного целого числа), которые ЦП может обработать за одну операцию, что обычно называется размером слова , разрядностью , шириной пути данных , точностью целого числа или размером целого числа . Размер целого числа ЦП определяет диапазон целочисленных значений, с которыми он может напрямую работать. [h] Например, 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-битные значения с плавающей точкой для обеспечения большей точности и диапазона чисел с плавающей точкой. [37] System/360 Model 65 имел 8-битный сумматор для десятичной и двоичной арифметики с фиксированной точкой и 60-битный сумматор для арифметики с плавающей точкой. [76] Многие более поздние конструкции ЦП используют похожую смешанную ширину бит, особенно когда процессор предназначен для общего назначения, где требуется разумный баланс возможностей целочисленных и плавающих точек.
Описание базовой работы ЦП, предложенное в предыдущем разделе, описывает простейшую форму, которую может принять ЦП. Этот тип ЦП, обычно называемый субскалярным , работает и выполняет одну инструкцию на одном или двух фрагментах данных за раз, что составляет менее одной инструкции за такт ( IPC < 1 ).
Этот процесс приводит к присущей субскалярным ЦП неэффективности. Поскольку за раз выполняется только одна инструкция, весь ЦП должен ждать завершения этой инструкции, прежде чем переходить к следующей инструкции. В результате субскалярный ЦП «зависает» на инструкциях, выполнение которых занимает более одного такта. Даже добавление второго исполнительного блока (см. ниже) не сильно повышает производительность; вместо того, чтобы зависать один путь, теперь зависают два пути, и увеличивается количество неиспользуемых транзисторов. Такая конструкция, в которой ресурсы выполнения ЦП могут работать только с одной инструкцией за раз, может достичь лишь скалярной производительности (одна инструкция за такт, IPC = 1 ). Однако производительность почти всегда субскалярная (менее одной инструкции за такт, IPC < 1 ).
Попытки достичь скалярности и лучшей производительности привели к появлению множества методологий проектирования, которые заставляют ЦП вести себя менее линейно и более параллельно. Когда речь идет о параллелизме в ЦП, для классификации этих методов проектирования обычно используются два термина:
Каждая методология отличается как способами реализации, так и относительной эффективностью, которую они обеспечивают в повышении производительности ЦП для приложения. [i]
Один из самых простых методов повышения параллелизма — начать первые шаги извлечения и декодирования инструкций до того, как предыдущая инструкция завершит выполнение. Это метод, известный как конвейеризация инструкций , и используется почти во всех современных универсальных процессорах. Конвейеризация позволяет выполнять несколько инструкций одновременно, разбивая путь выполнения на отдельные этапы. Это разделение можно сравнить со сборочной линией, на которой инструкция становится более полной на каждом этапе, пока она не выйдет из конвейера выполнения и не будет удалена.
Однако конвейеризация вводит возможность ситуации, когда результат предыдущей операции необходим для завершения следующей операции; состояние, часто называемое конфликтом зависимости данных. Поэтому конвейерные процессоры должны проверять такие условия и задерживать часть конвейера, если это необходимо. Конвейерный процессор может стать почти скалярным, сдерживаемым только задержками конвейера (инструкция, тратящая более одного такта на этапе).
Улучшения в конвейеризации инструкций привели к дальнейшему сокращению времени простоя компонентов ЦП. Конструкции, которые называются суперскалярными, включают длинный конвейер инструкций и несколько идентичных исполнительных блоков , таких как блоки загрузки-сохранения , арифметико-логические блоки , блоки с плавающей точкой и блоки генерации адресов . [77] В суперскалярном конвейере инструкции считываются и передаются диспетчеру, который решает, могут ли инструкции выполняться параллельно (одновременно). Если да, они отправляются в исполнительные блоки, что приводит к их одновременному выполнению. В общем, количество инструкций, которые суперскалярный ЦП выполнит за цикл, зависит от количества инструкций, которые он может одновременно отправить в исполнительные блоки.
Большая часть трудностей в проектировании архитектуры суперскалярного ЦП заключается в создании эффективного диспетчера. Диспетчер должен иметь возможность быстро определять, могут ли инструкции выполняться параллельно, а также распределять их таким образом, чтобы занять как можно большее количество исполнительных устройств. Для этого требуется, чтобы конвейер инструкций заполнялся как можно чаще, и требуются значительные объемы кэша ЦП . Это также делает методы избегания опасностей , такие как предсказание ветвлений , спекулятивное выполнение , переименование регистров , нестандартное выполнение и транзакционная память, критически важными для поддержания высокого уровня производительности. Пытаясь предсказать, какую ветвь (или путь) примет условная инструкция, ЦП может минимизировать количество раз, которое весь конвейер должен ждать, пока условная инструкция не будет завершена. Спекулятивное выполнение часто обеспечивает скромное повышение производительности за счет выполнения частей кода, которые могут не понадобиться после завершения условной операции. Нестандартное выполнение несколько изменяет порядок выполнения инструкций, чтобы сократить задержки из-за зависимостей данных. Также в случае одного потока инструкций и нескольких потоков данных , когда необходимо обработать много данных одного типа, современные процессоры могут отключать части конвейера, так что при многократном выполнении одной инструкции ЦП пропускает фазы выборки и декодирования, что значительно повышает производительность в определенных случаях, особенно в очень монотонных программных движках, таких как программное обеспечение для создания видео и обработки фотографий.
Когда часть ЦП является суперскалярной, та часть, которая не является таковой, страдает от снижения производительности из-за простоев планирования. Intel P5 Pentium имел два суперскалярных ALU, которые могли принимать по одной инструкции за такт каждый, но его FPU не мог. Таким образом, P5 был целочисленным суперскаляром, но не суперскаляром с плавающей точкой. Преемник архитектуры P5 от Intel, P6 , добавил суперскалярные возможности к своим функциям с плавающей точкой.
Простая конвейеризация и суперскалярная конструкция увеличивают ILP ЦП, позволяя ему выполнять инструкции со скоростью, превышающей одну инструкцию за такт. Большинство современных конструкций ЦП являются по крайней мере в некоторой степени суперскалярными, и почти все универсальные ЦП, разработанные в последнее десятилетие, являются суперскалярными. В более поздние годы часть акцента при проектировании компьютеров с высоким ILP была перемещена из аппаратного обеспечения ЦП в его программный интерфейс или архитектуру набора инструкций (ISA). Стратегия очень длинного командного слова (VLIW) приводит к тому, что часть ILP становится подразумеваемой непосредственно программным обеспечением, что снижает работу ЦП по повышению ILP и тем самым снижает сложность конструкции.
Другая стратегия достижения производительности — параллельное выполнение нескольких потоков или процессов . Эта область исследований известна как параллельные вычисления . [78] В таксономии Флинна эта стратегия известна как множественный поток инструкций, множественный поток данных (MIMD). [79]
Одной из технологий, используемых для этой цели, является многопроцессорность (МП). [80] Первоначальный тип этой технологии известен как симметричная многопроцессорность (СМП), где небольшое количество ЦП совместно используют согласованное представление своей системы памяти. В этой схеме каждый ЦП имеет дополнительное оборудование для поддержания постоянно актуального представления памяти. Избегая устаревших представлений памяти, ЦП могут сотрудничать в одной и той же программе, а программы могут мигрировать с одного ЦП на другой. Чтобы увеличить количество взаимодействующих ЦП сверх нескольких, в 1990-х годах были введены такие схемы, как протоколы неравномерного доступа к памяти (NUMA) и когерентности на основе каталогов . Системы СМП ограничены небольшим количеством ЦП, в то время как системы NUMA были построены с тысячами процессоров. Первоначально многопроцессорность была построена с использованием нескольких дискретных ЦП и плат для реализации взаимосвязи между процессорами. Когда процессоры и их соединения реализованы на одном кристалле, такая технология называется многопроцессорной обработкой на уровне кристалла (CMP), а отдельный кристалл — многоядерным процессором .
Позднее было признано, что более мелкозернистый параллелизм существует с одной программой. Одна программа может иметь несколько потоков (или функций), которые могут выполняться отдельно или параллельно. Некоторые из самых ранних примеров этой технологии реализовали обработку ввода/вывода , такую как прямой доступ к памяти, как отдельный поток от потока вычислений. Более общий подход к этой технологии был представлен в 1970-х годах, когда системы были разработаны для параллельного запуска нескольких потоков вычислений. Эта технология известна как многопоточность (МП). Подход считается более экономически эффективным, чем многопроцессорность, поскольку только небольшое количество компонентов внутри ЦП реплицируется для поддержки МП, в отличие от всего ЦП в случае МП. В МП исполнительные блоки и система памяти, включая кэши, совместно используются несколькими потоками. Недостатком МП является то, что аппаратная поддержка многопоточности более заметна для программного обеспечения, чем у МП, и, таким образом, супервизорное программное обеспечение, такое как операционные системы, должно претерпевать более существенные изменения для поддержки МП. Один из типов MT, который был реализован, известен как временная многопоточность , где один поток выполняется до тех пор, пока он не остановится в ожидании возврата данных из внешней памяти. В этой схеме ЦП затем быстро переключается на другой поток, который готов к запуску, переключение часто выполняется за один такт ЦП, например, UltraSPARC T1 . Другой тип MT — одновременная многопоточность , где инструкции из нескольких потоков выполняются параллельно в течение одного тактового цикла ЦП.
В течение нескольких десятилетий с 1970-х до начала 2000-х годов основное внимание при проектировании высокопроизводительных универсальных процессоров уделялось достижению высокого ILP с помощью таких технологий, как конвейеризация, кэширование, суперскалярное выполнение, внеочередное выполнение и т. д. Эта тенденция достигла кульминации в больших, прожорливых процессорах, таких как 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-ядерный микропроцессор Cell PlayStation 3 .
Менее распространенная, но все более важная парадигма процессоров (и, конечно, вычислений в целом) имеет дело с параллелизмом данных. Все рассмотренные ранее процессоры называются некоторым типом скалярного устройства. [j] Как следует из названия, векторные процессоры имеют дело с несколькими фрагментами данных в контексте одной инструкции. Это контрастирует со скалярными процессорами, которые имеют дело с одним фрагментом данных для каждой инструкции. Используя таксономию Флинна , эти две схемы работы с данными обычно называются единым потоком инструкций , множественным потоком данных ( SIMD ) и единым потоком инструкций, единым потоком данных ( SISD ) соответственно. Большая полезность в создании процессоров, которые имеют дело с векторами данных, заключается в оптимизации задач, которые, как правило, требуют выполнения одной и той же операции (например, суммы или скалярного произведения ) над большим набором данных. Некоторые классические примеры этих типов задач включают мультимедийные приложения (изображения, видео и звук), а также многие типы научных и инженерных задач. В то время как скалярный процессор должен завершить весь процесс извлечения, декодирования и выполнения каждой инструкции и значения в наборе данных, векторный процессор может выполнить одну операцию над сравнительно большим набором данных с помощью одной инструкции. Это возможно только тогда, когда приложение имеет тенденцию требовать много шагов, которые применяют одну операцию к большому набору данных.
Большинство ранних векторных процессоров, таких как Cray-1 , были связаны почти исключительно с научными исследованиями и криптографическими приложениями. Однако, поскольку мультимедиа в значительной степени переместилось в цифровые носители, потребность в некоторой форме SIMD в процессорах общего назначения стала существенной. Вскоре после того, как включение блоков с плавающей точкой стало обычным явлением в процессорах общего назначения, спецификации и реализации блоков исполнения SIMD также начали появляться для процессоров общего назначения. [ когда? ] Некоторые из этих ранних спецификаций SIMD — например, Multimedia Acceleration eXtensions (MAX) от HP и MMX от Intel — были только целочисленными. Это оказалось существенным препятствием для некоторых разработчиков программного обеспечения, поскольку многие приложения, которые извлекают выгоду из SIMD, в первую очередь имеют дело с числами с плавающей точкой . Постепенно разработчики усовершенствовали и переделали эти ранние разработки в некоторые из распространенных современных спецификаций SIMD, которые обычно связаны с архитектурой одного набора инструкций (ISA). Некоторые известные современные примеры включают Streaming SIMD Extensions (SSE) компании Intel и связанный с PowerPC AltiVec (также известный как VMX). [k]
Многие современные архитектуры (включая встроенные) часто включают в себя счетчики производительности оборудования (HPC), которые позволяют осуществлять низкоуровневый (на уровне инструкций) сбор, тестирование , отладку или анализ метрик работающего программного обеспечения. [81] [82] HPC также может использоваться для обнаружения и анализа необычной или подозрительной активности программного обеспечения, такой как эксплойты возвратно-ориентированного программирования (ROP) или возвратно-ориентированного программирования (SROP) и т. д. [83] Обычно это делается группами по безопасности программного обеспечения для оценки и поиска вредоносных двоичных программ. [84]
Многие крупные поставщики (такие как IBM , Intel , AMD и Arm ) предоставляют программные интерфейсы (обычно написанные на C/C++), которые можно использовать для сбора данных из регистров ЦП с целью получения метрик. [85] Поставщики операционных систем также предоставляют программное обеспечение, такое как perf
(Linux), для записи, тестирования или отслеживания событий ЦП при запуске ядер и приложений.
Аппаратные счетчики предоставляют малозатратный метод сбора комплексных показателей производительности, связанных с основными элементами ЦП (функциональными блоками, кэшами, основной памятью и т. д.), что является существенным преимуществом по сравнению с программными профилировщиками. [86] Кроме того, они, как правило, устраняют необходимость в изменении базового исходного кода программы. [87] [88] Поскольку аппаратные конструкции различаются в зависимости от архитектуры, конкретные типы и интерпретации аппаратных счетчиков также будут меняться.
Большинство современных процессоров имеют привилегированные режимы для поддержки операционных систем и виртуализации.
Облачные вычисления могут использовать виртуализацию для предоставления виртуальных центральных процессоров [89] ( vCPU ) для отдельных пользователей. [90]
Хост — это виртуальный эквивалент физической машины, на которой работает виртуальная система. [91] Когда несколько физических машин работают в тандеме и управляются как единое целое, сгруппированные вычислительные ресурсы и ресурсы памяти образуют кластер . В некоторых системах возможно динамическое добавление и удаление из кластера. Ресурсы, доступные на уровне хоста и кластера, могут быть разделены на пулы ресурсов с мелкой детализацией .
Производительность или скорость процессора зависит, среди многих других факторов, от тактовой частоты (обычно указывается в кратных герцах ) и инструкций за такт (IPC), которые вместе являются факторами для инструкций в секунду (IPS), которые может выполнить ЦП. [92] Многие сообщенные значения IPS представляют собой «пиковые» скорости выполнения на искусственных последовательностях инструкций с небольшим количеством ветвей, тогда как реалистичные рабочие нагрузки состоят из смеси инструкций и приложений, некоторые из которых выполняются дольше, чем другие. Производительность иерархии памяти также сильно влияет на производительность процессора, вопрос, который едва ли учитывается в расчетах IPS. Из-за этих проблем были разработаны различные стандартизированные тесты, часто называемые «бенчмарками» для этой цели — например, SPECint — чтобы попытаться измерить реальную эффективную производительность в часто используемых приложениях.
Производительность обработки компьютеров увеличивается за счет использования многоядерных процессоров , что по сути является подключением двух или более отдельных процессоров (называемых ядрами в этом смысле) к одной интегральной схеме. [93] В идеале двухъядерный процессор должен быть почти в два раза мощнее одноядерного. На практике прирост производительности гораздо меньше, всего около 50%, из-за несовершенных программных алгоритмов и реализации. [94] Увеличение количества ядер в процессоре (т. е. двухъядерный, четырехъядерный и т. д.) увеличивает рабочую нагрузку, с которой можно справиться. Это означает, что процессор теперь может обрабатывать многочисленные асинхронные события, прерывания и т. д., которые могут нанести урон ЦП при перегрузке. Эти ядра можно рассматривать как разные этажи на перерабатывающем заводе, где каждый этаж обрабатывает разные задачи. Иногда эти ядра будут обрабатывать те же задачи, что и соседние с ними ядра, если одного ядра недостаточно для обработки информации. Многоядерные ЦП повышают способность компьютера выполнять несколько задач одновременно, предоставляя дополнительную вычислительную мощность. Однако увеличение скорости не прямо пропорционально количеству добавленных ядер. Это происходит потому, что ядрам необходимо взаимодействовать через определенные каналы, и эта межъядерная коммуникация потребляет часть доступной скорости обработки. [95]
Из-за специфических возможностей современных ЦП, таких как одновременная многопоточность и uncore , которые предполагают совместное использование фактических ресурсов ЦП с целью повышения их использования, мониторинг уровней производительности и использования оборудования постепенно стал более сложной задачей. [96] В ответ на это некоторые ЦП реализуют дополнительную аппаратную логику, которая отслеживает фактическое использование различных частей ЦП и предоставляет различные счетчики, доступные программному обеспечению; примером является технология Performance Counter Monitor компании Intel . [9]
[...] в облачных вычислениях, где несколько программных компонентов работают в виртуальной среде на одном и том же лезвии, один компонент на виртуальную машину (ВМ). Каждой ВМ выделяется виртуальный центральный процессор [...], который является частью ЦП лезвия.
Виртуальный центральный процессор (vCPU)[:] Разделяет физические процессоры. Экземпляры затем могут использовать эти разделения.