Как работает процессор?

Как работает процессор?

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


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

Учитывая текущие тенденции, пришло время обновить эту тему, учитывая последние достижения на рынке мобильных устройств и ноутбуков, такие как ПК Copilot Plus и предстоящий Snapdragon от Qualcomm со специальными процессорами. Давайте углубимся в основные функции ЦП и то, как они влияют на выбор дизайна, который мы наблюдаем в современных мобильных процессорах. Мы затронем некоторые вопросы, которые особенно актуальны для процессоров Arm, хотя многие концепции применимы и к процессорам, разработанным AMD и Intel. Это обсуждение применимо ко всем процессорам приложений в целом.

Для начала давайте проясним фундаментальный термин: тактовая частота. Этот термин, часто выражаемый в ГГц, означает скорость, с которой тикают внутренние часы процессора. Вы часто будете сталкиваться с этим при обсуждении процессоров Arm, AMD, Intel и других производителей. Однако увеличение ГГц не обязательно означает большее количество операций в секунду. Чтобы понять это, вам нужно углубиться в само ядро ​​процессора. Давайте продолжим.

Мы начнем с конца

Как работает процессор?

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

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

«Более широкие» процессоры делают больше с каждым тактом, делая их быстрее.

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

Как работает процессор?

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

Проще говоря, хотя процессоры могут выглядеть одинаково на расстоянии, их внутренняя структура может существенно отличаться. Конкретные компоненты, входящие в состав ЦП, особенно его ширина, влияют как на объем вычислений, которые он может выполнять за такт, так и на потребляемую мощность. Например, Arm Cortex-X925, ядра Apple M и процессор Qualcomm Oryon имеют уникальные характеристики в зависимости от того, что они содержат внутри.

Как выполнить быстрее

Как работает процессор?

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

Вот один из способов перефразировать данный текст в естественной и удобной для чтения форме:

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

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

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

Начнем с того, что реалистичность процессора ограничена задачами, которые вы выполняете. Добавление пяти модулей с плавающей запятой (FPU) в ядро ​​ЦП может показаться заманчивым, но по сути они будут простаивать при использовании веб-браузера, потребляя ненужную энергию и пространство на кристалле. Очень важно, чтобы ЦП был адаптирован для своей цели; действительно, графические процессоры (GPU) не зря устроены иначе, чем CPU. Более того, количество инструкций, которые процессор может выполнять одновременно, также ограничено в зависимости от инструкций программы. Например:

x = 5 * 10

y = 23 + 89

z = x * y

Несмотря на то, что x и y можно обрабатывать одновременно на двух отдельных ALU, вычисление z требует завершения вычислений как x, так и y. Наличие дополнительного исполнительного блока не поможет нам вычислить z быстрее, если не будет другой операции, которую мы можем выполнить во время ожидания x и y. Именно здесь становится полезным выполнение вне порядка (OoO). При таком подходе вместо ожидания завершения одной операции перед запуском другой одновременно обрабатываются несколько инструкций, что позволяет системе лучше использовать доступные ресурсы.

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

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

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

Что там было насчет отправки инструкций?

Как работает процессор?

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

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

Реализация более сложная. Во-первых, ширина диспетчеризации может варьироваться, что в идеале должно сочетаться с возможностями исполнительных блоков и характером OoO ЦП. Существует также очень сложная взаимосвязь между выборкой инструкций, предсказанием ветвей и задержкой. Многие секреты современного процессора сводятся к оптимальным шаблонам предварительной выборки для быстрого сканирования оперативной памяти, оптимизации цикла кода и точности прогнозирования ветвлений. Все это выходит далеко за рамки данной статьи, поскольку это «темное искусство» проектирования современных процессоров.

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

Зачем нам многокластерные процессоры?

Как работает процессор?

В современных процессорах для мобильных устройств, ноутбуков и настольных компьютеров вы заметите многоуровневую структуру, состоящую из отдельных ядер ЦП в одном кристалле. Эта концепция впервые была популяризирована с помощью big.LITTLE от Arm (теперь DynamIQ). Такие компании, как Apple, AMD и Intel, также разработали свои версии этой идеи, сосредоточив внимание на масштабируемой производительности и эффективности различных ядер. Эта стратегия сочетает в себе преимущества более крупных и мощных ядер с меньшими и менее мощными, которые потребляют меньше энергии, но предлагают более эффективную конструкцию. Основная цель — достичь высочайшей производительности наряду с исключительной энергоэффективностью в одной системе на кристалле (SoC).

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

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

Apple против Arm против Qualcomm… и многое другое

Как работает процессор?

Разнообразие усовершенствований процессоров вызвало многочисленные острые разногласия в технологической отрасли. Например, почему мобильный процессор Apple превосходит процессор Google? Является ли Exynos от Samsung на одном уровне с Snapdragon от Qualcomm? И в более актуальных дискуссиях, что выбрать: ARM или x64 для ПК?

Исторически сложилось так, что мобильные процессоры Apple были более мощными, чем те, которые используются в смартфонах Android, благодаря специальной конструкции Arm, в которой основное внимание уделяется более крупным и широким «большим ядрам» в сочетании всего с четырьмя энергоэффективными ядрами. С другой стороны, в телефонах Android обычно используются чипсеты с десятью или восемью ядрами, распределенными по трем кластерам. Хотя большие ядра Apple более мощные, большее количество ядер в устройствах Android позволяет минимизировать разрыв в производительности для современных многопоточных приложений. Кроме того, чипы Android известны своей энергоэффективностью из-за меньшего размера ядер, в то время как iPhone имеют репутацию менее стабильных энергоэффективных устройств.

В последнее время конкуренция среди процессоров на рынке Android была довольно жесткой, поскольку производители кремния тщательно настраивали готовые компоненты процессоров Arm, что приводило к минимальным различиям между устройствами. Однако в последнее время это равновесие сместилось. Флагманы Google Tensor и MediaTek Dimensity пошли разными путями: Google выбрал старые части процессора, а MediaTek перешел к более крупным конструкциям ядра. Ситуация снова изменится с предстоящим выпуском следующего чипа Snapdragon от Qualcomm, который знаменует собой возвращение к индивидуальному дизайну мобильных процессоров после долгого отсутствия. Интересно, что это новое направление, похоже, ближе к стратегии Apple в отношении чипсетов, чем другие варианты на рынке Android.


1) Если эта статья показалась вам интересной, будьте готовы к еще большему волнению по мере приближения 2025 года, когда будет представлено множество передовых Android-смартфонов. Кроме того, вы сможете исправить неверные представления о скорости чипа, например: «Ага, но у этого чипа на 0,2 ГГц больше, поэтому он должен быть быстрее», предоставив точную информацию о том, почему они могут ошибаться.

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

2024-10-21 21:18