WikiDer > Центральное процессорное устройство

Central processing unit
An Intel 80486DX2 CPU, как видно сверху
Нижняя сторона Intel 80486DX2, показывая его контакты

А центральное процессорное устройство (ЦПУ), также называемый центральный процессор, главный процессор или просто процессор, это электронная схема в пределах компьютер который выполняет инструкции которые составляют компьютерная программа. ЦП выполняет основные арифметика, логика, управление и ввод, вывод (I / O) операции, указанные в инструкциях программы. Это контрастирует с внешними компонентами, такими как основная память и Ввод / вывод схема,[1] и специализированные процессоры, такие как графические процессоры (GPU).

В компьютерной индустрии термин «центральный процессор» использовался еще в 1955 году.[2][3]

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

Большинство современных процессоров реализованы на Интегральная схема (IC) микропроцессоры, с одним или несколькими процессорами на одном металл-оксид-полупроводник (MOS) Микросхема. Микропроцессоры с несколькими процессорами многоядерные процессоры. Отдельные физические процессоры, ядра процессора, так же может быть многопоточный для создания дополнительных виртуальных или логических процессоров.[4]

ИС, которая содержит ЦП, также может содержать объем памяти, периферийный интерфейсы и другие компоненты компьютера; такие интегрированные устройства по-разному называются микроконтроллеры или же системы на чипе (SoC).

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

История

EDVAC, один из первых компьютеров с хранимой программой

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

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

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

Хотя фон Нейману чаще всего приписывают дизайн компьютера с хранимой программой из-за его дизайна EDVAC, и этот дизайн стал известен как фон Неймана архитектура, другие до него, такие как Конрад Зузе, предложил и реализовал похожие идеи.[19] Так называемой Гарвардская архитектура из Гарвард Марк I, который был завершен до EDVAC,[20][21] также использовал дизайн хранимой программы с использованием перфорированная бумажная лента а не электронная память.[22] Ключевое различие между архитектурами фон Неймана и Гарварда состоит в том, что последняя разделяет хранение и обработку инструкций и данных ЦП, в то время как первая использует одно и то же пространство памяти для обоих.[23] Большинство современных ЦП в основном построены по фон Нейману, но ЦП с архитектурой Гарварда также встречаются, особенно во встроенных приложениях; например, Atmel AVR микроконтроллеры - это процессоры с гарвардской архитектурой.[24]

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

Транзисторные процессоры

Процессор IBM PowerPC 604e

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

В 1964 г. IBM представил свой IBM System / 360 компьютерная архитектура, которая использовалась в серии компьютеров, способных запускать одни и те же программы с разной скоростью и производительностью.[29] Это было важно в то время, когда большинство электронных компьютеров были несовместимы друг с другом, даже те, которые производились одним и тем же производителем. Чтобы облегчить это улучшение, IBM использовала концепцию микропрограмма (часто называемый «микрокодом»), который до сих пор широко используется в современных процессорах.[30] Архитектура System / 360 была настолько популярна, что доминировала в универсальный компьютер рынок в течение десятилетий и оставил наследие, которое до сих пор продолжают аналогичные современные компьютеры, такие как IBM zСерия.[31][32] В 1965 г. Корпорация цифрового оборудования (DEC) представила еще один влиятельный компьютер, ориентированный на научные и исследовательские рынки, PDP-8.[33]

Плата Fujitsu с процессорами SPARC64 VIIIfx

Компьютеры на базе транзисторов имели несколько явных преимуществ перед своими предшественниками. Помимо повышения надежности и снижения энергопотребления, транзисторы также позволяли процессорам работать на гораздо более высоких скоростях из-за короткого времени переключения транзистора по сравнению с лампой или реле.[34] Повышенная надежность и резко увеличенная скорость переключающих элементов (которые к тому времени были почти исключительно транзисторами), тактовые частоты процессора в десятки мегагерц были легко получены в этот период.[35] Кроме того, в то время как дискретные транзисторы и ЦП ИС интенсивно использовались, новые высокопроизводительные конструкции, такие как SIMD (Одна инструкция, несколько данных) векторные процессоры начали появляться.[36] Эти ранние экспериментальные разработки позже положили начало эре специализированных суперкомпьютеры как те, что сделаны Cray Inc и Fujitsu Ltd.[36]

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

ЦПУ, основная память и внешняя шина интерфейс DEC PDP-8/ I, выполненный на интегральных схемах среднего размера

В этот период был разработан метод изготовления множества соединенных между собой транзисторов в компактном пространстве. В Интегральная схема (IC) позволила изготавливать большое количество транзисторов на одном полупроводник-основан умереть, или "чип". Сначала только самые простые неспециализированные цифровые схемы, такие как Ворота NOR были миниатюризированы в ИС.[37] ЦП, основанные на этих «строительных блоках» ИС, обычно называют устройствами «малой интеграции» (SSI). ИС SSI, такие как те, что используются в Компьютер наведения Apollo, обычно содержал до нескольких десятков транзисторов. Для построения всего ЦП из микросхем SSI требовались тысячи отдельных микросхем, но при этом потреблялось гораздо меньше места и энергии, чем в более ранних конструкциях с дискретными транзисторами.[38]

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

Процессоры для крупномасштабной интеграции

В МОП-транзистор (полевой транзистор металл-оксид-полупроводник), также известный как МОП-транзистор, был изобретен Мохамед Аталла и Давон Канг в Bell Labs в 1959 г. и продемонстрировали в 1960 г.[42] Это привело к развитию MOS (металл-оксид-полупроводник) интегральная схема, предложенная Аталлой в 1960 г.[43] и Канга в 1961 году, а затем сфабрикованы Фредом Хейманом и Стивеном Хофштейном в RCA в 1962 г.[42] С этими высокая масштабируемость,[44] и гораздо более низкое энергопотребление и более высокая плотность, чем биполярные переходные транзисторы,[45] MOSFET позволил построить высокая плотность интегральные схемы.[46][47]

Ли Бойсел опубликовал влиятельные статьи, в том числе «манифест» 1967 года, в котором описывалось, как построить эквивалент 32-разрядного мэйнфрейма из относительно небольшого количества компьютеров. крупномасштабная интеграция схемы (БИС).[48][49] Единственный способ создать микросхемы LSI, которые представляют собой микросхемы с сотней или более вентилей, - это построить их с помощью MOS процесс производства полупроводников (либо Логика PMOS, Логика NMOS, или же CMOS логика). Однако некоторые компании продолжали строить процессоры из двухполюсного транзисторно-транзисторная логика (TTL), потому что транзисторы с биполярным переходом были быстрее, чем микросхемы MOS вплоть до 1970-х годов (некоторые компании, такие как Datapoint продолжал строить процессоры из чипов TTL до начала 1980-х годов).[49] В 1960-х годах МОП-микросхемы были медленнее и первоначально считались полезными только в приложениях, требующих малой мощности.[50][51] После разработки кремниевый затвор Технология MOS от Федерико Фаггин в Fairchild Semiconductor в 1968 году МОП-микросхемы в значительной степени заменили биполярный TTL в качестве стандартной технологии чипов в начале 1970-х годов.[52]

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

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

Умереть из Intel 80486DX2 микропроцессор (реальный размер: 12 × 6,75 мм) в упаковке
Intel Процессор Core i5 на Серия Vaio E материнская плата ноутбука (справа, под тепловая труба)
Внутри ноутбука с удаленным процессором из гнезда

Достижения в MOS Технология IC привела к изобретению микропроцессор в начале 1970-х гг.[55] С момента появления первого коммерчески доступного микропроцессора, Intel 4004 в 1971 году, и первый широко используемый микропроцессор, Intel 8080 В 1974 году этот класс ЦП почти полностью обогнал все другие методы реализации центральных процессоров. Производители мэйнфреймов и миникомпьютеров того времени запустили проприетарные программы разработки ИС, чтобы обновить свои старые компьютерные архитектуры, и в конечном итоге произвел Набор инструкций совместимые микропроцессоры, обратно совместимые со старым аппаратным и программным обеспечением. В сочетании с появлением и возможным успехом вездесущих персональный компьютер, период, термин ЦПУ сейчас применяется почти исключительно[а] к микропроцессорам. Несколько процессоров (обозначены ядра) могут быть объединены в одном чипе обработки.[56]

Предыдущие поколения ЦП были реализованы как дискретные компоненты и многочисленные мелкие интегральные схемы (ИС) на одной или нескольких печатных платах.[57] С другой стороны, микропроцессоры - это процессоры, изготовленные на очень небольшом количестве микросхем; обычно всего один.[58] Общий меньший размер ЦП в результате реализации на одном кристалле означает более быстрое время переключения из-за физических факторов, таких как уменьшение затвора. паразитная емкость.[59][60] Это позволило синхронным микропроцессорам иметь тактовую частоту от десятков мегагерц до нескольких гигагерц. Кроме того, возможность конструировать чрезвычайно маленькие транзисторы на ИС многократно увеличила сложность и количество транзисторов в одном ЦП. Эта широко наблюдаемая тенденция описывается Закон Мура, который оказался достаточно точным предсказателем роста сложности ЦП (и других ИС) до 2016 года.[61][62]

Хотя сложность, размер, конструкция и общая форма ЦП сильно изменились с 1950 года,[63] основной дизайн и функции практически не изменились. Почти все распространенные сегодня процессоры можно очень точно описать как машины с хранимыми программами фон Неймана.[64][b] Поскольку закон Мура больше не действует, возникли опасения по поводу ограничений технологии транзисторов интегральных схем. Чрезвычайная миниатюризация электронные ворота вызывает эффекты таких явлений, как электромиграция и подпороговая утечка стать намного более значительным.[66][67] Эти новые проблемы относятся к числу многих факторов, заставляющих исследователей исследовать новые методы вычислений, такие как квантовый компьютер, а также расширить использование параллелизм и другие методы, расширяющие полезность классической модели фон Неймана.

Операция

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

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

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

Принести

Первый шаг, выборка, включает получение инструкция (который представлен числом или последовательностью чисел) из памяти программы. Расположение (адрес) инструкции в памяти программы определяется счетчик команд (ПК; называется "указателем инструкции" в Микропроцессоры Intel x86), в котором хранится число, идентифицирующее адрес следующей инструкции, которую нужно выбрать. После того, как команда выбрана, длина ПК увеличивается на длину команды, так что он будет содержать адрес следующей инструкции в последовательности.[d] Часто команда, которую нужно получить, должна быть извлечена из относительно медленной памяти, что приводит к остановке процессора в ожидании возврата команды. В современных процессорах эта проблема в основном решается с помощью кешей и конвейерных архитектур (см. Ниже).

Декодировать

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

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

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

Выполнять

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

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

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

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

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

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

Устройство управления

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

Он управляет работой других устройств, обеспечивая синхронизирующие и управляющие сигналы. Большинство компьютерных ресурсов управляется CU. Он направляет поток данных между ЦП и другими устройствами. Джон фон Нейман включил блок управления как часть фон Неймана архитектура. В современных компьютерных разработках блок управления обычно является внутренней частью ЦП, и его общая роль и работа не изменились с момента его появления.[нужна цитата]

Арифметико-логическое устройство

Символьное представление ALU и его входных и выходных сигналов

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

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

Блок генерации адресов

Блок генерации адресов (AGU), иногда также называемый блок вычисления адреса (ACU),[69] является исполнительная единица внутри процессора, который вычисляет адреса используется ЦП для доступа основная память. Благодаря тому, что вычисления адресов обрабатываются отдельной схемой, которая работает параллельно с остальной частью ЦП, количество Циклы процессора требуется для выполнения различных машинные инструкции можно уменьшить, что приведет к повышению производительности.

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

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

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

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

Кеш

А Кэш процессора[70] это аппаратный кеш используется центральным процессором (ЦП) компьютер для снижения средней стоимости (времени или энергии) доступа данные от основная память. Кэш - это меньшая, более быстрая память, ближе к ядро процессора, в котором хранятся копии данных из часто используемых основных места в памяти. Большинство процессоров имеют разные независимые кеши, в том числе инструкция и кеши данных, где кэш данных обычно организован в виде иерархии нескольких уровней кеширования (L1, L2, L3, L4 и т. д.).

Все современные (быстрые) процессоры (за некоторыми исключениями)[71]) имеют несколько уровней кешей ЦП. Первые процессоры, использовавшие кэш, имели только один уровень кеша; в отличие от более поздних кешей уровня 1, он не был разделен на L1d (для данных) и L1i (для инструкций). Почти все современные процессоры с кешем имеют разделенный кэш L1. У них также есть кэши L2, а для более крупных процессоров - кеши L3. Кэш L2 обычно не разделяется и действует как общий репозиторий для уже разделенного кеша L1. Каждое ядро многоядерный процессор имеет выделенный кеш L2 и обычно не используется ядрами. Кэш L3 и кеши более высокого уровня являются общими для ядер и не разделяются. Кэш L4 в настоящее время встречается редко и обычно включен динамическая память с произвольным доступом (DRAM), а не на статическая оперативная память (SRAM) на отдельном кристалле или чипе. Исторически так было и с L1, в то время как более крупные чипы позволяли интегрировать его и, как правило, все уровни кэша, за возможным исключением последнего уровня. Каждый дополнительный уровень кеша имеет тенденцию быть больше и оптимизироваться по-разному.

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

Размер кэша обычно определяется степенью двойки: 4, 8, 16 и т. Д. KiB или же МиБ (для больших размеров, отличных от L1), хотя IBM z13 имеет кэш инструкций L1 96 КБ.[72]

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

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

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

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

Один из способов борьбы с переключением ненужных компонентов называется стробирование часов, который включает отключение тактового сигнала для ненужных компонентов (эффективное их отключение). Однако это часто считается трудным для реализации и поэтому не находит широкого применения за пределами проектов с очень низким энергопотреблением. Одним из примечательных недавних проектов ЦП, в котором используется расширенная синхронизация тактовой частоты, является IBM PowerPC-основан Ксенон используется в Xbox 360; Таким образом значительно снижаются требования к электропитанию Xbox 360.[73] Другой метод решения некоторых проблем с глобальным тактовым сигналом - полное удаление тактового сигнала. Хотя удаление глобального синхросигнала значительно усложняет процесс проектирования во многих отношениях, асинхронные (или бесчасовые) конструкции обладают заметными преимуществами в энергопотреблении и рассеивание тепла по сравнению с аналогичными синхронными конструкциями. Хотя несколько необычно, но все асинхронные процессоры были построены без использования глобального тактового сигнала. Двумя яркими примерами этого являются РУКА послушный АМУЛЕТ и MIPS MiniMIPS, совместимый с R3000.

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

Модуль регулятора напряжения

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

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

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

Шестибитное слово, содержащее двоично-закодированное представление десятичного значения 40. Большинство современных ЦП используют размер слова, равный степени двойки, например 8, 16, 32 или 64 бита.

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

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

Процессоры с большим размером слова требуют большего количества схем и, следовательно, физически больше, стоят больше и потребляют больше энергии (и, следовательно, выделяют больше тепла). В результате меньшие 4- или 8-битные микроконтроллеры обычно используются в современных приложениях, хотя доступны процессоры с гораздо большими размерами слов (например, 16, 32, 64 и даже 128 бит). Однако, когда требуется более высокая производительность, преимущества большего размера слова (большие диапазоны данных и адресные пространства) могут перевешивать недостатки. ЦП может иметь внутренние пути к данным короче, чем размер слова, чтобы уменьшить размер и стоимость. Например, даже если IBM System / 360 Набор инструкций был 32-битным набором инструкций, System / 360 Модель 30 и Модель 40 имел 8-битные пути данных в арифметико-логическом устройстве, так что 32-битное сложение требовало четырех циклов, по одному на каждые 8 ​​бит операндов, и, хотя Motorola 68000 серии набор инструкций был 32-битным набором инструкций, Motorola 68000 и Motorola 68010 had 16-bit data paths in the arithmetic logical unit, so that a 32-bit add required two cycles.

To gain some of the advantages afforded by both lower and higher bit lengths, many наборы инструкций have different bit widths for integer and floating-point data, allowing CPUs implementing that instruction set to have different bit widths for different portions of the device. For example, the IBM System/360 instruction set was primarily 32 bit, but supported 64-bit плавающая точка values to facilitate greater accuracy and range in floating point numbers.[30] The System/360 Model 65 had an 8-bit adder for decimal and fixed-point binary arithmetic and a 60-bit adder for floating-point arithmetic.[75] Many later CPU designs use similar mixed bit width, especially when the processor is meant for general-purpose usage where a reasonable balance of integer and floating point capability is required.

Параллелизм

Model of a subscalar CPU, in which it takes fifteen clock cycles to complete three instructions

The description of the basic operation of a CPU offered in the previous section describes the simplest form that a CPU can take. This type of CPU, usually referred to as субскалярный, operates on and executes one instruction on one or two pieces of data at a time, that is less than one instruction per clock cycle (IPC < 1).

This process gives rise to an inherent inefficiency in subscalar CPUs. Since only one instruction is executed at a time, the entire CPU must wait for that instruction to complete before proceeding to the next instruction. As a result, the subscalar CPU gets "hung up" on instructions which take more than one clock cycle to complete execution. Even adding a second execution unit (see below) does not improve performance much; rather than one pathway being hung up, now two pathways are hung up and the number of unused transistors is increased. This design, wherein the CPU's execution resources can operate on only one instruction at a time, can only possibly reach скаляр performance (one instruction per clock cycle, IPC = 1). However, the performance is nearly always subscalar (less than one instruction per clock cycle, IPC < 1).

Attempts to achieve scalar and better performance have resulted in a variety of design methodologies that cause the CPU to behave less linearly and more in parallel. When referring to parallelism in CPUs, two terms are generally used to classify these design techniques:

Each methodology differs both in the ways in which they are implemented, as well as the relative effectiveness they afford in increasing the CPU's performance for an application.[час]

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

Basic five-stage pipeline. In the best case scenario, this pipeline can sustain a completion rate of one instruction per clock cycle.

One of the simplest methods used to accomplish increased parallelism is to begin the first steps of instruction fetching and decoding before the prior instruction finishes executing. This is the simplest form of a technique known as конвейерная обработка инструкций, and is used in almost all modern general-purpose CPUs. Pipelining allows more than one instruction to be executed at any given time by breaking down the execution pathway into discrete stages. This separation can be compared to an assembly line, in which an instruction is made more complete at each stage until it exits the execution pipeline and is retired.

Pipelining does, however, introduce the possibility for a situation where the result of the previous operation is needed to complete the next operation; a condition often termed data dependency conflict. To cope with this, additional care must be taken to check for these sorts of conditions and delay a portion of the instruction pipeline if this occurs. Naturally, accomplishing this requires additional circuitry, so pipelined processors are more complex than subscalar ones (though not very significantly so). A pipelined processor can become very nearly scalar, inhibited only by pipeline stalls (an instruction spending more than one clock cycle in a stage).

A simple superscalar pipeline. By fetching and dispatching two instructions at a time, a maximum of two instructions per clock cycle can be completed.

Further improvement upon the idea of instruction pipelining led to the development of a method that decreases the idle time of CPU components even further. Designs that are said to be суперскалярный include a long instruction pipeline and multiple identical исполнительные единицы, Такие как load-store units, arithmetic-logic units, единицы с плавающей запятой и address generation units.[76] In a superscalar pipeline, multiple instructions are read and passed to a dispatcher, which decides whether or not the instructions can be executed in parallel (simultaneously). If so they are dispatched to available execution units, resulting in the ability for several instructions to be executed simultaneously. In general, the more instructions a superscalar CPU is able to dispatch simultaneously to waiting execution units, the more instructions will be completed in a given cycle.

Most of the difficulty in the design of a superscalar CPU architecture lies in creating an effective dispatcher. The dispatcher needs to be able to quickly and correctly determine whether instructions can be executed in parallel, as well as dispatch them in such a way as to keep as many execution units busy as possible. This requires that the instruction pipeline is filled as often as possible and gives rise to the need in superscalar architectures for significant amounts of CPU cache. Это также делает опасность-avoiding techniques like branch prediction, speculative execution, зарегистрировать переименование, внеочередное исполнение и transactional memory crucial to maintaining high levels of performance. By attempting to predict which branch (or path) a conditional instruction will take, the CPU can minimize the number of times that the entire pipeline must wait until a conditional instruction is completed. Speculative execution often provides modest performance increases by executing portions of code that may not be needed after a conditional operation completes. Out-of-order execution somewhat rearranges the order in which instructions are executed to reduce delays due to data dependencies. Также в случае single instruction stream, multiple data stream—a case when a lot of data from the same type has to be processed—, modern processors can disable parts of the pipeline so that when a single instruction is executed many times, the CPU skips the fetch and decode phases and thus greatly increases performance on certain occasions, especially in highly monotonous program engines such as video creation software and photo processing.

In the case where a portion of the CPU is superscalar and part is not, the part which is not suffers a performance penalty due to scheduling stalls. Intel P5 Pentium had two superscalar ALUs which could accept one instruction per clock cycle each, but its FPU could not accept one instruction per clock cycle. Thus the P5 was integer superscalar but not floating point superscalar. Intel's successor to the P5 architecture, P6, added superscalar capabilities to its floating point features, and therefore afforded a significant increase in floating point instruction performance.

Both simple pipelining and superscalar design increase a CPU's ILP by allowing a single processor to complete execution of instructions at rates surpassing one instruction per clock cycle.[я] Most modern CPU designs are at least somewhat superscalar, and nearly all general purpose CPUs designed in the last decade are superscalar. In later years some of the emphasis in designing high-ILP computers has been moved out of the CPU's hardware and into its software interface, or ЭТО. The strategy of the very long instruction word (VLIW) causes some ILP to become implied directly by the software, reducing the amount of work the CPU must perform to boost ILP and thereby reducing the design's complexity.

Task-level parallelism

Another strategy of achieving performance is to execute multiple потоки или же процессы in parallel. This area of research is known as параллельные вычисления.[77] В Таксономия Флинна, this strategy is known as multiple instruction stream, multiple data stream (MIMD).[78]

One technology used for this purpose was многопроцессорность (МП).[79] The initial flavor of this technology is known as симметричная многопроцессорная обработка (SMP), where a small number of CPUs share a coherent view of their memory system. In this scheme, each CPU has additional hardware to maintain a constantly up-to-date view of memory. By avoiding stale views of memory, the CPUs can cooperate on the same program and programs can migrate from one CPU to another. To increase the number of cooperating CPUs beyond a handful, schemes such as non-uniform memory access (NUMA) and directory-based coherence protocols were introduced in the 1990s. SMP systems are limited to a small number of CPUs while NUMA systems have been built with thousands of processors. Initially, multiprocessing was built using multiple discrete CPUs and boards to implement the interconnect between the processors. When the processors and their interconnect are all implemented on a single chip, the technology is known as chip-level multiprocessing (CMP) and the single chip as a многоядерный процессор.

It was later recognized that finer-grain parallelism existed with a single program. A single program might have several threads (or functions) that could be executed separately or in parallel. Some of the earliest examples of this technology implemented ввод, вывод processing such as прямой доступ к памяти as a separate thread from the computation thread. A more general approach to this technology was introduced in the 1970s when systems were designed to run multiple computation threads in parallel. Эта технология известна как многопоточность (MT). This approach is considered more cost-effective than multiprocessing, as only a small number of components within a CPU is replicated to support MT as opposed to the entire CPU in the case of MP. In MT, the execution units and the memory system including the caches are shared among multiple threads. The downside of MT is that the hardware support for multithreading is more visible to software than that of MP and thus supervisor software like operating systems have to undergo larger changes to support MT. One type of MT that was implemented is known as temporal multithreading, where one thread is executed until it is stalled waiting for data to return from external memory. In this scheme, the CPU would then quickly context switch to another thread which is ready to run, the switch often done in one CPU clock cycle, such as the UltraSPARC T1. Another type of MT is одновременная многопоточность, where instructions from multiple threads are executed in parallel within one CPU clock cycle.

For several decades from the 1970s to early 2000s, the focus in designing high performance general purpose CPUs was largely on achieving high ILP through technologies such as pipelining, caches, superscalar execution, out-of-order execution, etc. This trend culminated in large, power-hungry CPUs such as the Intel Pentium 4. By the early 2000s, CPU designers were thwarted from achieving higher performance from ILP techniques due to the growing disparity between CPU operating frequencies and main memory operating frequencies as well as escalating CPU power dissipation owing to more esoteric ILP techniques.

CPU designers then borrowed ideas from commercial computing markets such as обработка транзакции, where the aggregate performance of multiple programs, also known as пропускная способность computing, was more important than the performance of a single thread or process.

This reversal of emphasis is evidenced by the proliferation of dual and more core processor designs and notably, Intel's newer designs resembling its less superscalar P6 архитектура. Late designs in several processor families exhibit CMP, including the x86-64 Opteron и Athlon 64 X2, то SPARC UltraSPARC T1, IBM МОЩНОСТЬ4 и МОЩНОСТЬ5, а также несколько игровая приставка CPUs like the Xbox 360's triple-core PowerPC design, and the PlayStation 3's 7-core Cell microprocessor.

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

A less common but increasingly important paradigm of processors (and indeed, computing in general) deals with data parallelism. The processors discussed earlier are all referred to as some type of scalar device.[j] As the name implies, vector processors deal with multiple pieces of data in the context of one instruction. This contrasts with scalar processors, which deal with one piece of data for every instruction. С помощью Таксономия Флинна, these two schemes of dealing with data are generally referred to as single instruction stream, multiple data stream (SIMD) and один поток инструкций, один поток данных (SISD), respectively. The great utility in creating processors that deal with vectors of data lies in optimizing tasks that tend to require the same operation (for example, a sum or a скалярное произведение) to be performed on a large set of data. Some classic examples of these types of tasks include мультимедиа applications (images, video and sound), as well as many types of научный and engineering tasks. Whereas a scalar processor must complete the entire process of fetching, decoding and executing each instruction and value in a set of data, a vector processor can perform a single operation on a comparatively large set of data with one instruction. This is only possible when the application tends to require many steps which apply one operation to a large set of data.

Most early vector processors, such as the Крей-1, were associated almost exclusively with scientific research and криптография Приложения. However, as multimedia has largely shifted to digital media, the need for some form of SIMD in general-purpose processors has become significant. Shortly after inclusion of единицы с плавающей запятой started to become commonplace in general-purpose processors, specifications for and implementations of SIMD execution units also began to appear for general-purpose processors.[когда?] Some of these early SIMD specifications - like HP's Multimedia Acceleration eXtensions (MAX) and Intel's MMX - were integer-only. This proved to be a significant impediment for some software developers, since many of the applications that benefit from SIMD primarily deal with плавающая точка числа. Progressively, developers refined and remade these early designs into some of the common modern SIMD specifications, which are usually associated with one ISA. Some notable modern examples include Intel's SSE and the PowerPC-related AltiVec (also known as VMX).[k]

Virtual CPUs

Облачные вычисления can involve subdividing CPU operation into virtual central processing units[80] (vCPUs[81]).

A host is the virtual equivalent of a physical machine, on which a virtual system is operating.[82] When there are several physical machines operating in tandem and managed as a whole, the grouped computing and memory resources form a кластер. In some systems, it is possible to dynamically add and remove from a cluster. Resources available at a host and cluster level can be partitioned out into resources pools с штрафом granularity.

Спектакль

В спектакль или же скорость of a processor depends on, among many other factors, the clock rate (generally given in multiples of герц) and the instructions per clock (IPC), which together are the factors for the instructions per second (IPS) that the CPU can perform.[83]Many reported IPS values have represented "peak" execution rates on artificial instruction sequences with few branches, whereas realistic workloads consist of a mix of instructions and applications, some of which take longer to execute than others. Производительность иерархия памяти also greatly affects processor performance, an issue barely considered in MIPS calculations. Because of these problems, various standardized tests, often called "benchmarks" for this purpose‍—‌such as SPECint‍—‌have been developed to attempt to measure the real effective performance in commonly used applications.

Processing performance of computers is increased by using многоядерные процессоры, which essentially is plugging two or more individual processors (called ядра in this sense) into one integrated circuit.[84] Ideally, a dual core processor would be nearly twice as powerful as a single core processor. In practice, the performance gain is far smaller, only about 50%, due to imperfect software algorithms and implementation.[85] Increasing the number of cores in a processor (i.e. dual-core, quad-core, etc.) increases the workload that can be handled. This means that the processor can now handle numerous asynchronous events, interrupts, etc. which can take a toll on the CPU when overwhelmed. These cores can be thought of as different floors in a processing plant, with each floor handling a different task. Sometimes, these cores will handle the same tasks as cores adjacent to them if a single core is not enough to handle the information.

Due to specific capabilities of modern CPUs, such as одновременная многопоточность и uncore, which involve sharing of actual CPU resources while aiming at increased utilization, monitoring performance levels and hardware use gradually became a more complex task.[86] As a response, some CPUs implement additional hardware logic that monitors actual use of various parts of a CPU and provides various counters accessible to software; an example is Intel's Performance Counter Monitor технологии.[4]

Смотрите также

Примечания

  1. ^ Integrated circuits are now used to implement all CPUs, except for a few machines designed to withstand large electromagnetic pulses, say from a nuclear weapon.
  2. ^ The so-called "von Neumann" memo expounded the idea of stored programs,[65] which for example may be stored on перфокарты, paper tape, or magnetic tape.
  3. ^ Some early computers, like the Harvard Mark I, did not support any kind of "jump" instruction, effectively limiting the complexity of the programs they could run. It is largely for this reason that these computers are often not considered to contain a proper CPU, despite their close similarity to stored-program computers.
  4. ^ Since the program counter counts адреса памяти и нет инструкции, it is incremented by the number of memory units that the instruction word contains. In the case of simple fixed-length instruction word ISAs, this is always the same number. For example, a fixed-length 32-bit instruction word ISA that uses 8-bit memory words would always increment the PC by four (except in the case of jumps). ISAs that use variable-length instruction words increment the PC by the number of memory words corresponding to the last instruction's length.
  5. ^ Because the instruction set architecture of a CPU is fundamental to its interface and usage, it is often used as a classification of the "type" of CPU. For example, a "PowerPC CPU" uses some variant of the PowerPC ISA. A system can execute a different ISA by running an emulator.
  6. ^ The physical concept of Напряжение is an analog one by nature, practically having an infinite range of possible values. For the purpose of physical representation of binary numbers, two specific ranges of voltages are defined, one for logic '0' and another for logic '1'. These ranges are dictated by design considerations such as noise margins and characteristics of the devices used to create the CPU.
  7. ^ While a CPU's integer size sets a limit on integer ranges, this can (and often is) overcome using a combination of software and hardware techniques. By using additional memory, software can represent integers many magnitudes larger than the CPU can. Sometimes the CPU's Набор инструкций will even facilitate operations on integers larger than it can natively represent by providing instructions to make large integer arithmetic relatively quick. This method of dealing with large integers is slower than utilizing a CPU with higher integer size, but is a reasonable trade-off in cases where natively supporting the full integer range needed would be cost-prohibitive. Видеть Арифметика произвольной точности for more details on purely software-supported arbitrary-sized integers.
  8. ^ Neither ILP ни TLP is inherently superior over the other; they are simply different means by which to increase CPU parallelism. As such, they both have advantages and disadvantages, which are often determined by the type of software that the processor is intended to run. High-TLP CPUs are often used in applications that lend themselves well to being split up into numerous smaller applications, so-called "embarrassingly parallel problems". Frequently, a computational problem that can be solved quickly with high TLP design strategies like симметричная многопроцессорная обработка takes significantly more time on high ILP devices like superscalar CPUs, and vice versa.
  9. ^ Best-case scenario (or peak) IPC rates in very superscalar architectures are difficult to maintain since it is impossible to keep the instruction pipeline filled all the time. Therefore, in highly superscalar CPUs, average sustained IPC is often discussed rather than peak IPC.
  10. ^ Earlier the term скаляр was used to compare the IPC count afforded by various ILP methods. Here the term is used in the strictly mathematical sense to contrast with vectors. Видеть scalar (mathematics) и Вектор (геометрический).
  11. ^ Although SSE/SSE2/SSE3 have superseded MMX in Intel's general-purpose processors, later IA-32 designs still support MMX. This is usually accomplished by providing most of the MMX functionality with the same hardware that supports the much more expansive SSE instruction sets.

Рекомендации

  1. ^ Kuck, David (1978). Computers and Computations, Vol 1. John Wiley & Sons, Inc. стр. 12. ISBN 978-0471027164.
  2. ^ Weik, Martin H. (1955). "A Survey of Domestic Electronic Digital Computing Systems". Лаборатория баллистических исследований. Цитировать журнал требует | журнал = (помощь)
  3. ^ а б Weik, Martin H. (1961). "A Third Survey of Domestic Electronic Digital Computing Systems". Лаборатория баллистических исследований. Цитировать журнал требует | журнал = (помощь)
  4. ^ а б Thomas Willhalm; Roman Dementiev; Patrick Fay (December 18, 2014). "Intel Performance Counter Monitor – A better way to measure CPU utilization". software.intel.com. Получено 17 февраля, 2015.
  5. ^ Liebowitz, Kusek, Spies, Matt, Christopher, Rynardt (2014). VMware vSphere Performance: Designing CPU, Memory, Storage, and Networking for Performance-Intensive Workloads. Вайли. п. 68. ISBN 978-1-118-00819-5.CS1 maint: несколько имен: список авторов (связь)
  6. ^ Regan, Gerard (2008). A Brief History of Computing. п. 66. ISBN 978-1848000834. Получено 26 ноября 2014.
  7. ^ "Мало по малу". Haverford College. Архивировано из оригинал 13 октября 2012 г.. Получено 1 августа, 2015.
  8. ^ «Первый проект отчета по EDVAC» (PDF). Moore School of Electrical Engineering, Пенсильванский университет. 1945. Цитировать журнал требует | журнал = (помощь)
  9. ^ Стэндфордский Университет. «Современная история вычислительной техники». Стэнфордская энциклопедия философии. Получено 25 сентября, 2015.
  10. ^ "ENIAC's Birthday". MIT Press. February 9, 2016. Получено 17 октября, 2018.
  11. ^ Enticknap, Nicholas (Summer 1998), "Computing's Golden Jubilee", Воскрешение, The Computer Conservation Society (20), ISSN 0958-7403, получено 26 июн 2019
  12. ^ "The Manchester Mark 1". Манчестерский университет. Получено 25 сентября, 2015.
  13. ^ "The First Generation". Музей истории компьютеров. Получено 29 сентября, 2015.
  14. ^ "The History of the Integrated Circuit". Nobelprize.org. Получено 29 сентября, 2015.
  15. ^ Turley, Jim. "Motoring with microprocessors". Встроенный. Получено 15 ноября, 2015.
  16. ^ "Mobile Processor Guide – Summer 2013". Android Authority. 2013-06-25. Получено 15 ноября, 2015.
  17. ^ "Section 250: Microprocessors and Toys: An Introduction to Computing Systems". Мичиганский университет. Получено 9 октября, 2018.
  18. ^ "ARM946 Processor". ARM. Архивировано из оригинал 17 ноября 2015 г.
  19. ^ "Konrad Zuse". Музей истории компьютеров. Получено 29 сентября, 2015.
  20. ^ "Timeline of Computer History: Computers". Музей истории компьютеров. Получено Двадцать первое ноября, 2015.
  21. ^ White, Stephen. "A Brief History of Computing - First Generation Computers". Получено Двадцать первое ноября, 2015.
  22. ^ "Harvard University Mark - Paper Tape Punch Unit". Музей истории компьютеров. Получено Двадцать первое ноября, 2015.
  23. ^ "What is the difference between a von Neumann architecture and a Harvard architecture?". РУКА. Получено 22 ноября, 2015.
  24. ^ "Advanced Architecture Optimizes the Atmel AVR CPU". Atmel. Получено 22 ноября, 2015.
  25. ^ "Switches, transistors and relays". BBC. Архивировано из оригинал 5 декабря 2016 г.
  26. ^ "Introducing the Vacuum Transistor: A Device Made of Nothing". IEEE Spectrum. 2014-06-23. Получено 27 января 2019.
  27. ^ What Is Computer Performance?. Издательство национальных академий. 2011 г. Дои:10.17226/12980. ISBN 978-0-309-15951-7. Получено 16 мая, 2016.
  28. ^ "1953: Transistorized Computers Emerge". Музей истории компьютеров. Получено 3 июня, 2016.
  29. ^ "IBM System/360 Dates and Characteristics". IBM. 2003-01-23.
  30. ^ а б Amdahl, G. M.; Blaauw, G. A.; Brooks, F. P. Jr. (Апрель 1964 г.). "Architecture of the IBM System/360". Журнал исследований и разработок IBM. IBM. 8 (2): 87–101. Дои:10.1147/rd.82.0087. ISSN 0018-8646.
  31. ^ Brodkin, John. "50 years ago, IBM created mainframe that helped send men to the Moon". Ars Technica. Получено 9 апреля 2016.
  32. ^ Clarke, Gavin. "Why won't you DIE? IBM's S/360 and its legacy at 50". Реестр. Получено 9 апреля 2016.
  33. ^ "Online PDP-8 Home Page, Run a PDP-8". PDP8. Получено 25 сентября, 2015.
  34. ^ "Transistors, Relays, and Controlling High-Current Loads". Нью-Йоркский университет. ITP Physical Computing. Получено 9 апреля 2016.
  35. ^ Lilly, Paul (2009-04-14). "A Brief History of CPUs: 31 Awesome Years of x86". ПК-геймер. Получено 15 июня, 2016.
  36. ^ а б Patterson, David A.; Хеннесси, Джон Л .; Ларус, Джеймс Р. (1999). Computer Organization and Design: the Hardware/Software Interface (2-е изд., 3-е изд.). Сан-Франциско: Кауфманн. п.751. ISBN 978-1558604285.
  37. ^ "1962: Aerospace systems are first the applications for ICs in computers". Музей истории компьютеров. Получено 9 октября, 2018.
  38. ^ "The integrated circuits in the Apollo manned lunar landing program". Национальное управление по аэронавтике и исследованию космического пространства. Получено 9 октября, 2018.
  39. ^ "System/370 Announcement". Архивы IBM. 2003-01-23. Получено 25 октября, 2017.
  40. ^ "System/370 Model 155 (Continued)". Архивы IBM. 2003-01-23. Получено 25 октября, 2017.
  41. ^ "Models and Options". The Digital Equipment Corporation PDP-8. Получено 15 июня, 2018.
  42. ^ а б https://www.computerhistory.org/siliconengine/metal-oxide-semiconductor-mos-transistor-demonstrated/
  43. ^ Московиц, Сэнфорд Л. (2016). Передовые инновации в материалах: управление глобальными технологиями в 21 веке. Джон Уайли и сыновья. С. 165–167. ISBN 9780470508923.
  44. ^ Мотоёси, М. (2009). "Through-Silicon Via (TSV)". Труды IEEE. 97 (1): 43–48. Дои:10.1109 / JPROC.2008.2007462. ISSN 0018-9219. S2CID 29105721.
  45. ^ «Транзисторы поддерживают закон Мура». EETimes. 12 декабря 2018.
  46. ^ "Кто изобрел транзистор?". Музей истории компьютеров. 4 декабря 2013 г.
  47. ^ Hittinger, William C. (1973). "Metal-Oxide-Semiconductor Technology". Scientific American. 229 (2): 48–59. Bibcode:1973SciAm.229b..48H. Дои:10.1038/scientificamerican0873-48. ISSN 0036-8733. JSTOR 24923169.
  48. ^ Росс Нокс Бассетт (2007). К веку цифровых технологий: исследовательские лаборатории, начинающие компании и развитие MOS-технологий. Издательство Университета Джона Хопкинса. pp. 127–128, 256, and 314. ISBN 978-0-8018-6809-2.
  49. ^ а б Ken Shirriff."Texas Instruments TMX 1795: первый забытый микропроцессор".
  50. ^ "Speed & Power in Logic Families"..
  51. ^ T. J. Stonham."Digital Logic Techniques: Principles and Practice".1996.p. 174.
  52. ^ "1968: Silicon Gate Technology Developed for ICs". Музей истории компьютеров.
  53. ^ R. K. Booher."MOS GP Computer".afips, pp.877, 1968 Proceedings of the Fall Joint Computer Conference, 1968Дои:10.1109/AFIPS.1968.126
  54. ^ "LSI-11 Module Descriptions" (PDF). LSI-11, PDP-11/03 user's manual (2-е изд.). Maynard, Massachusetts: Корпорация цифрового оборудования. November 1975. pp. 4–3.
  55. ^ «1971: микропроцессор объединяет функции центрального процессора на одном кристалле». Музей истории компьютеров.
  56. ^ Margaret Rouse (March 27, 2007). "Definition: multi-core processor". TechTarget. Получено 6 марта, 2013.
  57. ^ Richard Birkby. "A Brief History of the Microprocessor". computermuseum.li. Архивировано из оригинал 23 сентября 2015 г.. Получено 13 октября, 2015.
  58. ^ Osborne, Adam (1980). An Introduction to Microcomputers. Volume 1: Basic Concepts (2nd ed.). Berkeley, California: Osborne-McGraw Hill. ISBN 978-0-931988-34-9.
  59. ^ Zhislina, Victoria (2014-02-19). "Почему перестала расти частота процессора?". Intel. Получено 14 октября, 2015.
  60. ^ "MOS Transistor - Electrical Engineering & Computer Science" (PDF). Калифорнийский университет. Получено 14 октября, 2015.
  61. ^ Симонит, Том. "Moore's Law Is Dead. Now What?". Обзор технологий MIT. Получено 2018-08-24.
  62. ^ "Excerpts from A Conversation with Gordon Moore: Moore's Law" (PDF). Intel. 2005. Архивировано с оригинал (PDF) на 2012-10-29. Получено 2012-07-25. Цитировать журнал требует | журнал = (помощь)
  63. ^ "A detailed history of the processor". Tech Junkie. 15 декабря 2016 г.
  64. ^ Eigenmann, Rudolf; Lilja, David (1998). "Von Neumann Computers". Энциклопедия электротехники и электроники Wiley. Дои:10.1002/047134608X.W1704. ISBN 047134608X. S2CID 8197337.
  65. ^ Aspray, William (September 1990). "The stored program concept". IEEE Spectrum. Vol. 27 нет. 9. Дои:10.1109/6.58457.
  66. ^ Saraswat, Krishna. "Trends in Integrated Circuits Technology" (PDF). Получено 15 июня, 2018.
  67. ^ "Electromigration". Ближневосточный технический университет. Получено 15 июня, 2018.
  68. ^ Ian Wienand (September 3, 2013). "Computer Science from the Bottom Up, Chapter 3. Computer Architecture" (PDF). bottomupcs.com. Получено 7 января, 2015.
  69. ^ Cornelis Van Berkel; Patrick Meuwissen (January 12, 2006). "Address generation unit for a processor (US 2006010255 A1 patent application)". google.com. Получено 8 декабря, 2014.[требуется проверка]
  70. ^ Gabriel Torres (September 12, 2007). "How The Cache Memory Works".[требуется проверка]
  71. ^ A few specialized CPUs, accelerators or microcontrollers do not have a cache. To be fast, if needed/wanted, they still have an on-chip scratchpad memory that has a similar function, while software managed. Например, в microcontrollers it can be better for hard real-time use, to have that or at least no cache, as with one level of memory latencies of loads are predictable.[требуется проверка]
  72. ^ "IBM z13 and IBM z13s Technical Introduction" (PDF). IBM. Март 2016. с. 20.[требуется проверка]
  73. ^ Brown, Jeffery (2005). "Application-customized CPU design". IBM developerWorks. Получено 2005-12-17.
  74. ^ Garside, J. D.; Furber, S. B.; Chung, S-H (1999). "AMULET3 Revealed". Манчестерский университет Computer Science Department. Архивировано из оригинал on December 10, 2005. Цитировать журнал требует | журнал = (помощь)
  75. ^ "IBM System/360 Model 65 Functional Characteristics" (PDF). IBM. September 1968. pp. 8–9. A22-6884-3.
  76. ^ Huynh, Jack (2003). "The AMD Athlon XP Processor with 512KB L2 Cache" (PDF). Университет Иллинойса, Урбана-Шампейн. С. 6–11. Архивировано из оригинал (PDF) на 2007-11-28. Получено 2007-10-06.
  77. ^ Готтлиб, Аллан; Алмаси, Джордж С. (1989). Высокопараллельные вычисления. Редвуд-Сити, Калифорния: Бенджамин / Каммингс. ISBN 978-0-8053-0177-9.
  78. ^ Флинн, М. Дж. (Сентябрь 1972 г.). «Некоторые компьютерные организации и их эффективность». IEEE Trans. Comput. С-21 (9): 948–960. Дои:10.1109 / TC.1972.5009071. S2CID 18573685.
  79. ^ Лу, Н.-П .; Чанг, К.-П. (1998). «Использование параллелизма в суперскалярной многопроцессорной обработке». Протоколы IEE - Компьютеры и цифровые методы. Институт инженеров-электриков. 145 (4): 255. Дои:10.1049 / ip-cdt: 19981955.
  80. ^ Анджум, Бушра; Перрос, Гарри Г. (2015). «1: Разделение бюджета сквозного QoS на домены». Распределение полосы пропускания для видео при ограничениях качества обслуживания. Серия Focus. Джон Вили и сыновья. п. 3. ISBN 9781848217461. Получено 2016-09-21. [...] в облачных вычислениях, где несколько программных компонентов работают в виртуальной среде на одном блейд-сервере, по одному компоненту на виртуальную машину (ВМ). Каждой виртуальной машине выделяется виртуальный центральный процессор [...], который является частью центрального процессора блейд-сервера.
  81. ^ Файфилд, Том; Флеминг, Дайан; Нежная, Энн; Хохштейн, Лорин; Пру, Джонатан; Тэйвз, Эверетт; Топджян, Джо (2014). «Глоссарий». Руководство по эксплуатации OpenStack. Пекин: O'Reilly Media, Inc., стр. 286. ISBN 9781491906309. Получено 2016-09-20. Виртуальный центральный процессор (vCPU) [:] Подразделяет физические процессоры. Затем экземпляры могут использовать эти подразделения.
  82. ^ «Обзор архитектуры инфраструктуры VMware - информационный документ» (PDF). VMware. VMware. 2006 г.
  83. ^ «Частота процессора». Глоссарий CPU World. CPU World. 25 марта 2008 г.. Получено 1 января 2010.
  84. ^ "Что такое (а) многоядерный процессор?". Определения центров обработки данных. SearchDataCenter.com. Получено 8 августа 2016.
  85. ^ «Четырехъядерный против двухъядерного».
  86. ^ Тегтмайер, Мартин. «Объяснение использования ЦП в многопоточных архитектурах». Oracle. Получено 29 сентября, 2015.

внешняя ссылка