Межпроцессорное взаимодействие (общение между процессорами)

Тема в разделе "WASM.OS.DEVEL", создана пользователем rpy3uH, 13 янв 2010.

  1. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Интересует тема межпроцессорного взаимодействия в защищённом режиме. Теорию вроде знаю, но просто с нуля что-то не получается у меня прогить, нужен исходник-пример, который переходит в защищённый режим и заставляет работать два (или более) процессора. Может статьи есть какие-нибудь? (не важно на каком языке) В гугле искал, но он какую-то фигню выдаёт (про межпроцессорное взаимодействие в windows и unix)
     
  2. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Local APIC Specification ?
     
  3. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Сорцы wrk помогут.сделано через анус, реализация спинлоков просто ужас, но понимание даст
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    rpy3uH
    Ещё и интеловские мануалы почитать, особенно третий том, где в т.ч. и про многопроцессорность говорится...
     
  5. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Маны для общего понимания неплохи. Но нюансы... нет слов. 7 глава манов кое что проясняет, только в общих чертах. Как расшариваются между ядрами/процами GDT, IDT,PDT, как работает кэш (о чем писал кк), как отрабатывает SMI, можно ли разные ядра гонять в разных режимах (одно в реалмоде, другое в ПМ) - обо всем этом практически ни слова
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Про кэш написано в другом месте, ну а режимы, SMI и прочее у каждого логического процессора работает независимо от остальных. Так что ничто не мешает одновременно работать на одном ядре в реальном режиме, на другом -- в защищённом...
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    hal'a в них нет.
    почти всё есть :)
    В частности про GDT/IDT/PDT точно написано.
     
  8. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Да, про кэш написано. Только понимания это не добавляет, дофига нюансов. По поводу сми
    и якобы независимости одного ядра от другого. О разных процах говорить не буду, тут итак все ясно. Когда речь идет о нескольких ядрах на одном кристалле, в этом случае многие вещи расшариваются между процами, многие MSR в частности
     
  9. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    правда что ли? а в splocks.asm не заглядывал?
     
  10. SII

    SII Воин против дзена

    Публикаций:
    0
    Medstrax
    Это -- да, но MSR никоим образом не затрагивают возможности разных логических процессоров работать в разных режимах в одно и то же время. Более того, именно так они и работают. Тот же SMI обрабатывается не всеми логическими процессорами одновременно, а лишь одним -- тем, кому это прерывание пришло; все остальные продолжают работать в прежнем режиме.

    Кстати говоря, хотя для краткости и говорим "ядро", но точней (и правильней) говорить о логических процессорах, поскольку одно ядро может выполнять несколько потоков (гипертрединг вернулся в Core i7).
     
  11. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Удивил, сми отрабатывается всеми ядрами независимо друг от друга. Буду рад цитате из мана, где твое утверждение справедливо
     
  12. SII

    SII Воин против дзена

    Публикаций:
    0
    Medstrax
    А, простите, как иначе можно выполнять последовательность команд, т.е. программу? Что, с приходом SMI все процессоры одновременно кидаются выполнять одно и то же? Абсолютно очевидно, что это попросту бессмысленно. Поэтому у каждого логического процессора имеется свой текущий режим работы, и каждый логический процессор переключает этот режим независимо от других.
     
  13. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Не прощу, нефиг вводить в заблужение. сми обслуживается независимо каждым ядром, читаем маны, думаем, делаем выводы
     
  14. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    читаем 25.13 мана
     
  15. SII

    SII Воин против дзена

    Публикаций:
    0
    Medstrax
    Научитесь для начала читать то, что пишут другие. Цитирую самого себя:

    Теперь смотрим, что пишет Intel в упомянутом разделе 25.13 (не относящиеся прямо к вопросу куски опущены):

    Таким образом, любой процессор может выполнять реагировать на SMI и выполнять код SMM, причём несколько ("два или более", если дословно) могут находиться в режиме SMM одновременно. Где здесь противоречие тому, что написал я? Где здесь говорится, что одно и то же SMI обрабатывается сразу несколькими процессорами одновременно? А ведь я утверждал и продолжаю утверждать: пришедшее SMI обрабатывается одним и только одним логическим процессором, остальные продолжают выполнять ту работу, которую и выполняли -- ибо это SMI пришло не им. "Разруливанием" же SMI, как и прочих прерываний, в многопроцессорной системе занимается APIC.
     
  16. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Не надо демагогии, сми доставляется всем проца одновременно, дальше рулит логика девелопера. Будет проц выолнять код сми-хэндлера или не, определяет прогер. Это я и имел в виду, когда говорил о нюансах межпроцессорного взаимодействия. Сми это еще цветочки,
    вот когда я ковырял VT - тут писец
     
  17. SII

    SII Воин против дзена

    Публикаций:
    0
    Medstrax
    Можете посмотреть на Figure 9-4. Local APIC Structure. Там ясно видно, что от Local APIC к процессорному ядру идут сигналы INIT, NMI и SMI (в правом нижнем углу). Ну а Local APIC имеется у каждого логического процессора; следовательно, у каждого логического процессора есть свой сигнал SMI. Получив его, данный логический процессор переходит в SMM и начинает выполнять код обработчика. На остальные логические процессоры этот SMI никаким образом не влияет, что я и утверждал.
     
  18. SII

    SII Воин против дзена

    Публикаций:
    0
    Medstrax
    Чушь написали. Читайте внимательно интеловское руководство:

    Если у Вас проблемы с английским, переведу:

    Два или более процессоров могут работать в SMM в одно и то же время. Могут (can), а не должны (must). Поэтому в любой момент времени одни процессоры могут находиться в SMM, а другие -- в любом другом режиме.
     
  19. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Повторю - не надо демагогии, могут - значит при приходе сми все ядра переключаются в смм, слово "могут" здесь относится не к потенциальным возможностям проца, а к потенции девелопера
    Честно говоря ты меня утомил, одно дело говорить с людьми которые пытаются понять, другое - когда люди не видят и не слышат ничего кроме собственного самолюбия
     
  20. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Слушай дружище, практика критерий истины не так ли? Проверь как отрабатывает сми потом поделись, не получается самому - обрпатись к _bc_. Я проверил, сейчас, своим глазам я верю больше нежели досужим рассуждениям