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