основная причина, почему четырехъядерный процессор 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 это очень хорошо при использовании всех доступных процессоров, но для этого требуется основной процесс, чтобы другие потоки заполнялись данными и собирали данные, с которыми они выполняются.
- каждое ядро фактически выполняет x вычислений в секунду, таким образом, общее количество вычислений равно x(ядер).
каждое ядро способно выполнять x вычислений в секунду, предполагая, что рабочая нагрузка подходит параллельно, в линейной программе все, что у вас есть, это 1 сердечник.
- тактовая частота, а количество циклов процессора проходит в течение секунды, так как все ядра работают с одинаковой скоростью, скорость каждого тактового цикла остается неизменным независимо от того, сколько ядер существует. Другими словами, Hz = (core1Hz+core2Hz+...)/начинка.
Я думаю, что ошибочно думать, что 4 x 3GHz = 12GHz, предоставленный математике, но вы сравниваете яблоки с апельсинами и суммы просто не правы, ГГц не могут быть просто сложены вместе для каждой ситуации. Я бы изменил его на 4 x 3GHz = 4 x 3GHz.