Параллельная обработка данных в многоядерных процессорах происходит следующим образом:
- Планировщик операционной системы распределяет активные задачи (обычно это потоки) по доступному ядру. stackoverflow.com Когда активных задач больше, чем доступных ядер, операционная система использует упреждение и выполняет задачи одновременно на каждом ядре. stackoverflow.com
- Физические ядра часто разделены на несколько аппаратных потоков (технология SMT, или гиперпоточность). stackoverflow.com Каждый из них может выполнять разные задачи. stackoverflow.com
- Данные разбиваются на блоки, которые единообразным образом обрабатываются на разных узлах. habr.com Например, как в архиваторе, использующем для упаковки несколько ядер процессора. habr.com
- Параллельные процессы, выполняемые на разных ядрах, должны синхронизироваться в определённые моменты времени. intuit.ru Например, если приложение на одном из ядер должно использовать промежуточные данные, которые получаются приложением на другом ядре. intuit.ru
Для обмена информацией между ядрами используется усовершенствованный программируемый контроллер прерываний (APIC). xakep.ru Он выполняет обмен, используя механизм межпроцессорного прерывания, который, в свою очередь, используется операционной системой для планирования и выполнения потоков. xakep.ru