23

Можно ли, например, сказать, что процессор с четырьмя ядрами, каждое из которых работает на частоте 3 ГГц, на самом деле является процессором, работающим на частоте 12 ГГц?

Однажды я попал в аргумент «Mac против ПК» (который, кстати, НЕ является темой этой темы ... который был еще в средней школе) со знакомым, который настаивал на том, что Mac рекламируются только как машины с частотой 1 ГГц, потому что они были двухпроцессорные G4, каждый из которых работал на частоте 500 МГц.

В то время я знал, что это фигня по причинам, которые, как мне кажется, очевидны для большинства людей, но я только что увидел на этом сайте комментарий о «6 ядрах x 0,2 ГГц = 1,2 ГГц», и это заставило меня снова задуматься о том, есть реальный ответ на это.

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

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

7 ответов7

36

Основная причина, по которой четырехъядерный процессор 3 ГГц никогда не бывает таким быстрым, как у одноядерного 12 ГГц, связана с тем, как работает задача, выполняемая на этом процессоре, то есть однопоточная или многопоточная. Закон Амдала важен при рассмотрении типов задач, которые вы выполняете.

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

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,2 ГГц = 1,2 ГГц» является мусором в любой ситуации, кроме случаев, когда задачи совершенно параллельны и независимы. Существует множество параллельных задач, но они все еще требуют определенной синхронизации. Ручной тормоз - это видео транкодер, который очень хорошо использует все доступные процессоры, но для него требуется основной процесс, чтобы другие потоки были заполнены данными и собирали данные, с которыми они работают.

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

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

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

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

6

Другие сделали хороший аргумент с технической точки зрения. Вместо этого я приведу пару простых аналогий, которые, я надеюсь, объяснят, почему 4 * 3 ГГц не эквивалентны 1 * 12 ГГц.

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

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

Другим случаем может быть точное время событий. Иногда компьютерные процессоры используются в качестве точных таймеров (хотя эта практика больше не рекомендуется из-за переменных часов на большинстве процессоров). Вместо этого следует использовать высокоточный таймер событий). Если предположить, что у нас есть процессор с относительно стабильной тактовой частотой 12 ГГц, мы можем использовать его для измерения времени с гораздо более высоким разрешением, чем на процессоре с тактовой частотой 3 ГГц. Независимо от того, сколько у нас ядер 3GHz, мы не сможем достичь разрешения ядра 12 ГГц. Это похоже на наличие 4 часов с 7-сегментным дисплеем, где каждые часы показывают правильное время в часах. Независимо от того, насколько правильно они показывают часы, вы не можете использовать их для измерения временных интервалов в пределах одной секунды.

3

Я не эксперт по этому вопросу, но у меня есть степень по компьютерной инженерии. Теоретически (это очень концептуальный ответ), четырехъядерный процессор с частотой 3 ГГц каждый процессор может быть эквивалентен одному процессору с частотой 12 ГГц, если, например, для одного конечного результата требуется четыре набора вычислений. Это то, что называется параллельной обработкой.

Чтобы упростить логику, допустим, мы говорим о двухъядерном процессоре. Если набор расчетов был, скажем:

а = Ь +1;

с = D +1;

тогда эти два вычисления могут быть выполнены на отдельных ядрах, и процессор xGHz будет эквивалентен одноядерному процессору 2 * xGHz. Это связано с тем, что оба вычисления, хотя и выполняются на скорости х, будут обрабатываться одновременно. В то время как одноядерный процессор мог выполнять их со скоростью 2 * x, но один за другим. Если два процессора выполнили этот код одновременно, они закончили бы одновременно. Однако, если код был:

а = Ь +1;

с = а +1;

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

Таким образом, теоретически одноядерный процессор с частотой 12 ГГц всегда может работать быстрее (или быстрее), чем четырехъядерный процессор с частотой 3 ГГц, но не наоборот.

2

Похоже, мы не можем сказать, что 4 ядра при 3 ГГц можно сказать как 12 ГГц.

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

Также я где-то читал, что если мы удвоим транзисторы, встроенные в чип (CMP), то скорость, которую мы собираемся получить, составляет всего 40%. Это дает существенный намек и на эту тему.

2

Это сложный вопрос, но короткий ответ: нет

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

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

Посмотрите эту статью: http://en.wikipedia.org/wiki/Amdahl%27s_law

1

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

1

Что касается тактовых циклов, то да, многоядерный процессор выполняет x * cores ядерных циклов работы в секунду. Обычно для упрощения сравнения тактовые частоты указаны для каждого ядра (иначе как бы вы могли легко сравнить двухъядерный чип с частотой 4 ГГц, работающий на частоте 2 ГГц / ядро, с четырехъядерным процессором с частотой 4 ГГц, работающим на частоте 1 ГГц / ядро?).

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .