Ядра и потоки процессора в чем разница
Перейти к содержимому

Ядра и потоки процессора в чем разница

  • автор:

Процессор: потоки или ядра

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

Многоядерность и гиперпоточность

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

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

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

Иллюстрация концепции потоков/виртуальных ядер:

cores threads - потоки и ядра процессора

Рассмотрим следующий упрощенный пример: если двухъядерный процессор с двумя потоками работает с четырьмя последовательностями команд одновременно, а производительность одного ядра для одной последовательности избыточна, то общая производительность будет ниже, чем в случае, если на месте такого процессора будет вариант с двумя ядрами, но с четырьмя потоками, поскольку на переключение между задачами тратится дополнительное время, и часть ресурсов иногда простаивает. А вот если вычислительных ресурсов одного потока недостаточно для выполнения одной последовательности, то виртуальные ядра почти не помогут – нужны дополнительные физические.

Распараллеливание нагрузки при помощи технологии Intel Hyper-Threading

Intel Hyper-Threading

Немного истории

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

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

Потоки или ядра?

Центральный процессор – один из ключевых компонентов системы, влияющих на ее производительность в целевых задачах, а также на удобство использования компьютера. Часто у пользователей, желающих собрать систему, возникает вопрос: на что ориентироваться при выборе ЦП? Стоит ли переплачивать за дополнительные потоки/виртуальные ядра?

Ответ зависит от предполагаемых сценариев использования. В большинстве игр прирост производительности от гиперпоточности окажется минимальным или даже нулевым, а вот добавление физических ядер скажется на частоте кадров явно положительно. Разумеется, если движок игры способен распараллеливать вычисления на такое количество ядер. Многие игры, выпущенные в предыдущие годы, способны работать только с 2-4 ядрами — остальные будут простаивать или заниматься фоновыми программами.

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

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

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

Понравилось? Поделись с друзьями!

Дата: 26.01.2019 Автор/Переводчик: Zio

Объяснение ядер ЦП и потоков — в чем разница?

Задумывались ли вы о разнице между ядрами ЦП и потоками? Разве это не сбивает с толку? Не волнуйтесь, в этом руководстве мы ответим на все вопросы, касающиеся дебатов между процессорными ядрами и потоками.

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

Ядра ЦП и потоки объяснили - что

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

Объяснение ядер ЦП и потоков — в чем разница между ними?

Основной процессор в компьютере

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

Теперь у ЦП тоже довольно много подблоков. Некоторые из них Устройство управления и арифметико-логическое устройство ( АЛУ ). Эти термины слишком технические и не нужны для этой статьи. Поэтому мы избегаем их и продолжаем нашу основную тему.

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

Несколько ядер

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

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

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

Гиперпоточность

Теперь давайте посмотрим на другой фактор, стоящий за этой более быстрой и лучшей производительностью наряду с многозадачными способностями компьютеров — Hyper-threading. Гигант компьютерного бизнеса Intel впервые применил технологию Hyper-Threading. С его помощью они хотели добиться параллельных вычислений на потребительских ПК. Впервые эта функция была запущена в 2002 году на настольных ПК с Премиум 4 НТ . В то время Pentium 4T содержал одно ядро ​​​​процессора, что позволяло выполнять одну задачу в любой момент времени. Однако пользователи могли переключаться между задачами достаточно быстро, чтобы это выглядело как многозадачность. Гиперпоточность была предоставлена ​​как ответ на этот вопрос.

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

Ядра ЦП и потоки: в чем разница?

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

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

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

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

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

Илон Декер

Элон — технический писатель в Cyber ​​S. Он пишет практические руководства уже около 6 лет и затронул множество тем. Он любит освещать темы, связанные с Windows, Android, а также последние хитрости и советы.

Ядра и потоки процессора, в чем разница

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

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

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

Что такое ядро ​​процессора?

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

