Что такое поток в процессоре: Как проверить количество ядер и потоков в моем процессоре?

Содержание

Количество потоков процессора что это?

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

Поток в процессоре – он же логический процессор

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

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

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

Материнская плата с двумя процессорами

Но вопрос теперь был в другом. Стоимость таких систем была нецелесообразно высокой из-за сложности построения.

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

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

В настоящее время процессоры делаются многоядерными и многопоточными. Например, тот же Ryzen 5 2600 имеет 6 ядер, каждое из которых работает в два потока. Итого 12 потоков. Конечно, его нельзя назвать 12 ядерным (хотя многие по ошибке так делают), но производительность его во многих оптимизированных под многопоточность программах и играх будет на порядок выше, чем у аналогичного с 6 ядрами, каждое из которых работает в один поток.

Создание же процессора с полноценными 12 ядрами будет на порядок дороже и сложнее.

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

Вывод

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

Как узнать сколько потоков в процессоре?

Современные процессоры состоят из нескольких ядер, этим никого уже не удивить. Но вот раньше, давно, многие процессоры были одноядерными, например Интел Пентиум 2/3, некоторые модели АМД.

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

Вот эта функция и называется потоки в процессоре. 1 ядро — 2 потока. У компании Интел данная технология называется Hyper-threading.

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

Теперь активируем вкладку Производительность, а там выбираем ЦП и смотрим на графу Логические процессоры — там и показывает сколько у вас потоков:

Важно понимать:

  1. Если в процессоре 4 ядра и 4 потока — означает что процессор не поддерживает потоков.
  2. Если 4 ядра и 8 потоков — разумеется наоборот, процессор потоки поддерживает.
  3. То есть если количество потоков равно количеству ядер — то технологии потоков в проце нет.

РЕКЛАМА

Операционная система Windows видит потоки как отдельные ядра процессора:

Но лучше всего для этого использовать специальный софт — например утилиту CPU-Z, это крохотная бесплатная утилита показывает не только количество потоков, но и частоту, модель процессора, размер кэша, поддерживаемые технологии и многое другое. Количество потоков показывается в графе Threads, а в графе Cores будет указано количество ядер:

В поле Name указывается модель процессора, а там где Core Speed — частота.

Увеличивают ли потоки производительность? В принципе да. Процессор с потоками стоит дороже, производительность конечно увеличивается не в два раза, но примерно в полтора — точно. Наличие потоков особенно дает эффект если приложение или игра оптимизированы под многопоточность.

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

Узнаём количество потоков в процессоре при помощи диспетчера задач, диспетчера устройств и сторонних программ

При выборе процессора недостаточно обращать внимание на какую-то одну его техническую характеристику, важно учитывать все параметры, поскольку то, что непрофессионалу нередко представляется несущественным, на деле играет главную роль. Например, большинство пользователей придерживаются той точки зрения, согласно которой чем больше ядер имеет процессор, тем он производительней. Это верно, но далеко не всегда. Так, если сравнить результаты тестов производительности четырехядерных процессоров от Intel и восьмиядерных процессоров от AMD, то можно будет увидеть, что в большинстве случаев первые оказываются более производительными, чем вторые. Почему? Потому что производительные возможности CPU обуславливаются не только количеством ядер, но и другими параметрами, например, количеством потоков. Но что такое потоки и как узнать, сколько потоков поддерживается процессором?

Как узнать сколько потоков в процессоре


Процессоры и их ядра

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

• Интерфейса системной шины.
• Контроллера оперативной памяти.
• Буферной памяти.
• Одного, двух или более ядер. 

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

Что такое потоки

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

Как определить количество потоков в CPU

Теперь, когда вы имеете общее представление о ядрах и потоках, перейдем к нашему основному вопросу: как определить количество потоков в процессоре. Это не так уже и сложно, вам даже не понадобятся сторонние утилиты. 

Диспетчер задач и Диспетчер устройств 

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

Сторонние программы

Если на компьютере у вас имеются такие программы как CPU-Z, Speccy или Process Explorer, пожалуйста, можете использовать их. В CPU-Z интересующую вас информацию можно найти на вкладке CPU, количество потоков соответствует значению параметра Threads. 
В Speccy нужно перейти в раздел «Центральный процессор», в котором количество потоков будет указано в начале списка технических характеристик. Потоки — такое-то количество. 
Наконец, в Process Explorer количество логических процессоров, то бишь потоков, можно просмотреть в окошке SystemInformation. Чтобы его открыть, кликните по миниатюре с графиком загруженности процессора, а когда окно откроется, посмотрите значение Logical Processors (логические процессоры). 
Ну что же, теперь вы в курсе, как узнать количество потоков в процессоре. Тут, наверное, у наших читателей может возникнуть вопрос: получается, чем больше потоков в CPU, тем он мощнее? И да, и нет, многое зависит от того, какая операционная система используется, и какая программа исполняется. Если программа не поддерживает многопоточность, в процессе работы с ней особого повышения производительности вы не ощутите.

Как узнать сколько потоков в процессоре

У многих процессоров Intel есть поддержка технологии под названием Hyper-threading. Данная технология позволяет выполнять сразу 2 потока команд на одном ядре процессора.

Таким образом удается более эффективно использовать вычислительную мощность ядра. Но, технология Hyper-threading используется далеко не во всех процессорах Intel. Технология Hyper-threading присутствует в процессорах Core i3, Core i7, а также в некоторых новых Pentium и мобильных Core i5.

У процессоров AMD с архитектурой Zen также есть технология, создающая по два потока вычислений на ядро. И у AMD также не все процессоры получают поддержку данной технологии.

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

Способ № 1. Диспетчер задач.

Самый простой способ узнать сколько потоков в вашем процессоре, это посмотреть в «Диспетчере задач». Для открытия «Диспетчера задач» можно воспользоваться классической комбинацией клавиш CTRL-SHIFT-DELETE. Если у вас операционная система Windows 7 или более новая, то это можно сделать еще и с помощью CTRL-SHIFT-ESC.

После открытия «Диспетчера задач» нужно перейти на вкладку «Быстродействие».

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

Если у вас Windows 8 или Windows 10, то хронология нагрузки на процессор может отображаться одним графиком. В этом случае вам нужно сначала переключиться на отображение хронологии по логическим процессорам (потокам). Для этого нужно кликнуть правой кнопкой мышки и выбрать «Изменить график – Логические процессоры».

После этого в «Диспетчере задач» появятся отдельные графики для каждого потока вашего процессора. Например, на скриншоте внизу отображается 4 графика, следовательно, в используемом процессоре 4 потока.

Кроме этого, в «Диспетчере задач» Windows 8/10 прямым текстом указывается сколько потоков в процессоре. Сразу под графиками есть блок с информацией. Там в строке «Логические процессоры» указано количество потоков процессора.

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

Способ № 2. Программы.

Пожалуй, самой известной программой для получения информации о характеристиках процессора является программа CPU-Z. Данная программа является бесплатной, и вы можете скачать ее с официального сайта. Если вы хотите узнать сколько потоков в процессоре, то вам нужно запустить CPU-Z на своем компьютере и посмотреть значение «Threads», которое находится в правом нижнем углу программы на вкладке «CPU». На скриншоте внизу видно, что у процессора 4 потока.

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

Среди прочего с ее помощью можно узнать и количество потоков процессора. Для этого нужно перейти в раздел «CPU» и посмотреть значение «Threads».

Ядра, потоки и частота ядра CPU. Сколько нужно? — АЙТИликбез

Технология Hyper-Threading от Intel / Процессоры и память

В прошлом мы рассказывали о технологии одновременной многопоточности (Simultaneous Multi-Threading — SMT), которая применяется в процессорах Intel. И хотя первоначально она создавалась под кодовым именем «технология Джексона» (Jackson Technology) как возможный, вероятный вариант, Intel официально анонсировала свою технологию на форуме IDF прошлой осенью. Кодовое имя Jackson было заменено более подходящим Hyper-Threading. Итак, для того чтобы разобраться, как работает новая технология, нам нужны кое-какие первоначальные знания. А именно, нам нужно знать, что такое поток, как выполняются эти потоки. Почему работает приложение? Как процессор узнает, какие операции и над какими данными он должен совершать? Вся эта информация содержится в откомпилированном коде выполняемого приложения. И как только приложение получает от пользователя какую-либо команду, какие-либо данные, – процессору сразу же отправляются потоки, в результате чего он и выполняет то, что должен выполнить в ответ на запрос пользователя. С точки зрения процессора, поток – это набор инструкций, которые необходимо выполнить. Когда в вас попадает снаряд в Quake III Arena, или когда вы открываете документ Microsoft Word, процессору посылается определенный набор инструкций, которые он должен выполнить.

Процессор точно знает, где брать эти инструкции. Для этой цели предназначен редко упоминаемый регистр, называемый счетчиком команд (Program Counter, PC). Этот регистр указывает на место в памяти, где хранится следующая для выполнения команда. Когда поток отправляется на процессор, адрес памяти потока загружается в этот счетчик команд, чтобы процессор знал, с какого именно места нужно начать выполнение. После каждой инструкции значение этого регистра увеличивается. Весь этот процесс выполняется до завершения потока. По окончании выполнения потока, в счетчик команд заносится адрес следующей инструкции, которую нужно выполнить. Потоки могут прерывать друг друга, при этом процессор запоминает значение счетчика команд в стеке и загружает в счетчик новое значение. Но ограничение в этом процессе все равно существует – в каждую единицу времени можно выполнять лишь один поток.

Существует общеизвестный способ решения данной проблемы. Заключается он в использовании двух процессоров – если один процессор в каждый момент времени может выполнять один поток, то два процессора за ту же единицу времени могут выполнять уже два потока. Отметим, что этот способ не идеален. При нем возникает множество других проблем. С некоторыми, вы уже, вероятно, знакомы. Во-первых, несколько процессоров всегда дороже, чем один. Во-вторых, управлять двумя процессорами тоже не так-то просто. Кроме того, не стоит забывать о разделении ресурсов между процессорами. Например, до появления чипсета AMD 760MP, все x86 платформы с поддержкой многопроцессорности разделяли всю пропускную способность системной шины между всеми имеющимися процессорами. Но основной недостаток в другом – для такой работы и приложения, и сама операционная система должны поддерживать многопроцессорность. Способность распределить выполнение нескольких потоков по ресурсам компьютера часто называют многопоточностью. При этом и операционная система должна поддерживать многопоточность. Приложения также должны поддерживать многопоточность, чтобы максимально эффективно использовать ресурсы компьютера. Не забывайте об этом, когда мы будем рассматривать ещё один подход решения проблемы многопоточности, новую технологию Hyper-Threading от Intel.

Производительности всегда мало

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

Взять, к примеру, Pentium 4. Процессор обладает, в общей сложности, семью исполнительными устройствами, два из которых могут работать с удвоенной скоростью – две операции (микрооперации) за такт. Но в любом случае, вы бы не нашли программы, которая смогла бы заполнить инструкциями все эти устройства. Обычные программы обходятся несложными целочисленными вычислениями, да несколькими операциями загрузки и хранения данных, а операции с плавающей точкой остаются в стороне. Другие же программы (например, Maya) главным образом загружают работой устройства для операций с плавающей точкой.

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

1+1
10+1
Сохранить предыдущий результат

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

Итак, вы видите, что в каждый такт используется только 33% всех исполнительных устройств. В этот раз FPU остается вообще незадействованным. В соответствии с данными Intel, большинство программ для IA-32 x86 используют не более 35% исполнительных устройств процессора Pentium 4.

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

И снова загруженность исполнительных устройств составляет лишь на 33%.

Хорошим выходом из данной ситуации будет параллелизм на уровне инструкций (Instruction Level Parallelism — ILP). В этом случае одновременно выполняются сразу нескольких инструкций, поскольку процессор способен заполнять сразу несколько параллельных исполнительных устройств. К сожалению, большинство x86 программ не приспособлены к ILP в должной степени. Поэтому приходится изыскивать другие способы увеличения производительности. Так, например, если бы в системе использовалось сразу два процессора, то можно было бы одновременно выполнять сразу два потока. Такое решение называется параллелизмом на уровне потоков (thread-level parallelism, TLP). К слову сказать, такое решение достаточно дорогое.

Какие же ещё существуют способы увеличения исполнительной мощи современных процессоров архитектуры x86?

Hyper-Threading

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

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

Hyper-Threading – это название технологии, существовавшей и ранее вне x86 мира, технологии одновременной многопоточности (Simultaneous Multi-Threading, SMT). Идея этой технологии проста. Один физический процессор представляется операционной системе как два логических процессора, и операционная система не видит разницы между одним SMT процессором или двумя обычными процессорами. В обоих случаях операционная система направляет потоки как на двухпроцессорную систему. Далее все вопросы решаются на аппаратном уровне.

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

Официально технология была объявлена на форуме Intel Developer Forum прошлой осенью. Технология демонстрировалась на процессоре Xeon, где проводился рендеринг с помощью Maya. В этом тесте Xeon с Hyper-Threading показал на 30% лучшие результаты, чем стандартный Xeon. Приятный прирост производительности, но больше всего интересно то, что технология уже присутствует в ядрах Pentium 4 и Xeon, только она выключена.

Технология пока ещё не выпущена, однако те из вас, кто приобрел 0,13 мкм Xeon, и установил этот процессор на платы с обновленным BIOS, наверняка были удивлены, увидев в BIOS опцию включения/отключения Hyper-Threading.

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

Остается очень интересный вопрос, почему Intel хочет оставить эту опцию выключенной?

Углубляемся в технологию

Помните те два потока из предыдущих примеров? Давайте на этот раз предположим, что наш процессор оснащен Hyper-Threading. Посмотрим, что получится, если мы попытаемся одновременно выполнить эти два потока:

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

Итак, что же мы видим? Параллелизм на уровне потоков дал сбой – исполнительные устройства стали использоваться ещё менее эффективно. Вместо параллельного выполнения потоков, процессор выполняет их медленнее, чем если бы он выполнял их без Hyper-Threading. Причина довольно проста. Мы пытались одновременно выполнить сразу два очень похожих потока. Ведь оба они состоят из операций по загрузке/сохранению и операций сложения. Если бы мы параллельно запускали «целочисленное» приложение и приложение, работающее с плавающей точкой, мы бы оказались куда в лучшей ситуации. Как видим, эффективность Hyper-Threading сильно зависит от вида нагрузки на ПК.

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

На рабочих же станциях возможностей для увеличения производительности у Hyper-Threading больше. Но с другой стороны, все зависит от конкретного использования компьютера. Рабочая станция может означать как high-end компьютер для обработки 3D графики, так и просто сильно нагруженный компьютер.

Наибольший же прирост в производительности от использования Hyper-Threading наблюдается в серверных приложениях. Главным образом это объясняется широким разнообразием посылаемых процессору операций. Сервер баз данных, использующих транзакции, может работать на 20-30% быстрее при включенной опции Hyper-Threading. Чуть меньший прирост производительности наблюдается на веб-серверах и в других сферах.

Максимум эффективности от Hyper-Threading

Вы думаете, Intel разработала Hyper-Threading только лишь для своей линейки серверных процессоров? Конечно же, нет. Если бы это было так, они бы не стали впустую тратить место на кристалле других своих процессоров. По сути, архитектура NetBurst, использующаяся в Pentium 4 и Xeon, как нельзя лучше подходит для ядра с поддержкой одновременной многопоточности. Давайте ещё раз представим себе процессор. На этот раз в нем будет ещё одно исполнительное устройство – второе целочисленное устройство. Посмотрим, что случится, если потоки будут выполняться обоими устройствами:

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

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

Используя инструкцию HALT, можно приостановить работу одного из логических процессоров, и тем самым увеличить производительность приложений, которые не выигрывают от Hyper-Threading. Итак, приложение не станет работать медленнее, вместо этого один из логических процессоров будет остановлен, и система будет работать на одном логическом процессоре – производительность будет такой же, что и на однопроцессорных компьютерах. Затем, когда приложение сочтет, что от Hyper-Threading оно выиграет в производительности, второй логический процессор просто возобновит свою работу.

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

Выводы

Хотя мы все были крайне обрадованы, когда до нас дошли слухи об использовании Hyper-Threading в ядрах всех современных Pentium 4/Xeon, все же это не будет бесплатной производительностью на все случаи жизни. Причины ясны, и технологии предстоит преодолеть ещё многое, прежде чем мы увидим Hyper-Threading, работающую на всех платформах, включая домашние компьютеры. А при поддержке разработчиков, технология определенно может оказаться хорошим союзником Pentium 4, Xeon, и процессорам будущего поколения от Intel.

При существующих ограничениях и при имеющейся технологии упаковки, Hyper-Threading кажется более разумным выбором для потребительского рынка, чем, например, подход AMD в SledgeHammer – в этих процессорах используется целых два ядра. И до тех пор, пока не станут совершенными технологии упаковки, такие как Bumpless Build-Up Layer, стоимость разработки многоядерных процессоров может оказаться слишком высокой.

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

Hyper-Threading ещё некоторое время не появится на рынке обычных ПК, но при хорошей поддержке разработчиков, она может стать очередной технологией, которая опустится с серверного уровня до простых компьютеров.

Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

Технологии многопоточности процессоров: принцип работы и сферы применения | Процессоры | Блог

Физические ядра, логические ядра, технологии многопоточности — все это разрабатывалось инженерами для увеличения производительности компьютерного железа, требования к которому постоянно растут. Программы и игры требуют все больше ресурсов. Как же производители процессоров увеличивают мощность своих детищ? Процессор является «сердцем» компьютера и выполняет вычисления, необходимые для работы софта. Модели CPU отличаются между собой даже в рамках одного семейства. Например, Intel Core i7 отличается от i5 технологией многопоточности под названием «Hyper-Threading», о которой далее пойдет речь (Core i3, i9, и некоторые Pentium также обладают данной технологией).

Принцип работы процессорных ядер и многопоточности

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

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

Данный конвейер можно представить, как настоящую сборочную линию на заводе — рабочий (ядро) выполняет работу, поступающую к нему на ленту. И если необходимо взять нужный инструмент, работник отходит, оставляя конвейер простаивать без работы. То есть, исполняемая задача прерывается. Инструментом, за которым пошел рабочий, в данном случае является информация из оперативной памяти или же L3 кэша. Поскольку L1 и L2 кэш намного быстрее, чем любая другая память в компьютере, работа с вычислениями теряет в скорости.

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

Способы увеличения производительности процессоров

Разгон

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

Увеличение количества потоков на ядро

В процессорах Intel данная технология носит название Hyper-Threading, а в процессорах от Amd — SMT. Производители добавляют еще один регистр для работы со вторым конвейером. Пока один поток простаивает, ожидая нужные данные, свободная вычислительная мощность может быть использована вторым потоком. На кристалл же добавлен еще один контроллер прерываний и набор регистров.

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

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

Именно по этой причине процессоры серии i7 «горячее» и имеют больше кэша по сравнению с i5. Использование технологии многопоточности может принести примерно до 30 % прироста производительности. Все это применимо как к Intel Hyper-Threading, так и к AMD SMT, поскольку технологии во многом схожи. Может возникнуть вопрос: «Если можно добавить второй поток, то почему бы не добавить третий и четвертый?» Это реализуемо, но не имеет смысла, поскольку кэш одного ядра достаточно мал для большего количества потоков и прироста производительности практически не будет.

Увеличение количества ядер

Это самый действенный способ решения проблемы, поскольку каждый конвейер теперь располагает своим FPU, ALU и кэшем, который не придется делить с другим потоком. Разные процессы используют разные ядра, из-за чего реже происходят кэш-промахи и конфликты приоритетных задач. Способ, разумеется, несет в себе некоторые издержки для производителей: дороговизна разработки и производства, увеличение тепловыделения и размера кристалла, и, как результат, повышается итоговая стоимость процессора. 

Сферы применения многопоточных процессоров

С развитием компьютерных технологий перечень программ, использующих многопоточность, неуклонно растет. Это дает огромный простор разработчикам для создания нового софта и игр. Например, сейчас каждый современный triple-A проект оптимизирован для многопоточных процессоров, что позволяет наслаждаться игрой, получая высокий уровень fps на многоядерном CPU.

Еще больше распространены многоядерные системы в среде разработчиков. Программы для 3D-моделирования, монтажа видео и создания музыки требуют параллельного выполнения большого количества задач, с чем хорошо справляются системы с Hyper-Threading или SMT. В операционных системах мощность одного потока может тратиться на фоновые задачи (Skype, браузер, мессенджер), в то время как остальные задействуются для тяжелой игры или программы.

Но далеко не всегда увеличение количества потоков означает увеличение общей производительности. Почему же SMT процессоры порой уступают немногопоточным собратьям? Дело в программной поддержке. Иногда плохо оптимизированные программы не могут отличать логический поток от настоящего ядра, из-за чего на одно ядро может попасть две тяжелых задачи и замедлить работу. Тем не менее, подобные технологии имеют огромный потенциал, главное — грамотно реализовать его на программном уровне.

Сколько ядер/потоков нужно современным играм? Углубленный тест на AMD Ryzen 7 3700X и Ryzen 9 3900X

::>Процессоры >2020 > Сколько ядер/потоков нужно современным играм? Углубленный тест на AMD Ryzen 7 3700X и Ryzen 9 3900X

10-04-2020

Страница 1 Страница 2 Одной страницей

Не так давно у нас вышел цикл геймплейных тестов процессоров AMD с количеством ядер от 6-ти до 12-ти в 24 потока. Там мы изучали эффективность использования современными играми многоядерных CPU, проводя между ними параллели. В комментариях вы неоднократно просили отключить у старших Ryzen часть ядер и потоков, изучив их производительность в актуальных играх. Этим мы и займемся с помощью Ryzen 9 3900X и Ryzen 7 3700X!

Первый состоит из пары CCD-чиплетов с вычислительными ядрами и кристалла cIOD, который отвечает за функции ввода-вывода. Все это соединяется между собой шиной Infinity Fabric второго поколения. На выходе получается 12 ядер в 24 потока с частотой от 3,8 до 4,6 ГГц, суммарный кеш L3 составляет 64 МБ, а TDP – 105 Вт.

У второго под крышкой один CCD и cIOD. Это дает 8 ядер в 16 потоков на скорости 3,6 – 4,4 ГГц, но «только» 32 МБ L3 при тепловом пакете 65 Вт. Важно, что чиплеты с ядрами не имеют прямого связывающего моста, а все межъядерное взаимодействие строится через I/O чиплет, который играет также и роль коммутатора. При тестировании сможем изучить влияние на производительность не только объема кеша, но и расположения ядер в разных чиплетах.

Переходим к тестовому стенду. В его состав входит люксовая материнская плата MSI MEG X570 GODLIKE формата EАТХ. На ее основе можно собрать как мощный игровой компьютер, так и высокопроизводительную рабочую станцию с несколькими видеокартами и кучей накопителей.

Охлаждали процессоры старой-доброй СЖО be quiet! SILENT LOOP 240mm.

Видеокарту взяли топовую – ASUS ROG STRIX GeForce RTX 2080 Ti.

Оперативка представлена красочным 16-гигабайтным комплектом CORSAIR VENGEANCE RGB PRO. Он работал на номинальной частоте 3600 МГц с таймингами 16-18-18-36.

Система, игры и весь сопутствующий софт установили на пару быстрых NVMe-накопителей: ADATA XPG SX8200 Pro объемом 512 ГБ и Seagate FireCuda 520 на 2 ТБ.

За качественное и бесперебойное питание отвечал SeaSonic PRIME TX-750 TITANIUM на 750 Вт. Он имеет сертификацию 80PLUS Titanium и перечень всевозможных защит, не говоря уже о всех необходимых коннекторах.

Пристанищем для «железа» послужил корпус RIOTORO GPX100 MORPHEUS. Благодаря полностью модульной конструкции он имеет широкие возможности индивидуальной настройки, что по достоинству оценят настоящие ПК-энтузиасты.

И куда ж без периферии – кушать ведь хочется всем. Клавиатура CORSAIR K70 RGB MK.2 Low Profile радует качественными материалами, надежными низкопрофильными переключателями CHERRY MX Red, рядом дополнительных кнопок и поддержкой программного обеспечения iCUE. Все это делает ее отличным игровым инструментом.

Мышка CORSAIR Nightsword RGB имеет эргономичный корпус, 8 программируемых клавиш и топовый оптический сенсор PixArt PMW3391. Лучше всего она проявляет себя в играх жанров MOBA и FPS.

С манипулятором прекрасно сочетается фирменный ковер CORSAIR MM350 Champion.

Универсальная гарнитура CORSAIR HS35 совместима с широким парком техники, включая ПК и консоли, хорошо сидит на голове и балует басистым звуком, позволяя раскрывать любые сцены в играх и фильмах.

Дабы в полной мере оценить все красоты виртуальных миров, взяли 27-дюймовый монитор ASUS ROG SWIFT PG279Q. 

Захват видео происходил с помощью внешний системы с AVerMedia Live Gamer Portable 2 Plus.

Перед тестом отметим два важных момента. Во-первых, мы не имитируем какой-либо процессор, а хотим на практике исследовать производительность при разном количестве ядер и потоков. Для этого в BIOS попарно отключали ядра в соседних CCX, параллельно активировав и деактивировав технологию логической многоядерности (SMT). Во-вторых, частоту CPU зафиксировали на отметке 4150 МГц, дабы исключить влияние динамического разгона на результаты тестов.

Переходим к играм, которые запускались в массовом разрешении Full HD в сочетании с минимальными и максимальными настройками графики!

Начнем с Assassins Creed Odyssey на максималках. Переход с 4 потоков на полноценные 4 ядра дает прирост скорости на 14-19%.

При наличии 8 потоков статистика улучшается на 7-29% – играть куда комфортнее. Дальше средняя скорость практически не растет, но с увеличением ядер/потоков просадки становятся меньше. Обратите внимание, что 12 потоков смотрятся лучше, чем 8 полноценных ядер. Кроме того, в паре 8 ядер/16 потоков версия с увеличенным L3 меньше просаживается.

На минималках переход с 4-х потоков на 4 ядра дает бонус производительности 23-52%. Дополнительные 4 потока обеспечивают сверху еще 38-46%, попутно опередив чистые 6 ядер.

У 12-поточной конфигурации показатели 1 и 0,1% Low лучше 8 ядер без SMT. Переезд на 16-потоков дает небольшой прирост по просадкам, причем у варианта с 64 МБ L3 результаты лучше. 

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

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

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

Однако у этой установки есть свои недостатки.Имея только одного шеф-повара на каждой кухне, вы большую часть времени оставляете без дела большую часть кухонных принадлежностей. Вот тут-то и появляется многопоточность: на каждую кухню приходится по одному повару. Для некоторых задач это превосходно и почти удваивает вашу скорость при очень небольшом увеличении затрат — один повар может работать на плите, а другой ставит жаркое в духовку. Однако для некоторых задач это действительно замедлит вас: если обоим поварам нужно приготовить жаркое, им обоим нужно проводить почти все свое время с духовкой, и они будут мешать друг другу.Сколько бы поваров на кухне ни было, вы никогда не сможете приготовить жаркое намного быстрее.

Тогда у вас будут другие подходы. Например, AMD является большим поклонником своих «вычислительных блоков», которые похожи на одну большую кухню с двумя поварами, двумя плитами (целочисленное ALU) и одной из всего остального. Затем они продают это как «два ядра» и продолжают определять «ядро» как «имеющее свою собственную плиту». «8-ядерный» чип, подобный этому, будет работать как обычный 8-ядерный чип при выполнении операций «плита» (целочисленные математические операции), но будет больше похож на чип с 4 ядрами с 2 потоками на ядро ​​для других операций. .

Что означает 8 ядер 16 потоков? — Mvorganizing.org

Что означает 8 ядер 16 потоков?

У всех центральных процессоров есть потоки, но что именно это означает? Проще говоря, потоки — это то, что позволяет вашему процессору выполнять несколько задач одновременно. Каждое ядро ​​ЦП может иметь два потока. Таким образом, процессор с двумя ядрами будет иметь четыре потока. У процессора с восемью ядрами будет 16 потоков.

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

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

Что означает 2 ядра 4 потока?

Это означает, что ЦП имеет 2 физических ядра, но может обрабатывать 4 потока одновременно с помощью гиперпоточности или одновременной многопоточности (SMT). В действительности одно физическое ядро ​​может действительно запускать только один поток за раз, но, используя гиперпоточность, ЦП использует стадии ожидания в конвейере для обработки другого потока.

2 ядра лучше 4?

4 ядра помогает процессору выполнять четыре базовых инструкции в каждом цикле, а не 2. Если программы оптимизированы для работы на 4 ядрах (представьте, что это 4 процессора в одном), он будет работать намного быстрее, чем на 2-ядерном ЦП. . Различные программы также могут работать на разных ядрах, чтобы распределить нагрузку на процессор.

4 ядра 4 потока лучше, чем 2 ядра 4 потока?

Обычно 4 ядра лучше, потому что, когда 2 потока работают на одном ядре, они конкурируют за одни и те же ресурсы.

Почему у ядер 2 потока?

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

Сколько потоков может выполняться на одном процессоре?

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

Сколько потоков я должен использовать?

В идеале, без ввода-вывода, синхронизации и т. Д., И больше ничего не работает, используйте 48 потоков задачи. На самом деле, использование около 95 потоков может быть лучше, чтобы максимально использовать возможности вашей машины. Потому что: ядро ​​иногда ожидает данных или ввода-вывода, поэтому поток 2 может работать, пока поток 1 не работает.

Сколько потоков может иметь программа?

Каждый процессор имеет 10 ядер, каждое из которых в основном эквивалентно классическому одноядерному процессору.Каждое ядро ​​может одновременно запускать только 1 поток, т.е. гиперпоточность отключена. Таким образом, у вас может быть не более 20 потоков, выполняющихся параллельно, по одному потоку на процессор / ядро.

Сколько потоков слишком много?

Если максимальное использование потока равно 3, то 100 — это слишком много. Если он остается на уровне 100 большую часть дня, увеличьте его до 200 и посмотрите, что произойдет. На самом деле вы могли бы заставить ваш код сам отслеживать использование и настраивать конфигурацию для следующего запуска, но это, вероятно, излишне.

Какой уровень является общим и может работать в любой операционной системе?

Поток уровня пользователя

Зачем нужны нитки?

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

Где мы используем потоки?

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

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

Разница между процессом и потоком:

S.NO Процесс Резьба
1. Процесс означает, что выполняется любая программа. Thread означает сегмент процесса.
6. Процесс потребляет больше ресурсов. Поток потребляет меньше ресурсов.
7. Процесс изолирован. Потоки разделяют память.
8. Процесс называется тяжелым процессом. Нить называется облегченной технологией.

Сколько уникальных нитей создается?

г. Сколько уникальных потоков создается? Ответ: Есть шесть процессов и два потока.

Сколько создается процессов и потоков?

Только SP1 и SSP1 порождают потоки, поэтому создается 2 потока. Если вы посчитаете все основные потоки всех процессов, то будет 7 или 8 потоков, в зависимости от того, подсчитываете ли вы исходный процесс P. Иллюстрация создаваемых процессов и потоков, связанных с кодом.

Почему веб-сервер не должен работать как однопоточный процесс?

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

Что такое поток компьютерного процессора

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

Но это само по себе не очень помогает.

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

Центральный процессор

Центральный процессор (ЦП) обычно называют «мозгом» вашего компьютера. Он находится на материнской плате — основной печатной плате — вместе с другими физическими компонентами вашего компьютера, такими как графическая карта и оперативная память (RAM).

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

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

Все изменилось с появлением в 2004 году процессора Intel Pentium Extreme Edition 840 — первого двухъядерного процессора, доступного на рынке. С тех пор многоядерные процессоры стали нормой, и большинство стандартных стандартных ПК теперь имеют от 4 до 8 ядер в стандартной комплектации.

Важно отметить, что физически возможно, но редко, чтобы ПК был оснащен более чем одним процессором. Гораздо эффективнее, чтобы в одном процессоре размещалось несколько ядер.

Теперь мы знаем, что такое ЦП, и можем взглянуть на то, что он делает.

Программы, процессы и потоки

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

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

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

Каждый конкретный шаг или элемент в этом списке инструкций — это процесс . Процесс также состоит из последовательности (или последовательностей) запрограммированных инструкций, называемых потоками .

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

Одинарная резьба

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

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

Причина этого (и это важно!) В том, что ЦП может одновременно работать только с одним потоком.

Многопоточность

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

Следовательно, пока поток A находится в «состоянии ожидания», процессор может переключить свое внимание на поток B. Затем, когда поток A снова готов, он переходит назад. И так далее.Это известно как многопоточность .

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

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

Многозадачность

Для простоты приведенное выше описание относится только к ЦП с одним ядром, выполняющим только один процесс в одной программе.

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

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

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

Одновременная многопоточность (SMT)

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

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

Разве не было бы большего смысла, если бы каждое ядро ​​могло одновременно выполнять более одной задачи?

Итак, в качестве логического перехода к многопоточности AMD разработала то, что они называют одновременной многопоточностью (SMT).

SMT — или гиперпоточность (название Intel для одного и того же) — это то, как одно физическое ядро ​​работает с двумя потоками одновременно.

Как это возможно, если ядро ​​может обрабатывать только одну вещь за раз?

Это еще одна иллюзия.

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

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

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

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

Сводка

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

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

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

сокетов, ядер и потоков, боже мой!

Что именно вы подразумеваете под «ЦП»?

Давным-давно на наших столах сидели компьютеры; мы точно знали, сколько у них процессоров; и тогда наша самая большая неуверенность заключалась в том, смогут ли они справиться с проблемой 2000 года.Перенесемся в сегодняшний день: наши компьютеры имеют 4, 8 или 16 процессоров — или, вполне возможно, все они одновременно, в зависимости от того, как вы определяете «процессор». (Я использую термины «ЦП» и «процессор» взаимозаменяемо.) В этом посте я опишу « процессорных сокетов », « процессорных ядер » и « процессорных потоков » с целью быть в состоянии ответить: «Сколько у меня здесь процессоров?»

Большинство из нас легко может сказать три слова, стоящие за инициализмом «CPU»: «центральный процессор! »Однако с сегодняшними сложными процессорами нам приходится уточнять, является ли устройство, о котором мы говорим,

.
  • аппаратный пакет («сокет»),
  • независимый исполнительный блок («ядро») в этом пакете; или
  • — в значительной степени зависимая единица («поток») в этом ядре, которая является более логической абстракцией, чем что-либо еще.

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

Сокеты для процессоров

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

Вам также была нужна ОС, способная использовать дополнительные процессоры, одна с поддержкой SMP *: Windows 98 не будет работать (но Windows NT может), и если вы использовали Linux тогда, вам, вероятно, нужно было бы перекомпилировать ядро. .

Количество сокетов ЦП на материнской плате, конечно, такое же, как количество дискретных пакетов ЦП в вашей системе (при условии, что вы не оставили ни одного сокета пустым).В более широком смысле, термин «процессорные сокеты» может относиться к этим дискретным пакетам ЦП. — удобно, когда нужно отличить это ощущение от двух других сенсоров процессора. Процессор в socket -sense вполне осязаемый: его можно купить. (Вы не можете купить core отдельно — хотя вы можете арендовать его в облаке!)

Ядра процессора

Примерно в 2005 году и AMD, и Intel начали брать несколько процессоров и помещать их в один и тот же корпус: представьте себе это как два процессора, использующие один и тот же сокет .Это дает некоторые технические преимущества (, например, более высокая когерентность кеша, поскольку она не ограничивается материнской платой) наряду с производственными преимуществами (ядра обычно, хотя и не всегда, производятся на одном кристалле). Производители процессоров обратились к этой модели (больше ядер, чем более быстрых ядер) после того, как не смогли значительно увеличить тактовую частоту после достижения диапазона ГГц. Каждое ядро ​​процессора может выполнять код независимо (независимо от компоновки: находятся ли все ядра на одном кристалле, используют один и тот же сокет процессора, или каждое ядро ​​имеет свой собственный сокет процессора), хотя есть небольшие различия из-за общих кешей и компоновки шины .

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

Поток процессора

Потоки процессора — это «логические процессоры» : ЦП сообщает о большем количестве процессоров, чем существует физически.

В 2002 году корпорация Intel представила процессоры «Xeon MP» и «Pentium 4 HT» — первые процессоры с тем, что Intel назвала «технологией Hyper-Threading».Обычно называемый «гиперпоточностью» (Kleenex в мире процессоров; общий термин — «одновременная многопоточность» или «SMT»), это была попытка ускорить компьютерную обработку за счет наличия другого потока, готового к запуску — и по большей части , это сработало. Я говорю «по большей части», потому что его преимущество оказалось сильно зависимым от рабочей нагрузки, резко ускоряя одни рабочие нагрузки и оказывая негативное влияние на другие, значительно замедляя их . Многие руководства рекомендовали отключить гиперпоточность в BIOS — особенно на раннем этапе, до того, как программное обеспечение стало поддерживать гиперпоточность.Однако в целом гиперпоточность дала чистый выигрыш, повысив производительность (некоторые говорят, на 15%) для общих рабочих нагрузок, поэтому мы до сих пор часто видим ее на новых процессорах.

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

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

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

Итого:

  • процессорное гнездо — пакет процессоров, совместно использующих физическое соединение с материнской платой
  • процессорное ядро ​​ — независимый процессор
  • процессорный поток — «логический процессор», разделяющий ресурсы с другими потоками на том же ядре

Компьютер с 4/8/16 процессорами в первом абзаце этого поста представляет собой четырехпроцессорный сервер с двухъядерными процессорами в каждом сокете, каждое ядро ​​имеет два потока.Имеет:

  • 4 процессорных сокета,
  • 8 ядер процессора или
  • 16 потоков процессора.

Итак, сколько у меня ЦП?

Вы можете увидеть количество сокетов, ядер и потоков на сервере Linux с помощью команды «lscpu», сосредоточив внимание на «потоках на ядро», «ядрах на сокет» и «сокетах. ”Строки:

Общее количество потоков процессора можно рассчитать, умножив количество сокетов на количество ядер на сокет и количество потоков на ядро.

В Windows 10 вы можете увидеть разбивку на вкладке «Производительность» диспетчера задач (Ctrl-Shift-Esc для запуска диспетчера задач; нажмите «Подробнее», если вкладки не отображаются):

Обратите внимание, что в Windows потоки процессора называются «логическими процессорами» (возможно, более подходящее название). Диспетчер задач показывает общее количество ядер (а не количество ядер на сокет) и общее количество потоков (всего логических процессоров , а не количество потоков на ядро).

Hardware Thread — обзор

1.3.2 Наблюдаемые исторические тенденции параллелизма

Параллелизм в аппаратном обеспечении присутствует с самых ранних компьютеров и к концу 1980-х годов достиг большой степени сложности в мэйнфреймах и векторных суперкомпьютерах. Однако для массовых вычислений миниатюризация с использованием интегральных схем началась с проектов, которые в 1970-х годах в значительной степени лишены аппаратного параллелизма. Первыми появились микропроцессоры, использующие простые однопоточные конструкции, которые вписывались в изначально очень ограниченный бюджет транзисторов.В 1971 году был представлен 4-битный микропроцессор Intel 4004, предназначенный для использования в электронном калькуляторе. В его конструкции использовано всего 2300 транзисторов. Самые последние процессоры Intel имеют достаточно транзисторов для более миллиона микропроцессоров Intel 4004. В процессоре Intel Xeon E7-8870 используется 2,6 × 10 9 транзисторов, и ожидается, что будущий сопроцессор с архитектурой Intel MIC, известный как Knights Corner, примерно вдвое больше. Хотя появление процессора с несколькими миллионами ядер в ближайшем будущем маловероятно, это дает вам представление о потенциале.

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

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

Степень изменения программного обеспечения для каждого типа дополнительного аппаратного механизма, использующего параллелизм, сильно различается. Автоматические механизмы, требующие наименьшего изменения программного обеспечения, такие как параллелизм на уровне инструкций (ILP), обычно были введены первыми. Это работало хорошо, пока несколько проблем не сошлись воедино, чтобы заставить перейти к явным, а не неявным механизмам в эпоху многоядерных процессоров. Самым важным из этих вопросов была власть. На рисунке 1.5 показан график общей потребляемой мощности во времени.После десятилетий неуклонного увеличения энергопотребления примерно в 2004 году была достигнута так называемая power wall . Выше 130 Вт воздушное охлаждение больше нецелесообразно. Чтобы остановить рост мощности, необходимо, чтобы тактовая частота перестала расти. Из этой диаграммы мы видим, что современные процессоры теперь охватывают широкий диапазон энергопотребления с доступностью компонентов с более низким энергопотреблением, что обусловлено ростом мобильных и встроенных вычислений.

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

Результирующая тенденция к явным механизмам параллелизма очевидна, если взглянуть на рисунок 1.6, на котором показано внезапное увеличение числа аппаратных потоков 1 после 2004 года.Эта дата совпадает с остановкой роста тактовой частоты. Проблема с питанием была решена путем добавления большего количества ядер и большего количества потоков в каждое ядро, а не увеличения тактовой частоты. Это открыло эру многоядерности, но использование нескольких аппаратных потоков требует больше изменений программного обеспечения, чем предыдущие изменения. За это время были добавлены векторные инструкции, которые обеспечивают дополнительную мультипликативную форму явного параллелизма. Векторный параллелизм можно рассматривать как расширение параллелизма ширины данных, поскольку оба связаны с шириной аппаратных регистров и объемом данных, которые могут быть обработаны с помощью одной инструкции.Показатель роста параллелизма по ширине данных показан на рисунке 1.7. Хотя рост параллелизма по ширине данных предшествует остановке роста тактовой частоты, факторы, способствующие росту параллелизма в многоядерных системах, также добавляют мотивацию к увеличению ширины данных. Хотя некоторое автоматическое распараллеливание (включая векторизацию ) возможно, оно не всегда было успешным. Явное параллельное программирование обычно необходимо для полного использования этих двух форм возможностей аппаратного параллелизма.

Рисунок 1.6. Количество ядер и аппаратных потоков на процессор составляло один примерно до 2004 года, когда рост количества аппаратных потоков стал тенденцией вместо роста тактовой частоты.

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

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

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

Мы выбрали стандартные тесты CPU2006 SPEC. К сожалению, они относятся исключительно к эпохе многоядерных процессоров, поскольку они предоставляют данные только за 2006 год [Sub06]. При подготовке графиков в этом разделе нашей книги мы также решили отображать только данные, относящиеся к процессорам Intel.Рассмотрение только одного поставщика позволяет избежать определенного эффекта размытия, который возникает при включении данных от нескольких поставщиков. Аналогичные тенденции наблюдаются для процессоров от других поставщиков, но тенденции становятся более ясными, если посмотреть на данные от одного поставщика.

Некоторое обсуждение природы тестов CPU2006 важно для правильного понимания результатов. Во-первых, эти тесты не распараллеливаются явным образом, хотя автопараллеливание разрешено. Однако необходимо сообщать об автоматическом распараллеливании и может включать использование уже распараллеленных библиотек.Однако не разрешается изменять исходный код этих тестов, что запрещает использование новых моделей параллельного программирования. Фактически, даже стандартизованные директивы OpenMP, которые допускают явное распараллеливание, должны быть явно отключены правилами выполнения SPEC. Существуют тесты SPEC, в которых основное внимание уделяется производительности с плавающей запятой, и другие тесты, которые в первую очередь подчеркивают производительность целых чисел и потока управления. Обозначения FP и INT обозначают подмножества с плавающей запятой и целые числа.Тесты INT обычно также включают более сложный поток управления. Обозначения «скорости» указывают на использование нескольких копий тестов на компьютерах с несколькими аппаратными потоками для измерения пропускной способности. Эти результаты «скорости» (или пропускной способности) дают некоторое представление о потенциале ускорения за счет параллелизма, но поскольку экземпляры тестов полностью независимы, эти измерения оптимистичны.

На рисунках 1.8, 1.9 и 1.10 показаны результаты тестов SPEC2006, которые демонстрируют, что произошло с производительностью процессоров в эпоху многоядерных процессоров (с 2006 года).Рисунок 1.8 показывает, что производительность на ватт значительно улучшилась для целых процессоров по мере увеличения количества ядер. Более того, на многопроцессорных компьютерах с большим количеством ядер, рисунок 1.9 показывает, что пропускная способность (общая производительность нескольких независимых приложений) продолжает масштабироваться до значительно более высокой производительности. Однако рисунок 1.10 показывает, что производительность отдельных тестов осталась почти неизменной, даже несмотря на то, что автоматическое распараллеливание разрешено процессом SPEC.Неизбежный вывод состоит в том, что, хотя общая производительность системы растет, повышение производительности отдельных приложений требует явного параллелизма в программном обеспечении.

Рисунок 1.8. Производительность на ватт с использованием данных, полученных из тестов SPEC2006, и номинальной мощности процессора (не системы) от корпорации Intel. FP на ватт и INT на ватт дают единую эталонную производительность. Автопараллеливание разрешено, но по большей части эти тесты не распараллеливаются.Результаты FP rate и INT на ватт основаны на запуске нескольких копий теста на одном процессоре и предназначены для измерения пропускной способности. Результаты FP и INT существенно не увеличились за этот период времени, но показатели FP и INT увеличились. Это подчеркивает тот факт, что прирост производительности в эпоху многоядерных процессоров определяется пропускной способностью ядер, а не увеличением производительности ядра.

Рисунок 1.9. Производительность в эпоху многоядерности на основе аппаратных потоков не демонстрирует сильной и очевидной тенденции, как это было в эпоху одноядерных мегагерц.Данные получены из тестов SPEC2006 и оценок мощности процессора (не системы), но с результатами, разделенными на количество использованных параллельных экземпляров теста (аппаратных потоков).

Рисунок 1.10. Производительность SPEC2006 на многопроцессорных компьютерах в эпоху многоядерных процессоров. Большие машины могут обеспечить общую производительность системы, которая превосходит показатели производительности на ядро ​​(обратите внимание на сдвиг на два порядка в масштабе оси Y по сравнению с рисунком 1.9). Данные получены из архивов тестов SPEC.

Hyper-Threading и все, что вам нужно знать

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

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

Что такое гиперпоточность?

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

Когда вы запускаете приложение, код этой программы берется с жесткого диска и сохраняется в оперативной памяти (ОЗУ) перед загрузкой в ​​ЦП.Затем ЦП считывает инструкции из ОЗУ для выполнения поставленной задачи. Когда технологические компании называют свои ЦП «двухъядерными», это означает, что в ЦП есть 2 ядра (отдельные блоки обработки).

Intel® указывает количество ядер, которые они используют с i3, i5, i7 и т. Д. Это немного вводит в заблуждение, учитывая, что процессор Intel i7 Core не имеет 7 ядер; он идет с четырьмя. Есть несколько экстремальных процессоров Intel i7 Core, которые могут иметь 6 или 8 ядер. Вы всегда можете вернуться к описанию продукта, если не уверены в количестве ядер в вашем процессоре.

Не отходя слишком далеко от гиперпоточности, важно сначала понять, как ядра обрабатывают данные в ЦП. Когда данные отправляются из ОЗУ в ЦП, они разделяются и направляются в разные ядра.

Представьте себе железнодорожную станцию: такие программы, как Microsoft Word и Excel, представляют собой грузовые перевозки поездов, движущихся через станцию, но железнодорожная станция (ядро) имеет только один набор путей. «Грузы», или программные инструкции, идут последовательно по рельсам.Все просто, правда?

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

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

Теперь, когда вы понимаете, как работает гиперпоточность, преимущества и потенциальное повышение скорости, которое она может дать вашему ПК, довольно очевидны.

Повысит ли гиперпоточность производительность моего компьютера?

Согласно Intel [1], гиперпоточность ваших ядер может привести к увеличению производительности и скорости на 30% при сравнении двух идентичных ПК с одним гиперпоточным процессором.В исследовании, опубликованном на Forbes, гиперпоточность процессора AMD® (Ryzen 5 1600) показала увеличение общей производительности обработки на 17% [2].

Несмотря на эти результаты, гиперпоточность ваших ядер не всегда является оптимальным решением. Будут задачи, в которых скорость вашего процессора не увеличивается, несмотря на гиперпоточность. Частично это связано с тем, что не все приложения и строки данных могут эффективно загружаться в многопоточное ядро.

В эксперименте, проведенном bit-tech.net, гиперпоточный Intel i7 Core сравнивался с однопоточным Intel i7 Core после прохождения нескольких различных тестов [3]. Когда дело дошло до редактирования изображений, многозадачности и энергопотребления, гиперпотоковый аналог оказался хуже, чем однопоточный. Тем не менее, он показал такие же или лучшие результаты, когда дело дошло до кодирования видео Handbrake, общего пользовательского теста ПК и игры в популярную игру Crysis .

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

Как включить гиперпоточность

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

Чтобы включить гиперпоточность, вам сначала нужно войти в настройки BIOS вашей системы. Для тех, кто не знаком, BIOS расшифровывается как Basic Input / Output System.BIOS запускается, когда вы включаете компьютер, соединяя различные компоненты, такие как жесткий диск, ЦП и клавиатуру, в дополнение к управлению потоком данных.

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

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

Резюме; один раз в BIOS выберите:

  • Процессор
  • Свойства
  • Логический процессор / Включить гиперпоточность

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

Подходит ли гиперпоточность для игр?

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

Игра

Если вы когда-либо пробовали играть в игры с интенсивной графикой на процессоре Intel i3 Core, то вы, вероятно, знаете, сколько проблем возникает из-за ограниченного количества ядер.Отставание и ореолы — лишь малая часть списка проблем, вызванных недостаточной вычислительной мощностью.

Гиперпоточность Intel i5 и гиперпоточность i3 могут быть чрезвычайно полезны для игр, учитывая, что эти процессоры изначально не обладают большой мощностью. Играя в такие игры, как Crysis , вы заметите резкое улучшение и конкурентное преимущество. Гиперпоточность Intel i7 может быть чрезмерной. Если вы не играете в несколько игр одновременно или не запускаете несколько приложений в фоновом режиме, вам, вероятно, не понадобится такая дополнительная мощность.

Потоковая передача

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

Если вы транслируете потоковую передачу на новейшем процессоре Intel i7 Core, вы, вероятно, не заметите большой разницы. Продвинутые процессоры невероятно быстрые как есть. Однако процессоры с 2 или 4 ядрами могут не дать вам достаточно энергии для игры, даже после гиперпоточности.

Лучшие процессоры для гиперпоточности

Большинство игр класса AAA ориентированы на процессоры с 4 ядрами и более. Если ваша цель — игры, выбирайте AMD Ryzen, Intel i5 или лучше.

Intel i5-8400, который вы можете найти в игровом настольном ПК HP OMEN 870, — отличное место для начала, если у вас ограниченный бюджет. Этот процессор с 6 ядрами и 6 потоками имеет базовую тактовую частоту 3,8 ГГц и тактовую частоту в режиме турбо 4,0 ГГц. Хотя этот процессор не поддерживает разгон, он должен обеспечивать более чем достаточную мощность для игр с максимальными настройками.Intel i7-8700K имеет 6 ядер и 12 потоков, на которых вы можете запускать множество фоновых задач, пока играете. Вы можете найти этот процессор в игровом настольном ПК HP Pavilion. В том же ценовом диапазоне, что и Intel i7-8700K, AMD Ryzen 7 2700 предлагает 8 ядер, 16 потоков и возможности разгона. Компания AMD, о которой часто забывают, производит невероятные процессоры для компьютеров, ноутбуков и специализированных игровых ПК. Если вы заинтересованы в создании игрового ПК с нуля или в покупке готовой системы, вам следует серьезно подумать о процессоре AMD для продвинутых игр.AMD Ryzen 3 2200G — чрезвычайно доступный процессор, учитывая, сколько от него можно получить. Четыре ядра, базовая частота 3,5 ГГц, а также возможности разгона позволяют расширить возможности вашего ПК. Игровой настольный компьютер HP OMEN 875 Obelisk может похвастаться тремя процессорами AMD Ryzen на выбор, чтобы оформить покупку по своему вкусу.

Если вы действительно хотите изо всех сил построить суперкомпьютер, Intel Core i9 7900X находится в особой лиге. Хотя цена определенно отражает его передовые компоненты, его производительность трудно превзойти.Благодаря 10 ядрам и 20 потокам вы можете одновременно выполнять множество задач.

Подходит ли гиперпоточность для игр VR? Игры

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

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

Резюме

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

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

Вы можете многое получить и не так много потерять, почему бы не попробовать?

Об авторе

Шон Уэйли (Sean Whaley) пишет статьи для HP® Tech Takes. Шон — специалист по созданию контента со степенью литературы в SDSU.Он обладает обширными познаниями в области компьютерного оборудования и программирования.

Сокет против ядра, ЦП против потока: эволюция терминов архитектуры x86

Не вдаваясь в подробности, архитектура x86 была коммерческим продуктом в конце 1970-х годов как 8-битный процессор. Тогда соотношение сокета и ядра, процессора и потока было 1: 1. Со временем определения стали размытыми из-за достижений в технологии микросхем. В сфере недвижимости девиз — «местоположение, местоположение, местоположение.«С транзисторами это« плотность, плотность и еще больше плотность! » Каждый в отрасли должен знать закон Мура, который утверждает, что количество транзисторов на микрочипе удваивается примерно каждые два года, хотя стоимость соответствующего компьютера снижается вдвое. Я рад обсудить, когда мы достигнем предела закона Мура, но он навсегда останется глубоким законом технологий.

Я достаточно взрослый, чтобы иметь компьютер 8086 и использовать операционную систему CPM с 8-дюймовыми дискетами! На протяжении многих лет я наблюдал, как неправильное употребление терминов превращается из отношения 1: 1 в отношения 1: многие.Большая часть путаницы остается вокруг термина «ЦП» или центральный процессор. Цель этой статьи — охватить все термины и, надеюсь, устранить путаницу вокруг сокетов, процессоров, ядер и потоков.

Socket

На самом базовом уровне существует «материнская плата», которая ничего не может сделать без микросхемы ЦП с выводами, вставленными в разъем. Более правильный термин — «сокет процессора». Чаще всего блейд-серверы работают на двухсокетных материнских платах, но тогда я был в восторге, когда тестировал HP DL-980 с восемью сокетами! Это может быть отдельная статья, но важно отметить, что узел NUMA не связан с ЦП.Узел NUMA — это связь между сокетом ЦП и ближайшим банком (ами) памяти.

CPU

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

Ядра

Только в 2005–2006 годах Intel / AMD начали выпуск ЦП с несколькими процессорами (процессорами). Я намеренно не использовал слово «процессор» до сих пор, потому что оно представляет способность выполнять одну инструкцию из операционной системы.Если бы был второй по популярности термин ИТ, то это были бы процессоры! Возвращаясь к процессору 8080, он мог обрабатывать один байт (следовательно, 8-битный процессор) данных за раз. Плотность процессора / ядра увеличилась до 64-битной (следовательно, 64/8 = 8 байт данных). С появлением «ядер» один ЦП с 10 ядрами может выполнять 10 одновременных инструкций. И если мы проигнорируем производительность, мы могли бы быть в порядке, используя такие термины, как ЦП, ядро ​​и процессор. Однако у ЦП есть связанные ядра и память, так что «локальность» играет важную роль.Набор инструкций, поступающих от операционной системы, расположенной на разных процессорах, не будет видеть один и тот же кеш процессора и множество других проблем с производительностью, зависящих от конкретной местности.

Поток

Поток — это просто очередь для инструкции операционной системы. Путаница возникает из-за термина «гиперпоточность», который существует с 1980-х годов. Intel не выпускала чипы HT (гиперпотоковые) до Pentium 4 (около 2002 г.). Гиперпоточность была проклятием моего существования из-за неправильного понимания этого термина.И поставщики усугубили ситуацию, придя к определению термина на уровне ОС, в котором используются такие слова, как ЦП / ядро ​​/ процессор. Проще говоря, включение HT позволяет использовать два потока (думаю, очереди) на ядро. Если у меня включен HT в 10-ядерной системе, у меня будет 10 ядер и 20 потоков. Я все еще могу выполнять только 10 инструкций ОС за цикл. Но я могу поставить в очередь 20 инструкций ОС. Это обеспечивает уровень эффективности, позволяя возникать множественные события очереди / удаления из очереди инструкций. HT может обеспечить повышение производительности более чем на 30% за счет устранения задержки (повышения эффективности).Однако он не выполняет никакой магии и просто приближает вас к теоретическому максимуму количества инструкций, которые могут быть выполнены в любой заданный период времени на процессоре / ядре.

Почему важны точные определения

Я упоминаю все вышеперечисленное по одной простой причине: я являюсь специалистом по техническому управлению VMware r. TAM помогают клиентам получить максимальную отдачу от инвестиций в технологии VMware и быть в курсе последних достижений в мире технологий.Еще один уровень сложности увеличивается по мере того, как ИТ-поставщики / персонал добавляют такие термины, как логические и виртуальные, которые представляют абстракцию / эмуляцию физических объектов. Я постоянно звоню клиентам vSphere и слышу такие утверждения, как «Использование моего процессора в vCenter показывает 50% от того, что показывает ОС». Отсюда начинается мой стандартный ответ: «Мы говорим о хостах или показателях рабочей нагрузки? А вы говорите о ядрах или потоках? »

Используя ESXTOP в качестве другого примера, термин «PCPU» используется для обозначения потока (а не физического ЦП или даже ядра!).Термин «ядро» в ESXTOP — это «ядро» (ладно, вы собираетесь использовать правильный термин!). Если вы не видите значения PCPU и только ядра, это признак того, что HT не включен в BIOS гипервизора хоста / ESXi. Это в некоторой степени полезно, поскольку позволяет узнать процент времени, в течение которого каждый поток выполняется на ядре.

Даже конфигурация виртуальной машины может сбивать с толку. Когда вы редактируете свойства CPU, вы можете установить количество процессоров, а затем подпараметр — это количество ядер на сокет, а не количество ядер на процессор.Поскольку верхнее определение — это процессоры, почему бы не согласовать подопределение? Когда дело доходит до настройки взаимосвязи ЦП и ядра в рабочей нагрузке / виртуальной машине VMware, будьте осторожны при использовании ядер. Например, с помощью vMotion я могу переместить виртуальную машину с хоста с 6 ядрами / ЦП на хост с 12 ядрами / ЦП и наоборот. Если вы настраиваете процессоры / ядра, тогда он должен соответствовать базовой физической инфраструктуре, и это может быть сложно, если у вас есть хосты с разной плотностью.

Пока мы все на одной странице

Ключ к успеху — помнить, что архитектура x86 основана на процессоре-сокете-ядре-потоке.Когда вы имеете дело с определением , первое, что нужно сделать, это определить, на что ссылается определение. Вы также должны быть на одной волне со своими коллегами. И не расстраивайтесь из-за того, что ИТ сделали это трудным. Мне вспоминается комедия, в которой я был в шитье. Хотя я не помню всей тирады, я все же помню: «Мы едем по бульвару и паркуемся на подъездной дорожке!» Номенклатура становится менее важной, если все соглашаются с тем, на что делается ссылка.

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

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