Что такое многоядерный процессор?

click fraud protection

С середины нулевых процессоры для настольных ПК предлагают несколько ядер ЦП в одном корпусе. Это многоядерный процессор. В то время как ранние разработки были ограничены двумя или четырьмя ядрами ЦП, современные ЦП предлагают до 64 физических ядер на одном ЦП. Такое большое количество ядер не является стандартным для настольных процессоров и обычно зарезервировано для высокопроизводительных рабочих станций или серверов. Типичное количество ядер в современных процессорах для настольных ПК составляет от 4 до 16. Но что такого особенного в многоядерных процессорах, что делает их доминирующими в современных компьютерах?

Одно ядро

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

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

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

Многоядерный

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

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

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

Тепловые проблемы

Одной из самых больших проблем, с которой сталкиваются многоядерные процессоры, является нагрев. В то время как одно ядро ​​​​процессора не выделяет столько тепла, два выделяют больше. В ЦП с большим количеством ядер такая концентрация тепла может привести к более низкой тактовой частоте, поскольку ЦП управляет своей температурой. Более низкая тактовая частота приведёт к снижению производительности в однопоточных приложениях. Это часто можно увидеть в тестах производительности игр. Видеоигры часто сильно зависят от одного потока. Таким образом, однопоточная производительность часто имеет решающее значение для игр. ЦП с большим количеством ядер, такие как модели с 16 ядрами, часто относятся к категории высокопроизводительных. Несмотря на это, в однопоточных тестах они регулярно уступают «меньшим» процессорам с меньшим количеством ядер. Эта проблема еще более очевидна для процессоров со сверхвысоким числом ядер, таких как 64-ядерный AMD Threadripper, где тактовая частота заметно ниже, чем у высокопроизводительных процессоров для настольных ПК.

Успехи

Многие приложения могут правильно использовать несколько ядер ЦП. Например, рендеринг ЦП — относительно простая задача для распараллеливания. Улучшения производительности можно увидеть вплоть до 64 ядер и выше, хотя в настоящее время ни один ЦП не предлагает более 64 ядер. Многие приложения просто не могут быть многопоточными, поскольку они зависят от последовательной логики. Хотя они и близко не увидят ускорение многопоточной программы, тот факт, что многопоточная программа и другие однопоточные программы могут использовать другие ядра процессора, высвобождает процессорное время, позволяя лучше производительность.

Архитектурные варианты

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

Архитектура ЦП для настольных ПК также движется в направлении проектирования гетерогенных ядер. Intel Alder Lake 12й Линейка процессоров Core поколения является первым процессором для настольных ПК, который делает это. В этом случае основным движущим фактором меньших ядер является не обязательно энергоэффективность, а тепловая эффективность, хотя это две стороны одной медали. Наличие нескольких мощных ядер обеспечивает высокую производительность, в то время как многие эффективные ядра могут выполнять фоновые задачи, не слишком сильно влияя на основные ядра.

Вывод

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