Как процессор решает, какое ядро ​​должно обрабатывать аппаратное прерывание? - PullRequest
1 голос
/ 23 сентября 2019

Вопрос Какой процессор будет выполнять аппаратное прерывание в многоядерной системе , и его ответы, похоже, сосредоточены на этом с точки зрения операционной системы, но как ЦП решает, какое ядро ​​доставитьаппаратное прерывание до того, как операционная система включится?

Ответы [ 2 ]

5 голосов
/ 23 сентября 2019

как процессор решает, к какому ядру доставить аппаратное прерывание до того, как операционная система будет задействована?

до того, как операционная система будет задействована;работает только один ЦП (остальные ЦП застряли в состоянии «ждать запуска IPI» до тех пор, пока ОС их не запустит), а контроллер прерываний (микросхемы PIC или IIC APIC) настроен таким образом, что IRQ отправляются единственномуCPU, который работает.

Примечание: для BIOS;IO APIC также отключается до тех пор, пока ОС не разрешит / не настроит его, а микропрограмма использует старые микросхемы PIC (которые буквально не могут быть использованы для определения того, в какой ЦП отправлять IRQ).Для UEFI прошивка в основном не использует IRQ (драйверы устройств опрашивают устройство).

После включения ОС (не раньше);ОС конфигурирует IIC APIC / s и, возможно, MSI (сообщение сигнализирует прерывания) и, возможно, IOMMU, чтобы сообщить аппаратному обеспечению, на какой ЦП отправлять каждый IRQ.

Существует один особый случай («отправка на ЦП с самым низким приоритетом»).«особенность», где набор микросхем решает, в какой ЦП отправлять IRQ (на основе настройки программного обеспечения «приоритет задачи» в локальном APIC или CR8).К сожалению, эта функция может не поддерживаться чипсетом и может не использоваться ОС, даже если она поддерживается.

3 голосов
/ 23 сентября 2019

Это делает I / O-APIC.APIC означает Усовершенствованный программируемый контроллер прерываний .Цитата из OSDev WiKi :

Кроме того, существует APIC ввода / вывода (например, intel 82093AA), которая является частью чипсета и обеспечивает многопроцессорное управление прерываниями, включая как статическое, так и динамическое симметричное распределение прерываний по всем процессорам.В системах с несколькими подсистемами ввода / вывода каждая подсистема может иметь свой собственный набор прерываний.

Устаревшую ссылку на спецификацию можно найти здесь .Он описывает часть своей функции как

Обеспечивает многопроцессорное управление прерываниями
- прерывание динамического распределения прерываний-маршрутизация на процессор с самым низким приоритетом
- Программно программируемое управление входами прерываний
- Выкл.Загружает связанный с прерыванием трафик с шины памяти

...