Можно ли, например, сказать, что процессор с четырьмя ядрами, работающими на частоте 3 ГГц, на самом деле является процессором, работающим на частоте 12 ГГц?
Однажды я попал в аргумент «Mac против ПК» (который, кстати, НЕ является темой этой темы ... который был в средней школе) со знакомым, который настаивал на том, что Mac рекламировались только как машины с частотой 1 ГГц, потому что они были двухпроцессорные G4, каждый из которых работал на частоте 500 МГц.
В то время я знал, что это фигня по причинам, которые, как мне кажется, очевидны для большинства людей, но я только что увидел на этом сайте комментарий о «6 ядрах x 0,2 ГГц = 1,2 ГГц», и это заставило меня снова задуматься о том, есть реальный ответ на это.
Итак, это более или менее философский / глубокий технический вопрос о семантике вычисления тактовой частоты. Я вижу две возможности:
- Каждое ядро фактически выполняет x вычислений в секунду, таким образом, общее количество вычислений составляет x (ядер).
- Тактовая частота - это скорее число циклов, которые процессор проходит за секунду, поэтому, пока все ядра работают с одинаковой скоростью, скорость каждого тактового цикла остается одинаковой независимо от того, сколько ядер существует , Другими словами, Гц = (core1Hz + core2Hz + ...) / cores.
источник
Ответы:
Основная причина, по которой четырехъядерный процессор с частотой 3 ГГц никогда не бывает столь же быстрым, как у одноядерного процессора с частотой 12 ГГц, заключается в том, как работает задача, выполняемая на этом процессоре, то есть однопоточная или многопоточная. Закон Амдала важен при рассмотрении типов задач, которые вы выполняете.
Если у вас есть задача, которая по своей природе является линейной и должна выполняться точно пошагово, например (чрезвычайно простая программа)
Тогда задача в значительной степени зависит от результата предыдущего прохода и не может запустить несколько своих копий без повреждения значения,
'a'
поскольку каждая копия будет получать значение'a'
в разное время и записывать его по-разному. Это ограничивает задачу одним потоком, и, таким образом, задача может быть запущена только на одном ядре в любой момент времени; если она будет выполняться на нескольких ядрах, произойдет повреждение синхронизации. Это ограничивает его до 1/2 процессорной мощности двухъядерной системы или до 1/4 в четырехъядерной системе.Теперь возьмите задачу, такую как:
Все эти линии независимы и могут быть разделены на 4 отдельные программы, такие как первая и запускаемые одновременно, каждая из которых способна эффективно использовать всю мощь одного из ядер без каких-либо проблем с синхронизацией, в этом и заключается закон Амдала. входит в это.
Таким образом, если у вас есть однопоточное приложение, выполняющее вычисления методом грубой силы, один процессор с частотой 12 ГГц выиграет руки, если вы можете каким-то образом разделить задачу на отдельные части и многопоточную, тогда 4 ядра могут быть близки, но не совсем достижимы, такое же исполнение, как в соответствии с Законом Амдала.
Главное, что дает многопроцессорная система - это отзывчивость. На одноядерной машине, которая усердно работает, система может показаться вялой, поскольку большую часть времени может использоваться одной задачей, а другие задачи выполняются только короткими пакетами между большими задачами, в результате чего система кажется вялой или дрожащей. , В многоядерной системе тяжелая задача получает одно ядро, а все остальные задачи играют на других ядрах, выполняя свою работу быстро и эффективно.
Аргумент «6 ядер x 0,2 ГГц = 1,2 ГГц» является мусором в любой ситуации, кроме случаев, когда задачи совершенно параллельны и независимы. Существует множество параллельных задач, но они все равно требуют определенной синхронизации. Ручной тормоз - это видео транкодер, который очень хорошо использует все доступные процессоры, но для него требуется основной процесс, чтобы другие потоки были заполнены данными и собирали данные, с которыми они работают.
Каждое ядро способно выполнять x вычислений в секунду, предполагая, что рабочая нагрузка подходит параллельно, в линейной программе все, что у вас есть, - это 1 ядро.
Я думаю, что ошибочно думать, что 4 x 3GHz = 12 ГГц, если математика работает, но вы сравниваете яблоки с апельсинами, а суммы просто не верны, ГГц нельзя просто сложить вместе для каждой ситуации. Я бы изменил его на 4 x 3GHz = 4 x 3GHz.
источник
Другие сделали хороший аргумент с технической точки зрения. Вместо этого я приведу пару простых аналогий, которые, я надеюсь, объяснят, почему 4 * 3 ГГц не эквивалентны 1 * 12 ГГц.
Например, одна женщина может родить одного ребенка за девять месяцев. Смогут ли девять женщин родить одного ребенка за один месяц? Нет, потому что беременность не может быть распараллелена (ну, по крайней мере, на этом технологическом уровне).
Вот еще одно: на гидроэлектростанции, которую я недавно посетил, один из генераторов был модернизирован. Им пришлось перевозить статор генератора на корабле. Одна шестая часть статора может перевозиться на грузовике, но им нужно было перевозить весь статор; поэтому им пришлось использовать один корабль, а не шесть грузовиков.
Другим случаем может быть точное время событий. Иногда компьютерные процессоры используются в качестве точных таймеров (хотя эта практика больше не рекомендуется из-за переменных часов на большинстве процессоров. Вместо этого следует использовать высокоточный таймер событий). Если предположить, что у нас есть процессор с относительно стабильной тактовой частотой 12 ГГц, мы можем использовать его для измерения времени с гораздо более высоким разрешением, чем на процессоре с тактовой частотой 3 ГГц. Независимо от того, сколько у нас ядер 3GHz, мы не сможем достичь разрешения ядра 12 ГГц. Это похоже на наличие 4 часов с 7-сегментным дисплеем, где каждые часы показывают правильное время в часах. Независимо от того, насколько правильно они показывают часы, вы не можете использовать их для измерения временных интервалов в пределах одной секунды.
источник
Я не эксперт по этому вопросу, но у меня есть степень в области компьютерной техники. В теории (это весьма концептуальный ответ), четырехъядерный 3 ГГц каждый процессор может быть эквивалентом одного процессора 12GHz , если, например, существует четыре набора вычислений , необходимых для одного конечного результата. Это то, что называется параллельной обработкой.
Чтобы упростить логику, допустим, мы говорим о двухъядерном процессоре. Если набор расчетов был, скажем:
тогда эти два вычисления могут быть выполнены на отдельных ядрах, и процессор xGHz будет эквивалентен одноядерному процессору 2 * xGHz. Это связано с тем, что оба вычисления, хотя и выполняются на скорости х, будут обрабатываться одновременно. В то время как одноядерный процессор мог выполнять их со скоростью 2 * x, но один за другим. Если два процессора выполнили этот код одновременно, они завершат работу одновременно. Однако, если код был:
тогда для двухъядерного процессора потребуется вдвое больше времени, чем для одноядерного процессора, поскольку во второй инструкции значение a зависит от первой инструкции и, следовательно, не может выполняться параллельно. Вот как некоторые программы могут использовать преимущества многопоточных процессоров.
Таким образом, теоретически одноядерный процессор с частотой 12 ГГц всегда может работать быстрее (или быстрее), чем четырехъядерный процессор с частотой 3 ГГц, но не наоборот.
источник
Это сложный вопрос, но краткий ответ: нет
В реальных приложениях четыре процессора с частотой 3 ГГц не будут работать так же быстро, как один процессор с частотой 12 ГГц из-за неэффективности. Они могут быть очень близки, но они НЕ будут равны одному процессору с точки зрения вычислительной мощности.
Причина этого кроется в небольшой неэффективности при работе с программами, которые могут работать на более чем одном процессоре. Предполагая, что рассматриваемая программа может работать параллельно, у нас все равно будут проблемы с различными ядрами, конкурирующими друг с другом за другие ресурсы, такие как ОЗУ или даже проблемы с кэшем и синхронизацией потоков. Кроме того, всегда есть части программ, которые нельзя распараллелить и которые должны работать на одном ядре.
Посмотрите эту статью: http://en.wikipedia.org/wiki/Amdahl%27s_law
источник
Похоже, мы не можем сказать, что 4 ядра при 3 ГГц можно сказать как 12 ГГц.
Различные ограничения, такие как совместная память, кэш-память и другие ресурсы, также являются общими для всех ядер, поэтому параллельный запуск кода на этих ядрах не будет столь же эффективным, как запуск на процессорах с частотой 12 ГГц (хотя такой процессор сложно создать). ).
Также я где-то читал, что если мы удвоим транзисторы, встроенные в чип (CMP), то скорость, которую мы собираемся получить, составит всего 40%. Это дает существенный намек и на эту тему.
источник
Что касается тактовых циклов, то да, многоядерный процессор выполняет полный
x * cores
цикл работы в секунду. Обычно для упрощения сравнения тактовые частоты указаны для каждого ядра (иначе как бы вы могли легко сравнить двухъядерный чип 4 ГГц, работающий на частоте 2 ГГц / ядро, с четырехъядерным чипом 4 ГГц, работающим на частоте 1 ГГц / ядро?).К сожалению, проблема становится сложной, когда вы пытаетесь сравнить разные процессоры в реальных приложениях.
Во-первых, большинство многоядерных процессоров имеют некоторые ресурсы, совместно используемые ядрами (например, кэш-память ЦП). Они должны иметь общий доступ к этому кешу, поэтому вы не можете иметь оба ядра, которые хранят или читают данные на полной скорости. Это часто смягчается в многоядерных процессорах за счет наличия нескольких общих кешей (например, большинство четырехъядерных чипов имеют 2 кеша, каждый из которых совместно используется парой ядер), чтобы лучше разделить шансы узкого места на общем ресурсе.
Второе, и, возможно, менее известное в нетехническом мире, заключается в том, что сравнение тактовых частот может иногда походить на сравнение яблок и апельсинов. Разные процессоры выполняют разный объем работы за один тактовый цикл, так что, скажем, у вас есть великолепные звуки 1 ГГц против 1,2 ГГц, но микросхема 1 ГГц может фактически выполнить больше работы за определенный промежуток времени. Pentium 4 привел этот момент домой, что привело к мифу о мегагерце (о котором я не знал, когда придумал название до написания этой статьи).
источник
Две машины, проезжающие по 50 миль в час, не суммируют до 100 миль в час. Это действительно настолько просто. Тактовая частота процессора - это не показатель скорости, с которой выполняется работа, а показатель того, как быстро тикают часы.
источник