Как загружаются многоядерные процессоры?
Говорить на очень низком уровне, как инициализируются ядра?
2 ответа
Вы можете проверить все кровавые подробности в спецификации Intel. Кровавые подробности в главе 8.1.
Вот выдержка:
После включения питания или подтверждения контакта RESET# каждый процессор на системной шине выполняет аппаратную инициализацию процессора (известную как аппаратный сброс) и дополнительную встроенную самопроверку (BIST). [snip] На этом этапе предпринимаемые действия зависят от семейства процессоров:
• Процессоры семейства P6 - все процессоры на системной шине (включая один процессор в однопроцессорной системе) выполняют протокол инициализации многопроцессорной системы (MP) по шине APIC. Процессор, выбранный с помощью этого протокола в качестве процессора начальной загрузки (BSP), затем немедленно начинает выполнение кода инициализации программного обеспечения в текущем сегменте кода, начиная со смещения в регистре EIP.
Существует несколько способов загрузки многоядерного сока в зависимости от архитектуры, системы - AMP или SMP и т. Д. Одним из простых способов для двухъядерной системы SMP является то, что CPU0 запускается с вектора сброса (например, 0x00000000, который указывает на флэш-память, где хранится программа монитора загрузки), В течение этого времени другие ядра находятся в состоянии WFI (ожидание прерывания) или в состоянии удержания загрузки. CPU0 загружается и устанавливает почву для загрузки CPU1.
для получения дополнительной информации http://www.linux-arm.org/LinuxBootLoader/SMPBoot
freescale.com/files/32bit/doc/app_note/AN3542.pdf