До определенного момента тактовые частоты продолжали увеличиваться, пока не столкнулись с «тепловой» стеной, которая сделала невозможным добавление дополнительных транзисторов. Именно это побудило их соединить более одного чипа в одной схеме, чтобы добиться превосходной производительности, что привело к созданию «многоядерных» процессоров.

Что такое ядро? Ядро — это, по сути, физически отдельный ЦП (центральный процессор) или полностью независимый процессор. Многоядерный процессор — это единая часть компьютерного оборудования с несколькими ядрами или процессорами, объединенными вместе. Каждое ядро ​​может функционировать независимо и совместно использовать ресурсы с другими ядрами.

Каждое независимое ядро ​​имеет собственный кэш процессора L1, а кэши L2 и L3 являются общими. У старых процессоров, таких как Pentium 4, было только одно ядро, а у современных процессоров есть два, четыре, шесть и даже восемь ядер.

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

Что такое поток процессора?

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

Существует множество способов совместного использования потоков между ядрами. Одновременная многопоточность позволяет одновременно выполнять два потока на одном ядре, которое является частью двух-, четырех- или восьмиъядерных процессоров. Таким образом, указанное в параметрах процессора 8 потоков означает, что чип может одновременно обрабатывать 8 задач обработки.

Чем ядра отличаются от потоков?

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

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

Hyper-Threading — технология, позволяющая каждому ядру многоядерного процессора i5 или i7 одновременно обрабатывать два отдельных потока процесса, — причина победы Intel над AMD в последнее время.

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

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

Ядра ЦП и потоки: что это такое

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

Ядра ЦП и потоки: в чем разница между ними?

Базовый процессор в компьютере

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

Теперь ЦП также имеет довольно много подблоков. Некоторыми из них являются блок управления и арифметико-логическое устройство (АЛУ). Эти термины слишком технические и не нужны для этой статьи. Поэтому мы избегаем их и продолжаем нашу основную тему.

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

Несколько ядер

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

Других хитростей здесь нет — двухъядерный ЦП имеет два центральных процессора, тогда как четырехъядерный имеет четыре центральных процессора на кристалле ЦП, восьмиядерный — восемь и так далее.

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

Гиперпоточность

Теперь давайте посмотрим на другой фактор, стоящий за этой более быстрой и лучшей производительностью наряду с многозадачностью компьютеров, — Hyper-threading. Гигант компьютерного бизнеса Intel впервые применил технологию Hyper-Threading. С его помощью они хотели добиться параллельных вычислений на потребительских ПК. Впервые эта функция была запущена в 2002 году на настольных ПК с версией Premium 4 HT. В то время Pentium 4T содержал одно ядро ​​​​процессора, что позволяло выполнять одну задачу в любой момент времени. Однако пользователи могли переключаться между задачами достаточно быстро, чтобы это выглядело как многозадачность. Гиперпоточность была предоставлена ​​как ответ на этот вопрос.

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

Ядра ЦП и потоки: в чем разница?

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

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

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

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

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

Элон Декер

Илон — технический писатель в TechCult. Он пишет практические руководства уже около 6 лет и затронул множество тем. Он любит освещать темы, связанные с Windows, Android, а также последние хитрости и советы.

Ядра против потоков

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

Одноядерный и многоядерный процессор

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

Одноядерный процессор

Выполнение процесса: одноядерный процессор

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

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

Многоядерный процессор

Выполнение процесса: многоядерный процессор

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

Поток против нескольких потоков

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

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

Потоки пользователя и потоки ядра

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

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

Ядро и потоки

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

Параметры Основные Потоки
Определение Ядро ЦП — это физический аппаратный компонент. Поток — это виртуальный компонент, который используется для управления задачами.
Процесс ЦП обращается ко второму потоку только тогда, когда информация, отправленная первым потоком, ненадежна. Несколько вариантов того, как ЦП может взаимодействовать с несколькими потоками.
Развертывание Можно выполнить с помощью операции чередования. Выполняется с использованием нескольких процессоров ЦП
Преимущество ЦП увеличивает объем работы, выполняемой за один раз. Потоки минимизируют затраты на развертывание и увеличивают количество откликов графического интерфейса.
Используйте Он использует переключение контента. Потоки используют несколько процессоров для работы различных процессов.
Единицы обработки Для правильной работы требуется один процессор. Для этого требуется несколько процессорные блоки для выполнения любой задачи.
Ограничения Потреблять больше энергии при увеличении нагрузки В случае одновременного выполнения нескольких процессов мы можем наблюдать координацию между ОС, ядром и потоками.
Пример Он может выполнять несколько приложений одновременно. Выполнение поисковых роботов в кластере.

Заключительные слова

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

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

Cores- vs-Threads

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

Личное сравнение ядер и потоков (инфографика)

Ниже приведены 9 лучших сравнений между ядрами и потоками:

Hadoop, наука о данных, статистика и др.

 Информация о ядрах и потоках

Ключевые различия между ядрами и потоками

Давайте обсудим некоторые из основных ключевых различий между ядрами и потоками:

1. Работа ядра и потока

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

2. Многозадачность процессоров

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

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

Все в одном наборе Data Science (360+ курсов, 50+ проектов) 360+ онлайн-курсов | 1500+ часов | Поддающиеся проверке сертификаты | Пожизненный доступ
4,7 (3220 оценок)

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

3. Важные примечания о процессорах

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

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

Сравнительная таблица

Давайте посмотрим на основные сравнения между ядрами и потоками. Изучив эту таблицу, вы получите отличные знания о функциях этого программного обеспечения.

Ключевые атрибуты Основной Тема
Определение Ядро определяется как задача, переданная ЦП для выполнения своих действий.Ядра — это отдельные физические компоненты Thread помогает ядру эффективно выполнять свою задачу. Поток — это виртуальный компонент, который обрабатывает задачи ядер.
Метод работы Ядро основано на процесс поднятия тяжестей. Количество задач, которые можно выполнять одновременно, ограничено одной. В играх он поддерживает многоядерность. Он рассматривает следующий поток только в том случае, если предыдущий поток ненадежен или содержит недостаточно данных для управления задачей Потоки применяются к ядрам для эффективного управления своей задачей и обработки графика их ЦП. .
Развертывание Можно реализовать с помощью операции чередования. Потоки выполняются с использованием нескольких процессоров ЦП
Процессорные блоки Даже одиночные процессорные блоки возможно Требуется несколько процессоров для выполнения и назначения задачи ядру
Пример Выполнение множества приложений одновременно Выполнение с помощью поисковых роботов в кластере.
Преимущества Увеличение количества выполненных задач. Процесс повышает скорость вычислений и t пропускная способность минимизирует стоимость развертывания и увеличивает время отклика графического интерфейса
Ограничения Требуется больше энергопотребления на время повышенной нагрузки. Если одновременно выполняется много процессов, есть вероятность координации между операционной системой, ядром и потоками
Применения Когда сердцевина и нить работают вместе, производительность может увеличиться. Таким образом, он в основном применяется в играх В сочетании с ядром он широко применяется в программном обеспечении, ориентированном на производительность, таком как редактирование видео для процессоров клиентского уровня
Свойства Поддерживает параллельное выполнение или многоядерность. Задача разбита на множество частей, и каждая выполняет поставленные задачи. Но его можно выполнить только в многоядерном процессе, который используется в коммерческих целях. Многопоточность — это уникальная функция, которая запускает несколько потоков для выполнения общей задачи в ядре. . Смартфоны дают живой пример многопоточности. Чтобы открыть приложение, оно извлекает данные из Интернета и отображает их в графическом интерфейсе для отображения требуемой информации.

Рекомендуемые статьи

Это руководство по сравнению ядер и потоков. Здесь мы обсудим ключевые различия между ядрами и потоками с помощью инфографики и сравнительной таблицы. Вы также можете ознакомиться с другими нашими статьями по теме, чтобы узнать больше –

Читайте также:

  • ПК замедляется после установки видеокарты
  • 8 ГБ ОЗУ — это сколько памяти
  • Нет d в списке назначенных букв диска
  • Какой процессор лучше helio g95 или snapdragon 720g
  • Как разобрать трансформаторный импульсный блок питания

Процессоры, ядра и потоки. Топология систем

В этой статье я попытаюсь описать терминологию, используемую для описания систем, способных исполнять несколько программ параллельно, то есть многоядерных, многопроцессорных, многопоточных. Разные виды параллелизма в ЦПУ IA-32 появлялись в разное время и в несколько непоследовательном порядке. Во всём этом довольно легко запутаться, особенно учитывая, что операционные системы заботливо прячут детали от не слишком искушённых прикладных программ.

Используемая далее терминология используется в документации процессорам Intel. Другие архитектуры могут иметь другие названия для похожих понятий. Там, где они мне известны, я буду их упоминать.

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

Предупреждение о знаках ®, ™, © в статье

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

Процессор

Конечно же, самый древний, чаще всего используемый и неоднозначный термин — это «процессор».

В современном мире процессор — это то (package), что мы покупаем в красивой Retail коробке или не очень красивом OEM-пакетике. Неделимая сущность, вставляемая в разъём (socket) на материнской плате. Даже если никакого разъёма нет и снять его нельзя, то есть если он намертво припаян, это один чип.

Мобильные системы (телефоны, планшеты, ноутбуки) и большинство десктопов имеют один процессор. Рабочие станции и сервера иногда могут похвастаться двумя или больше процессорами на одной материнской плате.

Поддержка нескольких центральных процессоров в одной системе требует многочисленных изменений в её дизайне. Как минимум, необходимо обеспечить их физическое подключение (предусмотреть несколько сокетов на материнской плате), решить вопросы идентификации процессоров (см. далее в этой статье, а также мою предыдущую заметку), согласования доступов к памяти и доставки прерываний (контроллер прерываний должен уметь маршрутизировать прерывания на несколько процессоров) и, конечно же, поддержки со стороны операционной системы. Я, к сожалению, не смог найти документального упоминания момента создания первой многопроцессорной системы на процессорах Intel, однако Википедия утверждает, что Sequent Computer Systems поставляла их уже в 1987 году, используя процессоры Intel 80386. Широко распространённой поддержка же нескольких чипов в одной системе становится доступной, начиная с Intel® Pentium.

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

К взлёту готов! Intel® Desktop Board D5400XS

Ядро

Исторически многоядерность в Intel IA-32 появилась позже Intel® HyperThreading, однако в логической иерархии она идёт следующей.

Казалось бы, если в системе больше процессоров, то выше её производительность (на задачах, способных задействовать все ресурсы). Однако, если стоимость коммуникаций между ними слишком велика, то весь выигрыш от параллелизма убивается длительными задержками на передачу общих данных. Именно это наблюдается в многопроцессорных системах — как физически, так и логически они находятся очень далеко друг от друга. Для эффективной коммуникации в таких условиях приходится придумывать специализированные шины, такие как Intel® QuickPath Interconnect. Энергопотребление, размеры и цена конечного решения, конечно, от всего этого не понижаются. На помощь должна прийти высокая интеграция компонент — схемы, исполняющие части параллельной программы, надо подтащить поближе друг к другу, желательно на один кристалл. Другими словами, в одном процессоре следует организовать несколько ядер, во всём идентичных друг другу, но работающих независимо.

Первые многоядерные процессоры IA-32 от Intel были представлены в 2005 году. С тех пор среднее число ядер в серверных, десктопных, а ныне и мобильных платформах неуклонно растёт.

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

