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

62986
NReilingh

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

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

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

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

  1. Каждое ядро ​​фактически выполняет x вычислений в секунду, таким образом, общее количество вычислений составляет x (ядер).
  2. Тактовая частота - это скорее число циклов, которые процессор проходит за секунду, поэтому, пока все ядра работают с одинаковой скоростью, скорость каждого тактового цикла остается одинаковой независимо от того, сколько ядер существует, Другими словами, Гц = (core1Hz + core2Hz + ...) / cores.
23
Многие из ответов здесь хорошо объясняют, почему, например, четырехъядерный процессор с частотой 2 ГГц не обязательно равен одноядерному процессору с частотой 8 ГГц. Тем не менее, мне трудно предугадать, как следует учитывать скорости многоядерных процессоров при принятии решения о пригодности системы для приложения, в котором указаны конкретные требования к скорости и количеству ядер? (например, для Borderlands 2 требуется двухъядерный процессор 2,4 ГГц. Стоит ли ожидать, что четырехъядерный процессор с более низкой скоростью или одноядерный процессор с более высокой скоростью тоже хорошо справятся?) Ответ на этот вопрос (или его ответ) можно получить здесь, или это должен быть отдельный вопрос? Iszi 12 лет назад 0
@Iszi Это должен быть другой вопрос, но вполне вероятно, что Borderlands оптимизирован для более чем одного потока, если они включают «двухъядерный» в свои требования. В этом случае одноядерный процессор не рекомендуется, но неясно, может ли он использовать преимущества> 2 ядер. NReilingh 12 лет назад 0
Важно помнить, что тактовая частота и количество ядер не только определяют «скорость» процессора. Например, размеры и скорость кэша будут влиять на время, которое процессор тратит на ожидание инструкций и данных. Кроме того, инструкции за цикл (в некотором смысле, «эффективность», хотя и отличная от энергоэффективности и связанная с ней) также влияют на скорость вычислений. Разным процессорам потребуется разное время для выполнения одной и той же инструкции. Bob 11 лет назад 0
** Связано: ** [Более высокое число ядер или более высокая тактовая частота более полезны для производительности компьютера?] (Http://superuser.com/q/324487/6887) Breakthrough 11 лет назад 0

7 ответов на вопрос

36
Mokubai

Основная причина, по которой четырехъядерный процессор 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.

Хороший пост .. Не могу проголосовать больше, чем 1+ :-( Gopalakrishnan Subramani 13 лет назад 0
Но закон Амдала - это проблема программирования, вызванная блокировкой, а не проблема аппаратного обеспечения. Если вам не нужно синхронизироваться, каждое ядро ​​может выполнять инструкции так быстро, как только может. Можно разработать параллельную программу (простую), которая будет идеально разделена между ядрами. Не будут ли производители оборудования рекламировать эту необработанную стоимость? Justin Meiners 6 лет назад 0
Чтобы уточнить, я понимаю, почему это отвечает на вопрос, почему 4 ядра с частотой 3 ГГц не так быстры, на практике, как 12 ГГц, но не являются частью того, как тактовая частота рассчитывается для многоядерных процессоров. Justin Meiners 6 лет назад 0
Тактовая частота @JustinMeiners на ядро ​​- это просто тактовая частота, на которой работает ядро. Не существует магического расчета, приравнивающего одно ядро ​​к многоядерному. Несколько ядер просто означает, что вы можете запускать больше отдельных задач одновременно. Закон Амдалса применяется из-за программного обеспечения, поэтому необходимая синхронизация и блокировка предотвратят «идеальную» задачу аппаратного обеспечения так же, как и программного обеспечения. Общие кэши и память вызывают конфликты и блокировки. Mokubai 6 лет назад 0
@Mokubai Просто чтобы уточнить, когда производитель перечисляет тактовую частоту, каждое ядро ​​работает на скорости, верно? Justin Meiners 6 лет назад 0
@JustinMeiners да. Игнорирование таких функций, как турбонаддув и энергосбережение, заявленная производителем скорость является номинальной тактовой частотой ядра. Mokubai 6 лет назад 0
@Mokubai да извини, это была плохая формулировка. Я понимаю, что аппаратное обеспечение иногда может нуждаться в синхронизации, и оно подчиняется одному и тому же закону, я просто указывал, что закон Амдала не является пределом того, сколько инструкций может обрабатывать ядро. Степень, в которой закон Амдаля влияет на вас, зависит от типа задачи, которую вы пытаетесь выполнить, и от того, сколько других ядер должны ждать друг друга, поэтому изготовителю оборудования будет непонятно попытаться объяснить это помимо собственной синхронизации. , Justin Meiners 6 лет назад 0
@Mokubai спасибо. Justin Meiners 6 лет назад 0
6
AndrejaKo

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

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

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

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

Полезный ответ для менее технически мыслящих. Также мне нравятся аналогии :) aff 10 лет назад 0
3
blastawaythewall

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

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

а = Ь + 1;

с = D + 1;

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

а = Ь + 1;

с = а + 1;

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

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

Обратите внимание, что эти вычисления будут выполняться быстрее только в том случае, если они многопоточные, и даже в этом случае возникают небольшие накладные расходы. Но да, хотя можно сделать одноядерный процессор, способный выполнять столько же вычислений, но это просто невозможно из-за высокой температуры и тому подобного. Phoshi 14 лет назад 0
Этот ответ вводит в заблуждение по двум причинам. Во-первых, современные ядра делают больше, чем одну вещь одновременно. Во-вторых, ответ предполагает, что скорость ядра такая же, как скорость выполнения работы. Одноядерный процессор 12 ГГц не будет работать так же быстро, как четырехъядерный процессор 3 ГГц, если одноядерному процессору требуется значительно больше тактов для выполнения той же работы. (Что было бы, так как процессору 12 ГГц потребовались бы гораздо более длинные конвейеры.) David Schwartz 11 лет назад 0
2
Faken

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

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

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

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

Вы правы и неправы. Четыре 3-ГГц процессора, скорее всего, будут быстрее, чем один 12-ГГц процессор в приложениях «реального мира». В наши дни все больше и больше программ используют многопоточность, указанная вами ссылка относится к теоретическому однопоточному приложению. Один процессор на 12 ГГц имеет только один поток, поэтому преимущества многопоточности, которые может предложить программа «реального мира», будут потеряны. Индустрия не собирается выпускать более медленные ядра вместо меньших более быстрых ядер только потому, что преимущества многоядерной технологии намного перевешивают преимущества быстрой одноядерной технологии. ubiquibacon 14 лет назад 0
@typoknig: Это не совсем так. Одноядерный процессор 6 ГГц будет запускать многопоточное приложение примерно с той же скоростью, что и двухъядерный процессор 3 ГГц, предполагая, что приложение использует все преимущества каждого потока (чего, скорее всего, не будет, если оно «реально»). Мир приложений », но это отдельный аргумент). Мы не видим процессоры 12 ГГц, потому что это слишком сложно с современной технологией, а не потому, что она медленнее. Sasha Chedygov 14 лет назад 3
@typoknig: Я запрограммировал несколько многопоточных программ и, поверьте мне, если бы у меня был один процессор 12 ГГц, я использовал бы его вместо этого. Однопоточное программирование в 10 раз проще и намного эффективнее многопоточного программирования. Настоящая причина, по которой индустрия продвигает многоядерные процессоры, заключается не в том, что они работают быстрее, а в том, что мы не можем заставить отдельные процессоры работать быстрее! Это было изложено с технологией Intel Netburst еще в p4 дней. Они оценили процессоры 10 ГГц, по крайней мере, до тех пор, пока квантовая физика не ударила их по лицу и не сказала "нет, нуб!" Faken 14 лет назад 4
@musicfreak, как насчет запуска 6 приложений одновременно или дюжины? Люди многозадачны, это реальный мир, и одноядерный процессор этого не поддерживает. Я согласен с тем, что в одном приложении скорости будут близки, на самом деле близки к тому, чтобы спорить, но когда дело доходит до многопоточности, это то место, где сияют многоядерные процессоры. Разрабатываются технологии для более быстрых процессоров с такими материалами, как графин. Многие встроенные процессоры (например, летные процессоры) уже работают на частоте 10 ГГц с современной технологией (например, f-22). Многоядерный процессор дешевле, и, похоже, он лучше подходит нашему многозадачному образу жизни. ubiquibacon 14 лет назад 0
@typokning: F22 использует массив процессоров PowerPC для получения 10 миллиардов команд в секунду, что очень отличается от 10 ГГц! Это все равно что сказать, что ваш Radion HD5970 работает на частоте 4600 ГГц. Он способен на 4.6 TFLOPS, но только потому, что он высокопараллелен. Faken 14 лет назад 2
@typoknig: Почему одноядерный процессор "не поддерживает это"? Вы никогда не запускали дюжину приложений на одноядерном процессоре? Я не думаю, что вы знаете, как работает параллелизм. Одноядерные процессоры эмулируют параллелизм, как бы «по очереди» с каждым приложением. Теоретически, этот метод должен быть точно таким же быстрым, как истинный параллелизм, с пропорционально более медленным процессором. (На самом деле, многоядерный процессор будет немного медленнее из-за межпроцессорной связи.) Как именно двухъядерный процессор 3GHz будет работать лучше, чем одноядерный 6GHz? Sasha Chedygov 14 лет назад 0
@musicfreak: Хм, ну, это немного сложнее, чем это. При работе с потоками muti в одноядерной системе присущи недостатки. В конечном итоге мы сталкиваемся с неэффективностью переключения контекста, то есть когда одно ядро ​​переключается между разными программами (хотя штраф за переход между потоками одной и той же программы в значительной степени нулевой). В любом случае, один более быстрый процессор все равно победит, если мы не будем иметь дело с большим количеством медленных операций ввода-вывода. Вот где будет полезна система ядра muti. Faken 14 лет назад 0
@Faken прочитайте раздел о CIP по этой ссылке: http://www.globalsecurity.org/military/systems/aircraft/f-22-avionics.htm В последнем абзаце четко указано, что каждый CIP (по два в каждом f-22 ) работают со скоростью 10,5 млрд. инструкций в секунду. Сказать, что эта скорость получается только потому, что система очень параллельна, не справедливо. Это все равно, что сказать, что стандартный процессор для ПК достигает своей скорости, потому что его транзисторы работают параллельно. Независимо от того, как @musicfreak и я оба сказали, разница в скорости между одноядерным и многоядерным процессором минимальна, мы просто не согласны с тем, что быстрее. ubiquibacon 14 лет назад 0
@Faken: я знаю, что я слишком упростил это, но для целей этого обсуждения это достаточно точно. Sasha Chedygov 14 лет назад 0
@typoknig: Вы явно не понимаете разницу между частотой процессора и IPS (количество команд в секунду), они не одно и то же. Пожалуйста, прочитайте: http://en.wikipedia.org/wiki/Instructions_per_second Faken 14 лет назад 1
Я думал, что IPS и GHZ были прямой корреляцией друг с другом, прочитав эту ссылку, я вижу, что ошибся насчет f22. Самый быстрый серийный чип, который я смог найти, - это IBM Power6 P595, выпущенный с частотой 5,0 ГГц. Даже на такой скорости, я не думаю, что вы, ребята, отдает должное многоядерным чипам. Тем не менее, наше обсуждение (с обеих сторон) основано на конкретных операционных средах (одноядерный чип с одним потоком, многоядерный чип с несколькими потоками и т. Д.). С учетом сказанного я думаю, что каждый может добиться большего успеха в определенных ситуациях, и даже тогда разница будет минимальной. ubiquibacon 14 лет назад 0
«* В реальных приложениях четыре процессора с частотой 3 ГГц не будут работать так же быстро, как один процессор с частотой 12 ГГц из-за неэффективности. *» Напротив, процессор с частотой 12 ГГц будет ужасно неэффективным, требуя нелепо длинных конвейеров, что приведет к ужасной производительности. Вот почему Intel значительно «понизила» тактовые частоты, когда они отказались от архитектуры NetBurst и приняли архитектуру Core - они поняли, что такие высокие тактовые частоты действительно «снижают» производительность. Ничего не получается бесплатно - высокие тактовые частоты сопряжены с высокими техническими затратами, которые могут вам навредить David Schwartz 11 лет назад 0
2
Harmeet Singh

It appears that we can't say that 4 cores @ 3 GHz can be said as 12 GHz.

Various Constraints like shared memory, cache contention and other resources too are common to all the cores so running a piece of code parallel on these cores will not be as efficient as running it on 12 Ghz processors (although it is difficult to build such a processor ).

Also i read somewhere that if we double the transistors embedded on the chip (CMP), the speed up we are going to get is only 40% . This provides a significant hint to this topic also.

1
Jimmy

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

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

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

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

Тактовые частоты не указаны для каждого ядра. Скорости никогда не "за" ничего. Если машина движется со скоростью 50 миль в час, скорость составляет 50 миль в час. Если две машины едут со скоростью 50 миль в час, скорость по-прежнему составляет 50 миль в час. Идея «скорость на машину» бессмысленна и бессвязна. David Schwartz 11 лет назад 0
1
David Schwartz

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

Похожие вопросы