OSDev

для всех
Текущее время: 29 апр 2024, 14:17

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: PIC && IO APIC && MP system
СообщениеДобавлено: 30 мар 2012, 01:08 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Может кто-нибудь может пролить свет на маршрутизацию прерываний в МР-системах с PIC-ом и APIC-ом. По моим наблюдениям, по дефолту при загрузке в такой системе работает PIC и не работает IO / APIC (а судя по MP Table он в системе есть). При этом PIC передает прерывания только на нулевой процессор (даже если загрузочным является другой процессор). Соответственно, куча бенефитов системой не используется, таких как симметричная обработка прерываний.
Вопрос 1: Можно ли и если можно, то как выпилить PIC из системы, то есть отключить?
Вопрос 2: Как включить IO APIC и заставить систему использовать его для маршрутизации прерываний?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PIC && IO APIC && MP system
СообщениеДобавлено: 30 мар 2012, 05:18 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Я всем советую смотреть книжку Аблязов Р.З. - Программирование на ассемблере на платформе x86-64 - 2011 уже раз пятый.
Там уже настроено включение APIC и налажены прерывания от таймера и клавы. Плюс там переход в PM все объяснения и работа с многопроцессорностью и т.д. и т.п.

Я начинал с похожего примера, только с PIC и на загрузчике, потом добавил включение VESA, ps/2 мышки ... .
Пример из книжки собираюсь перевести на загрузчик и перенести всю мою систему туда. Добавится ещё 8 аппаратных прерывания.
Как работать с многопроцесорностью вопрос вполне интересный.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PIC && IO APIC && MP system
СообщениеДобавлено: 30 мар 2012, 18:17 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
ZarathustrA писал(а):
Вопрос 1: Можно ли и если можно, то как выпилить PIC из системы, то есть отключить?

Я знаю только один способ: замаскировать все прерывания от PICа, отправив FF в порты 21h и A1h
ZarathustrA писал(а):
Вопрос 2: Как включить IO APIC и заставить систему использовать его для маршрутизации прерываний?

Недавно писал это.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PIC && IO APIC && MP system
СообщениеДобавлено: 31 мар 2012, 17:23 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Всем спасибо. Исчерпывающе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PIC && IO APIC && MP system
СообщениеДобавлено: 15 апр 2012, 23:52 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 209
Читаем multiprocessor specification. Если не забуду, выложу pdf'ку, хотя она должна гуглиться легко.
Там много чего по этому поводу написано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PIC && IO APIC && MP system
СообщениеДобавлено: 16 апр 2012, 12:31 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Nable писал(а):
Читаем multiprocessor specification. Если не забуду, выложу pdf'ку, хотя она должна гуглиться легко.Там много чего по этому поводу написано.

Зачитана до дыр редакция 1997 года, MP - таблица описана хорошо (где? когда? формат). Все остальное мутно. Если вам будет не трудно дайте ссылку на страницку/абзац/строку, где этот вопрос освещается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PIC && IO APIC && MP system
СообщениеДобавлено: 16 апр 2012, 21:35 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 209
страница 5-5 (секция 5.2), картинка 5-2, там чудесная схемка, на ней стоит обратить внимание на регистр IMCR, про него пишут на странице 3-8 (секция 3.6.2). Среди прочего, правда, там говорят что IMCR может и отсутствовать (о его наличии говорит соотв. бит в mptable). Так что в любом случае надо оба PIC'а замаскировать чтобы выключить их.

Настоятельно рекомендую посмотреть на http://people.freebsd.org/~fsmp/SMP/mptable/mptable.c и http://sources.freebsd.org/RELENG_8/src ... /pirtool.c , после небольших правок (а именно, путей к инклудам, выкидывания макросов для системы контроля версий и определения некоторых используемых типов) они отлично компилятся под линухом и выдают массу интересной информации, среди прочего, там код намного понятнее, чем в линухе, вообще ИМХО всякие системные вещи если изучать по исходникам, то по бсдшным.
Правда, mptable нынче obsolete и надо бы юзать ACPI, но это уже другая история.

А вот
Цитата:
При этом PIC передает прерывания только на нулевой процессор (даже если загрузочным является другой процессор)
это уже очень и очень странно, PIC должен быть подключён к BSP, иначе всякие legacy системы не смогут работать. Так что интересно откуда такие наблюдения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PIC && IO APIC && MP system
СообщениеДобавлено: 17 апр 2012, 01:14 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Спасибо. Реально мутная спецификация. Страницу 3-8 читал. Регистр помню, но я на тот момент не совсем понял на кой барабан он нужен. картинку 5-2, особо не рассматривал, ибо в схемотехнике я дуб (уж извините, но есть такой грех за душой). Но тут начинаются непонимания. Согласно тексту и рисунку на 3-8 манипуляции с регистром IMCR перенаправлять сигналы с PIC черех APIC. (O_o, ?????) А на рисунке 5-2 указано, что APIC подключен параллельно с PIC-ом, а не последовательно. Ладно...

В любом случае many thanks, господа. Насколько я понял, самый оптимальный способ - маскировать наглухо PIC и демаскировать APIC, так как если я правильно понял, по дефолту APIC замаскирован, а PIC размаскирован, что выглядит логично с точки зрения обратной совместимости.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PIC && IO APIC && MP system
СообщениеДобавлено: 17 апр 2012, 01:16 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
И кстати, по какому принципу идет общение с портами 22h && 23h. Они от какого устройства, есть какие-нибудь спецификации на них, описание de facto стандартов и т.д.?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PIC && IO APIC && MP system
СообщениеДобавлено: 17 апр 2012, 03:12 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 209
> что APIC подключен параллельно с PIC-ом, а не последовательно
да, параллельно. Фишка в том что, грубо говоря, у процессора один вход (нынче их два, но PIC и APIC делят один из них между собой) для прерываний. Его дёрнуть может любое подключённое к нему устройство. Суть IMCR (правда, лишь с точки зрения логики работы схемы, реальная-то схема может быть совсем другой, но обязательно эквивалентной) в том что при опр. его значении как PIC бы не дёргал свой выход, на входе процессора ничего не изменится.

На тему размаскирования на всякий случай обращу внимание на то что есть включение/выключение в APIC spurios intr. register ( IASDM vol.3A, chapter 10.9, figure 10-23, см. бит 8 ), есть размаскирование отдельных пинов IOAPIC'а, есть глобальное включение/выключение LocalAPIC'а (через биты в MSR'е, см. chapter 10.4.3).

22h && 23h - как и всякие порты ввода-вывода они "где-то там", в глубинах чипсета. Т.е. процессор обращается к северному мосту, тот или обрабатывает внутри себя, или обращается к южному, а у того внутри большая часть legacy устройств эмулируется. Спеки искать бессмысленно (разве что в Ralf Brown interrupt list заглянуть), оно от чипсета к чипсету разное, да и зачем. Главное, что есть стандарт на конкретно упомянутые нужные в данный момент функции, а чего там ещё тот или иной производитель напихал когда-то - толку с того.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB