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