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