Закон Амдала — это простая приближенная модель, которая позволяет анализировать эффективность распределения работы между несколькими вычислительными единицами. В модели Амдала вычислительные единицы имеют абстрактную природу, так что их можно считать программными потоками, хотя они с тем же успехом могут быть процессами или любыми другими сущностями, которые способны выполнять работу.

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

Таким образом, если у нас есть N процессоров (или потоков, выполняющих работу), можно было бы наивно ожидать, что затраченное время составит T1/N (где T1 — время выполнения задачи на одном процессоре). В такой модели всю работу можно было бы завершить сколь угодно быстро, если просто добавлять вычислительные единицы, то есть увеличивать N.

Однако разбиение работы не обходится бесплатно! Деление задачи на части и их повторное объединение сопряжено с затратами (если повезет, небольшими). Предположим, эти затраты (которые иногда называются последовательной частью вычислений) составляют несколько процентов, и их можно представить числом s (0 < s < 1). Например, типичное значение s может составлять 0,05 (или 5 %, если вы предпочитаете такой формат). Это означает, что суммарное время на выполнение задачи всегда будет не менее s*T1, сколько бы вычислительных единиц вы ни добавили.

Здесь предполагается, что s не зависит от N, но на практике деление работы, которое выражается с помощью s, может усложняться и требовать больше времени с ростом N. Очень трудно представить себе архитектуру системы, в которой s уменьшалось бы с ростом N. Таким образом, простое допущение, что s постоянно, обычно интерпретируется как оценка лучшего случая.

В итоге закон Амдала проще всего описать так: если s лежит в диапазоне от 0 до 1, то максимальный прирост скорости, которого можно достичь, составляет 1/s раз. Результат немного угнетает: получается, что даже если накладные затраты не превышают 2%, то хоть при тысячах процессоров, которые работают на полной мощности, скорость вырастет не более чем в 50 раз.

У закона Амдала также есть чуть более сложная формулировка, которую можно представить так: $$ T(N) = s + (1/N) * (T1 — s) $$