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

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

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

В то время, когда я знал, что это было пойлом для свиней по причинам, я думаю, очевидны для большинства людей, но я просто видел комментарий к этому веб-сайту к эффекту "6 ядер x 0.2 ГГц = 1.2 ГГц", и это получило меня думающий снова о том, существует ли реальный ответ на это.

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

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

5 ответов

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

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

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 отдельных программы как первое и выполненный одновременно, каждый, который в состоянии сделать эффективное использование полной мощности одного из ядер без любой проблемы синхронизации, это - то, где Закон Amdahl входит в него.

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

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

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

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

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

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

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

35
ответ дан 07.12.2019, 09:49

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

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

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

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

6
ответ дан 07.12.2019, 09:49

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

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

a=b+1;

c=d+1;

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

a=b+1;

c=a+1;

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

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

3
ответ дан 07.12.2019, 09:49

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

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

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

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

2
ответ дан 07.12.2019, 09:49

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

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

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

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

1
ответ дан 07.12.2019, 09:49

Теги

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