Как вы вычисляете скорость процессора на многоядерных процессорах?

Оглавление:

Как вы вычисляете скорость процессора на многоядерных процессорах?
Как вы вычисляете скорость процессора на многоядерных процессорах?

Видео: Как вы вычисляете скорость процессора на многоядерных процессорах?

Видео: Как вы вычисляете скорость процессора на многоядерных процессорах?
Видео: Как выбрать штатив? Видеоурок - YouTube 2024, Апрель
Anonim
Появление экономичных многоядерных процессоров потребительского класса ставит вопрос для многих пользователей: как вы эффективно вычисляете реальную скорость многоядерной системы? Является ли 4-ядерная система 3Ghz действительно 12 ГГц? Читайте дальше, когда мы исследуем.
Появление экономичных многоядерных процессоров потребительского класса ставит вопрос для многих пользователей: как вы эффективно вычисляете реальную скорость многоядерной системы? Является ли 4-ядерная система 3Ghz действительно 12 ГГц? Читайте дальше, когда мы исследуем.

Сегодняшняя сессия вопросов и ответов приходит к нам, любезно предоставленной SuperUser - подразделением Stack Exchange, группировкой сайтов Q & A на уровне сообщества.

Вопрос

Считыватель SuperUser NReilingh интересовался, как вычисляется скорость процессора для многоядерной системы:

Is it correct to say, for example, that a processor with four cores each running at 3GHz is in fact a processor running at 12GHz?

I once got into a “Mac vs. PC” argument (which by the way is NOT the focus of this topic… that was back in middle school) with an acquaintance who insisted that Macs were only being advertised as 1Ghz machines because they were dual-processor G4s each running at 500MHz.

At the time I knew this to be hogwash for reasons I think are apparent to most people, but I just saw a comment on this website to the effect of “6 cores x 0.2GHz = 1.2Ghz” and that got me thinking again about whether there’s a real answer to this.

So, this is a more-or-less philosophical/deep technical question about the semantics of clock speed calculation. I see two possibilities:

  1. Each core is in fact doing x calculations per second, thus the total number of calculations is x(cores).
  2. Clock speed is rather a count of the number of cycles the processor goes through in the space of a second, so as long as all cores are running at the same speed, the speed of each clock cycle stays the same no matter how many cores exist. In other words, Hz = (core1Hz+core2Hz+…)/cores.

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

Ответ

Участники SuperUser Mokubai помогают разобраться. Он пишет:

The main reason why a quad-core 3GHz processor is never as fast as a 12GHz single core is to do with how the task running on that processor works, i.e. single-threaded or multi-threaded. Amdahl’s Law is important when considering the types of tasks you are running.

If you have a task that is inherently linear and has to be done precisely step-by-step such as (a grossly simple program)

10: a = a + 1

20: goto 10

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

'a'

поскольку каждая копия будет получать значение

'a'

в разное время и записывая его по-другому. Это ограничивает задачу одним потоком, и, таким образом, задача может быть запущена только на одном ядре в любой момент времени, если она будет работать на нескольких ядрах, тогда произойдет повреждение синхронизации. Это ограничивает его до 1/2 мощности процессора двухъядерной системы или 1/4 в четырехъядерной системе.

Теперь возьмите задачу, такую как:

10: a = a + 1

20: b = b + 1

30: c = c + 1

40: d = d + 1

50: goto 10

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

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

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

Аргумент «6 ядер x 0.2GHz = 1.2Ghz» - это мусор в каждой ситуации, кроме случаев, когда задачи полностью параллельны и независимы. Существует большое количество задач, которые очень параллельны, но они по-прежнему требуют некоторой формы синхронизации. Handbrake - это видео-транскодер, который очень хорошо использует все доступные процессоры, но для этого требуется основной процесс, чтобы другие потоки заполнялись данными и собирали данные, с которыми они были сделаны.

Каждое ядро фактически выполняет x вычислений в секунду, поэтому общее число вычислений равно x (ядра).

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

Тактовая частота - это скорее количество циклов, которые процессор проходит в пространстве секунды, так что, пока все ядра работают с одинаковой скоростью, скорость каждого такта остается неизменной независимо от того, сколько ядер существует, Другими словами, Hz = (core1Hz + core2Hz + …) / core.

Я думаю, что ошибочно полагать, что 4 x 3GHz = 12 ГГц, при условии, что математика работает, но вы сравниваете яблоки с апельсинами, а суммы просто не правы, GHz нельзя просто добавить вместе для каждой ситуации. Я бы изменил его на 4 x 3GHz = 4 x 3GHz.

Есть что добавить к объяснению? Звучит в комментариях. Хотите узнать больше ответов от других пользователей Windows? Посмотрите здесь полную дискуссионную тему.

Рекомендуемые: