До недавнего времени думал что знаю аппаратную струтуру компа достаточно хорошо, вплоть до разработки собственного отладчика режима ядра, работающего под всеми процессорами не использующими APIC, а вот сейчас столкнулся с необходимостью переноса его под двухядерную архитектуру и возникли следующие вопросы. 1) Как на многоядерных организована обработка прерываний (как идет разделение IDT таблиц, возможны ли разные значения CR3 для них). PS: объяснять с нуля не нужно, лучше только основные моменты. 2) Использовал расширенные средства отладки при помощи MSR регистров, но уже с P IV их расположение поменяли, а при обращении к старым ест-но искл. 6. Где взять инфу на новые Core. 3) Как организована инструкция cli, запрещает она только на текущем или на всех прерывания, и паралельно если происходит аппаратное прерывание и мы его не завершаем (раньше out "20h", ..., теперь mov "базовый адрес APIC +...",...) то возможны прерывания на остальных ядрах, ведь APIC один для всех.
Great При том что если IDT будет одинаковым на всех ядрах, а CR3 разным - не факт что одно и то же прерывание будет обрабатываться по одному и томуже адресу на разных процессорах.
PROFi Инфа на новые Core есть в новых мануалах интел (Intel 64 and IA-32 Architectures Software Developer`s Manual) Думаю некоторую информацию вы найдете в Volume 3A - System Programming Guide Part 1. Раздел седьмой (Muliple Processor Management)
TermoSINteZ Мануалы почитал, но всеже вопрос поставленный вначале остается открытым. Как ведут себя другие ядра и как осуществляется выбор процессора для прерывания если APIC каждого разрешает все номера прерываний для всех ядер?