Микроснимок четырёхядерного процессора Intel с кодовым именем Nehalem. Выделены отдельные ядра, общий кэш третьего уровня, а также линки QPI к другим процессорам и общий контроллер памяти.

Гиперпоток

До примерно 2002 года единственный способ получить систему IA-32, способную параллельно исполнять две или более программы, состоял в использовании именно многопроцессорных систем. В Intel® Pentium® 4, а также линейке Xeon с кодовым именем Foster (Netburst) была представлена новая технология — гипертреды или гиперпотоки, — Intel® HyperThreading (далее HT).

Ничто не ново под луной. HT — это частный случай того, что в литературе именуется одновременной многопоточностью (simultaneous multithreading, SMT). В отличие от «настоящих» ядер, являющихся полными и независимыми копиями, в случае HT в одном процессоре дублируется лишь часть внутренних узлов, в первую очередь отвечающих за хранение архитектурного состояния — регистры. Исполнительные же узлы, ответственные за организацию и обработку данных, остаются в единственном числе, и в любой момент времени используются максимум одним из потоков. Как и ядра, гиперпотоки делят между собой кэши, однако начиная с какого уровня — это зависит от конкретной системы.

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

Ограничения потоков

В каких случаях наличие «нечестной» многоядерности в виде HT оправдано? Если один поток приложения не в состоянии загрузить все исполняющие узлы внутри ядра, то их можно «одолжить» другому потоку. Это типично для приложений, имеющих «узкое место» не в вычислениях, а при доступе к данным, то есть часто генерирующих промахи кэша и вынужденных ожидать доставку данных из памяти. В это время ядро без HT будет вынуждено простаивать. Наличие же HT позволяет быстро переключить свободные исполняющие узлы к другому архитектурному состоянию (т.к. оно как раз дублируется) и исполнять его инструкции. Это — частный случай приёма под названием latency hiding, когда одна длительная операция, в течение которой полезные ресурсы простаивают, маскируется параллельным выполнением других задач. Если приложение уже имеет высокую степень утилизации ресурсов ядра, наличие гиперпотоков не позволит получить ускорение — здесь нужны «честные» ядра.

Типичные сценарии работы десктопных и серверных приложений, рассчитанных на машинные архитектуры общего назначения, имеют потенциал к параллелизму, реализуемому с помощью HT. Однако этот потенциал быстро «расходуется». Возможно, по этой причине почти на всех процессорах IA-32 число аппаратных гиперпотоков не превышает двух. На типичных сценариях выигрыш от использования трёх и более гиперпотоков был бы невелик, а вот проигрыш в размере кристалла, его энергопотреблении и стоимости значителен.

Другая ситуация наблюдается на типичных задачах, выполняемых на видеоускорителях. Поэтому для этих архитектур характерно использование техники SMT с бóльшим числом потоков. Так как сопроцессоры Intel® Xeon Phi (представленные в 2010 году) идеологически и генеалогически довольно близки к видеокартам, на них может быть четыре гиперпотока на каждом ядре — уникальная для IA-32 конфигурация.

Логический процессор

Из трёх описанных «уровней» параллелизма (процессоры, ядра, гиперпотоки) в конкретной системе могут отсутствовать некоторые или даже все. На это влияют настройки BIOS (многоядерность и многопоточность отключаются независимо), особенности микроархитектуры (например, HT отсутствовал в Intel® Core™ Duo, но был возвращён с выпуском Nehalem) и события при работе системы (многопроцессорные сервера могут выключать отказавшие процессоры в случае обнаружения неисправностей и продолжать «лететь» на оставшихся). Каким образом этот многоуровневый зоопарк параллелизма виден операционной системе и, в конечном счёте, прикладным приложениям?

Далее для удобства обозначим количества процессоров, ядер и потоков в некоторой системе тройкой (x, y, z), где x — это число процессоров, y — число ядер в каждом процессоре, а z — число гиперпотоков в каждом ядре. Далее я буду называть эту тройку топологией — устоявшийся термин, мало что имеющий с разделом математики. Произведение p = xyz определяет число сущностей, именуемых логическими процессорами системы. Оно определяет полное число независимых контекстов прикладных процессов в системе с общей памятью, исполняющихся параллельно, которые операционная система вынуждена учитывать. Я говорю «вынуждена», потому что она не может управлять порядком исполнения двух процессов, находящихся на различных логических процессорах. Это относится в том числе к гиперпотокам: хотя они и работают «последовательно» на одном ядре, конкретный порядок диктуется аппаратурой и недоступен для наблюдения или управления программам.

Чаще всего операционная система прячет от конечных приложений особенности физической топологии системы, на которой она запущена. Например, три следующие топологии: (2, 1, 1), (1, 2, 1) и (1, 1, 2) — ОС будет представлять в виде двух логических процессоров, хотя первая из них имеет два процессора, вторая — два ядра, а третья — всего лишь два потока.

Windows Task Manager показывает 8 логических процессоров; но сколько это в процессорах, ядрах и гиперпотоках?

Linux top показывает 4 логических процессора.

Это довольно удобно для создателей прикладных приложений — им не приходится иметь дело с зачастую несущественными для них особенностями аппаратуры.

Программное определение топологии

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

Информация о топологии системы в целом, а также положении каждого логического процессора в IA-32 доступна с помощью инструкции CPUID. С момента появления первых многопроцессорных систем схема идентификации логических процессоров несколько раз расширялась. К настоящему моменту её части содержатся в листах 1, 4 и 11 CPUID. Какой из листов следует смотреть, можно определить из следующей блок-схемы, взятой из статьи [2]:

Я не буду здесь утомлять всеми подробностями отдельных частей этого алгоритма. Если возникнет интерес, то этому можно посвятить следующую часть этой статьи. Отошлю интересующегося читателя к [2], в которой этот вопрос разбирается максимально подробно. Здесь же я сначала кратко опишу, что такое APIC и как он связан с топологией. Затем рассмотрим работу с листом 0xB (одиннадцать в десятичном счислении), который на настоящий момент является последним словом в «апикостроении».

APIC ID

Local APIC (advanced programmable interrupt controller) — это устройство (ныне входящее в состав процессора), отвечающее за работу с прерываниями, приходящими к конкретному логическому процессору. Свой собственный APIC есть у каждого логического процессора. И каждый из них в системе должен иметь уникальное значение APIC ID. Это число используется контроллерами прерываний для адресации при доставке сообщений, а всеми остальными (например, операционной системой) — для идентификации логических процессоров. Спецификация на этот контроллер прерываний эволюционировала, пройдя от микросхемы Intel 8259 PIC через Dual PIC, APIC и xAPIC к x2APIC .

В настоящий момент ширина числа, хранящегося в APIC ID, достигла полных 32 бит, хотя в прошлом оно было ограничено 16, а ещё раньше — только 8 битами. Нынче остатки старых дней раскиданы по всему CPUID, однако в CPUID.0xB.EDX[31:0] возвращаются все 32 бита APIC ID. На каждом логическом процессоре, независимо исполняющем инструкцию CPUID, возвращаться будет своё значение.

Выяснение родственных связей

Значение APIC ID само по себе ничего не говорит о топологии. Чтобы узнать, какие два логических процессора находятся внутри одного физического (т.е. являются «братьями» гипертредами), какие два — внутри одного процессора, а какие оказались и вовсе в разных процессорах, надо сравнить их значения APIC ID. В зависимости от степени родства некоторые их биты будут совпадать. Эта информация содержится в подлистьях CPUID.0xB, которые кодируются с помощью операнда в ECX. Каждый из них описывает положение битового поля одного из уровней топологии в EAX[5:0] (точнее, число бит, которые нужно сдвинуть в APIC ID вправо, чтобы убрать нижние уровни топологии), а также тип этого уровня — гиперпоток, ядро или процессор, — в ECX[15:8].

У логических процессоров, находящихся внутри одного ядра, будут совпадать все биты APIC ID, кроме принадлежащих полю SMT. Для логических процессоров, находящихся в одном процессоре, — все биты, кроме полей Core и SMT. Поскольку число подлистов у CPUID.0xB может расти, данная схема позволит поддержать описание топологий и с бóльшим числом уровней, если в будущем возникнет необходимость. Более того, можно будет ввести промежуточные уровни между уже существующими.

Важное следствие из организации данной схемы заключается в том, что в наборе всех APIC ID всех логических процессоров системы могут быть «дыры», т.е. они не будут идти последовательно. Например, во многоядерном процессоре с выключенным HT все APIC ID могут оказаться чётными, так как младший бит, отвечающий за кодирование номера гиперпотока, будет всегда нулевым.

Отмечу, что CPUID.0xB — не единственный источник информации о логических процессорах, доступный операционной системе. Список всех процессоров, доступный ей, вместе с их значениями APIC ID, кодируется в таблице MADT ACPI [3, 4].

Операционные системы и топология

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

В Linux информация о топологии содержится в псевдофайле /proc/cpuinfo , а также выводе команды dmidecode . В примере ниже я фильтрую содержимое cpuinfo на некоторой четырёхядерной системе без HT, оставляя только записи, относящиеся к топологии:

Скрытый текст

ggg@shadowbox:~$ cat /proc/cpuinfo |grep 'processor\|physical\ id\|siblings\|core\|cores\|apicid' processor : 0 physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 processor : 1 physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 1 initial apicid : 1 processor : 2 physical id : 0 siblings : 4 core id : 1 cpu cores : 2 apicid : 2 initial apicid : 2 processor : 3 physical id : 0 siblings : 4 core id : 1 cpu cores : 2 apicid : 3 initial apicid : 3 

В FreeBSD топология сообщается через механизм sysctl в переменной kern.sched.topology_spec в виде XML:

Скрытый текст

user@host:~$ sysctl kern.sched.topology_spec kern.sched.topology_spec:  0, 1, 2, 3, 4, 5, 6, 7  0, 1, 2, 3, 4, 5, 6, 7  0, 1 THREAD groupSMT group  2, 3 THREAD groupSMT group  4, 5 THREAD groupSMT group  6, 7 THREAD groupSMT group       

В MS Windows 8 сведения о топологии можно увидеть в диспетчере задач Task Manager.

Скрытый текст

Также их предоставляет консольная утилита Sysinternals Coreinfo и API вызов GetLogicalProcessorInformation.

Полная картина

Проиллюстрирую ещё раз отношения между понятиями «процессор», «ядро», «гиперпоток» и «логический процессор» на нескольких примерах.

Система (2, 2, 2)

Система (2, 4, 1)

Система (4, 1, 1)

Прочие вопросы

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

Кэши

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

Лицензирование

Некоторые программные продукты поставляются числом лицензий, определяемых количеством процессоров в системе, на которой они будут использоваться. Другие — числом ядер в системе. Наконец, для определения числа лицензий число процессоров может умножаться на дробный «core factor», зависящий от типа процессора!

Виртуализация

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

Спасибо за внимание!

Литература
  1. Intel Corporation. Intel® 64 and IA-32 Architectures Software Developer’s Manual. Volumes 1–3, 2014. www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
  2. Shih Kuo. Intel® 64 Architecture Processor Topology Enumeration, 2012 — software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration
  3. OSDevWiki. MADT. wiki.osdev.org/MADT
  4. OSDevWiki. Detecting CPU Topology. wiki.osdev.org/Detecting_CPU_Topology_%2880×86%29

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *