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

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

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

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

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

  1. каждое ядро на самом деле делает x вычислений в секунду, таким образом, общее количество вычислений x (ядра).
  2. тактовая частота, а количество циклов процессора проходит в течение секунды, так как все ядра работают с одинаковой скоростью, скорость каждого тактового цикла остается неизменным независимо от того, сколько ядер существует. Другими словами, Hz = (core1Hz+core2Hz+...)/начинка.
25
задан Tom Wijsman
26.11.2022 17:39 Количество просмотров материала 2771
Распечатать страницу

7 ответов

основная причина, почему четырехъядерный процессор 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 ГГц" является мусором в любой ситуации, за исключением случаев, когда задачи совершенно параллельны и независимы. Есть большое количество задач, которые очень параллельны, но они все еще требуют некоторой формы синхронизации. ручной тормоз видео trancoder это очень хорошо при использовании всех доступных процессоров, но для этого требуется основной процесс, чтобы другие потоки заполнялись данными и собирали данные, с которыми они выполняются.

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

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

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

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

36
отвечен Mokubai 2022-11-28 01:27

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

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

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

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

6
отвечен AndrejaKo 2022-11-28 03:44

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

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

a=b+1;

c=d+1;

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

a=b+1;

С=а+1;

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

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

3
отвечен blastawaythewall 2022-11-28 06:01

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

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

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

взгляните на эту статью:http://en.wikipedia.org/wiki/Amdahl%27s_law

2
отвечен Faken 2022-11-28 08:18

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

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

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

2
отвечен Harmeet Singh 2022-11-28 10:35

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

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

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

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

1
отвечен Jimmy 2022-11-28 12:52

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

1
отвечен David Schwartz 2022-11-28 15:09

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх