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