Сколько ядер необходимо современному процессору?
Сколько ядер должно быть в современном CPU — два, четыре, восемь или даже шестнадцать? Производители постоянно увеличивают количество процессорных ядер, но насколько это хорошо для конечных пользователей?
Сколько ядер должно быть в современном CPU — два, четыре, восемь или даже шестнадцать? Производители постоянно увеличивают количество процессорных ядер, но насколько это хорошо для конечных пользователей?
Миф
Тенденция активного наращивания числа ядер в CPU, несомненно, имеет положительный эффект: компьютер работает тем быстрее, чем больше вычислительных возможностей в нем скрыто.
Правда
Ядра центрального процессора позволяют ПК функционировать быстрее лишь в тех случаях, когда на нем запущено сразу несколько программ. Если же активно всего одно ресурсоемкое приложение, то оно должно быть оптимизировано для работы с несколькими ядрами. В эпоху одноядерных CPU все программы исполнялись последовательно: каждый шаг следовал только после завершения предыдущего. Скорость работы увеличивалась лишь с ростом тактовой частоты процессора. Приложения, написанные с расчетом на последовательное исполнение инструкций, в редких случаях могут автоматически переключаться на режим параллельных вычислений, однако обычно программист должен внести в код существенные изменения, чтобы ускорить работу своего детища в многоядерной среде. При этом он сталкивается с тремя вариантами.
В первом случае имеются вычисления, которые легко распараллелить с минимальными трудозатратами, в третьем — совершенно не поддающиеся распараллеливанию (изменять такую программу нет необходимости).
|
|
Во второй же ситуации программисту требуется отыскать такие участки кода, которые можно распараллелить. Для этого он должен знать, какие вычисления строятся в строго определенной последовательности, а какие выполняются независимо от результатов предыдущих. Необходимо также установить четкие правила на тот случай, если две части программы обратятся к одному и тому же ресурсу либо два или больше процессов одного приложения блокируют друг друга, из-за чего оно не сможет завершить свою работу. Подобный анализ программного кода требует огромных затрат времени и сил, поэтому разработчики берутся за него неохотно. Так что вы можете купить дорогой восьмиядерный CPU, но использоваться будет лишь незначительная часть его потенциала.
Ускорение вычислений На первый взгляд эти вычисления, основанные на получении частичных результатов, нельзя выполнять параллельно. Однако более глубокий анализ позволяет увидеть, что и эта программа выигрывает от большого количества процессорных ядер.